[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:14009] Re: test packages of gs and gs-aladdin.
佐野@浜松です。
In <20010404083819F.kohda@xxxxxxxxxxxxxxxxxxxx>,
on "Wed, 4 Apr 2001 08:39:41 +0900",
with "[debian-devel:13991] Re: test packages of gs and gs-aladdin.",
Atsuhito Kohda <kohda@xxxxxxxxxxxxxxxxxxxx> さん wrote:
> > # 個人的には gs-cjk 可能な気がしてますが(根拠なし)。
>
> と楽観的に考えていましたが、どうやっても表示できて
> ません(^^; ほとんどお手あげ状態です(gs 5.50)。
gs-cjk のほうは TrueType font を使うというアプローチだと
思うのですが、5.x の場合は CID フォントを使って日本語を
表示させるという対処ができるという話があったので、そちらで
なんとかなりませんかね ?
たぶん田中哲さんのところにあったと思うのですが、手元の
gs5.10-vflib-1.6.tar.gz というファイルに README.CID と
いうファイルがあって、そこには
Ghostscript は 5.0 から CID フォントをサポートしました。したがって、
そーいう形式のフォントを持っていれば使うことができます。これは VFlib
には依存しないので VFlib を組み込まなくても構いません。そーいう意味
では gs5.10-vflib とはえんもゆかりもないのですが、日本語を出す、とい
う目的は同じなのでここで説明します。
# 正確にいえば gs5.10-vflib では CID フォントがエラーにならないように
# zfont1.c を微妙に変更しているので関係が全くないわけではない。
## この変更はエラーチェックを甘くする変更なのであまり適切なものという
## わけではない。
と書いてあります。でもたしかこれは香田さんも御存知でしたよね。
あと、
http://www.ldl.jaist.ac.jp/~akr/nonresearch/free-software/ghostscript/cid.ja.html
には
Ghostscript で CID フォントを使う
1. 入手する。
ftp://ftp.oreilly.com/pub/examples/nutshell/ujip/adobe/
(下の例に必要なファイルは aj12.tar.Z と samples/WadaMin-Regular です。)
2. 適切な場所にファイルを置く。
Use.htm の Finding PostScript Level 2 resources という項に
説明されていますが、/Resource/CIDFont/ 下に CIDFont を、
/Resource/CMap/ 下に CMap を置きます。
(このパスを変えたい場合 --- 普通変えたいと思うでしょうが ---
gs_res.ps 中の 定義を変更します。)
例えば、/Resource/CIDFont/WadaMin-Regular や /Resource/CMap/H という
ファイルを作ります。
3. 普通のフォントとして使えるようにする。
$PREFIX/share/ghostscript/fonts/ に、例えば WadaMin-Regular--H という名前で
次の内容のファイルを作ります。
/WadaMin-Regular--H
/H /CMap findresource
[/WadaMin-Regular /CIDFont findresource]
composefont pop
すると、WadaMin-Regular--H という名前のフォントが使えるようになります。
4. CID フォントに別名をつける。
例えば、Ryumin-Light という名前で WadaMin-Regularをアクセスしたいなら、
/Resource/CIDFont/Ryumin-Light に次の内容のファイルを作ります。
/Ryumin-Light
/WadaMin-Regular /CIDFont findresource
dup length dict begin {def} forall currentdict end
/CIDFont defineresource pop
関連リンク
鈴木秀幸氏のメモ 1999-12-25
縦書きCIDフォントを使えるようにするパッチ。
<http://www.sat.t.u-tokyo.ac.jp/~hideyuki/iroiro/>
Type1 to CID font converter / CID-Maker
Type1 から CIDフォントへの変換ツール。
<http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/cid_maker/>
ということが書かれていました。
最近 unstable の update をサボっていた (例の glibc/gcc 問題が
解決するのを待っていた) ので、ちょっといろいろ溜まってましたが
今ようやくいくつか upgrade して unstable の gs 5.50 を入れて
みました。
(しかし、upgrade するのにも時間かかるなぁ。)
うーん、どうもうまくいかないですね。
ふーむ。 -E オプションでエラーをチェックしてみると
./iscannum.c(84): Returning error -18.
というのがたくさん出てるみたいです。
errors.h で見ると
#define e_syntaxerror (-18)
ですね。
他にも
./iname.c(213): Returning error -21.
./gsiodev.c(289): Returning error -22.
とか
./interp.c(1042): Returning error -21.
./interp.c(1034): Returning error -102.
./iscannum.c(84): Returning error -18.
./iscannum.c(84): Returning error -18.
./interp.c(1354): Returning error -106.
./interp.c(1354): Returning error -106.
とかいろいろエラーは出てるみたいなんですが。
#define e_undefined (-21)
#define e_undefinedfilename (-22)
このへんも問題なのかな。
#define e_InterpreterExit (-102)
#define e_NeedInput (-106)
このへんの 100 番以降のエラーは擬似エラーということなので
特に問題無さそう。
やっぱり一番問題になってるのは
./iscannum.c(84): Returning error -18.
とか
./zmisc.c(60): Returning error -20.
./interp.c(1034): Returning error -20.
このへん。
#define e_syntaxerror (-18)
#define e_typecheck (-20)
あたりじゃないかと思います。
./iscannum.c(84): Returning error -18.
72 #define IS_DIGIT(d, c)\
73 ((d = decoder[c]) < 10)
74
75 GET_NEXT(c, sp, return_error(e_syntaxerror));
76 #define WOULD_OVERFLOW(val, d, maxv)\
77 (val >= maxv / 10 && (val > maxv / 10 || d > (int)(maxv % 10)))
78 if (!IS_DIGIT(d, c)) {
79 if (c != '.')
80 return_error(e_syntaxerror);
81 /* Might be a number starting with '.'. */
82 GET_NEXT(c, sp, return_error(e_syntaxerror));
83 if (!IS_DIGIT(d, c))
84 return_error(e_syntaxerror);
85 ival = 0;
86 goto i2r;
87 }
./zmisc.c(60): Returning error -20.
42 /* <proc> bind <proc> */
43 private int
44 zbind(os_ptr op)
45 {
46 uint depth = 1;
47 ref defn;
48 register os_ptr bsp;
49
50 switch (r_type(op)) {
51 case t_array:
52 case t_mixedarray:
53 case t_shortarray:
54 defn = *op;
55 break;
56 case t_oparray:
57 defn = *op->value.const_refs;
58 break;
59 default:
60 return_op_typecheck(op);
61 }
62 push(1);
63 *op = defn;
64 bsp = op;
./interp.c(1034): Returning error -20.
1032 iosp = osp;
1033 iesp = esp;
1034 return_with_code_iref();
このへんらしい。ふーむ。
もしかすると
# 正確にいえば gs5.10-vflib では CID フォントがエラーにならないように
# zfont1.c を微妙に変更しているので関係が全くないわけではない。
## この変更はエラーチェックを甘くする変更なのであまり適切なものという
## わけではない。
このあたりが関係しているのかな、と思って、gs-ja_5.50 のパッチを
参考に zfont1.c の変更点を眺めてみたけど、これを入れただけでは
ダメっぽい。
うーむ。でも gs-aladdin 6.50 を使っても CID フォントの
WadaMin-Regular とかでちゃんと日本語を表示できてない
ような気がする。
うーむ。手元の WadaMin-Regular が壊れているのだろうか。
--
# (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
<kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)