
Quiero comprobar si este problema se debe a mi configuración o si es algún tipo de error.
Estos son los paquetes que cargo y la configuración para ellos (todo mínimo para probar el problema). Estoy usando 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}
Cuando estaba escribiendo me di cuenta de que había algo extraño con el espaciado en las fórmulas matemáticas, luego escribí esto,
que es bastante terrible. El espaciado no es nada bueno, hay muchos enfrentamientos. Luego probé con otras fuentes, eligiendo entre las soportadas por unicode-math (encontré la lista en el README), resulta que tengo el mismo efecto con STIX Math y con Latin Modern Math, como puedes ver
Aquí el problema es menos evidente porque la fuente es más clara, pero confrontada con la versión estándar de Latin Modern (sin usar fuentes opentype y unicode-math).
Esto es correcto, así que pensé que era algo relacionado con Unicode-Math, pero usando Neo Euler y Asana Math se ve bien.
¿Alguien tiene alguna idea de cuál podría ser la causa de este problema? ¿Quizás las fuentes? Espero que no porque me gustaría mucho usar XITS o STIX... ¿Puedes reproducir el problema?
Respuesta1
El principal problema es que XeTeX no aplica la corrección matemática en cursiva:
- XITS tiene corrección en cursiva y la necesita para un espaciado adecuado.
- En el caso de Latin Modern, la fuente no proporciona ninguna corrección en cursiva.
- Las matemáticas de Asana también carecen de corrección en cursiva, pero los glifos están espaciados de una manera que alivia la necesidad de corrección en cursiva.
- Euler, aunque tiene corrección en cursiva, su diseño vertical hace que la falta de corrección en cursiva no sea muy visible (aunque su ejemplo es incorrecto, debe pasar
math-style=upright
la opción para que se utilicen los alfabetos de Euler).
No me queda claro por qué XeTeX dejó de aplicar la corrección en cursiva, esa parte del código no se ha tocado durante mucho tiempo, pero el código tenía fallas de todos modos, así que supongo que funcionó accidentalmente y parte de la limpieza matemática reciente se rompió.
Sin embargo, existe una solución alternativa: abra la fuente XITS en un editor de fuentes (preferiblemente FontForge) y establezca el ancho del glifo de espacio en0, esto hará que el motor vuelva a aplicar la corrección en cursiva.
Para los curiosos, la aplicación o no de la corrección de cursiva depende de si el factor de espacio de la fuente es cero, incluso en la rama matemática OpenType del código, y aunque esto es cierto para las fuentes matemáticas TFM, no es esencialmente el caso para Fuente OpenType.
Además, la especificación matemática OpenType difiere del algoritmo TeX en cuanto a cuándo se debe aplicar la corrección en cursiva, pero es muy vaga y la implementación de MS parece diferir de lo que realmente está documentado, por lo que XeTeX y LuaTeX aún no la admiten muy bien.
Actualizar: La rama master de XeTeX maneja esto mejor ahora, hasta que se diseñe un manejo más sólido de la corrección en cursiva.