Come è strutturato Pango

Pango opera fondamentalmente su paragrafi di testo. Il motivo per cui lavora su di un paragrafo alla volta è che il riordinamento bidirezionale più avere effetti e complicazioni soltanto all'interno di un paragrafo, ma non oltre. I vari processi che Pango effettua su di un paragrafo sono elencati più avanti in questa pagina. Non tutti questi processi sono necessariamente implementati come operazioni separate sul testo. Quello che viene inviato al processo è un pezzo di testo codificato con UTF-8 e una PangoAttributeList da applicare al testo. La lista degli attributi include le proprietà del carattere, della lingua, e altri che non influiscono sulla formattazione, come il colore del testo da visualizzare.

  1. Modificare i tag della lingua sul testo usando le informazioni sui possibili tag da utilizzare su ciascun carattere Unicode (non ancora implementato, il documento per la progettazione sulla selezione dei font è disponibile qui.)

  2. Determinare i livello di bidirezionalità per il testo.

  3. Determinare il motore da utilizzare per ciascun carattere nel testo dalle specifiche della lingua e dalla codifica.

  4. Determinare il font per ciascun carattere nel testo dagli attributi di questo.

  5. Determinare lo shaper per ciascun carattere interrogando il font usato per quel carattere.

  6. Dividere il testo in segmenti in base al font, lo shaper, livello di direzione e lingua.

  7. Convertire i caratteri di ciascun segmento in glyphs posizionati (i Glyphs sono rappresentati come PangoGlyphString).

  8. Determinare quanti segmenti riescono ad entrare in ciascuna riga. Suddividere i segmenti se necessario.

  9. Riordinare i segmenti di ciascuna linea da ordine logico a ordine di visualizzazione.

Il risultato di questo processo è una lista di PangoGlyphStrings per linea. Questi vengono poi inviati al visualizzatore.



Ultima modifica 06-Sep-2000
Owen Taylor <otaylor@redhat.com>
traduzione italiana: Christopher R. Gabriel <cgabriel@softwarelibero.ogr>