Fermé. Cette question est hors sujet . Il naccepte pas les réponses actuellement.

Commentaires

  • Je commencerais par lire la documentation de lAPI qui se trouve ici freedesktop.org/software/ fontconfig / fontconfig-devel
  • @PaulH. Jai lu cette documentation de manière abstraite plus tôt. En fait, ce document explique plus sur les fonctions et les types de données, etc., mais pas sur le fonctionnement de chaque module ou sur toute idée liée à cela 🙁
  • OK. Mais si vous voulez comprendre le code source, cette documentation sera utile car les types de données et les fonctions sont utilisés dans le code source. Quel est exactement votre objectif? Est-ce de savoir comment utiliser les commandes que vous avez mentionnées ou de comprendre ce qui se passe exactement " sous le capot "?
  • @PaulH. Mon objectif principal est à la fois que vous avez mentionné, mais le premier objectif est ce qui se passe réellement?

Réponse

TL; DR: Comprendre fontconfig nécessite de comprendre pourquoi il a été créé et quels problèmes il essaie de résoudre. Cela nécessite une grande compréhension de Xorg.

La configuration des polices sur les machines UNIX est passée par différentes phases et fontconfig est simplement lune des possibilités que vous pouvez utiliser pour utilisez des polices via Xorg. Lire la source de fontconfig sans une bonne compréhension de la source de Xorg est probablement très difficile. Mais, je crois quune compréhension des concepts derrière lévolution des polices peut savérer un bon point de départ.

Avertissement: je moccupe beaucoup des polices sous Linux, mais je nai jamais vraiment eu besoin de changer le code Xorg relatif aux polices.

Le wiki Arch Linux contient également beaucoup dinformations à ce sujet

Un peu dhistoire

Les polices UNIX dorigine étaient simplement des polices bitmap. Aujourdhui, ceux-ci peuvent être trouvés dans /usr/share/fonts/misc, le PCF (format compilé portable) est utilisé pour presque tous aujourdhui. Cest un format binaire. Il y a eu dautres formats de polices binaires mais je dois admettre que je nai jamais eu besoin dutiliser un autre format que PCF pour les polices binaires. En utilisant xfontsel, vous pouvez configurer une chaîne Xorg pour définir les points, lespacement, la taille des pixels, le poids du terminal (gras, oblique), lencodage, entre autres de la police.

Les polices bitmap ont des fichiers différents pour différentes tailles de pixels de la police. Les polices bitmap introduisent déjà le concept de famille de polices.

Postscript (et TeX dans une certaine mesure) a créé des polices de type 1 qui sont des polices vectorielles. Ceux-ci se trouvent dans /usr/share/fonts/Type1. Les polices vectorielles sont configurées avec plusieurs valeurs de configuration, par ex. antialias, en gras, dpi ou taille (pas nécessairement basée sur des points cette fois).

Les polices vectorielles sont mises à léchelle et ne nécessitent pas plusieurs fichiers.

Xorg a utilisé à la fois des polices bitmap et Type1 . Et il a créé le XFT (enfin X FreeType est une interface avec FreeType qui est une bibliothèque GPL / BSD qui imite et étend Type1). XFT permet non seulement lutilisation des polices Type1 et FreeType, mais aussi dautres formats: OTF par Adobe et Microsoft, TTF par Apple. De plus, XFT permet la mise à léchelle des anciennes polices bitmap pour quelles ressemblent aux polices Type 1.

Plusieurs autres attributs, comme hinting ou hintstyle , ont été ajoutés pour définir les attributs de ces polices.

Tout ce qui peut être trouvé dans les sous-dossiers de /usr/share/fonts. Et les paramètres XFT peuvent être configurés dans votre Xresources.

FontConfig

Et fontconfig doit traiter toutes les différences de ci-dessus. En dautres termes, fontconfig est une tentative de configuration de tous les types de polices ci-dessus de manière à exploiter les attributs des polices distinctes avec une syntaxe commune.

Les polices bitmap ont leurs problèmes:

  • plusieurs fichiers différents pour une seule police
  • tailles limitées par points et tailles de pixels.

Mais il en va de même pour les polices vectorielles:

  • la mise à léchelle prend du temps, surtout si plusieurs paramètres sont utilisés
  • tous les attributs de police naffectent pas les différents types de police de la même manière

Et les deux ont le problème quil existe de nombreux formats de polices et quun utilisateur peut souhaiter installer ses propres polices chez lui. Fontconfig essaie de résoudre ces problèmes.

fc-query vous dit ce que fontconfig comprend le fichier de polices. Notamment à quels attributs le fichier est destiné (pour les polices bitmap par exemple) et quels attributs peuvent être utilisés (pour les polices vectorielles).

fc-list est un moyen de vous dire quelles polices peuvent être trouvées dans les répertoires que fontconfig regarde, et donc ne peuvent être utilisées par les applications. Enfin fc-cache effectue une indexation de ces polices pour les retrouver plus facilement et les mettre à léchelle (entre autres) pour une utilisation applicative.

La bibliothèque partagée fontocnfig dautre part la main est la partie la plus intéressante. Il utilise les fichiers de configuration (/etc/fonts, ~/.config/fontconfig) et le cache de polices pour donner des polices préparées directement aux applications qui lui sont liées. Comme la plupart des applications utilisaient XFT (et donc FreeType) et que la bibliothèque FreeType utilise des appels de la bibliothèque fontconfig, lutilisation de ces polices devient omniprésente.

Mais notez que vous pouvez compiler un programme qui demandera à Xorg une police bitmap dans lancien style (par exemple -*-terminus-medium-r-normal-*-*-200-*-*-c-*-*-u) et lappel ne passera pas par la bibliothèque partagée fontconfig.

Commentaires

  • Merci pour votre réponse détaillée. Je comprends ce que vous essayez de dire. En fait, vous avez défini Fc-query et fc-list mais je veux savoir des choses comme quand un programme de niveau jouet essaie dutiliser FC et ses fonctions où la demande est-elle dabord envoyée? je veux dire quel est le point de départ? Jai essayé dajouter une déclaration comme printf (" testing ") dans la fonction principale de fc-query et que jai écrit la commande fc-query du terminal mais je ne pouvais pas voir cela. je lai recompilé par la commande make
  • @AmmarUlHassan – Heh, printf("something") nutilisera jamais la bibliothèque fontconfig ' car ce qui concerne la police est lémulateur de terminal. Pour utiliser fontconfig, vous avez besoin dun programme lié à X11, et il doit dessiner les polices sur lécran par lui-même. Mais si vous pouvez ' t obtenir un printf dans main () à afficher sur le terminal qui est probablement un problème PATH, ' car vous avez certainement déjà installé fontconfig.
  • ok très bien. Mais que faire si je veux un petit script dans fontconfig qui peut réellement appeler une fonction dune autre bibliothèque partagée sur mon système. Le scénario idéal est que jajouterai un fichier den-tête de cette bibliothèque dans fontconfig (un fichier dont je ne sais pas lequel 1) et que je recompilerai le fontconfig et exécuterai ce fichier pour quil appelle la fonction de cette bibliothèque.
  • @AmmarUlHassan – Que ' est trop de choses. Fontconfig nest pas un environnement de script, il fait simplement ce quil est censé faire: fournir des polices précopilées / mises en cache pour que Xorg les affiche lorsque ti rafraîchit lécran. Si vous avez besoin dapplications pour utiliser la bibliothèque partagée de la fontconfig que vous avez compilée, vous devez reconfigurer ldconfig pour utiliser votre bibliothèque partagée au lieu de la bibliothèque que libfreetype2 appelle actuellement. Jai limpression que vous ' essayez de mordre sur trop de choses à la fois.
  • ha ha ouais peut-être … Donc la conclusion est quavant de creuser profonde jai besoin de comprendre lhistoire? Xft? et que les fonctions FC et les types de données?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *