Problem beim Auswählen einer Schriftart aus der TrueType-Sammlung mit LuaTeX

Problem beim Auswählen einer Schriftart aus der TrueType-Sammlung mit LuaTeX

Ich möchte die Schriftart Gill Sans verwenden, die /Library/Fonts/GillSans.ttcauf meinem Mac installiert ist. Laut fontspecDokumentation sollte ich TrueType Collections verwenden können, indem ich den Schriftindex angebe. Laut Dokumentation sollte dies mit LuaTeX funktionieren, aber ich habe Probleme, es zum Laufen zu bringen.

Die Unterstützung für TrueType Collections wurde nur in XeTeX getestet, sollte aber auch mit einer aktuellen Version von LuaTeX und dem luaotfloadPaket funktionieren.

Das folgende Minimaldokument funktioniert insofern, als dass es Gill Sans verwendet, und es scheint sogar möglich zu sein, bestimmte Stärken/Formen der Schriftart zu verwenden, indem man eine neue Schriftfamilie definiert. Es funktioniert jedoch nicht, und es ist nicht möglich, Befehle wie , , \setmainfontzu verwenden .\textbf{}\textit{}usw., wie im Screenshot der Ausgabe aus der Kompilierung dieses Dokuments zu sehen ist.

\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}

Ausgabe aus dem Kompilierungsdokument, in dem „asdf“ in derselben Schriftart erscheint, außer beim Wechsel zur Schriftart \SemiBold

Weiß jemand, was das Problem sein könnte und wie es gelöst werden kann? Das Protokoll zeigt Folgendes:

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.

Darüber hinaus kann der folgende Befehl in einer Shell ausgeführt werden.

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

gibt Folgendes zurück, was darauf schließen lässt, dass es im obigen Dokument funktionieren sollte, die halbfette Schriftart über Index 4 als BoldFont auszuwählen:

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

Ich verwende MacTeX 2020, v3.14/2020-05-06 von luaotfload-toolund v2.7i von fontspec.

Antwort1

Beim Arbeiten mit ttc Dateien sollte man nicht verwenden, Extensionsondern direkt an den Namen anfügen , da es sonst zu spät erkannt wird und man / / manuell .ttcsetzen muss :ItalicFontBoldFontBoldItalicFont

\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}

verwandte Informationen