Quando uma fonte é usada pela primeira vez com lualatex
, luaotfload
faz alguma mágica para produzir arquivos de cache de fontes.
Para fontes grandes (por exemplo,Noto Sans CJK) isso pode consumir muito tempo e muita memória.
Eu tenho um computador antigo (MacBook Air de 5 anos com 4 GB de RAM) rodando Linux com uma partição swap de 4 GB. A geração inicial do cache desta fonte pode levar mais de 15 minutos e inutilizar meu computador. Às vezes fico sem memória e o processo é interrompido.
Digamos que eu queira usar a fonte assim:
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Script=CJK,Language=Chinese Simplified]{Noto Sans CJK SC}
\begin{document}
中文
\end{document}
Qual é a maneira menos intensiva de recursos e/ou mais rápida de gerar os arquivos de cache necessários?
No momento, saio de tudo (até do X11) e corro lualatex
do console, mas ainda demora muito, e sair de tudo é um pouco chato.
Responder1
Você pode fazer conforme proposto na seção 9.2.1 “Cortando fontes“ emFontes fora do ConTeXte remova todos os nomes de glifos da fonte.
Adaptado para LaTeX e seu exemplo:
\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}