Hauteur de police emacs incohérente pour les symboles mathématiques unicode

0

Lors de l'insertion de symboles Unicode mathématiques inhabituels (normalement via font-lock-add-keywords), je suis confronté à ce problème. Lorsque ma police par défaut ne comporte pas de caractère, une autre police contenant ce caractère est utilisée.

D'une manière ou d'une autre, la hauteur du symbole dans la deuxième police est parfois différente de la hauteur de tous les caractères normaux dans la première police, avec peut-être un pixel. Cela modifie la hauteur de la ligne en cours et "déplace" beaucoup de texte à l'écran d'un pixel vers le haut lorsque je tape un symbole, ce qui est assez irritant. (La police de remplacement par défaut à l'origine de ce problème est Arial.)

Je résous actuellement ceci en utilisant quelque chose comme ceci, quand "Source Code Pro" est la police par défaut:

(set-default-fontset "fontset-default" '(#x???? . #x????) "DejaVu Serif")

La plage est quelque chose comme 2100..23ff, 27c0..27ff, 2900..2bff. Parfois, cela ne fonctionne pas lorsque je découvre que DejaVu Serif n’a pas non plus le caractère, et que je dois trouver une autre police de la même hauteur que celle-ci. Ceci est dans emacs 24.3, sous OS X 10.9.3.

Un problème connexe est que, pour certains caractères, une police différente (hauteur différente) est utilisée selon que le caractère est mis en surbrillance dans la région sélectionnée.

Pourquoi cela se produit-il et que puis-je faire à ce sujet? Je ne me soucie pas particulièrement de la police utilisée, tant que la hauteur des lignes ne saute pas. Aucune suggestion? Existe-t-il un moyen de modifier la hauteur de la deuxième police de remplacement pour qu'elle soit identique?

Kirill
la source
Je sais à propos de cette question , mais ce n’est pas ce que je recherche car je sais déjà que je peux définir des polices, mais seules certaines polices fonctionnent, parfois.
Kirill
1
Ma recommandation serait de créer lentement une liste de caractères incriminés et de modifier la hauteur de la police (etc.) en fonction de leur utilisation. Vous pouvez le faire avec font-lock. Par exemple, chaque fois que vous utilisez le ±, vous pouvez le rendre plus grand ou plus petit. Chaque fois que vous rencontrez un nouveau personnage incriminé, déterminez sa taille et ajoutez-le à votre liste toujours croissante.
lawlist
1
Par exemple, chaque fois que j'utilise une coche, je la réduis un peu - la définition de mon visage pour lawlist-checkmark est plus petit que ma police par défaut. Voici quelque chose que j'active lors de l'activation d'un mode mineur particulier - il comporte un symbole spécial. Je ne peux donc pas faire de ce commentaire un gris ombré de fantaisie: (dolist (mon-mot-clé '(("✓") ( ))) (sauf si (memq mon-mot-clé font-lock-mot-clés) (font-lock-add-mot-clé nil `(, mon-mot-clé))))
lawlist
1
Et voici mon visage: (defvar lawlist-checkmark (make-face 'lawlist-checkmark)) (set-face-attribute 'lawlist-checkmark nil :background "black" :foreground "yellow" :bold t :height 150)
lawlist
@lawlist Cela fait sens. Je suppose que je cherche un moyen de ne pas avoir à le faire à la main.
Kirill