當字體第一次與 一起使用時lualatex
,luaotfload
會產生一些神奇的效果來產生字體快取檔案。
對於大字體(例如,Noto Sans CJK)這可能需要大量時間和大量記憶體。
我有一台運行 Linux 且具有 4GB 交換分區的舊電腦(使用了 5 年的 MacBook Air,配備 4GB RAM)。該字體的初始快取生成可能需要 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}