2016-01-11 10 views
23

Praticamente come dice il titolo. Il rendering di tutti i formati Unicode correttamente con caratteri compositi e caratteri che influenzano altri personaggi e legature è davvero difficile, lo capisco. Abbiamo font che sembrano progettati per il massimo supporto dei simboli Unicode (Symbola, Code2001, altri) e font speciali per determinati piani o intervalli di caratteri (BabelStone Han, altri).Perché non c'è un font che contiene tutti i glifi Unicode?

Non so molto sui dettagli tecnici sottostanti per i caratteri. C'è una dimensione massima? È un problema di copyright? È essenzialmente ridisegnare troppo tutti i ~ 110.000 glifi esistenti? Comprendo i problemi di stile, ma perché non ricorrere a un carattere "predefinito" con glifi per tutto? Sono su unicode.org, ridisegnarli tutti sarebbe un compito piuttosto difficile, ma poi avresti un font di fallback garantito per tutto. Se hai i diritti su alcuni font preesistenti potresti semplicemente comporli e questo dovrebbe aiutare molto. Un tale font sarebbe di grande aiuto per l'umanità e non riesco a vedere una buona ragione tecnica per cui non esiste o almeno uno sforzo open source per crearlo, quindi presumo una ragione invisibile per me perché non può essere fatto.

Qual è questa ragione?

+0

Se vuoi che il tuo carattere tipografico non assomigli a uno sforzo dilettantistico, allora hai bisogno di uno specialista per ogni sceneggiatura. E Unicode ha un * lotto * di script. –

+4

Lo stile non era qualcosa di cui ero preoccupato. Stavo pensando "beh, perché non ho un font di fallback che ha tutto, quindi non vedresti mai 'glifo non presente' perché non è utile" e un glifo brutto non batte glifo. Come indicato nella risposta di Mike, vi sono motivi tecnici per cui è necessaria una raccolta di font e ottimi tentativi di raccolta di font open source. –

+0

Limitazioni di peso a parte, la corrispondenza di stile è il motivo per cui sono preferite le famiglie di caratteri. La maggior parte dei caratteri CJK ha lettere latine dall'aspetto strano per rendere coerente quest'ultima. Quando non sono fatti attivamente per abbinare hai stranezze: ⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ è il mio cruccio. Adobe Garamond Premier -Pricey- ha il latino e il greco, ma non intendevano che i chimici usassero simultaneamente - "α-chetoglutarato" sembra strano in molti tipi di carattere. –

risposta

39

"Sei serio?" commenti a parte, da un punto di vista della programmazione c'è una ragione molto semplice: la specifica OpenType offre solo uno spazio di indirizzo del glifo di uno USHORT, quindi un font può supportare solo 16 bit di glifi, o 65536 glifi max.

La versione corrente di Unicode, v8 di questa risposta, contiene 120737 punti di codice assegnati o quasi il doppio di quelli di un carattere moderno. Infatti, Unicode non si è adattato a un font OpenType moderno dal 2001, con il rilascio di Unicode 3.1, che ha aumentato il numero di punti di codice da 49259 a 94205.

"Quindi che ne è delle raccolte di caratteri?" Ho sentito chiederlo. Perché non usare più font e supportare tutti gli unicode in questo modo? Bene, ora hai appena descritto Adobe Source Pro e Google Noto (che sono lo stesso font).

Per quanto riguarda "quanto può essere difficile": uno stile uniforme per tutti i glifi in Unicode, attraverso 129 script scritti stabiliti su questo pianeta, ciascuno con le proprie regole di composizione? Incredibilmente difficile. Si può pensare che i caratteri siano solo file con immagini per le lettere, e qualcuno digiti una lettera, che l'immagine si presenti: non è così che funzionano i caratteri, e non è come i caratteri hanno funzionato dalla fine degli anni '80.

I caratteri moderni sono l'equivalente tipografico di una ROM di gioco: certo, non è molto utile senza l'hardware o il software per eseguire quella ROM, ma tutte le cose che effettivamente contano sono nella ROM. I font moderni e similari contengono all le informazioni per la composizione. Non solo immagini, contengono i metadati, le metriche, le regole di posizionamento e sostituzione per sequenze arbitrarie, con set di regole separati per ogni script scritto supportato da OpenType, possibili fallback per bitmap per il rendering di piccoli punti, istruzioni di suggerimento su come rasterizzare correttamente la grafica vettoriale che sono intrinsecamente non allineati a qualsiasi particolare griglia di pixel, e altro ancora. Un font moderno è un'applicazione ridicolmente complessa che un motore di font consulta per capire come creare sequenze di punti di codice, e creare un (set di) font che include l'Unicode è un grande sforzo di squadra.

Quindi: "Perché non c'è un tipo di carattere che contiene tutti i glifi Unicode", perché questo è stato tecnicamente impossibile dal 2001. può, e non, rendere famiglie di font che coprono tutti Unicode, ma con 129 diversi script tutti con le proprie regole di composizione, è un grande sforzo di squadra.

E per quanto riguarda questo:

Tale carattere sarebbe un grande aiuto per l'umanità e non riesco a vedere una buona ragione tecnica per cui non esiste o almeno un open-source sforzo per crealo, quindi presumo una ragione invisibile per me perché non può essere fatto.

Solo perché non sapevi su di loro, non significa che non esistono, con milioni di persone che sono familiarità con loro. Esistono, they're even open source, escono e ringraziano le persone che li hanno fatti =)

+1

Quindi Adobe Blank/le altre cose al link che hai fornito sono "famiglie di font" perché un singolo font non può essere abbastanza grande? Questa sarebbe la ragione invisibile per me di cui stavo parlando. Grazie per avermi indicato a loro! –

+2

Adobe Blank è un font di specialità estremo, fa l'opposto di un'implementazione Unicode completa: ha un CMAP speciale che associa ogni singolo punto di codice Unicode allo stesso glifo singolo (il "vuoto"). Invece di implementare tutto, non implementa nulla e rappresenta quel nulla con un'immagine vuota. Viene usato nel debugging dei caratteri come fallback durante i test: se vedi "vuoto" di Adobe Blank (che ha una larghezza, quindi puoi vederlo nel tuo testo), sai che il font che stai eseguendo il debug non è presente. –

+0

Che strano font. Noto non ha una copertura completa (mancano linearmente A tra le altre cose) ma sono già 500 MB quindi non posso davvero biasimarli. –

Problemi correlati