使用 LuaTeX 从 TrueType 集合中选择字体时出现问题

使用 LuaTeX 从 TrueType 集合中选择字体时出现问题

我想使用安装在/Library/Fonts/GillSans.ttcMac 上的 Gill Sans 字体。根据fontspec文档,我应该能够通过指定字体索引来使用 TrueType Collections。文档声称这应该适用于 LuaTeX,但我无法让它工作。

对 TrueType Collections 的支持仅在 XeTeX 中进行了测试,但也应适用于最新版本的 LuaTeX 和luaotfload包。

以下最小文档在使用 Gill Sans 的情况下可以工作,并且似乎甚至可以通过定义新的字体系列来使用字体的特定粗细/形状,但它无法\setmainfont使用如下命令\textbf{}\textit{}ETC。,如编译该文档的输出屏幕截图所示。

\documentclass{article}

\usepackage{fontspec}
\setmainfont[
  Ligatures=TeX,
  Extension=.ttc,
  UprightFeatures={FontIndex=0},
  BoldFeatures={FontIndex=4},
  ItalicFeatures={FontIndex=2},
  BoldItalicFeatures={FontIndex=5}]{GillSans}

\newfontfamily\SemiBold[
  Ligatures=TeX,
  Extension=.ttc,
  UprightFeatures={FontIndex=4}]{GillSans}

\begin{document}
\textbf{asdf}
\textit{asdf}
asdf
\textbf{\textit{asdf}}

{\SemiBold asdf}
\end{document}

编译文档的输出,其中“asdf”以相同的字体出现,除非切换到 \SemiBold 字体

有人知道问题可能是什么以及如何解决吗?日志显示以下内容:

LaTeX Font Warning: Font shape `TU/GillSans(0)/b/n' undefined
(Font)              using `TU/GillSans(0)/m/n' instead on input line 18.

LaTeX Font Warning: Font shape `TU/GillSans(0)/m/it' undefined
(Font)              using `TU/GillSans(0)/m/n' instead on input line 19.

LaTeX Font Warning: Font shape `TU/GillSans(0)/b/it' undefined
(Font)              using `TU/GillSans(0)/b/n' instead on input line 21.

此外,在 shell 中运行以下命令

luaotfload-tool --find 'Gill Sans SemiBold' -i

返回以下内容,这表明上述文档应该可以通过索引 4 选出半粗体字体作为 BoldFont:

luaotfload | resolve : Font "Gill Sans SemiBold" found!
luaotfload | resolve : Resolved file name "/Library/Fonts/GillSans.ttc", subfont nr. 4


** 1 Gill Sans SemiBold ********************************************************

        ascender: 1487
    averagewidth: 1154
     boundingbox: <table>
                   1: -1162
                   2: -512
                   3: 2279
                   4: 1931
       capheight: 1397
  defaultvheight: 0
       descender: -561
          family: Gill Sans
        fontname: GillSans-SemiBold
        fullname: Gill Sans SemiBold
     italicangle: 0.0
      monospaced: false
    panoseweight: demi
     panosewidth: normal
       pfmweight: 600
        pfmwidth: 5
   platformnames: <table>
           macintosh: <table>
                  family: Gill Sans
                fullname: Gill Sans SemiBold
          postscriptname: GillSans-SemiBold
               subfamily: SemiBold
             windows: <table>
                  family: Gill Sans
                fullname: Gill Sans SemiBold
          postscriptname: GillSans-SemiBold
               subfamily: SemiBold
       subfamily: SemiBold
    subfontindex: 4
           units: 2048
         version: 13.0d1e4
          weight: semibold
           width: normal
         xheight: 934

我正在使用 MacTeX 2020、的 v3.14/2020-05-06luaotfload-tool和的 v2.7i fontspec

答案1

当使用 ttc 文件时,您不应该使用Extension而应该直接添加.ttc到名称中,否则会检测得太晚,您必须手动设置ItalicFont// BoldFontBoldItalicFont

\documentclass{article}

\usepackage{fontspec}
\setmainfont[
  Ligatures=TeX,
  UprightFeatures={FontIndex=0},
  BoldFeatures={FontIndex=4},
  ItalicFeatures={FontIndex=2},
  BoldItalicFeatures={FontIndex=5}]{GillSans.ttc}

\newfontfamily\SemiBold[
  Ligatures=TeX,
  Extension=.ttc,
  UprightFeatures={FontIndex=4}]{GillSans}

\begin{document}
\textbf{asdf}
\textit{asdf}
asdf
\textbf{\textit{asdf}}

{\SemiBold asdf}
\end{document}

相关内容