我一直尝试在文档中使用几种 Mac 系统字体,但我发现 ConTeXt 只能为我使用的几种字体找到一种样式。我尝试过的字体是 Baskerville 和 Optima。
\definefontfamily[myfamily][serif][Baskerville]
\definefontfamily[myfamily][sans][Optima]
\setupbodyfont[myfamily]
使用此序言,无论我使用什么字体切换,所有衬线文本都会排版为粗体,而所有无衬线文本都会使用常规样式排版。
这两种字体都存储在 .ttc TrueType 集合文件中,看起来mtxrun --script fonts --list --all --pattern=Optima*
效果如下:
optima optimaregular /System/Library/Fonts/Optima.ttc index: 4
optimanormal optimaregular /System/Library/Fonts/Optima.ttc index: 4
optimaregular optimaregular /System/Library/Fonts/Optima.ttc index: 4
对于 Baskerville也mtxrun
显示出类似的结果。两次运行都引用了索引号,但 ConTeXt 似乎只找到了一种样式,而不是所有样式。
我需要做什么才能让 ConTeXt 找到其他样式?
编辑:这是我进一步调查后发现的。
该simplefonts
模块给我的印象是一切运行正常,但查看日志文件,simplefonts
似乎回退到了 TeXLive 附带的 librebaskerville 字体。
\usemodule[simplefonts]
\setmainfont[Baskerville]
使用实时文件的其他系统字体.ttc
似乎会产生类似的结果,如果发现类似的名称,则会使用 TeX 树的后备。
我的系统上的 Arial 字体按样式分成单独的.ttf
文件。 simplefonts
可以正确找到它们,并且较新的\definefontfamily
方法也能按预期工作。
此外,我尝试使用以下内容定义自己的 Baskerville 打字稿:
\starttypescript [serif] [baskerville]
\definefontsynonym [Baskerville-Roman] [name:Baskerville]
\definefontsynonym [Baskerville-Bold] [name:Baskerville-Bold]
\definefontsynonym [Baskerville-Italic] [name:Baskerville-Italic]
\definefontsynonym [Baskerville-Bold-Italic] [name:Baskerville-BoldItalic]
\stoptypescript
\starttypescript [serif] [baskerville]
\usetypescript[serif][fallback]
\definefontsynonym [Serif] [Baskerville-Roman]
\definefontsynonym [SerifItalic] [Baskerville-Italic]
\definefontsynonym [SerifBold] [Baskerville-Bold]
\definefontsynonym [SerifBoldItalic] [Baskerville-Bold-Italic]
\stoptypescript
\starttypescript [Baskerville]
\definetypeface [Baskerville] [rm] [serif] [baskerville] [default]
\stoptypescript
\usetypescript[Baskerville]
\setupbodyfont[Baskerville]
但是该方法似乎也找到了后备方案,simplefonts
而不是使用系统字体提供的各种样式。
答案1
您使用的是哪个版本的 ConTeXt?我在 Mac 上使用2015.08.13
,示例如下:
\definefontfamily[myfamily][serif][Baskerville]
\definefontfamily[myfamily][sans][Optima]
\setupbodyfont[myfamily]
\starttext
Hello \sans{World}
\stoptext
工作正常。
pdffonts 测试.pdf 名称类型编码 emb sub uni 对象 ID ------------------------------------ ----------------- ---------------- --- --- --- --------- PKVICD+Baskerville CID TrueType Identity-H 是 是 是 16 0 QZBUCL+Optima-Regular CID TrueType Identity-H 是 是 是 17 0
更详细的例子:
\definefontfamily[myfamily][serif][Baskerville]
\definefontfamily[myfamily][sans][Optima]
\setupbodyfont[myfamily]
\starttext
\bold{Hello} \italic{world} \bolditalic{Hello World} Hello World
{\ss \bold{Hello} \italic{world} \bolditalic{Hello World} Hello World}
\stoptext
给出