C'est tellement ennuyeux...
Lorsqu'un texte sur une ligne a son visage changé pour que le texte soit en gras, la hauteur de la ligne augmente (je suppose) d'un seul pixel. Il est préférable de le montrer avec une image:
Pourquoi est-ce? Comment puis-je l'empêcher?
Comme demandé, infos sur la plateforme:
- Sid Debian GNU / Linux (instable) sur amd64
- Emacs utilise libgtk-3.so.0 (gtk 3.14.5), sur XFCE 4.12
J'ai essayé les polices suivantes à 8 pt, 9 pt, 10 pt et 11 pt:
- DejaVu Sans Mono
- DejaVu Sans
- DejaVu Serif
- Droid Sans Mono
- Libération Mono
Le problème se produit uniquement avec DejaVu Sans Mono et DejaVu Sans, et uniquement à 9 pt et 10 pt. (L'image ci-dessus montre DejaVu Sans Mono-9
.)
C-u C-x =
. Vous constaterez probablement que le visage affectant le défun ou l' exemple affectant le visage ont des attributs différents qui sont responsables du comportement que vous voyez - par exemple, autre que la couleur de base du premier plan. Les attributs de visage peuvent être personnalisés par l'utilisateur.:height 90
(9 pt).:weight bold
depuisfont-lock-function-name-face
(et réexécute lacustom-theme-set-faces
commande du thème ), je peux voir la hauteur de ladefun
ligne changer de 1px! C'est certainement l'attribut audacieux qui le cause, je pense.Réponses:
La hauteur de police change dans DejaVu à cette taille de point car les informations de hauteur de police entre les deux polices normale et en gras sont différentes alors qu'elles devraient être identiques.
La police DejaVu Sans Mono 10 que j'utilise ne change pas la hauteur de police entre le poids normal et gras. Je l'ai mis dans mon .emacs avec
(set-frame-font "DejaVu Sans Mono-10")
Vous avez donc quelque chose à comparer, les informations pour la police "DejaVu Sans 10" via (font-info sur Emacs 25):
EDIT basé sur les informations suivantes:
Dans les informations de police ci-dessus, je montre une hauteur de police de 17 et vous signalez une hauteur de 15 (normal) ou 16 (gras). Dans emacs 25, il y a des informations de police supplémentaires après ces 3 0, en particulier la descente de police est 4.
Bien que je n'ai pas de problème sur Emacs 24 ou 25 avec DejaVu Sans Mono et la variante Bold, la chose la plus simple est d'utiliser une police et une taille qui ne changent pas la largeur (comme indiqué par font-info) entre normal et gras ou autre chose que DejaVu.
Quant à ce qui est à l'origine de cela, il pourrait s'agir de l'une de vos bibliothèques (mon gtk est libgtk-x11-2.0.so.0), mais je doute que ce soit cette bibliothèque particulière. Doutez également qu'il s'agit du fichier ou du package ttf. Le rendu freetype est plus probable (j'ai libfreetype.so.6). Étant donné que DejaVu est mis à l'échelle comme le sont les autres polices qui fonctionnent pour vous, une erreur de calcul chatouillée par la façon dont DejaVu a été écrite expliquerait pourquoi ces polices fonctionnent à certaines tailles mais pas à d'autres.
Pour vérifier si le problème est spécifique à Emacs ou non, vous pourrez peut-être afficher deux fenêtres de terminal, une avec une invite en gras et une sans et comparer l'espacement des lignes sur elles. Si c'est différent comme Emacs, cela a à voir avec le rendu et / ou la police.
Si vous avez compilé emacs, il se peut qu'il se passe quelque chose.
la source
DejaVu Sans Mono-9
BTW). Je mettrai à jour la description ci-dessus ...(font-info "DejaVu Sans Mono-10")
me donne["-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]
. J'ai égalementfonts-dejavu-core
installé, et aussittf-dejavu-core
. Ils fournissent tous les deux unDejaVuSansMono.ttf
(dans des répertoires différents, mais ce sont des fichiers identiques, donc je ne vois pas que cela importe). Je reçois égalementHeight: 98
du visage (lors de l'utilisation de DajaVu Sans Mono-10, qui présente le problème ci-dessus). Je suis ouvert à d'autres suggestions! :)