Come funziona il rendering dei caratteri?


11

Mi rendo conto di non sapere praticamente nulla del modo in cui i caratteri vengono visualizzati nel mio computer.

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

Ciò che ottengo da quanto sopra è che probabilmente tutte le applicazioni che richiedono il rendering dei caratteri fanno uso di alcune librerie su tutto il sistema operativo (o DE).

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

Non sono sicuro di come questi due fatti siano compatibili. Suppongo che il browser dovrebbe chiedere al sistema operativo di disegnare un glifo in una determinata posizione, ma come può gestire il flusso di 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 piccoli riquadri che verranno successivamente compilati dal sistema operativo? (Anche se questo non si occupa della crenatura). O il sistema operativo è responsabile del disegno di un'intera area di testo, incluso il flusso di testo? Il sistema operativo restituisce il glifo renderizzato come bitmap e lo lascia all'applicazione per disegnarlo sullo schermo?


1
La risposta breve è "sì".
Graham Borland,

@GrahamBorland ...: - / A quale delle tre alternative che ho illustrato è la risposta "sì"?
Andrea,

Tutti loro, a seconda delle circostanze. Proverò a scrivere una risposta adeguata.
Graham Borland,

Risposte:


9

È corretto che, in generale, le applicazioni utilizzino le librerie fornite dal sistema operativo o da un toolkit GUI per eseguire il rendering dei caratteri.

I motori di caratteri tipici consentono una serie di modalità operative. Nel 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 livello di controllo più fine, ad esempio browser o elaboratori di testi, il motore esporrà interfacce in cui l'app può richiedere la misurazione anticipata di un determinato testo. L'app può quindi utilizzare questa conoscenza per capire quanto testo può contenere su una linea, dove dovrebbero essere le interruzioni di riga, quanto spazio occuperà un paragrafo, ecc. L'app può comunque chiedere al motore di eseguire il rendering effettivo dei pixel.

(Potrebbe esserci uno scenario intermedio in cui il motore può prendere un parametro di larghezza massima e possibilmente alcuni parametri di crenatura / riempimento e renderizzare automaticamente tutto il testo che può adattarsi.)

Infine, il motore dei caratteri potrebbe consentire all'app di assumere il rendering finale del testo, restituendo bitmap di glifi pre-renderizzati ad una certa dimensione, consentendo all'app di posizionarlo e comporlo sul display finale. Oppure il motore potrebbe persino offrire di restituire i dati grezzi del profilo glifo per il rendering con alcuni toolkit vettoriali.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.