[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][TOP]
Re: Pango 0.16 での jisx0201,jisx0212
まるやまです。
メールが長くなってしまいましたが、よろしくお願いします。
<0GDB0084KCH3E4@xxxxxxxxxxxxxxxxxxx>の記事において
tajima@xxxxxxxxxxxxxxxxxxxさんは書きました。
> こんにちは、田島ともうします。
>
> 問題の件は、
> http://bugzilla.gnome.org/show_bug.cgi?id=50633
>
> にバグ登録してあります。JISX0201, JISX0212 に対しては、
> まるやまさんの指摘された方法で conv_8bit, conv_euc に修正を入れる、
> のが正しいやりかたと思います。 patch は一端作ったのですが、
> 他の文字セットへの対応のことなどを考えていたり、あとその他のことに時間を
> とられてたりしたこともあって、放ったままになっておりました。
> 今週中に cvs に commit できるように致します。
>
> なお、一般的にこの手の問題を持ってく先ですが、現在の状況では buzilla.gnome.org
> にバグ登録するのがもっとも確実かと思います。jisx0213 サポートの件は別途 bug 登録
> しておきます。
>
お手数かけて申し訳ございません。
今後、bugzillaに登録するようにします。
以下、自分の記述部分に、補足、訂正があります。
> >http://www.pango.org/gscript.gif
> >にあるように、
> >
> >Japanese (日本語) こんにちは、
> >
> >までは表示されているのですが、このあとに、謎の文字が続いています。
> >半角で「コンニチワ」と表示されるのだと思うのですが、
> >半角で「コ(space)ャァー」と言う風にしか読めません。
> >
> >いろいろ原因を探った結果、examples/pangox.aliases から選択され、
> >jisx0201カナの表示に使われる
> >-mutt-clearlyu-medium-r-normal--17-120-100-100-p-128-iso10646-1
> >のマッピングが「変」だという結論に達しました。
> >「ヲ」から「ソ」まで正しいと思うのですが、それ以降が変です。
> >
> >これは変だと思うのですが、本当に変なのでしょうか。
> >
> >これが本当に変なのか自分の知識では判断付かないのと、
このへんの話が言葉足らずでした。
U+FF66 以降がUNICODEにおけるいわゆる半角カナの領域だと思うのですが、
-mutt-clearlyu-medium-r-normal--17-120-100-100-p-128-iso10646-1
は、XFree86 4.0 標準のフォントのようなのですが、
xfdで見てみると、
0xFF66 「ヲ」から 0xFF7F「ソ」までは正しいように見えるですが、
0xFF80 「ヲ」
0xFF81 「ァ」
0xFF81 「ィ」
のように、なっていて
一方、
http://www.unicode.org/Public/MAPPINGS/EASTASIA/JIS/JIS0201.TXT
では、
----------
SJIS UNICODE
0xBF 0xFF7F # HALFWIDTH KATAKANA LETTER SO
0xC0 0xFF80 # HALFWIDTH KATAKANA LETTER TA
0xC1 0xFF81 # HALFWIDTH KATAKANA LETTER TI
0xC2 0xFF82 # HALFWIDTH KATAKANA LETTER TU
0xC3 0xFF83 # HALFWIDTH KATAKANA LETTER TE
----------
となっていて、
-mutt-clearlyu-medium-r-normal--17-120-100-100-p-128-iso10646-1
がおかしいのではないのかな、という意味です。
そして、これが、
> >半角で「コ(space)ャァー」と言う風にしか読めません。
の原因ではないのかな、という意味です。
で、これが本当におかしいのか、が良くわかりません。
どうなのでしょうか。
> >
> >やはり、jisx0201 フォントが選択された方が幸せだと思うので、
> >以下の方法で、実現させました。
> >
> >1.
> > http://www.unicode.org/Public/MAPPINGS/EASTASIA/JIS/SHIFTJIS.TXT
これは、間違いです。
http://www.unicode.org/Public/MAPPINGS/EASTASIA/JIS/JIS0201.TXT
が正しいです。
> >2.
> > modules/basic/tables-big.i
> > の最初の enum に
> >
> > ENC_JIS_0201 = 1 << nn
> >
> > charsets[] に
> >
> > { nn, "SJIS", "jisx0201.1976-0", conv_8bit },
> >
全ての環境のiconv()で、SJISがあるのか、SJISという名前なのか、
良く分からなかったので、SJIS にすべきかどうか、
迷ったのですが、
少なくとも Redhat 7.0J ftp版の glibcでは、
SJIS というのがあったので、このようにしてみました。
また、Redhat 7.0J ftp版の glibc iconv では、
-------
SJIS UNICODE
0x5C 0x00A5 # YEN SIGN
0x7E 0x203E # OVERLINE
-------
のように変換されているので、これも考慮にいれて
SJISにしてみました。
ただ、この変換テーブルも、すべての環境で、
こうなのかは分かりません。
> >これで、半角カナで「コンニチワ」と表示されるようになりました。
これは、「コンニチハ」が正しいです。
ところで、
> > ENC_JIS_0201 = 1 << nn
> > { nn, "SJIS", "jisx0201.1976-0", conv_8bit },
を追加して、
jisx0201フォントまたはiso-8859-1フォントで、
0x5C 0x00A5 # YEN SIGN
が表示されるのは確認したのですが、
0x7E 0x203E # OVERLINE
が表示されません。
pango/modules/basic/basic-x.c の
basic_engine_shape()
の第3引数
gint length
には、U+203E の前までのUTF-8 のバイト数しか入っていない
ようだ、というところまでは追っかけたのですが、
この理由、および、この上位の関数の処理内容が
よくわりません。
これはバグなのでしょうか。
以上よろしくお願いします。
---------
Toshio MARUYAMA
marutosi@xxxxxxxxxxxxx