Unicode-Mathematik und verschiedene Schriftarten können keinen angemessenen Abstand in der Formel gewährleisten

Unicode-Mathematik und verschiedene Schriftarten können keinen angemessenen Abstand in der Formel gewährleisten

Ich möchte überprüfen, ob dieses Problem an meiner Konfiguration liegt oder ob es sich um eine Art Fehler handelt.

Dies sind die Pakete, die ich lade, und die Konfiguration dafür (alles sehr minimal, um das Problem zu testen). Ich verwende XeTeX 0.9998.

\documentclass[12pt,a4paper]{scrbook}
\usepackage{polyglossia}
\setmainlanguage{italian}
\usepackage{amsmath,amsthm,mathtools} 
\usepackage{mathcomp,mathrsfs,xfrac,bbm}
\usepackage{unicode-math}
\usepackage{xunicode}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setsansfont[Scale=MatchLowercase]{Myriad Pro}
\setmonofont{Inconsolata}
\setmathfont{XITS Math}

Beim Schreiben fiel mir auf, dass mit den Abständen in mathematischen Formeln etwas nicht stimmte, und dann schrieb ich das hier, XITS Mathematik was ziemlich schrecklich ist. Die Abstände sind überhaupt nicht gut, es gibt viele Konflikte. Dann habe ich es mit einigen anderen Schriftarten versucht und eine ausgewählt, die von Unicode-Math unterstützt wird (die Liste habe ich in der README-Datei gefunden). Es stellte sich heraus, dass ich mit STIX Math und mit Latin Modern Math denselben Effekt habe, wie Sie sehen können. Lateinische Moderne Mathematik

Hier ist das Problem weniger offensichtlich, da die Schriftart heller ist, aber im Vergleich zur Standardversion von Latin Modern (ohne Verwendung von OpenType-Schriftarten und Unicode-Mathematik)

Latein Modern korrekt Das ist richtig, also dachte ich, es hätte etwas mit Unicode-Mathe zu tun, aber mit Neo Euler und Asana Math sieht es OK aus

Neo Euler Asana Mathematik

Hat jemand eine Ahnung, was die Ursache dieses Problems sein könnte? Vielleicht die Schriftarten? Ich hoffe nicht, denn ich würde wirklich gerne XITS oder STIX verwenden ... Können Sie das Problem reproduzieren?

Antwort1

Das Hauptproblem besteht darin, dass XeTeX keine mathematische Kursivkorrektur anwendet:

  • XITS verfügt über eine Kursivkorrektur und benötigt diese für die richtige Abstände.
  • Bei Latin Modern bietet die Schriftart überhaupt keine Kursivkorrektur.
  • In der Asana-Mathematik fehlt ebenfalls eine Kursivkorrektur, die Glyphen sind jedoch so angeordnet, dass keine Kursivkorrektur erforderlich ist.
  • Obwohl Euler eine Kursivkorrektur besitzt, ist das Fehlen einer Kursivkorrektur aufgrund der aufrechten Gestaltung kaum zu erkennen (Ihr Beispiel ist jedoch falsch, Sie müssen math-style=uprightdie Option übergeben, damit Euler-Alphabete verwendet werden können).

Warum XeTeX die Kursivkorrektur nicht mehr anwendet, ist mir unklar. Dieser Teil des Codes wurde seit Ewigkeiten nicht mehr angerührt, aber der Code war ohnehin fehlerhaft, daher vermute ich, dass es versehentlich funktioniert hat und einige der kürzlichen mathematischen Bereinigungen nicht funktioniert haben.

Es gibt jedoch einen Workaround: Öffnen Sie die Schriftart XITS in einem Schriftarteneditor (vorzugsweise FontForge) und setzen Sie die Breite des Leerzeichens auf0, führt dies dazu, dass die Engine die Kursivkorrektur erneut anwendet.

Für Neugierige: Die Anwendung der Kursivkorrektur hängt davon ab, ob der Leerzeichenfaktor der Schriftart Null ist, sogar im OpenType-Mathematikzweig des Codes, und obwohl dies für TFM-Mathematikschriften zutrifft, ist es für OpenType-Schriftarten nicht unbedingt der Fall.

Darüber hinaus weicht die OpenType-Mathematikspezifikation in Bezug auf die Frage, wann eine Kursivkorrektur angewendet werden soll, vom TeX-Algorithmus ab. Dies ist jedoch sehr vage, und die MS-Implementierung scheint sich von der tatsächlichen Dokumentation zu unterscheiden. Daher wird sie von XeTeX und LuaTeX noch nicht sehr gut unterstützt.

Aktualisieren: Der Master-Zweig von XeTeX handhabt dies jetzt besser, bis eine robustere Handhabung der Kursivkorrektur entwickelt wird.

verwandte Informationen