我如何验证字体是否全部嵌入到我的 LuaLatex 文档中?

我如何验证字体是否全部嵌入到我的 LuaLatex 文档中?

我正在与一家制造商合作,他们通常习惯从更传统的 Adob​​e 工具(而不是 LuaLatex)获取 PDF。他们告诉我“确保”我的字体嵌入到.pdf我提供给他们的文件中。

这个特定的链接说“lualatex 总是嵌入字体”,但作为字形。它还谈到了编辑pdftex.map以强制嵌入整个字体。我很难找到该文件的位置。在/etc? [lualatex 是否嵌入字体以实现兼容性?

归根结底,我是一个lualatex在 Ubuntu 机器上运行 Linux 的人。我希望能够告诉我的制造商“是的,文件包含嵌入字体”。语言障碍有点大,所以我能做的越多越好。

帮助?

我怎么能够:

  1. 确保 pdf 文件包含完整的嵌入字体?是否有检查工具可以显示这一点?
  2. 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

请注意表示嵌入字体的yesemb

相关内容