[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 (佐野 武俊)