簡体中国語の STHeiti-Regular 非埋め込みできない?

簡体中国語の STHeiti-Regular 非埋め込みできない?

- aminophen の投稿
返信数: 10
TeX Live 2016 で試しています。

%#!ptex2pdf -l forum2110
\documentclass{jsarticle}
\usepackage[multi]{otf}
\begin{document}
\gtfamily\UTFC{6392}\UTFC{7248}
\end{document}

デフォルトの状態では、otf-cktx.map が updmap に反映されているので

% CID
otf-ccmr-h Identity-H !STSong-Light
otf-ccmr-v Identity-V !STSong-Light
otf-ccgr-h Identity-H !STHeiti-Regular
otf-ccgr-v Identity-V !STHeiti-Regular

% Unicode
otf-ucmr-h UniGB-UCS2-H !STSong-Light
otf-ucmr-v UniGB-UCS2-V !STSong-Light
otf-ucgr-h UniGB-UCS2-H !STHeiti-Regular
otf-ucgr-v UniGB-UCS2-V !STHeiti-Regular

のようにマップされていると思います。フォント名が ! で始まるので generic name で非埋め込み
にするのだと思いますが…

dvipdfmx:warning: Could not locate a virtual/physical font for TFM "otf-ucgr-h".
dvipdfmx:warning: >> This font is mapped to a physical font "STHeiti-Regular".
dvipdfmx:warning: >> Please check if kpathsea library can find this font: STHeiti-Regular
dvipdfmx:fatal: Cannot proceed without .vf or "physical" font for PDF output...

でエラーになります。\gtfamily を外した場合の STSong-Light 非埋め込みや、\UTFT / \UTFK を
使った繁体中国語や韓国語の非埋め込み、さらに arphic-ttf (on CTAN) のような実フォントに
割り当てた場合は問題なく PDF が出ます。なぜ STHeiti-Regular 非埋め込みだけ NG なのでしょう?
aminophen への返信

Re: 簡体中国語の STHeiti-Regular 非埋め込みできない?

- 和田 勇 の投稿
Linux 用に以前公開されていた Adobe Reader の rpm が、現状は依存関係でインストールできないのでその対策を検討した際にこの問題に遭遇。
お調べになっていると思いますが
http://d.hatena.ne.jp/akane_neko/20110308/1299565986 とかです。

暫定対応として AdobeReader のインストーラから類似フォントを 7zip などで取り出して流用しています。
和田 勇 への返信

Re: 簡体中国語の STHeiti-Regular 非埋め込みできない?

- aminophen の投稿
コメントありがとうございます。
しかし、すでに述べていたとおり実フォント埋め込みは正常なことを確認していて、
本件はそれを踏まえた上での疑問でした。リンクを頂いたのも「実フォントがライセンスの
関係上 PDF に埋め込めない」という問題なので、本件とは無関係です。
dvipdfmx で「STHeiti-Regular 非埋め込みの PDF」が作れないことに困っています。

現在 texjporg でノルベルトさんと私を中心に、いまの TeX Live には収録されていない
「中国語・韓国語の map ファイルと、updmap のそれへの対応」を開発していて
https://github.com/texjporg/jfontmaps/tree/aminophen-cjk
その一環で noEmbed の map が簡体中国語の gt だけ期待どおりに動かないことに気づいたのです。
aminophen への返信

Re: 簡体中国語の STHeiti-Regular 非埋め込みできない?

- 前田 一貴 の投稿
全然詳しくないので予想ですが,
https://texwiki.texjp.org/?LaTeX-CJK#ef120abe
に書いてある通りでしょうか.
dvipdfmx のソースの
https://github.com/texjporg/tex-jp-build/blob/master/source/texk/dvipdfm-x/cid_basefont.h
がこれに対応しているように見えます.
前田 一貴 への返信

Re: 簡体中国語の STHeiti-Regular 非埋め込みできない?

- aminophen の投稿
なるほど、dvipdfmx にハードコードされているべきものが抜けているっぽいですね。
今夜にでもコードを追加して試してみます。
aminophen への返信

Re: 簡体中国語の STHeiti-Regular 非埋め込みできない?

- Akira Kakuto の投稿
よくわかっていませんが,おそらく cid_basefont.h に
それらしいデータがあるか,無いかの差ではないかと思います。
otf-ucgr-h UniGB-UCS2-H !AdobeHeitiStd-Regular
otf-ucgr-v UniGB-UCS2-V !AdobeHeitiStd-Regular
に変更すると,pdf が出力されるのではないかと思います。
Akira Kakuto への返信

Re: 簡体中国語の STHeiti-Regular 非埋め込みできない?

- aminophen の投稿
ありがとうございます。仰る通りの方法で非埋め込み PDF が出てきました。

STHeiti-Regular の方が古くからあり、かつより一般的な generic name です
から、cid_basefont.h に追加しておいたほうがよさそうですね。
aminophen への返信

Re: 簡体中国語の STHeiti-Regular 非埋め込みできない?

- aminophen の投稿
cid_basefont.h に STHeiti-Regular を追加するパッチを書いて
みました。 (20161229-stheiti-base.patch)

Ascent や CapHeight などの値は、Distiller の値を採用していて
信頼性の高そうな replacecjkfonts (中丸さんの Perl スクリプト [1])に
ある値を採用しています。なお、STHeiti-Regular 以外のフォントも
この replacecjkfonts にあわせて修正しました。

win32 でビルドして Adobe Reader で見ると、期待どおり
AdobeHeiti… で代替表示されています。

[1] http://www.eaflux.com/replacecjkfonts/
aminophen への返信

Re: 簡体中国語の STHeiti-Regular 非埋め込みできない?

- Akira Kakuto の投稿
> cid_basefont.h に STHeiti-Regular を追加するパッチを書いて
> みました。 (20161229-stheiti-base.patch)

ありがとうございます。
r42803 として代理コミットしておきました。
aminophen への返信

Re: 簡体中国語の STHeiti-Regular 非埋め込みできない?

- 前田 一貴 の投稿
> フォント名が ! で始まるので generic name で非埋め込み
> にするのだと思いますが…

私の環境だと

$ dvipdfmx -v test.dvi
<FONTMAP:/usr/local/texlive/2016/texmf-var/fonts/map/pdftex/updmap/pdftex.map><FONTMAP:/usr/local/texlive/2016/texmf-var/fonts/map/dvipdfmx/updmap/kanjix.map><FONTMAP:/usr/local/texlive/2016/texmf-dist/fonts/map/dvipdfmx/ckx.map>test.dvi -> test.pdf
DVI Comment:  TeX output 2016.12.29:0903
<AGL:texglyphlist.txt><AGL:pdfglyphlist.txt><AGL:glyphlist.txt>[1<utfcgr6-h@9.21pt(TFM:utfcgr6-h)(VF:utfcgr6-h(TFM:otf-ucgr-h)<otf-ucgr-h@9.21pt(CMap:UniGB-UCS2-H)
pdf_font>> Input encoding "UniGB-UCS2-H" requires at least 2 bytes.
pdf_font>> The -m <00> option will be assumed for "STHeiti-Regular".

dvipdfmx:warning: Could not locate a virtual/physical font for TFM "otf-ucgr-h".
dvipdfmx:warning: >> This font is mapped to a physical font "STHeiti-Regular".
dvipdfmx:warning: >> Please check if kpathsea library can find this font: STHeiti-Regular
dvipdfmx:fatal: Cannot proceed without .vf or "physical" font for PDF output...

Output file removed.

となっています.
/usr/local/texlive/2016/texmf-var/fonts/map/dvipdfmx/updmap/kanjix.map を見ると

% otf-cktx.map
...
otf-ucgr-h UniGB-UCS2-H STHeiti-Regular
otf-ucgr-v UniGB-UCS2-V STHeiti-Regular
otf-ucmr-h UniGB-UCS2-H STSong-Light
otf-ucmr-v UniGB-UCS2-V STSong-Light
...

となっていて,! はついていないようです.
前田 一貴 への返信

Re: 簡体中国語の STHeiti-Regular 非埋め込みできない?

- aminophen の投稿
ああ、すみません。私のところの kanjix.map は開発中の otf-sc-noEmbed.map ベースに
変えてしまっていました。otf-cktx.map は ! 無しですね。