TL; DR: Comment dire de manière fiable: utiliser Consolas comme police par défaut, FreeMono pour les caractères non pris en charge par Consolas et Symbola pour les caractères non pris en charge par les deux?
Étant donné que ma police de programmation principale ne couvre pas tous les symboles mathématiques dont j'ai besoin, j'ai d'abord configuré le remplacement de police comme indiqué ci-dessous:
(set-fontset-font t 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font t 'unicode (font-spec :name "Symbola") nil 'append)
Malheureusement, cela a également changé la police de certains caractères pris en charge par ma police principale, donc je l'ai changé en
(set-fontset-font t 'unicode (font-spec :name "Consolas") nil)
(set-fontset-font t 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font t 'unicode (font-spec :name "Symbola") nil 'append)
Si ma compréhension est correcte, cela devrait garantir que les caractères que Consolas ne peut pas gérer sont gérés par FreeMono, à moins que FreeMono ne les ait pas, auquel cas ils doivent être affichés à l'aide de Symbola. C'est aussi ma compréhension qui t
fait la même chose que "fontset-default"
ci-dessus.
Malheureusement, il y avait encore des cas où la bonne police n'était pas sélectionnée; J'ai trouvé que changer pour
(set-fontset-font t 'unicode (font-spec :name "Consolas") nil)
(set-fontset-font t 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font t 'unicode (font-spec :name "Symbola") nil 'append)
(set-fontset-font "fontset-startup" 'unicode (font-spec :name "Consolas") nil)
(set-fontset-font "fontset-startup" 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font "fontset-startup" 'unicode (font-spec :name "Symbola") nil 'append)
fonctionnait mieux, mais pas toujours: changer la taille de la police à l'aide
(set-face-attribute 'default nil :height some-size)
a entraîné l'ignorance des solutions de repli, en raison de la création de nouveaux jeux de polices.
Ma solution actuelle est de faire
(set-fontset-font fontset 'unicode (font-spec :name "Consolas") nil)
(set-fontset-font fontset 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font fontset 'unicode (font-spec :name "Symbola") nil 'append)
sur chaque jeu de polices ( fontset-list
), après chaque changement de taille de police.
Quelle est la bonne façon de définir le remplacement des polices?
Remarque : à des fins de test, voici quelques caractères mathématiques: ℕ𝓟⧺×≠≥≤±¬∨∧∃∀λ⟿⟹⊥⊤⊢
Références : Manuel Emacs sur les jeux de polices et sur la modification des jeux de polices
fontset
la mauvaise façon. Emacs ne vérifie pas réellement pour chaque caractère affiché si une police sait comment l'afficher ou non. Ce serait trop de calculs. Il n'y a donc pas de mécanisme de «repli» en soi. Vous devez définir votre police par défaut, puis modifier manuellement le jeu de polices par défaut dans certaines plages pour l'afficher à l'aide de polices différentes. Cette procédure est manuelle ou peut-être que le packageunicode
peut vous aider.Réponses:
Pour ceux qui ne peuvent pas lire la documentation d'Emacs.
Sélection de police
face-font-family-alternatives
Testé spécifiquement à l'aide des caractères de la question, en vérifiant les caractères avec
describe-character
. Chaque personnage utilise l'une des polices gratuites: Consolas, FreeMono, Symbola. Définition de la police du cadre sur Consola parset-frame-font
.Jusqu'à présent, 14 votes positifs, réponse négative, et la science de l'UE ne peut toujours pas résoudre ce mystère.
la source
(setq face-font-family-alternatives '(("Consolas" "FreeMono" "Symbola")))
, alorsM-x set-frame-font RET Consolas RET
; les personnages utilisent un mélange de Consolas et de Segoe UI Symbol)emacs -Q
.M-x customize-variable
face-font-family-alternatives
Il y a une liste qui ressemble à ceci:
Ajoutez votre séquence dans l'
customize
interface tampon:Comment utiliser
face-font-family-alternatives
:Dans votre tampon: M-x set-frame-font
Choisissez une police dans la liste. La police choisie définira la séquence de recherche de police
face-font-family-alternatives
à utiliser. Dans cet exemple, Consolas .Pour vérifier quelle famille de polices a été utilisée pour afficher un caractère: M-x describe-char
la source