[Bug 225692] iswprint() wrong for some FULL WIDTH characters in UTF-8 locale

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Mon Oct 8 12:34:16 UTC 2018


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225692

--- Comment #15 from Yuri Pankov <yuripv at yuripv.net> ---
Properly fixing U+FF08 and other full width characters is more involved.

A bit of background: we have common ctype definitions file for all UTF-8
locales, src/share/ctypedef/en_US.UTF-8.src (all other locale's symlink to the
resulting /usr/share/locale/en_US.UTF-8/LC_CTYPE).

src/share/ctypedef/en_US.UTF-8.src is in turn assembled from
src/tools/tools/locale/etc/common.UTF-8.src and
src/tools/tools/locale/etc/manual-input.UTF-8.

src/tools/tools/locale/etc/common.UTF-8.src is built using
src/tools/tools/locale/tools/utf8-rollup.pl, which contains the character
ranges belonging to different locales, and (among other things it does) checks
the corresponding .UTF-8.src file's LC_CTYPE section for character class to be
used.  If the character is not defined, then it doesn't get into the
common.UTF-8.src, which is exactly the case here as it's not found in
ja_JP.UTF-8.src and ko_KR.UTF-8.src.

TL;DR: all such characters not defined anywhere in *.UTF-8.src from CLDR need
to be added to the manual-input.UTF-8.

CLDR v34 is really close to be released, but I strongly doubt we will have the
full width characters we are missing defined in the new *.UTF-8.src files.  To
amend the issue for the release, I propose looking up these characters in
UTF-8.src we had in src/share/mklocale in pre-11.x times, and adding them to
manual-input.UTF-8.

The longer term solution would be asking CLDR guys about a way to build a
complete ctype map while building POSIX locale data files, and if that's not
possible, going over the entire UTF-8.src contents, and adding missing bits to
manual-input.UTF-8.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list