
Continuohttps://chat.stackexchange.com/rooms/97632/discussion-between-marcel-kruger-and-mdayq6, ejecutando lualatex en
\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}
de donde se toma la fuentehttp://filebin.net/36gqo82z5evv2869(nuestros intentos de mejorar las matemáticas en términos tex gyre), produce
Como vemos, el kerning se aplica en el primer caso pero no en el segundo. ¿Qué hacer para conseguir el kerning adecuado también en el segundo caso?
Además, tratar de reducir el interletraje entre f y } no termina en ninguna parte: cualquier valor que ingrese en el desplazamiento del interletraje
, el PDF resultante no se modifica.
¿Alguna idea sobre cómo ajustar el interletraje entre f y }?
Por último, pero no menos importante, ¿alguna idea de cómo reducir el interletraje en Fontforge $\sigma_0$
y su uso? \[\sigma_0\]
A partir de ahora, este kerning es enormemente grande...
EDITAR: SiguienteLas sugerencias de Marcel, abandoné la búsqueda de una buena solución para{f}
y creé unaFuente TeX Ryge Termes Math con nuevos kerningsmejorando los subíndices correctos para cursiva \sigma
y \tau
en modo matemático. Consideremos la entrada
\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}
Con las fuentes Gyre originales, lo anterior produce el resultado
para xelatex y
para lualatex.
Cuando utilizamos las fuentes Ryge intercaladas, obtenemos
cuando se compila con xelatex y
cuando se compila con lulatex.
Con la nueva fuente Ryge, xelatex
en general hace un buen trabajo con el kerning y lualatex
casi no hace ningún trabajo con el kerning, excepto el subíndice "abc". ¿Porque?
Otras mejoras que se consideren necesarias:
aumente ligeramente el interletraje para los subíndices ⊤,
Respuesta1
Para sus dos problemas, lea mi respuesta a su otra pregunta: el interletraje normal no es la herramienta adecuada para matemáticas y normalmente no se aplicará. El hecho de que LuaTeX a veces se aplique probablemente suceda porque TeX ya no sabe que los caracteres solían ser matemáticos. Después de f
insertar la corrección en cursiva, f
y }
no se suceden directamente -> sin interletraje. Además, en las matemáticas de visualización, LuaTeX no espera encontrar algo que requiera interletraje, por lo que se omite el interletraje.
De todos modos, tu última pregunta es más interesante:
El interletraje entre un carácter y su subíndice se conoce en OpenType Math como interletraje matemático. Verhttps://docs.microsoft.com/en-us/typography/opentype/spec/math#mathkerninfo-tablepara los detalles. En tu caso solo necesitas ajustar la sigma.
Abra una fuente matemática en FontForge. Luego puede cambiar los parámetros relacionados con las matemáticas a través de Elemento->Otra información->Información MATH. Se abre una ventana como esta:
Seleccione "Math Kern" y presione para agregar el kerning matemático para un nuevo glifo. Ingrese el nombre de su glifo, en su caso "u1D70E" (MATHEMATICAL ITALIC SMALL SIGMA). Luego presione cambiar para ajustar los valores.
Esto le llevará al cuadro de diálogo Math Kerning:
Para agregar nuevos puntos, vaya a "Textual" y luego seleccione "Abajo a la derecha". Presione tres veces para sumar tres puntos y volver a "Gráfico". Aquí haga clic en el sigma debajo de la parte inferior derecha para seleccionar este bloque. Aparece su punto de interletraje y puede arrastrarlo a una ubicación adecuada. Aproximadamente, cada punto significa que si se adjunta un subíndice a esta altura o menos, entonces debería tener esta cantidad de interletraje. Por ejemplo, puedes configurar tus puntos de esta manera:
Ahora confirme con OK, Ok nuevamente y genere su fuente.
Si colocaste tus puntos de la misma manera que yo, $\sigma_0$
se convierte en
Por supuesto, si no desea cambiar su fuente, LuaTeX también le permite usar el código Lua para cambiar los números matemáticos:
\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}