Quer escurecer um pouco uma fonte

Quer escurecer um pouco uma fonte

Vejo onde minha descrição pode ter sido enganosa, então aqui está uma pergunta revisada. Quero deixar “cachorro” um pouco mais escuro que o texto normal. Não quero que seja tão escuro quanto “raposa”. Estou usando fontspec com lualatex.

Estou tentando combinar o itálico de uma fonte com outra um pouco mais escura. Existe uma maneira de fazer isso com o FakeBold? No exemplo abaixo, “cachorro” é tão escuro quanto “raposa”, mas só quero escurecê-lo um pouco.

(Usando GentiumPlus aqui apenas como exemplo. Não é minha fonte real.)

\documentclass[12pt]{article}
\usepackage{fontspec}

\setmainfont{GentiumPlus}

\newfontfamily{\fbgentium}{GentiumPlus}[%
  ItalicFeatures={FakeBold=1.5},
  Scale = MatchLowercase]

% Want this to be just slightly dark
\newfontfamily{\ltgentium}{GentiumPlus}[%
  ItalicFeatures={FakeBold=1.05}, % specify a small amount here (tried 0.05)
  Scale = MatchLowercase]

\begin{document}
\itshape
The quick brown {\fbgentium fox}
jumps over the lazy {\ltgentium dog.}
\end{document}

Responder1

Acabei de enviar o problema nº 498 para a página do GitHub para latex3/fontspec. Vinculado a este tópico no SE. Quando eles me responderem, comentarei aqui. Enquanto isso, solução alternativa (funciona com lualatex):

Na maioria dos casos, especialmente para texto em tamanho normal ou quase normal, a aparência visual do peso está mais intimamente relacionada às hastes verticais do que às hastes horizontais. Isso ocorre porque a maioria dos caracteres tem hastes verticais mais grossas.

A fontspecconfiguração para FakeStretchfunciona bem. Tudo o que ele faz é dimensionar horizontalmente, que é uma transformação linear simples e é o mais livre de erros possível. Então, para uma pequena mudança de peso, eu usaria FakeStretchpor enquanto e aguardaria uma resolução em FakeBold.

Se você também precisar alterar o peso das hastes horizontais, isso não poderá ser feito por FakeStretch. Mas se necessário, você pode aumentar o tamanho da fonte usando ScaleAgaine compensar com o FakeStretchvalor.

Nota relacionada: Eu uso uma combinação de ScaleAgaine FakeStretchpara criar versaletes sintéticas, para fontes que não as possuem. Não é perfeito, mas é bom.

Responder2

Ambos os mecanismos TeX [XeTeX] e [LuaTeX com luaotfload] suportam o recurso de fonte implementado pelo mecanismo embolden=decimal_numberpara fontes OpenType. O padrão PDF define duas rotinas básicas de pintura para curvas fechadas: fille stroke. A fillrotina insere a tinta somente dentro da curva fechada e o traço desenha a curva com uma linha, sua largura deve ser declarada. A pintura das letras das fontes é feita apenas por fillrotina por padrão. Quando o recurso de fonte dependente do mecanismo embolden=decimal numberé definido, as letras da fonte usada são pintadas por ambas as rotinas: fillplus strokee a largura da linha da strokerotina é definida como decimal_number/100 em.

Por exemplo, você pode tentar usar xetex:

\font\fa=[lmroman10-regular]
\font\fb=[lmroman10-regular]:embolden=1.7

\fa Default: only fill is used.

\fb Special: fill plus stroke is used.

\bye

O pacote LaTeX fontspec converte sua sintaxe específica FakeBold=decimal numberpara o embolden=decimal_numberrecurso de fonte internamente.

Adiciono a seguinte imagem para maior clareza sobre como funcionam as rotinas de preenchimento e traçado:

preencher e traçar

informação relacionada