Interletraje adecuado de \{f\} \sigma_0 en TeX Gyre Termes Math

Interletraje adecuado de \{f\} \sigma_0 en TeX Gyre Termes Math

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

kering izquierdo

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

sin interletraje correcto

, 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 \sigmay \tauen 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

salida original de xelatex

para xelatex y

salida lualatex original

para lualatex.

Cuando utilizamos las fuentes Ryge intercaladas, obtenemos

salida de xelatex usando la fuente Ryge con kernings

cuando se compila con xelatex y

salida de lualatex usando la fuente Ryge con interletraje

cuando se compila con lulatex.

Con la nueva fuente Ryge, xelatexen general hace un buen trabajo con el kerning y lualatexcasi 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 finsertar la corrección en cursiva, fy }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: ingrese la descripción de la imagen aquí

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.

ingrese la descripción de la imagen aquí

Esto le llevará al cuadro de diálogo Math Kerning:

ingrese la descripción de la imagen aquí 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:

ingrese la descripción de la imagen aquí

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

ingrese la descripción de la imagen aquí

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}

información relacionada