Übermäßiger Zeilenabstand bei bestimmten Schriftarten

13

Ich verwende seit langem DejaVu Sans Mono als Programmierschrift. Ich habe noch keine bessere Schriftart gefunden.

Aber vor einiger Zeit habe ich Mozillas Fira entdeckt , das für Code sehr gut aussieht . Also habe ich beschlossen, es in Emacs zu versuchen.

Wenn ich es in Emacs verwende, vergrößert sich leider der Zeilenabstand und die Anzahl der Zeilen, die ich sehen kann, verringert sich um ungefähr 10.

Ich habe versucht (setq line-spacing 0)und verschiedene Kombinationen von Dingen wie (set-frame-font (font-spec :name "Fira Mono" :width 'normal :height 100)), aber egal was ich tue, bleibt der übermäßige Zeilenabstand. (Es ist line-spacingleider nicht möglich, in Emacs negative Werte zu verwenden , was die naheliegende Lösung zu sein scheint.)

Es scheint jedoch kein Fehler in der Schriftart zu sein, denn wenn ich Fira Mono in Kate in derselben Größe verwende, ist der Zeilenabstand das, was ich für normal halte, und anscheinend ungefähr derselbe wie der Emacs-Zeilenabstand mit DejaVu Sans .

Ist das ein Fehler in Emacs? Gibt es eine Möglichkeit, dies zu beheben?

Danke für jeden Rat.

Links: Emacs Fira Mono Rechts: Emacs DejaVu Sans Mono Emacs Fira Mono gegen Emacs DejaVu Sans Mono

Links: Emacs Fira Mono Rechts: Kate Fira Mono Emacs Fira Mono gegen Kate Fira Mono

blujay
quelle
1
Sie könnten --line-spacing=PIXELSauf der Kommandozeile mit versuchen emacs, aber meine Vermutung ist, dass das nicht helfen wird. Meine Kristallkugel sagt mir, dass durch den Zeilenabstand keine zusätzlichen Pixel eingefügt werden und dass das Problem in der Anzeige der Schriftart durch Emacs liegt. Macht der Puffermodus einen Unterschied? (Ich frame-parameters
Drew
2
Um ehrlich zu sein, sieht es für mich so aus, als hätte DejaVu nicht genug Abstand. Wenn Sie sich den letzten Screenshot mit Fira ansehen, können Sie sogar erkennen, dass Zeichen mit absteigenden Elementen wie g und y beschnitten sind. Abgesehen davon denke ich, dass die minimale Zeilenhöhe basierend auf einem TTF-Parameter berechnet wird. Wenn Sie dies also wirklich ändern möchten, sollten Sie die TTF-Datei (oder OTF-Datei?) Ändern, um die Schriftart zu ändern Metrik, um weniger Zeilenabstand zuzulassen.
wvxvw
1
Was passiert, wenn Sie minspace=truean die FontConfig-Schriftartdefinition anhängen ? ZB sowas emacs -fn 'Fira Mono:minspace=true'oder wie auch immer der Name der Schriftart lautet.
5.
3
Dies ist nicht das, was Sie hören möchten, aber ich habe den Zeilenabstand vor etwas mehr als einem Jahr aufgegeben. Stattdessen wähle ich eine Schriftart, mit der ich mich wohl fühle, und setze die :heightund das wars. Emacs hat keine gute Kontrolle über den Abstand zwischen den Zeilen, und das Anpassen verursacht einfach mehr Probleme. Möglicherweise ist eine Funktionsanforderung angebracht - z. B. um den Abstand zwischen den Zeilen in Pixel festzulegen und ihn für alle Schriftarten verwenden zu können.
Gesetzesliste
1
Die Zeilenhöhe ist eine Eigenschaft der Schriftart. Beim Rendern von Emacs wird der angegebene Wert berücksichtigt. Wenn Sie eine bestimmte Höhe erzwingen, unabhängig von der Eigenschaft der Schriftart, werden möglicherweise Zeichen abgeschnitten, wie im Screenshot von Fira Mono in Kate (wvxvw hat bereits darauf hingewiesen). Wenn es um proportionale Schriftarten geht, finde ich, dass Lucida Grande Mono in Bezug auf den Platz am effizientesten ist, obwohl es bei kleinen Größen noch sehr gut lesbar ist (Droid Sans Mono kommt dem nahe, ist aber weniger dicht).
Paprika

Antworten:

2

Fira Mono v3.2 hat die Zeilenhöhe der Schrift angepasst, was es mir in Emacs ermöglicht hat:

https://github.com/mozilla/Fira/issues/67

Cemerick
quelle
Danke für das Update. Das scheint ein bisschen besser zu sein, aber ich bekomme in Emacs mit Fira Mono 3.2 immer noch 4 Zeilen weniger als mit DejaVu Sans Mono. So ist es leider immer noch nutzlos. Ich brauche keinen Platz mehr zwischen den Zeilen. es bringt mir nichts. Alles, was ich tun muss, ist zu reduzieren, wie viel ich auf dem Bildschirm sehen kann, und mich mehr scrollen zu lassen, was meine Effizienz verringert und meine Zeit verschwendet. :( Schade, dass Mozilla mehr daran interessiert ist, eine Schrift luftig zu machen, als sie nützlich zu machen.
blujay
… Und Sie können mit Consolas (zum Beispiel) im Vergleich zu DejaVu Sans Mono 4 weitere Zeilen auf dem Bildschirm sehen. Einzelne Schriften haben unterschiedliche intrinsische Höhen (und Breiten bei Monospace-Varianten), was nichts mit dem Zeilenabstand zu tun hat. Mozilla oder Carrois (die Art Gießerei, die Firas Design anzuführen scheint) irgendeine Art von Bosheit zuzuschreiben, ist einfach albern.
Cemerick
Wer hat etwas über Bosheit gesagt? Oder seit wann ist "airy" = böswillig? Tatsache ist, dass es derzeit einen Trend zur Erhöhung der Leerzeichen gibt, im Grunde genommen in Bezug auf alle Dinge, die mit der Benutzeroberfläche zu tun haben. Praktisch jede große Website, die in letzter Zeit eine Neugestaltung durchführt, vergrößert den Zeilenabstand erheblich. Es ist das, was derzeit beliebt ist. Dieselben Trends fließen in die Werkzeuge ein, die für diese Dinge geschaffen wurden. "Mehr Leerzeichen auf der Website = gut, daher mehr Leerzeichen im Editor = gut." Dieser Dogmatismus ist nicht böswillig, er ist einfach nutzlos. Bitte versuche es zu verstehen, bevor du dich gegen Nichtangriffe verteidigst.
blujay
1
Oh, und zu Ihrer Information, es gibt einen Fira-Code in den Werken mit weniger Zeilenabstand. Hoffentlich klappt es.
blujay
Im Moment scheint es jedoch ein ernstes Problem in Emacs zu geben. ("Kommentare können nur für 5 Minuten bearbeitet werden."
Seufz