Como impedir que a versão em negrito “automática” de uma fonte seja mais larga que a normal e tenha o mesmo tamanho de pt?

10

Eu tenho uma fonte monoespaçada ( PT Mono) que prefiro usar na programação de IDEs. A fonte possui apenas Regular, todas as outras Bolde Italicsão derivadas pela inclinação e "negrito" do Regular. O problema é que os caracteres "em negrito" são mais largos que os regulares, portanto, as cadeias de código-fonte na janela IDE agora são compostas por caracteres não monoespaçados.

Como faço para controlar a "negritude" da fonte para que ela não se torne mais larga que a normal?

O problema está ilustrado na captura de tela abaixo ( PT Monosem negrito dedicado). Veja como as palavras "char não assinado" e "sizeof" estão saindo de suas posições apropriadas.

negrito automático altera a largura

Aqui está outro exemplo Droid Sans Mono(sem negrito dedicado). insira a descrição da imagem aqui

E aqui um exemplo quando a fonte tiver dedicado versão em negrito ( Liberation Mono). Negrito e regular estão alinhados perfeitamente. insira a descrição da imagem aqui

Portanto, a questão está definitivamente na renderização frívola de negação em situações em que negrito não é fornecido. O mecanismo da fonte é o culpado.

UPD: existe um arquivo /etc/fonts/conf.avail/90-synthetic.confque, ao ser referenciado, /etc/fonts/conf.d/ajusta o mecanismo de fonte para executar o emboldening 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/, o emboldening desaparecerá. Não é exatamente isso que é desejado, mas pelo menos isso cura o caso de fontes monoespaçadas não serem monoespaçadas (veja abaixo PT Mono). Ainda é necessário o ajuste fino do emboldening (por arquivo de configuração ou por freetype2patch.

insira a descrição da imagem aqui

mbaitoff
fonte
Você não pode controlar isso. O design da fonte seria arruinado. Mesmo se você reduzir com precisão o tamanho (o que você não pode) para corresponder ao espaçamento normal das fontes, as fontes em negrito pareceriam menores. Se você quiser fonte uniformemente espaçados, simplesmente não usar negrito ... ou tente terminais
zetah
Isso não é verdade. As fontes que possuem tipos de letra regulares e em negrito, fornecidas em arquivos separados, têm a mesma largura de caractere em regular e em negrito. Por exemplo, LetterGothic.
mbaitoff
Eu estou corrigido. Eu notei o mesmo usando o SciTE (e talvez você também use o editor baseado em Scintilla - talvez Geany?) Enquanto minha fonte é Droid Sans Mono, mas aceitei isso como garantido e não tinha uma ideia de que a fonte ponderada pudesse ter espaçamento diferente mesmo para fontes monoespaçadas, enquanto a fonte em negrito usa o mesmo espaçamento que o normal. Ainda mais, parece que também as fontes proporcionais têm esse "recurso" que você notou, nem todos. Desculpem a minha primeira resposta ousada, eu deveria ter verificado primeiro
zetah
@zetah: Eu olhei através de arquivos de fontes diferentes e parece que, de fato, a alteração da largura só acontece quando não há uma versão em negrito dedicada da fonte. Vou atualizar a pergunta com mais capturas de tela.
mbaitoff

Respostas:

8

mbaitoff , estou postando isso como uma adição à sua atualização, não como uma 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 fonte monoespaçada em negrito, se disponível, e desativar "negrito sintético" se a fonte usada não tiver o tipo de letra em negrito.

É apenas alternativa, e abordagem ligeiramente diferente com resultado diferente

zetah
fonte
Se o link simbólico /etc/conf.d/50-user.conffor renomeado para ser executado depois 90-synthetic.conf, você não precisará remover o embolden completamente. 99-user.conffunciona bem. Caso contrário, 90-synthetic.confhabilite-o novamente.
musikk