2009-05-05 64 views
5

glibc在哪裏得到它的unicode屬性數據庫,例如,wcwidth()?我有興趣糾正一些錯誤的條目,但我似乎無法找到這些信息在源代碼分發中的位置。glibc在哪裏得到它的unicode屬性數據庫?

如果很重要,我主要在debian或ubuntu linux下對此感興趣。

回答

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%確定這是正確的桌子,但我想我會分享我發現的東西。

+1

該文件中的註釋表明它是由localedata/gen-unicode-ctype.c生成的,它講述了一個UnicodeData文件,但UnicodeData文件在哪裏在glibc發行版中使用...?我不想修補生成的文件,下次發佈新版本時似乎會變得粘稠。 – bdonlan 2009-05-05 05:57:46

0

我相信它是在區域設置定義文件中定義的。有關區域設置的更多信息,請參閱this page。 glibc在localedate/locales中包含了一堆語言環境定義,但它們中沒有一個似乎有任何寬度信息。

+0

但是語言環境由localedef應用程序生成...它帶有glibc。我更感興趣的是找到規範的位置來編輯這些信息...... – bdonlan 2009-05-05 02:48:48

2

看起來數據是由在http://unicode.org/Public/UNIDATA/發佈的unicode數據文件中的(顯然是手動運行的)localedata/gen-unicode-ctype.c生成的。感謝納夫指引我朝着正確的方向發展!