glibc 从哪里获得它的 unicode 属性数据库,例如,wcwidth()
?我有兴趣更正一些错误的条目,但我似乎无法找到这些信息在其源代码分发中的位置。
如果重要的话,我主要在 debian 或 ubuntu linux 下对此感兴趣。
glibc 从哪里获得它的 unicode 属性数据库,例如,wcwidth()
?我有兴趣更正一些错误的条目,但我似乎无法找到这些信息在其源代码分发中的位置。
如果重要的话,我主要在 debian 或 ubuntu linux 下对此感兴趣。
看起来数据是由(显然是手动运行的)localedata/gen-unicode-ctype.c 从http://unicode.org/Public/UNIDATA/上发布的 unicode 数据文件生成的。感谢 Naaff 为我指明了正确的方向!
好的,所以我只是在自己周围摸索,所以我不确定,但是您要查找的表似乎位于相对于 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% 确定这是正确的桌子,但我想我会分享我发现的东西。
我相信它是在语言环境定义文件中定义的。有关语言环境的更多信息,请参阅此页面。glibc 在 中包含一堆语言环境定义localedate/locales
,尽管它们似乎都没有任何宽度信息。