10.17. dvipdfmx - 轉換 *.dvi 成為不內嵌中文字型的 *.pdf 檔

Copyright (c) 20021 李果正(Edward G.J. Lee )

這是 Jin-Hwan Cho(韓)、Shunsaku Hirata(日) 修改自 Mark A. Wicks 的 dvipdfm 而來的。

主要的功能是轉換 *.dvi 成為不內嵌中文字型的 *.pdf 檔。 一般的英文檔也是可以照常使用(含原有 dvipdfm 的功能)。 不管是可處理 double-byte code 的 Omega 或只能處理 single-byte 使用 subfont 的 CJK package 都可以使用。

最大的好處是可以利用 TeX/LaTeX 來製作中文 pdf 檔, 而且又不內嵌中文字型,可以使檔案小很多(是真的『很多』!:)。 可直接使用 TTF,但會被標記為 use font of acroread 所預設使用的字型(MHei-Medium 及 MSung-Light),這樣雖然不內嵌字型, 但在 acroread/xpdf 都可以正常閱覽,非常方便網路上的流通。 又不必再去花銀子買軟體來製作,更重要的是 TeX/LaTeX 的特殊功能還是可以繼續沿用。

如果和 pslatex 配合使用的話, 那連英文字型及少數特殊符號也會不內嵌,使檔案更小, 當然 mathtime 的一些數學符號並沒有 free 的,這會內嵌 CM 字型。

安裝 print/dvipdfmx

以 bsmi00lp.ttf 為例,安裝好後 $TEXMF/dvipdfm/config/cid-x.map 設為:

arb5sung@Big5@ ETen-B5-H :0:!arb5_sung.ttf
arb5sungs@Big5@ ETen-B5-H :0:!arb5_sung.ttf,Italic
arb5sung@Big5@ ETen-B5-H :0:!arb5_sung.ttf,Bold
arb5sungs@Big5@ ETen-B5-H :0:!arb5_sung.ttf,BoldItalic
arb5kai@Big5@ ETen-B5-H :0:!arb5_kai.ttf
arb5kais@Big5@ ETen-B5-H :0:!arb5_kai.ttf,Italic
arb5kai@Big5@ ETen-B5-H :0:!arb5_kai.ttf,Bold
arb5kais@Big5@ ETen-B5-H :0:!arb5_kai.ttf,BoldItalic
% 但不含 postscript name 的字型則無法使用。去掉 ``!'' 會嵌入 TTF(
% CIDFontType2,或 Type11),不需 *.enc 檔。

另外也有人建議將 ,Italic 改成 -s .167,BoldItalic 改成 ,Bold -s .167 以避免斜體字顯示不正常, 沒有逗點的問題。

Note: 裝完後記得執行 mktexlsr

即可。當然,原先的系統 CJK package 要能夠正常運作 (不管是使用 Type1或 pk 字型),因為需要正確的 *.tfm 字型描述檔。 然後,依照一般正常程序編譯 CJK 文稿即可。

由於並沒有去變造、嵌入字型本身, 所以只要是合法買來的字型應該都可以放心去使用了。

% 我不是律師,可不負擔保責任。:)

讓英文字型也不內嵌:由 *.tex 文稿中,加入:

\usepackage{pslatex}

測試:

% cat cjk.tex
\documentclass{article}
\usepackage{CJK}
\begin{document}
Hello World
\begin{CJK*}{Bg5}{song}
您好
\end{CJK*}
\end{document}
% bg5latex cjk.tex
% dvips -o ps2pdf-cjk.ps cjk.dvi
% ps2pdf ps2pdf-cjk.ps
% dvipdfmx -o dvipdfmx-cjk.pdf cjk.dvi
% cat bg5pslatex
#!/bin/sh
f=`echo $1 | sed -e 's|\(.*\)\.[^/]*$|\1|'`
bg5conv < $1 > $f.cjk && pslatex $f.cjk
% ./bg5pslatex cjk.tex
% dvipdfmx -o pslatex-cjk.pdf cjk.dvi
% pdffonts ps2pdf-cjk.pdf
name                                 type         emb sub uni object ID
------------------------------------ ------------ --- --- --- ---------
[none]                               Type 3       no  no  no       9  0
% pdffonts dvipdfmx-cjk.pdf
name                                 type         emb sub uni object ID
------------------------------------ ------------ --- --- --- ---------
TGRGZY+CMR10                         Type 1       yes yes no      10  0
ZenKai-Medium                        CID TrueType no  no  no      13  0
% pdffonts pslatex-cjk.pdf
name                                 type         emb sub uni object ID
------------------------------------ ------------ --- --- --- ---------
Times-Roman                          Type 1       no  no  no       8  0
ZenKai-Medium                        CID TrueType no  no  no      11  0
% ls -l *.pdf
-rw-r--r--  1 root  wheel  8427  7  6 00:17 dvipdfmx-cjk.pdf
-rw-r--r--  1 root  wheel  5373  7  6 00:17 ps2pdf-cjk.pdf
-rw-r--r--  1 root  wheel  3789  7  6 00:17 pslatex-cjk.pdf

問題:

無法由 pdf2ps/pdftops 來轉成 ps。也就是說一般表機會印不出來。

對策:

可經由 acroread 利用裡頭的 CIDKeyed font 來轉成 ps 檔。 品質相當精良,只是檔案很大就是了。

終究解決方法:

要和 gs 整合在一起。

Figure 10-8. dvipdfmx snapshot

WWW: 我的 CJK - by Edward

WWW: dvipdfmx project