用 Ghostscript 替换字体

放这儿以防止自己忘了…

1. 尽量使用 Acrobat 7 打印 pdf,然后另存成 eps。不要用 Acrobat 9! 同样一个文件,7 出来的 eps 260k,9 出来的 10M… 无数的乱七八糟的信息,bs Adobe 一记。
2. 假定原先的字体是 TimesNewRomanPSMT.*之类的,嵌入之后可能变成 ABCDEF+Times****,仅搜索/…..+Times.*? 然后替换成想要的字体,比如/Minion-Regular
3. 如果愿意,可以搜索 %ADOBeginSubsetFont: …..+Times.* 然后匹配%ADOEndSubsetFont,把嵌入的字体去掉
4. 文件末还可能有 /TJMAAA+TimesNewRomanPS-ItalicMT /Font _pdfUndefineResource ^J /N10 /Font _pdfUndefineResource 之类的,也去掉
5. 用 GSView 看一下,保证字体已经替换好了
6. MikTeX/CTeX 2.8 里面自带了一个 gs…(这实在很让人迷惑),叫做 mgs.exe
7. 如果想用这个,可以去 MikTeXghostscriptbase 相应目录里面去找 Fontmap. 这里面定义了具体指向哪个 Fontmap 文件(默认是.aliases..)
8. 如果不想用,直接把它改个名字,然后把自己的 gswin32c 复制一份叫做 mgs.exe
9. mgs -h 查看文件搜索路径
10. 把 Fontmap.atb 复制一份,叫做 Fontmap
11. 把 Minion 添进去,比如
/Minion-Regular (morg____.pfb) ;
/Minion-Bold (mob_____.pfb) ;
/Minion-Italic (moi_____.pfb) ;
/Minion-BoldItalic (mobi____.pfb) ;
12. 试着用 XeTeX 编译一下吧,应该可以看到替换嵌入的字体了,撒花~
13. 注意,GS 的字体搜索路径要在环境变量 FontResourceDir 中定义。
14. 这种办法的缺点在于,可移植性有点差。

补充一些内容:在 MacTeX 环境下,可以新建 /usr/local/share/ghostscript/8.71/lib/Fontmap 来控制字体名称的匹配。用 gs –help 可以看到字体搜索路径。

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.