[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:14025] gs-CID (Re: Re: test packages of gs)



佐野@浜松です。

どうやら縦書き表示の問題もフォントの問題だったようです。

In <20010406183957J.kgh12351@xxxxxxxxxxxxxxxxxxxx>,
 on "Fri, 6 Apr 2001 20:15:25 +0900", I wrote:

>  1. 入手する。
> 
>     ftp://ftp.oreilly.com/pub/examples/nutshell/ujip/adobe/
> 
>     (下の例に必要なファイルは aj12.tar.Z と samples/WadaMin-Regular です。)

> 使っている CID font は WadaMin-Regular と WadaMaruGo-Regular です。

どうやって確認すればいいのかよくわかりませんが、これらのフォントには
縦書き用の記号に対応する CID range のグリフが含まれていないように
思われます。

「日本語対応 gs」に含まれている allkanji.ps をもとに、

--- allkanji.ps Sat Apr  7 09:10:57 2001
+++ allKV.ps    Sat Apr  7 08:57:28 2001
@@ -9,7 +9,7 @@
 /BOTTOM  50 def
 /SIZE    28 def
 
-/FONT_NAME /Ryumin-Light-H def
+/FONT_NAME /Ryumin-Light-V def
 /FONT_WIDTH  1000 def
 /FONT_DESCENT 120 def
 /FONT_ASCENT  880 def

--- allkanji.ps Sat Apr  7 09:10:57 2001
+++ allKw.ps    Fri Apr  6 15:30:17 2001
@@ -9,7 +9,8 @@
 /BOTTOM  50 def
 /SIZE    28 def
 
-/FONT_NAME /Ryumin-Light-H def
+% /FONT_NAME /Ryumin-Light-H def
+/FONT_NAME /WadaMin-Regular-H def
 /FONT_WIDTH  1000 def
 /FONT_DESCENT 120 def
 /FONT_ASCENT  880 def

--- allkanji.ps Sat Apr  7 09:10:57 2001
+++ allKwV.ps   Sat Apr  7 08:59:41 2001
@@ -9,7 +9,8 @@
 /BOTTOM  50 def
 /SIZE    28 def
 
-/FONT_NAME /Ryumin-Light-H def
+% /FONT_NAME /Ryumin-Light-H def
+/FONT_NAME /WadaMin-Regular-V def
 /FONT_WIDTH  1000 def
 /FONT_DESCENT 120 def
 /FONT_ASCENT  880 def

などの allKV.ps, allKw.ps, allKwV.ps を作って potato 上で
 VFlib 版の gs 5.10 と CID-V + PDF-V + zgeneric な gs 5.50 で
それぞれ表示させてチェックしてみると、

  allKV.ps:
    VFlib 版の gs 5.10 では 2122, 2123 の句読点も表示されている
    (ただし位置は allkanji.ps に比べてずれている/これは当然か)。
    CID-V + PDF-V + zgeneric な gs 5.50 で WadaMin-Regular 利用
    の場合、2122, 2123 の句読点は表示されない。

  allKw.ps:
    VFlib 版の gs 5.10 でも  CID-V + PDF-V + zgeneric な gs 5.50 でも
    どちらも CID Font の WadaMin-Regular を利用して 2122, 2123 の
    句読点は表示されている。

  allKwV.ps:
    VFlib 版の gs 5.10 ではエラーとなり、表示できない。
    CID-V + PDF-V + zgeneric な gs 5.50 で WadaMin-Regular 利用
    の場合、2122, 2123 の句読点は表示されない。

という結果になります。

ここで /Resource/CMap/ 以下に置いてある V に

--- V.0 Sat Apr  7 09:19:10 2001
+++ V   Sat Apr  7 09:19:10 2001
@@ -50,11 +50,11 @@
 /WMode 1 def
 
 27 begincidrange
-<2122> <2123> 7887
-<2131> <2132> 7889
-<213c> <213e> 7891
-<2141> <2145> 7894
-<214a> <215b> 7899
+<2122> <2123> 634
+<2131> <2132> 649
+<213c> <213e> 660
+<2141> <2145> 665
+<214a> <215b> 674
 <2161> <2161> 7917
 <2421> <2421> 7918
 <2423> <2423> 7919

な変更を加えて縦書き用の句読点や括弧など記号の一部を横書き用の
グリフで代用させてみると

  allKwV.ps:
    VFlib 版の gs 5.10 ではエラーとなり、表示できない。
    CID-V + PDF-V + zgeneric な gs 5.50 で WadaMin-Regular 利用
    の場合、2122, 2123 の句読点は横書き用のグリフで表示される。

という結果になります。

また、もとの article9.ps を表示させてみると、

 本来の CMap: V では
    VFlib 版の gs 5.10 では VFlib から取得した Ryumin-Right を
    使ってきちんと表示される
    CID-V + PDF-V + zgeneric な gs 5.50 で WadaMin-Regular 利用
    の場合、句読点や括弧が表示されない

 上記の変更を加えて縦書き用の句読点や括弧を横書き用のグリフで
 代用させた CMap: V では
    VFlib 版の gs 5.10 では VFlib から取得した Ryumin-Right を
    使ってきちんと表示される (この場合 VFlib から取得したフォント
    を利用しているので CIDFont 用の CMap は動作に影響しないと
    思われる)。
    CID-V + PDF-V + zgeneric な gs 5.50 で WadaMin-Regular 利用
    の場合、句読点や括弧が横書き用のグリフで表示される。

という結果になります。

> ただし、これだけでは縦書き PS を扱えていないらしく、
> 日本語化 gs のサンプルについてくる article9.ps を
> うまく表示できません。

ということで、どうやらこの問題はフォント中に必要なグリフが
定義されていない (だから zgeneric.c で undefined になる)
ということだろうと思われます。

なお chroot した unstable/sid 上でも同様なチェックを行ないましたが、
 official な gs 5.50 に CID-V + PDF-V + zgeneric.c な変更を加えた
 gs だと、potato 上の同様な構成の gs と同じ挙動を示します。
また official な gs 5.50 のバイナリ +  CID-V + PDF-V の場合も、
同じ、つまり

 本来の CMap: V では句読点や括弧が表示されない

 上記の変更を加えて縦書き用の句読点や括弧を横書き用のグリフで
 代用させた CMap: V では句読点や括弧が横書き用のグリフで表示される。

という結果になります。

> その中で、CMap の EUC-H をロードした直後に出るエラー、
> 「zgeneric.c の 160 行目で undefined 」というのに注目してみました。

>    156      switch (r_type(op1)) {
>    157          case t_dictionary:
>    158              check_dict_read(*op1);
>    159              if (dict_find(op1, op, &pvalue) <= 0)
>    160                  /* return_error(e_undefined); */
>    161                  break;
>    162              op[-1] = *pvalue;
>    163              break;
> 
> として make してみたところ、なんか article9.ps も表示できたっぽい
> 感じです。あ、正常な表示と比べて見ると、括弧や句読点が抜け落ちて
> ますね。まだこのままだと実用的でないなぁ。

ここで break; するんじゃなくて op[-1] にいわゆるトウフ (□」とか
未定義文字を返すようにしたら、一応「フォントに無い文字 (グリフ) は
それなりに」表示してくれるようになるんかな ?

まあ、ちゃんと縦書き用のグリフも含んだフォントを用意するのが
正解でしょうけれど。

> ということで、たぶん Torsten の gs 5.5 にも上記の  zgeneric.c 
> への変更をもうちょっとスマートにしたような変更 (と gs-CID-V.diff 
> および gs-PDF-V.diff に相当する PS ファイルの変更) をしてもらえれば、
> フォントの設定だけで CID フォントを利用して日本語 PS ファイルを表示
> することも不可能ではない (かもしれない)、という感じです。

とりあえず前回のメールに添付した gs-CID-V と gs-PDF-V に相当する変更を
入れてもらえれば、ちゃんとしたフォントがあれば縦書きも含めて PS ファイルの
表示はできそうな感じです。

 PDF ファイルのほうはどうも表示できそうにない感じですが、これは
たしか 5.10 + VFlib 版でも日本語 PDF は読めないものがけっこうあったので
ある程度仕方無いかな。

 gs 5.10 VFlib 版の /usr/share/doc/gs/READMEs-kanji/README.jpdf021.euc.gz を
見ると、pdf_font.ps にいろいろ変更を加えていたみたいなので、このへんの変更を
 5.50 のほうにもなんとか反映させれば、potato 版なみには PDF も読めるように
なるかもしれません。

武さんから gs-cjk ML に TrueType フォントから CID フォントを作るツールが
流れていたと聞いたので、それを使って縦書き用のグリフも含んだフリーな
CID フォントを誰か作ってくれないかなと期待してます。

以上、途中経過の報告でした。

--
     # (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
    <kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)