為新字體產生 luatex 字體快取的資源消耗最少的方法是什麼?

為新字體產生 luatex 字體快取的資源消耗最少的方法是什麼?

當字體第一次與 一起使用時lualatexluaotfload會產生一些神奇的效果來產生字體快取檔案。

對於大字體(例如,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}

相關內容