Es ist so nervig...
Wenn die Fläche eines Textes in einer Zeile so geändert wird, dass der Text fett ist, erhöht sich die Höhe der Zeile um (ich nehme an) ein einzelnes Pixel. Es wird am besten mit einem Bild gezeigt:
Warum ist das? Wie verhindere ich das?
Wie gewünscht, Infos auf der Plattform:
- Debian GNU / Linux sid (instabil) auf amd64
- Emacs verwendet libgtk-3.so.0 (gtk 3.14.5) unter XFCE 4.12
Ich habe die folgenden Schriftarten bei 8pt, 9pt, 10pt und 11pt ausprobiert:
- DejaVu Sans Mono
- DejaVu Sans
- DejaVu Serif
- Droid Sans Mono
- Befreiung Mono
Das Problem tritt nur bei DejaVu Sans Mono und DejaVu Sans auf und nur bei 9pt und 10pt. (Bild oben zeigt DejaVu Sans Mono-9
.)
C-u C-x =
. Sie werden wahrscheinlich feststellen, dass entweder das Gesicht, das den Defun beeinflusst, oder das Gesicht, das das Beispiel beeinflusst , unterschiedliche Attribute haben, die für das Verhalten verantwortlich sind, das Sie sehen - z. B. nicht nur die Grundfarbe des Vordergrunds. Die Gesichtsattribute können vom Benutzer angepasst werden.:height 90
nehme ich wieder die Standardeinstellung an?). Die Standardeinstellung ist in meinem Thema auf (9pt) festgelegt.:weight bold
von entferne / hinzufüge / entferne / hinzufügefont-lock-function-name-face
(und dencustom-theme-set-faces
Befehl des Themas erneut ausführe ), kann ich sehen, dass sich die Höhe derdefun
Zeile um 1 Pixel ändert! Es ist definitiv das kühne Attribut, das es verursacht, denke ich.Antworten:
Die Schrifthöhe ändert sich in DejaVu an dieser Punktgröße, da die Informationen zur Schrifthöhe zwischen den beiden normalen und der fett gedruckten Schrift unterschiedlich sind, wenn sie gleich sein sollten.
Die von mir verwendete DejaVu Sans Mono 10-Schriftart ändert die Schrifthöhe nicht zwischen normalem und fettem Gewicht. Ich habe das in meinen .emacs mit eingestellt
(set-frame-font "DejaVu Sans Mono-10")
Sie haben also etwas zu vergleichen, die Informationen für die Schriftart "DejaVu Sans 10" über (Schriftinfo zu Emacs 25):
BEARBEITEN basierend auf nachfolgenden Informationen:
In den obigen Schriftinformationen zeige ich eine Schrifthöhe von 17 und Sie geben eine Höhe von 15 (normal) oder 16 (fett) an. In Emacs 25 gibt es nach diesen 3 Nullen zusätzliche Schriftinformationen, insbesondere ist der Schriftabstieg 4.
Obwohl ich mit DejaVu Sans Mono und der Bold-Variante kein Problem mit Emacs 24 oder 25 habe, ist es am einfachsten, eine Schriftart und -größe zu verwenden, bei der die Breite (wie in den Schriftinformationen angegeben) nicht zwischen normal und fett geändert wird oder etwas anderes als DejaVu.
Was dies verursacht, könnte eine Ihrer Bibliotheken sein (mein GTK ist libgtk-x11-2.0.so.0), aber ich bezweifle, dass es sich um diese bestimmte Bibliothek handelt. Zweifle auch daran, dass es sich um die ttf-Datei oder das Paket handelt. Wahrscheinlicher ist das Freetype-Rendering (ich habe libfreetype.so.6). Da DejaVu wie die anderen Schriftarten, die für Sie funktionieren, skaliert sind, würde ein Rechenfehler, der durch die Art und Weise, wie DejaVu geschrieben wurde, gekitzelt wird, erklären, warum diese bei einigen Größen funktionieren, bei anderen jedoch nicht.
Um zu überprüfen, ob das Problem Emacs-spezifisch ist oder nicht, können Sie möglicherweise zwei Terminalfenster aufrufen, eines mit einer fettgedruckten und eines ohne, und den Zeilenabstand vergleichen. Wenn es anders ist als Emacs, hat dies mit dem Rendern und / oder der Schriftart zu tun.
Wenn Sie Emacs kompiliert haben, ist dort möglicherweise etwas los.
quelle
DejaVu Sans Mono-9
BTW verwendet). Ich werde die Beschreibung oben aktualisieren ...(font-info "DejaVu Sans Mono-10")
gibt mir["-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]
. Ich habe auchfonts-dejavu-core
installiert, und auchttf-dejavu-core
. Sie bieten beide einDejaVuSansMono.ttf
(in verschiedenen Verzeichnissen, aber sie sind identische Dateien, daher sehe ich nicht, dass dies wichtig ist). Ich bekomme auchHeight: 98
vom Gesicht (bei Verwendung von DajaVu Sans Mono-10, das das oben genannte Problem aufweist). Ich bin offen für weitere Vorschläge! :)