6

glibc 从哪里获得它的 unicode 属性数据库,例如,wcwidth()?我有兴趣更正一些错误的条目,但我似乎无法找到这些信息在其源代码分发中的位置。

如果重要的话,我主要在 debian 或 ubuntu linux 下对此感兴趣。

4

3 回答 3

2

看起来数据是由(显然是手动运行的)localedata/gen-unicode-ctype.c 从http://unicode.org/Public/UNIDATA/上发布的 unicode 数据文件生成的。感谢 Naaff 为我指明了正确的方向!

于 2009-05-06T04:27:43.470 回答
1

好的,所以我只是在自己周围摸索,所以我不确定,但是您要查找的表似乎位于相对于 glibc 根目录的以下位置:

localedata/locales/i18n

这似乎是 Unicode(版本 5)语言环境。它包含以下内容,我认为您需要在其中进行更改:

% ENCLOSED ALPHANUMERICS/
   <U24D0>..<U24E9>;/

如果您想知道,函数 ctype_output (ld-ctype.c) 调用 allocate_arrays,后者调用 wcwidth_table_init。函数 wcwidth_table_init 由 3level.h 生成(它还生成遵循相同模板的其他表)。这是我跟踪 localedate/locales 中文件的链条。

就像我说的,我不能 100% 确定这是正确的桌子,但我想我会分享我发现的东西。

于 2009-05-05T03:11:33.457 回答
0

我相信它是在语言环境定义文件中定义的。有关语言环境的更多信息,请参阅此页面。glibc 在 中包含一堆语言环境定义localedate/locales,尽管它们似乎都没有任何宽度信息。

于 2009-05-05T02:44:59.700 回答