
Ich bereite ein Dokument vor, das Paketen fontspec
die 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:
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-Regular
und LMSans10-Regular
, aber nicht LMRomanCaps10-Regular
. Deshalb hat \lmfont\scshape
(oder \lmfont\ttfamily
) nicht funktioniert.
Gibt es also eine Möglichkeit, festzulegen, \newfamily
dass 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 smcp
Funktion, 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, fontspec
diese zu analysieren, um alle notwendigen Zuordnungen vorzunehmen.
Für den konkreten Fall stehen Ihnen jedoch .fd
entsprechende 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}
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.otf
und 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.fontspec
damit 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.