Ich bin sicherdiese Schriftartunterstützt Ligaturen, aber ich kann sie nicht anzeigen lassen.
Beispiel mit Roboto zum Vergleich:
\documentclass[
11pt,
a4paper
]{scrartcl}
\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\begin{document}
\setmainfont[
ExternalLocation,
Extension=.ttf,
UprightFont=*-Regular,
ItalicFont=*-Italic,
BoldFont=*-Bold,
BoldItalicFont=*-BoldItalic,
Ligatures=Common
]{Roboto}
roboto fight flight has ligatures
\setmainfont[
ExternalLocation,
Extension=.otf,
Ligatures=Common
]{Mercury-TextG4Roman}
mercury fight flight no ligatures
\end{document}
Die Liste der Ligaturen auf der Site von HF&J lautet fi
:
Und Charmap in Windows zeigt dieses Zeichen in dieser Schriftart an:
Aktualisieren:
Ausgabe von otfinfo
:
Aktualisierung 2:
Zu LuaLatex gewechselt, eine Features-Datei hinzugefügt:
\documentclass[
11pt,
a4paper
]{scrartcl}
\usepackage{filecontents}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures={Common,Rare,Historic}}
\begin{filecontents*}{mercury.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;
# Ligatures
feature liga {
sub \f \i by \fi;
sub \f \l by \fl;
} liga;
\end{filecontents*}
\begin{document}
\setmainfont[
ExternalLocation,
Extension=.ttf,
UprightFont=*-Regular,
ItalicFont=*-Italic,
BoldFont=*-Bold,
BoldItalicFont=*-BoldItalic,
Ligatures=Common
]{Roboto}
roboto fight flight has ligatures
\setmainfont[
FeatureFile=mercury.fea,
ExternalLocation,
Extension=.otf,
Ligatures=Common
]{Mercury-TextG4Roman}
mercury fight flight no ligatures
\end{document}
Und Ligaturen zeigen:
Antwort1
Mit freundlicher Hilfe von @cfr haben Sie Folgendes festgestellt:
Die Schriftart enthält Ligaturglyphen.
fontspec
kann AAT-Ligaturinformationen nicht nutzen, auch wenn sie verfügbar sind.Die Schriftart lässt die für die automatische Ligaturunterstützung erforderlichen OpenType-Funktionsdaten aus.
Was können Sie also tun? Sie können entweder die fehlenden Zuordnungsdaten zur Schriftart hinzufügen oder eine externe OpenType-Funktionsdatei erstellen (nur von LuaTeX unterstützt) und fontspec anweisen, diese zu verwenden. Beides ist nicht schwierig.
Hinzufügen von OpenType- liga
Tabellen mit FontForge
Notiz:Konsultieren Sie zunächst die Lizenzbedingungen Ihrer Schriftart usw.
- Öffnen Sie die Schriftartdatei in Fontforge.
- Öffnen Sie den
Element->Font Info
Dialog über das Menü: Die aufgelisteten Einträge entsprechen verschiedenen OpenType-„Funktionen“. Die gewünschte Funktion wird in der Liste als „Standardligaturen“ bezeichnet undliga
in der Spezifikation und der Ausgabe als Funktion bezeichnetotfinfo
. Sie wissen bereits, dass sie in Ihrer Schriftart fehlt. Daher müssen wir zuerst die Tabelle erstellen und sie dann mit den fehlenden Daten füllen. - Klicken Sie auf die Schaltfläche „Suche hinzufügen“ und wählen Sie den Typ „Standardligaturen“ aus.
- Klicken Sie auf die Schaltfläche „Untertabelle hinzufügen“, um die eigentliche Zuordnungstabelle zu erstellen. Doppelklicken Sie auf den neuen Untertabelleneintrag, um dessen Editoransicht zu öffnen.
- Sie sollten jetzt den Bearbeitungsdialog sehen, in dem Sie Zuordnungen zwischen Zeichenfolgen und Ligaturglyphen einrichten: Verwenden Sie die Schaltfläche „Auffüllen“, damit FontForge die von der Schriftart unterstützten Ligaturen ableitet und automatisch Einträge für Sie erstellt. Je nach Schriftart müssen Sie möglicherweise auch Einträge manuell bearbeiten/hinzufügen. Die linke Spalte enthält den Glyphennamen für die Ligatur, während die rechte Spalte die einzelnen Zeichen enthält, die durch Leerzeichen getrennt sind.
- Wenn Sie fertig sind, drücken Sie
Ok
zweimal, um wieder zum Hauptfenster zurückzukehren. - Speichern Sie die aktualisierte Schriftdatei mit
File->Generate Fonts
und stellen Sie sicher, dass der Typ Dropbox auf eingestellt istOpenType(CFF)
. Beachten Sie, dass die generierte Schriftart denselben internen Schriftnamen wie das Original hat (der sich jedoch leicht ändern lässt). Sie müssen also entweder das Original überschreiben (denken Sie daran, eine Sicherungskopie zu erstellen), um das Laden der alten Version zu vermeiden, oder Sie sollten den Pfad der Schriftdatei beim Laden mit explizit angebenfontspec
. - Du bist fertig.
Hinzufügen von OpenType- liga
Tabellen mithilfe einer OpenType-Feature-Datei (nur LuaTeX)
Das fontspec
Handbuch enthält eineAbschnittauf Feature-Dateien (mit einem Link zurSpezifikationFeatureFile
) und es enthält ein Beispiel, das genau zeigt, wonach Sie suchen, z. B. wie Ligaturenzuordnungen definiert werden. Sie müssen also nur die Feature-Datei erstellen und dann die Option verwenden, um fontspec
sie zu laden:
Datei:eine andere_liga.tex
\documentclass{article}
\usepackage{filecontents}
\usepackage{fontspec}
% Alternatively, place this in a `mercury.fea` file in the same directory
\begin{filecontents*}{mercury.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;
# Ligatures
feature liga {
sub \f \i by \fi;
sub \f \l by \fl;
} liga;
\end{filecontents*}
\setmainfont[
FeatureFile=mercury.fea,
%Ligatures={Common} % on by default
]{Mercury-TextG4Roman}
\begin{document}
fi \symbol{"FB01}
fl \symbol{"FB02}
\end{document}
Dieses Beispiel geht davon aus, dass die Ligaturglyphen an ihrem Unicode-Standardspeicherort vorhanden sind, und schließt sie zu Vergleichszwecken direkt nach Glyphennummer ein. Ihre Abweichung kann abweichen.
Bearbeiten:Beachten Sie, dass fontspec
es nicht mit einem Fehler endet, wenn es Probleme mit der FeatureFile
Option gibt. Falsche Eingaben im Pfad, Syntaxfehler in der Datei oder die Verwendung einer anderen Engine als dieser LuaTeX
führen dazu, dass die Feature-Datei ignoriert wird.