6

glibc はどこで Unicode 属性のデータベースを取得しますwcwidth()か? いくつかの誤ったエントリを修正することに関心がありますが、この情報がソース配布のどこにあるかを見つけることができないようです。

それが問題であれば、私は主に debian または ubuntu Linux でこれに興味があります。

4

3 に答える 3

2

データは、http://unicode.org/Public/UNIDATA/で公開されているUnicodeデータファイルから(明らかに手動で実行された) localedata /gen-unicode-ctype.cによって生成されているようです。私を正しい方向に向けてくれたNaaffに感謝します!

于 2009-05-06T04:27:43.470 に答える
1

わかりましたので、私は自分自身を突っついているだけなので、完全にはわかりませんが、探しているテーブルは、glibc ルートを基準とした次の場所にあるようです。

localedata/locales/i18n

これは Unicode (バージョン 5) ロケールのようです。以下が含まれています。ここで変更を加える必要があると思います。

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

ご参考までに、関数 ctype_output (ld-ctype.c) は、wcwidth_table_init を呼び出す allocate_arrays を呼び出します。関数 wcwidth_table_init は 3level.h によって生成されます (同じテンプレートに従う他のテーブルも生成します)。これは、localedate/locales 内のファイルを追跡するためにたどったチェーンです。

私が言ったように、これが正しい表であると 100% 確信しているわけではありませんが、私が見つけたものを共有したいと思いました.

于 2009-05-05T03:11:33.457 に答える
0

ロケール定義ファイルで定義されていると思います。ロケールの詳細については、このページを参照してください。glibc には に多数のロケール定義が含まれてlocaledate/localesいますが、幅情報を持っているものはないようです。

于 2009-05-05T02:44:59.700 に答える