Question Pourquoi ne devrais-je pas utiliser des caractères Unicode pour simuler des styles typographiques (tels que des petites majuscules ou un script)?


Unicode contient divers caractères qui ressemblent à des variantes de caractères stylisés de l'alphabet latin de base et qui permettent d'écrire des textes dans les styles typographiques correspondants sans recourir à des annotations ou similaires. Par exemple, on peut simuler:

  • En minuscule:

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

  • Scénario:

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

  • Lettre noir:

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

Cela a rencontré un intérêt sur Stack Exchange (par exemple, ici, ici, et ici) et la critique de ces techniques a été faite. Mais qu'est-ce qui peut aller mal quand je les utilise?


123
2017-12-26 11:00


origine


Je lis ceci depuis mon téléphone et je ne peux pas voir les deux derniers textes de fantaisie. - Scimonster
Parce qu'il est illisible sur certains appareils: i.stack.imgur.com/kM73J.png - Chris Kent
Parce que certains d'entre nous veulent voir des pages Web dans ce que nous considérons comme des polices lisibles (et des tailles, des couleurs, etc.), nous utilisons par ex. feuilles de style CSS utilisateur pour remplacer les styles d'auteur. Vous remarquerez peut-être que même si vos trois exemples s'affichent sur mon appareil, apparemment comme vous le souhaitez, ils ne sont lisibles que par leur limite. Pourquoi voudriez-vous placer vos envies artistiques au-dessus de la facilité de lecture de vos lecteurs? - jamesqf
Voici une observation intéressante: Edge ne peut pas trouver de texte dans les deux derniers exemples, et Chrome ne peut pas trouver de texte dans le premier. (Essayez Ctrl + F'ing pour BEHOLD dans les deux navigateurs.) Vous n'avez pas coché Firefox. - Schism
@Schism Firefox n'en trouve aucun. On dirait que Chrome utilise probablement la normalisation NFKC / NFKD avant la recherche, ce qui décompose le texte du script et du blackletter en latin de base. Firefox ne semble pas le faire. Edge ... fait quelque chose de bizarre. - Bob


Réponses:


Général

Ces caractères ne sont pas destinés au texte classique de l'alphabet latin, mais à la phonétique, au texte en alphabet cyrillique, à utiliser comme symboles mathématiques (représentant des variables) ou similaires. Le seul moyen de coder du texte dans l’alphabet latin de base, conforme à la norme Unicode, consiste à utiliser les caractères principalement utilisés à cette fin (c’est-à-dire à partir du Latin de base Bloc Unicode).

Comme avec beaucoup d'autres normes, vous devriez réfléchir à deux fois avant de violer Unicode. De plus, Unicode comprend autant de systèmes d’écriture, de cas d’utilisation et d’autres choses qui existent pour assurer la compatibilité avec d’autres normes.1 comprendre pleinement toutes ses motivations est une science à part entière. Longue histoire courte, à moins que vous ne sachiez vraiment ce que vous faites, Il est fort probable que quelque chose ne se soit pas pensé à distance.

Exemples spécifiques

Accessibilité

Le texte encodé n'existe pas seulement pour être rendu dans une police. Il peut également être interprété, par exemple, par des lecteurs d'écran. Et un lecteur d'écran ne devrait pas avoir besoin de deviner si

𝓽𝓱𝓮

est destiné à être l'article défini ou le produit mathématique2 des variables 𝓽, 𝓱 et 𝓮 - pour lesquelles ces caractères sont faits. Le meilleur comportement sera donc qu'il épelle ces caractères, par ex. dire littéralement ce qui suit:

script en gras petit t, script en gras petit h, script en gras petit e

Il ne devrait pas simplement dire "le" à la place car il ne lirait pas correctement les textes mathématiques dont les symboles forment un mot prononçable.3

Portabilité

Si votre texte est bien rendu sur votre machine, cela ne signifie pas qu'il sera également celui du lecteur. L'exemple le plus évident est que le lecteur ne possède aucune police prenant en charge ces caractères ou que le texte est rendu par un logiciel ne prenant pas en charge les polices de secours. Certes, cela devient de moins en moins courant. Gardez à l'esprit que certaines personnes comme les dyslexiques ont besoin de polices spéciales moins susceptibles de supporter ces caractères.

Mais même si la machine du lecteur n'utilise qu'une police différente, cela peut rendre le texte considérablement moins lisible. Pour un premier exemple, ceci est rendu avec deux polices différentes:

𝓉𝒽ℯ rendered with FreeSerif and STIX

Free Serif rend le texte tel que vous voudriez probablement qu'il soit rendu lors de l'utilisation de caractères spéciaux pour simuler du texte, à savoir simuler l'écriture avec un trait continu. Cependant, ces caractères sont conçus pour être utilisés comme symboles mathématiques, la connexion n'ayant aucun sens. D'où le rendu par STIX, spécialement conçu à des fins mathématiques, est plus conforme à la manière dont ces caractères sont destinés à être utilisés.

Dans un deuxième exemple, supposez que vous ou le lecteur mettez en italique "сᴜт мy в" pour une raison quelconque. Avec une bonne police, vous obtiendrez4:

сᴜт мy вᴀʀ rendered in upright and italics. italics reads as "cum my bar"

La raison en est que les petites capitales ont été (partiellement) simulées avec des lettres cyrilliques, et Les italiques cyrilliques semblent parfois très différents de leurs homologues droits. Donc, encore une fois, c'est le comportement approprié.

Possibilité de recherche

Comme un premier exemple, considérez ce que vous voulez une recherche raisonnable à faire avec le personnage 𝒲 (script mathématique W). Supposons que la recherche a deux modes, le mode par défaut et le mode exact (habituellement appelé sensible aux majuscules et minuscules). Ce personnage devrait être:

  • trouvé lors de la recherche de w ou W en mode par défaut - pour ceux qui ne veulent pas entrer ou copier-coller le caractère spécial dans le champ de recherche;

  • trouvé lors de la recherche de 𝒲 en mode exact - pour ceux qui veulent chercher où la variable correspondante est mentionnée dans un document mathématique³;

  • introuvable lors de la recherche de 𝓌, w ou W en mode exact en raison d'une recherche similaire à celle ci-dessus.

Toutefois, si vous utilisez ce caractère pour simuler du texte normal, vous devez le trouver lorsque vous recherchez W ou 𝒲 en mode exact, ce qui est en conflit avec ce qui précède.

Comme un deuxième exemple Considérez que les caractères cyrilliques ne devraient jamais être trouvés lors de la recherche de caractères latins et vice versa, car ils sont complètement différents. Toutefois, si vous utilisez des caractères cyrilliques pour simuler des petites majuscules latines, vous devez le faire si vous ne voulez pas que la possibilité de recherche soit rompue. Cela amènerait les gens à trouver beaucoup de trucs inutiles s'ils recherchent un mot rare en alphabet latin qui se trouve justement correspondre aux fausses petites majuscules d'un mot cyrillique populaire (et vice versa).

Une option de recherche exacte ne peut pas résoudre ce problème car elle est réservée à d'autres fins dans ces alphabets.

En général, il est impossible de créer une recherche (sans un nombre insensé d’options) qui n’est pas rompue en utilisant des caractères spéciaux pour simuler un texte latin stylé.


1Tu sais que XKCD sur l'échec inévitable des normes unificatrices? Eh bien, Unicode a réussi.
2ou quel que soit l'opérateur vide dans la convention pertinente
3Je suis conscient que très peu de textes mathématiques supportent actuellement cet encodage ou quelque chose de compatible avec lui, mais le fait est qu’un jour ils le feront. Votre texte abusant d'Unicode est peut-être toujours présent et peut alors être lu.
4Sauf si vous localisez pour le macédonien ou le serbe, dans lequel vous obtiendrez des résultats différents mais toujours indésirables.


220
2017-12-26 11:00



Les commentaires ne sont pas destinés à une discussion approfondie; cette conversation a été déplacé pour discuter. - Journeyman Geek♦
Qu'en est-il du troisième exemple? Pourquoi le texte en lettre noire existe-t-il dans Unicode par rapport à une police? - posfan12
@ posfan12: Il est utilisé comme un alphabet mathématique distinct - comme les caractères du script. (Notez que la numérotation de l'exemple ici n'a rien à voir avec les puces de la question.) - Wrzlprmft
Votre exemple de petit-cpas suggère un puzzle / competitoin: Trouvez une phrase valide qui devient une phrase différente en italique ... (interprétées par des lecteurs humains latins, par exemple) - Hagen von Eitzen


Qu'est-ce qui peut mal tourner? Eh bien, je vois ceci:

enter image description here

dans Firefox 50.1.0 sur Windows 7.

Le problème de glyphes manquants, dans ce cas sur un appareil mobile, est illustré plus loin dans une image donnée par l'utilisateur Chris Kent dans un commentaire, que j'ai recadré et redimensionné à partir de l'original:

enter image description here

Et utilisateur oals gentiment contribué un autre exemple:

enter image description here


66
2017-12-26 11:31



Moi? i.stack.imgur.com/lWRAa.png - oals
@Lilienthal Je suis impressionné par le nombre d'années que vous avez passé sans vérifier ou installer les mises à jour. Je veux dire, j'utilise toujours quelque chose basé sur Firefox 3.5 sur certains appareils, mais je n'ai pas vraiment le choix (appareil trop bon, mais aucun nouveau navigateur utilisable n'est disponible) - mtraceur
@Lilienthal Quelque temps en 2020, les numéros de version majeurs de Firefox peuvent nécessiter des nombres de 64 bits. Peu de temps après, le numéro de version prendra plus d'espace que le programme réel. Pour tenter de regagner des parts de marché, les versions de Chrome auront besoin de planètes entières pour les stocker. - Andrew Morton
Vous avez une idée du nombre de vulnérabilités de sécurité connues et actives auxquelles vous vous exposez en utilisant ces anciens navigateurs? - Zach Lipton
@ Zach Lipton: Vous rendez-vous compte que c'est en bas de la liste de mes priorités? # 1 est d'avoir quelque chose que je peux réellement utiliser. Bien que les gens de Firefox (et bien d’autres) aient peut-être adopté un nouveau paradigme: la sécurité par l’inutilisabilité. - jamesqf


J'ai un problème avec XY avec ça.

Y and X appear smaller than the rest of the text

Ici, nous voyons que Y et X apparaissent plus petits que le reste du texte. À certains niveaux de zoom, ils semblent avoir la même taille, mais cela semble avoir révélé un problème avec ces glyphes particuliers dans cette police particulière.


28
2017-12-26 19:46



Je peux offrir trois explications possibles à ce que vous voyez: 1) Bad faire allusion. 2) Une police de secours est utilisée pour tout sauf X et y. 3) Mauvaise conception des polices: les petites capitales ont été conçues pour être légèrement plus grandes que les lettres minuscules (ce qui est un choix valide), puis utilisées pour les caractères Unicode phonétiques et cyrilliques, ce qui n'est pas un bon choix. doivent s'harmoniser avec les caractères latins de base. - De toute façon: les points 1) et 3) ne sont pas dus à un abus Unicode. Le point 2) est déjà abordé dans les autres réponses. - Wrzlprmft
@Wrzlprmft: Par définition, il s’agit d’un abus de code unicode car unicode n’a pas de petites capitales. Ce que unicode a, ce sont des lettres qui ressemblent à de petites majuscules dans les blocs d'alphabet phonétique et le bloc Latin Extended-D. Plus précisément, ni les deux blocs phonétiques ni le bloc Latin Extended-D ne contiennent la lettre qui ressemble à des petites majuscules X, donc je suppose que le X vient d'ailleurs, probablement le bloc cyrillique. La différence est causée par ni 1, 2 ni 3. Elle est causée par la lettre appartenant à un autre alphabet. - slebetman
@slebetman: les petites capitales X est juste une minuscule régulière X (vous pouvez simplement copier le personnage de la question et l'inspecter vous-même). Et un minuscule X doit s'harmoniser avec les caractères phonétiques, car il est également utilisé comme caractère phonétique. Il devrait également avoir la même hauteur que les caractères minuscules cyrilliques, car vous ne voulez pas que les mots cyrilliques se distinguent du texte latin (et vice versa). - Wrzlprmft
Vote pour le lol au "problème XY" :) - Andrew Morton


Utiliser des caractères non latins qui ressemblent à des caractères latins vous place en compagnie de spammeurs, de pornographes et de dissimulateurs qui veulent que leur texte soit insaisissable, repoussable et indestructible. ("Je n'ai jamais dit que c'était sûr !! J'ai dit que c'était un signe sigma-alpha-intégrale-épislon !!! Ne peut pas me poursuivre en justice !!!")

Si vous êtes confortable dans ce club, alors allez-y.


13
2017-12-28 20:04