正如在回答中指出的那样LuaLaTeX 与 XeLaTeX 的 PDF 文件大小对比,在两个文档中使用 Type 1 和 Type 1C 字体的差异导致文件大小有很大差异。
对于我处理的 PDF 文件来说,文件大小非常重要。所以我的问题是,您可以强制 LuaLaTeX 嵌入 Type 1C 字体而不是 Type 1 吗?这是 XeLaTeX 可以做到的(就上述问题而言,它是自动做到的)。
我使用的字体是 Gill Sans MT(我相信它是 Adobe CS 自带的)。虽然我并不反对更改字体,但我仍然想知道 LuaLaTeX 如何决定如何嵌入字体以及如何更改字体。
答案1
我不知道如何让 lualatex 输出 Type 1C 字体。但是,您可以使用 ps2pdf 将包含 Type 1 字体的 PDF 转换为另一个包含 Type1C 字体的 PDF。您应该仔细选择 ps2pdf 的参数。例如:
newell:~/latex/help $ du -h plain.pdf
60K plain.pdf
newell:~/latex/help $ pdffonts plain.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
BZAAVM+NimbusSanL-Bold Type 1 yes yes no 17 0
YCENSD+LMMathItalic12-Regular Type 1 yes yes no 18 0
KDKAQG+CMSS12 Type 1 yes yes no 19 0
IDSSCN+NimbusSanL-Regu Type 1 yes yes no 20 0
ZIJBJP+NimbusSanL-ReguItal Type 1 yes yes no 21 0
SEAJVD+NimbusSanL-BoldItal Type 1 yes yes no 22 0
SQTJQN+LMMathSymbols10-Regular Type 1 yes yes no 23 0
newell:~/latex/help $ ps2pdf -dPDFSETTINGS=/prepress -dAutoRotatePages=/None -dEmbedAllFonts=true -dMaxSubsetPct=100 -dSubsetFonts=true -dAutoFilterColorImages=false -dAutoFilterGrayImages=false -dDownsampleColorImages=false -dDownsampleGrayImages=false -dDownsampleMonoImages=false plain.pdf new.pdf
newell:~/latex/help $ du -h new.pdf
36K new.pdf
newell:~/latex/help $ pdffonts new.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
OJEPRS+NimbusSanL-BoldItal Type 1C yes yes no 23 0
OJIXHX+LMMathSymbols10-Regular Type 1C yes yes no 25 0
CYORGJ+NimbusSanL-Bold Type 1C yes yes no 13 0
MZVUTG+LMMathItalic12-Regular Type 1C yes yes yes 15 0
PWIYDZ+CMSS12 Type 1C yes yes no 17 0
QBTHSF+NimbusSanL-Regu Type 1C yes yes no 19 0
XMYGAL+NimbusSanL-ReguItal Type 1C yes yes no 21 0
答案2
Luatex 永远不会写入 Type1C 字体。如果您使用 OpenType/TrueType 字体而不是 Type1(luatex 会为这些字体写入 CIDType0 字体),那么您将获得较小的 pdf,但除此之外,pstopdf
还有其他选择。除非有人提供补丁,否则这种情况不太可能改变。
答案3
如果您没有因为某些原因而被迫使用 LuaLaTeX,为什么不使用 pdfLaTeX,然后使用强大的 Python 程序缩小 PDF pdfsizeopt.py
?请参见此处:如何创建适合互联网的小型 PDF 文件?