Perché non dovrei usare i caratteri Unicode per simulare stili tipografici (come maiuscoletto o script)?


129

Unicode contiene vari caratteri che assomigliano a varianti tipicamente stilizzate di caratteri dell'alfabeto latino di base e che consentono di scrivere testi nei corrispondenti stili tipografici senza ricorrere a markup o simili. Ad esempio, si può simulare:

  • Maiuscoletto:

    ꜰᴀɴᴄɪʟ ᴛʜɪꜱ ꜰᴀɴᴄɪʟy ᴇɴᴄᴏᴅᴇᴅ ᴛᴇxᴛ.

  • script:

    𝓑𝓮𝓱𝓸𝓵𝓭 𝓽𝓱𝓲𝓼 𝓯𝓪𝓷𝓬𝓲𝓵𝔂 𝓮𝓷𝓬𝓸𝓭𝓮𝓭 𝓽𝓮𝔁𝓽.

  • Blackletter:

    𝕭𝖊𝖍𝖔𝖑𝖉 𝖙𝖍𝖎𝖘 𝖋𝖆𝖓𝖈𝖎𝖑𝖞 𝖊𝖓𝖈𝖔𝖉𝖊𝖉 𝖙𝖊𝖝𝖙.

Ciò ha incontrato l'interesse per Stack Exchange (ad esempio, qui , qui e qui ) e sono state fatte critiche a tali tecniche. Ma cosa può andare storto quando li uso?


224
Sto leggendo questo dal mio telefono e non riesco a vedere gli ultimi due fantasiosi testi.
Scimonster,

22
Perché è illeggibile su alcuni dispositivi: i.stack.imgur.com/kM73J.png
Chris Kent,

15
Poiché alcuni di noi vogliono vedere le pagine Web in quelli che consideriamo caratteri leggibili (e dimensioni, colori, ecc.), Quindi utilizziamo ad esempio i fogli di stile CSS dell'utente per sovrascrivere gli stili degli autori. Potresti notare che anche se i tuoi tre esempi vengono visualizzati sul mio dispositivo, apparentemente proprio come intendi che appaiano, per me sono leggibili solo al limite. Perché dovresti mettere le tue voglie artistiche sopra la facilità di lettura dei tuoi lettori?
jamesqf,

38
Ecco un'osservazione interessante: Edge non riesce a trovare il testo negli ultimi due esempi e Chrome non riesce a trovare il testo nel primo. (Prova Ctrl + F'ing per BEHOLD in entrambi i browser.) Non ho controllato Firefox.
Scisma,

22
@Schism Firefox non ne trova nessuno. Sembra che Chrome probabilmente usi la normalizzazione NFKC / NFKD prima della ricerca, che decompone il testo dello script e del blackletter in latino di base. Firefox non sembra farlo. Edge ... sta facendo qualcosa di strano.
Bob,

Risposte:


224

Generale

Questi caratteri non sono intesi per il normale testo in alfabeto latino ma per la fonetica, il testo in alfabeto cirillico, da utilizzare come simboli matematici (che rappresentano variabili) o simili. L'unico modo conforme a Unicode per codificare il testo nell'alfabeto latino di base consiste nell'utilizzare i caratteri utilizzati principalmente per questo scopo (ovvero, dal blocco Unicode latino di base ).

Come con molti altri standard, dovresti pensare due volte alla violazione di Unicode. Inoltre, Unicode comprende così tanti sistemi di scrittura, casi d'uso e cose che esistono solo per la retrocompatibilità con altri standard 1 che la piena comprensione di tutte le sue motivazioni è una scienza a sé stante. Per farla breve, a meno che tu non sappia davvero cosa stai facendo, è estremamente probabile che si rompa qualcosa a cui non hai nemmeno pensato a distanza.

Esempi specifici

Accessibilità

Il testo codificato non esiste solo per il rendering in alcuni caratteri. Può anche essere interpretato, ad esempio, dagli screen reader. E uno screen reader non dovrebbe aver bisogno di indovinare se

𝓽𝓱𝓮

è pensato per essere l'articolo determinativo o il prodotto matematico 2 delle variabili 𝓽, 𝓱 e 𝓮 - che è ciò per cui sono fatti quei personaggi. Il comportamento migliore sarà quindi quello di precisare questi personaggi, ad esempio dicendo letteralmente quanto segue:

grassetto piccolo t, grassetto piccolo h, grassetto piccolo e

Non dovrebbe semplicemente dire "il" invece perché non legge correttamente i testi matematici i cui simboli capita di formare una parola pronunciabile. 3

portabilità

Se il tuo testo è ben riprodotto sulla tua macchina, questo non significa che sarà anche su quello del lettore. L'esempio più ovvio è che il lettore non ha alcun carattere che supporti questi caratteri o che il testo sia reso da un software che non supporta i caratteri di fallback. Certo, questo sta diventando sempre meno comune. Tieni presente, tuttavia, che alcune persone come i dislessici hanno bisogno di caratteri speciali che hanno meno probabilità di supportare questi personaggi.

Ma anche se la macchina del lettore utilizza solo un carattere diverso, ciò potrebbe rendere il testo notevolmente meno leggibile. Per un primo esempio , questo è 𝓉𝒽ℯ reso con due diversi caratteri:

𝓉𝒽ℯ rendering con FreeSerif e STIX

Free Serif esegue il rendering del testo come probabilmente si vorrebbe che fosse reso quando si usano caratteri speciali per simulare il testo, vale a dire simulare la scrittura a mano con un tratto continuo. Tuttavia, questi personaggi sono fatti per essere usati come simboli matematici, un collegamento che non ha senso. Quindi il rendering di STIX , che è specificamente progettato per scopi matematici, è più in linea con il modo in cui questi personaggi devono essere usati.

In un secondo esempio , supponiamo che tu o il lettore sia in corsivo "сᴜт мy вᴀʀ" per qualche motivo. Con un buon carattere, otterrai 4 :

Viene visualizzato in verticale e in corsivo.  il corsivo è "cum my bar"

La ragione di ciò è che le maiuscolette sono state (parzialmente) simulate con lettere cirilliche e il corsivo cirillico a volte sembra molto diverso dalle loro controparti verticali . Quindi, di nuovo, questo è il comportamento corretto.

ricercabilità

Come primo esempio, considera cosa vorresti fare una ricerca ragionevole con il personaggio 𝒲 (script matematico W ). Supponiamo che la ricerca abbia due modalità, la modalità predefinita e la modalità esatta (generalmente chiamata maiuscole e minuscole ). Questo personaggio dovrebbe essere:

  • trovato durante la ricerca di w o W in modalità predefinita - per coloro che non vogliono preoccuparsi di inserire o copiare e incollare il carattere speciale nel campo di ricerca;

  • trovato durante la ricerca di 𝒲 nella modalità esatta - per coloro che vogliono cercare dove la variabile corrispondente è menzionata in un documento matematico³;

  • non trovato durante la ricerca di 𝓌, w o W in modalità esatta a causa dell'interruzione di una ricerca simile alla precedente.

Tuttavia, se si utilizza questo carattere per simulare un testo normale, dovrebbe essere trovato durante la ricerca di W o 𝒲 nella modalità esatta, che è in conflitto con quanto sopra.

Come secondo esempio, considera che i caratteri cirillici non dovrebbero mai essere trovati durante la ricerca di caratteri latini e viceversa, poiché sono cose completamente diverse. Tuttavia, se si utilizzano caratteri cirillici per simulare caratteri maiuscoli latini, è necessario che ciò accada, se non si desidera interrompere la ricerca. Ciò porterebbe le persone a trovare un sacco di cose inutili se cercano una rara parola in alfabeto latino che in tal modo corrisponde ai finti maiuscoletti di alcune parole popolari in alfabeto cirillico (e viceversa).

Un'opzione di ricerca esatta non può risolvere questo problema, poiché è riservata ad altri scopi in quegli alfabeti.

In generale , è impossibile costruire una ricerca (senza una folle quantità di opzioni) che non viene interrotta usando caratteri speciali per simulare un testo latino in stile.


1  Sai che XKCD sull'inevitabile fallimento degli standard unificanti ? Bene, Unicode è riuscito.
2  o qualunque sia l'operatore vuoto nella pertinente convenzione
3  Sono consapevole che al giorno d'oggi pochissimi testi matematici supportano questa codifica o qualcosa di compatibile, ma il punto è che un giorno si spera. Il tuo testo che abusa di Unicode potrebbe essere ancora presente e letto.
4  A meno che tu non stia localizzando per macedone o serbo, in cui otterrai risultati diversi ma comunque indesiderabili.


I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Journeyman Geek

1
E il terzo esempio? Perché il testo di Blackletter esiste anche in Unicode rispetto a un po 'di carattere?
posfan12,

2
@ posfan12: è usato come un distinto alfabeto matematico, come i personaggi della sceneggiatura. (Si noti che la numerazione di esempio qui non ha nulla a che fare con i punti
elenco

3
Il tuo esempio per piccoli cpas suggerisce un puzzle / competizione: trova una frase valida che diventa una frase diversa quando è in corsivo ... (entrambi interpretati da lettori umani a base latina, diciamo)
Hagen von Eitzen,

67

Cosa può andare storto? Bene, vedo questo:

inserisci qui la descrizione dell'immagine

in Firefox 50.1.0 su Windows 7.

Il problema dei glifi mancanti , in questo caso su un dispositivo mobile, è ulteriormente illustrato in un'immagine data dall'utente Chris Kent in un commento , che ho ritagliato e ridimensionato dall'originale :

inserisci qui la descrizione dell'immagine

E gli oal utente hanno gentilmente contribuito con un altro esempio:

inserisci qui la descrizione dell'immagine



7
@Lilienthal Sono impressionato da quanti anni hai trascorso senza controllare o installare aggiornamenti. Voglio dire, sto ancora usando qualcosa basato su Firefox 3.5 su alcuni dispositivi, ma non ho esattamente una scelta in merito (dispositivo troppo buono, ma non è disponibile un nuovo browser utilizzabile)
mtraceur

16
@Lilienthal Qualche volta nel 2020, i numeri di versione principali di Firefox potrebbero richiedere numeri a 64 bit. Poco dopo, il numero di versione occuperà più spazio rispetto al programma reale. Nel tentativo di riconquistare quote di mercato, i numeri di versione di Chrome avranno bisogno di interi pianeti per memorizzarli.
Andrew Morton,

2
Avete idea di quante vulnerabilità di sicurezza note e attive vi state esponendo utilizzando browser così antichi?
Zach Lipton,

3
@Zach Lipton: ti rendi conto che è in fondo alla lista delle mie priorità? # 1 sta avendo qualcosa che posso effettivamente usare. Anche se forse le persone di Firefox (e molti altri) hanno abbracciato un nuovo paradigma: la sicurezza attraverso l'insolvenza.
jamesqf

29

Sto avendo un problema XY con questo.

Y e X appaiono più piccoli del resto del testo

Qui, vediamo che Y e X appaiono più piccoli del resto del testo. A determinati livelli di zoom sembrano avere le stesse dimensioni, ma questo sembra aver esposto un problema con questi glifi particolari in questo particolare carattere.


Posso offrire tre possibili spiegazioni per quello che stai vedendo: 1) Cattivo suggerimento . 2) Un font fallback è usato per tutto, ma x e y. 3) Design del carattere errato: i caratteri maiuscoli sono stati progettati per essere leggermente più grandi delle lettere minuscole (che è una scelta valida) e quindi utilizzati per i caratteri fonetici e cirillici Unicode - che non è una buona scelta poiché, ad esempio, nell'uso fonetico, questi caratteri armonizzare con i caratteri latini di base. - In entrambi i casi: i punti 1) e 3) non sono dovuti all'abuso di Unicode. Il punto 2) è già affrontato nelle altre risposte.
Wrzlprmft,

12
@Wrzlprmft: per definizione si tratta di abuso di Unicode perché Unicode non ha maiuscoletti. Ciò che ha unicode sono le lettere che sembrano piccoli caratteri maiuscoli nei blocchi alfabetici fonetici e nel blocco latino esteso-D. In particolare, né i due blocchi fonetici né il blocco latino esteso-D contengono la lettera che assomiglia a maiuscole X , quindi la mia ipotesi è che la X provenga da qualche altra parte, probabilmente il blocco cirillico. La differenza non è causata né da 1, 2 né da 3. È causata dalla lettera appartenente a un altro alfabeto.
Slebetman,

@slebetman: La maiuscola x è solo una normale x minuscola (puoi semplicemente copiare il personaggio dalla domanda e controllarlo tu stesso). E una x minuscola deve armonizzarsi con i caratteri fonetici, perché è anche usata come carattere fonetico. Dovrebbe inoltre avere la stessa altezza dei caratteri minuscoli cirillici, poiché non si desidera che singole parole cirilliche si distinguano dal testo latino (e viceversa).
Wrzlprmft,

19
Ha votato per il lol a "Problema XY" :)
Andrew Morton il

13

L'uso di caratteri non latini che assomigliano in qualche modo a quelli latini ti mette in compagnia di spammer, pornomongers e chissà cosa sono all'altezza dei dissimulatori che vogliono che il loro testo sia imperscrutabile, indescrivibile e ripudibile. ("Non ho mai detto che fosse sicuro !! Ho detto che era sigma-alpha-integral-sign-epislon !!! Non posso denunciarmi !!!")

Se sei a tuo agio in quel club, allora provaci.

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.