Bug 220013

Summary: editors/nvi-m17n [patch] fix CJK display problem caused by libncurses
Product: Ports & Packages Reporter: Yasuhito FUTATSUKI <freebsd-bug-report-yf>
Component: Individual Port(s)Assignee: Steve Wills <swills>
Status: Closed FIXED    
Severity: Affects Some People CC: freebsd-bug-report-yf, tomioka.satoshi.ml
Priority: --- Keywords: patch
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
patch to fix to link libncursesw
none
patch to avoid linking libncurses and use libncursesw instead
none
fileencoding misdetection when the first line does not contain multi-byte letters
none
patch to correct detection of fileencoding and to avoid disappeared some symbols none

Description Yasuhito FUTATSUKI 2017-06-15 13:28:18 UTC
Created attachment 183498 [details]
patch to fix to link libncursesw

nvi-m17n links libncurses, not libncursesw. So it cannot display CJK characters correctly on FreeBSD >= 11.0

The patch attached (against editors/nvi-m17n) fixes nvi to link libncursesw instead of libncurses.
Comment 1 Yasuhito FUTATSUKI 2017-06-15 21:36:42 UTC
Created attachment 183510 [details]
patch to avoid linking libncurses and use libncursesw instead
Comment 2 Yasuhito FUTATSUKI 2017-06-17 10:05:06 UTC
the patch fixes the behavior in displayencoding=euc-jp (and parhaps other 8bit encodings), but cannot fix iso-2022 encodings.

I think it is caused by ncurses don't support iso-2022 encodings (by accident or dropping support, I don't know which is).
Comment 3 Satoshi TOMIOKA 2017-11-17 14:17:13 UTC
In FreeBSD 11.1, nvi-m17n cannot set the "fileencoding" for euc-jp file correctly, when the first line does not contain multi-byte characters. 

The patch attached may fix this bug.
The correction is made by only a single line addition to the multibyte.c but it requires libncursesw.
Comment 4 Satoshi TOMIOKA 2017-11-17 14:29:37 UTC
Created attachment 188075 [details]
fileencoding misdetection when the first line does not contain multi-byte letters

In FreeBSD 11.1, nvi-m17n cannot set the "fileencoding" for euc-jp file correctly, when the first line does not include multi-byte characters. 
In the current code, all the candidate flags are set for this case, and the encoding is determined to the encoding of the first candidate within all the candidates.

The patch attached may fix this bug.
The correction is made by only a single line addition to the multibyte.c but it requires libncursesw.
Comment 5 Satoshi TOMIOKA 2017-11-28 13:23:14 UTC
Created attachment 188352 [details]
patch to correct detection of fileencoding and to avoid disappeared some symbols

In the newest port nvi-m17n (1.79.20040608_4,1), even when the previous patch I uploaded (Comment 4) is applied, there is another problem; some well-used multi-byte symbols, e.g. the circle symbol (ISO-2022-JP code 217b) or the multiplication sign (215f), cannot be displayed.

I guess that this problem is related to ncursew library, although I could not find the way to fix it.
However, this problem can be solved by using the bundled curses codes included in the original ports sources instead of linking /lib/libncursesw.so.8.

The new patch is an accumulated patch to apply to nvi-m17n-1.79.20040608_4,1.
This can fix two problems.
One is to solve the detection error of fileencoding, which is same to the patch uploaded previously (obsoleted).
The other is new patch to solve the disappearing the well-used symbols.
Comment 6 commit-hook freebsd_committer freebsd_triage 2018-06-16 22:47:43 UTC
A commit references this bug:

Author: swills
Date: Sat Jun 16 22:47:22 UTC 2018
New revision: 472573
URL: https://svnweb.freebsd.org/changeset/ports/472573

Log:
  editors/nvi-m17n: fix CJK display problem

  PR:		220013
  Submitted by:	Satoshi TOMIOKA <tomioka.satoshi.ml@gmail.com>
  Reported by:	Yasuhito FUTATSUKI <freebsd-bug-report-yf@yf.bsdclub.org>

Changes:
  head/editors/nvi-m17n/Makefile
  head/editors/nvi-m17n/files/patch-common-multibyte.c
  head/editors/nvi-m17n/files/patch-configure
Comment 7 Steve Wills freebsd_committer freebsd_triage 2018-06-16 22:48:26 UTC
Committed, thanks!