Laden Sie zusätzliche Schriftarten mit lualatex

Laden Sie zusätzliche Schriftarten mit lualatex

Ich bereite ein Dokument vor, das Paketen fontspecdie Definition der Haupt- und der Sans-Schrift erleichtert. In diesem Dokument möchte ich diese Hauptschrift mit Computer Modern oder – genauer gesagt – ihrem Nachfolger Latin Modern vergleichen.

Ich war überzeugt, dass das Schreiben

\newfontfamily\lmfont{Latin Modern Roman}

würde die komplette Familie mit allen über 70 Schriftdateien aktivieren. Aber das ist nicht richtig.

Wenn ich zum Beispiel sage

{\lmfont\scshape{}abcd} {\scshape{}abcd}

Ich bekomme Folgendes:

Vergleich von Kapitälchen

Auf der linken Seite die moderne lateinische Schriftart, allerdings ohne Kapitälchen :-(, auf der rechten Seite die Standardschriftart („Hauptschriftart“) des Dokuments, wie sie aussehen sollte.

Für meinen Vergleich möchte ich eine große Auswahl/Kombination von Schriftarten dieser Familie präsentieren, also die Antiqua-, Sans- und Mono-Schriftarten ergänzt um Formen und Schriftarten wie -kursiv, -kursiv-fett, -schräg, -schräg-fett, -fett, -Kapitälchen.

Leider lädt meine Lösung nur die Schriftarten LMRoman10-Regularund LMSans10-Regular, aber nicht LMRomanCaps10-Regular. Deshalb hat \lmfont\scshape(oder \lmfont\ttfamily) nicht funktioniert.

Gibt es also eine Möglichkeit, festzulegen, \newfamilydass es alle modernen Latin-Schriftarten enthält?

Jede Lösung, die es mir ermöglicht, mit einem einfachen Makro die beiden Schriftfamilien nebeneinander zu vergleichen, wäre gut.

Hier ist ein MWE:

\documentclass{scrbook}
\usepackage{fontspec}

\setmainfont{Times New Roman} % and other definitions
\newfontfamily\lmfont{Latin Modern Roman} % this is not complete!!

%% New command to compare.  
%% #1 defines the family/shape/series
\newcommand{\compare}[1]{%
  {#1%
    ABCD \dots{} XYZ, abcd \dots{} xyz\\
    \lmfont{}ABCD \dots{} XYZ, abcd \dots{} xyz\par
  }
}

\begin{document}
\compare{\upshape}
\compare{\itshape}
\compare{\itshape\bfseries}
\compare{\scshape}
\end{document}

Antwort1

Nein, so funktioniert das nicht und das ist auch nicht möglich.

Es gibt keine Namenskonvention für Schriftarten und verschiedene Schriftarten haben ganz unterschiedliche Funktionen. Manche Schriftarten haben eine smcpFunktion, andere nicht und man muss die Schriftart angeben, die für Kapitälchen verwendet werden soll.

Bei Latin Modern Roman ist die Situation völlig anders: Es gibt etwa 70 Schriftdateien und es liegt außerhalb des Rahmens, fontspecdiese zu analysieren, um alle notwendigen Zuordnungen vorzunehmen.

Für den konkreten Fall stehen Ihnen jedoch .fdentsprechende Dateien zur Verfügung, die Sie nutzen können.

\documentclass{article}
\usepackage{fontspec}

\setmainfont{EB Garamond}

\newfontfamily\lmodern{Latin Modern Roman}[
  NFSSFamily=lmr
]

\begin{document}

Abc\textsc{Abc}

\lmodern

Abc\textsc{Abc}

\end{document}

Bildbeschreibung hier eingeben

Antwort2

Als Ergänzung zu egregs ausgezeichneter Antwort: Für eine benutzerdefinierte Schriftart, die Kapitälchen in einer separaten Datei speichert, beispielsweise mit dem Namen SomeFont-RegularSC.otfund SomeFont-BoldSC.otf, würden Sie sie mit laden

\newfontfamily\somefont{SomeFont}[
   UprightFont = *-Regular ,
   SmallCapsFont = *-RegularSC ,
   BoldFont = *-Bold ,
   BoldFeatures = { SmallCapsFont = *-BoldSC },
   % Etc.
   Extension = .otf ]

Sie können diesen Befehl auch in eine Datei mit dem Namen einfügen, SomeFont.fontspecdamit Sie \newfontfamily\somefont{SomeFont}in Ihre Dokumente schreiben können. Dadurch wird vermieden, dass in allen Ihren Dokumenten Abhängigkeiten von einer bestimmten Version der Schriftart bestehen bleiben.

verwandte Informationen