[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