当字体第一次与一起使用时lualatex
,luaotfload
会发挥一些神奇的作用来生成字体缓存文件。
对于大字体(例如,Noto Sans CJK) 这会耗费大量时间和内存。
我有一台旧电脑(5 年前的 MacBook Air,4GB RAM),运行 Linux,交换分区为 4GB。此字体的初始缓存生成可能需要 15 分钟以上,导致我的电脑无法使用。有时我会耗尽内存,然后进程就会终止。
假设我想使用这样的字体:
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Script=CJK,Language=Chinese Simplified]{Noto Sans CJK SC}
\begin{document}
中文
\end{document}
生成所需缓存文件的最耗资源方式和/或最快方式是什么?
目前,我退出所有内容(甚至 X11)并lualatex
从控制台运行,但仍然需要很长时间,并且退出所有内容有点麻烦。
答案1
您可以按照第 9.2.1 节“修剪字体”中的建议进行操作ConTeXt 之外的字体并删除字体中的所有字形名称。
适应 LaTeX 和您的示例:
\documentclass{article}
\usepackage{fontspec,luacode}
\begin{luacode*}
fonts.handlers.otf.readers.registerextender {
name = "remove names from Noto Sans CJK SC",
action = function(fontdata)
if string.match(fontdata.metadata.fullname, "Noto Sans CJK SC") then
texio.write_nl("Trimming font " .. fontdata.metadata.fullname)
for k, v in next, fontdata.descriptions do
v.name = nil
end
end
end
}
\end{luacode*}
\setmainfont[Script=CJK,Language=Chinese Simplified]{Noto Sans CJK SC}
\begin{document}
中文
\end{document}