如何在 ConTeXt 中将表情符号字体设置为后备?
MWE 基本上遵循contextgarden/simplefonts指示:
\definefontfamily [main] [serif] [Minion Pro]
\definefallbackfamily[main] [serif] [Noto Emoji] [range=emoticon,force=yes]
Noto Emoji 是 Google 提供的免费表情符号字体,可在 SIL 下获取:https://github.com/googlei18n/noto-emoji/tree/master/fonts
作业日志报告:
selectfont > 由于未找到文件,因此忽略了字体“main”样式“rm”所请求的后备字体“Noto Emoji”。
命令mtxrun --script font --list noto
显示:
notoemoji notoemoji /home/user/fonts/NotoEmoji-Regular.ttf
我已经将错误追溯到http://source.contextgarden.net/tex/context/base/mkiv/font-sel.lua
但selectfont.definefallbackfamily
我不太熟悉,无法猜测这里可能存在什么问题。
[编辑]顺便说一句:context --version
返回:ConTeXt Process Management 0.63
和current version: 2017.01.27 14:39
;它也在 MacTeX 版本上展示2016.10.22 10:43
[编辑]最新的 ConTeXt 独立版似乎存在一些差异,因此我怀疑可能存在“边缘”问题。无论如何,这里有一个完整的 MWE:
% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = ConTeXt (LuaTeX)
\enabletrackers[selectfont.register,selectfont.files,selectfont.alternatives]
\definefontfamily [main] [serif] [Minion Pro]
\definefallbackfamily[main] [serif] [Noto Emoji] [range=emoticon,force=yes]
\setupbodyfont[main]
\starttext
Hello. Some valid Noto Emoji:
答案1
要设置后备字体\definefontfamily
,请将所有\definefallbackfamily
设置放在主字体之前。必须使用正确的参数作为range
键。对于您的情况,请使用miscellaneoussymbols
和dingbats
(可能还有其他几个):
\definefallbackfamily [mainface] [serif] [Noto Emoji] [range={miscellaneoussymbols,dingbats}]
\definefontfamily [mainface] [serif] [Minion Pro]
\setupbodyfont[mainface]
\starttext
Noto Emoji symbols: \utfchar{"26F5} \utfchar{"2712}
\stoptext
另一个例子是,定义Gentium Plus作为希腊字体的字体后备系列,您可以使用:
\definefallbackfamily [mainface] [serif] [Gentium Plus] [range=greekandcoptic]
看\definefontfallback
有关字符范围的更多详细信息。
答案2
尝试使用其他命名方式,例如
\definefallbackfamily[main] [serif] [Noto Emoji Regular] [range=emoticon,force=yes]
或这个
\definefallbackfamily[main] [serif] [file: NotoEmoji-Regular.ttf] [range=emoticon,force=yes]
编辑 那这个怎么样?(即使没有“常规”)
\definefallbackfamily[main] [serif] [notoemojiregular] [range=emoticon,force=yes]