背景
使用 LMTX 排版由 Markdown 转换而来的 XML 文档,用户无需使用 TeX 宏,即可直接在文档中输入表情符号。
问题
当定义为后备字体时,表情符号不会出现。其中一个链接的答案指出:
您不想使用 Emoji 字体作为后备。
也许我尝试做的事不会成功。
代码
以下文档展示了如何使用 fallback:
\enabletrackers [fonts.missing]
\definefallbackfamily
[FontBody] [serif] [Noto Emoji] [range={miscellaneoussymbols,dingbats}]
\definefontfamily
[FontBody] [serif] [Noto Serif]
\setupbodyfont[FontBody]
\starttext
Emoji:
答案1
您可以\setups
在 TypeScript 中使用表情符号字体作为后备来生成所需的文本。如您所见,您可以通过使用多个 定义后备字体来一起使用多个字体后备\definefontfallback
,它们应该具有相同的名称,此处为“myfallback”。您还可以同时为具有各自特殊功能的各种表情符号字体指定不同的范围。
从邮件列表的消息中获取有关参数“force”和“check”的解释:
检查:仅当替换字体中存在时才替换(默认值:否)强制:即使基本字体有字形也强制替换(默认值:是)
%defint font fallback with its features:
\startsetups [fallbackfonts]
\definefontfeature [Emojiuse][default][ccmp=yes,colr=yes,dist=yes]
\definefontfeature [mycolored][default][cmcp=yes,dist=yes,colr=yes,svg=yes,sbix=yes]
\definefontfallback [myfallback][file:seguiemj.ttf*Emojiuse] [0x01F345-0x01FAD8] [force=no,check=no]
\definefontfallback [myfallback][OtsutomeEmojiSvgRegular*mycolored][0x01F600-0x01F61B][force=yes,check=no]
\stopsetups
%defining our typescript:
\starttypescript [serif] [ptsans]
\setups[fallbackfonts]
\definefontsynonym [SerifRegular] [file:PTSans-Regular] [features=default]
\definefontsynonym [SerifBold] [file:PTSans-Bold] [features=default]
\stoptypescript
\starttypescript [serif] [ptsans]
\definebodyfont [default] [rm]
[tf= SerifRegular sa 1,
bf= SerifBold sa 1,]
\stoptypescript
\starttypescript [ptsans]
\definetypeface [ptsans] [rm] [serif] [ptsans] [default] [fallbacks=myfallback]
\stoptypescript
\setupbodyfont[ptsans]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\starttext
koalla
答案2
解决方案包括:
- 使用 TTF 版本的OpenSansEmoji,不是OTF 版本。
\definefont
与参数一起使用style
。
考虑:
\definefont [TextFontEmoji] [OpenSansEmoji]
\defineframedtext[TextBubbleFrame][
style=TextFontEmoji,
frame=on,
width=.618\textwidth,
autowidth=force,
offset=.75em,
after={\blank[2*big]},
]
这会在任何环境中将字体切换为 OpenSansEmoji。OpenSansEmojiTextBubbleFrame
字体包含拉丁字符和大多数常见的 Unicode 表情符号。