To takie denerwujące ...
Kiedy dowolny tekst w linii ma zmienioną powierzchnię, tak że tekst jest pogrubiony, wysokość linii zwiększa się (zakładam) o jeden piksel. Najlepiej pokazuje to obraz:
Dlaczego to? Jak temu zapobiec?
Zgodnie z życzeniem informacje na platformie:
- Debian GNU / Linux sid (niestabilny) na amd64
- Emacs używa libgtk-3.so.0 (gtk 3.14.5) na XFCE 4.12
Próbowałem następujących czcionek na 8pt, 9pt, 10pt i 11pt:
- DejaVu Sans Mono
- DejaVu Sans
- DejaVu Serif
- Droid Sans Mono
- Liberation Mono
Problem występuje tylko w przypadku DejaVu Sans Mono i DejaVu Sans i tylko w 9pt i 10pt. (Zdjęcie powyżej pokazuje DejaVu Sans Mono-9
.)
C-u C-x =
. Prawdopodobnie przekonasz się, że albo twarz wpływająca na odrzucenie, albo twarz wpływająca na przykład mają różne atrybuty odpowiedzialne za zachowanie, które widzisz - np. Inne niż tylko podstawowy kolor pierwszego planu. Użytkownik może dostosować atrybuty twarzy.:height 90
(9pkt).:weight bold
zfont-lock-function-name-face
(i ponownie uruchomię polecenie motywucustom-theme-set-faces
), mogę zobaczyć zmianę wysokościdefun
linii o 1px! Myślę, że to zdecydowanie śmiały atrybut, który go powoduje.Odpowiedzi:
Wysokość czcionki zmienia się w DejaVu w tym rozmiarze, ponieważ informacje o wysokości czcionki między dwiema czcionkami normalnymi i pogrubionymi są różne, gdy powinny być takie same.
Używana przeze mnie czcionka DejaVu Sans Mono 10 nie zmienia wysokości czcionki między normalną a pogrubioną czcionką. Ustawiłem to w moich .emacs z
(set-frame-font "DejaVu Sans Mono-10")
Więc masz coś do porównania, informacje o czcionce „DejaVu Sans 10” przez (font-info na Emacs 25):
EDYCJA na podstawie kolejnych informacji:
W powyższych informacjach o czcionce pokazuję wysokość czcionki 17, a raportujesz wysokość 15 (normalna) lub 16 (pogrubiona). W emacsie 25 po tych 3 0 znajdują się dodatkowe informacje o czcionce, w szczególności pochylenie czcionki to 4.
Chociaż nie mam problemu z Emacsem 24 lub 25 z DejaVu Sans Mono i wariantem Bold, najprostszą rzeczą jest użycie czcionki i rozmiaru, który nie zmienia szerokości (jak pokazuje informacja o czcionce) między normalnym a pogrubionym lub coś innego niż DejaVu.
Jeśli chodzi o to, co może to powodować, może to być jedna z twoich bibliotek (moim gtk jest libgtk-x11-2.0.so.0), ale wątpię, żeby była to ta konkretna biblioteka. Wątpię również, czy jest to plik lub pakiet ttf. Bardziej prawdopodobne jest renderowanie Freetype (mam libfreetype.so.6). Ponieważ DejaVu jest skalowane, podobnie jak inne czcionki, które działają dla Ciebie, błąd obliczeniowy łaskotany sposobem, w jaki napisano DejaVu, wyjaśnia, dlaczego działają one w niektórych rozmiarach, ale nie w innych.
Aby sprawdzić, czy problem dotyczy Emacsa, możesz wyświetlić dwa okna terminali, jedno z pogrubionym monitem, a drugie bez niego i porównać odstępy między nimi. Jeśli jest inny niż Emacs, ma to związek z renderowaniem i / lub czcionką.
Jeśli skompilowałeś emacsa, może się tam coś dziać.
źródło
DejaVu Sans Mono-9
BTW). Zaktualizuję powyższy opis ...(font-info "DejaVu Sans Mono-10")
daje mi["-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]
. Mam równieżfonts-dejavu-core
zainstalowane, a takżettf-dejavu-core
. Oba zapewniająDejaVuSansMono.ttf
(w różnych katalogach, ale są to identyczne pliki, więc nie widzę, żeby to miało znaczenie). Dostaję takżeHeight: 98
z twarzy (podczas używania DajaVu Sans Mono-10, który wykazuje powyższy problem). Jestem otwarty na wszelkie sugestie! :)