2012-12-05 8 views
18

Supponiamo di avere un testo che contiene un carattere Unicode che non può essere visualizzato perché il nostro font non ha un glifo corrispondente. Di solito, invece, viene visualizzato un segnaposto, ad es. un blocco rettangolare thingy (vedi screenshot).Esiste un carattere "glifo non trovato"?

C'è un carattere "glifo non trovato" che produce in modo affidabile questo glifo? Mi piacerebbe scrivere qualcosa come "If the following text contains <insert character here> then you need another font..." in un'interfaccia utente.

A proposito, non sto parlando di (replacement character). Questo viene visualizzato quando un carattere Unicode non può essere decodificato correttamente da un flusso di dati. Non produce necessariamente lo stesso glifo:

enter image description here

+0

Il rettangolo ** è ** il glifo "glifo non trovato". Non aiutare –

risposta

7

No, non è presente il carattere "glifo non trovato". Diversi programmi utilizzano presentazioni grafiche diverse. Un rettangolo vuoto stretto è un rendering comune, ma non l'unico. Potrebbe anche essere un rettangolo con un punto interrogativo al suo interno o con il numero di codice del carattere, in esadecimale, in esso.

Quindi è meglio ad es. mostra una piccola immagine del personaggio insieme al personaggio stesso, in modo che il lettore possa confrontarli.

+0

Su diversi telefoni Android i glifi mancanti sono disegnati con pochi pixel di spazio vuoto. Quindi non deve nemmeno essere qualcosa che è visibile. – nibarius

3

Il carattere glifo-non-trovato è specificato dal motore carattere e dal carattere; non c'è un carattere fisso per questo.

+0

La domanda dice chiaramente che non si tratta del carattere sostitutivo, e REPLACEMENT CHARACTER U + FFFD * è * un carattere fisso (non ha un glifo fisso, anche se i caratteri che lo contengono tendono ad usare glifi molto simili). –

+0

@Jukka: Tranne che non sto parlando di U + FFFD neanche. –

+1

Quindi non usare la frase "carattere sostitutivo", perché a) non è affatto un personaggio, e b) non è specificamente il personaggio con il nome Unicode REPLACEMENT CHARACTER, e c) le persone si confondono facilmente con problemi come questo. –

2

Utilizzare un carattere non come U + 10FFFF (all'estremità dello spazio Unicode) che è del 99,99% sicuro di non essere trovato nella tabella cmap di qualsiasi carattere corretto. Almeno nessun font di sistema di Windows noto esegue il mapping di un carattere non carattere a un glifo, e altamente improbabile qualsiasi font di sistema Linux/Mac. Anche il font Last Resort che comprende tutto (http://www.unicode.org/policies/lastresortfont_eula.html) non sembra mapparlo. Quindi, anche se non esiste un carattere "glifo non trovato" ufficiale definito in Unicode che verrà mappato al glifo .notdef, il non-carattere di cui sopra è in pratica garantito per la visualizzazione di tale glifo, qualunque sia il disegno del glifo in quel particolare tipo di carattere. Il glifo .notdef (id di glifo 0 in OpenType) può essere un semplice rettangolo vuoto (standard), una scatola con x, una scatola con un punto interrogativo, di tanto in tanto vuoti (che è una cattiva pratica), e talvolta cose bizzarre come le spirali (in Palatino Linotype) .

10

Dal Unicode Spec:

U+25A1 □ quadrati bianchi

  • possono essere utilizzati per rappresentare un ideogramma mancante

  • U+20DE $ ⃞ combinando racchiude piazza

+0

Ho ripristinato la tua modifica alla risposta di Jukka K. Korpela. Si prega di includere tali informazioni in questa risposta e/o aggiungere un commento all'altra risposta. –

+0

Perché non includere solo le informazioni lì ed eliminare questa risposta? – Michaelangel007

+0

Buona risposta. – martin

0

Unicode utilizza questi termini:

  • sostituzione glifo
  • manca glifo
  • interpretabile ma unrenderable carattere

Il standard Unicode (10,0) fa non definire come devono apparire, ma suggerisce in c apo 5.3 [PDF] che le implementazioni visualizzare

[...] glifi distintivi che danno qualche indicazione generale del loro tipo di [...]

per distinguerli dai "punti di codice non assegnati". Essi danno alcuni esempi:

L'Unicode glossary entry says:

Spesso è mostrato come un rettangolo aperto o nero.


tl; dr: Non c'è standardizzato sguardo/glifo, è fino alla realizzazione. Per aiutare gli utenti, le implementazioni possono mostrare glifi che indicano quale tipo di carattere è che non possono essere visualizzati.

Problemi correlati