"Fj" Ligatur in Computer Modern

Oct 03 2020

Der einfachste Weg, dies auszudrücken: Ich brauche eine "fj" -Ligatur. Es ist absolut entscheidend, besonders wenn ich auf Isländisch schreibe, es kann einfach nicht übersehen werden, es ist nur, wenn nicht häufiger als fi.

Folgendes habe ich gefunden:

\usepackage{Alegreya}Diese Schriftart enthält zwar die fj-Ligatur, aber ich mag Computer Modern wirklich. Ich habe auf TeX.SX eine andere Antwort gesehen und jemanden gefunden, der eine gut aussehende gemacht hat, aber mit dieser musste aufgerufen werden \fj. Ich denke das wäre echt dumm.

Irgendwelche Ideen? Ein hilfreicher Mitarbeiter im IRC fand Folgendes : Computer Modern: extraliges Paket, aber ich konnte es nicht zum Laufen bringen (ich habe es in den Pfad gebracht und LaTeX hat das Paket gut geladen, aber es hat absolut nichts getan).

Antworten

6 DavidCarlisle Oct 03 2020 at 23:40

Dies muss wirklich in der Schriftart angesprochen werden. Sie können versuchen, Latin Modern in Fontforge oder ähnlichem zu bearbeiten, um die Ligatur hinzuzufügen. Am einfachsten ist es jedoch, eine Schriftart auszuwählen, die diese Schriftart enthält.

Dies verwendet Stix 2-Textschrift mit Lualatex (oder Xelatex würde auch funktionieren)

\documentclass{article}

\usepackage{fontspec}
\setmainfont{STIX2Text-Regular.otf}

\begin{document}


\mbox{f}i\mbox{f}j

fifj

\end{document}
user224041 Oct 20 2020 at 01:43

Nachdem ich STIX2 verwendet hatte, das gut aussieht, aber für meinen Geschmack etwas zu schwer / fett ist, hatte ich gestern Abend einen Traum. Es war die Lösung. Durch die Verwendung eines Hacks mit manuellem Kerning und der Erstellung der fjLigatur und des \extraligfjBefehls sowie durch LuaLaTeXdas Ersetzen von Text im laufenden Betrieb habe ich eine nahtlose Lösung erstellt.

\ProvidesPackage{extralig}
\usepackage{xcolor}
\usepackage{luacode}
\newcommand{\extraligfj}{fi\llap{\textcolor{white}{\rule[-0.05em]{0.252em}{0.55em}}}\kern-0.01em\llap{\j}\kern-0.05em\relax}
\begin{luacode}
local function vartosrcvar ( line )
return string.gsub(line, "fj" , "\\extraligfj{}")
end
luatexbase.add_to_callback( "process_input_buffer",  vartosrcvar, "var_to_srcvar")
\end{luacode}

Wenn Sie diesen Code extralig.styin Ihrem .texDateiverzeichnis speichern und damit aufrufen, \usepackage{extralig}funktioniert er einwandfrei!

Aufgrund des Lua-Codes müssen Sie dies natürlich mit LuaLaTeX kompilieren

Sie müssen dies nicht als Paket verwenden. Kopieren Sie einfach alles an den entsprechenden Stellen in Ihr Dokument, und es funktioniert auch einwandfrei, aber es ist viel sauberer, es als separates Paket zu haben.

Wie funktioniert das?

  • Ich definiere \extraligfjeinen Hack, bei dem das iIn fidurch ein ersetzt wird j, wodurch eine perfekte fjLigatur mit manuellem Kerning entsteht. (Danke an diesen TeX.SX Beitrag!)
  • Bei LuaLaTeX verwende ich Code, der alle zuvor definierten Instanzen von fjdurch ersetzt \extraligfj.
  • Dies alles ist ordentlich extralig.styin unserem Dokument platziert und kann nahtlos als Paket in unser Dokument geladen werden.

TL; DR Speichern Sie das Code-Snippet unter extralig.styund legen Sie es im selben Verzeichnis wie Ihre .texDatei ab und laden Sie es mit \usepackage{extralig}. Verwenden Sie LuaLaTeX . Dies funktioniert garantiert nur mit Computer Modern, keine anderen Schriftarten (sie müssen manuell angepasst werden). Wenn Sie dies tun, wird fj automatisch ligiert.

Vorteile:

  • Ich hatte erwartet, dass es aufgrund der Natur des gehackten Glyphen einige wirklich seltsame Störungen mit Zeilenumbrüchen geben würde, aber zu meiner Überraschung funktioniert es perfekt, selbst wenn die Zeilen bei fund unterbrochen sindj
  • Sie müssen nur einmal kompilieren, da LuaTeX es im laufenden Betrieb ausführt, weshalb es vollständig nahtlos ist und keine Verlangsamungen aufweist.