Wie kann ich die Schriftkodierungseinstellungen einer Schriftart manuell festlegen?

Wie kann ich die Schriftkodierungseinstellungen einer Schriftart manuell festlegen?

Ich habe eine Schriftart mit einer Schriftartentabelle, die Ligaturen, aber auch mathematische Wurzeln, Operatoren und beispielsweise ein Integralzeichen enthält. (Es ist eine andere Schriftart als die, die ich in dieser Frage vorstelle und die das Integralzeichen nicht enthält.)

In meinem Fall lösen einige Zeichenkombinationen den Glyphenersatz nicht aus, z. B. für die Ligaturen „ffi“. Dies passiert sowohl bei pdflatex(think otftotfm) als auch bei xelatex( fontspec) Lösungen für die Schriftartimplementierung.

Es wird ein kompiliertes Ergebnis mit der kommerziellen Schriftart angezeigt, die ich verwenden möchte (für beide fontspecLösungen sowie otftotfm).

http://i.imgur.com/I4XfJbM.png?1

XeLaTeX ( fontspec)

Nach dem Ausführen der inLigaturen für fi, fl, ffl funktionieren nicht für Times New Roman (XeLaTeX), der Versuch, die Ligaturen auszulösen, funktioniert immer noch nicht. Egreg erwähnte inPlauderndass die Lösung im Allgemeinen die richtige Ausgabe für XeTeXDokumente erzeugt, vorausgesetzt, die Glyphen befinden sich an der richtigen Position für die Schriftartentabelle. Es stellt sich heraus, dass sie sich in der Schriftartentabelle befinden (Screenshot aus Adobe Illustrator)

Bildbeschreibung hier eingeben

Dies lässt darauf schließen, dass sie nicht an der richtigen Stelle stehen. Wünschenswert wäre daher eine Möglichkeit, die Verknüpfung zwischen der Eingabe von z. B. „ffi“ und der Verknüpfung mit der richtigen Ligatur in der Schriftart manuell herzustellen.

PdfLaTeX ( otftotfm)

Um sicherzugehen, habe ich otftotfmden folgenden Befehl verwendet:

otftotfm -a -e ec  -fkern -fliga --verbose --vendor <mapfilename> <somefont>.otf T1--<fontname>--<fontweight>

Der Befehl erzeugt einen Fehler bezüglich Ligaturen:

otftotfm: warning: 'liga' feature ignored, not supported by font

Dies wird auch nach dem Erstellen der .plDatei bestätigt:

tftopl T1--<fontname>--<fontweight>.tfm > T1--<fontname>--<fontweight>.pl

Die Ligatur war tatsächlich nicht vorhanden. Folgendes ist der T1--<fontname>--<fontweight>.plDatei entnommen:

(LABEL C f)
   (KRN O 41 R 0.08)
   (KRN O 47 R 0.1)
   (KRN O 51 R 0.07)
   (KRN O 52 R 0.08)
   (KRN O 54 R -0.05)
   (KRN O 56 R -0.05)
   (KRN O 77 R 0.12)
   (KRN O 135 R 0.07)
   (KRN C a R -0.01)
   (KRN C b R 0.1)
   (KRN C c R -0.01)
   (KRN C e R -0.01)
   (KRN C g R -0.01)
   (KRN C h R 0.1)
   (KRN C i R 0.03)
   (KRN C j R 0.03)
   (KRN C k R 0.1)
   (KRN C l R 0.1)
   (KRN C o R -0.01)
   (KRN C t R 0.01)
   (KRN C v R 0.01)
   (KRN C w R 0.01)
   (KRN C y R 0.01)
   (KRN O 175 R 0.07)
   (KRN O 15 R -0.05)
   (KRN O 22 R -0.05)
   (KRN O 21 R 0.1)
   (KRN O 346 R -0.01)
   (KRN O 370 R -0.01)
   (KRN O 367 R -0.01)
   (KRN O 344 R -0.01)
   (KRN O 345 R -0.01)
   (KRN O 351 R -0.01)
   (KRN O 352 R -0.01)
   (KRN O 364 R -0.01)
   (KRN O 366 R -0.01)
   (STOP)

Das Einzige, was mir einfällt, ist, die menschenlesbare .plDatei (von der das obige ein Auszug ist) zu verändern und alles manuell zu erstellen. Aber vielleicht (hoffentlich?!) verfügt LaTeX über Einrichtungen, mit solchen Dingen umzugehen.

Unabhängig davon wäre es schön,willkürlich(aber bestimmte) Glyphen der Schrifttabelle auf bestimmte Befehle, in einer sehr allgemeinen Weise. Überlegen Sie, \intwas das Integralzeichen von ie (erfundene Zahlen), Oktal 501 oder Unicode auslösen würde+00a6 oder Buchstabenkombinationen auslösen würde, sodass aus „ffi“ (verlinkt zu) --> „Ligatur ffi“ wird. Mir würde es nicht einmal etwas ausmachen, alle 256 Slots in der Quelle einem bestimmten Befehl oder einer bestimmten Buchstabenkombination zuzuordnen, solange ich weiß,Wiees zu tun.

Betrachten Sie das folgende Beispiel mit einer anderen (nicht kommerziellen) Schriftart, die ebenfalls Ligaturen enthält:http://exljbris.com/tallys.html. Für die Windows-Benutzer unter uns: Sie können dies bei Bedarf in eine Batchdatei kopieren und einfügen. Ich habe die Funktionen -fkernund absichtlich deaktiviert -fliga, da genau das der relevante Teil ist: Meine Schriftart ordnet die Glyphen nicht richtig zu.

otftotfm -a -e ec  --verbose --vendor tallys Tallys_15.otf T1--Tallys15--Regular
pause

Hier ist auch die t1tallys.fdDatei:

\ProvidesFile{t1tallys.fd}
   [2015/04/30 scalable font definitions for T1/Tallys.]

\DeclareFontFamily{T1}{Tallys}{}
\DeclareFontShape{T1}{Tallys}{m}{n}{<-> T1--Tallys15--Regular}{}
\DeclareFontShape{T1}{Tallys}{m}{it}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{m}{sc}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{m}{sl}{<-> ssub * Tallys/m/n}{}

\DeclareFontShape{T1}{Tallys}{b}{n}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{b}{it}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{b}{sc}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{b}{sl}{<-> ssub * Tallys/m/n}{}

\DeclareFontShape{T1}{Tallys}{l}{n}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{l}{it}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{l}{sc}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{l}{sl}{<-> ssub * Tallys/m/n}{}

\DeclareFontShape{T1}{Tallys}{bx}{n}{ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{bx}{it}{ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{bx}{sc}{ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{bx}{sl}{ssub * Tallys/m/n}{}

\endinput

und ein MWE ( XeLaTeXwird in diesem Fall mit den Ligaturen immer noch das richtige Ergebnis liefern ... Wenn Sie den Ansatz übernehmen möchten XeLaTeX, ordnen Sie einfach ein beliebiges anderes Zeichen zu. Ich würde immer noch gerne wissen, wie das in geht XeLaTeX.)

\documentclass{article}

\usepackage{ifxetex}
\ifxetex
    \usepackage{fontspec}
    \defaultfontfeatures{Ligatures=TeX}
    \setmainfont{Tallys}
    \usepackage{microtype}
\else
    \RequirePackage[T1]{fontenc}
    \pdfmapfile{tallys.map}
    \RequirePackage{microtype}
    \renewcommand\rmdefault{Tallys}
    \renewcommand\sfdefault{Tallys}
\fi

\begin{document}
\fontsize{100pt}{0pt}\selectfont ffi fi fl ffl
\end{document}

Die Idee ist, die Kombination der Zeichen weiterhin der Ligatur zuordnen zu können ffi. Es wäre auch schön, irgendwie die richtigen Zeichen für die richtigen mathematischen Befehle festzulegen (ich verstehe, dass dies komplizierter ist, aber bitte haben Sie Verständnis, ich suche wirklich nach einer allgemeinen Lösung, mit der ich die Schriftart vollständig zuordnen kann und TeX vollständig versteht, wann welches Zeichen verwendet werden soll.) Die ideale Lösung würde den vollständigen Prozess beschreiben, der erforderlich ist, um dies zu erreichen. Sie würde auch die Möglichkeit bieten, verschiedene Schriftarten zu mischen (was im Vergleich zur Lösung mit einer einzelnen Schriftart nicht zu kompliziert wäre – es soll nur die Antwort verallgemeinern).

verwandte Informationen