我正在尝试编写 ConTeXt 文档,需要用其他字体替换多个缺失字体块。我使用 键fallbacks
来\definefontsynonym
执行此操作。但是,所有缺失字体均未得到替换。如何在 ConTeXt 中指定多个后备字体?
以下是一个说明该问题的文件:
\usetypescript
[pagella]
%% Unicode block `Miscellaneous Technical', range 2300--23FF,
%% http://www.unicode.org/charts/PDF/U2300.pdf
\definefontfallback
[BracketPieces]
[XITSMath]
[023B0,
023B1]
%% Unicode block `Supplemental Mathematical Operators', range
%% 2A00--2AFF, http://www.unicode.org/charts/PDF/U2A00.pdf
\definefontfallback
[SupplementalMathematicalOperators]
[STIXGeneralRegular]
[supplementalmathematicaloperators]
\definefontsynonym
[Mono]
[pagella]
[fallbacks={BracketPieces,SupplementalMathematicalOperators}]
\enabletrackers
[fonts.missing]
\setupbodyfont
[pagella]
\starttext
\starttyping
Definition RightDistributivityTo (X Y Z : UU) :
X × ⎰Y ⨿ Z⎱ → ⎰X × Y⎱ ⨿ ⎰X × Z⎱.
\stoptyping
\stoptext
以下是该命令输出的相关部分context file.tex
:
输出中缺少所有字符 ⎰ ⨿ ⎱。日志文件确实不是提到正在加载 XITS 和 STIX 字体。
但是,如果我只使用其中一个后备,则该后备将按预期使用。例如,如果我替换
[fallbacks={BracketPieces,SupplementalMathematicalOperators}]
和
[fallbacks=BracketPieces]
然后我得到以下 PDF 输出,其中显示字符 ⎰ 和 ⎱,并且日志文件提到正在加载 XITS 字体。
当我仅加载其他后备字体时,也会发生类似的事情。如果您能提供关于如何在此情况下使用多个字体后备字体的建议,我将不胜感激。
答案1
(我不太了解字体回退的内部原理。我的答案是基于type-imp-euler.mkiv
打字稿的)。
一种选择是使用单一的 fallback 名称。例如:
\definefontfallback[myfallbacks][XITSMath] [023B0, 023B1]
\definefontfallback[myfallbacks][STIXGeneralRegular][supplementalmathematicaloperators]
\definefontsynonym [Mono] [pagella] [fallbacks=myfallbacks]
\setupbodyfont [pagella]
\enabletrackers [fonts.missing]
\starttext
\starttyping
Definition RightDistributivityTo (X Y Z : UU) :
X × ⎰Y ⨿ Z⎱ → ⎰X × Y⎱ ⨿ ⎰X × Z⎱.
\stoptyping
\stoptext
这使