如何使用 fontspec 和 lualatex 添加多个/条件后备(字体)?

如何使用 fontspec 和 lualatex 添加多个/条件后备(字体)?

梅威瑟:

\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 字形:

后备字体后备字体Bold

无论如何,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.
]
...

相关内容