Come funziona il rendering dei caratteri?

10

Mi rendo conto che non so sostanzialmente nulla sul modo in cui i font vengono renderizzati sul mio computer.

Da quello che posso osservare, il rendering dei font è generalmente realizzato in modo coerente in tutto il sistema. Ad esempio, le impostazioni di suggerimento sui font subpixel che configuro nel mio pannello di controllo DE hanno influenza sul testo che appare sui bordi delle finestre, nel mio browser, nel mio editor di testo e così via. (Dovrei osservare che alcune applicazioni Java mostrano una differenza notevole, quindi suppongo stiano utilizzando un meccanismo di rendering dei font diverso).

Ciò che ottengo da quanto sopra è che probabilmente tutte le applicazioni che richiedono il rendering dei caratteri fanno uso di una libreria di OS (o DE).

D'altra parte, i browser di solito gestiscono il proprio rendering tramite un motore di rendering, che si occupa del posizionamento di vari elementi, incluso il testo, in base a regole di flusso specifiche.

Non sono sicuro di come questi due fatti siano compatibili. Immagino che il browser dovrebbe chiedere al sistema operativo di disegnare un glifo in una determinata posizione, ma come può gestire il flusso del testo senza sapere in anticipo quanto spazio occuperà il glifo? Esistono chiamate separate per determinare le dimensioni dei glifi, in modo che il browser possa gestire il flusso come se i caratteri fossero piccole caselle che verranno successivamente compilate dal sistema operativo? (Anche se questo non si prende cura del kerning). O il sistema operativo è responsabile del disegno di un'intera area di testo, incluso il flusso del testo? Il sistema operativo restituisce l'icona di rendering come bitmap e lo lascia all'applicazione per disegnarlo sullo schermo?

    
posta Andrea 06.11.2012 - 17:11
fonte

1 risposta

9

Hai ragione che, in generale, le applicazioni utilizzano librerie fornite dal sistema operativo o un toolkit GUI per eseguire il rendering dei font.

I tipici motori di font consentono un certo numero di modalità di funzionamento. Per il caso semplice, un'applicazione può richiedere che una stringa di testo venga disegnata in una determinata posizione e il motore si occupa di tutto (misurazione, posizionamento, disegno dei pixel sul display, ecc.)

Per le applicazioni che richiedono un grado di controllo più preciso - browser o word processor, ad esempio - il motore esporrà le interfacce in cui l'app può chiedere una determinata porzione di testo da misurare in anticipo. L'app può quindi utilizzare questa conoscenza per calcolare la quantità di testo che può contenere su una riga, dove dovrebbero essere le interruzioni di linea, quanto spazio occuperà un paragrafo, ecc. L'app può ancora chiedere al motore di eseguire il rendering effettivo dei pixel.

(Potrebbe esserci uno scenario intermedio in cui il motore può utilizzare un parametro di larghezza massima e, eventualmente, alcuni parametri di kerning / padding e eseguire automaticamente il rendering di tutto il testo che può contenere.)

Infine, il motore dei font potrebbe consentire all'app di prendere il controllo del rendering finale del testo, restituendo bitmap di glifi pre-renderizzati con una certa dimensione, consentendo all'app di posizionarsi e comporla sul display finale. Oppure il motore potrebbe anche offrire di restituire i dati grezzi del profilo del glifo per il rendering con alcuni toolkit vettoriali.

    
risposta data 06.11.2012 - 18:03
fonte

Leggi altre domande sui tag