
Estoy intentando modificar el tamaño predeterminado de una fuente usando
(add-to-list 'face-font-rescale-alist (cons "^.*STIXGeneral.*$" 0.95) t)
Se supone que esto cambia la escala de todas las fuentes con el nombre STIXGeneral en 0,95, porque para mí esa fuente es un poco más alta que la fuente estándar. El valor resultante de face-font-rescale-alist
es:
(("-cdac$" . 1.3) ("^.*STIXGeneral.*$" . 0.95))
Sin embargo, con emacs 24.3 (también la versión git y también la versión preliminar 24.3.92.1), el resultado de agregar lo anterior .emacs
es que la fuente es incorrecta en todos los cuadros excepto en el cuadro inicial. Ejecutando 24.3 con -Q --eval="<expression above>"
da:
(message "%s" (face-all-attributes 'default (selected-frame)))
New frame: ((:family . Geneva) (:foundry . apple) (:width . normal) (:height . 120) (:weight . normal) (:slant . normal) (:underline) (:overline) (:strike-through) (:box) (:inverse-video) (:foreground . Black) (:background . White) (:stipple) (:inherit))
Initial frame: ((:family . Menlo) (:foundry . apple) (:width . normal) (:height . 120) (:weight . normal) (:slant . normal) (:underline) (:overline) (:strike-through) (:box) (:inverse-video) (:foreground . Black) (:background . White) (:stipple) (:inherit))
Con mi .emacs
versión habitual en git:
New frame: "((:family . Helvetica) (:foundry . nil) (:width . normal) (:height . 110) (:weight . normal) (:slant . normal) (:underline) (:overline) (:strike-through) (:box) (:inverse-video) (:foreground . #000000) (:background . AliceBlue) (:stipple) (:inherit))"
Initial frame: ((:family . Source Code Pro) (:foundry . nil) (:width . normal) (:height . 110) (:weight . normal) (:slant . normal) (:underline) (:overline) (:strike-through) (:box) (:inverse-video) (:foreground . #000000) (:background . AliceBlue) (:stipple) (:inherit))
La cara en el cuadro inicial es la que esperaba. El lugar donde face-font-rescale-alist
influye la fuente es font_score
en font.c
(enlace). El mismo problema ocurre en la versión git si lo reemplazo (add-to-list ...)
con (setq face-font-rescale-alist nil)
.
¿Qué estoy haciendo mal aquí?
Respuesta1
Mmm. En startup.el
el siguiente código, se detectan cambios face-font-rescale-alist
y se restablece la fuente predeterminada, al mismo tiempo que se ignoran los cambios provenientes de custom-set-face
(que es como estaba configurando la fuente con la interfaz de personalización):
;; startup.el:670
(unless (eq face-font-rescale-alist old-face-font-rescale-alist)
(set-face-attribute 'default nil :font (font-spec)))
Por lo tanto, es necesario establecer face-font-rescale-alist
después del código que intenta borrar las personalizaciones. Esto se puede hacer adjuntando consejos a frame-notice-user-settings
, que se ejecuta después del código de restablecimiento facial:
;; in .emacs
(defadvice frame-notice-user-settings (before my:rescale-alist)
(message "Set face-font-rescale-alist")
(add-to-list 'face-font-rescale-alist
(cons (font-spec :family "STIXGeneral") 0.95) t))
(ad-activate 'frame-notice-user-settings)
Esto se aplica face-font-rescale-alist
como esperaba que funcionara leyendo la documentación.