2009年10月30日

[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されて単射でなくなります。
これは絶対にダメです。


投稿者 xml-rpc : 2009年10月30日 13:14
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/89847
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。