
Auch weiterhinhttps://chat.stackexchange.com/rooms/97632/discussion-between-marcel-kruger-and-mdayq6, läuft lualatex auf
\documentclass{article}
\usepackage{fontspec}
\usepackage{unicode-math}
% \setmathfont{texgyretermes-math.otf}
\setmathfont[Kerning=On]{TeXRygeTermesMath-Regular.otf}%%% same as Tex Gyre Termes Math, with an attempt to improve kerning
\begin{document}
\(\{f\}\)
\[
\{f\}
\]
\end{document}
woher die Schriftart stammthttp://filebin.net/36gqo82z5evv2869(unsere Versuche, die Mathematik des Tex Gyre Termes zu verbessern), erzeugt
Wie wir sehen, wird das Kerning im ersten Fall angewendet, im zweiten jedoch nicht. Was muss ich tun, um auch im zweiten Fall das richtige Kerning zu erhalten?
Außerdem endet der Versuch, den Abstand zwischen f und } zu verringern, im Nichts: Welchen Wert ich auch immer in Kern-Offset eingebe,
, das resultierende PDF bleibt unverändert.
Irgendeine Idee, wie man das Kerning zwischen f und } anpasst?
Und zu guter Letzt: Gibt es eine Idee, wie man den Zeichenabstand in Fontforge $\sigma_0$
und \[\sigma_0\]
mit Fontforge verringern kann? Derzeit ist dieser Zeichenabstand enorm groß ...
EDIT: FolgenMarcels Vorschläge, gab ich die Suche nach einer guten Lösung auf {f}
und schuf eineTeX Ryge Termes Math-Schriftart mit neuen UnterschneidungenVerbesserung der richtigen Indizes für Kursivschrift \sigma
und \tau
im Mathematikmodus. Betrachten wir die Eingabe
\documentclass{article}
\pagestyle{empty}
\usepackage{unicode-math}
%\setmathfont[Ligatures=TeX]{TeX Gyre Termes Math}
\setmathfont[Ligatures=TeX]{TeXRygeTermesMath-Regular.otf} %%% Name changed to comply with the license. The shapes are (hopefully) the same, and the math kernings are new.
\begin{document}
\newcommand{\test}[1]{#1_{abc} #1_0^a #1^b_b #1_1^c #1^d_⊤ #1_⟂^e #1_T^f #1_k^g #1_{\mathup{k}}^h #1_{h}^j}
\newcommand{\testtest}{\test{\sigma}\test{\tau}}
\(\testtest\)
\[\testtest\]
\end{document}
Mit den ursprünglichen Gyre-Schriftarten erzeugt das obige Ergebnis die
für Xelatex und
für lualatex.
Bei Verwendung der unterschnittenen Ryge-Schriftarten erhalten wir
bei der Kompilierung mit xelatex und
bei Kompilierung mit Lulatex.
Mit der neuen Schriftart Ryge xelatex
funktioniert das Unterschneiden im Allgemeinen gut, und lualatex
abgesehen vom tiefgestellten „abc“ funktioniert das Unterschneiden fast gar nicht. Warum ist das so?
Weitere Verbesserungen für notwendig erachtet:
Erhöhen Sie den Abstand für tiefgestellte Zeichen ⊤ leicht.
Antwort1
Zu deinen beiden Problemen lies meine Antwort auf deine andere Frage: Normales Kerning ist nicht das richtige Werkzeug für Mathe und wird normalerweise nicht angewendet. Dass LuaTeX es manchmal doch anwendet, liegt wahrscheinlich daran, dass TeX nicht mehr weiß, dass die Zeichen mal Mathe waren. Nachdem die f
Kursivkorrektur eingefügt wurde, folgen die f
und also }
nicht direkt aufeinander -> kein Kerning. Auch in Display-Mathematik erwartet LuaTeX nicht, etwas zu finden, das Kerning erfordert, also wird das Kerning übersprungen.
Ihre letzte Frage ist jedenfalls interessanter:
Der Abstand zwischen einem Zeichen und seinem Index wird in OpenType Math als Math-Abstand bezeichnet. Siehehttps://docs.microsoft.com/en-us/typography/opentype/spec/math#mathkerninfo-tablefür die Details. In Ihrem Fall müssen Sie nur das Sigma anpassen.
Öffnen Sie eine mathematische Schriftart in FontForge. Anschließend können Sie mathematische Parameter über Element->Weitere Informationen->MATH-Informationen ändern. Ein Fenster wie dieses wird geöffnet:
Wählen Sie „Mathematisch kernen“ und drücken Sie, um mathematisches Kerning für eine neue Glyphe hinzuzufügen. Geben Sie den Namen Ihrer Glyphe ein, in Ihrem Fall „u1D70E“ (MATHEMATISCH KURSIV KLEINES SIGMA). Drücken Sie dann auf Ändern, um die Werte anzupassen.
Damit gelangen Sie zum Dialogfenster „Math Kerning“:
Um neue Punkte hinzuzufügen, gehen Sie zu „Textuell“ und wählen Sie dann „Unten rechts“. Drücken Sie dreimal, um drei Punkte hinzuzufügen, und gehen Sie zurück zu „Grafisch“. Klicken Sie hier auf das Sigma unter „Unten rechts“, um diesen Block auszuwählen. Ihr Unterschneidungspunkt wird angezeigt und Sie können ihn an eine geeignete Stelle ziehen. Grob gesagt bedeutet jeder Punkt, dass, wenn ein Index in dieser Höhe oder tiefer angehängt wird, dieser diese Unterschneidung erhalten soll. Sie können Ihre Punkte beispielsweise folgendermaßen setzen:
Bestätigen Sie nun mit OK, nochmals mit OK und generieren Sie Ihren Font.
Wenn Sie Ihre Punkte auf die gleiche Weise wie ich platziert haben, $\sigma_0$
wird
Wenn Sie Ihre Schriftart nicht ändern möchten, können Sie in LuaTeX natürlich auch Lua-Code zum Ändern des Mathkerns verwenden:
\documentclass{standalone}
\usepackage{unicode-math}
\usepackage{luacode}
\begin{luacode*}
-- First create a table specifying the mathkerns we want to set:
local mathkerns = {
["TeXGyreTermesMath-Regular"] = { -- This should be the PostScript name of the font
[0x1D70E] = { -- If the character would have a regular name, you could also use the glyphname here
bottomright = {
{height=0,kern=-175},
{height=216,kern=-76},
{kern=0},
},
},
},
}
local function initmathkern(tfmdata)
local values = mathkerns[tfmdata.properties.psname]
if not values then return end
for cp, value in next, values do
local tcp = type(cp)
if tcp == 'string' then
cp = tfmdata.resources.unicodes[cp]
end
local char = tfmdata.characters[cp]
if char then
local mathkern = char.mathkerns
if not mathkern then
mathkern = {}
char.mathkerns = mathkern
end
for corner, v in next, value do
mathkern[corner] = v
end
end
end
end
fonts.constructors.newfeatures'otf'.register{
name = 'mathkern',
description = 'Overwrite mathkern values',
initializers = {
base = initmathkern,
},
}
\end{luacode*}
\setmathfont[RawFeature=mathkern]{texgyretermes-math.otf}
\begin{document}
$\sigma_0$
\end{document}