Pourquoi ne devrais-je pas utiliser des caractères Unicode pour simuler des styles typographiques (tels que des minuscules ou des scripts)?


129

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

  • En minuscule:

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

  • Scénario:

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

  • Lettre noir:

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

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


224
Je lis ceci depuis mon téléphone et je ne vois pas les deux derniers textes fantaisistes.
Scimonster

22
Parce qu'il est illisible sur certains appareils: i.stack.imgur.com/kM73J.png
Chris Kent

15
Certains d'entre nous souhaitant voir les pages Web dans ce que nous considérons comme des polices lisibles (tailles, couleurs, etc.), nous utilisons par exemple des feuilles de style CSS pour remplacer les styles d'auteur. Vous remarquerez peut-être que même si vos trois exemples s'affichent sur mon appareil, apparemment, exactement comme vous souhaitez les voir apparaître, ils ne sont lisibles que de manière marginale. Pourquoi voudriez-vous placer vos envies artistiques au-dessus de la facilité de lecture de vos lecteurs?
jamesqf

38
Voici une observation intéressante: Edge ne trouve pas de texte dans les deux derniers exemples et Chrome ne trouve pas de texte dans le premier. (Essayez Ctrl + F'ing pour BEHOLD dans les deux navigateurs.) Je n'ai pas vérifié Firefox.
Schisme

22
@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 de la lettre noire en Basic Latin. Firefox ne semble pas le faire. Edge ... fait quelque chose de bizarre.
Bob

Réponses:


224

Général

Ces caractères ne sont pas destinés au texte normal de l'alphabet latin, mais à la phonétique, au texte de l'alphabet cyrillique, pour une utilisation en tant que symboles mathématiques (représentant des variables) ou similaires. Le seul moyen de coder du texte dans l'alphabet latin de base conforme à Unicode consiste à utiliser les caractères principalement utilisés à cette fin (c.-à-d. À partir du bloc Unicode de base latin ).

Comme avec beaucoup d'autres normes, vous devriez réfléchir à deux fois avant de violer Unicode. De plus, Unicode comprend un grand nombre de systèmes d'écriture, de cas d'utilisation et d'éléments qui n'existent que pour la compatibilité ascendante avec d'autres normes 1 et qui comprend parfaitement toutes ses motivations est une science à part. En bref, à moins que vous ne sachiez vraiment ce que vous faites, il est fort probable que quelque chose se brise auquel vous n'avez même pas pensé à distance.

Exemples spécifiques

Accessibilité

Le texte codé n’existe pas seulement pour être restitué dans certaines polices. 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 censé être l'article défini ou le produit mathématique 2 des variables, 𝓱 et 𝓮 - ce pour quoi ces caractères sont créés. Le meilleur comportement sera donc qu'il épelle ces caractères, par exemple en disant littéralement ce qui suit:

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

Il ne faut pas simplement dire «le» mais plutôt, car cela 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 le sera également sur 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 toutefois à l'esprit que certaines personnes, comme les dyslexiques, ont besoin de polices spéciales moins susceptibles de prendre en charge ces caractères.

Cependant, même si la machine du lecteur utilise uniquement une police différente, le texte peut être considérablement moins lisible. Pour un premier exemple , ceci est rendu avec deux polices différentes:

𝓉𝒽ℯ rendu avec FreeSerif et STIX

Free Serif rend le texte tel que vous le souhaiteriez probablement lors de l'utilisation de caractères spéciaux pour simuler du texte, à savoir la simulation de l'écriture manuscrite avec un trait continu. Cependant, ces caractères sont conçus pour être utilisés comme symboles mathématiques, ce qui n’a aucun sens. Par conséquent, le rendu de STIX , spécialement conçu à des fins mathématiques, correspond mieux à la manière dont ces caractères sont destinés à être utilisés.

Dans un deuxième exemple , supposons que vous ou le lecteur italiquiez «сᴜт мy в» pour une raison quelconque. Avec une bonne police, vous aurez 4 :

ст мy вᴀʀ rendu en italique et droit.  l'italique se lit comme "cum my bar"

La raison en est que les lettres minuscules ont été (partiellement) simulées avec des lettres cyrilliques et que les italiques cyrilliques ont parfois une apparence très différente de leurs équivalents droits . Encore une fois, c'est le comportement approprié.

Possibilité de recherche

Comme premier exemple, considérons ce que vous souhaitez qu'une recherche raisonnable fasse avec le caractère (script mathématique W ). Supposons que la recherche comporte deux modes, le mode par défaut et le mode exact (généralement appelé sensible à la casse ). Ce personnage devrait être:

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

  • trouvé lors de la recherche de 𝒲 en mode exact - pour ceux qui souhaitent rechercher 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 à la précédente.

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

Dans un deuxième exemple, considérez que les caractères cyrilliques ne doivent jamais être trouvés lors de la recherche de caractères latins et inversement, car ils ont des choses complètement différentes. Cependant, si vous utilisez des caractères cyrilliques pour simuler des petites majuscules latines, vous devez le faire si vous ne voulez pas que la recherche soit interrompue. Cela amènerait les gens à trouver beaucoup de choses inutiles s’ils recherchent un mot rare de l’alphabet latin qui correspond justement aux fausses petites majuscules de certains mots populaires de l’alphabet cyrillique (et vice-versa).

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

En général , il est impossible de créer une recherche (sans un nombre incroyable d'options) qui ne soit pas interrompue par l'utilisation de caractères spéciaux pour simuler un texte latin stylé.


1  Vous savez que XKCD parle de l’échec inévitable de l’unification des normes ? Eh bien, Unicode a réussi.
2  ou quel que soit l'opérateur vide dans la convention pertinente
3  Je suis conscient du fait que très peu de textes mathématiques soutiennent actuellement cet encodage ou quelque chose de compatible, mais le fait est qu'ils le feront un jour, espérons-le. Votre texte abusant d'Unicode peut toujours être lu et lu.
4  Sauf si vous localisez en macédonien ou en serbe, vous obtiendrez un résultat différent mais tout de même indésirable.


Les commentaires ne sont pas pour une discussion prolongée; cette conversation a été déplacée pour discuter .
Compagnon Geek

1
Qu'en est-il du troisième exemple? Pourquoi le texte blackletter existe-t-il même dans Unicode par rapport à quelques polices?
Posfan12

2
@ posfan12: il est utilisé comme un alphabet mathématique distinct, comme les caractères du script. (Notez que l'exemple de numérotation ici n'a rien à voir avec les points de la question.)
Wrzlprmft

3
Votre petit-cpas exemple suggère un puzzle / competitoin: Trouver une phrase valide qui devient une phrase différente quand ... italiques (aussi bien interprété par les lecteurs latins humains, par exemple)
Hagen von Eitzen

67

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

entrez la description de l'image ici

dans Firefox 50.1.0 sur Windows 7.

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

entrez la description de l'image ici

Et l' utilisateur OALS aimablement contribué un autre exemple:

entrez la description de l'image ici



7
@ Lilienthal Je suis impressionné par le nombre d'années où vous avez dû passer sans vérifier ni installer de 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 en la matière (l'appareil est trop bon, mais aucun nouveau navigateur utilisable n'est disponible)
mtraceur

16
@Lilienthal En 2020, les numéros de versions majeures de Firefox peuvent nécessiter des numéros 64 bits. Peu de temps après, le numéro de version prendra plus d’espace que le programme actuel. Pour tenter de regagner des parts de marché, les numéros de version de Chrome auront besoin de planètes complètes pour les stocker.
Andrew Morton

2
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

3
@Zach Lipton: Vous rendez-vous compte que cela figure bien en bas de la liste de mes priorités? # 1 est d'avoir quelque chose que je peux réellement utiliser. Bien que peut-être les utilisateurs de Firefox (et de nombreux autres) aient adopté un nouveau paradigme: la sécurité par l’inutilisabilité.
jamesqf

29

J'ai un problème avec XY.

Y et X semblent plus petits que le reste du texte

Ici, nous voyons que Y et X semblent plus petits que le reste du texte. À certains niveaux de zoom, elles semblent avoir la même taille, mais cela semble avoir mis en évidence un problème avec ces glyphes particuliers dans cette police.


Je peux offrir trois explications possibles à ce que vous voyez: 1) Mauvais allusion . 2) Une police de secours est utilisée pour tout sauf x et y. 3) Mauvaise conception des polices: les petites majuscules ont été conçues pour être légèrement plus grandes que les 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 car, par exemple, en usage phonétique, ces caractères harmoniser avec les caractères latins de base. - Dans les deux cas: 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

12
@Wrzlprmft: Par définition, ils constituent un abus Unicode car Unicode n'a pas de petites majuscules. Unicode propose des lettres qui ressemblent à des petites majuscules dans les blocs des alphabets phonétiques et le bloc latin étendu-D. Plus précisément, ni les deux blocs Phonetic, ni le bloc Latin Extended-D ne contiennent une lettre ressemblant à une petite majuscule X , je suppose donc que le X vient d’ailleurs, probablement le bloc cyrillique. La différence n'est causée par ni 1, 2 ni 3. Elle est causée par la lettre appartenant à un autre alphabet.
Slebetman

@slebetman: Les small caps x est juste un minuscule régulier x (vous pouvez simplement copier le caractère de la question et vérifiez vous - même). Et un x minuscule doit s'harmoniser avec les caractères phonétiques, car il est également utilisé comme caractère phonétique. Il doit également avoir la même hauteur que les caractères cyrilliques en minuscules, car vous ne souhaitez pas que les mots cyrilliques se distinguent du texte latin (et inversement).
Wrzlprmft

19
Voté pour le lol à "XY problème" :)
Andrew Morton

13

Utiliser des caractères non latins qui ressemblent un peu à des caractères latins vous met en compagnie de spammeurs, de marchands de porno et de ceux qui savent ce qu'ils veulent jusqu'à des dissembleurs qui veulent que leur texte soit incompréhensible, indéfinissable et répudiable. ("Je n'ai jamais dit que c'était sans danger !! J'ai dit que c'était sigma-alpha-integral-sign-epislon !!! Je ne peux pas me poursuivre en justice !!!")

Si vous êtes à l'aise dans ce club, allez-y.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.