Welche Methode erfordert am wenigsten Ressourcen, um den Luatex-Schriftartencache für eine neue Schriftart zu generieren?

Welche Methode erfordert am wenigsten Ressourcen, um den Luatex-Schriftartencache für eine neue Schriftart zu generieren?

Wenn eine Schriftart zum ersten Mal mit verwendet wird lualatex, luaotfloadwerden auf magische Weise Schriftart-Cache-Dateien erstellt.

Bei großen Schriftarten (z. B.Noto Sans CJK) dies kann viel Zeit und Speicherplatz beanspruchen.

Ich habe einen alten Computer (5 Jahre altes MacBook Air mit 4 GB RAM), auf dem Linux mit einer 4 GB großen Swap-Partition läuft. Die anfängliche Cache-Generierung dieser Schriftart kann mehr als 15 Minuten dauern und meinen Computer unbrauchbar machen. Manchmal geht mir einfach der Speicher aus und der Prozess wird abgebrochen.

Nehmen wir an, ich möchte die Schriftart wie folgt verwenden:

\documentclass{article}
\usepackage{fontspec}
\setmainfont[Script=CJK,Language=Chinese Simplified]{Noto Sans CJK SC}
\begin{document}
中文
\end{document}

Was ist der ressourcenschonendste und/oder schnellste Weg zum Generieren der erforderlichen Cache-Dateien?

Momentan beende ich alles (sogar X11) und führe es lualatexvon der Konsole aus, aber es dauert immer noch lange und das Beenden von allem ist etwas mühsam.

Antwort1

Sie können wie im Abschnitt 9.2.1 „Schriftarten trimmen“ beschrieben vorgehen.Schriftarten aus ConTeXtund entfernen Sie alle Glyphennamen in der Schriftart.

Bildbeschreibung hier eingeben

Angepasst an LaTeX und Ihr Beispiel:

\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}

verwandte Informationen