Pango

libreria

Pango (stilizzato come Παν語) è una libreria per la collocazione (layout) e la resa (rendering) dei glifi di un testo in modalità grafica per la maggior parte degli alfabeti diffusi al mondo.

Pango
software
Logo
Logo
GenereLibreria di C
SviluppatoreOwen Taylor[1]
Raph Levien
Behdad Esfahbod
Data prima versione11 luglio 1999[2]
Ultima versione1.52.2 (31 marzo 2024)
Ultima beta1.44.7 (25 ottobre 2019)
Sistema operativoMultipiattaforma
LinguaggioC
LicenzaLGPL
(licenza libera)
Sito webpango.gnome.org/

Il suo nome deriva dall'unione del termine greco pan (παν, "tutto") con quello giapponese go (語, "linguaggio")[3] e nacque come proposta di fusione tra i progetti GScript e GnomeText.[4][5][6][7][8]

Caratteristiche

Si tratta di una libreria special purpose, che si differenzia da quelle general purpose per la resa grafica come Cairo, con cui può essere usata in abbinamento e che viene persino raccomandata nella documentazione stessa di Cairo.[9]

La maggior parte del lavoro su Pango ha finora riguardato il contesto del widget toolkit GTK+. Pango costituisce il nucleo per la manipolazione del testo e dei font di caratteri anche per GTK+ versione 2.x.

La libreria è progettata per essere modulare; il nucleo del motore di layout di Pango può essere utilizzato con diversi font di backend. Ci sono tre backend di base, con molteplici opzioni per il rendering di ciascuno di essi:

  • Font lato client che utilizzano le librerie FreeType e fontconfig e che utilizzano HarfBuzz per la manipolazione di testi complessi. Il rendering può avvenire con le librerie Cairo oppure Xft, o direttamente verso un buffer in memoria senza ricorso a librerie aggiuntive.
  • Font nativi su Microsoft Windows che utilizzano Uniscribe per la manipolazione di testi complessi. Il rendering può essere fatto tramite Cairo o direttamente utilizzando le API native Win32.
  • Font nativi su Mac OS X che utilizzano CoreText per la manipolazione di testi complessi, ed utilizzando Cairo per il rendering.

È possibile caricare dinamicamente moduli aggiuntivi per poi gestire il layout del testo di particolari combinazioni di scritture e di font di backend. Pango viene distribuita con una vasta selezione di moduli, per esempio per l'ebraico, l'arabo, l'Hangŭl, il thailandese e un certo numero di scritture indiane. Sono virtualmente supportati tutti i principali alfabeti del mondo.

Pango include PangoLayout, un driver di alto livello per la collocazione di interi blocchi di testo, e le routine per aiutare la stesura di testo internazionalizzato.

Pango dipende dalla versione 2.x della libreria GLib.

Supporto per funzionalità OpenType

Rendering di default del testo (in basso) comparato con quello localizzato per la lingua romena (in alto)

La versione 1.17 di Pango (e successive) supportano la funzionalità OpenType locl, che consente l'utilizzo di glifi localizzati per lo stesso punto di codice Unicode. Un esempio rapido visibile su Linux è dato dal seguente codice (assumendo che si sia installata la versione 5.01 del font Verdana, che supporta la funzionalità locl per la lingua romena):

for lang in en ro; do pango-view \ --font="Verdana 64" \ --text "şţ vs. șț in $lang" \ --language=$lang; done

Impostando la lingua locale attraverso l'apposita variabile d'ambiente POSIX (ad esempio LANG=ro_RO.UTF-8), Pango adotterà la funzionalità locl per i font. Infine, è possibile cambiare la lingua all'istante nello stesso testo usando il markup di Pango, come nel seguente codice:

pango-view \ --font="Verdana 24" \ --markup \ --text 'In the same text: şţ(en) and <span lang="ro">şţ(ro).</span>'

A partire dalla versione 1.37.1, Pango ha aggiunto ulteriori attributi per fornire un pieno supporto per le funzionalità OpenType.[10][11][12]

Principali applicazioni

Architettura software semplificata di GTK

Pango è stato integrato nella maggior parte delle distribuzioni Linux. Il toolkit per l'interfaccia utente GTK utilizza Pango per tutti i suoi rendering di testo,[13] così come le versioni per Linux di Mozilla Firefox e Mozilla Thunderbird.[14]

Note

Altri progetti

Collegamenti esterni

Portale Software libero: accedi alle voci di Wikipedia che trattano di software libero