Probleme beim Aktivieren von Ligaturen mit der Mercury Text OpenType-Schriftart von HF&J

Probleme beim Aktivieren von Ligaturen mit der Mercury Text OpenType-Schriftart von HF&J

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}

mwe

Die Liste der Ligaturen auf der Site von HF&J lautet fi:

Ligaturenliste

Und Charmap in Windows zeigt dieses Zeichen in dieser Schriftart an:

Zeichentabelle

Aktualisieren:

Ausgabe von otfinfo:

Abonnieren

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:

Bildbeschreibung hier eingeben

Antwort1

Mit freundlicher Hilfe von @cfr haben Sie Folgendes festgestellt:

  • Die Schriftart enthält Ligaturglyphen.

  • fontspeckann 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- ligaTabellen mit FontForge

Notiz:Konsultieren Sie zunächst die Lizenzbedingungen Ihrer Schriftart usw.

  1. Öffnen Sie die Schriftartdatei in Fontforge.
  2. Öffnen Sie den Element->Font InfoDialog über das Menü: Dialogfeld „Schriftartinformationen“ Die aufgelisteten Einträge entsprechen verschiedenen OpenType-„Funktionen“. Die gewünschte Funktion wird in der Liste als „Standardligaturen“ bezeichnet und liga in der Spezifikation und der Ausgabe als Funktion bezeichnet otfinfo. 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.
  3. Klicken Sie auf die Schaltfläche „Suche hinzufügen“ und wählen Sie den Typ „Standardligaturen“ aus.
  4. 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.
  5. Sie sollten jetzt den Bearbeitungsdialog sehen, in dem Sie Zuordnungen zwischen Zeichenfolgen und Ligaturglyphen einrichten: Ligatur-Untertabellen-Editor 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.
  6. Wenn Sie fertig sind, drücken Sie Okzweimal, um wieder zum Hauptfenster zurückzukehren.
  7. Speichern Sie die aktualisierte Schriftdatei mit File->Generate Fontsund stellen Sie sicher, dass der Typ Dropbox auf eingestellt ist OpenType(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 angeben fontspec.
  8. Du bist fertig.

Hinzufügen von OpenType- ligaTabellen mithilfe einer OpenType-Feature-Datei (nur LuaTeX)

Das fontspecHandbuch 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 fontspecsie 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 fontspeces nicht mit einem Fehler endet, wenn es Probleme mit der FeatureFileOption gibt. Falsche Eingaben im Pfad, Syntaxfehler in der Datei oder die Verwendung einer anderen Engine als dieser LuaTeXführen dazu, dass die Feature-Datei ignoriert wird.

verwandte Informationen