Liste des fontes
Voici une première fonction qui va vous permettre de récupérer une liste de fontes répondant aux critères d'un pattern respectant la convention XLFD.
XListFonts
char **XListFonts(display, pattern, maxnames, actual_count_return)
Display *display;
char *pattern;
int maxnames;
int *actual_count_return;
En entrée
display La connexion X server.
pattern chaîne de caractères spécifiant un nom de fonte
avec possibilité d'utiliser les ? et/ou *
maxnames Maximum de noms de fontes à retourner
En sortie
actual_count_return Nombre de noms effectivement retournés par la fonction
La fonction retourne NULL si rien à retourner, sinon, un pointeur sur un tableau de noms.
Le
serveur va réserver un espace mémoire pour retourner toutes ces
informations. Il faudra donc libérer cet espace.
Pour cela, vous utiliserez la fonction XFreeFontNames en indiquant le pointeur retourné lors de l'appel à la fonction XListFonts.
Il existe
une fonction similaire pour le shell qui se nomme xlsfonts
Exemple d'utilisation de la fonction XListFonts
Voici un exemple simple d'utilisation, où vous allez récupérer les 50 premiers noms de fontes ayant "fixed" indiquées.
La fonction qui suit est identique à la précedente, mais permet en plus de récupérer des informations sur les fontes
XListFontsWithInfo
char **XListFontsWithInfo(display, pattern, maxnames, count_return, info_return)
Display *display;
char *pattern;
int maxnames;
int *count_return;
XFontStruct **info_return;
En entrée
display La connexion X server.
pattern chaîne de caractères spécifiant un nom de fonte
avec possibilité d'utiliser les ? et/ou *
maxnames Maximum de noms de fontes à retourner
En sortie
count_return Nombre de noms effectivement retournés par la fonction
info_return Les informations sur les fontes retournées
La fonction retourne NULL si rien à retourner, sinon, un pointeur sur un tableau de noms et un pointeur sur les informations des fontes.
Le
serveur va réserver un espace mémoire pour retourner toutes ces
informations. Il faudra donc libérer cet espace.
Pour cela, vous utiliserez la fonction XFreeFontInfo en indiquant différentes informations comme suit:
- pattern qui contient la liste des fontes,
- info_return qui contient la listes des informations des fontes
- count_return qui est le nombre de fontes retournées
Exemple d'utilisation de la fonction XListFontsWithInfo
Voici un exemple simple d'utilisation, où vous allez récupérer les 100 premiers noms de fontes ayant "courier" indiquées et récupérer les informations pour calculer la hauteur.