glibc はどこで Unicode 属性のデータベースを取得しますwcwidth()
か? いくつかの誤ったエントリを修正することに関心がありますが、この情報がソース配布のどこにあるかを見つけることができないようです。
それが問題であれば、私は主に debian または ubuntu Linux でこれに興味があります。
glibc はどこで Unicode 属性のデータベースを取得しますwcwidth()
か? いくつかの誤ったエントリを修正することに関心がありますが、この情報がソース配布のどこにあるかを見つけることができないようです。
それが問題であれば、私は主に debian または ubuntu Linux でこれに興味があります。
データは、http://unicode.org/Public/UNIDATA/で公開されているUnicodeデータファイルから(明らかに手動で実行された) localedata /gen-unicode-ctype.cによって生成されているようです。私を正しい方向に向けてくれたNaaffに感謝します!
わかりましたので、私は自分自身を突っついているだけなので、完全にはわかりませんが、探しているテーブルは、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% 確信しているわけではありませんが、私が見つけたものを共有したいと思いました.
ロケール定義ファイルで定義されていると思います。ロケールの詳細については、このページを参照してください。glibc には に多数のロケール定義が含まれてlocaledate/locales
いますが、幅情報を持っているものはないようです。