upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

- 北川 弘典 の投稿
返信数: 14
TeX Live 2012 でフォントマップ関連のテストをしていたのですが,
upLaTeX + OTFパッケージで極太ゴシック (gt/eb) を使用した場合,
dvipdfmx で pdf に変換できません:

% gteb.tex
\documentclass[uplatex]{jsarticle}
\usepackage[deluxe,uplatex]{otf}
\begin{document}
\gtfamily\ebseries あ
\end{document}

$ uplatex gteb.tex
This is e-upTeX, Version 3.1415926-p3.3-u1.11-110825-2.5 (utf8.uptex) (TeX Live 2013/dev)
...
Output written on gteb.dvi (1 page, 276 bytes).
Transcript written on gteb.log.
$ dvipdfmx -f otf-up-ipa.map gteb
gteb.dvi -> gteb.pdf
[1
** ERROR ** Unable to find TFM file "0-h".

Output file removed.

upnmlgotheb-h.vf の中身を見てみました:

$ perl /.../disvf.pl /.../upnmlgotheb-h.vf | head -n 15
(VTITLE )
(DESIGNSIZE R 10.000000)
(CHECKSUM O 0)
(MAPFONT D 0
(FONTNAME uphgotheb-h)
(FONTCHECKSUM O 0)
(FONTAT R 1.000000)
(FONTDSIZE R 10.000000)
)
(MAPFONT D 1
(FONTNAME 0-h)
(FONTCHECKSUM O 0)
(FONTAT R 1.000000)
(FONTDSIZE R 10.000000)
)

upnmlgothb-h.vf の対応するところは cidjgb0-h なので,
\CID が極太ゴシックに対応していないのが原因でしょうか.
北川 弘典 への返信

Re: upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

- Akira Kakuto の投稿
> upnmlgothb-h.vf の対応するところは cidjgb0-h なので,

umkjvf の 562 行近辺に
 }elsif($kanji_font =~ /hgotheb/){
は無いようです。

Akira Kakuto への返信

Re: upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

- Akira Kakuto の投稿
 }elsif($kanji_font =~ /hgothb/){
 $face="cidjgb";
 }elsif($kanji_font =~ /hgotheb/){
 $face="cidjgb";

のように両方とも cidjgb を指定するとまずいでしょうか?
(未テスト。まずいのでしょうね。)

北川 弘典 への返信

Re: upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

- 北川 弘典 の投稿
\CID, \UTF 等を極太ゴシックにも対応させてみました.
あまりテストしてないので,正しいのかどうかは不安ですが…….

https://gist.github.com/h-kitagawa/5252841
北川 弘典 への返信

Re: upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

- Norbert Preining の投稿
Hi,

I tried your script, rebuild both tfm/vf for otf and otf-uptex, copied all the tfm/vf/o* files into the same directory as the test file, and got the following output:
kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 0+555/600 --dpi 555 otf-cjge-h
mktexpk: don't know how to create bitmap font for otf-cjge-h.
mktexpk: perhaps otf-cjge-h is missing from the map file.
kpathsea: Appending font creation commands to missfont.log.
** WARNING ** Could not locate a virtual/physical font for TFM "otf-cjge-h".
** WARNING ** >> There are no valid font mapping entry for this font.
** WARNING ** >> Font file name "otf-cjge-h" was assumed but failed to locate that font.
** ERROR ** Cannot proceed without .vf or "physical" font for PDF output...

Output file removed.

Norbert Preining への返信

Re: upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

- 北川 弘典 の投稿
> mktexpk: don't know how to create bitmap font for otf-cjge-h.
Sorry, I forgot to mention mapfiles.
We should add eight lines, such as the following:

otf-cjge-h Identity-H KozGoPro-Heavy.otf
otf-cjge-v Identity-V KozGoPro-Heavy.otf
otf-ujge-h UniJIS-UTF16-H KozGoPro-Heavy.otf
otf-ujge-v UniJIS-UTF16-V KozGoPro-Heavy.otf
otf-ujgen-h UniJIS2004-UTF16-H KozGoPro-Heavy.otf
otf-ujgen-v UniJIS2004-UTF16-V KozGoPro-Heavy.otf
hgothebn-h H KozGoPro-Heavy.otf
hgothebn-v V KozGoPro-Heavy.otf

(I added this to the gist.)
北川 弘典 への返信

Re: upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

- Norbert Preining の投稿
Nearly there, we need also some definitions for uptex. After adding the map lines I get:

kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 0+555/600 --dpi 555 uphgotheb-h
mktexpk: don't know how to create bitmap font for uphgotheb-h.
mktexpk: perhaps uphgotheb-h is missing from the map file.


Norbert Preining への返信

Re: upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

- 北川 弘典 の投稿
uphgotheb-{h,v}.tfm already exist in japanese-otf-uptex.
But otf-up-{kozuka*,morisawa*}.map lack entries for them:

$ grep hgotheb-[hv] otf-up-*.map
otf-up-hiragino.map:uphgotheb-h UniJIS-UTF16-H HiraKakuStd-W8
otf-up-hiragino.map:uphgotheb-v UniJIS-UTF16-V HiraKakuStd-W8
otf-up-ipa.map:uphgotheb-h UniJIS-UTF16-H ipag.ttf
otf-up-ipa.map:uphgotheb-v UniJIS-UTF16-V ipag.ttf
otf-up-ipaex.map:uphgotheb-h UniJIS-UTF16-H ipaexg.ttf
otf-up-ipaex.map:uphgotheb-v UniJIS-UTF16-V ipaexg.ttf

Entries for uphgotheb-{h,v}.tfm are also missing in otf-up-{kozuka*,morisawa*}.map:

$ grep hminl-[hv] otf-up-*.map
otf-up-hiragino.map:uphminl-h UniJIS-UTF16-H HiraMinPro-W2
otf-up-hiragino.map:uphminl-v UniJIS-UTF16-V HiraMinPro-W2
otf-up-ipa.map:uphminl-h UniJIS-UTF16-H ipam.ttf
otf-up-ipa.map:uphminl-v UniJIS-UTF16-V ipam.ttf
otf-up-ipaex.map:uphminl-h UniJIS-UTF16-H ipaexm.ttf
otf-up-ipaex.map:uphminl-v UniJIS-UTF16-V ipaexm.ttf

北川 弘典 への返信

Re: upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

- Norbert Preining の投稿
Thanks. Can you fix all that in the jfontmaps git repository and send me a merge request, please? (Did you get the email about new font maps and jis2004?)

Norbert
北川 弘典 への返信

Re: upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

- Norbert Preining の投稿
For kozuka would that be the correct definition:
uphgotheb-h UniJIS-UTF16-H KozGoPro-Bold.otf
uphgotheb-v UniJIS-UTF16-V KozGoPro-Bold.otf
uphminl-h UniJIS-UTF16-H KozMinPro-Regular.otf
uphminl-v UniJIS-UTF16-V KozMinPro-Regular.otf
?
北川 弘典 への返信

Re: upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

- t tk の投稿
北川さん、ご検討ありがとうございました。
大分間があいてしまいましたが、
otfbeta-uptex Ver0.12を出しました。
upTeXのページ に置いてあります。

gt/eb対応は北川さんのパッチにほぼ従わせていただきました。

ついでに jis2004 オプションに対応しました。
jis2004,uplatexオプション用のvf, tfmは、36.1Mbytesのディスクを消耗します。
それだけの価値があるとは思えないところも私にはあります。
新しいvf,tfmを利用せず、
従来のvf,tfmに対応させるCMapを"UniJIS2004-UTF16-{H,V}"にする方法でも、
結果としては同じ組版結果が得られます。

オプションの組合せが増えるたびにvf,tfmの容量が巨大になり続けるのに疑問も覚えます。
vfのフォーマットが情報量の割にディスクを食うものになっているのが痛いところです。
dviwareまで巻き込んだ改造を提案するかどうか、という話になってしまいますが。

現在CTANにある japanese-otf では、
gt/eb と jis2004 オプションの組合せ用のvf, tfmが生成されているのにもかかわらず、
gt/eb に対し jis2004 オプションが有効に働かないようです。
それに関連し otf.sty の変更も、今回対応しています。
t tk への返信

Re: upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

- Z. R. の投稿
vfのフォーマットが情報量の割にディスクを食うものになっているのが痛いところです。
dviwareまで巻き込んだ改造を提案するかどうか、という話になってしまいますが。

DVIウェアが「圧縮(gzip 等)された vf ファイル」も読めるようにする、という方法が考えられます。確か、LuaTeX は gzip 圧縮された tfm/vf ファイルを読めたはずです。

特に、pTeX/upTeX の vf ファイルを xz で圧縮すると多くの場合元の 1%以下のサイズになるのでかなり効果的だと思います。

ただこれだと、全ての DVI ウェアが対応した状態にならないと結局圧縮ファイルに移行できない。そこで次のような方法を考えてみました。

圧縮ファイルを配置する。そして、Kpathsearch でファイル検索した際に、「当該ファイルは見つからないが圧縮ファイルが見つかった」場合は、圧縮ファイルを伸長し(TEXMFVAR等に)出力し、そのファイルを検索結果に返す。

これだと、DVI ウェアに手を加える必要がなく、また「そのファイルを使わない」人はディスク容量を消費しなくて済みます。

今思いついた方法なので、どのくらい実現可能性があるかは不明ですが。

Z. R. への返信

Re: upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

- t tk の投稿
DVIウェアが「圧縮(xz)された vf ファイル」も読めるようにする、
のパッチを試しに書いてみました。
TeX Live svn r35081 に対するパッチで、kpathsearch, dvipsk, dvipdfm-xに当てるものです。思ったより小さなパッチで済みました。
hoge.vf を見つけたら普通にfopenしますが、hoge.vf を見つけられず hoge.vf.xz を見つけたら、"xz -d -c hoge.xz" でpopenします。
私の手元ではなんとなく動いているようですが、勇気のある方は人柱になってくださると助かります。

ただこれだと、全ての DVI ウェアが対応した状態にならないと結局圧縮ファイルに移行できない。

この通りですが、
他に圧縮されたvfファイルを読む可能性のある dviware を地道に対応していけばよいな、と考えています。
対応すべき dviware の候補があれば教えてください。

「…圧縮ファイルが見つかった」場合は、圧縮ファイルを伸長し…

これは複雑すぎるので私としては試してみる元気が出ませんでした。あしからず。

t tk への返信

Re: upLaTeX + OTF で極太ゴシックを使うと pdf に変換できない

- Akira Kakuto の投稿
保守的ですが,配布状態は TeX Live も tar.xz に
なっているので,現状のディスク状態を考えて単純さ
を優先して触らないというのはどうでしょうか?