---------- よくある問題 -------------------------------------- From 98/6/15- ■ 動作に問題がある日本語TrueType fonts a) OS/2やWIN3.1付属の msmincho.ttf / msgothic.ttf これらは以前の日本語ghostscriptでは使えてましたが、FreeType 1.0 + VFlib 2.22 のころから使用できなくなりました。御注意ください。 b) OS/2付属の dfhsm-w3.ttf / dfhsg-w5.ttf これらは freetype機能を使用すると使えません。 もしも、vfontcapで ## @@IBM Heisei TT FONTA r-IBM-mincho|IBM mincho:\ :ft=freetype:\ :ff=d\072/psfonts/dfhsm-w3.ttf: r-IBM-gothic|IBM gothic:\ :ft=freetype:\ :ff=d\072/psfonts/dfhsg-w5.ttf: としているならば、ttindex.exeで *.ttiをさくせいし ## @@IBM Heisei TT FONTA r-IBM-mincho|IBM mincho:\ :ft=truetype:\ :ff=d\072/psfonts/dfhsm-w3: r-IBM-gothic|IBM gothic:\ :ft=truetype:\ :ff=d\072/psfonts/dfhsg-w5: と書き換えると使用できるようになります。 これら二点の記載がなかったためにつまづかれた方に深くおわびいたします。 ■ VFlibの設定でもっとも気付かれにくい失敗の一つ(98/9/17に追加) 日本語PSを読もうとして、 VFlib: Cannot open the font `mincho'.   ****** Unrecoverable error: ioerror in kfVFlib Operand stack: mincho 0 10273 0 10273 c21 Private Unexpected interpreter error -12. Error object: (f80)op(510:kfVFlib)0x1cbe47e0 Operand stack at 0x11d4ea18: 0x247df4: 0x0d name --S------ 0x05a3 0x0028799c = Private このようなエラーが出たときは vfontcapをチェック。 mincho:\ # :fc=ricoh-heisei-mincho-w3 # :fc=r-IBM-mincho: # :fc=heiseimin: :fc=ms-mincho: gothic:\ # :fc=ricoh-heisei-gothic-w3: # :fc=r-IBM-gothic: # :fc=heiseigoth: :fc=ms-gothic: このように、mincho:\ に続く行が # でコメントアウトされていると肝心の :fc=ms-mincho: が有効になりません。 mincho:\ :fc=ms-mincho: gothic:\ :fc=ms-gothic: このように修正してください。 ■ Postscript files で英文フォントがロードできない 1) GS_LIBがフォントの所在を正しく差しているか確認 2) gs5.10/Fontmap の内容を吟味 例えば、TimeRomanに対する TIR____.pfbがロードできないとします。 このフォントは Acrobat Readerに付属するものなのでOS/2標準の c:/psfonts/等にあるtnr.pfbを使用するといいです。 そのためは、GS_LIBでそのディレクトリを指定して、さらに Fontmapにて、/TimesRoman のフォント指定を、tnf.pfbとしてください。 ■ Postscript ファイルで 和文フォントがロードできない 1) 環境変数 GS_LIB, VFONTCAPが正しいか     前者はx:/yy/gs5.10/kanjiを含まなければなりません。     後者はx:/yy/gs5.10/kanji/vfontcap などと指定 2) kconfig.ps     gs-vflib233.lzhにはいっているkconfig.psは行書体を使う    ための      /Ricoh-HG-Gyosyo 4300203 (gyosho) VFlibkanji      /Ricoh-HG-Gyosyo /Ricoh-HG-Gyosyo jcidemu という2行を追加しています。"gyosho"に相当するフォントが vfontcapで特定され、なおかつ現実に指定した名前と位置で 存在してないとエラーになります。 gyoshoが必要ない時は、%でコメントアウトしてください。     6月12日に文書更新のための差分をおく時に、最初からコメント     アウトした kconfig.ps とする予定です。   3) vfontcap ○使いたい書体の名称をkconfig.psで mincho/gothicとしてるのに、 vfontcapでは msmin/msgoth になっているかも知れません。 一致するようにしてください。 ○ft=truetypeなら、 当該フォントをttindex.exeで処理してないといけません。 拡張子は指定しないように ○ft=freetype(常にこれでいくべし)なら フォントの拡張子まで指定する必要があります。 4) DynaフォントシリーズのTrueTypeでは一部使用できないものがあるとの ことです。動作確認がとれている日本語 TrueType fontsのリストは gs5.10/Patch/man.ps に記載しています。 ■ 自分のプリンタが使えない? gs5.10/Patch/00readme.txtでまず自分のプリンタドライバがないか見当を つける。ついで gs5.10/Patch/gsos2.datでプリンタドライバの名称を 探す。詳しい使用法を記載しているファイルはこれら 2つの文書を読むと わかります。 ○ プリンタドライバーの更新を忘れてませんか? gs5.10/Patch/printer.ini を gsview/printer.iniに上書きして、 gsviewを開いて、[options][configure]を実行してから再起動。 [options][configure ghostscript]で設定を確認。 これでこのたびコンパイルしたghostscriptのプリンタドライバが 使い易くなります。 gsviewでのプリンタドライバの更新をやらなくても > gsos2 -h とするとドライバの名前がわかるので、それをもとにコマンドライン で文書を印刷することができます。オプション指定の方法はオリジナル に付属する use.txt, devices.txtおよび gs5.10/Patch/*.* を参照 のこと。 ■ 日本語 PDF や非日本語PDFでフォントに関連したエラー GSVIEWのエラーメッセージをみて、それがフォント名の問題であれば解決でき ることが多いです。 □ 欧文フォントの場合 Can't find (or can't open) font file HelveticaNeue-MediumCond. Scanning c:\psfonts for fonts...Unrecoverable error: invalidexit in stop Operand stack: HelveticaNeue-MediumCond --nostringval-- --nostringval-- 1 HelveticaNeue-MediumCond このように、欧文フォントがオープンできないときは、gs5.10/Fontmapに別名定義 を追加すると解決します。 /HelveticaNeue-MediumCond /Helvetica; の一行を追加すると、既に存在する /Helvetica (helv.pfb) ; にしたがって、helv.pfb(OS/2付属のフォント)を用いることになりエラーがでなく なります。 これまで私が解決した例を列挙しますと、 ○Century-Lightがオープンできない時、 /Century-Light /CenturySchL-Roma ; の一行を追加。これは既にある /CenturySchL-Roma (c059013l.pfb) ; という行でわかるように、ghostscript一式に含まれる c0590131.pfbを指定する ことになります。 ○Futura-Condensed でエラーになった時 /Futura-Condensed (arial.ttf); 私が Web においてあるghostscriptは欧文TrueTypeに対応しているので、 このようにTrueTypeフォントを指定しています。 このように別名定義で解決してもいいし、フォントの実体を指定してもオーケー。 ちなみに日本語 ACROBAT READER 3.0J の案内である Acrobat3.0j.pdfは欧文 フォントエラーが、一つ解決すると新たにエラーが出まして、五回目にやっと 表示できました。 /Frutiger-Bold (b018015l.pfb); /Frutiger-Light (b018012l.pfb); /Frutiger-LightItalic (b018032l.pfb); /Frutiger-Roman (times.ttf); /AdobeCorpID-MyriadPkg (helv.pfb); 最終的にこのような五行を追加。(b0180321.pfbが何かは Fontmap をみれば わかります) ■ 日本語フォントの場合 これは本日 Niftyのインタネットサービスで300円かけてダウンロードした 神奈川県の鉄道地図(ktetudou.pdf)を読みこんだ時のエラーメッセージ。 Can't find CIDFont `/Rodin-Demi'(CIDFontType 0). Substituting Ryumin-Light for `/Rodin-Demi'. Can't find CIDFont `/Rodin-Bold'(CIDFontType 0). Substituting Ryumin-Light for `/Rodin-Bold'. Can't find CIDFont `/Matisse-Bold'(CIDFontType 0). Substituting Ryumin-Light for `/Matisse-Bold'. Can't find CIDFont `/Seurat-DemiBold'(CIDFontType 0). Substituting Ryumin-Light for `/Seurat-DemiBold'. Unrecoverable error: invalidexit in stop これは、CIDフォントがみつからないということで、日本語フォントという ことがわかります。このような場合は、Fontmapで指定してはいけません。 別名定義は何段階連鎖してもいいのですが、最後にはフォントの実体を差さないと いけないからです。したがって、日本語フォントの場合は kconfig.psで別名定義 します。 /Rodin-Demi /GothicBBB-Medium substcidfont /Rodin-Bold /Ryumin-Light substcidfont /Matisse-Bold /Ryumin-Light substcidfont /Seurat-DemiBold /GothicBBB-Medium substcidfont このようにしたら、フォントに関するエラーはなくなりました。しかしながら、 何やら別の理由でエラーとなり今のところ読めません。とは言え、このような ことは例外的でほとんどの例でちゃんと読むことが出来ます。 □ PDFファイルが使用しているフォント名とエンコーディングを知る方法 私は上記のごとく一つ一つ Fontmapないしkconfig.psで定義を追加して ましたが、今はもっと系統的にやっています。binary filesのテキストを表示 するユーティリティを用いればいいのです。hobbesなどにいろいろなのがあり そうですが、私は emx/gcc にソースがついてくるので string.exe をメイク して使っています。 検索する文字列は, Encoging と Font (大文字・小文字を区別)なので、 ------- font.grep ------------ Encoding Font --------------------------- このような二行よりなるテキストファイルを作成。 例えば、Acrobat3.0j.pdf ですと、コマンドラインで $ strings Acrobat3_0J.pdf |grep -f font.grep > font-info.dat このようにすると以下のごとくフォント情報が簡単にわかります。 /Type /FontDescriptor /FontBBox [ -143 -250 1031 917 ] /FontName /Frutiger-LightItalic /Type /Font /Encoding /MacRomanEncoding /BaseFont /Frutiger-LightItalic /FontDescriptor 12 0 R /Type /Font /Encoding /MacRomanEncoding /BaseFont /Frutiger-Light /FontDescriptor 20 0 R /Type /Font /Encoding /MacRomanEncoding /BaseFont /Frutiger-Roman /FontDescriptor 16 0 R /Type /FontDescriptor /FontBBox [ -169 -250 1000 935 ] /FontName /Frutiger-Roman /Type /Font /Encoding /MacRomanEncoding /BaseFont /Frutiger-Light /FontDescriptor 20 0 R /Type /FontDescriptor /FontBBox [ -45 -250 970 828 ] /FontName /AdobeCorpID-MyriadPkg /Type /Font /Encoding /MacRomanEncoding /BaseFont /AdobeCorpID-MyriadPkg /FontDescriptor 18 0 R /Type /FontDescriptor /FontBBox [ -152 -250 1000 911 ] /FontName /Frutiger-Light /Type /Font /Encoding /MacRomanEncoding /BaseFont /Frutiger-Bold /FontDescriptor 22 0 R /Type /FontDescriptor /FontBBox [ -166 -250 1000 935 ] /FontName /Frutiger-Bold /Type /Font /BaseFont /ShinGo-Ultra-Identity-H /Encoding /Identity-H /DescendantFonts [ 49 0 R ] /Type /Font /BaseFont /ShinGo-Medium-Identity-H /Encoding /Identity-H /DescendantFonts [ 52 0 R ] /Type /Font /BaseFont /ShinGo-Light-Identity-H /Encoding /Identity-H /DescendantFonts [ 50 0 R ] /Type /Font /Encoding /MacRomanEncoding /BaseFont /Frutiger-Bold /FontDescriptor 22 0 R /Type /Font /BaseFont /ShinGo-regular-Identity-H /Encoding /Identity-H /DescendantFonts [ 48 0 R ] /Type /Font /Encoding /MacRomanEncoding /BaseFont /Frutiger-Roman /FontDescriptor 16 0 R /Type /Font /Encoding /MacRomanEncoding /BaseFont /AdobeCorpID-MyriadPkg /FontDescriptor 18 0 R /Type /Font /Encoding /MacRomanEncoding /BaseFont /Frutiger-LightItalic /FontDescriptor 12 0 R /Type /FontDescriptor /FontBBox [ -65 -195 1005 1065 ] /FontName /ShinGo-Ultra /Type /Font /Subtype /CIDFontType0 /BaseFont /ShinGo-regular /FontDescriptor 53 0 R /Type /Font /Subtype /CIDFontType0 /BaseFont /ShinGo-Ultra /FontDescriptor 47 0 R /Type /Font /Subtype /CIDFontType0 /BaseFont /ShinGo-Light /FontDescriptor 54 0 R /Type /FontDescriptor /FontBBox [ -42 -182 1008 1029 ] /FontName /ShinGo-Medium /Type /Font /Subtype /CIDFontType0 /BaseFont /ShinGo-Medium /FontDescriptor 51 0 R /Type /FontDescriptor /FontBBox [ -33 -168 1008 1043 ] /FontName /ShinGo-regular /Type /FontDescriptor /FontBBox [ -16 -188 1005 1023 ] /FontName /ShinGo-Light わかったことは、 MacRomanEncoding: 欧文文字 よって Fontmap で新定義する Identity-H: 日本語フォント kconfig.psで新たに定義を もちろん、CIDFontType0が日本語フォントであることは言うまでもありません。 というわけで、私は PDFファイルの読み込みでフォントのエラーがでたら、 このようにテキストを抽出して、Fontmap/kconfig.ps で一気にすべての定義を 追加しています。 エラーなく表示できればいいというものではないので、美しくバランスの とれた表示にするためには、定義をいろいろと変えて試行錯誤が必要です。 私が Fontmapに追加した定義を add_font.dat というファイルに同梱して ますのでよろしかったら御利用ください。 以上。 1998/9/17 沢田石 順