梅威瑟:
\documentclass{article}
\usepackage{luacode}
\usepackage{fontspec}
% Note that I don't use emoji in this example,
% but the font for them must be present (not removed).
\begin{luacode*}
luaotfload.add_fallback("FallbackFonts", {% (2)
"Noto Color Emoji:mode=harf",
"Noto Sans CJK JP:"
})
luaotfload.add_fallback("FallbackFontsBold", {% (2)
"Noto Color Emoji:mode=harf",
"Noto Sans CJK JP Bold:"
})
\end{luacode*}
\setmainfont{Liberation Serif}[
RawFeature={fallback=FallbackFonts}% (1)
]
\begin{document}
test
\textbf{test}
日本語
\textbf{日本語}
\end{document}
如果我在这里使用 FallbackFonts 或 FallbackFontsBold(1),那么它将以粗体或非粗体打印所有 CJK 字形:
无论如何,luatex 引擎必须确定要使用哪种字体,对吧?那么是否可以让 luatex 选择必须为某个字形使用 fallback (2) 中的哪种字体?就像已经定义(在引擎中)的覆盖逻辑一样。或者像这样使用多个 fallback (2):
...
function set_fallback(font, weight)
if weight == "bold" then
font.fallbacks = {"FallbackFontsBold"}
else
font.fallbacks = {"FallbackFonts"}
end
end
...
\setmainfont{Liberation Serif}[
RawFeature={fallback={FallbackFonts, FallbackFontsBold}}% error
RawFeature={fallback={"FallbackFonts","FallbackFontsBold"}}% same error:
% texmf-dist/tex/luatex/luaotfload/luaotfload-fallback.lua:81: Unknown fallback table fallbackfonts,fallbackfontsbold.
]
...