Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

police grasse, italique, de largeur fixe et unicode complète.

6 réponses
Avatar
François Maltey
Bonjour,

J'utilise le mode muse-el d'emacs comme d'un bloc-note.

Il exploite 4 sortes de polices :
normale, italique, grasse et grasse-italique gérés par des .
Elles sont codées ainsi :

(defface muse-emphasis-1
'((t (:italic t)))
"Face for italic emphasized text."
:group 'muse-colors)

(defface muse-emphasis-2
'((t (:bold t)))
"Face for bold emphasized text."
:group 'muse-colors)

(defface muse-emphasis-3
'((t (:bold t :italic t)))
"Face for bold italic emphasized text."
:group 'muse-colors)



Dans ce mode j'utilise l'espace comme tabulation pour avoir une
présentation "plus jolie".

Enfin je compte utiliser les symboles mathématiques d'unicode comme le
appartient, le inclus et co. pour taper des petites formules de maths de
manière wysiswyg.

Je cherche une font qui a ces trois possibilités et ne trouve pas
l'oiseau rare.

Par exemple

fixed n'a pas l'italique
lucidasans-A4 n'a pas les caractères mathématiques
etc.

Dans certains cas les polices italiques et les polices droites n'ont pas
la même largeur.

Je n'arrive pas à lancer emacs avec la police monospace des xterm de
gnome, qui de toute manière ne possède pas d'italique. Connaissez-vous
son nom sous xlsfonts ?

Je cherche donc une police
1/ de même largeur fixe dans les 4 modes :
normal, gras, italique, gras-italique.
2/ avec les caractères utf des maths
et pas uniquement le symbole quelquesoit

Ai-je été assez clair dans la question ? Avez-vous une solution...

emacs permet-il des couper/coller de police ?
prendre l'ascii ou le mode latin1 chez une police ayant les 4 modes
et prendre tous les symboles mathématiques sur une autre police ?

Cordialement.

F.

6 réponses

Avatar
Sébastien Kirche
Le 27 août 2009 à 18:54, François Maltey a dit :

Bonjour,



Bonjour,


J'utilise le mode muse-el d'emacs comme d'un bloc-note.

[...]
Je cherche donc une police
1/ de même largeur fixe dans les 4 modes :
normal, gras, italique, gras-italique.
2/ avec les caractères utf des maths
et pas uniquement le symbole quelquesoit

Ai-je été assez clair dans la question ? Avez-vous une solution...

emacs permet-il des couper/coller de police ?



Si je comprends bien la question, non.

prendre l'ascii ou le mode latin1 chez une police ayant les 4 modes
et prendre tous les symboles mathématiques sur une autre police ?



Oui, Emacs le peut :)
Il faut définir un "fontset", autrement dit un mapping qui indique des
plages de caractères et les polices qui servent à les afficher.

Je m'en suis déjà servi exactement pour cela (sous Mac OSX) : utiliser
une police pour le texte courant et une autre pour des caractères
unicode, en l'occurrence les "box drawing".

Tu peux avoir des infos sur un fontset avec M-x describe-fontset RET

Pour la définition des tes propres fontset, cela a peut-être bougé
depuis que j'ai joué avec en Emacs21 et 22, vu que la 23 connait utf-8
en interne. Mais voici quelques billes :
- la doc principale est dans la fonction create-fontset-from-fontset-spec
- une fois un fontset défini, on peut l'utiliser dans la définition
d'une frame, et dans ton ca notamment dans le default-frame-alist

Exemple :

(create-fontset-from-fontset-spec
"-apple-monaco-medium-r-normal--9-*-*-*-*-*-fontset-monaco,
ascii:-apple-monaco-medium-r-normal--9-90-75-75-m-90-mac-roman,
mule-unicode-0100-24ff:-apple-lucida
grande-medium-r-normal--0-0-75-75-m-0-mac-roman,
mule-unicode-2500-33ff:-apple-bitstream vera sans mono
bold-medium-r-normal--0-0-75-75-m-0-mac-roman,
latin-iso8859-15:-apple-monaco-medium-r-normal--9-90-75-75-m-90-mac-roman,
latin-iso8859-1:-apple-monaco-medium-r-normal--9-90-75-75-m-90-mac-roman")

(setq default-frame-alist
'((width . 120)
(height . 44)
(top . 426) ;;pixels
(left . 260);;pixels
;(font . "fontset-monaco");fontset-mac ;; preferences
;(font . (create-fontset-from-mac-roman-font "-apple-monaco-medium-r-normal--9-90-75-75-m-90-mac-roman"))
;(font . (create-fontset-from-mac-roman-font "unifont medium"))
(cursor-type . bar)))

Dans la définition de default-frame-alist (la fenêtre initiale d'Emacs
lors de son démarrage) il suffit de décommenter l'utilisation d'une
fonte pour l'utiliser.
(C'est extrait de mon .emacs)

Je ne sais pas du tout si ma définition de fontset fonctionnera
correctement sur ton système (j'en doute si ce n'est pas un mac) mais tu
as quelques pistes.

Si tu as besoin d'aide supplémentaire, il n'y a qu'à demander :)
--
Sébastien Kirche
Avatar
Sébastien Kirche
Le 27 août 2009 à 19:25, Sébastien Kirche a formulé :

Si tu as besoin d'aide supplémentaire, il n'y a qu'à demander :)



Ça m'a titillé de voir si l'usage des fontsets n'était pas plus simple
que ce que j'avais expérimenté.

En fait le manuel contient une section "Modifying Fontsets", avec des
exemples pour les cas où on souhaite juste modifier un fontset existant :

;; Use Liberation Mono for latin-3 charset.
(set-fontset-font "fontset-default" 'iso-8859-3 "Liberation Mono")

;; Prefer a big5 font for han characters
(set-fontset-font "fontset-default"
'han ( font-spec :registry "big5")
nil 'prepend)

;; Use DejaVu Sans Mono as a fallback in fontset-startup before
;; resorting to fontset-default.
(set-fontset-font "fontset-startup" nil "DejaVu Sans Mono" nil
'append)

;; Use MyPrivateFont for the Unicode private use area.
(set-fontset-font "fontset-default" '(#xe000 . #xf8ff)
"MyPrivateFont")

HTH
--
Sébastien Kirche
Avatar
Francois Maltey
Je te remercie de me guider dans les arcannes d'emacs.

"emacs -fn 10x20" lance un emacs qui contient tous les caractères que
je cherche, mais qui n'a ni police italique ni police grasse.

Les lettres grecs et les symboles mathématiques sont très complets.

"emacs' sans paramètre -fn ni entrée dans le .Xresources utilise une
police inconnue qui a bien et l'italique et le gras et le gras-
italique, tous de même largeur.

Je ne sais pas quelle est le nom de cette police par défaut.

Les deux polices ont a peu près la même largeur. J'utilise un emacs.
22.2 d'ubuntu.

J'ai testé pas mal de commande de cette forme :

(set-fontset-font "fontset-default" 'mule-unicode-0100-24ff "10x20")
(set-fontset-font "fontset-standard" 'mule-unicode-0100-24ff "10x20")
(set-fontset-font "fontset-default" 'greek-iso8859-7 "10x20")

Ces commandes renvoient nil, mais le

(ucs-insert #x2200)

qui devrait faire afficher un beau quantificateur qquesoit (le A tête
en bas) reste le triste rectangle vide,, alors que ce caractère est
bien visible dans emacs -fn "10x20".

Bien cordialement.

F. (qui poste cette fois-ci depuis gg)
Avatar
Sébastien Kirche
Le 27 août 2009 à 20:57, Francois Maltey s'est exprimé ainsi :

Je te remercie de me guider dans les arcannes d'emacs.



Bah, ça me permet d'effectuer un peu de recyclage dans mes connaissances
des encodages dans Emacs et de l'affichage.

"emacs -fn 10x20" lance un emacs qui contient tous les caractères que
je cherche, mais qui n'a ni police italique ni police grasse.

Les lettres grecs et les symboles mathématiques sont très complets.

"emacs' sans paramètre -fn ni entrée dans le .Xresources utilise une
police inconnue qui a bien et l'italique et le gras et le gras-
italique, tous de même largeur.

Je ne sais pas quelle est le nom de cette police par défaut.



En positionnant le point (le curseur) sur un caractère donné on peut
obtenir un tas d'informations avec la version longue de la commande
what-cursor-position (C-u C-x =)
On peut voir le nom de la fonte utilisée juste en dessous de la ligne
avec "display :". Cette information n'est pas disponible en mode texte
(dans un terminal).

Les deux polices ont a peu près la même largeur. J'utilise un emacs.
22.2 d'ubuntu.

J'ai testé pas mal de commande de cette forme :

(set-fontset-font "fontset-default" 'mule-unicode-0100-24ff "10x20")
(set-fontset-font "fontset-standard" 'mule-unicode-0100-24ff "10x20")
(set-fontset-font "fontset-default" 'greek-iso8859-7 "10x20")

Ces commandes renvoient nil, mais le

(ucs-insert #x2200)

qui devrait faire afficher un beau quantificateur qquesoit (le A tête
en bas) reste le triste rectangle vide,, alors que ce caractère est
bien visible dans emacs -fn "10x20".



Si tu as un rectangle vide c'est qu'Emacs ne sait pas avec quelle fonte
afficher le caractère. Cela peut se vérifier avec la commande C-u C-x précitée.
J'expérimente un peu au fur et à mesure de ma réponse : d'après le
manuel (chapitre fontsets), la fonction set-fontset-font permet de
modifier un fontset en spécifiant quelle fonte utiliser pour quel
caractère (ici la "fonte" peut être désignée par son nom ou par sa
famille, et "caractère" peut-être une plage de caractères, un charset ou
un "script name")

Par ailleurs, (font-family-list) et (x-family-fonts) permettent
d'obtenir des listes de familles et de noms de fontes utilisables par la
frame (fenêtre) courante.

En jouant un peu, j'arrive à choisir une fonte particulière pour le
caractère "quelque soit" :
(set-fontset-font nil '(#x2200 . #x2200) "Arial Unicode MS")

Ici le premier nil signifie que je modifie le fontset par défaut (qui
s'appelle d'ailleurs fontset-default)

À la place du simple nom de police on peut utiliser (font-spec) pour
construire une sélection de fonte un peu plus élaborée :
(set-fontset-font nil '(#x2200 . #x2200)
(font-spec :family "Arial Unicode MS" :size 24))

Ceci me permet d'afficher ce même caractère 0x2200 (et seulement lui) en
Arial 24 points. On peut aussi spécifier la graisse, l'inclinaison, le
soulignement...
Exemple : (font-spec :family "Arial Unicode MS" :size 24 :slant 'italic)

Il faut regarder la doc de font-spec et de set-face-attribute pour les
possibilités (mais je n'ai pas réussi à toutes les faire fonctionner
comme barré, encadré, couleur, ...)

Je pense que si on veut mixer plusieurs définitions et les réutiliser,
on a intérêt à créer un fontset personnalisé. Par exemple :

(create-fontset-from-fontset-spec "-misc-seki-medium-r-*-*-*-*-*-*-*-*-fontset-custom_seki")
(set-fontset-font "fontset-custom_seki" 'latin-iso8859-1 '("American Typewriter" . "iso8859-1"))
(set-fontset-font "fontset-custom_seki" 'latin-iso8859-15 '("American Typewriter" . "iso8859-15"))
(set-fontset-font "fontset-custom_seki" '(#x2200 . #x2200) (font-spec :family "Arial Unicode MS" :size 24 :slant 'italic))
(set-frame-font "-misc-seki-medium-r-*-*-*-*-*-*-*-*-fontset-custom_seki")

Normalement on doit pouvoir utiliser (font . "-misc...") dans le
default-frame-alist comme je disais dans mon message précédent mais là je
n'y arrive pas...

Est-ce que ça t'aide ?
--
Sébastien Kirche
Avatar
Francois Maltey
De retour !

Voil
Avatar
Francois Maltey
De retour,

Sébastien décrit bien comment ajouter les caractères unicode ou utf8 à
la police de caractères standard d'emacs. C'est très pratique pour
saisir de façon wysiwig des formules de maths qui tiennent sur une
seule ligne.

Il faut d'abord trouver le nom sous X11 des polices à employer. On
peut par exemple jouer avec xlsfonts ou le paramètre -fn et le nom de
la police comme 10x20 dans le lancement d'emacs.

Mais il faut trouver le nom complet de cette police. On peut le faire
dans emacs par
[C-u C-x =] placé n'importe ou dans le tampon.

Comment tester si cette police à les caractères X11 ?
par la commande (ucs-insert #02200) d'emacs qui insère ce code utf. ce
caractère #02200 est le quantificateur qquesoit de A majuscule tête en
base.

Enfin la commande set-fontset-set ajoute les caractères d'une police à
une autre.

Chez moi emacs-22 d'ubuntu se lance par défaut avec la police
-Adobe-Courier-Medium-R-Normal--17-120-100-100-M-100-ISO8859-1
qui a les quatre attributs d'une police :droite, italique, grasse et
grasse-italique.

J'y ajoute la police les caractères unicode de la police de surnom
10x20 qui est en fait
-Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1

(set-fontset-font "fontset-default" 'mule-unicode-0100-24ff
"-Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1")

Cette commande mise dans mon .emacs ajoute donc les caractères de
mathématique à une police qui a bien les 4 attributs associés au gras
et à l'italique.

Cela me permet de saisir des maths presque wysiwyg avec le paquetage
muse-el.