[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:30206] Re: チルダ問題



本多です

> ぐぐってみましたが,
> 
> http://www.kde.gr.jp/~akito/xft/install.html
> 
> | 多く日本語フォントはcp932という仕様のUnicode-Jis変換表を前提に作られ
> | ていて、これはQtがデフォルトで用いている変換表とは微妙に異なるもので
> | す。そのため、Qtでは環境変数  UNICODEMAP_JP で変換表をcp932仕様に切
> | り換えなければ、「U+301C」など一部の記号が表示できません。
> 
> 他にもたくさん出てきますね.フォントによっては「U+301C」が表示出来ないと
> か,別のフォント (ex. Kochi Gothic) にしたら表示するようになったとか...

ええと、Plamoの立場からこの問題を整理しておきますね。 まず、

1) UCS 0xFF5E (FULLWIDTH TILDE)  全角版tilde

2) UCS 0x301C (WAVE DASH) 
こいつの形状はfont file依存です。 Unicodeの規格書では逆チルダの形で定義されてます
(これが正しくないわけですけど)。 

Vista以前に付属のms*.ttc ->逆tilde
Richo lx*.ttc ->逆tilde
Vista以降に付属のms*.ttc ->tildeの拡大版
IPA ->tildeの拡大版
VL gothic ->tildeの拡大版

という訳で、plamoでは形状の違いをのぞけば表示されないということはなく
対策を入れる必要はないわけです。
!!ですから、形状や表示されない問題は無視して考えて下さい。

問題はeuc --> unicodeがinjective mapになっているかです。

まずEUCでは
WAVE DASH 		0xA1C1 (2bytes)
FULL WIDTHTILDE 	SS3 + 0xXXXX (3 bytes)
となっていますです。(SS3はshift outでG2, G3をGL, GRにmapします).

Qtのmappingはdefaultでは単射になりますが、
EUC 0xA1C1 -> UCS 0x301C
EUC SS3 + 0xXXXX -> UCS 0xFF5E

UNICODEMAP_JPをcp932にすると
EUC 0xA1C1       -> UCS 0xFF5E
EUC SS3 + 0xXXXX -> UCS 0xFF5E
にmapされて単射でなくなります。
これは絶対にダメです。



References
[plamo:30203] チルダ問題, Naofumi Honda
[plamo:30204] Re: チルダ問題, KOJIMA Mitsuhiro
[plamo:30205] Re: チルダ問題, KATOH Yasufumi

[検索ページ] [メール一覧]
Plamo ML 公開システム