Comment Linux gère-t-il les polices?

11

Lorsque j'utilisais Windows (il y a très très longtemps!) Et Mac OS X, il y avait toujours un "référentiel" central de polices partagées et accessibles par le système d'exploitation et tous les programmes (le dossier des polices sous Windows et le Livre des polices sous Mac OS X).

Comment les polices sont-elles gérées sous Linux? Existe-t-il également un magasin central pour les polices que tous les programmes (le shell sans X, avec X, les gestionnaires de fenêtres, d'autres logiciels GUI) peuvent utiliser? Ou les polices sont-elles gérées séparément? Que puis-je faire pour gérer efficacement et facilement mes polices sous Linux?

hpy
la source

Réponses:

13

Il existe deux mécanismes pour les polices dans X land: côté serveur et côté client.

La manière traditionnelle de rendre les polices consiste pour le client à dire au serveur «rendre fooà la position (x, y) dans la police F» (où une spécification de police comprend une face, une taille, un encodage et d'autres attributs). Soit le serveur X lui-même, soit un programme spécialisé appelé serveur de polices , ouvre le fichier de polices pour construire la description de chaque glyphe. Les polices peuvent être des polices bitmap ou vectorielles, mais les polices vectorielles sont converties en bitmaps avant le rendu.

La plupart des programmes modernes utilisent le rendu des polices côté client, souvent via xft et fontconfig . Un nouveau mécanisme était nécessaire car le rendu des polices côté serveur ne prenait pas en charge l'anticrénelage.

En dehors de X (c'est-à-dire sur une console VGA), il existe des polices VGA, qui sont des polices bitmap de tailles spécifiques. Mais par rapport au X11, personne n'utilise la console VGA, donc peu d'efforts y sont consacrés.

En pratique, vous souhaiterez configurer les polices de deux manières:

  • Pour les programmes de style ancien: les répertoires de polices sont répertoriés via des FontPathdirectives dans xorg.confet peuvent être manipulés avec des xset fpcommandes par l'utilisateur exécutant X. Si vous installez de nouvelles polices, vous devrez peut-être exécuter mkfontdir.
  • Pour les programmes de style les plus récents, y compris tous Gtk (Gnome, etc.) et Qt (KDE, etc.) des programmes: les polices sont dans les répertoires indiqués par <dir>directives /etc/fonts/fonts.conf, ~/.fonts.confet quelques autres endroits. Voir la documentation de fontconfig pour plus d'informations. Si vous installez de nouvelles polices, vous devrez peut-être exécuter fc-cache.
Gilles 'SO- arrête d'être méchant'
la source
3

Les polices console et les polices X sont deux choses distinctes sous Linux. Utilisez la commande setfontpour changer votre police et showconsolefontvoir à quoi elle ressemble. Chaque distribution a sa propre façon de définir la police par défaut de la console. Lisez la setfontpage de manuel pour l'emplacement des polices de la console. Pour mon système Fedora 14, c'est / lib / kbd / consolefonts /. Les polices de console sont un format de fichier qui définit les polices de console EGA / VGA.

Les polices X ont un format différent de celui des polices console. Ils sont généralement gérés par des définitions dans votre configuration X (avec FontPath dans la section Fichiers), ou via un serveur de polices (xfs), qui est également défini dans la section Fichiers avec FontPath. Vous pouvez également ajouter FontPaths en exécutant xset +fp path. Mon système a toutes ses polices X dans / usr / share / X11 / fonts.

jsbillings
la source
Cela signifie-t-il que tous les programmes GUI qui s'exécutent sur X utiliseront les polices X?
hpy
1
@penyuan: Pas nécessairement, mais pour la majorité des cas, oui. De nombreux programmes GUI utilisent des bibliothèques de niveau supérieur (comme GTK ou Qt) qui gèrent les polices pour vous.
jsbillings
Notez que les documents (par exemple (La) TeX) utilisent encore un autre ensemble de polices.
vonbrand