¿Cómo evitar que la versión en negrita "automática" de una fuente sea más ancha que la normal con el mismo tamaño de pt?

10

Tengo una fuente monoespaciada ( PT Mono) que prefiero usar en la programación de IDE. La fuente solo tiene Regular, todos los demás Boldy Italicse derivan de la inclinación y "negrita" de la Regular. El problema es que los caracteres "en negrita" son más anchos que los normales, por lo que las cadenas de código fuente en la ventana IDE ahora están compuestas por caracteres no monoespaciados.

¿Cómo controlo la "negrita" de la fuente para que no se amplíe más de lo normal?

El problema se ilustra en la siguiente captura de pantalla ( PT Monosin negrita dedicada). Vea cómo las palabras "unsigned char" y "sizeof" están saliendo de sus posiciones adecuadas.

la negrita automática cambia el ancho

Aquí otro ejemplo, Droid Sans Mono(sin negrita dedicada). ingrese la descripción de la imagen aquí

Y aquí un ejemplo cuando la fuente tiene una versión en negrita dedicada ( Liberation Mono). Negrita y regular están perfectamente alineados. ingrese la descripción de la imagen aquí

Por lo tanto, el problema definitivamente está en la representación de negrita frívola en situaciones donde no se proporciona negrita. El motor de fuentes es el culpable.

UPD: hay un archivo /etc/fonts/conf.avail/90-synthetic.confque, si se hace referencia desde las /etc/fonts/conf.d/melodías, el motor de fuentes realizará un envalentonado sintético de las fuentes que no tienen la versión en negrita. Si el enlace simbólico a este archivo se elimina de /etc/fonts/conf.d/, desaparece el envalentonado. Esto no es exactamente lo que se desea, pero al menos esto cura el caso de que las fuentes monoespaciales no sean monoespaciales (ver más abajo PT Mono). Todavía se necesita el ajuste fino del envalentonado (ya sea por archivo de configuración o por freetype2parche.

ingrese la descripción de la imagen aquí

mbaitoff
fuente
No puedes controlar eso. El diseño de la fuente se arruinaría. Incluso si reduce con precisión el tamaño (que no puede) para que coincida con el espaciado de fuente regular, la fuente en negrita se vería más pequeña. Si desea una fuente espaciada uniformemente, simplemente no use la fuente en negrita ... o intente con la terminal
zetah
Eso no es cierto. Las fuentes que tienen tipos de letra regulares y en negrita en archivos separados tienen el mismo ancho de caracteres en regular y en negrita. Por ejemplo, LetterGothic.
mbaitoff
Estoy corregido. Noté lo mismo usando SciTE (y tal vez tú también usas el editor basado en Scintilla, ¿tal vez Geany?) Mientras mi fuente es Droid Sans Mono, pero lo tomé como algo seguro, y no tenía idea de que la fuente ponderada puede tener un espaciado diferente incluso para las fuentes monoespaciadas, mientras que las fuentes en negrita usan el mismo espaciado que las regulares. Aún más parece que también las fuentes proporcionales tienen esta "característica" que notó, no todos. Perdón por mi audaz primera respuesta, debería haberlo revisado primero
zetah
@zetah: Miré a través de diferentes archivos de fuentes y parece que, de hecho, el cambio de ancho solo ocurre cuando no hay una versión en negrita dedicada de la fuente. Voy a actualizar la pregunta con más capturas de pantalla.
mbaitoff
1
mencionado también aquí: bugs.launchpad.net/ubuntu/+source/ttf-droid/+bug/565393
zetah

Respuestas:

8

mbaitoff , estoy publicando esto como una adición a su actualización, no como una respuesta

Si el usuario crea un archivo llamado ~/.fonts.conf:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="font">
        <test name="spacing" compare="eq">
            <const>mono</const>
        </test>
        <edit name="embolden" mode="assign">
            <bool>false</bool>
        </edit>
    </match>
</fontconfig>

entonces, las aplicaciones pueden usar fuentes monoespaciadas en negrita si están disponibles, y deshabilitar la "negrita sintética" si la fuente utilizada no tiene tipografía en negrita.

Es solo una alternativa y un enfoque ligeramente diferente con resultados diferentes

zetah
fuente
Si /etc/conf.d/50-user.confse cambia el nombre del enlace simbólico para que se ejecute después 90-synthetic.conf, no es necesario que elimine el embolden por completo. 99-user.conffunciona bien. De lo contrario, lo 90-synthetic.confhabilita nuevamente.
musiKk