ConTeXt 在 .ttc 文件中仅找到一种字体样式

ConTeXt 在 .ttc 文件中仅找到一种字体样式

我一直尝试在文档中使用几种 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

给出

在此处输入图片描述

相关内容