Courier Tipo di carattere nuovo con supporto Unicode?


8

Sono un programmatore e sono davvero abituato al font Courier New. Sono piuttosto esigente al riguardo - trovo brutti altri caratteri (inclusi altri caratteri monospace) in confronto.

Tuttavia, ora devo lavorare su alcuni codici che includono stringhe Unicode e Courier New non ha il supporto completo per Unicode.

Qualcuno potrebbe raccomandare un carattere (monospaziale) che è molto simile a Courier New, ma ha il supporto Unicode?



3
Courier New ha una copertura Unicode molto migliore rispetto alla maggior parte dei caratteri. Sarebbe utile se ci dicessi esattamente di quali caratteri / lingue / script hai bisogno di copertura.
thomasrutter,

@thomasrutter: ho bisogno di una copertura di simboli matematici e logici.
HighCommander4,

Risposte:


11

Pochi caratteri hanno il "pieno supporto per Unicode". Unicode 6.0 ha 109.449 punti di codice. Dal punto di vista del design è piuttosto costoso creare manualmente ognuno di questi glifi quando la maggior parte delle persone ne utilizzerà solo una piccola parte, per non parlare della prospettiva delle dimensioni del file.

Courier New è in realtà tra i caratteri con un supporto Unicode relativamente buono a 3248 glifi (in confronto Lucida Sans Unicode ha solo 1776).

I caratteri MingLiU / PMingLiU supportano anche una gamma molto ampia di punti di codice, ma ciò è dovuto al fatto che si tratta di caratteri CKJ (cinese, coreano, giapponese) e la maggior parte dei punti di codice supportati provengono dai blocchi CKJ. Quindi, a meno che non sia necessario un carattere CKJ, non sono molto utili. E anche allora, sono suddivisi in ~ 6 caratteri diversi che coprono blocchi di codice diversi con 30 ~ 40k punti di codice ciascuno.

Per il supporto linguistico generico, Arial Unicode MS è il migliore che io conosca. Ha un supporto quasi completo su 64 diversi blocchi di codice, che copre 50.377 punti di codice.

Oltre a ciò, c'è solo il carattere Unicode BMP Fallback SIL , che è un carattere di debug. Copre tutti i punti di codice Unicode 5.1, ma ogni glifo è solo una scatola rettangolare contenente il codice esadecimale per quel punto di codice. E la maggior parte dei sistemi operativi viene fornito con questo carattere e lo visualizzerà quando un carattere Unicode manca di un glifo per un determinato carattere.

Voglio dire, è possibile che ci sia un pazzo tipografo o una fonderia là fuori che ha creato un font con glifi per tutti i punti di codice Unicode 5.1 o 6.0, ma probabilmente sarebbe molto, molto costoso.

La maggior parte delle persone preferisce avere solo caratteri che coprono specifici blocchi linguistici e utilizzino più caratteri per fornire supporto multilingue completo. Soprattutto perché diverse famiglie di lingue hanno stili tipografici intrinsecamente diversi, quindi i glifi finirebbero comunque per apparire molto diversi.

Modifica: come ha sottolineato Mr Lister, nessun font al momento può supportare il set completo di caratteri Unicode poiché ogni font può contenere solo 65536 glifi max. Potresti riuscire a superare questo limite con TruTypeCollections ma sarebbero comunque caratteri separati, solo in un singolo file.


1
Grazie per una risposta dettagliata Non sapevo che Unicode fosse abbastanza grande. I caratteri Unicode nel mio codice sono simboli matematici e logici - conosci un carattere monospaziale dall'aspetto decente con supporto per quelli?
HighCommander4 il

4
@ HighCommander4: Quindi tutto ciò di cui hai veramente bisogno sono il blocco Simboli matematici e i blocchi Operatori matematici. Puoi vedere l'elenco dei blocchi Unicode qui . Facendo clic su ciascuno, è possibile trovare un elenco di caratteri comuni che supportano ciascun blocco. Oppure fai clic su uno dei caratteri e cerca l'elenco dei blocchi supportati, ad esempio questo per Code2000 , che mostra tutti i blocchi supportati e in base a quale percentuale.
Lèse majesté,

2
Penso di aver letto da qualche parte che 65536 glifi è il massimo che può contenere un singolo file di font, quindi non troverai mai un font con il supporto Unicode "completo".
Sig. Lister,

1
@Mr Lister: questa è probabilmente la limitazione di alcuni editor di font , ma i punti di codice Unicode arrivano a E0FFF (o 10FFFF inclusa l'area di uso privato). Quindi, se un font deve essere in grado di fare riferimento a questi punti di codice di fascia alta, dovrebbe essere in grado di fare riferimento a qualsiasi cosa al di sotto di esso.
Lèse majesté,

2
@ Lèsemajesté No, in realtà non è vero. I caratteri non sono tenuti a contenere tutti i caratteri fino a quello con l'indice Unicode più alto che hanno. Altrimenti ogni carattere compatibile con Windows 1252 dovrebbe contenere oltre 8400 caratteri!
Lister

3

Prova il Free Mono di GNU Free Font . È, infatti, finora l'unico carattere monospaziale che ho trovato che sia leggibile e relativamente completo in termini di copertura unicode.

Ancora più ideale per il tuo caso particolare, in realtà si basa sul corriere.


2

Puoi sempre usare Courier New come font principale e ricorrere a qualche altro font con una palette di caratteri più ampia (come DejaVu Sans Mono o forse Everson Mono) per i simboli mancanti.

Questo è ciò che fa il tuo browser se imposti Courier New come il tuo carattere monospazio preferito e poi chiedi di visualizzare qualcosa di simile ∀x: ∃y: x ∊ y. (Bene, tranne per il fatto che questo sito specifica già il proprio elenco di caratteri monospace preferiti, con Courier New abbastanza in fondo all'elenco, quindi probabilmente non vedrai xe ysopra in Courier New a meno che tu non disabiliti o ignori anche lo stile SE foglio.)

Naturalmente, questo non sembrerà sempre troppo bello, ma nel tuo caso dici che i caratteri extra di cui hai bisogno sono principalmente simboli matematici. Questi sembrano comunque abbastanza distinti dalle normali lettere latine, quindi la discrepanza tra caratteri diversi potrebbe non essere così evidente come potrebbe essere altrimenti, specialmente se si sceglie con cura il carattere di fallback.


Interessante ... Non sapevo che i browser lo facessero. È un comportamento universale in tutti i browser?
Lèse majesté,

2
Praticamente sì. Per quanto ne so, tutti i principali browser moderni supportano la sostituzione dei glifi. IE 6 e precedenti non l'hanno fatto, ma in realtà non dovresti comunque progettare per IE 6 in questi giorni - è andato come i dinosauri, e anche il buon viaggio.
Ilmari Karonen,

È una buona idea ma richiede che l'applicazione in cui sto lavorando con il codice (il mio editor, in questo caso), supporti questo tipo di meccanismo "fallback", che purtroppo non lo è.
HighCommander4,

1

So che questa è una vecchia domanda, ma ho pensato che come programmatore avrei potuto offrire qualche consiglio. Uso FreeMono su tutti i miei editor di testo e IDE. Sembra abbastanza simile a Courier New e ha un supporto migliore per Unicode. Dalle informazioni che posso ottenere dai file dei caratteri stessi, Courier New supporta 3.248 caratteri diversi mentre FreeMono supporta 4.177 caratteri. Io non sono sicuro esattamente quanto sostegno FreeMono ha per le logiche e matematiche simboli Unicode, ma so che è meglio di Courier New con un margine considerevole.


1
Che cosa significa "ha un supporto migliore per Unicode"? Come? Si prega di confrontare!
Mensch,

@Kurt Ci scusiamo per la confusione! Courier new ha supporto per 3.248 caratteri Unicode mentre mono gratuito supporta 4.177 caratteri Unicode. Spero che aiuti.
Zack Frost,
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.