Risultato imprevisto da face-font-rescale-alist in emacs


1

Sto cercando di modificare la dimensione predefinita di un font utilizzando

(add-to-list 'face-font-rescale-alist (cons "^.*STIXGeneral.*$" 0.95) t)

Questo dovrebbe ridimensionare tutti i caratteri con il nome STIXGeneral di 0,95, perché per me quel carattere è un po 'più alto del carattere standard. Il valore risultante di face-font-rescale-alistè:

(("-cdac$" . 1.3) ("^.*STIXGeneral.*$" . 0.95))

Tuttavia, con emacs 24.3 (anche la versione git e anche la pre-release 24.3.92.1), il risultato dell'aggiunta di quanto sopra .emacsè che il font è errato su ogni frame a parte il frame iniziale. L'esecuzione di 24.3 con -Q --eval="<expression above>"dà:

(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 la mia .emacsversione regolare su 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 faccia nella cornice iniziale è quella che mi aspetto. Il luogo in cui face-font-rescale-alistinfluenza il tipo di carattere è in font_scorein font.c( collegamento ). Lo stesso problema si verifica nella versione git se lo sostituisco (add-to-list ...)con (setq face-font-rescale-alist nil).

Cosa sto facendo di sbagliato qui?

Risposte:


0

Hm. Nel startup.elseguente codice rileva le modifiche face-font-rescale-aliste reimposta il carattere predefinito, ignorando anche le modifiche provenienti custom-set-face(che è come stavo impostando il carattere con l'interfaccia di personalizzazione):

;; startup.el:670
(unless (eq face-font-rescale-alist old-face-font-rescale-alist)
 (set-face-attribute 'default nil :font (font-spec)))

È quindi necessario impostare face-font-rescale-alistdopo il codice che tenta di cancellare le personalizzazioni. Questo può essere fatto allegando consigli a frame-notice-user-settings, che viene eseguito dopo il codice di ripristino del volto:

;; 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)

Questo vale face-font-rescale-alistcome mi sarei aspettato che funzionasse leggendo la documentazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.