Ghostscriptのために日本語フォントをインストールする

2019-07-20

KDE neonを使おう

t f B! P L
muonで確認するとGhostscriptはすでに9.26がインストールされていました。

日本語フォントがまだインストールされていないようなのでインストールします。

日本語フォントIPAexのインストール


UnicodeのVariation Selector(VS)を使えば、漢字の異字体を簡単に入力できることがわかりました。異体字を使うには異体字のフォントと、異体字に対応したアプリケーションが必要です。LibreOfficeはVSに対応していました。 前の関連記事: Libr...
ここで使ったIPAexフォントをインストールします。


muonでipaexを検索して出てくるfonts-ipexfontをインストールするとゴシック体と明朝体の両方をインストールできます。

IPAexフォントのバージョンは003.01でした。

/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf
/usr/share/fonts/opentype/ipaexfont-mincho/ipaexm.ttf

この2つのファイルがインストールされ、それぞれ次のシンボリックリンクが作成されました。

/usr/share/fonts/truetype/fonts-japanese-mincho.ttf
/usr/share/fonts/truetype/fonts-japanese-gothic.ttf

GhostScriptの/var/lib/ghostscript/fonts/cidfmapではこの2つのシンボリックリンクを使うようになっています。

フォント名を一覧を取得する


PostScriptでフォントを呼び出す名前を確認します。

gs
(*) { == } 256 string /Font resourceforall

このコマンドで使えるフォント一覧が取得できます(フォント(覚え書き) - you/uni/ps)。

IPAexフォントのインストール前は177個だったフォント名が、721個に増えていました。

2種類のフォントをインストールしただけなのに、544個もフォント名が増えています。

これは代替フォント名が指定されているからです。

日本語の代替フォント名は/var/lib/ghostscript/fontsにあるcidfmapファイルで確認できます。
/Japanese-Mincho-Regular << /FileType /TrueType /Path (/usr/share/fonts/truetype/fonts-japanese-mincho.ttf) /SubfontID 0 /CSI [(Japan1) 4] >> ;
/Japanese-Gothic-Regular << /FileType /TrueType /Path (/usr/share/fonts/truetype/fonts-japanese-gothic.ttf) /SubfontID 0 /CSI [(Japan1) 4] >> ;
/Ryumin-Light /Japanese-Mincho-Regular ;
/Adobe-Japan1 /Japanese-Mincho-Regular ;
/HeiseiMin-W3 /Japanese-Mincho-Regular ;
/GothicBBB-Medium /Japanese-Gothic-Regular ;
/Adobe-Japan1-Bold /Japanese-Gothic-Regular ;
/HeiseiKakuGo-W5 /Japanese-Gothic-Regular ;
/Japanese-Mincho-Regular-JaH << /FileType /TrueType /Path (/usr/share/fonts/truetype/ttf-japanese-mincho.ttf) /SubfontID 0 /CSI [(Japan2) 4] >> ;
/Japanese-Gothic-Regular-JaH << /FileType /TrueType /Path (/usr/share/fonts/truetype/ttf-japanese-gothic.ttf) /SubfontID 0 /CSI [(Japan2) 4] >> ;
/Adobe-Japan2 /Japanese-Mincho-Regular-JaH ;
/Adobe-Japan2-Bold /Japanese-Gothic-Regular-JaH ;
日本語の部分だけ抜き出しました。

fonts-japanese-mincho.ttfはJapanese-Mincho-Regularという名前に割り当てられ、Ryumin-LightとAdobe-Japan1、HeiseiMin-W3にも同じフォントが使われることがわかります。

Japanese-Gothic-RegularはJapanese-Gothic-Regularという名前が割り当てられ、GothicBBB-MediumとAdobe-Japan1-Bold、HeiseiKakuGo-W5にも同じフォントが使われることがわかります。

ttf-japanese-mincho.ttfとttf-japanese-gothic.ttfはインストールしていないので使えません、、、CID (文字コード) - Wikipediaを読むとAdobe-Japan2-4なんてのは存在しないみたいななのですけど、、、

実際にPostScriptで呼び出すときはJapanese-Mincho-RegularやJapanese-Gothic-Regularは無理で、(*) { == } 256 string /Font resourceforallで確認できるフォント名で呼び出さないといけません。

Japanese-Mincho-Regularの呼び出し可能なフォント名だけで68個もあります。
(Japanese-Mincho-Regular-78-EUC-H) 
(Japanese-Mincho-Regular-78-EUC-V) 
(Japanese-Mincho-Regular-78-H) 
(Japanese-Mincho-Regular-78-RKSJ-H) 
(Japanese-Mincho-Regular-78-RKSJ-V) 
(Japanese-Mincho-Regular-78-V) 
(Japanese-Mincho-Regular-78ms-RKSJ-H) 
(Japanese-Mincho-Regular-78ms-RKSJ-V) 
(Japanese-Mincho-Regular-83pv-RKSJ-H) 
(Japanese-Mincho-Regular-90ms-RKSJ-H) 
(Japanese-Mincho-Regular-90ms-RKSJ-V) 
(Japanese-Mincho-Regular-90msp-RKSJ-H) 
(Japanese-Mincho-Regular-90msp-RKSJ-V) 
(Japanese-Mincho-Regular-90pv-RKSJ-H) 
(Japanese-Mincho-Regular-90pv-RKSJ-V) 
(Japanese-Mincho-Regular-Add-H) 
(Japanese-Mincho-Regular-Add-RKSJ-H) 
(Japanese-Mincho-Regular-Add-RKSJ-V) 
(Japanese-Mincho-Regular-Add-V) 
(Japanese-Mincho-Regular-Adobe-Japan1-0) 
(Japanese-Mincho-Regular-Adobe-Japan1-1) 
(Japanese-Mincho-Regular-Adobe-Japan1-2) 
(Japanese-Mincho-Regular-Adobe-Japan1-3) 
(Japanese-Mincho-Regular-Adobe-Japan1-4) 
(Japanese-Mincho-Regular-Adobe-Japan1-5) 
(Japanese-Mincho-Regular-Adobe-Japan1-6) 
(Japanese-Mincho-Regular-EUC-H) 
(Japanese-Mincho-Regular-EUC-V) 
(Japanese-Mincho-Regular-Ext-H) 
(Japanese-Mincho-Regular-Ext-RKSJ-H) 
(Japanese-Mincho-Regular-Ext-RKSJ-V) 
(Japanese-Mincho-Regular-Ext-V) 
(Japanese-Mincho-Regular-H) 
(Japanese-Mincho-Regular-Hankaku) 
(Japanese-Mincho-Regular-Hiragana) 
(Japanese-Mincho-Regular-Identity-H) 
(Japanese-Mincho-Regular-Identity-V) 
(Japanese-Mincho-Regular-Katakana) 
(Japanese-Mincho-Regular-NWP-H) 
(Japanese-Mincho-Regular-NWP-V) 
(Japanese-Mincho-Regular-RKSJ-H) 
(Japanese-Mincho-Regular-RKSJ-V) 
(Japanese-Mincho-Regular-Roman) 
(Japanese-Mincho-Regular-UniJIS-UCS2-H) 
(Japanese-Mincho-Regular-UniJIS-UCS2-HW-H) 
(Japanese-Mincho-Regular-UniJIS-UCS2-HW-V) 
(Japanese-Mincho-Regular-UniJIS-UCS2-V) 
(Japanese-Mincho-Regular-UniJIS-UTF16-H) 
(Japanese-Mincho-Regular-UniJIS-UTF16-V) 
(Japanese-Mincho-Regular-UniJIS-UTF32-H) 
(Japanese-Mincho-Regular-UniJIS-UTF32-V) 
(Japanese-Mincho-Regular-UniJIS-UTF8-H) 
(Japanese-Mincho-Regular-UniJIS-UTF8-V) 
(Japanese-Mincho-Regular-UniJIS2004-UTF16-H) 
(Japanese-Mincho-Regular-UniJIS2004-UTF16-V) 
(Japanese-Mincho-Regular-UniJIS2004-UTF32-H) 
(Japanese-Mincho-Regular-UniJIS2004-UTF32-V) 
(Japanese-Mincho-Regular-UniJIS2004-UTF8-H) 
(Japanese-Mincho-Regular-UniJIS2004-UTF8-V) 
(Japanese-Mincho-Regular-UniJISPro-UCS2-HW-V) 
(Japanese-Mincho-Regular-UniJISPro-UCS2-V) 
(Japanese-Mincho-Regular-UniJISPro-UTF8-V) 
(Japanese-Mincho-Regular-UniJISX0213-UTF32-H) 
(Japanese-Mincho-Regular-UniJISX0213-UTF32-V) 
(Japanese-Mincho-Regular-UniJISX02132004-UTF32-H) 
(Japanese-Mincho-Regular-UniJISX02132004-UTF32-V) 
(Japanese-Mincho-Regular-V) 
(Japanese-Mincho-Regular-WP-Symbol) 
どのフォント名で呼び出しても同じフォント(グリフ)になるはずですが、呼び出せる条件が違うようです。

例えば、KDE neonのKonsoleで実行すると次のようになりました。

Japanese-Mincho-Regular-Hは何も表示されませんでした。

Japanese-Mincho-Regular-UniJIS-UTF16-Hだと化け文字になりました。

Japanese-Mincho-Regular-UniJIS-UTF8-Hは正しく表示されました。

-Hは横書き、-Vは縦書き、-90ms-RKSJはシフトJIS、-EUCはEUC、-UniJIS-UCS2はUTF-16ビッグエンディアン、-UniJIS-UTF8はUTF-8を意味するようです(Cygwin + Ghostscript + Windows TrueTypeフォント - you/uni)。

日本語フォントIPAexを呼び出せるフォント名


KDE neonで日本語フォントIPAexを呼び出すフォント名は次の4つになるはずです。

描画結果はgsの起動時にでてくるウィンドウ(Current Page)のものです。

縦書きは漢字が旧字体になったりカタカナが半角になったりしてしまいました。

明朝体横書き


Japanese-Mincho-Regular-UniJIS-UTF8-H
pq@pq-VirtualBox:~$ gs
GPL Ghostscript 9.26 (2018-11-20)
Copyright (C) 2018 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
GS>/Japanese-Mincho-Regular-UniJIS-UTF8-H findfont 50 scalefont setfont
Querying operating system for font files...
Loading a TT font from /usr/share/fonts/truetype/fonts-japanese-mincho.ttf to emulate a CID font Japanese-Mincho-Regular ... Done.
GS>50 500 moveto
GS>(明朝体横書き) show
GS>quit

明朝体縦書き


Japanese-Mincho-Regular-UniJIS-UTF8-V
pq@pq-VirtualBox:~$ gs
GPL Ghostscript 9.26 (2018-11-20)
Copyright (C) 2018 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
GS>/Japanese-Mincho-Regular-UniJIS-UTF8-V findfont 50 scalefont setfont
Querying operating system for font files...
Loading a TT font from /usr/share/fonts/truetype/fonts-japanese-mincho.ttf to emulate a CID font Japanese-Mincho-Regular ... Done.
GS>50 500 moveto
GS>(明朝体縦書き) show
GS>quit

縦書きにはなりましたが、漢字が旧字体になってしまっています。

ゴシック体横書き


Japanese-Gothic-Regular-UniJIS-UTF8-H
pq@pq-VirtualBox:~$ gs
GPL Ghostscript 9.26 (2018-11-20)
Copyright (C) 2018 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
GS>/Japanese-Gothic-Regular-UniJIS-UTF8-H findfont 50 scalefont setfont
Querying operating system for font files...
Loading a TT font from /usr/share/fonts/truetype/fonts-japanese-gothic.ttf to emulate a CID font Japanese-Gothic-Regular ... Done.
GS>50 500 moveto
GS>(ゴシック体横書き) show
GS>quit

ゴシック体縦書き


Japanese-Gothic-Regular-UniJIS-UTF8-V
pq@pq-VirtualBox:~$ gs
GPL Ghostscript 9.26 (2018-11-20)
Copyright (C) 2018 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
GS>/Japanese-Gothic-Regular-UniJIS-UTF8-V findfont 50 scalefont setfont
Querying operating system for font files...
Loading a TT font from /usr/share/fonts/truetype/fonts-japanese-gothic.ttf to emulate a CID font Japanese-Gothic-Regular ... Done.
GS>50 500 moveto
GS>(ゴシック体縦書き) show
GS>quit

漢字が旧字体なのと、カタカナが半角と全角が混じってしまっています。

LibreOffice WriterでIPAexゴシックで縦書きにしてもこのような問題は起こらないので、フォントの問題ではないようです。

Noto CJKフォントのttcファイルからは呼び出せず


/usr/share/fonts/opentype/noto/にあるttcファイルを呼び出すようにしてみます。

/var/lib/ghostscript/fontsにあるcidfmapファイルに次の2行を追加しました。
/NotoSansCJK-Regular << /FileType /TrueType /Path (/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc) /SubfontID 0 /CSI [(Japan1) 6] >> ;
/NotoSerifCJK-Regular << /FileType /TrueType /Path (/usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc) /SubfontID 0 /CSI [(Japan1) 6] >> ;
NotoSansCJK-Regular.ttcにあるフォントをNotoSansCJK-Regular、NotoSerifCJK-Regular.ttcをNotoSerifCJK-Regularというフォント名にしています。

Noto CJKはAdobe-Japan1-6なので(Noto CJK – Google Noto Fonts)、/CSI [(Japan1) 6 としています。

(*) { == } 256 string /Font resourceforallで呼び出せるフォト名を確認するとちゃんとNotoSansCJKで始まるフォント名がでてきます。

/NotoSansCJK-Regular-UniJIS-UTF8-H
/NotoSansCJK-Regular-UniJIS-UTF8-V
/NotoSerifCJK-Regular-UniJIS-UTF8-H
/NotoSerifCJK-Regular-UniJIS-UTF8-V

これらでNoto CJKフォントが使えると思ったのですが無理でした、、、
pq@pq-VirtualBox:~$ gs
GPL Ghostscript 9.26 (2018-11-20)
Copyright (C) 2018 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
GS>/NotoSansCJK-Regular-UniJIS-UTF8-H findfont
Querying operating system for font files...
Loading a TT font from /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc to emulate a CID font NotoSansCJK-Regular ... Done.
Error: /invalidfont in /findfont
Operand stack:
   NotoSansCJK-Regular-UniJIS-UTF8-H
Execution stack:
   %interp_exit   .runexec2   --nostringval--   .findfontop   --nostringval--   2   %stopped_push   --nostringval--   .findfontop   %loop_continue   .findfontop   .findfontop   false   1   %stopped_push   .runexec2   --nostringval--   .findfontop   --nostringval--   2   %stopped_push   --nostringval--   1975   1   3   %oparray_pop
Dictionary stack:
   --dict:968/1684(ro)(G)--   --dict:0/20(G)--   --dict:77/200(L)--
Current allocation mode is local
Current file position is 44
GS<1>
/invalidfontと言われてしまいます。

これはGhostscriptがOpenType Collectionに対応していないのが原因のようです(Bugs - Ghostscript crashes on Japanese characters on Ubuntu 16.04)。

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ