Como evitar que a versão em negrito “automática” de uma fonte seja mais larga do que regular, com o mesmo tamanho de pt?

10

Eu tenho uma fonte monoespaçada ( PT Mono ) que eu prefiro usar na programação do IDE. A fonte tem apenas Regular , todos os outros Bold e Italic são derivados por inclinação e "boldificação" do Regular . O problema é que os caracteres "em negrito" são mais largos que os caracteres normais, portanto, as strings do código-fonte na janela do IDE são agora compostas de caracteres não-monoespaçados.

Como posso controlar a "negrito" da fonte para que ela não fique mais ampla que o normal?

O problema é ilustrado na imagem abaixo ( PT Mono , sem negrito dedicado). Veja como as palavras "unsigned char" e "sizeof" estão saindo de suas posições corretas.

Aqui está outro exemplo, Droid Sans Mono (sem negrito dedicado).

E aqui um exemplo quando a fonte tem uma versão em negrito dedicada ( Liberation Mono ). Negrito e regular estão alinhados perfeitamente.

Assim, a questão é definitivamente em renderização de negrito frívola em situações em que negrito não é fornecido. O mecanismo de fonte é o culpado.

UPD: Existe um arquivo /etc/fonts/conf.avail/90-synthetic.conf que, se for referenciado a partir de /etc/fonts/conf.d/ , ajusta o mecanismo de fonte para executar o embelezamento sintético das fontes que não possuem a versão em negrito. Se o link simbólico para esse arquivo for removido do /etc/fonts/conf.d/ , a consolidação desaparecerá. Isso não é exatamente o que se deseja, mas pelo menos isso cura o caso de fontes monoespaçadas não serem monoespaçadas (veja abaixo, PT Mono ). O ajuste fino do fortalecimento ainda é desejado (por arquivo de configuração ou por freetype2 patch.

    
por mbaitoff 02.02.2012 / 05:37

1 resposta

7

mbaitoff , estou postando isso como adição à sua atualização, não como resposta

Se o usuário criar um arquivo chamado ~/.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>

então, os aplicativos podem usar a fonte monoespaçada em negrito, se disponível, e desativar a "boldificação sintética" se a fonte usada não tiver negrito.

É apenas alternativa e abordagem ligeiramente diferente com resultado diferente

    
por zetah 23.02.2012 / 11:15

Tags