2018年4月3日星期二

让 macOS 里编译的 CTeX 文档中仿宋字体在 Windows 里不要乱码

MacTex 里直接用 CTeX 文类的 \fangsong 命令的话,会默认使用华文仿宋字体(STFangsong)。
这样的文件用 latexmk 编译得到的 pdf 会在 windows 里乱码,不能显示其中的仿宋字体。
但直接用 xelatex 编译并不会如此。

经 @johannes_gutenberg 告知,实际上 latexmk 在编译时有两步:
1. tex -> xdv
xelatex -no-pdf [...] input.tex
可能编译多次

2. xdv -> pdf
xdvipdfmx input.xdv

而第二步中,这个华文仿宋字体由于版权(?)原因,不会被嵌入到 pdf 内。
可以显示使用 -E 选项要求 xdvipdfmx 嵌入字体。

对于 latexmk,则可以如下操作:
1. 工作目录新建空文件 latexmkrc
2. 其中内容写上 $xdvipdfmx="xdvipdfmx -E -o %D %O %S"
就可以让 latexmk 生成 pdf 时总嵌入字体。