我正在与一家制造商合作,他们通常习惯从更传统的 Adobe 工具(而不是 LuaLatex)获取 PDF。他们告诉我“确保”我的字体嵌入到.pdf
我提供给他们的文件中。
这个特定的链接说“lualatex 总是嵌入字体”,但作为字形。它还谈到了编辑pdftex.map
以强制嵌入整个字体。我很难找到该文件的位置。在/etc?
[lualatex 是否嵌入字体以实现兼容性?
归根结底,我是一个lualatex
在 Ubuntu 机器上运行 Linux 的人。我希望能够告诉我的制造商“是的,文件包含嵌入字体”。语言障碍有点大,所以我能做的越多越好。
帮助?
我怎么能够:
- 确保 pdf 文件包含完整的嵌入字体?是否有检查工具可以显示这一点?
lualatex
(或)如果我做的不是正确的事情,我需要做什么才能实现这一点
提前致谢。
答案1
要嵌入完整字体,您必须将嵌入模式设置为full
而不是默认的subset
。您可以在patch_font
的回调中执行此luaotfload
操作。请注意,大多数商业字体不允许完全嵌入,而只允许其许可证中的子集嵌入。您还必须重新加载字体,否则回调不会触发。
\documentclass{article}
\usepackage{fontspec}
\usepackage{luacode}
\begin{luacode}
local function embedfull(tfmdata)
tfmdata.embedding = "full"
end
luatexbase.add_to_callback("luaotfload.patch_font", embedfull, "embedfull")
\end{luacode}
\setmainfont{Latin Modern Roman}
\begin{document}
Hello World!
\end{document}
$ pdffonts test.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
LMRoman10-Regular CID Type 0C Identity-H yes no yes 4 0
答案2
您的系统很可能已经pdffonts
(或者您可以获得它)pdffonts
在典型的 luatex 输出上运行
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
SJYSYS+TeXGyreTermes-Regular-Identity-H CID Type 0C Identity-H yes yes yes 5 0
LOMGHQ+TeXGyreTermesMath-Regular-Identity-H CID Type 0C Identity-H yes yes yes 7 0
请注意表示嵌入字体的yes
列emb
。