Quieres oscurecer un poco una fuente

Quieres oscurecer un poco una fuente

Veo que mi descripción puede haber sido engañosa, así que aquí hay una pregunta revisada. Quiero que "perro" sea un poco más oscuro que el texto normal. No quiero que sea tan oscuro como "zorro". Estoy usando fontspec con lualatex.

Estoy tratando de hacer coincidir las cursivas de una fuente con otra que sea un poco más oscura. ¿Hay alguna manera de hacer eso con FakeBold? En el siguiente ejemplo, "perro" es tan oscuro como "zorro", pero solo quiero oscurecerlo un poco.

(Usando GentiumPlus aquí solo como ejemplo. No es mi fuente 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}

Respuesta1

Acabo de enviar el número 498 a la página de GitHub para latex3/fontspec. Vinculado a este hilo en SE. Cuando me respondan lo comentaré aquí. Mientras tanto, solución alternativa (funciona con lualatex):

En la mayoría de los casos, especialmente para texto de tamaño normal o casi normal, la apariencia visual del peso está más estrechamente relacionada con las raíces verticales que con las horizontales. Esto se debe a que la mayoría de los caracteres tienen tallos verticales más gruesos.

La fontspecconfiguración FakeStretchfunciona bien. Todo lo que hace es escalar horizontalmente, que es una transformación lineal simple y está lo más libre de errores posible. Entonces, para un pequeño cambio de peso, lo usaría FakeStretchpor ahora y esperaría una resolución FakeBold.

Si también debe cambiar el peso de los tallos horizontales, eso no se puede hacer con FakeStretch. Pero si es necesario, puedes aumentar el tamaño de la fuente usando ScaleAgainy compensar con el FakeStretchvalor.

Nota relacionada: Utilizo una combinación de ScaleAgainy FakeStretchpara crear versalitas sintéticas, para fuentes que no las tienen. No perfecto, pero bueno.

Respuesta2

Ambos motores TeX [XeTeX] y [LuaTeX con luaotfload] admiten la función de fuente implementada en el motor embolden=decimal_numberpara fuentes OpenType. El estándar PDF define dos rutinas básicas de pintado para curvas cerradas: filly stroke. La fillrutina inserta la tinta solo dentro de la curva cerrada y el trazo dibuja la curva con una línea, se debe declarar su ancho. El pintado de letras de fuentes se realiza sólo de fillforma rutinaria por defecto. Cuando se establece la función de fuente dependiente del motor, embolden=decimal numberambas rutinas pintan las letras de la fuente utilizada: fillmás strokey el ancho de línea de la strokerutina se establece en decimal_number/100 em.

Por ejemplo, puedes intentar usar usando 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

El paquete fontspec LaTeX convierte internamente su sintaxis específica FakeBold=decimal numbera la característica de fuente.embolden=decimal_number

Agrego la siguiente imagen para mayor claridad de cómo funcionan las rutinas de relleno y trazo:

rellenar y trazar

información relacionada