Nadmierne odstępy między wierszami w przypadku niektórych czcionek

13

Od dłuższego czasu używam DejaVu Sans Mono jako czcionki programistycznej. Jeszcze nie znalazłem lepszej czcionki.

Ale jakiś czas temu odkryłem Firę Mozilli , która wygląda bardzo ładnie dla kodu . Postanowiłem więc spróbować w Emacsie.

Niestety, kiedy używam go w Emacsie, odstępy między liniami zwiększają się i zmniejszają liczbę linii, które widzę o około 10.

Próbowałem (setq line-spacing 0)różnych kombinacji rzeczy (set-frame-font (font-spec :name "Fira Mono" :width 'normal :height 100)), ale bez względu na to, co robię, nadmierne odstępy między liniami pozostają. ( line-spacingNiestety nie można używać ujemnych wartości w Emacsie, co wydaje się oczywistym rozwiązaniem.)

Wydaje się, że nie jest to błąd w czcionce, ponieważ gdy używam Fira Mono w Kate w tym samym rozmiarze, odstępy między liniami są tym, co uważam za normalne i najwyraźniej mniej więcej takie same jak odstępy między wierszami Emacsa w DejaVu Sans .

Czy to błąd w Emacsie? Czy jest jakiś sposób to naprawić?

Dziękuję za wszelkie porady.

Po lewej: Emacs Fira Mono Po prawej: Emacs DejaVu Sans Mono Emacs Fira Mono vs. Emacs DejaVu Sans Mono

Po lewej: Emacs Fira Mono Po prawej: Kate Fira Mono Emacs Fira Mono vs. Kate Fira Mono

blujay
źródło
1
Możesz spróbować --line-spacing=PIXELSw wierszu poleceń emacs, ale zgaduję, że to nie pomoże. Moja kryształowa kula mówi mi, że odstępy między wierszami nie wstawiają żadnych dodatkowych pikseli i że problem polega na wyświetlaniu czcionki przez Emacsa. Czy tryb buforowy robi jakąkolwiek różnicę? (Zakładam, że sprawdziłeś, frame-parametersco to jest czcionka itp.)
Drew,
2
Szczerze mówiąc, dla mnie wygląda na to, że DejaVu nie ma wystarczających odstępów, a jeśli spojrzysz na ostatni zrzut ekranu z Firą, możesz nawet zobaczyć, że postacie, które mają elementy malejące, takie jak giy, są przycięte. Poza tym myślę, że minimalna wysokość linii byłaby obliczona na podstawie jakiegoś parametru TTF, więc jeśli naprawdę chcesz to zmienić, zastanowiłbym się nad modyfikacją pliku TTF (czy to OTF?), Aby zmienić czcionkę dane, aby umożliwić mniej wiodących.
wvxvw,
1
Co się stanie, jeśli minspace=truedodasz do definicji czcionki FontConfig? Np. Coś podobnego emacs -fn 'Fira Mono:minspace=true'lub jakakolwiek nazwa czcionki.
jch
3
To nie jest to, co chcesz usłyszeć, ale zrezygnowałem z odstępów między liniami nieco ponad rok temu. Zamiast tego wybieram czcionkę, z którą czuję się komfortowo, i ustawiam :heighti to wszystko. Emacs tak naprawdę nie ma dobrej kontroli nad odległością między liniami, a dostosowanie jej powoduje tylko więcej problemów. Być może właściwe byłoby żądanie funkcji - na przykład, aby ustawić odległość między liniami w pikselach i umożliwić jej pracę ze wszystkimi czcionkami.
prawnik
1
Wysokość linii jest właściwością czcionki, rendering Emacsa uwzględnia podaną wartość. Jeśli wymusisz określoną wysokość niezależnie od właściwości czcionki, możesz skończyć z przyciętymi postaciami, jak na zrzucie ekranu Fira Mono w Kate (jak już wskazano wvxvw). Jeśli chodzi o czcionki proporcjonalne, uważam, że Lucida Grande Mono jest najbardziej wydajna pod względem przestrzeni, a jednocześnie bardzo czytelna w małych rozmiarach (Droid Sans Mono jest blisko, ale jest mniej gęsty).
papryka

Odpowiedzi:

2

Fira Mono v3.2 dostosowała wysokość linii czcionki, co pozwoliło mi ją używać w Emacsie:

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

cemerick
źródło
Dziękuję za aktualizację. Wydaje się to trochę lepsze, ale wciąż mam o 4 mniej linii w Emacsie w Fira Mono 3.2 niż w DejaVu Sans Mono. Niestety, nadal jest to bezużyteczne. Nie potrzebuję więcej miejsca między liniami; nic mnie to nie zyskuje. Wszystko, co robi, to zmniejszyć ilość widoczności na ekranie i zmusić mnie do przewijania, zmniejszania wydajności i marnowania czasu. :( Szkoda, że ​​Mozilla bardziej interesuje się tym, aby czcionka wyglądała na przewiewną, niż użyteczna.
blujay
… I możesz wyświetlić 4 dodatkowe linie na ekranie za pomocą Consolas (na przykład) w porównaniu z DejaVu Sans Mono. Poszczególne czcionki mają różne wysokości wewnętrzne (i szerokości, w przypadku wariantów monospace), co nie ma nic wspólnego z odstępami między wierszami. Przypisywanie jakiejś złośliwości Mozilli lub Carrois (typ odlewni, która wydaje się być wiodącym projektem Firi) jest po prostu głupie.
cemerick
Kto powiedział coś o złośliwości? Lub od kiedy „przewiewny” = złośliwość? Faktem jest, że obecnie istnieje tendencja do zwiększania białych znaków w zasadzie we wszystkich sprawach związanych z interfejsem użytkownika. Praktycznie każda duża strona internetowa, która ostatnio przeprojektowała, znacznie zwiększa odstępy między wierszami. To jest obecnie popularne. Te same trendy przenikają do narzędzi stworzonych do tworzenia takich rzeczy. „Więcej białych znaków na stronie = dobre, dlatego więcej białych znaków w edytorze = dobre”. Ten dogmatyzm nie jest złośliwy, jest po prostu bezużyteczny. Spróbuj zrozumieć przed obroną przed nieatakami.
blujay,
1
Aha, i FYI, w pracach jest Kod Fira z mniejszymi odstępami między wierszami. Mam nadzieję, że się rozłoży.
blujay,
W tej chwili jednak wydaje się, że ma poważny problem z Emacsem. („Komentarze można edytować tylko przez 5 minut.” Westchnienie.)
blujay,