20.10. Définir des Jeux de Polices

Emacs crée automatiquement un jeu de polices standard selon la valeur de standard-fontset-spec. Le nom de ce jeu de polices est

-*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard

ou seulement fontset-standard pour simplifier.

Les variantes grasses, italiques, et grasses-italiques du jeu de polices standard sont créés automatiquement. Leurs noms ont bold à la place de medium, ou i à la place de r, ou les deux.

Si vous spécifiez une police ASCII par défaut avec la ressource Font ou l'argument -fn, Emacs génère automatiquement un jeu de polices à partir de celle-ci. C'est le jeu de polices de départ et son nom est fontset-startup. Il fait ceci en remplaçant les champs fonderie, famille, style, et largeur_moyenne de la police avec *, en remplaçant le champ registre_jeu_de_caractères avec fontset, en remplaçant le champ encodage_jeu_de_caractères avec startup, puis en utilisant la chaîne résultante pour spécifier un jeu de polices.

Ainsi, si vous démarrez Emacs de cette manière,

emacs -fn *courier-medium-r-normal--14-140-*-iso8859-1

Emacs génère le jeu de polices suivant et l'utilise pour la fenêtre X du cadre initial :

-*-*-medium-r-normal-*-14-140-*-*-*-*-fontset-startup

Avec la ressource X Emacs.Font, vous pouvez spécifier un nom de jeu de polices exactement comme pour un nom de police. Mais faites attention de ne pas spécifier un nom de jeu de polices dans une ressource générique comme Emacs*Font--cette spécification générique s'applique à diverses autres utilisations, comme les menus, et les menus ne peuvent pas accepter de jeux de polices.

Vous pouvez spécifier des jeux de polices additionnels en utilisant les ressources X appelées Fontset-n, où n est un entier commençant à 0. La valeur de la ressource doit avoir cette forme :

motif_police, [nom_jeu_de_caractères:nom_polices]…

motif_police doit avoir la forme d'un nom de police X standard, sauf pour les deux derniers champs. Ils doivent avoir la forme fontset-alias.

Le jeu de polices a deux noms, un long et un court. Le nom long est motif_police. Le nom court est fontset-alias. Vous pouvez vous référer au jeu de caractères par l'un ou l'autre nom.

La construction jeu_de_caractères:police spécifie quelle police utiliser (dans ce jeu de polices) pour un jeu de caractères particulier. Ici, jeu_de_caractères est le nom d'un jeu de caractères, et police est la police à utiliser pour ce jeu de caractères. Vous pouvez utiliser cette construction un nombre quelconque de fois dans la définition d'un jeu de polices.

Pour les autres jeux de caractères, Emacs choisit une police basée sur motif_police. Il remplace fontset-alias avec les valeurs décrivant le jeu de caractères. Pour la police de caractères ASCII, fontset-alias est remplacé par ISO8859-1.

De plus, lorsque plusieurs champs consécutifs sont des jokers, Emacs les rassemble en un seul joker. Ceci est prévu pour éviter l'usage de polices auto-redimensionnées. Des polices créées en redimensionannt des polices plus grandes ne sont pas utilisables pour l'édition, et redimensionner des polices plus petites n'est pas utile car il est préférable d'utiliser la petite police dans sa taille réelle, ce que fait Emacs.

Par exemple, si motif_police est,

-*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24

la spécification de police pour des caractères ASCII serait :

-*-fixed-medium-r-normal-*-24-*-ISO8859-1

et la spécification de police pour les caractères chinois GB2312 serait :

-*-fixed-medium-r-normal-*-24-*-gb2312*-*

Vous pouvez n'avoir aucune police chinoise correspondant à la spécification de police précédente. La plupart des distributions X incluent seulement des polices chinoises ayant song ti ou fangsong ti dans le champ famille Dans un tel cas, Fontset-n peut être spécifié ainsi :

Emacs.Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,\
        chinese-gb2312:-*-*-medium-r-normal-*-24-*-gb2312*-*

Ainsi, les spécifications de polices pour tous les caractères sauf ceux chinois ont fixed dans le champ famille, et la spécification de police pour les caractèrs chinois GB2312 a un joker * dans le champ famille.

La fonction qui traite la valeur de la ressource Fontset pour créer le jeu de polices est appelée create-fontset-from-fontset-spec. Vous pouvez aussi appeler explicitement cette fonction pour créer un jeu de polices.

Section B.7, pour plus d'informations sur les noms de polices X.