Es tan molesto...
Cuando cualquier texto en una línea tiene su cara cambiada para que el texto esté en negrita, la altura de la línea aumenta en (supongo) un solo píxel. Se muestra mejor con una imagen:
¿Por qué es esto? ¿Cómo lo evito?
Según lo solicitado, información sobre la plataforma:
- Debian GNU / Linux sid (inestable) en amd64
- Emacs usa libgtk-3.so.0 (gtk 3.14.5), en XFCE 4.12
He probado las siguientes fuentes en 8pt, 9pt, 10pt y 11pt:
- DejaVu Sans Mono
- DejaVu Sans
- DejaVu Serif
- Droid Sans Mono
- Mono de liberación
El problema ocurre solo con DejaVu Sans Mono y DejaVu Sans, y solo a 9pt y 10pt. (La imagen de arriba muestra DejaVu Sans Mono-9
).
C-u C-x =
. Probablemente encontrará que la cara que afecta a defun o el ejemplo que afecta a la cara tienen diferentes atributos que son responsables del comportamiento que ve, por ejemplo, además del color básico del primer plano. Los atributos faciales pueden ser personalizados por el usuario.:height 90
(9pt).:weight bold
desdefont-lock-function-name-face
(ycustom-theme-set-faces
vuelvo a ejecutar el comando del tema ), ¡puedo ver el cambio de altura de ladefun
línea en 1px! Definitivamente es el atributo audaz lo que lo está causando, creo.Respuestas:
La altura de la fuente cambia en DejaVu en ese tamaño de punto porque la información de altura de la fuente entre las dos fuentes normal y negrita es diferente cuando debería ser la misma.
La fuente DejaVu Sans Mono 10 que uso no cambia la altura de la fuente entre el peso normal y el negrita. Lo configuré en mis .emacs con
(set-frame-font "DejaVu Sans Mono-10")
Entonces, tiene algo con lo que comparar, la información para la fuente "DejaVu Sans 10" a través de (información de fuente en Emacs 25):
EDITAR según la información posterior:
En la información de fuente anterior, muestro una altura de fuente de 17 y usted informa una altura de 15 (normal) o 16 (negrita). En emacs 25 hay información de fuente adicional después de esos 3 0's, en particular el descenso de la fuente es 4.
Aunque no tengo ningún problema en Emacs 24 o 25 con DejaVu Sans Mono y la variante Bold, lo más simple es usar una fuente y un tamaño que no cambien el ancho (como se muestra en font-info) entre normal y negrita o algo diferente a DejaVu.
En cuanto a lo que está causando esto, podría ser una de sus bibliotecas (mi gtk es libgtk-x11-2.0.so.0), pero dudo que sea esta biblioteca en particular. También dudo que sea el archivo o paquete ttf. Lo más probable es la representación de tipo libre (tengo libfreetype.so.6). Dado que DejaVu está escalado, al igual que las otras fuentes que funcionan para usted, un error de cálculo que se hizo cosquillas por la forma en que se escribió DejaVu explicaría por qué funcionan en algunos tamaños pero no en otros.
Para verificar si el problema es específico de Emacs o no, es posible que pueda abrir dos ventanas de terminal, una con un mensaje en negrita y otra sin y comparar el espaciado de línea en ellas. Si es diferente como Emacs, entonces esto tiene que ver con el renderizado y / o la fuente.
Si compiló emacs, podría haber algo allí.
fuente
DejaVu Sans Mono-9
BTW). Actualizaré la descripción anterior ...(font-info "DejaVu Sans Mono-10")
me da["-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]
. También hefonts-dejavu-core
instalado, y tambiénttf-dejavu-core
. Ambos proporcionan unDejaVuSansMono.ttf
(en diferentes directorios, pero son archivos idénticos, así que no veo que esto importe). También me saleHeight: 98
de la cara (cuando uso DajaVu Sans Mono-10, que exhibe el problema anterior). Estoy abierto a más sugerencias! :)