Chiusa. Questa domanda è fuori tema . Attualmente non accetta risposte.

Commenti

  • Vorrei iniziare leggendo la documentazione API che può essere trovata qui freedesktop.org/software/ fontconfig / fontconfig-devel
  • @PaulH. Ho letto questa documentazione in modo astratto in precedenza. In realtà questo documento spiega di più sulle funzioni e sui tipi di dati ecc. Ma non su come funziona ogni modulo o su qualsiasi idea correlata a questo 🙁
  • OK. Ma se vuoi capire il codice sorgente, quella documentazione sarà utile poiché i tipi di dati e le funzioni sono utilizzati nel codice sorgente. Qual è esattamente il tuo obiettivo? È sapere come utilizzare i comandi che hai menzionato o capire cosa sta succedendo esattamente " sotto the hood "?
  • @PaulH. Il mio obiettivo principale è quello che hai menzionato entrambi, ma il primo obiettivo è ciò che sta realmente accadendo?

Risposta

TL; DR: Capire fontconfig richiede la comprensione del motivo per cui è stato creato e quali problemi sta cercando di risolvere. Ciò richiede molta comprensione di Xorg.

La configurazione dei caratteri su macchine UNIX ha attraversato fasi diverse e fontconfig è semplicemente una delle possibilità che puoi sfruttare usa i caratteri tramite Xorg. Leggere il sorgente di fontconfig senza una buona comprensione del sorgente di Xorg è probabilmente molto difficile. Tuttavia, credo che la comprensione dei concetti alla base dellevoluzione dei caratteri possa rivelarsi un buon punto di partenza.

Dichiarazione di non responsabilità: mi occupo molto di caratteri su Linux, ma non ho mai avuto bisogno di cambiare il codice Xorg relativo ai caratteri.

Il wiki di Arch Linux ha molte informazioni anche su questo

Un po di storia

I caratteri UNIX originali erano semplicemente caratteri bitmap. Oggi questi possono essere trovati in /usr/share/fonts/misc, il PCF (formato compilato portatile) è usato praticamente per tutti oggi. È un formato binario. Ci sono stati altri formati di caratteri binari, ma devo ammettere che non ho mai avuto bisogno di utilizzare altri formati oltre a PCF per i caratteri binari. Utilizzando xfontsel puoi configurare una stringa Xorg per definire i punti, la spaziatura, la dimensione dei pixel, il peso del terminale (grassetto, inclinazione), la codifica, tra gli altri del carattere.

I caratteri bitmap hanno file diversi per diverse dimensioni in pixel del carattere. I caratteri bitmap introducono già il concetto di famiglia di caratteri.

Postscript (e TeX in una certa misura) ha creato caratteri di Tipo 1 che sono caratteri basati su vettori. Questi sono in /usr/share/fonts/Type1. I caratteri vettoriali sono configurati con diversi valori di configurazione, ad es. antialias, embolden, dpi o dimensione (questa volta non necessariamente basata sui punti).

I caratteri basati su vettori sono ridimensionati e non richiedono diversi file.

Xorg utilizzava caratteri bitmap e Type1 . E ha creato XFT (beh X FreeType è uninterfaccia per FreeType che è una libreria GPL / BSD che imita ed estende Type1). XFT non solo consente lutilizzo di font Type1 e FreeType, ma anche di altri formati: OTF di Adobe e Microsoft, TTF di Apple. Inoltre XFT consente il ridimensionamento dei vecchi caratteri bitmap in modo che assomiglino ai caratteri Type1.

Diversi altri attributi, come hinting o hintstyle , sono stati aggiunti per definire gli attributi di questi caratteri.

Tutto ciò che può essere trovato nelle sottocartelle di /usr/share/fonts. E i parametri XFT possono essere configurati nel tuo Xresources.

FontConfig

E fontconfig deve gestire tutte le discrepanze del precedente. In altre parole fontconfig è un tentativo di configurare tutti i tipi di font sopra in un modo che possa sfruttare gli attributi che i font distinti hanno con una sintassi comune.

I font bitmap hanno i loro problemi:

  • diversi file diversi per un singolo carattere
  • dimensioni limitate in punti e dimensioni in pixel.

Ma lo stesso vale per i caratteri vettoriali:

  • il ridimensionamento richiede tempo, specialmente se vengono utilizzati più parametri
  • non tutti gli attributi dei caratteri influenzano i diversi tipi di caratteri allo stesso modo

Ed entrambi hanno il problema che ci sono molti formati di font e che un utente potrebbe voler installare i propri font nella sua casa. Fontconfig cerca di risolvere questi problemi.

fc-query ti dice cosa comprende fontconfig sul file dei font. In particolare per quali attributi è il file (per i caratteri bitmap ad esempio) e quali attributi possono essere utilizzati (per i caratteri vettoriali).

fc-list è un modo per dirti quali caratteri possono essere trovati nelle directory che fontconfig sta guardando, e quindi possono essere usati dalle applicazioni. Infine fc-cache esegue unindicizzazione di questi caratteri per trovarli più facilmente e per ridimensionarli (tra le altre cose) per luso dellapplicazione.

La libreria condivisa fontocnfig dallaltra la mano è la parte più interessante. Utilizza i file di configurazione (/etc/fonts, ~/.config/fontconfig) e la cache dei font per fornire i font preparati direttamente alle applicazioni che sono collegate ad esso. Poiché la maggior parte delle applicazioni utilizzava XFT (e quindi FreeType) e la libreria FreeType utilizza chiamate dalla libreria fontconfig, luso di questi caratteri diventa onnipresente.

Ma nota che puoi compilare un programma che chiederà a Xorg un carattere bitmap nel vecchio stile (ad es. -*-terminus-medium-r-normal-*-*-200-*-*-c-*-*-u) e la chiamata non passerà attraverso la libreria condivisa fontconfig.

Commenti

  • Grazie per la tua risposta dettagliata, capisco cosa stai cercando di dire. In realtà hai definito Fc-query e fc-list ma voglio sapere cose come quando qualche programma a livello di giocattolo cerca di utilizzare FC e le sue funzioni dove viene inviata la prima richiesta? voglio dire qual è il punto di partenza? Ho provato ad aggiungere unistruzione come printf (" testing ") nella funzione principale di fc-query e ho scritto il comando fc-query dal terminale ma non riuscivo a vederlo. lho compilato di nuovo con il comando make però
  • @AmmarUlHassan – Heh, printf("something") non utilizzerà mai la libreria fontconfig ' perché quello che ha a che fare con il carattere è lemulatore di terminale. Per usare fontconfig è necessario un programma collegato a X11, e deve disegnare da solo i caratteri sullo schermo. Ma se puoi ' ottenere un printf in main () da mostrare sul terminale che è probabile un problema PATH, ' perché sicuramente fontconfig è già installato.
  • ok, va bene. Ma cosa succede se voglio qualche piccolo script in fontconfig che può effettivamente chiamare qualche funzione di qualche altra libreria condivisa sul mio sistema. Lo scenario ideale è che aggiungerò un file di intestazione di quella libreria in fontconfig (alcuni file non so quale 1) e poi ricompilerò fontconfig ed eseguirò quel file in modo che chiami la funzione di quella libreria.
  • @AmmarUlHassan – Quelle ' sono troppe cose. Fontconfig non è un ambiente di scripting, fa semplicemente quello che dovrebbe fare: fornire font precopilati / memorizzati nella cache che Xorg deve visualizzare quando ti aggiorna lo schermo. Se hai bisogno di applicazioni per utilizzare la libreria condivisa del fontconfig che hai compilato, devi riconfigurare ldconfig per utilizzare la tua libreria condivisa invece della libreria che libfreetype2 sta attualmente chiamando. Ho limpressione che ' stia cercando di mordere troppe cose in una volta.
  • ah ah sì potrebbe essere … Quindi la conclusione è che prima di scavare profondo ho bisogno di capire la storia? Xft? e poi funzioni FC e tipi di dati?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *