NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: PR/57798 CVS commit: src/usr.bin/mklocale
The following reply was made to PR lib/57798; it has been noted by GNATS.
From: Rin Okuyama <rokuyama.rk%gmail.com@localhost>
To: gnats-bugs%netbsd.org@localhost, lib-bug-people%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
netbsd-bugs%netbsd.org@localhost, ryo%tetera.org@localhost
Cc: ryo%tetera.org@localhost, Brett Lymn <blymn%internode.on.net@localhost>,
Valery Ushakov <uwe%stderr.spb.ru@localhost>, Martin Husemann <martin%duskware.de@localhost>
Subject: Re: PR/57798 CVS commit: src/usr.bin/mklocale
Date: Fri, 5 Jan 2024 12:05:53 +0900
I've committed a revised fix to -current.
As wrote in the commit log, the original problem affected not
only wcwidth(3), but also other attributes storaged in _RuneType.
I'll send a pullup request to netbsd-10 tomorrow, if there's no
objections.
On 2023/12/29 6:40, Valery Ushakov wrote:
> Unicode has three different "numeric" values for a character
>
> Unicode Character Database
> https://unicode.org/reports/tr44/
>
> Numeric_Value is extracted based on the actual numeric value of the
> data in field 8 of UnicodeData.txt or the values of the
> kPrimaryNumeric, kAccountingNumeric, or kOtherNumeric tags, for
> characters listed in the Unihan data files.
>
> Numeric_Type is extracted as follows. If fields 6, 7, and 8 in
> UnicodeData.txt are all non-empty, then Numeric_Type=Decimal.
> Otherwise, if fields 7 and 8 are both non-empty, then
> Numeric_Type=Digit. Otherwise, if field 8 is non-empty, then
> Numeric_Type=Numeric. For characters listed in the Unihan data
> files, Numeric_Type=Numeric for characters that have
> kPrimaryNumeric, kAccountingNumeric, or kOtherNumeric tags. The
> default value is Numeric_Type=None.
>
> The intention of TODIGIT is likely to be able to eventually provide
> support for something like LC_TIME's alt_digits or glibc printf(3)
> extension that provides 'I' modifier for %d and friends - that use
> locale-specific digits, say u+0f20..u+0f29 for Tibetan/Dzongkha
> locales.
>
> But I don't really know much about those areas of locales...
Thank you for info. As far as I can see, most of characters in
problem are categorized to Numeric_Type=Numeric, and it seems
difficult to distinguish these with, e.g., [0-9a-f].
On 2023/12/29 5:50, Brett Lymn wrote:
> Our wide curses relies on wcwidth to determine cursor positioning and
call widths, so any
> curses based application attempting to display these characters will
have a corrupted
> display.>
Yeah, /usr/bin/vi gets confused when edit message that contains
U+5146 actually ;)
I've roughly checked output from -d option of mklocale(1).
Width (and other attribute fields) seems fixed now, as far as
I can see.
On 2023/12/28 13:30, Ryo ONODERA wrote:
> See: 'ud->width >2' in utf8_from_data() in
src/external/bsd/tmux/dist/utf8.c
>
> /* Get UTF-8 character from data. */
> enum utf8_state
> utf8_from_data(const struct utf8_data *ud, utf8_char *uc)
> {
> u_int index;
>
> if (ud->width > 2)
> fatalx("invalid UTF-8 width: %u", ud->width);
Oops. I'm not pretty sure whether this is a good programming
practice, but this was actually useful to find out the problem ;)
Thanks,
rin
Home |
Main Index |
Thread Index |
Old Index