新しいフォントの luatex フォント キャッシュを生成するための、リソースを最も消費しない方法は何ですか?

新しいフォントの luatex フォント キャッシュを生成するための、リソースを最も消費しない方法は何ですか?

フォントが で初めて使用されるとlualatexluaotfloadはフォント キャッシュ ファイルを生成するために何らかの魔法を実行します。

大きなフォント(例:Noto Sans CJK) これには多くの時間とメモリが必要になる場合があります。

私は古いコンピューター (5 年前の MacBook air、4GB RAM) を所有しており、4GB のスワップ パーティションで Linux を実行しています。このフォントの初期キャッシュ生成には 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}

関連情報