
Continuandohttps://chat.stackexchange.com/rooms/97632/discussion-between-marcel-kruger-and-mdayq6, executando lualatex em
\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 onde a fonte é tiradahttp://filebin.net/36gqo82z5evv2869(nossas tentativas de melhorar a matemática do tex gyre termes), produz
Como podemos ver, o kerning é aplicado no primeiro caso, mas não no segundo. O que fazer para obter o kerning adequado também no segundo caso?
Além disso, tentar reduzir o kerning entre f e } termina em lugar nenhum: qualquer valor que eu inserir no deslocamento de kern
, o PDF resultante permanece inalterado.
Alguma ideia de como ajustar o kerning entre f e}?
Por último, mas não menos importante, alguma ideia de como reduzir o kerning $\sigma_0$
e \[\sigma_0\]
usar o Fontforge? A partir de agora, esse kerning é enormemente grande...
EDITAR: SeguindoSugestões de Marcelo, abandonei a busca por uma boa solução {f}
e criei umFonte TeX Ryge Termes Math com novos kerningsmelhorando os subscritos corretos para itálico \sigma
e \tau
no modo matemático. Vamos considerar a 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}
Com as fontes Gyre originais, o procedimento acima produz a saída
para xelatex e
para lualátex.
Ao usar as fontes Ryge com kerned, obtemos
quando compilado com xelatex e
quando compilado com lulatex.
Com a nova fonte Ryge, xelatex
geralmente faz um bom trabalho no kerning e lualatex
quase nenhum trabalho no kerning, exceto o subscrito "abc". Por quê então?
Outras melhorias são consideradas necessárias:
aumentar ligeiramente o kerning para subscritos ⊤,
Responder1
Para seus dois problemas, leia minha resposta à sua outra pergunta: O kerning normal não é a ferramenta certa para matemática e normalmente não será aplicado. O fato de o LuaTeX às vezes se aplicar provavelmente acontece porque o TeX não sabe mais que os caracteres costumavam ser matemáticos. Após a f
correção de itálico ser inserida, f
e }
não se seguem diretamente -> sem kerning. Também na matemática de exibição o LuaTeX não espera encontrar algo que exija kerning, então o kerning é ignorado.
De qualquer forma, sua última pergunta é mais interessante:
O kerning entre um caractere e seu subscrito é conhecido no OpenType Math como Math kerning. Verhttps://docs.microsoft.com/en-us/typography/opentype/spec/math#mathkerninfo-tablepara os detalhes. No seu caso você só precisa ajustar o sigma.
Abra uma fonte matemática no FontForge. Então você pode alterar os parâmetros relacionados à matemática através de Elemento-> Outras informações-> Informações de matemática. Uma janela como esta é aberta:
Selecione "Math Kern" e pressione para adicionar kerning matemático para um novo glifo. Digite o nome do seu glifo, no seu caso "u1D70E" (MATEMÁTICO ITÁLICO PEQUENO SIGMA). Em seguida, pressione alterar para ajustar os valores.
Isso leva você à caixa de diálogo Math Kerning:
Para adicionar novos pontos, vá em “Textual” e selecione “Inferior Direito”. Pressione três vezes para adicionar três pontos e voltar para “Gráfico”. Clique aqui no sigma abaixo do canto inferior direito para selecionar este bloco. Seu ponto de kerning aparece e você pode arrastá-lo para um local apropriado. Aproximadamente, cada ponto significa que se um subscrito for anexado nesta altura ou abaixo, ele deverá obter essa quantidade de kerning. Por exemplo, você pode definir seus pontos assim:
Agora confirme com OK, Ok novamente e gere sua fonte.
Se você colocou seus pontos da mesma forma que eu, $\sigma_0$
fica
Claro, se você não quiser alterar sua fonte, LuaTeX também permite que você use o código Lua para alterar os mathkerns:
\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}