É tão irritante...
Quando qualquer texto em uma linha tem seu rosto alterado para que o texto fique em negrito, a altura da linha aumenta (presumo) um único pixel. É melhor mostrado com uma imagem:
Por que é isso? Como evito isso?
Conforme solicitado, informações na plataforma:
- Debian GNU / Linux sid (instável) em amd64
- O Emacs usa libgtk-3.so.0 (gtk 3.14.5), no XFCE 4.12
Eu tentei as seguintes fontes nos 8pt, 9pt, 10pt e 11pt:
- DejaVu Sans Mono
- DejaVu Sans
- DejaVu Serif
- Droid Sans Mono
- Liberation Mono
O problema ocorre apenas com o DejaVu Sans Mono e o DejaVu Sans, e apenas nos 9 e 10. (A imagem acima mostra DejaVu Sans Mono-9
.)
C-u C-x =
. Você provavelmente descobrirá que o rosto que afeta o desfecho ou o exemplo que afeta o rosto têm atributos diferentes que são responsáveis pelo comportamento que você vê - por exemplo, além da cor básica do primeiro plano. Os atributos de face podem ser personalizados pelo usuário.:height 90
(9pt).:weight bold
defont-lock-function-name-face
(e executar novamente ocustom-theme-set-faces
comando do tema ), posso ver a altura dadefun
linha mudar em 1px! É definitivamente o atributo arrojado que está causando isso, eu acho.Respostas:
A altura da fonte é alterada no DejaVu nesse tamanho de ponto, porque as informações de altura da fonte entre as duas fontes normal e negrito são diferentes quando devem ser as mesmas.
A fonte DejaVu Sans Mono 10 que eu uso não altera a altura da fonte entre o peso normal e o negrito. Coloquei isso no meu .emacs com
(set-frame-font "DejaVu Sans Mono-10")
Então você tem algo para comparar, as informações da fonte "DejaVu Sans 10" via (info-fonte no Emacs 25):
EDIT com base em informações subsequentes:
Nas informações da fonte acima, mostro uma altura de fonte 17 e você relata uma altura de 15 (normal) ou 16 (negrito). No emacs 25, há informações adicionais sobre a fonte após esses 3 0, em particular a descida da fonte é 4.
Embora eu não tenha problemas no Emacs 24 ou 25 com o DejaVu Sans Mono e a variante Negrito, a coisa mais simples é usar uma fonte e um tamanho que não alterem a largura (como mostrado pelas informações da fonte) entre normal e negrito ou algo diferente do DejaVu.
Quanto ao que está causando isso, pode ser uma das suas bibliotecas (meu gtk é libgtk-x11-2.0.so.0), mas duvido que seja essa biblioteca específica. Também duvide que seja o arquivo ou pacote ttf. O mais provável é a renderização do tipo livre (eu tenho libfreetype.so.6). Como o DejaVu é dimensionado, assim como as outras fontes que funcionam para você, um erro de computação associado à maneira como o DejaVu foi escrito explicaria por que eles funcionam em alguns tamanhos, mas não em outros.
Para verificar se o problema é específico do Emacs ou não, você pode abrir duas janelas de terminal, uma com um prompt em negrito e outra sem e comparar o espaçamento entre as linhas. Se for diferente do Emacs, isso tem a ver com a renderização e / ou fonte.
Se você compilou o emacs, pode haver algo acontecendo lá.
fonte
DejaVu Sans Mono-9
BTW). Eu vou atualizar a descrição acima ...(font-info "DejaVu Sans Mono-10")
me dá["-unknown-DejaVu Sans Mono-normal-normal-normal-*-13-*-*-*-m-0-iso10646-1" "DejaVu Sans Mono:pixelsize=13:foundry=unknown:weight=normal:slant=normal:width=normal:spacing=100:scalable=true" 13 15 0 0 0]
. Eu também tenhofonts-dejavu-core
instalado, e tambémttf-dejavu-core
. Ambos fornecem umDejaVuSansMono.ttf
(em diretórios diferentes, mas são arquivos idênticos, então não vejo que isso importe). Também receboHeight: 98
da cara (ao usar o DajaVu Sans Mono-10, que exibe o problema acima). Estou aberto a mais sugestões! :)