[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:14052] Re: test packages of gs and gs-aladdin.
またいれ違いになってるような気がする。。。
オフラインでメールを書くべきではないかな。
At Tue, 10 Apr 2001 23:13:35 +0900,
Taketoshi Sano wrote:
>
> 佐野@浜松です。
> うん ? ".ttc" ということは、そうか。もしかして ttf-xtt-wadalab-gothic や
> ttf-xtt-watanabe-mincho では 6.50 でも縦書き表示できないということ ?
これは縦書き用のテーブル vhea, vmtx とか?が入ってないから、だそうです。
> うーむ。non-free な CMap に依存するだけではなく、font も free なものでは
> 使えないとは。
これですが、Free CMap の generate (決して create ではない?) を
試みています。
とりあえずナニな解説から。半分 gs-cjk project へのメール+相談+質問を
兼ねていたりしますが。
gs-cjk で日本語の表示を行うとき(すなわち (あいうえお) show とか)、
EUC-JP などの日本語「文字コード」から、Adobe-Japan1 という、Adobe が
定めた文字集合(character collection と呼ばれている) の CID-key に変換します。
これは glyph indexed で、例えば、横書きの「。」と縦書きの「。」は
別の CID-key が割り当てらてれいます。この変換テーブルが CMap ファイル
(EUC-H) です。
一方 ttf は ShiftJIS や Unicode などの encoding で格納されているので、
この CID-key から Unicode へと変換しなければなりません。これをやっているのが
(というか変換テーブルが) /usr/share/ghostscript/TrueType/Adobe-Japan1-Unicode
などだったりします。
私が採った方法は、
CMap ファイル (EUC-H) で、Unicode に変換。すなわち、Adobe-Japan1 の代わりと
なる charcter collection, CID-key として、Unicode を使う。
TrueType/ に置く変換テーブル(Debian-Unicode-????? という名前にしておく)で、
Unicode -> Unicode、Unicode -> ShiftJIS などの変換をする。
というものです。
Adobe の CMap に含まれている、cid2code.txt という表を利用して、
テスト用の EUC-H(EUC -> Unicode) と Debian-Unicode-Unicode というリソース
(Unicode encoded ttf 用のリソースファイル)を作ってみました。
で、試してみると stack overflow ... (わら)
まぁ、原因は簡単で、Adobe-Japan1 ですと文字集合としての大きさが
それほどない(日本語の文字+αだけでいいから)ので Adobe-Japan1 -> Unicode
などの変換テーブルも小さくて済み、array や stack の limit に引っかかって
来ないのですが、
character collectionとして Unicode を使うと、Debian-Unicode-???? で
0xfffd? 個の変換テーブルを定義せざるを得ず、Debian-Unicode-Unicode の
表の読み込み(というか def する前)の所で overflow してしまうようです。
で、ちょっとアレゲハックして、Debian-Unicode-Unicode で
\Code [
16#0000 16#0001 16#0002 ....
]
としているところを、
\Code 65535 array def
Code 0 16#0000 put
COde 1 16#0001 put
...
としてみると、表の読み込みでは stack overflow しないのですが、
gs_ttf.ps の /.definecjkvttcidfont で、
cid: 50418 Code: C4F2 gid: 0
をデバグメセジに吐いたところで stack overflow します。
やはり表がでかすぎ?
この方法では縦書きグリフをどうするか、という問題もあって、
とりあえず、Unicode の PUA に詰め込もうかな、とも考えていたりしました。
# 実は最初は UCS4 の PUA 0xe0000000〜にいれりゃ簡単だ、とか考えて
# 単純に Unicode に + 0xe0000000 したのを縦書きグリフの CID-key にしてしまえば
# いいとか考えていたり。
で、回避策として、
Unicode の使われていない部分を削って圧縮し、CID-key を original なものに。
というのと、
cid2code.txt を使いたくない気もするし、そもそも Unix な中では
H, V, EUC-[VH], RKSJ-[VH] ぐらい(今後のことも考えて UniJIS-* も?)
があれば困らないわけなので、iconv 使って、JIS をベースとした
character collection を作る。
とかを妄想しています。
とりあえず経過報告まで。
watanabe-mincho/wadalab-gothic で縦書き出来ないという問題は
gotom サメがやってくれると期待(わら
cu
hirot