David Madore's WebLog: Unicode

This WebLog is bilingual, some entries are in English and others are in French. A few of them have a version in either language. Other than that, the French entries are not translations of the English ones or vice versa. Of course, if you understand only English, the English entries ought to be quite understandable without reading the French ones.

Ce WebLog est bilingue, certaines entrées sont en anglais et d'autres sont en français. Quelques-unes ont une version dans chaque langue. À part ça, les entrées en français ne sont pas des traductions de celles en anglais ou vice versa. Bien sûr, si vous ne comprenez que le français, les entrées en français devraient être assez compréhensibles sans lire celles en anglais.

Note that the first entry comes last! / Notez que la première entrée vient en dernier !

Index of all entries / Index de toutes les entréesXML (RSS 1.0) • Recent comments / Commentaires récents

Entries with category unicode / Entrées de la catégorie unicode:

↓Entry #2597 [older| permalink|newer] / ↓Entrée #2597 [précédente| permalien|suivante] ↓

(mercredi)

Quelques pensées sur les émoticônes et emojis

Méta : Encore une entrée qui à force de trop rallonger s'est transformée en foutoir, et dont j'ai fini par avoir marre, alors, comme mentionné dans l'entrée précédente, je la publie telle quelle, après une relecture extrêmement minimale, même si je n'en suis pas content et qu'elle est assez inachevée, mais c'est ça ou bien la laisser moisir dans mes cartons indéfiniment.

Je commence par un point terminologique sur le sens des mots emoji et émoticône et la différence entre les deux :

  • Les emojis (ou les emoji, je ne sais jamais bien si c'est une bonne idée d'attacher un pluriel français en -s à un mot d'une langue qui n'a pas de pluriel ; du japonais ()文字(もじ), signifiant quelque chose comme caractère-dessin), sont des caractères pictographiques ou idéographiques prévus pour être insérés dans, mélangés à, ou utilisés comme, du texte écrit ordinaire.

    L'histoire des emoji est un peu confuse parce qu'ils ont été inventés plusieurs fois, ou disons que cela dépend de ce qu'on appelle exactement un emoji (en étant suffisamment large, on peut dire que les hiéroglyphes égyptiens sont des emojis quand ils ne servent pas à représenter des sons), mais on les attribue généralement à l'opérateur de télécommunications japonais NTT Docomo, qui a introduit en 1995 un symbole de cœur dans son pager, puis un jeu de 176 emojis (en format 12×12 pixels) dans sa plate-forme Internet mobile en 1999.

    Dans Unicode spécifiquement (voir cette entrée récente pour quelques généralités sur Unicode), il s'agit de glyphes bien précis pouvant être représentés par un caractère unique ou par des combinaisons bien précises de caractères définies par le standard. Par exemple, côté caractères uniques, U+1F600 GRINNING FACE représente un emoji de smiley souriant largement ‘😀’, tandis que U+1F4A9 PILE OF POO représente un emoji de tas de merde ‘💩’ ; pour ce qui est des combinaisons de caractères, par exemple U+1F1EA REGIONAL INDICATOR SYMBOL LETTER E + U+1F1FA REGIONAL INDICATOR SYMBOL LETTER U représente un emoji de drapeau européen ‘🇪🇺’, tandis que la combinaison assez complexe U+1F3F3 WAVING WHITE FLAG + U+FE0F VARIATION SELECTOR-16 + U+200D ZERO WIDTH JOINER + U+1F308 RAINBOW représente un emoji de drapeau arc-en-ciel ‘🏳️‍🌈’ (c'est mignon : on fabrique un drapeau arc-en-ciel en « combinant » un drapeau blanc avec un arc-en-ciel…) ; mais on considère dans tous les cas qu'il s'agit d'un emoji.

    Une des particularités de ces caractères est qu'ils ont généralement des couleurs spécifiques. Ce n'est pas imposé par le standard, mais c'est ce qu'on observe typiquement quand il s'agit d'afficher sur un écran couleur. (Les polices informatiques traditionnelles n'étant pas prévues pour stocker des informations de couleur, ça a d'ailleurs causé toutes sortes de difficultés techniques pas complètement — ou pas très proprement — résolues d'obtenir cet effet.)

    Mais comme je le disais dans l'entrée liée ci-dessus, certains caractères ont une double nature, emoji ou non-emoji, ou plus exactement, peuvent coder un glyphe emoji (donc typiquement en couleur) ou un glyphe non-emoji selon qu'on les fait suivre du sélecteur de variation numéro 15 ou 16 : je donnais l'exemple du caractère U+2620 SKULL AND CROSSBONES représentant une tête de mort au-dessus de tibias/fémurs croisés, qui peut servir à coder l'emoji ‘☠️’ quand il est suivi de U+FE0F VARIATION SELECTOR-16, ou bien le caractère explicitement non-emoji ‘☠︎’ quand il est suivi de U+FE0E VARIATION SELECTOR-15.

    La distinction devient là un peu byzantine (en quoi est-ce que ‘☠︎’ n'est pas un caractère idéographique ? si ce n'est pas une question de couleur, qu'est-ce que ça veut dire au juste, d'être un emoji ?), mais au moins, pour ce qui est d'Unicode, il y a une définition précise. En pratique, c'est assez clair, quand même : la forme emoji est un petit dessin qui vient décorer un texte pas très sérieux ou peut-être signaler une émotion tandis que la forme non-emoji est plutôt un symbole qui aurait sa place dans un texte sérieux. Je me suis d'ailleurs plaint que l'interface Web de Twitter « emojifiait » abusivement, et que si je veux écrire une bijection AB dans un texte mathématique, ça m'agace qu'elle apparaisse sous forme d'emoji ‘↔️’ [si vous ne voyez pas d'emoji ici, cliquez sur cette image pour avoir une idée] si je ne prends pas le soin explicite de mettre un U+FE0E VARIATION SELECTOR-15 après.

  • Les émoticônes (emoticons ? emotica ? quidlibet…) sont des façons de représenter des émotions dans du texte, notamment/typiquement des sourires plus ou moins heureux, auquel cas on peut parler de smileys, terme parfois considéré comme interchangeable avec émoticône (bien qu'il existe des émoticônes qui ne sont pas des smileys et peut-être réciproquement).

    Cela peut être fait par l'usage de caractères spécifiquement dédiés à cet effet, comme ‘☻’ (U+263B BLACK SMILING FACE), qui peuvent être ou ne pas être des emojis (cf. ci-dessous), ou bien en détournant des caractères ayant en principe un usage différent, par exemple les caractères de ponctuation servant à construire le smiley ‘:-)’ (U+003A COLON + U+002D HYPHEN-MINUS + U+0029 RIGHT PARENTHESIS).

    Comme l'histoire des emojis, celle des émoticônes est confuse et on peut trouver toutes sortes de précurseurs selon ce qu'on qualifie exactement d'émoticône. Les smileys qui détournent les caractères ASCII (on parle donc de smileys en ASCII-art) comme le dernier exemple que je viens de donner, sont généralement rattachés à un message précis posté le dans un forum informatique de CMU proposant l'usage de ‘:-)’ et ‘:-(’ pour marquer les blagues et les choses qui n'en sont pas. Le jeu de caractères CP437 de l'IBM-PC (qui doit dater de 1981) incluait en toute première position des caractères ‘☺︎’ et ‘☻’ (un visage souriant en vidéo normale et inverse, donc), qui pouvaient servir comme dessins (je m'en suis beaucoup servi pour représenter le héros dans des petits jeux que je programmais en BASIC ou Pascal dans les années 1980), mais n'étaient pas facile à utiliser dans du texte puisqu'ils étaient classés comme caractères de contrôle : on peut débattre s'il s'agissait d'une émoticône ou pas, ou d'un emoji ou pas.

    En tout cas, les termes emoji et émoticône sont sans rapport, et leur similarité est accidentelle (au moins formellement : il est difficile exclure complètement, par exemple, que la similarité avec le mot anglais emotion ait en partie inspiré la composition du mot japonais 絵文字, ou que la confusion ait joué dans la popularité du mot en-dehors du japon).

  • Même s'il y a un certain flou dans la définition des deux termes, les propriétés d'être un emoji et d'être une émoticône sont indépendantes. Par exemple, ‘🌍’ (U+1F30D EARTH GLOBE EUROPE-AFRICA) est indubitablement un emoji, mais ce n'est pas une émoticône puisqu'il ne s'agit pas de représenter une émotion de celui qui écrit. À l'inverse, ‘:-)’ est une émoticône mais n'est pas un emoji, en tout cas pas au sens formel d'Unicode (d'ailleurs, au sens formel d'Unicode, même ‘☻’ et ‘☺︎’ [ce dernier devrait apparaître comme la version noir et blanc inversée du précédent] ne sont pas des emojis, contrairement à ‘😀’).

    Ceci étant, je répète qu'il y a forcément une certaine dose de flou sur ce qui est ou n'est pas quoi. Par exemple, à l'heure de gloire des smileys en ASCII-art, certains s'amusaient à en composer de plus en plus complexes (comme le smiley père Noël*<:-{)#’), juste pour le plaisir de les dessiner et plus pour représenter une émotion : du coup, je ne les classerais ni dans les emojis ni dans les émoticônes, alors que ce sont quand même des smileys… bref, ce n'est pas très important.

Comme je l'ai écrit ci-dessus, l'histoire des emojis et des émoticônes est confuse et se recoupe au moins partiellement. Si les smileys en ASCII-art sont apparus vers le début des années 1980, et si les japonais ont développé leur propre style de smileys (kaomoji, par exemple ‘{^_^}’) dans la seconde moitié des années 1980, c'est surtout avec le développement des webforums dans les années 1990–2000 que les émoticônes ont commencé à prendre le chemin des emojis : remplaçant automatiquement (ainsi que certains logiciels de mail) les séquences ASCII-art (comme ‘:-)’) par des dessins plus représentatifs, ils se sont mis à multiplier les possibilités de smileys insérables depuis une interface ad hoc et ont certainement beaucoup fait pour les rendre populaires auprès des internautes. Je pense à des dessins comme ça (ou plus généralement ce que renvoie une recherche Google Images de phpbb smileys), qui font maintenant très datés début des années 2000 mais qu'on continue à trouver çà et là sur le Web (y compris sur ce blog, cf. ci-dessous).

Rappelons à toutes fins utiles que si Unicode définit des caractères et séquences de caractères censés représenter des emojis, au final, les dessins réellement affichés dépendent des polices installées et typiquement du concepteur du système d'exploitation ou smartphone (ou autre gadget) utilisé pour lire le texte ; certains emojis sont sujets à des différences de représentation (et donc d'interprétation) assez importantes : il ne faut pas compter sur le fait que la personne à qui vous envoyez un message contenant des emojis verra forcément la même chose que vous (outre les problèmes de différences de dessins, il peut y avoir celui des manques, puisque tout le monde n'a pas forcément la panoplie complète).

⭐️

Maintenant, on peut se poser un certain nombre de questions :

  • Est-ce que tout ça est bien utile ? À quoi est-ce que ça sert exactement ?
  • Et plus spécifiquement : est-ce qu'Unicode a eu raison de céder et de commencer à encoder les emojis dans le Standard, au risque de glisser sur la pente d'une ménagerie qui n'en finit plus de dessins en tous genres ?

Sur le premier point, mon avis est qu'indubitablement, oui, au moins les émoticônes ont un intérêt : elles facilitent réellement la communication et évitent notamment des malentendus de ton ou de degré en explicitant par écrit des choses qui, à l'oral, passeraient dans l'intonation de la voix, la gestuelle ou le visage. Elles ne sont évidemment pas indispensables ; mais la ponctuation n'est pas non plus indispensable : et comme la ponctuation, elles servent à donner une sorte de méta-information périphérique à l'interprétation d'un énoncé, en l'occurrence une sorte de contexte émotionnel. Contexte et méta-informations qu'on pourrait bien sûr indiquer explicitement par des mots (comme on pourrait se passer du point d'interrogation et d'exclamation par des adverbes et des tournures de phrase bien choisis) mais au prix de beaucoup plus de lourdeur dans l'expression. Quant à l'argument selon lequel on se passait bien de smileys avant les ordinateurs (ou qu'on n'imagine pas Victor Hugo dessiner une petite tête souriante à la fin d'une phrase pour la rendre plus légère), il fait semblant d'ignorer le fait que la communication écrite ne s'est pas seulement développée, elle s'est aussi diversifiée, et qu'il est normal que des nouveaux usages entraînent des nouveaux besoins. (Pour reprendre mon analogie entre émoticônes et ponctuation, je ne serais d'ailleurs pas surpris que la nécessité ressentie à l'introduction de la ponctuation ait été semblablement liée à une diversification et démocratisation des usages de l'écrit.)

Bref, je ne comprends pas plus ceux qui semblent s'interdire l'usage du moindre smiley que ceux qui s'interdiraient le point d'interrogation ou le point d'exclamation : tout dépend du contexte, bien sûr, peut-être que dans un texte de loi ou dans un contrat il est mal vu de faire usage de points d'interrogation et d'exclamation et je comprends qu'on soit semblablement réticent à l'usage de smileys dans des contextes un peu formels (où de toute façon on n'est pas censé s'interroger sur l'émotion de la personne qui écrit), mais je ne comprends pas un refus catégorique de leur emploi en général.

Évidemment, a contrario, il y a ceux qui en abusent, et qui trouvent utile d'ajouter douze smileys ‘😂’ (U+1F602 FACE WITH TEARS OF JOY) et/ou ‘🤣’ (U+1F923 ROLLING ON THE FLOOR LAUGHING), qui sont sans doute les plus abusés, à la fin de la moindre remarque drôle / moqueuse / sarcastique. Mais il y a aussi des gens qui abusent des points d'interrogation et d'exclamation (five exclamation marks, the sure sign of an insane mind), ce n'est pas une raison pour ne pas s'en servir.

Si vous voulez un bon exemple d'utilisation modérée et raisonnable des smileys, prenez exemple sur moi. 😁

Le dernier paragraphe n'était pas sérieux, bien sûr, mais constitue un exemple de cas où je considère vraiment utile de mettre un smiley — par opposition au fait de ne rien mettre du tout (il y aura toujours quelqu'un pour me prendre au sérieux, aussi évidente que soit la blague, et parfois je veux devancer les malentendus) ou au fait de signaler l'humour par quelque chose de plus explicite (comme le dernier paragraphe n'était pas sérieux…). Et je ne pense vraiment pas qu'on puisse m'accuser de faire un usage immodéré des smileys sur ce blog : un dénombrement rapide suggère que j'en ai utilisé 336 sur 2596 entrées de blog (ou 16 ans).

⭐️

Au niveau technique, pour entrer un smiley sur ce blog, je tape quelque chose comme <d:smiley-smile /> (le source de mon blog est en XML est le d fait référence au namespace http://www.madore.org/~david/NS/daml/ mais peu importe) et mon moteur de blog transforme ça en quelque chose qui a évolué au cours du temps. Quand j'ai commencé, il n'y avait pas de smileys dans Unicode, donc j'utilisais des icônes récupérées de Mozilla (et peut-être ailleurs) avec, pour ceux qui utilisent des navigateurs en mode texte, un attribut alt donnant le smiley en ASCII-art : quelque chose comme <img src="http://www.madore.org/~david/images/smileys/smile.png" class="smiley" alt=":-)" title="Sourire" width="15" height="15" /> ; plus tard, j'ai changé deux choses : j'ai mis l'image directement comme une URL en data: (pour ne pas multiplier les chargements de fichiers externes) et j'ai changé le alt pour utiliser directement les caractères Unicode : maintenant cela ressemble plutôt à : <img src="data:image/png;base64,iVBORw0KGgoAAAANAAAASUVORK5CYII=" class="smiley" alt="&#x263a;" title="Sourire" width="15" height="15" /> (le title est en anglais ou français selon la langue ambiante). À l'heure où j'écris, donc, j'utilise encore des images façon webforum des années 2000 pour les smileys sur ce blog : peut-être que je devrais chercher un jeu d'images plus moderne (et surtout plus complet), mais à terme j'utiliserai sans doute directement les caractères Unicode seuls, c'est-à-dire que je remplacerai par quelque chose comme <span class="smiley" title="Sourire">&#x263a;</span> ; une des choses qui me retient est que, actuellement, sur mon Firefox ou avec les polices que j'ai sur mon PC (je ne sais pas bien ce qui est responsable de quoi dans l'affaire), ‘☺️’ (U+263A WHITE SMILING FACE + U+FE0F VARIATION SELECTOR-16) n'est pas affiché sous forme d'un emoji couleur, et n'est donc pas du tout dans le même style que ‘😀’ (U+1F600 GRINNING FACE) ou la plupart des autres. (A contrario, sur mon Firefox sous Android, c'est ‘☺︎’ (U+263A WHITE SMILING FACE + U+FE0E VARIATION SELECTOR-15) qui apparaît sous la forme d'un emoji alors qu'il ne devrait pas.) C'est agaçant (un jour™ j'essaierai de comprendre ce qui se passe au juste).

⭐️

Ce qui m'intéresse beaucoup dans les émoticônes, c'est le juste choix de la gamme d'émotions à représenter. Trop peu et on manque de finesse : le but n'est pas juste de dire je suis content ou je suis triste, ce qui n'est pas très intéressant, mais aussi des choses comme je suis fier de moi, je n'en reviens pas !, vous avez remarqué la référence ?, je délire complètement, là, bien sûr !, je ne suis pas sérieux mais en fait si…, si j'étais méchant c'est ça que je ferais, je suis quand même sceptique quant à cette histoire, je suis complètement perdu, you might very well think that; I couldn't possibly comment, ceci est de l'humour glacé et sophistiqué du 5824e degré, et ainsi de suite. Trop et on se noie sous les émoticônes qui ne servent pas ou qui finissent par représenter autre chose que des émotions : j'ai noté ci-dessus que les smileys en ASCII-art, dont la combinatoire est essentiellement illimitée, se sont éloignés du terrain de la représentation des émotions pour s'approcher de celui de l'art pour l'art.

Le moteur de ce blog est actuellement limité à un répertoire assez étroit de smileys (essentiellement parce que c'est ce que j'ai trouvé comme paquet d'icônes) :

smileSourire:-)☺️U+263A WHITE SMILING FACE + U+FE0F VARIATION SELECTOR-16
winkClin d'œil;-)😉U+1F609 WINKING FACE
surprisedSurpris:-o😲U+1F632 ASTONISHED FACE
sadTriste:-(☹️U+2639 WHITE FROWNING FACE + U+FE0F VARIATION SELECTOR-16
coolCool8-)😎U+1F60E SMILING FACE WITH SUNGLASSES
biggrinGrand sourire:-D😁U+1F601 GRINNING FACE WITH SMILING EYES
confusedEmbrouillé:-S😕U+1F615 CONFUSED FACE
crazyFou%-)🤪U+1F92A GRINNING FACE WITH ONE LARGE AND ONE SMALL EYE
neutralSans sourire:-|😐U+1F610 NEUTRAL FACE
evilgrinSourire mauvais>:-)😈U+1F608 SMILING FACE WITH HORNS
cryPleure¦-(😢U+1F622 CRYING FACE
evilMauvais>:-(👿U+1F47F IMP

(La première colonne est le nom que je tape, la seconde est la description insérée dans l'attribut title quand le texte ambiant est en français, la troisième est l'icône « façon webforum des années 2000 » utilisée actuellement, la quatrième est la version ASCII-art qui était utilisée autrefois comme alt, la cinquième est l'emoji Unicode que j'utilise maintenant alt, et la dernière est le décodage de ce emoji en caractères Unicode.)

Je ne suis pas complètement satisfait de la correspondance entre icônes, smileys ASCII-art et version Unicode ; par exemple, peut-être que les versions icône et Unicode que je liste dans la ligne confused devraient plutôt être associées au smiley ASCII-art ‘:-\’ et associés à la description perplexe, ce n'est pas clair. Mais la correspondance est au moins approximativement sensée. On fait beaucoup de cas du fait que les différences de représentations d'emojis donnent lieu à des malentendus voire des contresens à cause des différences entre représentations graphiques ou entre conventions culturelles : et même s'il y en a qui sont effectivement problématiques, je ne trouve pas gênant de façon générale qu'il subsiste un léger flou dans l'émotion exacte représentée — si on veut dire quelque chose de très précis, on utilise des mots et des phrases, les émoticônes ne sont pas censés être parfaitement précis. (Pour filer ma comparaison avec la ponctuation, mettre des mots entre guillemets peut également avoir plusieurs significations différentes : citation verbatim, mais aussi sarcasme, euphémisme, etc.)

Le répertoire ci-dessus est minimal, donc, mais je le trouve déjà utile. J'en ajouterais bien quelques uns (et si je passe à un jeu d'icônes plus moderne comme OpenMoji, je le ferai sans doute) : un smiley qui tire la langue, celui qui hausse un sourcil, un smiley en colère, peut-être le smiley renversé, celui qui hausse les yeux au ciel, celui qui fait la grimace, celui qui a peur, et celui qui rougit. Mais je n'en ajouterais pas deux cents non plus. Je veux dire si la gamme des émotions humaines est énorme, la liste de ce j'ai effectivement envie de représenter dans un texte écrit, et avec le niveau de précision où on tient à se placer avec des émoticônes, n'est pas si gigantesque.

La palette d'émoticônes proposée dans les emoji Unicode est beaucoup plus large que la petite sélection d'émotions ci-dessus : je la trouve plutôt bonne, mais il y a à la fois des choses en trop (à mes yeux), et quelques petites choses qui paraissent manquer. Pour ce qui est des choses en trop, je pense à des caractères comme U+1F912 FACE WITH THERMOMETER (‘🤒’) qui semble servir à indiquer qu'on est malade / fébrile : à mes yeux, quelque chose comme ça n'a rien à faire dans les émoticônes : la maladie n'est pas une émotion, et même si elle peut en provoquer, ce n'est pas une émotion en rapport avec le texte qu'on écrit — ce n'est pas une méta-information, un contexte aidant à bien comprendre le texte. Le smiley qui vomit, U+1F92E FACE WITH OPEN MOUTH VOMITING (‘🤮’) a un sens métaphorique assez clair (en signalant le dégoût), mais là, je ne sais pas. Je ne sais pas non plus ce qu'on peut bien faire de U+1F920 FACE WITH COWBOY HAT (‘🤠’). Pour ce qui est des choses qui me manquent, je n'ai pas trouvé de smiley qui soupire (il est vrai que ce n'est sans doute pas évident à dessiner), ni de smiley clairement embarrassé, de smiley faisant les gros yeux, ou bien satisfait ou fier de lui ; cela m'arrive occasionnellement de rentrer bredouille de ma recherche de smiley, je ne note pas forcément précisément ce que je cherchais, mais c'est tout de même assez rare pour que je conclue qu'Unicode est raisonnablement complet à cet égard.

Il y a bien sûr des emojis qui ne sont pas des smileys et qui peuvent quand même être considérés comme des émoticônes parce qu'ils servent à représenter le même genre de choses ; et ils peuvent éventuellement remplacer ce qui manque comme smileys. Je pense par exemple à U+1F926 FACE PALM (‘🤦’ ; si vous ne comprenez pas bien, cherchez dans Google Images), pour signifier la lassitude exaspérée, ou U+270C VICTORY HAND + U+FE0F VARIATION SELECTOR-16 (‘✌️’) pour la satisfaction de la réussite.

⭐️

Maintenant, à côté des smileys et autres emojis qui peuvent éventuellement représenter des émotions, il y a quantité d'emojis dans Unicode qui représentent juste… tout et n'importe quoi. À titre d'exemples, on a notamment :

  • les drapeaux de pays et certaines institutions internationales (par exemple U+1F1FA REGIONAL INDICATOR SYMBOL LETTER U + U+1F1F3 REGIONAL INDICATOR SYMBOL LETTER N pour le drapeau des Nations-Unies ‘🇺🇳’) ou de certaines régions (par exemple, la combinaison fort longue U+1F3F4 WAVING BLACK FLAG + U+E0067 TAG LATIN SMALL LETTER G + U+E0062 TAG LATIN SMALL LETTER B + U+E0073 TAG LATIN SMALL LETTER S + U+E0063 TAG LATIN SMALL LETTER C + U+E0074 TAG LATIN SMALL LETTER T + U+E007F CANCEL TAG pour le drapeau de l'Écosse ‘🏴󠁧󠁢󠁳󠁣󠁴󠁿’ ou encore d'autres drapeaux symboliques (comme U+1F3F4 WAVING BLACK FLAG + U+200D ZERO WIDTH JOINER + U+2620 SKULL AND CROSSBONES + U+FE0F VARIATION SELECTOR-16 pour le drapeau pirate ‘🏴‍☠️’) ;
  • une collection complètement hétéroclite de symboles, incluant toutes sortes de cœurs (par exemple U+1F496 SPARKLING HEART pour un cœur scintillant(?) ‘💖’), un échantillon aléatoire de pictogrammes tels qu'on trouverait sur des panneaux (comme U+1F6B7 NO PEDESTRIANS pour le un panneau d'interdiction aux piétions ‘🚷’), de flèches emoji (par exemple U+2195 UP DOWN ARROW + U+FE0F VARIATION SELECTOR-16 pour une flèche haut-bas en version emoji, ‘↕️’), d'icônes informatiques vaguement standardisées (du genre U+1F50A SPEAKER WITH THREE SOUND WAVES pour ‘🔊’), de symboles représentant des religions ou des signes du zodiaque (y compris U+26CE OPHIUCHUS pour le symbole du serpentaire ‘⛎’), et des dessins géométriques colorés qui se demandent bien ce qu'ils font là (comme U+1F537 LARGE BLUE DIAMOND pour ‘🔷’) ;
  • une collection tout aussi hétéroclite d'objets (par exemple U+1F52D TELESCOPE pour ‘🔭’), qui bien sûr n'est pas bien séparée de la collection de symboles ; d'animaux (U+1F41D HONEYBEE pour ‘🐝’) ; et de plantes (U+1F334 PALM TREE pour ‘🌴’) ;
  • une collection encore plus bizarre et hétéroclite de choses qui se mangent ou se boivent (au pif, U+1F354 HAMBURGER pour ‘🍔’) ;
  • des représentations d'humains en train de faire des activités principalement sportives (comme U+1F6B4 BICYCLIST pour un cycliste ‘🚴’) ou de métiers (du genre U+1F477 CONSTRUCTION WORKER pour un ouvrier du bâtiment ‘👷’), auxquelles on peut rattacher le très bizarre businessman flottant (si, si : U+1F574 MAN IN BUSINESS SUIT LEVITATING + U+FE0F VARIATION SELECTOR-16 pour ‘🕴️’) ;
  • et encore toutes sortes de machins inclassables, comme le fameux tas de merde (U+1F4A9 PILE OF POO pour ‘💩’).

Au sujet de la pente glissante dans laquelle Unicode s'est joyeusement jeté en commençant à encoder ces machins, mais aussi du fait qu'ils n'avaient pas forcément le choix à partir du moment où ils veulent être le One Standard to Rule Them All, je renvoie à cette entrée écrite il y a huit ans quand les emojis ont commencé à faire leur entrée dans Unicode, et qui me semble encore tout à fait d'actualité. Les principales évolutions en ces huit ans, à part que le nombre d'emojis Unicode a augmenté (j'ai la flemme de chercher les valeurs précises), ont été que les dessins en couleur se sont répandus, et que toutes sortes de débats sur la diversité (notamment ethnique et sexuelle) ont débouché sur des solutions un peu bâtardes dont je dois dire un mot, mais qu'un des résultats de tout ça est qu'un emoji Unicode ne correspond plus forcément à un seul codepoint (je l'ai déjà expliqué, et les exemples ci-dessus abondent).

Il y aurait sans doute des thèses entières à écrire sur l'usage que les gens font effectivement des emojis, et notamment de ceux qui ne sont pas des émoticônes. Je dois dire que j'ai un peu du mal à comprendre quel intérêt il peut y avoir à disposer d'un emoji pour, disons, un brocoli (U+1F966 BROCCOLI pour ‘🥦’), et dans quelle(s) condition(s) on pourrait avoir envie de s'en servir plutôt qu'écrire le mot brocoli. (Bon, cela pourra toujours servir dans des textes mathématiques en l'honneur de Jean-Yves Girard.) Idem pour l'intérêt d'un emoji représentant quelqu'un en train de se faire coiffer (U+1F487 HAIRCUT pour ‘💇’) ou d'un télescope. Pour moi, l'intérêt principal des dessins en tous genres est de ponctuer le texte de méta-informations aidant à en comprendre le contexte (comme le contexte émotionnel dans le cas des émoticônes, cf. ce que je disais ci-dessus), et les brocolis, les coiffures et les télescopes ne sont pas furieusement utiles dans ce sens ; mais je ne sais pas quel usage réel est fait de ce genre de choses (je suppose qu'un usage possible est simplement comme abréviation, mais là aussi le choix est assez étrange).

Maintenant, il est certain que beaucoup d'emojis se font détourner de leur usage prévu, les plus notables étant l'aubergine (U+1F346 AUBERGINE pour ‘🍆’) utilisée comme métaphore pour un pénis et la pêche (U+1F351 PEACH pour ‘🍑’) pour une paire de fesses, à tel point que les usages légitimes de ces deux emojis dans leur sens apparent (le légume et le fruit) sont extrêmement minoritaires : mon petit côté loyal-psychorigide me fait dire au lieu de détourner de leur usage ces pauvres aliments qui n'y sont pour rien, il faut créer des emojis pour le pénis et la paire de fesses, et évidemment bien d'autres pouvant représenter toutes sortes de pratiques sexuelles comme on en a créé pour toutes sortes d'aliments : l'intention de les utiliser est évidente, et c'est désolant que notre société soit restée à un niveau de pudibonderie telle qu'on éprouve le besoin de métaphores de ce genre (et quand on voit que, par exemple, des emojis gay ont provoqué une réaction internationale, on se dit qu'on n'est pas rendus).

Au sujet du détournement de caractères, je devrais sans doute lier, quelque part dans cette entrée, une étude — un peu vieille — de Barry Kavanagh intitulée A Contrastive Analysis of American and Japanese Online Communication: A Study of UMC Function and Usage in Popular Personal Weblogs, que j'avais lue il y a longtemps (mais je ne me rappelle plus exactement ce qu'en avais tiré, donc je ne fais que la mentionner au passage).

⭐️

Il faut bien sûr que je dise un mot sur les questions de diversité dans les emojis dans Unicode.

Quand les emojis de personnes sont arrivés notamment sur les téléphones Apple, ils ressemblaient à ça : tous les emojis représentant des humains (non symbolisés façon émoticônes) étaient ostensiblement blancs même si c'est la couleur de peau d'une petite minorité de l'humanité (sauf, bizarrement, U+1F473 MAN WITH TURBAN soit ‘👳’, ainsi que U+1F472 MAN WITH GUA PI MAO soit ‘👲’) ; et ceux qui n'étaient pes explicitement désignés de genre masculin ou féminin étaient genrés selon des clichés courants (même si ce n'était pas totalement clair, le U+1F46E POLICE OFFICER, ‘👮’, apparaissait plus masculin que féminin, en plus d'être blanc).

Des efforts ont ensuite été faits pour remédier à ce problème (qui était d'ailleurs plutôt de la faute des concepteurs des dessins que de celle d'Unicode, les dessins et descriptions duquel sont passablement neutres). Le point positif est qu'on est arrivé à une meilleure diversité (même si le résultat reste assez perfectible) ; et on l'a fait en utilisant des combinants ou autres séquences de caractères pour éviter de consommer des centaines de codepoints Unicode. Le point négatif est qu'on y est arrivé au prix de solutions ad hoc et bancales qui n'obéissent à aucune cohérence.

Résultat, certains emojis peuvent faire varier la couleur de la peau, d'autres non ; certains peuvent faire varier la couleur des cheveux, d'autres non ; certains peuvent faire varier le genre de la personne représentée, d'autres non ; certains admettent une variante de genre non spécifié, d'autres non ; et tout ça essentiellement sans aucune logique. Par exemple, on a le droit dans Unicode à une personne de sexe indéterminé ayant des cheveux blonds (U+1F471 PERSON WITH BLOND HAIR pour ‘👱’), qui peut d'ailleurs avoir la peau noire (U+1F471 PERSON WITH BLOND HAIR + U+1F3FF EMOJI MODIFIER FITZPATRICK TYPE-6 pour ‘👱🏿’), mais si on veut que cette personne ait des cheveux roux, alors on est obligé de décider si c'est un homme (U+1F468 MAN + U+200D ZERO WIDTH JOINER + U+1F9B0 EMOJI COMPONENT RED HAIR pour ‘👨‍🦰’) ou une femme (U+1F469 WOMAN + U+200D ZERO WIDTH JOINER + U+1F9B0 EMOJI COMPONENT RED HAIR pour ‘👩‍🦰’), et là aussi on peut faire varier la couleur de la peau mais ce n'est pas obligatoire. De même, un policier a le droit d'être de genre indéterminé (même si j'ai déjà signalé que U+1F46E POLICE OFFICER, ‘👮’, a tendance à ressembler à un homme), comme il peut être un homme spécifiquement (U+1F46E POLICE OFFICER + U+200D ZERO WIDTH JOINER + U+2642 MALE SIGN + U+FE0F VARIATION SELECTOR-16 pour ‘👮‍♂️’) ou une femme spécifiquement (U+1F46E POLICE OFFICER + U+200D ZERO WIDTH JOINER + U+2640 FEMALE SIGN + U+FE0F VARIATION SELECTOR-16 pour ‘👮‍♀️’) ; mais un juge doit forcément être un homme (U+1F468 MAN + U+200D ZERO WIDTH JOINER + U+2696 SCALES + U+FE0F VARIATION SELECTOR-16 pour ‘👨‍⚖️’) ou une femme (U+1F469 WOMAN + U+200D ZERO WIDTH JOINER + U+2696 SCALES + U+FE0F VARIATION SELECTOR-16 pour ‘👩‍⚖️’) ; et on remarquera que la manière dont on spécifie le genre est complètement différent pour le policier et pour le juge. S'agissant des policiers et juges, on peut faire varier la couleur de la peau mais pas celle des cheveux. Quel chaos !

L'idée de base pour la représentation des couleurs de peau pour les emojis humains me paraît plutôt bonne sur le principe :

  • il y a une version « de base » qui doit correspondre à une personne de couleur de peau indéterminée et être représentée graphiquement par une couleur de peau délibérément irréaliste (du genre, gris, vert ou bleu — malheureusement, c'est plutôt le jaune façon Simpsons qui a été choisi, je vais revenir là-dessus) ;
  • on peut spécifier une couleur de peau particulière à l'aide de modificateurs spéciaux (en l'occurrence U+1F3FB EMOJI MODIFIER FITZPATRICK TYPE-1-2 à U+1F3FF EMOJI MODIFIER FITZPATRICK TYPE-6).

J'apprécie le fait qu'on puisse mais qu'on ne doive pas spécifier la couleur de la peau. Malheureusement, il y a plein de problèmes en pratique :

  • Pour éviter de rentrer dans le débat épineux de ce que doivent être les couleurs de peau représentables (et risquer de finir par normaliser des classifications racistes), Unicode a choisi d'utiliser la classification de Fitzpatrick issue de la dermatologie, qui a sans doute un intérêt scientifique mais ne correspond ni vraiment à l'idée qu'on se fait spontanément ou culturellement de la couleur de la peau, encore moins du type ethnique, ni à ce que les emojis effectivement affichés indiquent ; et notamment, ceux qui cherchent à représenter un type ethnique particulier, par exemple, chinois han, ne vont pas trouver leur bonheur ;
  • ceci est compliqué par le fait que les fournisseurs d'emojis ont utilisé pour version « de base » (et donc censée correspondre à une couleur de peau irréaliste, cf. ci-dessus), plutôt que le vert ou le bleu, un jaune « Simpsons », certes irréaliste, mais qui (a) est utilisé dans les Simpsons pour représenter des blancs, et (b) peut donner l'impression qu'elle est censée représenter un type ethnique asiatique ;
  • concrètement, il semble que quasiment personne n'utilise le modificateur U+1F3FB EMOJI MODIFIER FITZPATRICK TYPE-1-2 (censé représenter les couleurs de peau les plus claires), parce que les blancs s'imaginent systématiquement être la couleur de peau par défaut et/ou parce qu'ils ne tiennent pas à rappeler qu'ils sont blancs — ceci n'est pas un problème d'Unicode, bien sûr, mais cela révèle encore une fois quelque chose sur l'interprétation de la version « de base ».
  • Indépendamment de tout ça, les modificateurs de couleur de peau ne sont pas utilisables sur tous les emojis représentants des humains mais seulemnt sur ceux qui avaient initialement été représentés comme blancs par Apple, et notamment, pas sur les émoticônes : ainsi, une émoticône comme U+1F600 GRINNING FACE, ‘😀’, sera forcément d'une couleur « de base » (typiquement d'un jaune artificiel) et on ne peut pas la changer. Autrement dit, Unicode n'a pas su trancher entre la logique « les emojis représentant des humains sont des abstractions, on doit leur donner une couleur de peau neutre (c'est-à-dire irréaliste) et/ou un dessin complètement stylisé » et la logique « les emojis représentant des humains doivent être des dessins raisonnablement fidèles (par exemple de la personne qui s'exprime) dont il s'agit de pouvoir faire varier librement les caractéristiques visibles », et on se retrouve avec une solution incroyablement illogique où les caractéristiques variables dépendent de façon aléatoire de l'emoji. (À ce sujet, voir ce fil Twitter et les différentes discussions qui en partent, par exemple celle-ci.)

Pour ce qui est du genre, comme je le dis ci-dessus au sujet des policiers et des juges, la même logique (qui aurait voulu que, pour chaque activité ou profession, on ait un emoji de genre indéterminé et la possibilité de le rendre spécifiquement masculin ou spécifiquement féminin) n'a pas été appliquée : dans certains cas il y a bien une version non-genrée, dans d'autres il n'y a pas, et surtout, il n'y a absolument aucune logique (en gros cela dépend de si l'emoji était représenté dès Unicode 6.0 par un caractère spécifique ou si on l'a fabriqué plus tard avec d'une séquence commençant par U+1F468 MAN ou U+1F469 WOMAN ; or il n'y a pas de caractère PERSON).

⭐️

À un certain niveau, on doit forcément se demander si Unicode était bien l'endroit où mettre tout ça. Indubitablement, cela pose d'énormes problèmes. Le répertoire d'objets, de plantes et d'animaux qui figurent dans les emojis d'Unicode laisse inévitablement poser la question de savoir jusqu'où on mettra la limite tant la liste des candidats possibles est essentiellement infinie. La liste actuelle me fait penser à ce passage que j'aime beaucoup de Through the Looking-Glass :

The shop seemed to be full of all manner of curious things—but the oddest part of it all was, that whenever she looked hard at any shelf, to make out exactly what it had on it, that particular shelf was always quite empty: though the others round it were crowded as full as they could hold.

Je veux dire qu'on a toujours l'impression qu'il y a toutes les choses de la Création sauf justement l'emoji qu'on recherchait.

Mais le vrai problème, finalement plus insidieux que la nécessité de faire un choix arbitraire des bestioles qui entreront ou non dans le Standard, c'est qu'Unicode se retrouve dans la position vraiment délicate de devoir faire ce choix (avec toutes les ramifications politiques et culturelles qu'il peut impliquer). Et des spécialistes de langues et de systèmes d'écriture, ni des informaticiens, ne sont pas forcément les mieux placés pour prendre de telles décisions.

Quelqu'un m'avait proposé le point de vue différent suivant (avec lequel je ne suis finalement pas d'accord, mais qui est intéressant et pertinent et mérite d'être signalé) : considérer que les emojis ne sont pas du texte mais du texte formaté. C'est-à-dire que leur place n'est pas avec les lettres de l'alphabet ou les signes de ponctuation, mais avec les marquages comme gras, italiques, souligné, couleur rouge, centré, et ainsi de suite, ce qui se représente typiquement, en informatique, par un langage à balises comme du HTML (donc le système de <d:smiley-smile /> que j'utilise sur ce blog serait dans l'esprit de cette solution).

Il y a essentiellement trois raisons pour lesquelles je ne suis pas d'accord.

La première est sémantique : j'ai essayé d'expliquer plus haut en quoi au moins les émoticônes se rapprochent plus de la ponctuation que de décorations typographiques ; et les emojis peuvent aussi se rattacher à un système d'idéogrammes, ce qu'ils sont partiellement, et si on accepte qu'Unicode encode des dizaines de milliers d'idéogrammes chinois (dont, rappelons-le, une énorme partie doit apparaître une et une seule fois dans tout le corpus disponible), il n'y a pas de raison de ne pas accepter des idéogrammes d'invention plus récente.

La seconde raison pour moi de rejeter l'idée que les emojis seraient du texte formaté et non du texte simple est plutôt syntaxique : la notion de texte formaté, pour moi, a une structure globalement récursive, on le représente comme des balises imbriquées traduisant des modifications de régions d'un texte brut : ceci ne correspond pas à la façon dont on pense les emojis, qui ne sont pas une modification par rapport à un texte de base, et qui ne peuvent pas s'imbriquer (whatever that would mean).

Enfin, ma troisième raison est pragmatique : la représentation informatique du texte formaté est un échec monumental : il n'est toujours pas possible de copier-coller du texte formaté (par exemple avec des mots en gras et en italique) de manière à ce que ça marche partout (du style : SMS, Twitter, les commentaires de tous les sites qu'on peut imaginer, — ce genre de choses), il n'y a guère que dans les mails que Madame Michu peut utiliser du texte formaté, et même là, ça marche mal et la solution adoptée est mauvaise et pose toutes sortes de problèmes de sécurité (parce qu'avec le texte formaté, faute de standard minimal clair, on a inclus tout HTML, donc les images, le JavaScript et tout ce qui va avec) ; alors qu'Unicode a plutôt été une réussite pour ce qui est de permettre, et de permettre de copier-coller, tout ce qu'il contient en n'importe quel endroit où du texte est accepté. Donc, à force, j'ai tendance à dire que la communauté informatique a prouvé qu'elle était incapable de mettre en place un système de texte formaté qui Juste Marche et qu'il ne faut plus miser là-dessus : au contraire, même, j'en viens à espérer qu'Unicode se décide à inclure des caractères du genre début de gras et début d'italiques (on a déjà des caractères qui s'imbriquent, pour la gestion de la directionnalité, et ça ne marche pas si mal, y compris dans les interactions avec le HTML qui peut faire double emploi).

↑Entry #2597 [older| permalink|newer] / ↑Entrée #2597 [précédente| permalien|suivante] ↑

↓Entry #2591 [older| permalink|newer] / ↓Entrée #2591 [précédente| permalien|suivante] ↓

(mercredi)

Une tentative pour écrire un Unicode pour les nuls

Méta : Le but de cette entrée serait idéalement de dégager une sorte de document que je voudrais appeler Unicode pour les nuls : l'idée serait d'avoir quelque chose de compréhensible par le grand public (disons par tout le monde ayant une connaissance minimale de l'usage d'un ordinateur — savoir faire du copier-coller par exemple) et qui présente les choses que je voudrais que tout le monde sût à propos d'Unicode (ce que c'est, à quoi ça sert, pourquoi ça existe, mais aussi quel impact ça peut avoir sur eux — notamment au niveau sécurité — et comment s'en servir). Évidemment, un tel document n'aurait vraiment de sens que dans le cadre plus général d'une formation aux bases de l'informatique pour le grand public (qui expliquerait, par exemple, dans un de ses chapitres, ce qu'est le Web et l'idée générale d'un navigateur Web, ce qu'est une URL et une page Web, ce genre de choses, pour pouvoir notamment donner des conseils de sécurité), mais je n'ai ni le temps ni la patience d'essayer d'écrire un tel cours, alors je me contente de réfléchir à une toute petite brique, celle concernant Unicode. (Et encore, je vais plutôt décrire ce que j'imagine qu'il faudrait écrire que l'écrire vraiment.) • Pourquoi spécifiquement Unicode ? D'abord parce que je pense que c'est un low-hanging fruit (le grand public a beaucoup à gagner pour peu d'efforts à en savoir un peu sur le sujet) ; mais aussi pour une raison égoïste, qui est que ça m'agace, quand j'interagis avec des gens électroniquement, de me retrouver à lire ou à répondre à des choses comme comment tu fais pour écrire ℝ dans un message sur Twitter ? (enfin, justement, on va plutôt me demander comment je fais pour écrire un R double barre (i.e., gras-tableau-noir) ; et ce qui m'énerve franchement, ce sont les gens qui écrivent |R pour essayer d'imiter ce ), ou bien je ne sais pas taper l'e-dans-l'o, ce n'est pas sur mon clavier, et je ne parle pas de choses comme ça.

Cette entrée ne se veut pas finie, et pose notamment la question aux lecteurs techniquement compétents de ce qu'il faudrait encore y dire, ou comment rendre les choses plus accessibles à Madame Michu et Monsieur Dugenou. (Mais à vrai dire, j'aurai certainement perpétuellement la flemme de compléter ce texte. Comme j'aurai la flemme de simplifier les passages où je me suis entraîné à dire des choses trop compliquées. Je suis quand même intéressé par les retours d'éventuels Madame Michu et Monsieur Dugenou qui tomberaient sur ce texte, pour qu'ils me disent ce qui leur semble pas clair ou à améliorer dedans.)

Bref. Qu'est-ce que je veux faire comprendre au grand public concernant Unicode ? Principalement les passages en gras dans ce qui suit (mais aussi, quand même, ce qui est entre les passages en gras…) :

Premièrement, bien sûr, ce que c'est : Unicode est un standard informatique définissant un jeu de caractères (mais aussi des conventions sur comment gérer ces caractères) permettant de représenter un nombre gigantesque de langues différentes ainsi qu'une masse énorme de symboles variés (dont les fameux emojis qui sont peut-être maintenant ce qui rend Unicode le plus célèbre auprès du grand public). Il faudrait peut-être ajouter ici des exemples de langues gérées par Unicode et de mots écrits dans ces langues, mais disons que quasiment tous les systèmes d'écriture de langues encore vivantes sur Terre et un bon paquet de langues mortes et quelques langues artificielles (whatever that means) sont représentables par Unicode. Quant aux symboles, ils couvrent toutes sortes de pictogrammes courants, de symboles techniques dont un nombre énorme de symboles mathématiques, mais aussi, tout simplement, beaucoup de signes de ponctuation un peu bizarres ou exotiques.

Maintenant, le problème avec cette présentation, c'est que si on dit ça au grand public, il va avoir tendance à penser immédiatement OK, mais ça ne me concerne pas / ne m'intéresse pas, parce qu'il n'a pas spécialement envie de taper du phénicien ; et il y a le problème annexe qu'il risque de s'imaginer qu'Unicode est un truc compliqué et exotique, peut-être une application à installer en plus sur son ordinateur, ou quelque chose de ce genre. En réalité, il faut faire comprendre au grand public qu'il est forcément concerné au moins pour la raison idiote que dès lors qu'il tape bonjour sur son clavier, ce sont des caractères Unicode (ni plus ni moins que здравствуйте ou أَلسَّلَامُ عَلَيْكُمْ ou 你好 ou नमस्ते ou encore 😃🤝❣️ — que vous voyez peut-être, ou peut-être pas, comme des lettres cyrilliques, des lettres arabes, des idéogrammes chinois, des lettres devanāgarī et des emojis).

Il y aurait peut-être lieu de faire un petit historique et de rappeler qu'à une époque reculée où la lumière d'Unicode ne baignait pas le monde informatique, à cause de limitations sur le nombre de caractères qu'on s'autorisait à prendre, il y avait toutes sortes de jeux de caractères différents : un tel pour l'alphabet latin utilisé par les langues de l'ouest de l'Europe, un autre pour l'alphabet latin des langues de l'est de l'Europe, un pour l'alphabet cyrillique (plusieurs, en fait), et ainsi de suite. Un vrai chaos, dans lequel un document texte risquait sans cesse d'être mal interprété (voir par exemple cette photo d'une carte postale manuscrite dans lequel le nom de la ville russe d'Екатеринбург [Ekaterinburg] se transforme en l'incompréhensible Åêàòåðèíáóðã parce que les jeux de caractères CP1252 et CP1251 ont été confondus), et on ne pouvait pas mélanger des bouts de langues trop différentes dans un même document. Ce n'est pas pour dire que ce genre de confusions n'arrive plus du tout, mais disons que les problèmes ont été sérieusement circonscrits, et en tout cas on peut mélanger sans problème plusieurs langues dans un même texte (y compris le mot russe Екатеринбург et le charabia Åêàòåðèíáóðã), cette page Web en étant la preuve. Mais je ne suis pas sûr que le grand public soit tellement intéressé par les considérations historiques de ce genre. Ça vaut peut-être tout de même la peine de signaler qu'essentiellement tous les jeux de caractères qui préexistaient à Unicode ont été absorbés dans celui-ci, c'est-à-dire que tous leurs caractères font partie d'Unicode (ce qui est parfois malheureux parce que cela donne toutes sortes de caractères dont on ne voudrait pas forcément, par exemple un symbole micro ‘µ’ différent de la lettre mu ‘μ’ — voir plus bas au sujet des caractères visuellement indiscernables).

En revanche, ce que je crois important de souligner, c'est que de nos jours, Unicode est partout : dans l'immense majorité des situations où un ordinateur manipule des chaînes de caractères (i.e., du texte), ces caractères sont des caractères Unicode. Les pages Web sont en Unicode ; les adresses des pages Web sont (ou au moins, peuvent être) en Unicode ; les mails sont en Unicode (pour les adresses mail, c'est plus discutable) ; les documents Word ou LibreOffice sont en Unicode ; les recherches Google / Bing / DuckDuckGo / etc. sont faites en Unicode ; Wikipédia est en Unicode ; les tweets sont en Unicode ; même les SMS sont en Unicode (même s'il y a là quelques subtilités qui font que tous les caractères ne se valent pas) ; sur beaucoup de systèmes d'exploitation, les noms de fichiers sont en Unicode ; et ainsi de suite. (Il y a bien sûr des exceptions : les compagnies aériennes n'utilisent certainement pas Unicode dans leur système de réservation antédiluvien, et si votre nom comporte des caractères bizarres, vous le savez certainement au moment d'essayer de prendre un billet.)

Le grand succès d'Unicode, c'est l'interopérabilité : dès lors que tout le monde est d'accord sur ce qu'est un caractère (en refilant l'embarras de la décision à Unicode), on peut considérer que la notion de chaîne de caractères est actée à travers l'informatique, et on peut échanger cette donnée sans trop se poser de questions.

Et par voie de conséquence, dans chacun des cas évoqués plus haut, si vous pouvez utiliser des mots de l'alphabet latin comme bonjour (et certainement si vous pouvez utiliser des emojis), vous pouvez aussi utiliser, ou au moins essayer d'utiliser, toutes sortes d'autres caractères, notamment toutes sortes d'autres écritures. (Par exemple, aucun besoin de passer par « Google Inde » pour chercher नमस्ते dans Google.) Je vais revenir plus loin sur la question de comment on peut saisir ces caractères (si on ne les a pas sur le clavier…), mais je réponds là implicitement à des gens qui s'étonnaient que je puisse utiliser des caractères mathématiques comme ℝ dans mes tweets ou même dans des SMS. Ce sont des caractères Unicode comme les autres, c'est vraiment ça la beauté du système.

Bien sûr, je ne prétends pas que tous les caractères Unicode seront acceptés partout : il peut y avoir plein de raisons d'en interdire certains ou d'en limiter d'autres, ou de ne pas les traiter également. Mais normalement, ce genre de limitations est fait pour des raisons de sécurité ou parce que les caractères sont utilisés pour un sens précis (par exemple, si le caractère ‘/’ est utilisé pour séparer les répertoires dans les noms de fichier, il ne peut pas servir à l'intérieur d'un nom de fichier, vous voyez l'idée) : ce sont donc plutôt des exclusions au cas par cas que le contraire.

Et ce qui est peut-être le plus important : le copier-coller de texte est en Unicode sur tous les systèmes informatiques modernes, ce qui permet de prendre des caractères Unicode d'un endroit (même si on ne sait pas les taper/saisir) et de les reproduire à un autre endroit. Ceci permet déjà au moins de faire des recherches Web de termes de langues exotiques même si on ne sait pas écrire les langues en question, c'est déjà quelque chose d'important à comprendre. (Bon, il faut quand même signaler qu'il arrive que le copier-coller fasse toutes sortes de modifications subreptices sur le texte qu'on copie-colle et cause ainsi des complications, mais c'est au moins un point de départ.) De même, pour ceux qui me demandent comment ils peuvent envoyer un ℝ par SMS, ils peuvent au moins le faire en sélectionnant ce ℝ depuis cette page-ci consultée sur leur mobile, en utilisant copier pour enregistrer le caractère en question dans le presse-papier, et en faisant coller pour mettre le caractère dans un SMS. Il y a possiblement plus simple, mais il est bon d'avoir ce genre de solution en tête (ça me semble tellement évident que j'ai du mal à concevoir qu'on puisse ne pas y penser, mais j'ai observé que tout le monde n'y pense pas forcément, donc je préfère enfoncer les portes ouvertes).

Bon, maintenant, essayons d'être un peu plus précis. Quelques choses que je pense qu'il faut savoir sur les caractères Unicode :

  • Chaque caractère Unicode a un numéro et un nom : le numéro est écrit en hexadécimal [là, il faudrait en dire un minimum sur ce qu'est l'hexadécimal si Monsieur Dugenou ne connaît pas, au moins pour lui dire que ce n'est pas vraiment important d'en savoir plus mais que ça s'écrit avec les chiffres de 0 à 9 et les lettres de A à F] sous la forme U+NNNN avec quatre ou cinq chiffres hexadécimaux N, et le nom est, par convention, écrit entièrement en majuscules : il donne quelque idée sur ce que le caractère représente, même s'il ne faut pas le prendre pour une définition. Le numéro seul ou le nom seul suffisent à identifier un caractère Unicode de façon unique, mais souvent, on écrit quand même les deux l'un à la suite de l'autre. Par exemple, ‘A’ est U+0041 LATIN CAPITAL LETTER A tandis que ‘😃’ est U+1F603 SMILING FACE WITH OPEN MOUTH.
  • Les tables de caractères complètes sont disponibles ici sur le site du Consortium Unicode (il s'agit d'autant de liens vers des tableaux PDF donnant les numéros et noms des caractères ainsi que parfois quelques explications minimales et un glyphe de référence). Je pense que c'est intéressant à parcourir ne serait-ce que pour se faire une idée de la variété de ce qui existe dans Unicode.
  • Deux caractères Unicode différents peuvent apparaître visuellement identiques (j'avais fait toute une entrée sur cette question, je ne vais pas redire tout ça ici). Par exemple, les premières lettres des alphabets latin, grec et cyrillique sont respectivement ‘A’ (U+0041 LATIN CAPITAL LETTER A), ‘Α’ (U+0391 GREEK CAPITAL LETTER ALPHA) et ‘А’ (U+0410 CYRILLIC CAPITAL LETTER A), et il est probable que vous voyiez à peu près voire exactement la même chose, ce qui n'empêche que ce sont des caractères bien différents que l'ordinateur ne confond pas (on peut s'en convaincre, par exemple, en faisant des recherches Google de ces trois chaînes). Cette confusion visuelle, bien sûr, présente toutes sortes de dangers. Plus généralement, la question de savoir si deux caractères devraient être ou ne pas être le même est épineuse, Unicode a dû trancher quantité de jugements de Salomon et il y aura forcément des choses dont on sera mécontent (cf. l'entrée vers laquelle je viens de faire un lien).
  • Le même caractère n'apparaît pas forcément de la même manière chez tout le monde : cela dépend, évidemment, des polices de caractères installées et d'autres facteurs sur le système. En général, ce n'est pas trop problématique, mais concernant les emojis par exemple, on s'est rendu compte que selon le dessin précis utilisé, l'interprétation faite de l'émotion représentée par les emojis pouvait différer de façon importante, causant parfois des malentendus : divers efforts sont faits pour atténuer ce problème, mais il faut garder à l'esprit qu'il existe et, quand on communique, que la personne à qui on écrit ne voit pas forcément la même chose que nous.
  • En particulier, bien sûr, des caractères peuvent manquer, car personne n'a de quoi afficher tous les caractères Unicode. Par exemple, si j'écris ‘𐇑’ (U+101D1 PHAISTOS DISC SIGN PLUMED HEAD), un caractère représentant un symbole du disque de Phaistos (une tête portant une crête ou peut-être un casque à plumes/crête), le caractère s'affiche dans mon navigateur parce que j'ai installé plein de polices, mais je pense que beaucoup de gens ne verront rien. Ne rien voir peut d'ailleurs se manifester de plusieurs manières : caractère simplement absent, carré blanc ou ou gris ou pointillé, dessin spécial marquant un caractère manquant (typiquement un point d'interrogation dans un carré ou dans un losange), ou parfois un dessin spécial montrant au moins le numéro du caractère qu'on ne sait pas afficher (c'est tout de même le mieux !).
  • Un caractère Unicode ne correspond pas forcément exactement à ce qu'on imagine comme un caractère graphique (pour cette raison, il est parfois utile de lever l'ambiguïté en parlant de codepoint Unicode — c'est un anglicisme mais peu importe — et de glyphe pour une unité d'écriture) : par exemple, l'emoji du drapeau français, ‘🇫🇷’ apparaît comme un seul caractère (« glyphe ») mais est en réalité constitué de deux caractères (« codepoints ») Unicode spéciaux consécutifs, à savoir U+1F1EB REGIONAL INDICATOR SYMBOL LETTER F et U+1F1F7 REGIONAL INDICATOR SYMBOL LETTER R, qui n'ont séparément guère de signification mais se « combinent » pour former le drapeau français.
  • …Le fait que deux caractères puissent ainsi se « combiner » est très fréquent dans les systèmes d'écriture un peu complexes. Par exemple, les lettres devanāgarī ‘क’ et ‘ष’ (représentant en gros les sons /ka/ et /ʃa/) sont représentées par les deux caractères Unicode U+0915 DEVANAGARI LETTER KA et U+0937 DEVANAGARI LETTER SSA, mais si on les juxtapose (avec entre elles un caractère servant à supprimer la voyelle /a/), on obtient un glyphe unique ‘क्ष’ (vous devriez voir un unique symbole, représentant en gros le son /kʃa/) qu'Unicode représente comme la succession de codepoints U+0915 DEVANAGARI LETTER KA + U+094D DEVANAGARI SIGN VIRAMA + U+0937 DEVANAGARI LETTER SSA. (Il est néanmoins possible d'inhiber ce genre de comportements et d'écrire par exemple ‘क्‍ष’ en séparant les deux caractères, grâce au ZWJ dont il serait bon de parler aussi.)
  • Un caractère Unicode peut être « combinant », c'est-à-dire qu'il vient modifier le caractère qui le précède, typiquement pour ajouter un accent ou autre diacritique dessus ou dessous (ou même autour). C'est le cas du U+0301 COMBINING ACUTE ACCENT qui vient frapper la lettre précédente d'un accent aigu, par exemple si j'écris ‘x́’ soit U+0078 LATIN SMALL LETTER X + U+0301 COMBINING ACUTE ACCENT, vous devriez voir un ‘x’ accent aigu (même si je ne crois pas que cette combinaison serve dans une langue quelconque). Néanmoins, certains caractères sont « précombinés », par exemple ‘é’ (U+00E9 LATIN SMALL LETTER E WITH ACUTE) est un ‘e’ accent aigu : la différence avec la séquence ‘é’ (U+0065 LATIN SMALL LETTER E + U+0301 COMBINING ACUTE ACCENT) est possiblement problématique, et Unicode a des mécanismes dits de normalisation qui vont convertir l'une en l'autre.
  • Certains caractères sont invisibles ou ont un effet spécial : certains caractères sont prévus pour ne pas s'afficher du tout, mais représentent néanmoins une information ; par exemple, le caractère U+2062 INVISIBLE TIMES marque une multiplication non écrite (i.e., le produit ab de deux quantités a et b, sans symbole entre les deux, pourrait se représenter en Unicode comme U+0061 LATIN SMALL LETTER A + U+2062 INVISIBLE TIMES + U+0062 LATIN SMALL LETTER B), et c'est le principe même de ce caractère que de ne pas apparaître du tout, mais il pourait aider un traitement automatisé ou un synthétiseur vocal à comprendre ça comme un produit et pas comme un mot ou identifiant ab. Il y a toutes sortes de caractères de la sorte dans Unicode. D'autres, en plus de ne pas être directement visibles, ont un effet spécial (comme interdire la césure en ce point, ou l'autoriser, ou empêcher la combinaison de caractères, ou forcer une apparence spéciale, ou changer la direction d'écriture). Voyez par exemple ce fil Twitter où j'évoque quelques usages spécifiques à Twitter possibles du caractère plus-ou-moins-invisible U+200C ZERO WIDTH NON-JOINER ou ZWNJ (et ici de son copain U+2060 WORD JOINER).
  • Il y aurait tout un tas de choses à dire sur la direction d'écriture, qui peut être de gauche à droite ou de droite à gauche et sur les nombreux caractères spéciaux qui forcent l'une ou l'autre direction (avec des effets secondaires divers et variés), mais je pense que ce serait trop long pour rentrer ici dans ces considérations. (Disons tout de même que même si la plupart des caractères d'un vrai système d'écriture ont une directionnalité naturelle, par exemple l'alphabet latin veut aller de la gauche vers la droite et l'alphabet arabe de la droite vers la gauche, mais certains sont « neutres » comme beaucoup de signes de ponctuation, d'ailleurs certains comme les parenthèses ouvrante et fermante ont deux formes miroir selon le sens d'écriture ; par ailleurs, on peut forcer l'écriture dans un sens ou dans l'autre avec des caractères spéciaux, y compris écrire de la droite vers la gauche en alphabet latin ; ceci peut poser toutes sorte de problèmes et ces caractères spéciaux sont souvent interdits — par exemple, Twitter tente de les filtrer, mais ne le fait qu'imparfaitement.)
  • Un caractère Unicode ne spécifie pas la police ou autres attributs de style d'écriture (graisse, inclinaison, couleur, que sais-je encore) : un ‘R’ est un U+0052 LATIN CAPITAL LETTER R, qu'il soit gras (‘R’), italique (‘R’) ou rouge (‘R’) : ce n'est pas le boulot d'Unicode de faire de la typographie (en HTML, et notamment dans ce paragraphe, ça se fait avec des balises spéciales). Notamment, les premières lettres du présent paragraphe sont des caractères latins normaux (le premier est un ‘U’, U+0055 LATIN CAPITAL LETTER U, par exemple). Mais ce principe de non-typographie a lui-même des limites. Par exemple, il y a dans Unicode des alphabets spéciaux qui spécifient une police bien particulière, par exemple ‘𝐑’ est un U+1D411 MATHEMATICAL BOLD CAPITAL R qui doit apparaître à peu près identique à un ‘R’ gras (‘R’), et de même ‘𝑅’ est un U+1D445 MATHEMATICAL ITALIC CAPITAL R qui doit apparaître à peu près identique à un ‘R’ italique (‘R’) : ces alphabets ne sont pas des alphabets, ce ne sont pas des lettres à proprement parler, ce sont des jeux de symboles mathématiques, parce qu'en mathématiques un ‘R’ gras et un ‘R’ italique peuvent avoir un sens complètement différent (pour ne pas parler du ‘R’ gras-tableau-noir ‘ℝ’ ou U+211D DOUBLE-STRUCK CAPITAL R). Évidemment, le fait qu'il ne s'agisse pas de lettre n'empêche pas plein de gens d'en faire usage, par exemple sur Twitter vu que Twitter n'offre aucun mécanisme pour faire du gras, de l'italique ou quoi que ce soit de genre (par exemple : 𝒰𝓃𝒾𝒸ℴ𝒹ℯ ressemble beaucoup à Unicode écrit en police cursive — mais en fait si on cherche Unicode dans cette page, cette occurrence n'apparaîtra pas parce qu'il s'agit de ces symboles mathématiques). De même, certains emoji spécifient une couleur bien particulière et violent donc l'idée que les caractères Unicode sont indépendants de leur couleur d'affichage.
  • Certains caractères ont une double nature, emoji ou non-emoji. Par exemple, ‘☠’ U+2620 SKULL AND CROSSBONES représente une tête de mort au-dessus de deux tibias (fémurs ?) croisés et peut exister soit sous forme d'un caractère « texte » ‘☠︎’, soit sous forme d'un emoji ‘☠️’ (si vous ne voyez pas de différence, l'idée est que le premier doit pouvoir passer pour un symbole quelconque, tandis que le second peut être en couleur et a le même style graphique que l'ensemble des emojis) ; la sélection de l'une ou de l'autre forme se fait par l'addition d'un des caractères U+FE0E VARIATION SELECTOR-15 (pour la forme texte) ou U+FE0F VARIATION SELECTOR-16 (pour la forme emoji) : voir cette liste pour les cas possibles. Si on ne met ni l'un ni l'autre, je ne sais pas bien ce qui est censé se produire (mais l'interface Web de Twitter privilégie la forme emoji).

On pourrait ajouter encore quelques choses sur les encodages d'Unicode, la différence entre UTF-8 et UTF-16 et les gags liés au surrogates (qui ne sont pas des caractères Unicode mais servent à en encoder d'autres dans l'encodage UTF-16, et sont parfois pris par erreur pour des caractères ce qui cause des gags divers et variés), mais ce n'est pas évident à faire sans devenir vite trop technique. Idem pour ce qui est des formes de normalisation et d'équivalence (qui, honnêtement, n'ont pas des masses d'importance dans l'usage quotidien d'Unicode — en tout cas, ce n'est pas ce que j'ai le plus envie d'expliquer à Madame Michu).

Il y aurait sans doute des choses à dire sur un certain nombre de caractères individuels, ne serait-ce que pour le traitement bizarre que certains programmes leur réservent. Par exemple on pourrait évoquer le cas de l'apostrophe droite (', U+0027 APOSTROPHE) qui se transforme parfois par magie en apostrophe courbe (, U+2019 RIGHT SINGLE QUOTATION MARK). Ou la très utile espace insécable (U+00A0 NO-BREAK SPACE) que Firefox a désagréablement tendance à faire disparaître pour des raisons absolument stupides, merde à la fin. Ou les deux copains que sont le ZWNJ (U+200C ZERO WIDTH NON-JOINER) et le ZWJ (U+200D ZERO WIDTH JOINER) (voir ce fil Twitter que j'ai déjà lié ci-dessus, ou encore cette vidéo explicative).

Peut-être même qu'il faudrait faire une petite liste des bugs les plus fréquemment rencontrés en lien avec Unicode (même s'ils sont souvent plutôt liés à des interactions avec des systèmes ou programmes qui continuent à utiliser des jeux de caractères pré-Unicode, comme la fameuse séquence é qui apparaît quand un é encodé Unicode/UTF-8 est interprété à tort en Latin-1/ISO-8859-1, voir notamment cette entrée passée).

Et bien sûr, il faut évoquer les problèmes de sécurité liés à la confusion possible entre caractères Unicode visuellement indiscernables : par exemple que si quelqu'un vous persuade de copier-coller quelque chose comme gооgle.com ça peut être un piège parce que vous n'avez pas remarqué que c'était un ‘о’ cyrillique (U+043E CYRILLIC SMALL LETTER O) et qu'il ne s'agit donc pas de google.com même si ça y ressemble beaucoup. (Bon, sur ce point précis, d'une part l'adresse appartient quand même à Google parce qu'ils l'ont récupérée aussi, et d'autre part le navigateur affichera sans doute xn--ggle-55da.com et pas gооgle.com dans la barre d'adresse, donc il n'y a pas de problème, mais ce type d'attaques peut se décliner à l'infini.)

Peut-être qu'on pourrait dire quelque chose sur les manques et limitations d'Unicode : au niveau des manques, il y en aura toujours, des écritures ou des symboles qui n'ont pas encore été, ne seront jamais, ou ne pourront pas être, encodées. (Citons les hiéroglyphes maya, notamment par manque d'experts prêts à passer un temps invraisemblable sur un boulot de normalisation que les linguistes et archéologues ne considèrent pas assez valorisant ; citons les langues inventées par Tolkien dont il n'est pas clair qu'elles aient leur place dans Unicode, ou le klingon qui ne l'a probablement pas ; citons toutes sortes de logos ou de caractères faisant l'objet d'une marque déposée, comme la pomme d'Apple, qui ne peuvent donc pas être mis dans Unicode.) Pour certains de ces manques, il y a les plages « à usage privé » dont la signification n'est pas définie mais qui dépendent, du coup, de la police de caractères qu'on utilise et qui peuvent servir à afficher tout et n'importe quoi selon ce que la police veut bien y mettre (mais on perd l'interopérabilité). Pour les limitations, on peut évoquer le problème des emojis, qui est un bourbier dont on ne sait pas comment se tirer : les utilisateurs en veulent toujours plus, mais en même temps se mécontentent du fait d'en avoir trop et de la complication à les sélectionner, et le choix de ce qui doit ou ne doit pas être encodé devient perpétuellement plus arbitraire et un peu futile (et part dans des directions pénibles à gérer de considérations politiques et de politiquement correct).

Mais ce qui me manque surtout, c'est des outils à signaler à Madame Michu et Monsieur Dugenou pour faire les deux opérations que je considère comme absolument essentielles :

  • saisir des caractères Unicode par leur numéro ou par leur nom, ou simplement parcourir commodément les noms disponibles (et faire des recherches dedans), et, inversement,
  • décoder des chaînes de caractères Unicode (pour savoir ce qu'il y a dedans), c'est-à-dire convertir une suite de caractères comme bоnjοur ❣︎ en U+0062 LATIN SMALL LETTER B + U+043E CYRILLIC SMALL LETTER O + U+006E LATIN SMALL LETTER N + U+006A LATIN SMALL LETTER J + U+03BF GREEK SMALL LETTER OMICRON + U+0075 LATIN SMALL LETTER U + U+0072 LATIN SMALL LETTER R + U+00A0 NO-BREAK SPACE + U+2763 HEAVY HEART EXCLAMATION MARK ORNAMENT + U+FE0E VARIATION SELECTOR-15.

Ces deux opérations me paraissent essentielles, même pour un utilisateur non technique, pour pouvoir pleinement profiter d'Unicode : la première permet de saisir n'importe quel caractère, et la seconde permet de comprendre ce qu'on voit (et de vérifier l'absence d'éventuels caractères cachés ou déguisés en d'autres ; par exemple, dans ce tweet signalé ci-dessus, il y a beaucoup de caractères cachés dans le dernier mot, et c'est important de pouvoir enquêter si on le souhaite).

Malheureusement, je ne sais pas bien quoi proposer à Madame Michu et Monsieur Dugenou.

  • Comme on me le fait remarquer en commentaire, la page Wikipédia Unicode input a un certain nombre d'informations générales (au moins sur le premier point, i.e., la saisie).
  • Sous GNU/Linux, l'application gucharmap n'est pas mauvaise pour le premier cas d'usage (rechercher et saisir des caractères Unicode par leur numéro ou leur nom).
  • Toujours sous GNU/Linux, ou plus exactement sous Gnome/GTK+, on peut (dans beaucoup d'applications) taper Control-Shift-U suivi d'un numéro hexadécimal, et terminer par une espace, pour entrer directement un caractère Unicode par son numéro.
  • Même si ce n'est pas vraiment le sujet, en matière de saisie, il faudrait encore que je disse quelques mots de la merveilleuse touche Compose qui permet de saisir toutes sortes de caractères (très loin de tout Unicode, mais tout de même de larges bouts du bloc latin) de façon plus commode que par numéro, sans avoir à ce que ces caractères « soient sur le clavier ». C'est comme ça que je saisis, personnellement, les caractères accentués du français (pour taper un ‘é’, par exemple, je tape Compose+apostrophe+e).
  • Pour ce qui est de décoder, sous GNU/Linux, personnellement, j'utilise ce petit script Perl écrit il y a longtemps : il est primitif et moche (et a un certain nombre de défauts), mais je ne connais pas vraiment mieux. On me signale l'existence d'un programme unicode un peu plus standard et qui fait ce genre de choses, mais il n'est pas vraiment commode d'usage (il n'a pas l'air de savoir juste décoder l'entrée standard, ce qui est franchement con). Voir aussi plusieurs scripts qui ont été postés en commentaires. Dans tous les cas, ce n'est pas vraiment pratique pour les utilisateurs novices qui voudraient juste se familiariser un peu avec Unicode !
  • Sous Android, j'ai écrit une application UnicodeMap (peut-être encore disponible sur le Play Store et certainement sur F-Droid) qui permet de façon très primitive de saisir des caractères (via le copier-coller) et aussi de décoder. C'est extrêmement malcommode, malheureusement, et il s'agit d'une vieille version d'Unicode. Je serais prêt à mettre à jour, mais Google change ses API Android tous les trois jours, je suis très las de ce petit jeu, et je n'ai pas envie d'apprendre à recomprendre comment il faut compiler une application Android ni comment la mettre à jour pour que le Play Store en veuille bien. Bref, si vous êtes intéressés par une nouvelle version, le source est ici, faites les changements que vous voudrez et surtout, expliquez-moi comment je dois compiler et tester ce truc parce que je ne sais plus du tout.
  • Toujours pour Android, comme on me le fait remarquer en commentaire, l'application UnicodePad de Ryosuke839 (disponible sur Play Store et F-Droid, ou par le code source ici) est de tout point de vue meilleure que la mienne.
  • Je ne sais vraiment rien de ce qu'on peut faire sur les autres OS (Windows et Mac OS notamment). Autrefois, sous Windows, on pouvait saisir un caractère en tapant Alt et son numéro de caractère… mais c'était le numéro de caractère dans l'archaïque jeu CP437 ; puis ils ont introduit la possibilité de préfixer le numéro de caractère par un zéro… mais c'était alors le numéro dans le jeu CP1252 : comme ça fait plus de vingt ans que je n'ai pas utilisé un Windows, je ne sais pas s'ils ont enfin mis en place un troisième mécanisme avec le numéro Unicode (bon, plusieurs personnes m'ont signalé l'existence d'un raccourci Alt-X, qui marche sur certains programmes dont Wordpad, pour transformer un numéro hexadécimal en caractère Unicode).
  • Il existe différents sites Web permettant de faire au moins un bout des opérations ci-dessus mais ils ont l'air vraiment merdiques. On me signale cependant typeit dans les commentaires, qui a effectivement l'air moins merdique que les autres.

↑Entry #2591 [older| permalink|newer] / ↑Entrée #2591 [précédente| permalien|suivante] ↑

↓Entry #2525 [older| permalink|newer] / ↓Entrée #2525 [précédente| permalien|suivante] ↓

(lundi)

Club Contexte : Communications Papier (ou pensées en vrac sur les lettres et leur forme)

Les communications papier dont je veux parler c'est, bien sûr, l'écriture, mais le titre de cette entrée s'abrège en CCCP, ce qui n'a absolument rien à voir avec СССР qui est l'abréviation de Союз Советских Социалистических Республик, autrement dit, de l'URSS. Selon votre navigateur et les polices installées sur votre ordinateur, le ‘C’ de Club Contexte (U+0043 LATIN CAPITAL LETTER C) et le ‘С’ de Советский Союз (U+0421 CYRILLIC CAPITAL LETTER ES) apparaîtront peut-être, ou peut-être pas, comme identiques. Ce sont néanmoins des caractères différents pour Unicode, comme vous pouvez le vérifier en recherchant ‘C’ dans cette page, ou en copiant-collant le caractère et en le recherchant dans Google, ou quelque chose de ce genre. (Hum, à vrai dire, ce serait peut-être le jeu de décider que Club Contexte s'abrège en СС avec un ‘С’ cyrillique — cyrillique, pas сyrillique. Mais comme le ‘С’ cyrillique est plutôt une ‘S’, enfin, se prononce quelque chose ressemblant à /s/, je devrais dire l'‘С’ cyrillique : il va falloir que j'interroge le Club Contexte en Сection Politique pour fixer les détails.)

Bref, vous aurez compris l'idée : ce qu'est une lettre est quelque chose d'assez délicat. Un matheux a envie de dire qu'une lettre est une classe d'équivalence pour la relation d'équivalence être la même lettre, mais qu'est-ce que c'est que cette relation d'équivalence, justement ?

Unicode doit régulièrement prendre des décisions to conflate or to disunify?, autrement dit, décider si on doit considérer que deux machins sont ou non la même lettre. Et cette décision n'a souvent rien d'évident, toutes sortes de problèmes peuvent survenir dans les deux sens, et il n'y a souvent pas de bonne solution. Notamment parce que la relation être la même lettre a furieusement tendance à ne pas être une relation d'équivalence : elle n'est pas transitive (une langue pourrait considérer que foo et bar sont la même lettre, une autre que bar et qux sont la même lettre, et une troisième que foo et qux ne sont pas du tout la même lettre).

Voici quelques unes des choses, en vrac, que j'ai apprises en me documentant à gauche et à droite sur Unicode et sur l'histoire des formes d'écriture. On va voir que le Club Contexte aime beaucoup s'amuser avec l'écriture. (Quasiment chaque paragraphe dans ce qui suit raconte sa propre petite histoire et peut être lu indépendamment des autres ; j'ai essayé de trouver un fil directeur, mais c'est trop difficile, il n'y a juste aucune logique dans cette collection de faits.)

Commençons par une question basique : faut-il considérer que la première lettre des alphabets latin, grec et cyrillique, c'est-à-dire ‘A’, ‘Α’ et ‘А’ sont la même lettre ? Dans Unicode, ce sont U+0041 LATIN CAPITAL LETTER A, U+0391 GREEK CAPITAL LETTER ALPHA et U+0410 CYRILLIC CAPITAL LETTER A, c'est-à-dire qu'Unicode a tranché pour désunifier.

D'un côté, considérer que non (comme le fait Unicode), i.e., que ce sont trois lettres différentes, est très confusant pour les gens qui ne voient aucune différence (notamment sur leur écran), cela peut être la cause de toutes sortes de problèmes informatiques, notamment d'attaques délibérées. (gооgle.com, par exemple, avec deux U+043E CYRILLIC SMALL LETTER O, a été acheté par Google pour ne pas qu'on puisse y rediriger malicieusement les gens qui pensaient aller à google.com — et de toute façon votre navigateur vous montrera probablement le Punycode xn--ggle-55da.com si vous y allez — mais on ne peut pas éliminer tous les risques de ce genre. Remarquez que quasiment tous les langages de programmations acceptent, maintenant, des identificateurs en Unicode, et j'attends le moment où quelqu'un aura malicieusement introduit un trou de sécurité quelque part en nommant une variable locale ‘а’ (U+0430 CYRILLIC SMALL LETTER A) pour cacher le fait qu'elle ne masque pas, du coup, une variable ‘a’ (U+0061 LATIN SMALL LETTER A) de portée plus lointaine.) Ou à défaut de bugs, simplement de petites tracasseries : si je veux vérifier que je ne me suis pas trompé dans l'ordre de mes ‘A’, ‘Α’ et ‘А’, c'est plus fastidieux que si je devais trier ‘A’, ‘B’ et ‘C’.

D'un autre côté, considérer que ‘A’, ‘Α’ et ‘А’ sont la même lettre serait très gênant quand il s'agit de passer en minuscules, par exemple (‘a’ et ‘α’ diffèrent certainement, et ‘а’ diffère peut-être aussi), ou si on veut développer des polices spécifiques à l'un ou l'autre des alphabets. (L'affichage du grec sur mon navigateur est souvent rendu moche par le fait que j'ai des polices qui ont juste le ‘π’, probablement parce qu'il sert plus souvent que d'autres, et comme je ne sais pourquoi mon navigateur tend à préférer cette police, je vois souvent cette seule lettre dans une police visiblement différente. Imaginez à quel point la lecture du cyrillique serait moche si les lettres communes à l'alphabet latin étaient prises dans une police prévue pour l'alphabet latin et les autres dans une autre.) Et je vais revenir plus bas sur la question de l'écriture cursive.

↑Entry #2525 [older| permalink|newer] / ↑Entrée #2525 [précédente| permalien|suivante] ↑

↓Entry #2235 [older| permalink|newer] / ↓Entrée #2235 [précédente| permalien|suivante] ↓

(vendredi)

Des caractères Unicode qui manquent

Je commence une page pour rassembler quelques caractères Unicode qui me semblent manquer dans le Saint Standard et dont j'aimerais proposer l'addition. (J'avais déjà il y a longtemps essayé de suggérer l'addition d'un caractère N-ARY RESTRICTED PRODUCT, mais visiblement la personne à laquelle j'avais transmis l'idée — et les preuves de son utilisation dans la littérature mathématique — n'en a rien fait. Il faudra que je voie si je peux trouver des contacts plus fiables.)

Après, ça risque d'être comme ce dont je parlais dans l'entrée précédente : pour faire bouger les choses, il faut se battre contre les Gardiens de la Loi, et ma motivation pour le faire n'est pas démesurée, surtout si je suis tout seul à mener le combat.

↑Entry #2235 [older| permalink|newer] / ↑Entrée #2235 [précédente| permalien|suivante] ↑

↓Entry #2115 [older| permalink|newer] / ↓Entrée #2115 [précédente| permalien|suivante] ↓

(mercredi)

Représentation des maths : TeX et Unicode sont dans un bateau

[Cette entrée fait plus ou moins suite — ou complément — à la précédente, même si elle peut être lue indépendamment.]

Quand on change de police dans le mode maths de TeX (avec des commandes comme \it pour les italiques ou \bf pour le gras dans plain TeX, remplacées en LaTeX par \mathit et \mathbf), le système change vraiment de police (enfin, plus exactement, il change de « famille », une famille étant un ensemble de polices pour le mode maths, les indices et exposants et indices et exposants de deuxième niveau). Plus précisément, TeX attribue aux symboles du mode maths un mathcode, qui est constitué de trois parties : un type de symbole (0=ordinaire, 1=grand opérateur, 2=opération binaire, 3=relation, etc., et 7=variable), une famille (par exemple, 0=droit, 1=italiques maths, 2=script et symboles, 6=gras) et un numéro de caractère dans la police (par exemple, pour un ‘x’, ces parties valent 7, 1 et 0x78, tandis que pour un ‘+’ elles valent 2, 0 et 0x2B, et enfin pour un \Gamma ce sont 7, 0 et 0x00) ; le type sert à l'espacement, la famille détermine la police utilisée pour ce symbole, et le numéro indique quoi chercher dans cette police ; mais si le type vaut 7(=variable), alors le numéro de famille stocké comme deuxième partie du mathcode sera overridé par le numéro de famille courante (celle qu'on choisit en tapant une commande de police) si ce numéro ne vaut pas −1 : c'est la raison pour laquelle le ‘x’ est italique par défaut (alors que le \Gamma est droit par défaut) mais que si on ajoute un \bf devant (qui passe la famille à 6), tous les deux deviennent gras — en revanche, le ‘+’ ne le devient pas.

Mais Unicode a prévu des alphabets spécifiques pour les lettres grasses/italiques/etc. dans les formules mathématiques (l'idée étant qu'en mathématiques, et seulement en mathématiques, passer en gras change vraiment la sémantique du caractère : donc il est logique d'en faire un caractère Unicode différent).

Du coup, si on utilise LuaTeX avec le package unicode-math, les choses sont complètement différentes : il n'y a plus qu'une police (numérotée 0) qui sert pour tout, elle est encodée avec des codepoints Unicode. Par exemple, un ‘x’ mathématique italique minuscule est représenté dans Unicode par le codepoint U+1D465 MATHEMATICAL ITALIC SMALL X : le paquet unicode-math va donc lui donner le mathcode (étendu par LuaTeX pour pouvoir dépasser les 3+4+4=15 bits prévus par TeX) dont les trois parties sont : 7, 0 et 0x1D465. Cette fois, quand on veut passer, disons, en sans-sérif, le paquet ne change pas la police, il change les mathcode associés aux lettres (dans un \mathsf, le mathcode du ‘x’ devient (7, 0, 0x1D5D1) pour référencer U+1D5D1 MATHEMATICAL SANS-SERIF SMALL X).

Bon, le principe n'est pas idiot, mais il souffre d'une limitation : et si je veux un ‘Ш’ en gras ou en sans-sérif ? Et si je veux un ‘é’ en gras ou en sans-sérif ? Unicode n'a pas prévu de caractères pour ces choses-là. Et, indépendamment d'Unicode, la police XITS ne les a pas. Ce qui ne veut pas dire que les choses soient impossibles : pour le gras, on peut prendre une version grasse de la police XITS (oui, il y a un alphabet mathématique gras dans la police normale, mais il y a aussi une version grasse de la police) ; pour le sans-sérif, on peut aller chercher une police vaguement semblable ; et pour taper un ‘é’ on peut aussi mettre un ‘´’ sur un ‘e’. Mais quelle est la bonne façon de faire ?

On peut peut-être inventer des nuances sémantiques sibyllines : par exemple, on peut prétendre que si j'écris un x sans-sérif dans une formule mathématique (un 𝖾), c'est un symbole en lui-même, donc il est logique de le représenter par un symbole Unicode spécial qui correspond à un e sans-sérif quelle que soit la police (U+1D5BE MATHEMATICAL SANS-SERIF SMALL E), mais que si je choisis de représenter l'ensemble des dérivations sur un anneau A par Dér(A) et que je m'amuse à écrire le Dér en sans-sérif, alors il faut quand même le représenter par les caractères Unicode normaux (U+0044 LATIN CAPITAL LETTER D / U+00E9 LATIN SMALL LETTER E WITH ACUTE / U+0072 LATIN SMALL LETTER R) et c'est la police qui devra être sans-sérif. Pour aller plus loin dans les distinctions byzantines : dans le deuxième cas, on a un ‘é’ dans une police sans-sérif, alors que si j'invente une notation mathématique représentée par un accent aigu (pourquoi pas, après tout), je pourrai voir un U+1D5BE MATHEMATICAL SANS-SERIF SMALL E surmonté d'un accent aigu, ce qui est différent. C'est en tout cas la meilleure façon que je voie de défendre la choix d'Unicode. Mais il faut dire que c'est sacrément tiré par les cheveux, et un peu pénible à implémenter avec unicode-math. Et ça ne tient même pas complètement debout : parce que si je prétends que les mots ou bouts de mots français qui apparaissent dans les formules mathématiques doivent s'écrire avec les caractères Unicodes « normaux » et pas dans les alphabets mathématiques du plan 1 — ce qui, effectivement, se défend — ça pose problème lorsque je commence à vouloir distinguer le mot Hom écrit en caractères gras (par exemple pour la catégorie des foncteurs entre deux catégories). Bref, on encule les mouches mais on ne sait pas très bien où on va.

↑Entry #2115 [older| permalink|newer] / ↑Entrée #2115 [précédente| permalien|suivante] ↑

↓Entry #2114 [older| permalink|newer] / ↓Entrée #2114 [précédente| permalien|suivante] ↓

(lundi)

De la difficulté de marier TeX et Unicode

J'avais déjà parlé de la question il y a quelques années, mais il est peut-être temps que je fasse une mise au point un peu plus détaillée sur ce qu'il en est.

Le merdier

Commençons par rappeler les personnages de la pièce. D'un côté, on a TeX, le logiciel de typographie scientifique écrit vers la fin des années '70 par Donald E. Knuth pour pouvoir mettre en page son Art of Computer Programming, et qui à ce jour semble être le seul programme capable de faire de la mise en page scientifique (voire, de la mise en page tout court) de bonne qualité — et qui est, en tout cas, universellement utilisé pour leurs publications par les mathématiciens, les physiciens et les informaticiens. De l'autre, on a Unicode, le jeu de caractères démarré vers la fin des années '80 et qui est en train de devenir le standard pour la représentation de toutes les formes d'écriture de toutes les langues du monde.

De cette description il résulte que si on veut mettre en page un document de qualité typographique correcte mélangeant un grand nombre de langues, on va vouloir utiliser TeX et Unicode. L'ennui, c'est qu'ils ne s'aiment pas. Mais alors, vraiment pas.

Le problème vient principalement de ce que Knuth, quand il programme, écrit du code certes absolument parfait du point de vue des bugs (il a fait 427 corrections à TeX depuis 1982, dont 11 depuis le début de ce millénaire, ce qui est plutôt pas mal quand on considère que Mozilla/Firefox approche les 850000 bugs rapportés depuis 1998 — même si ça ne compte pas exactement la même chose ça donne une idée), mais absolument abominable du point de vue de l'extensibilité future. TeX est donc bourré de bizarreries et d'idiosyncrasies poussiéreuses[#], de code ad hoc, de constantes magiques, et d'hypothèses faites à niveau profond — comme le fait qu'il n'y aura pas plus que 256 caractères dans une police, ou que toutes les dimensions sont exprimés en une unité fondamentale qui vaut 127/23681433600 mètres (soit environ 5.362851nm). En plus de ça, c'est un des langages de programmation les plus abominables qui soient (basé sur l'expansion de macros, sans aucune notion de portée bien définie ou de transparence référentielle — et avec des limitations incroyablement lourdingues comme 255 variables globales et 255 variables locales pour chaque type de données, aucune multiplication ou division ou arithmétique flottante, bref, une vraie fosse à goudron de Turing). Soit dit en passant, le source de TeX lui-même est tout aussi abominable (pas seulement parce qu'il est écrit en Pascal, mais aussi parce qu'il fait tout ce qu'on dit de ne surtout pas faire dans les cours de compilation, comme stocker des paramètres et variables de retour dans des variables globales).

Comme si ce n'était pas suffisamment atroce, au-dessus de TeX s'est accumulée toute une couche de sédiments, à savoir des packages pour TeX qui tentent de l'enrichir dans différentes directions. Et notamment tout l'édifice de LaTeX qui essaie de fabriquer quelque chose de propre au-dessus du merdier sous-jacent d'une façon qui revient à peu près à essayer de construire une ville au-dessus d'un tas de fumier, pour se retrouver, en fait, avec une construction complètement bancale et qui ressemble plus à la citadelle de Kowloon qu'à la Cité interdite. (Bon, j'en conviens, mes métaphores sont complètement pourries.) Certains de ces paquets sont carrément impressionnants (comme TikZ), mais le problème est que (1) la compatibilité des packages entre eux est souvent très douteuse, car chacun peut modifier tout le système dans des directions carrément imprévisibles, et (2) les hypothèses douteuses du cœur (comme le fait que les polices sont limitées à 256 caractères) sont démultipliées par tout le code qui se greffe au-dessus.

↑Entry #2114 [older| permalink|newer] / ↑Entrée #2114 [précédente| permalien|suivante] ↑

↓Entry #2020 [older| permalink|newer] / ↓Entrée #2020 [précédente| permalien|suivante] ↓

(vendredi)

Unicode Map version 0.0.4

J'ai publié la version 0.0.4[#] de ma petite table Unicode pour Android (qui a maintenant sa propre page Web mais ça ne dit rien d'intéressant). Les changements sont assez mineurs : le plus important est que j'ai mis à jour les données pour Unicode 6.1[#2] (avant c'était 5.2) ; j'ai aussi ajouté deux-trois boutons plus pratiques sur la description d'un caractère, rien de bien passionnant[#3]. Malgré ça, c'est fou la perte de temps que peut représenter l'écriture d'une nouvelle version : le mécanisme de compilation sous Android (basé sur ant) a changé depuis la dernière fois que j'y ai touché et il m'a fallu me rappeler ce que je savais et recomprendre ce qui avait changé ; mais au passage ils n'ont pas corrigé le bug qui faisait que dès qu'on touche aux ressources de l'application, si on ne force pas une recompilation complète, elles ne sont pas correctement mises à jour dans le paquet, ce qui peut causer de graves maux de tête ; il faut aussi se rappeler comment signer un paquet, quoi faire avec pour l'installer manuellement[#4], etc., et bien sûr comment fonctionne le système de widgets d'Android, comment accéder à la console développeur pour uploader le package, rédiger un changelog ; et se battre pour comprendre comment ils numérotent les versions du système (genre, il faut passer --target 11 à certains programmes pour compiler avec le niveau 10 de l'API, c'est-à-dire celle de la version 2.3.3 d'Android qui s'appelle aussi Gingerbread, c'est terriblement intuitif). Bref.

Tout ça pour avoir le droit de me faire spammer par (1) des mails semi-automatisés de la part de marchés d'applications autres que celui de Google[#5], me demandant de mettre mon programme aussi sur leur site, et (2) des mails d'utilisateurs qui me demandent pourquoi la plupart des caractères s'affichent comme des carrés. Ça c'est la rançon du fait de publier une application Android.

En contrepartie, Google vous donne des caramels mous : c'est comme quand on publie une vidéo sur YouTube, on a droit à plein de stats profondément inutiles donc indispensables sur combien de gens utilisent votre application (resp. regardent votre vidéo), dans quels pays ils sont, quelle est leur couleur préférée et quel est le prénom de leur chat, tout ça avec des courbes interactives et plein d'autres choses encore plus inutiles. Là par exemple, avant la mise à jour, Google me prétend qu'il y a 3455 personnes qui ont actuellement mon application installée (sur 4052 dispositifs Android, et 17105 personnes l'ayant installée un jour ou un autre), que 64% d'entre eux sont aux États-Unis (ce qui est beaucoup parce que — toujours d'après Google — les Américains ne sont que 30% parmi les utilisateurs d'une application quelconque de la catégorie dans laquelle la mienne s'inscrit ; j'imagine que c'est tout bêtement parce que mon application est uniquement en anglais, mais je ne pensais pas que ça jouerait autant), et que j'ai encore autour de 3% d'installations sous Android 1.5 alors que pour l'ensemble de la catégorie c'est plutôt 0.2% (probablement parce que justement mon application tourne encore, contrairement à beaucoup d'autres, sous Android 1.5). Bon, sans doute que dans trois jours je vais voir que le nombre d'utilisateurs sera tombé à ~1000 parce que l'upgrade aura rappelé aux gens qu'ils ont cette application qu'ils n'utilisent jamais, ou parce qu'elle se sera mal passée.

[#] Je crois que je vais toutes les numéroter 0.0.n pour n un entier naturel.

[#2] Voilà, maintenant vous pouvez utiliser le merveilleux U+1F61B FACE WITH STUCK-OUT TONGUE. 😛

[#3] Et j'ai toujours un bug que je ne comprends pas qui fait que parfois la première initialisation de l'application échoue et laisse la base de données verrouillée.

[#4] Ah, et aussi se rappeler comment lancer un émulateur, histoire de tester l'application sur différentes configurations, par exemple une tablette sous Android 4, chose que je n'ai pas sous forme matérielle. Et pester que l'émulation est très (très) très lente. Et se demander pourquoi ces bananes n'ont pas prévu une configuration émulant une tablette Intel au lieu d'une tablette ARM, histoire de bénéficier de l'émulation matérielle du processeur (enfin, à supposer qu'ils en profitent, ce dont je ne suis malheureusement pas certain).

[#5] Ce dernier ne s'appelle plus Android Market, d'ailleurs, mais Google Play. J'ai déjà dit que je détestais la manie de changer le nom des choses ?

↑Entry #2020 [older| permalink|newer] / ↑Entrée #2020 [précédente| permalien|suivante] ↑

↓Entry #1918 [older| permalink|newer] / ↓Entrée #1918 [précédente| permalien|suivante] ↓

(lundi)

Fallait-il ajouter plein de pictogrammes dans Unicode ?

Les lecteurs réguliers de ce blog savent bien que je suis un zélé fidèle de l'église de l'Universelle Numérotation en Intelligence Commune Offerte par les Dieux de l'Encodage, loué soit le nom du Saint Standard et louée soit sa version 6.0. Il faut cependant que je reconnaisse parfois que ma foi hésite et qu'il me prend l'audace de m'interroger sur l'opportunité de telle ou telle décision.

Un des moments qui m'a ainsi fait vaciller a été l'addition dans Unicode 6.0 (environ l'an dernier) de centaines de caractères dans deux blocs appelés Emoticons (1F600–1F64F) et surtout Miscellaneous Symbols and Pictographs (1F300–1F5FF), parmi lesquels on trouve des choses aussi saugrenues et surprenantes que :

  • U+1F307 SUNSET OVER BUILDINGS (🌇)
  • U+1F365 FISH CAKE WITH SWIRL DESIGN (🍥)
  • U+1F391 MOON VIEWING CEREMONY (🎑)
  • U+1F46F WOMAN WITH BUNNY EARS (👯)
  • U+1F47D EXTRATERRESTRIAL ALIEN (👽)
  • U+1F47E ALIEN MONSTER (👾)
  • U+1F496 SPARKLING HEART (💖)
  • U+1F4B9 CHART WITH UPWARDS TREND AND YEN SIGN (💹)
  • U+1F5FC TOKYO TOWER (🗼)
  • U+1F605 SMILING FACE WITH OPEN MOUTH AND COLD SWEAT (😅)
  • U+1F61D FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES (😝)
  • U+1F63B SMILING CAT FACE WITH HEART-SHAPED EYES (😻)
  • U+1F64A SPEAK-NO-EVIL MONKEY (🙊)
  • U+1F64C PERSON RAISING BOTH HANDS IN CELEBRATION (🙌)

…ce n'est pas une blague. Et encore, je ne suis pas sûr d'avoir bien fait le tour des plus ridicules du lot. Je constate d'ailleurs en écrivant ceci que j'ai apparemment sur mon système une police contenant tous ces trucs (enfin, au moins j'ai quelque chose de plausible qui s'affiche : je ne sais pas bien à quoi une moon viewing ceremony est censée ressembler même en regardant le Standard et en zoomant dessus, mais c'est peut-être bien ce que mon navigateur affiche ; par contre mon alien monster est clairement différent de celui du Standard) ; je ne sais pas d'où elle sort.

Bref, ma première réaction a été d'être partagé entre l'amusement (oooooh, plein de nouveaux caractères brillants avec lesquels faire joujou !) et l'exaspération (mais ils ont fumé la moquette, ou quoi ? qu'est-ce que c'est que toutes ces conneries, et où est le caractère UNICODE STANDARD FINALLY GONE BANANAS ?).

L'origine de tous ces caractères brillants, comme de beaucoup de gadgets clignotants en général, et comme on s'en rend compte en regardant un peu le biais culturel qui préside au choix des concepts dessinés (sans même aller chercher quelque chose d'aussi évident que la tour de Tōkyō qui est certes accompagnée d'une statue de la Liberté mais pas des grandes pyramides, de Big Ben, d'une tour Eiffel ou du Golden Gate), est bien entendu le Japon : plein de « caractères », sous formes d'échappements Shift-JIS spéciaux et plus ou moins normalisés, qui étaient déjà utilisés pour échanger des petits dessins dans des petits messages téléphoniques (pas des SMS parce que ce n'est pas ce qui est utilisé au Japon, mais peu importe). L'argument en faveur de leur encodage dans Unicode est donc évident : il y a un standard, ou un quasi-standard, qui les répertorise, et Unicode a pour but de devenir le standard ultime de représentation des caractères dans les échanges d'information, donc il fallait bien qu'il absorbât tout ça. En l'occurrence, je crois comprendre que ce sont Google (pour Android) et Apple (pour l'iPhone) qui ont présenté des demandes dans ce sens (voire des propositions formelles) au consortium Unicode.

Le principal argument contraire, ce n'est pas celui du ridicule ni même du biais culturel (de toute façon il y a des dizaines de milliers de caractères CJK, alors le biais culturel…). C'est plutôt celui de la pente glissante : oui mais si on commence à avoir dans le standard Unicode une cérémonie de contemplation de la lune, un alien ou deux, une femme avec des oreilles de lapin, un chat avec des yeux en forme de cœur et la tour de Tōkyō, pourquoi pas aussi Darth Vader, Flash Gordon, une crevette boxeuse, une otarie écoutant de la musique et l'alien de Reddit ? Si Unicode commence à devenir un répertoire de tous les pictogrammes de l'humanité, 17×65536 codepoints ne suffiront pas, et si ce sont tous les concepts, 231 non plus. La réponse du Standard à ce genre d'arguments a toujours été : le fait que nous ayons encodé X n'est en aucune cas une garantie d'encoder X′ très proche de X, même si ça peut sembler « logique » — et donc de rejeter systématiquement tous les arguments à base de mais puisque vous avez encodé Truc, vous devriez aussi logiquement encoder Machin. Ce n'est pas furieusement satisfaisant : il y a plein de manques illogiques, et parfois ils finissent par céder, par exemple ils ont fini par mettre un U+2E18 INVERTED INTERROBANG (⸘) (ce qui a causé une certaine réjouissance auprès de normaliens que je connais) après avoir longtemps soutenu qu'il n'y avait aucune raison d'être logique et que ce n'était pas parce que le point d'interrogation et le point d'exclamation avaient leur version inversée que leur superposition devait l'avoir aussi, jusqu'à preuve que des espagnols utilisent vraiment l'interrobang. Mais s'agissant des emojis, ces arguments doivent céder devant le fait que toutes ces choses sont vraiment utilisées (ce qui, pour l'interrobang inversé, reste quand même un peu à prouver). Bon, mon Android ne permet pas encore de les saisir (du moins de façon commode), et n'est même pas foutu de les afficher, mais j'imagine qu'au fil des versions ça viendra. Il semble que Mac OS 10.7 (Lion) va dans ce sens.

La réponse officielle d'Unicode aux questions qu'on peut se poser sur les emojis est ici, mais il est aussi intéressant de jeter un œil aux commentaires officiels des organismes de standardisation nationaux lors des votes pour ISO/IEC 10646:2003. On y apprend par exemple que l'Allemagne à demander à renommer U+1F471 de WESTERN PERSON à PERSON WITH BLOND HAIR (pour éviter des débats racistes douteux sur ce qu'est un occidental — ceci dit, je ne sais pas dans quel sens le changement a plus de chances d'éviter ce débat), et qu'il y a eu toutes sortes d'autres arguties sur les noms, notamment entre le Royaume-Uni et les États-Unis pour l'orthographe de sulphur/sulfur. En fouillant un peu, on trouve d'autres documents de travail dans le même coin (malheureusement pas référencés de façon systématique, ou alors je n'ai pas trouvé) qui donnent une petite idée de ce que les débats ont pu être. Par exemple celui-ci, qui émane des organismes de standardisation allemand et irlandais et qui fait tout un tas de commentaires en cours de standardisation, qui me semblent tout à fait sensés et intelligents (et qui ont été largement suivis), sur la proposition initiale (du moins je suppose que c'est ça — malheureusement elle n'est pas annotée).

Ce qui sera intéressant, c'est de voir quel usage les non-japonais vont faire de ces symboles : leur usage va-t-il se répandre, va-t-on voir les webforums en anglais fleurir de toutes sortes de pictogrammes dans ce jeu, ou bien l'usage de ceux-ci restera-t-il cantonné au Japon ? Pour l'instant il est encore trop tôt pour le dire, il faut probablement que les polices soient un peu plus diffusées. Si cela se produit, et même si le jeu des caractères ainsi fournis est bizarre, idiosyncratique et illogiquement incohérent, je trouve que ce ne sera pas forcément un mal, toute forme d'expressivité gagnée dans la communication électronique me semble plutôt bonne à prendre. Actuellement les webforums semblent surtout prendre un jeu de smileys plus ou moins standardisé (plutôt moins que plus), saisis à la souris, temporairement encodés sous forme de succession de caractères ASCII (évidente quand il s'agit de :-) mais parfois juste un code ad hoc) et finalement affichés sous fome de petites images. Eh bien je préférerais largement des caractères Unicode pour tout ça ! Pour écrire ce blog, je tape des balises spéciales comme <d:smiley-wink /> (ce qui donne : 😉), converties en smileys par mon moteur de blog (celui que depuis des années je dois réécrire entièrement) et affichées sous forme d'images avec un attribut alt pour les rendre lisibles sur un navigateur texte pur et aussi un title qui explique un peu plus ce que le smiley doit représenter. De même, je ne serai(s) pas fâché de pouvoir passer à de vrais caractères Unicode.

Ajout : Apparemment la police que j'ai pour représenter ces caractères s'appelle Symbola, elle est disponible ici (merci à George Douros !), et packagée par Debian dans le paquet ttf-ancient-fonts. Et comme exemple d'affichage des caractères donnés ci-dessus comme exemple, voici à quoi ça ressemble (c'est plus du clipart à ce niveau-là) :

🌇🍥🎑👯👽👾💖💹🗼😅😝😻🙊🙌

↑Entry #1918 [older| permalink|newer] / ↑Entrée #1918 [précédente| permalien|suivante] ↑

↓Entry #1857 [older| permalink|newer] / ↓Entrée #1857 [précédente| permalien|suivante] ↓

(jeudi)

Mes domaines Web se font saisir par une RFC

Il y a six ans j'avais acheté les domaines xn--kwg.net (lire ⁂.net) et idem.com au moment où le DNS internationalisé commençait à apparaître. Depuis, les gens se sont rendu compte que les caractères Unicode posaient plein de problèmes de sécurité (le genre de problèmes étant qu'il est difficile de distinguer google.com et gооglе.com alors que ces deux domaines n'ont rien à voir), et ils ont commencé à mettre plein de règles (à mon avis totalement stupides) dans l'espoir (à mon avis totalement futile) de trier dans Unicode les caractères désirables et indésirables dans un nom de domaine.

Je n'ai guère utilisé ce domaine « astérisme » de façon publique, me doutant bien que cela poserait toutes sortes de problèmes (publiquement j'utilise madore.org), mais je l'ai beaucoup utilisé sous son nom Punycode (xn--kwg.net, je trouve ça rigolo) de façon interne et architecturale (c'est-à-dire comme un domaine technique : les serveurs DNS de mes domaines étaient enregistrés sous ce domaine, je m'en servais pour le DNS inverse, etc.). Depuis un moment j'ai commencé à utiliser gro-tsen.net à la place, me doutant bien que des problèmes viendraient. Mais réussir à extriquer tous les endroits où j'ai utilisé le nom xn--kwg.net est extrêmement difficile, donc je l'ai gardé.

Voilà que la dernière version des règles du DNS internationalisé interdit le caractère U+2042 ASTERISM (⁂) que j'avais adopté. Verisign (registry des TLD .net et .com) a décidé d'appliquer maintenant ces règles et j'ai reçu le courrier suivant de mon registrar :

Dear customer.
 
We regret to inform you that Verisign, the Registry for .com and .net 
domain names, has just given notice that it will discontinue service for 
domain names not in compliance with RFC 5891.RFC 5891, which was adopted 
by the IETF/IESG applies to Internationalized Domain Names in 
Application (“IDNA”).  Compliance with this new RFC is necessary to 
ensure the security and stability of registry operations.  RFC 5891 
affects allowable second level strings in IDN domain names. In addition, 
Verisign will insure compliance with RFC 5891 by deleting existing 
domain names and child hosts from the .com and .net databases.
 
We hereby inform you that your domain names listed below are affected by 
this policy change of the registry and will be deleted by the registry 
on or after Juli 27, 2011. Please change your settings for these domain 
names to AUTODELETE to prevent a renewal before that time as no refunds 
for ongoing registration terms will be possible. Should the domains be 
registered for your customers, please inform the registrants of the 
domain names as soon as possible.

- XN--KWG.COM
- XN--KWG.NET

We sincerely regret the inconvenience caused to you and your customers 
by the decision of the Registry to implement the new RFC in this way.

Je trouve que c'est un peu fort de café de ne me laisser que quatre mois pour me retourner. Ça c'est la faute de Verisign, évidemment. Mais c'est d'autant plus fort que j'avais payé les domaines en question jusqu'à février 2012, et l'annonce cavalière no refunds for ongoing registration terms will be possible, elle, est la faute de mon registrar, et ce n'est absolument pas normal.

J'ai donc répondu :

Dear DD24,

On Thu, Mar 10, 2011 at 12:55:23PM +0000, Support DD24 - Key-Systems GmbH wrote:
> We hereby inform you that your domain names listed below are affected by 
> this policy change of the registry and will be deleted by the registry 
> on or after Juli 27, 2011. Please change your settings for these domain 
> names to AUTODELETE to prevent a renewal before that time as no refunds 
> for ongoing registration terms will be possible. Should the domains be 
> registered for your customers, please inform the registrants of the 
> domain names as soon as possible.
> 
> - XN--KWG.COM
> - XN--KWG.NET

I had already registered the two domains in question beyond 2011-07-27
(expiration date was scheduled to be 2012-02-24 for each one of them),
so I'll be losing 2×7 months of domain registration through no fault
of my own.  I don't think it's fair that you can simply say "no
refunds will be possible".  I paid for these domains well in advance,
so I'm entitled to some kind of compensation.

Instead of a refund, I propose that you transfer the 2×212 domain·days
that I will be deprived of by Verisign's decision to extend the
validity for the domain gro-tsen.net (which is on the same registry,
also registered by dd24 and currently set to expire on 2013-12-27) by
that same number of days, i.e., until 2015-02-24.  I hope we can agree
that this is an acceptable settlement in this matter.

Nous allons voir comment cela évolue.

Toujours est-il que je me tâte pour reprendre un domaine internationalisé pour remplacer xn--kwg.net, parce que gro-tsen.net ça ne me plaît vraiment pas (je voudrais quelque chose de plus cryptique pour mon domaine technique). Si je comprends la RFC, le domaine xn--qr7c.net devrait devenir accessible (il s'agit du caractère U+10080 LINEAR B IDEOGRAM B100 MAN, 𐂀 si vous avez la police qui va bien), ou encore xn--wb8d.net (U+132F9 EGYPTIAN HIEROGLYPH S034, 𓋹), mais celui-là il y a certainement plein de fans de new age qui vont se jeter dessus. Ou alors peut-être que je suis échaudé avec l'IDN et que je vais prendre un nom de domaine constitué de caractères hexadécimaux aléatoires.

Mise à jour : Voici leur réponse :

Dear Mr. Moore[sic],

regretfully, we are unable to provide a refund for domain names lost through
registry policy change. Such a policy change by the registry is completely outside
our control. We are currently trying to influence the registry to change their
position, but we do not have high hopes for that. 

Et ma réponse à leur réponse :

On Thu, Mar 10, 2011 at 04:50:05PM +0000, Support DD24 - Key-Systems GmbH wrote:
> regretfully, we are unable to provide a refund for domain names lost through
> registry policy change. Such a policy change by the registry is completely outside
> our control. We are currently trying to influence the registry to change their
> position, but we do not have high hopes for that. 

As stated in my email, I do not require a refund, I am proposing to
transfer the duration of validity of the domain in question to another
domain, also administered by you and from the same registry.

If this is not acceptable, please explain how you intend to compensate
for failing to provide a service which I have paid for.

Mise à jour nº2 : Ils m'ont informé que Verisign avait fait marche arrière et ne supprimerait pas les domaines selon le calendrier initialement annoncé.

↑Entry #1857 [older| permalink|newer] / ↑Entrée #1857 [précédente| permalien|suivante] ↑

↓Entry #1751 [older| permalink|newer] / ↓Entrée #1751 [précédente| permalien|suivante] ↓

(jeudi)

Je programme pour Android

Comme finalement je trouve que le Java n'est pas un langage trop mal, et que j'avais par ailleurs depuis longtemps envie de programmer quelque chose pour Android, j'ai écrit un petit programme pour réparer une lacune qui m'agaçait : une liste des caractères Unicode avec quelques possibilités primitives de recherche et de saisie des caractères (pour pouvoir les copier-coller ensuite ailleurs). Vous pouvez la télécharger sur le marché Android (cherchez Unicode Map) ou depuis un ordinateur via le lien précédent. Vous pouvez aussi me faire part de vos suggestions d'amélioration, je promets de les ignorer très soigneusement ☺️ (sauf peut-être si elles sont accompagnées d'un patch ou d'une proposition de git pull). Vous pouvez également me dessiner une icône qui soit moins complètement pourrie que celle que j'ai « dessinée » en dix secondes en découvrant qu'il était obligatoire d'en avoir une.

C'est d'ailleurs impressionnant le nombre de sites Web qui répercutent l'arrivée d'une nouvelle application Android (et j'imagine que pour iPhone c'est environ 1000 fois ça) : pour une application que j'ai mise sur le marché avant-hier, il y a déjà plein de listings (automatiquement générés) qui sont indicés par Google et qui en parlent (en parlent veut dire, évidemment, ont recopié le petit blabla que j'ai écrit en cinq secondes — encore moins que l'icône — dans le formulaire d'upload). Ça semble surtout là pour combler ce manque qui me semble insupportable et criant : Google n'a prévu aucun listing Web officiel des applications Android, ce que je ne comprends pas du tout (ça ressemble à une tactique d'Apple, mais à la sauce Google) ; je comprends éventuellement qu'ils ne prévoient aucun moyen de télécharger l'application autrement qu'en passant par leur application de marché sur le téléphone, mais pourquoi ne même pas avoir un mécanisme de recherche via le Web et des pages fixes rappelant les informations basiques sur l'application ? ça n'a pas de sens. Et c'est clairement intentionnel : quand on regarde la page Web du marché, on voit que tout a été fait exprès pour éviter les liens Web. Je ne comprends pas. (Et je comprends d'autant moins que, du coup, plein d'autres gens s'engouffrent dans la brèche, justement.)

↑Entry #1751 [older| permalink|newer] / ↑Entrée #1751 [précédente| permalien|suivante] ↑

↓Entry #1679 [older| permalink|newer] / ↓Entrée #1679 [précédente| permalien|suivante] ↓

(dimanche)

Quelle est l'histoire de la ponctuation ?

Des livres entiers ont été dédiés à l'histoire de l'alphabet. Beaucoup moins sont consacrés à celle, qui me semble pourtant tout aussi fascinante, des signes de ponctuation et de tous les autres signes d'écriture qui ne sont pas alphabétiques. Je trouve bien celui-ci, par exemple, mais d'une part il coûte quand même très cher et d'autre part je crois deviner qu'il se limite à un usage strictement typographique (excluant, par exemple, les communications purement électroniques et l'histoire de la ponctuation en informatique), ce qui est dommage.

L'histoire devrait commencer avec l'apparition de l'espace (je ne cesse de m'étonner du temps qu'il a fallu pour que les gens comprissent que c'était une bonne idée de ne pas collertouslesmotsensemble si on veut aider à la relecture), et devrait couvrir jusqu'à la standardisation d'Unicode, en passant par la façon dont les claviers des machines à écrire ont été choisis et la manière dont ASCII a fait la synthèse des jeux de caractères préexistants.

Et c'est une histoire compliquée, parce que les langues s'influencent les uns les autres, et les signes se confondent ou se séparent de façon pas forcément évidente. Pour comprendre l'histoire du point-virgule, il ne s'agit pas simplement de trouver le premier exemple d'un point-virgule dans un texte imprimé (ça doit être vers la fin du XVe siècle en Italie), il faut comprendre aussi comment le point-virgule et le deux-points se sont différenciés et spécialisés (quel a été le premier texte à utiliser l'un et l'autre ? et le premier à les utiliser avec essentiellement les sens modernes ? je remarque par exemple que le manuel de typographie d'Étienne Dolet (1540) ne connaît pas le point-virgule). Il ne faut pas oublier les signes un peu rares : comment sont apparus les signes § (section ou paragraphe), (paragraphe ou pied-de-mouche), @ (arrobase) ou encore (obèle ou glaive) dans les documents imprimés, et avec quel(s) sens ? On trouve des bouts d'information sur Wikipédia (cf. les liens que j'ai donnés) ou ailleurs sur le web, mais c'est souvent très partiel, approximatif ou confus (on mélange allègrement l'histoire de l'apparition du caractère, ses différents usages, sa version informatique…).

J'ai évoqué la naissance d'ASCII en 1963[#] et 1967 : c'est une date fondamentale pour la typographie informatique car les caractères qui ont reçu cet adoubement caractères ASCII sont devenus omniprésents, et les autres ont été relégués à un rôle de second plan (même s'ils ont pu apparaître dans des jeux de caractères ultérieurs : Latin-1 ou Unicode). C'était sans doute inspiré des jeux de caractères informatiques antérieurs, eux-mêmes inspirés des machines à écrire, mais la cohérence n'est pas toujours très évidente. Et ça a changé la face du monde : je ne sais pas au juste pourquoi le signe @ (arrobase) s'est retrouvé dans ASCII et pas le signe § (ce dernier ayant quand même l'air plus commun dans des textes typographiés traditionnels, que ce soit en anglais ou en français, alors que le @ servait traditionnellement uniquement dans quelques notations commerciales), mais je pense qu'il n'est pas besoin d'expliquer comment le @ a vu sa popularité boostée par cette inclusion dans ASCII qui a permis de l'utiliser ensuite dans les adresses de courrier électronique. Alors pourquoi @ et & sont-ils dans ASCII et pas § et  ? Je n'en sais rien. Cette page fournit des explications sur certains caractères, mais pas sur ceux-là. C'est d'autant plus bizarre, d'ailleurs, que des caractères complètement anecdotiques se sont retrouvés dans ASCII, le plus bizarre étant sans doute la barre verticale |[#2]. Mais c'est aussi ASCII qui a rendu universel le backslash \[#3], un caractère presque inexistant auparavant (son histoire est racontée ici par le Monsieur qui l'a inventé).

Les accolades mériteraient certainement qu'on parle d'elles : si leur apparition dans ASCII est due au même Monsieur que le backslash (voici ce qu'il en dit), on peut se demander comment elles étaient apparues sur les claviers de certaines machines à écrire pour commencer — après tout, à part quelques mathématiciens, qui diable aurait eu besoin ou envie de taper des accolades ? En maths on les utilise pour désigner des ensembles, mais j'imagine que ce ne sont pas les mathématiciens qui ont inventé ces signes. Je subodore que leur premier usage était comme des signes très larges placés, par exemple, dans une marge, pour regrouper des lignes entre elles (ou n'importe quelle sorte d'items alignés verticalement), et j'imagine que l'accolade gauche est née avant l'accolade droite (peut-être que ce sont effectivement les mathématiciens qui ont inventé l'accolade droite, et/ou les accolades utilisées comme parenthèses et de taille seulement d'une ligne). Mais alors comment se sont-elles retrouvées sur le clavier d'une machine à écrire (si on veut faire des grandes accolades pour regrouper plusieurs lignes, avoir une touche qui fait une accolade d'une seule ligne de haut ne sert pas à grand-chose…).

Parmi les caractères dont l'histoire est intéressante, il y a aussi Celui Qu'On Ne Sait Pas Nommer — je veux dire celui qui est à l'emplacement 35=0x23 dans ASCII et qui ressemble à un dièse : #. Les gens le prononcent généralement dièse mais ce n'est pas un dièse (le dièse, c'est ça : ♯ — et ce n'est pas un signe utilisé dans la notation d'autre chose que la musique). Il est souvent utilisé en anglais pour précéder un numéro (un peu comme on écrirait en français), et il semble qu'historiquement il vienne d'une notation désignant (aux États-Unis) une livre de poids. Pour cette raison, il est d'ailleurs parfois appelé pound sign, ce qui est une réussite géniale du Club Contexte parce que du coup on le confond complètement avec le symbole £ de la livre (l'unité monétaire britannique), d'autant plus que le # est sur les claviers qwerty US exactement à l'endroit où est le £ sur les claviers qwerty GB (ça c'est vraiment génial, comme façon d'alimenter la confusion). Bref, le # ressemble à un dièse mais n'en est pas un, et s'appelle symbole de la livre même s'il n'en est pas un ! (D'où la suggestion faite dans le Jargon File d'appeler ce caractère shibboleth — comme שבלת dans Juges 12:5–6.)

On pourrait dévier vers l'histoire de toutes les notations mathématiques, d'ailleurs, mais je remarque quand même que ça se recouvre assez peu : les mathématiciens, qui sont très friands de notations exotiques, utilisent assez peu certains des symboles fournis par la typographie (je crois que je n'ai à peu près jamais vu les caractères $, @, § ou ¶ utilisés dans des articles mathématiques, alors qu'ils fournissent un système commode de variations sur le prime).

((J'en profite pour conclure par une exhortation (et je m'adresse à tous ceux qui écrivent des textes, qu'ils soient littéraires ou techniques) : celle de ne pas hésiter à faire un usage libéral, éventuellement même créatif, de la ponctuation. Créer de nouveaux signes de ponctuation est difficile, surtout dans le cadre d'échanges de fichiers informatiques (où on est contraint par ce que les standards permettent), donc il est par exemple difficile d'utiliser la virgule d'interrogation et la virgule d'exclamation (des signes que dont je prétends qu'ils auraient une certaine utilité), ou même le point d'ironie. Mais on peut au moins composer « horizontalement », si j'ose dire, la ponctuation : c'est-à-dire, par exemple, si on en ressent l'utilité !, de faire suivre un point d'interrogation ou d'exclamation par une virgule, un deux-points ou un point-virgule, pour indiquer la nuance avec plus de précision : ce n'est pas autorisé par les règles traditionnelles de la typographie française, n'est-ce pas ?, et ce sont justement ces règles que j'invite à aller voir dans les toilettes si je m'y trouve. Dans des textes que j'écris pour moi-même, il m'arrive d'utiliser deux points-virgules de suite ou d'autres combinaisons un peu exotiques :: mais ce n'est pas aussi intuitivement compréhensible : donc je ne recommande pas forcément ;; par contre, les doubles parenthèses ont une certaine utilité, et se comprennent assez bien, pour marquer un aparté un peu long, typiquement un paragraphe entier. ⁂ Et finalement il n'y a aucune raison de ‹ne pas se servir de signes un peu rares ou un peu détournés›, tant que le lecteur peut facilement deviner que usage l'auteur en fait, ou {au moins !,} tant que ça ne gêne pas la compréhension.))

[#] La version de 1963 comportait les caractères 32=0x20 à 93=0x5d comme maintenant, donc avec uniquement des majuscules (les cases 96=0x60 à 123=0x7b étaient inutilisées, les dernières contenaient des caractères de contrôle supplémentaires), et à la place de l'accent circonflexe (^) et du souligné (_), en 94=0x5e et 95=0x5f, étaient une flèche vers le haut () et une vers la gauche ().

[#2] Barre verticale qui, dans ASCII, est indifféremment trouée au milieu ou pas. Alors que dans Latin-1 et donc dans Unicode il existe deux caractères différents de barre verticale : celle (|) qui n'est pas trouée (à l'emplacement ASCII, donc on est maintenant censé considérer que la barre en question n'est pas trouée), et celle (¦) qui l'est et qui très franchement ne sert absolument et rigoureusement à rien (on se demande vraiment comment elle s'est retrouvée là). C'est assez perturbant, parce que les claviers montrent souvent la barre verticale trouée pour le caractère ASCII : on se retrouve donc avec une touche représentant une barre verticale trouée et qui affiche une barre verticale non trouée.

[#3] Le backslash était prévu pour suivre ou précéder le slash pour former les signes logiques et (utilisés en ALGOL) comme /\ et \/ ; mais en fait, c'est le langage C qui a donné au backslash sont sens le plus commun en informatique actuellement, comme un échappement (il faut aussi signaler son usage dans MS-DOS pour remplacer le slash d'Unix parce que le slash était déjà pris comme séparateur d'options à l'imitation de VMS et CP/M). L'usage d'ASCII par le C est d'ailleurs un peu surprenant parce qu'il ne fait aucun usage des caractères $, @ ou ` et il fait un usage minimaliste du ~ (et très particulier du #) : c'est sans doute pour ça que le sens de ces derniers est beaucoup moins clairement établi que ceux qui servent en C.

↑Entry #1679 [older| permalink|newer] / ↑Entrée #1679 [précédente| permalien|suivante] ↑

↓Entry #1608 [older| permalink|newer] / ↓Entrée #1608 [précédente| permalien|suivante] ↓

(dimanche)

Petite histoire du « gras de tableau noir »

Puisque je parlais de notations mathématiques dans la dernière entrée, je vais raconter un autre petite histoire à ce sujet : celle de la police qu'on appelle le gras de tableau noir (enfin, je ne sais pas ce qu'on est censé dire en français : je sais juste que les lettres se disent double barre — c'est en anglais qu'on parle de blackboard bold).

Il s'agit des caractères qui ressemblent à ceci :

(en l'occurrence le Z double barre, qui désigne l'ensemble des entiers relatifs {…, −3, −2, −1, 0, 1, 2, 3, …}, et qui pour Unicode se nomme U+2124 DOUBLE-STRUCK CAPITAL Z, soit ℤ si vous avez donné des polices correctes à votre navigateur). Il s'agit d'une désignation maintenant assez standardisée pour les ensembles de nombres (les plus communs étant : ℕ soit N double barre pour les entiers naturels, ℤ soit Z double barre pour les entiers relatifs, ℚ soit Q double barre pour les rationnels, ℝ soit R double barre pour les nombres réels, ℂ soit C double barre pour les nombres complexes). Quelle est leur histoire ?

La désignation des ensembles de nombres était assez fluctuante jusque dans la première moitié du XXe siècle : l'utilisation du N pour les entiers naturels remonte au moins à Peano, celle du Z pour les entiers — sans doute comme initiale du mot allemand Zahl — est sans doute due à Landau dans ses Grundlagen der Analysis vers 1930 (mais l'écrivait en gothique fraktur, ℨ, avec une barre au-dessus), celle du R pour les réels a été faite par plusieurs personnes indépendamment (mais le R était aussi souvent utilisé au début du XXe pour désigner les rationnels).

C'est Bourbaki qui a fixé, à la fin des années '40, au moins les lettres suivantes : le N pour les entiers naturels, le Z pour les entiers relatifs, le Q pour les rationnels (qu'il semble avoir été le premier à introduire), le R pour les réels et C pour les complexes (ainsi que H pour les quaternions — par contre, il n'utilise pas O pour les octonions, et il est sans doute difficile d'attribuer à quelqu'un de précis une notation aussi évidente). Il semble que ces conventions se soient imposées très rapidement. Cependant, si Bourbaki a fixé les lettres, il utilise une police grasse normale pour les désigner.

L'histoire du « gras tableau noir » est complètement contenue dans son nom : pour simuler du gras au tableau noir, le plus simple est de doubler les traits. La façon dont cette habitude est passée du tableau noir au papier n'est pas évidente à retracer : il semble que le vecteur ait été les textes imprimés à la machine à écrire, où on graissait une lettre en la frappant deux fois légèrement décalée. (Le premier texte comme ça est peut-être le Lectures on Riemann Surfaces de Gunning, publié en 1966 à Princeton, Gunning lui-même ayant tiré cette idée de l'habitude prise dans le séminaire Kodaira-Spencer à Princeton au début des années '60 ; mais ce n'est pas sûr.)

Je ne sais pas non plus quel est le premier document imprimé de façon plus sérieuse qu'à la machine qui a eu ces caractères, mais il y a eu plusieurs styles de polices « gras tableau noir » dans TeX, essentiellement développées par l'AMS :

(msym10) est devenu (msbm10) vers 1991

(mais ce ne sont pas les seules formes possibles).

Ce qui est amusant, c'est que cette police est apparue par accident (du gras de Bourbaki au gras « tableau noir » en passant par le doublement des traits sur un vrai tableau noir et le doublement des caractères sur la machine à écrire), mais que c'est une invention vraiment géniale (et maintenant entérinée par son introduction dans Unicode) : alors qu'en maths on manque souvent de lettres et de symboles pour désigner les objets, voici une police complètement unique et très facilement reconnaissable pour désigner des objets uniques. Car il n'y a pas que les ensembles de nombres : le gras « tableau noir » semble servir généralement à désigner un objet mathématique qui n'est pas seulement particulier au problème, mais plus généralement bien reconnu dans l'ensemble de la branche des mathématiques où on se place, voire l'ensemble de toutes les mathématiques — en probabilités on utilisera 𝔼 soit E double barre pour l'espérance, en géométrie ℙ soit P double barre pour l'espace projectif, etc. (tiens, le μ double barre n'est pas dans Unicode : il faudra sans doute que je propose celui-là aussi — il sert à désigner le groupe des racines de l'unité).

Un peu de polémique maintenant : les membres de Bourbaki, notamment Serre, et un certain nombre de matheux français qui s'en sentent proches, n'aiment pas cette police et refusent de l'utiliser dans les textes imprimés, arguänt que Bourbaki avait choisi le gras, pas le doublement des barres. Je trouve que ce refus est une obstination d'orgueil bien malheureuse, car même si le gras « tableau noir » est le fruit du hasard, il est vraiment utile, et il a l'avantage de libérer le gras pour d'autres usages (par exemple pour désigner des catégories, des foncteurs, que sais-je encore) ; en tout cas, l'explication c'est un malentendu, le doublement des barres n'est qu'une façon de faire du gras au tableau noir ne vaut rien (on est conscient que c'est un malentendu, mais beaucoup d'inventions utiles sont nées d'une erreur, ce n'est pas une raison pour ne pas s'en servir !), pas plus que Bourbaki a choisi le gras (comme Landau a choisi la fraktur avec une barre dessus, mais on ne s'en sert plus). Heureusement, je crois qu'ils ont complètement perdu cette bataille (les notations pour les ensembles de nombres en « gras tableau noir » s'enseignent maintenant au collège/lycée, en France et dans beaucoup d'autres pays, et l'immense majorité des mathématiciens les considèrent maintenant comme acquises).

PS : Si quelqu'un veut bien faire à ma place l'effort de rendre un peu plus corrects les articles de Wikipédia (It is frequently claimed that the symbols were first introduced by the group of mathematicians known as Nicolas Bourbaki. There are several reasons to doubt this claim…), ce serait bien. L'ennui, c'est qu'il est à peu près impossible de donner une référence pour tout ce que je viens de raconter.

↑Entry #1608 [older| permalink|newer] / ↑Entrée #1608 [précédente| permalien|suivante] ↑

↓Entry #1607 [older| permalink|newer] / ↓Entrée #1607 [précédente| permalien|suivante] ↓

(vendredi)

Je propose un N-ARY RESTRICTED PRODUCT

Aujourd'hui j'ai fait une tentative pour augmenter mon karma geek : j'ai soumis un caractère à Unicode. Il s'agit d'un caractère qui ressemble à ça :

— c'est-à-dire une combinaison de ça : et ça :

Les deux symboles de droite existent déjà dans Unicode : il s'agit du symbole du produit de suites ou familles (U+220F N-ARY PRODUCT) ∏ (le glyphe est juste un grand pi majuscule) et du symbole du coproduit de suites ou familles (U+2210 N-ARY COPRODUCT) ∐ (le glyphe est le même mais inversé). Le symbole que j'ai proposé d'ajouter (et qui pourrait recevoir le nom de N-ARY RESTRICTED PRODUCT) a un glyphe dont la partie supérieure est celle du symbole du produit et la partie inférieure est celle du symbole du coproduit (donc le même à l'envers). Il dénote le produit restreint (toujours de suites ou familles) et apparaît en théorie des nombres — dans un contexte où le coproduit d'une famille infinie d'objets (qui, en général, est une opération duale du produit) serait le sous-ensemble du produit dont toutes les coordonnées sont nulles sauf un nombre fini, le produit restreint est intermédiaire entre le coproduit et le produit, il correspond au sous-ensemble du produit dont toutes les coordonnées sauf un nombre fini appartiennent à un sous-ensemble des facteurs compris implicitement ; cela apparaît par exemple, dans la définition de l'anneau des adèles ou du groupe des idèles d'un corps de nombres. Ce produit restreint est souvent noté ∏′ (pi-prime, quoi) par les auteurs qui n'aiment pas ou ne savent pas typographier le symbole ci-dessus, mais cette notation, proposée par John Tate, est occasionnellement utilisée, graphiquement élégante, et il me semble important de l'ajouter à Unicode.

Ça faisait longtemps que je pensais soumettre ce caractère (depuis un exposé au séminaire Variétés rationnelles, il y a un an, où il était apparu sous la craie de David Harari). Mais pour cela, il me fallait trouver des exemples de son utilisation : c'est là qu'était la difficulté, parce que pour convaincre que le symbole existe vraiment, il faut des exemples imprimés, or il sert surtout au tableau noir où ce n'est pas difficile de le faire et où le prime dans ∏′ (pi-prime) risquerait de ne pas être vu — alors que dans un texte imprimé, c'est le contraire, écrire ∏′ est plus facile (le symbole inventé par Tate, non seulement il n'est pas dans Unicode, mais il n'est pas non plus dans les jeux de macros LaTeX usuels). Je savais que je l'avais vu quelque part dans un livre, mais encore fallait-il retrouver où. Un ami m'a rapidement trouvé un spécimen dans Galois Cohomology de Serre, et ce n'est que récemment que je suis retombé sur un autre exemple que j'avais oublié, dans Algebraic Number Theory de Neukirch. Avec ces deux références (de deux auteurs différents et imprimées par un éditeur connu), je pense qu'il y a de bonnes chances que le caractère soit inséré : plutôt que m'adresser directement au working group, sur la suggestion d'un ami j'ai confié le combat à une experte en typographie mathématique qui m'a répondu que : the unicode technical committee has accepted the principle that math notation is open-ended, so they are receptive to well-documented submissions of new symbols. your informants are correct that, at present, i'm the "fast track" entry point to the system, and that will probably continue for several more years.

Nous allons donc maintenant voir combien de temps il faudra pour que ce caractère apparaisse dans une version ultérieure du standard. (Il ne faut jamais perdre espoir, avec Unicode : la première proposition d'encoder les hiéroglyphes date de 1999, maintenant c'est quasiment acquis, au moins pour la partie la plus basique, mais il faut encore attendre la sortie de la prochaine version, donc ça aura pris environ dix ans.)

[Mise à jour () : j'ai essayé de rassembler sur une page différents caractères dont je voudrais proposer l'addition à Unicode (voir une entrée ultérieure). Au fait, les hiéroglyphes basiques ont bien fini par arriver dans le standard.]

↑Entry #1607 [older| permalink|newer] / ↑Entrée #1607 [précédente| permalien|suivante] ↑

↓Entry #1588 [older| permalink|newer] / ↓Entrée #1588 [précédente| permalien|suivante] ↓

(jeudi)

Ἅπαξ λεγόμενα

Puisque ces caractères ont été introduits dans Unicode (qui devait avoir bu un peu trop de tsikoudia ce jour-là) pour écrire un seul texte, et que Google ne semble pas connaître le texte en question, le voici :

𐇑𐇛𐇜𐇐𐇡𐇽 𐇧𐇷𐇛 𐇬𐇼𐇖𐇽 𐇬𐇬𐇱 𐇑𐇛𐇓𐇷𐇰 𐇪𐇼𐇖𐇛 𐇪𐇻𐇗 𐇑𐇛𐇕𐇡□ 𐇮𐇩𐇲 𐇑𐇛𐇸𐇢𐇲 𐇐𐇸𐇷𐇖 𐇑𐇛𐇯𐇦𐇵𐇽 𐇶𐇚
𐇑𐇪𐇨𐇙𐇦𐇡 𐇫𐇐𐇽 𐇑𐇛𐇮𐇩𐇽 𐇑𐇛𐇪𐇪𐇲𐇴𐇤 𐇰𐇦 𐇑𐇛𐇮𐇩𐇽 𐇑𐇪𐇨𐇙𐇦𐇡 𐇫𐇐𐇽 𐇑𐇛𐇮𐇩𐇽 𐇑𐇛𐇪𐇝𐇯𐇡𐇪 𐇕𐇡𐇠𐇢 𐇮𐇩𐇛 𐇑𐇛𐇜𐇐 𐇦𐇢𐇲𐇽 𐇙𐇒𐇵 𐇑𐇛𐇪𐇪𐇲𐇴𐇤 𐇜𐇐 𐇙𐇒𐇵

𐇑𐇛𐇥𐇷𐇖 𐇪𐇼𐇖𐇲 𐇑𐇴𐇦𐇔𐇽 𐇥𐇨𐇪 𐇰𐇧𐇣𐇛 𐇟𐇦𐇡𐇺𐇽 𐇜𐇐𐇶𐇰 𐇞𐇖𐇜𐇐𐇡 𐇥𐇴𐇹𐇨 𐇖𐇧𐇷𐇲 𐇑𐇩𐇳𐇷 𐇪𐇨𐇵𐇐
𐇬𐇧𐇧𐇣𐇲 𐇟𐇝𐇡 𐇬𐇰𐇐 𐇕𐇲𐇯𐇶𐇰 𐇑𐇘𐇪𐇐 𐇬𐇳𐇖𐇗𐇽 𐇬𐇗𐇜 𐇬𐇼𐇖𐇽 𐇥𐇬𐇳𐇖𐇗𐇽 𐇪𐇱𐇦𐇨 𐇖𐇡𐇲 𐇖𐇼𐇖𐇽 𐇖𐇦𐇡𐇧 𐇥𐇬𐇳𐇖𐇗𐇽 𐇘𐇭𐇶𐇡𐇖 𐇑𐇕𐇲𐇦𐇖 𐇬𐇱𐇦𐇨 𐇼𐇖𐇽

Non, je ne sais pas plus que vous ce que ça peut vouloir dire, mais c'est certainement très profond. Si vous n'avez pas la police pour afficher les caractères en question, rassurez-vous, vous ne risquerez pas de les rencontrer trop souvent, et si vous les rencontrez ce sera forcément dans ce texte-là donc le fait d'avoir les caractères ne vous éclairerait pas beaucoup.

(Par contre, je remarque que la police que j'ai, moi, a un problème de directionnalité : les glyphes sont prévus pour une écriture de droite à gauche comme l'original alors qu'Unicode, dans son infinie sagesse assistée de tsikoudia, a décidé qu'il fallait inverser les glyphes et écrire de gauche à droite. Du coup, il m'affiche un truc subtilement inversé.)

↑Entry #1588 [older| permalink|newer] / ↑Entrée #1588 [précédente| permalien|suivante] ↑

↓Entry #1582 [older| permalink|newer] / ↓Entrée #1582 [précédente| permalien|suivante] ↓

(mardi)

Après les domaines .com et .net, accueillez les .测试

Je viens de remarquer l'apparition dans le DNS de toutes sortes de domaines (de premier niveau !) aux noms rigolos, avec lesquels l'ICANN fait joujou. Voici donc des URL qui nous changent de l'alphabet latin (et que tous les navigateurs ne sauront pas forcément afficher ou consulter correctement) :

Si vous vous demandez ce que ça veut dire, je crois que c'est pareil dans chaque langue et ça deviendrait en français quelque chose comme http://exemple.test/Page_principale ; mais bon, je ne parle pas le tourdebabel donc je me trompe peut-être.

(Par ailleurs, si Firefox vous affiche une adresse du genre http://xn--fsqu00a.xn--0zwm56d/%e9%a6%96%e9%a1%b5 quand vous suivez, disons, le premier lien, vous pouvez essayer de faire joujou avec les paramètres de configuration tels que network.enableIDN, network.IDN_show_punycode, network.standard-url.encode-utf8 et network.standard-url.escape-utf8 — dont les interactions sont certainement très subtiles. Vous pouvez aussi vérifier que copier-coller l'adresse dans la barre d'URL, avec ses caractères bizarres, vous amène au même endroit que de cliquer dessus.)

Il est amusant de voir que Google connaît déjà ces domaines et qu'on peut l'interroger à leur sujet. Par exemple, voici une recherche sur le domaine .テスト ; il comprend aussi si on lui donne le nom du domaine en punycode : la preuve. Par contre, on voit sur ce dernier exemple que l'affichage de la page des résultats Google n'est pas du tout prévue pour le cas où le nom de domaine se lit de droite à gauche ; d'ailleurs, je ne sais pas trop comment on est censé écrire les sous-domaines dans ce cas (je dirais quand même de gauche à droite, parce que le http, que Google omet à tort, se lit de gauche à droite).

Sinon, dernier petit gag à propos de Google : il permet de conster qu'il existe des sites Web dans le domaine .arpa (je pourrais moi-même y ajouter ma pierre en créant www.e.a.8.7.8.a.7.0.1.0.0.2.ip6.arpa, mais je ne le ferai pas parce que c'est Mal®).

↑Entry #1582 [older| permalink|newer] / ↑Entrée #1582 [précédente| permalien|suivante] ↑

↓Entry #1552 [older| permalink|newer] / ↓Entrée #1552 [précédente| permalien|suivante] ↓

(dimanche)

Un chouïa de linguistique

J'en suis à la leçon quatorze de ma ma tentative pour apprendre un peu d'arabe, et les paris sont encore ouverts pour savoir jusqu'où je tiendrai. Pour l'instant, la langue (ou peut-être devrais-je dire, la présentation qui m'en est faite) est juste assez tordue pour attirer mon intérêt de geek sans être assez difficile pour me faire abandonner. Disons que, par rapport au même nombre de leçons en japonais, les questions de grammaire et d'écriture[#] sont beaucoup plus envahissantes : j'ai donc dû voir, pour l'instant, un vocabulaire de trente mots environ, et les phrases (qui parlent toutes d'écrivains qui écrivent un livre avec un stylo ou de filles qui sont sorties de la maison et allées au nouveau marché) ne sont vraiment pas passionnantes ; en plus, tous les verbes sont à l'accompli (= au passé) et tous les mots sont au singulier. C'est amusant, mon père avait lui aussi, dans le temps, essayé d'apprendre l'arabe[#2] avec la méthode Assimil : mais c'était l'ancienne édition (en deux volumes, dont tout le texte arabe était écrit à la main), et l'approche pédagogique était visiblement très différente, on vous plongeait tout de suite dans un texte un peu compliqué (une annonce faite dans un avion) déployant à peu près tout l'alphabet, alors que la nouvelle édition commence par une leçon d'une seule phrase, longue de deux mots et utilisant cinq lettres différentes : كَتَبَ الْكَاتِبُ (l'écrivain a écrit).

Phonétique

La prononciation de l'arabe semble un tantinet plus dure, pour un Français, que celle du japonais. L'argument naïf serait de dire que c'est parce qu'il y a plus de phonèmes, mais c'est un peu trompeur : je me suis livré à l'exercice stupide de compter le nombre de phonèmes dans quelques langues (compte tout à fait incertain vu que la notion de phonème est mal définie) : j'ai trouvé très approximativement :

LangueConsonnesVoyellesTotal phonèmes
Japonais165 + 5 longues26
Français2111 + 4 nasales36
Arabe293 + 5 lg./dipht.37
Anglais US2412 + 3 dipht.39
Allemand2215 + 3 dipht.40
Anglais GB2411 + 8 dipht.43
Hindi3014 + 10 nasales54

Bref, si le japonais est bas, l'arabe n'est pas spécialement haut non plus. L'anglais US est plus bas que l'anglais GB notamment parce que la prononciation du ‘r’ fait que beaucoup de choses qui s'analysent en diphtongues en en-GB deviennent voyelle+[ɹ] en en-US : je ne suis pas sûr que ce soit vraiment une différence profonde ; sinon je suis surpris de voir l'allemand aussi haut, mais c'est vrai que quand on pense à la différence de prononciation entre bieten, bitten, beten, Betten, [wenn sie] bäten, boten, Botten, etc., il y a quand même des choses. Le hindi est très haut notamment à cause de la double distinction sonore/sourde et aspirée/non-aspirée sur les consonnes. Bref, ce dénombrement est dénué de sens (je ne sais même pas comment on compterait pour une langue à tons). Mais ce serait quand même intéressant pour un esprit pervers d'inventer une langue qui ait les consonnes de l'arabe multipliées par les grades du hindi, plus les voyelles de l'anglais, et les tons du chinois cantonais : comme ça, tout se dirait en une seule syllabe et personne ne se comprendrait au téléphone.

Pour revenir à l'arabe, ce qui est difficile pour un francophone/anglophone/germanophone/…, c'est l'utilisation du pharynx, qui sert à prononcer les quatre ou cinq consonnes dites emphatiques (et qui sont, en fait, pharyngalisées), la fricative pharyngale sourde [ħ] (notée par la lettre ḥaʾˌ : ح), et le fameux ʿayn (ع) qui est parfois décrit comme la variante sonore de cette dernière, [ʕ], mais qui, si j'en crois le Manuel de l'Association phonétique internationale (lequel a le bon goût d'avoir un chapitre consacré à l'arabe), n'est en fait jamais prononcé de la sorte mais plutôt comme un coup de glotte pharyngalisé [ʔˤ] (et apparemment certaines prononciations de l'arabe en font une épilaryngale [ʢ]) [#3]. Alors, pour ma part, j'ai fait suffisamment de phonétique pour savoir comment réaliser, disons, une fricative épilaryngale sonore, mais malheureusement, prononcer une langue ce n'est pas juste prononcer une par une des articulations pures, encore faut-il les enchaîner[#4], et je ne sais pas si ce que je fais pour l'arabe est très crédible.

Je suis aussi intrigué par l'habitude de noter l'arabe sans les voyelles (ça ressemble à une décision qu'aurait pris quelqu'un qui voulait s'assurer que personne n'aurait le droit de lire quoi que ce soit sans avoir d'abord passé un temps fou à étudier la langue). Si je comprends bien, ça a pour conséquence que, exactement au contraire du français qui fait à l'écrit la distinction dans la phrase tu est sorti[e] selon que la personne à qui on parle est un homme (auquel cas on écrit tu es sorti) ou une femme (tu es sortie), l'arabe fait cette distinction à l'oral uniquement, écrivant خرجت pour prononcer [xaraʒta] ou [xaraʒti] selon qu'on s'adresse à un homme ou une femme. Il ne doit pas y avoir beaucoup de cas, en français, où on fait des distinctions à l'oral et pas à l'écrit.

Grammaire

En revanche, pour la syntaxe et la structure grammaticale, on retrouve beaucoup de choses étonnamment communes avec les langues indo-européennes (ce qui donne une certaine crédibilité à la thèse d'une origine commune des familles indo-européenne et sémitique). Par exemple, la notion de verbe, de nom et d'adjectif, avec un apparentement des adjectifs aux noms : tout ceci n'a rien de naturel[#5], d'ailleurs en japonais les adjectifs sont (au moins pour ceux en -い) nettement plus apparentés aux verbes qu'aux noms[#6], et d'autres langues ne marquent pas nettement (ou pas du tout ?) ces catégories grammaticales. Ou encore le fait de faire varier le verbe avec son sujet (ce qui n'est pas plus logique qu'avec son objet), et de différentier les cas nominatif et direct (= accusatif) plutôt que, par exemple, absolutif et ergatif. Encore plus frappante comme ressemblance entre les langues indo-européennes et les langues sémitiques est l'existence des trois nombres : singulier, duel et pluriel ; le duel a apparemment mieux survécu en arabe que dans la famille indo-européenne où il a essentiellement disparu des langues modernes (à part pour les pédants comme moi qui seraient capables de dire au cours d'un exposé de maths and now, combine this lemma with the previous two lemmate: the three lemmata, together, allow us to finish the proof), mais déjà la distinction singulier/pluriel n'a rien de vraiment naturel et, de nouveau, elle n'existe pas en japonais. On pourrait dire quelque chose de semblable du genre des mots.

Du coup, pour ce qui est du dépaysement sapirwhorfien, l'arabe n'est pas aussi bon que je l'espérais.

Informatique

Par contre, pour ce qui est de faire le kéké avec Unicode, l'arabe est parfait. C'est un excellent test des polices vectorielles parce que les lettres changent de forme selon les lettres voisines (et font même quelques ligatures, quoique nettement moins que dans les langues brahmiques) et qu'en plus si on écrit les voyelles ça fait plein de caractères combinants qui doivent être correctement placés. Il y a plusieurs polices vectorielles libres qui s'en sortent plus ou moins bien, mais la seule qui a l'air de tout faire parfaitement est la police Scheherazade — elle ne fera pas de calligraphie sophistiquée mais elle ressemble comme deux gouttes d'eau — peut-être pas par hasard — à la police qui a servi à écrire l'Assimil dans lequel j'apprends (en plus ça m'a permis d'entendre parler des excellentes polices qu'offre le SIL — sur une Debianoïde faire apt-cache search ttf-sil et faire son choix).

L'écriture de la droite vers la gauche est perturbante sur un ordinateur : tout le monde est d'accord que la touche backspace doit effacer le caractère précédant le curseur (donc à droite si on écrit de droite à gauche) et delete le caractère suivant, mais que doivent faire les touches flèche gauche et flèche droite ? Parmi les logiciels que j'ai essayés, yudit (un éditeur pour texte Unicode pur, dont j'apprécie les méthodes d'entrée) a choisi, comme tout ce qui est basé sur GTK+, de faire que la flèche gauche aille effectivement vers la gauche et la flèche droite vers la droite — c'est plus simple à comprendre, mais ça veut dire que si on mélange des langues de directionalité contraire on va faire des sauts bizarres dans l'ordre logique du texte si on garde la flèche droite appuyée — alors qu'OpenOffice.org a choisi que la flèche vers la droite aille toujours en avant dans le texte, quitte à ce que le curseur fasse des bonds bizarres si on mélange des langues de directionalité contraire. Je suis curieux de savoir quels logiciels connus ont fait quels choix en la matière (et, d'ailleurs, lequel est le moins pénible à programmer). Il est aussi perturbant de voir le sens des parenthèses s'inverser (l'idée étant que les caractères ‘(’ et ‘)’ sont toujours des parenthèses ouvrante et fermante, mais dont l'apparence visuelle sera inversée dans un contexte droite-vers-gauche).


Notes

[#] La comparaison est faussée, cependant, du fait que l'Assimil japonais relègue l'apprentissage des kanji (= idéogrammes chinois) à un volume séparé dont l'étude est largement indépendante — l'idée étant de permettre à ceux qui le souhaitent d'apprendre le japonais uniquement parlé. Ça n'a sans doute pas beaucoup de sens de dire que, pour le débutant, le-japonais-avec-des-kana-au-dessus-de-chaque-kanji est apparemment plus facile que l'arabe-avec-toutes-les-voyelles-écrites, mézenfin, c'est l'impression que j'ai. ☺️

[#2] Ma mère n'a cesse de se moquer de lui à ce sujet parce qu'un jour, il y a fort longtemps en Algérie, mon père a essayé de commander en arabe deux thés à la menthe sans sucre, le serveur a eu l'air estomaqué, a fait répéter, et a finalement apporté… deux cafés sucrés.

[#3] Si ces termes vous semblent chinois (ou arabes…), voyez notamment la page sur l'alphabet phonétique que j'avais commencée — et jamais finie — il y a assez longtemps. Les pharyngales s'articulent en rapprochant l'arrière de la langue de la cavité du pharynx, soit comme point d'articulation primaire (pour une pharyngale proprement dite) soit comme point d'articulation secondaire (pour une pharyngalisée) ; ce n'est pas très difficile à réaliser si on s'efforce d'utiliser la base de la langue pour obstruer partiellement le passage de l'air sans s'approcher du palais (on doit pouvoir voir la luette dans un miroir) : la position de la langue est à peu près celle de la voyelle [ɑ] (du français pâte, correctement prononcé, ou de l'anglais britannique laugh). Les épilaryngales, elles, s'articulent en rapprochant le pli aryépiglottique de l'épiglotte : ça c'est plus difficile à expliquer (déjà, voyez cette image et ce manuel pour l'emplacement des différentes parties du pharynx) ; il faut essayer d'obstruer partiellement le passage de l'air sans utiliser la langue et sans non plus donner un coup de glotte. (Moi je trouve que ça ressemble un peu à un râle d'agonisant, alors que les pharyngales font plutôt vomissement — désolé pour la poésie.) Il paraît que la langue aghul, parlée au sud du Daghestan, a l'idée complètement saugrenue de faire une distinction phonémique entre pharyngales et épilaryngales : donc, rappelez-moi de ne jamais essayer d'apprendre l'aghul. Enfin, les laryngales, c'est beaucoup plus facile ; d'ailleurs, si vous savez prononcer l'allemand, il y a un coup de glotte (c'est-à-dire une occlusive laryngale, [ʔ]) au début de chaque mot commençant par une voyelle (prononcez Deutschland ʔüber ʔalles et vous vous en rendrez bien compte), et en anglais comme dans beaucoup de langues il y a une fricative laryngale [h].

[#4] Pour dire le chat (أَلْقِطُّ), [alqitˤtˤu] il faut enchaîner une occlusive uvulaire sourde [q] et une occlusive dentale pharyngalisée et géminée [tˤtˤ] : ce n'est pas parce que je sais ce qu'il faut faire que j'y arrive (pour un francophone, c'est très casse-gueule).

[#5] Du point de vue sémantique, il est évident qu'il y aura des mots d'une langue qui désigneront une action (qui prendront éventuellement des compléments indiquant l'agent et le subissant de l'action) et d'autres une chose concrète (qui prennent typiquement moins de compléments), mais il n'y a pas de raison que cette distinction se traduise par une différentiation de catégories grammaticales (pas plus qu'on n'a besoin de catégories grammaticales distinctes pour distinguer les mots désignant des choses concrètes et ceux désignant des concepts abstraits). D'ailleurs, la distinction verbe/nom ne recouvre même pas cette distinction sémantique : si je dis brillante victoire des Romains sur les Carthaginois, le contenu sémantique du mot victoire est le même que ont vaincu dans les Romains ont brillamment vaincu les Carthaginois (pareil, forte pluie sur la campagne par rapport à il pleut fort sur la campagne), et le mode nominal ou verbal a plutôt pour fonction de déterminer l'aspect de l'énoncé (positif/déclaratif ou absolu/infinitif) que pour faire varier le sens du noyau de l'énoncé en question. Tout ça pour dire que la distinction verbe/nom n'a rien d'obligatoire (parmi mes nombreux projets inachevés, il y a celui de créer une langue qui éviterait complètement cette distinction tout en ayant une grammaire extrêmement régulière).

[#6] En japonais, pour mettre au passé une phrase comme l'arbre est grand (quelque chose comme 木は高いです), on met au passé l'adjectif grand (高い高かった). Pour un cours très geek-friendly (i.e., qui en souligne la logique) de la grammaire japonaise, je recommande le résumé de Tae Kim.

↑Entry #1552 [older| permalink|newer] / ↑Entrée #1552 [précédente| permalien|suivante] ↑

↓Entry #1458 [older| permalink|newer] / ↓Entrée #1458 [précédente| permalien|suivante] ↓

(jeudi)

Merci XeTeX !

Voilà, j'ai produit une jolie nouvelle version PDF, grâce à XeTeX, de mes fragments littéraires gratuits. Je suis très satisfait du résultat (comme de la facilité avec laquelle j'y suis arrivé). Comme police de caractères, sur les conseils d'un ami, j'ai utilisé Linux Libertine, une police libre puisant apparemment d'inspirations telles que Garamond, Bembo et Baskerville (voire Perpetua), donc avec un style assez marqué mais pas du tout déplacé pour un livre imprimé, et qui a le bon goût de contenir une agréable variété de caractères Unicode (mais pour les caractères chinois et le tengwar, j'utilise d'autres polices).

J'avais un peu cessé d'en écrire pour ne pas avoir à faire toutes les contorsions nécessaires pour faire fonctionner Lamed depuis ma dernière mise à jour qui l'avait cassé. Maintenant que les choses sont rentrées dans l'ordre et se sont même améliorées, je vais pouvoir m'y remettre.

↑Entry #1458 [older| permalink|newer] / ↑Entrée #1458 [précédente| permalien|suivante] ↑

↓Entry #1451 [older| permalink|newer] / ↓Entrée #1451 [précédente| permalien|suivante] ↓

(mardi)

TeX + Unicode → Omega, Aleph, XeTeX, LuaTeX ?

Comme les lecteurs réguliers de ce blog le savent bien, il m'arrive d'écrire des petits textes littéraires que j'appelle fragments littéraires gratuits. Et comme n'importe qui ayant lu quelques-uns d'entre eux l'aura forcément remarqué, je me gargarise prends un plaisir tout particulier à faire usage de courtes citations dans toutes sortes de langues — et en particulier dans toutes sortes d'alphabets non latins. (Je vois ça comme un hommage d'écrivain à la multiplicité des formes d'écriture inventés par l'Homme : que ceux qui ne savent pas lire cinquante langues se rassurent, moi non plus, et ce n'est jamais nécessaire pour comprendre le fragment.) Tant qu'il s'agit de faire de mes fragments littéraires une page HTML (lien ci-dessus), pas de difficulté : en HTML on peut librement utiliser le jeu de caractères universel Unicode, qui contient tous les alphabets dont j'ai envie (et bien d'autres), sauf le tengwar mais même pour ça on s'en sort en utilisant une région à usage privé — et c'est le boulot du navigateur qui est en face d'arriver à transformer le HTML que j'écris en quelque chose d'affichable à l'écran (notamment, c'est au lecteur qu'il appartient d'avoir les bonnes polices).

L'ennui, c'est que je veux aussi en générer (et si possible : de façon complètement automatisée) une version PDF, c'est-à-dire déjà mise en page et prête à l'impression, avec une typographie décente (voire, de qualité), avec une table des matières et tout et tout ; demander à un navigateur Web de faire le travail de mise en page (en imprimant vers du PDF) fournit, quel que soit le navigateur utilisé, un truc inacceptable.

Pour mettre en page de jolis documents, la solution — malheureusement fort archaïque — qui semble encore la meilleure, c'est (La)TeX (le logiciel de mise en page universellement utilisé, notamment, dans le monde de l'édition mathématique). Hélas, TeX a été conçu bien des années avant qu'Unicode ne dissipe par sa lumière bienfaisante les ténèbres de la confusion qui régnaient sur le monde des jeux de caractères, et par conséquent il ne connaît rien de tout ça. Et il n'est vraiment pas prévu pour les écritures allant de droite à gauche. Bien entendu, des polices et des jeux de macros (packages) LaTeX ont été créés pour taper du russe, du japonais, du grec, et même du sanskrit, de l'arabe, de l'hébreu et encore quantité d'autres langues (dont, d'ailleurs, les hiéroglyphes égyptiens — qui ne sont pas dans Unicode et ne sont hélas pas près d'y entrer). Mais ces packages se mélangent mal entre eux et il ne faut pas espérer pouvoir faire facilement un document mélangeant toutes ces langues : or c'est précisément ce que j'ai envie de faire.

Heureusement, tout de même, le monde de TeX n'a pas l'intention de rester indéfiniment privé de la clarté d'Unicode. Il y a plusieurs projets (naturellement subtilement semblables et pourtant profondément incompatibles) qui prétendent enrichir TeX, soit en adaptant le moteur sous-jacent soit en lui ajoutant toute une couche de macros, pour le rendre plus « Unicode-aware ». Parmi ces projets, il y a Omega, ou plutôt, Aleph (c'est en gros la même chose, disons qu'Omega est plus ou moins mort et Aleph a rassemblé les morceaux pour faire quelque chose de vaguement utilisable), ce que j'utilisais jusqu'à présent (actuellement, voici la version PDF de mes fragments). L'idée en est fort intéressante et séduisante, puisqu'il s'agit de rajouter à TeX tout un système d'automates finis qu'on peut empiler et qui font le travail de conversion des différentes formes d'Unicode entre elles ou de création des ligatures, ou de tout ce qu'on voudra ; malheureusement, le système n'est quasiment pas documenté donc excessivement difficile à utiliser, il s'interface assez mal avec les packages LaTeX tels que Babel (d'ailleurs, depuis une mise à jour récente de ma distribution TeX ça a tout simplement cessé de marcher) et il a l'air un peu (seulement un peu ?) à l'abandon.

Plus récemment, un autre projet est apparu qui semble à la fois plus simple (quoique moins puissant sur certains plans) et donc plus utilisable : il s'agit de XeTeX (le nom tend à rappeler qu'il sait écrire de droite à gauche). À la différence de TeX et Omega/Aleph, XeTeX prend le parti d'utiliser le même mécanisme de polices vectorielles qui est maintenant quasi universel en informatique : les polices TrueType (qui, elles aussi, sont bien postérieures à la conception de TeX et de son mécanisme de polices génériques pré-rastérisées, Metafont). C'est plutôt une bonne chose, parce qu'on a d'excellentes polices TrueType couvrant de larges régions d'Unicode. On m'a suggéré d'utiliser XeTeX plutôt qu'Aleph pour mettre en page mes fragments littéraires gratuits, et c'est ce que je vais faire.

Pour l'instant j'ai fait un essai (source ici) qui est assez concluant[#] : je ne sais pas faire correctement les ligatures requises par les langues indiennes, mais comme je n'ai pas encore cité de sanskrit ou de tamoul dans mes fragments ce n'est pas grave dans l'immédiat.

Ceci dit, si on en croit les nouvelles qui nous proviennent du futur, l'avenir de TeX devrait résider dans un moteur appelé LuaTeX, successeur de l'actuel PDFTeX, qui incorporerait également les extensions d'Aleph en rajoutant aux automates finis la possibilité d'interface avec le langage de programmation Lua : il ne reprendrait pas la suite de XeTeX mais devrait être capable de réaliser les fonctionnalités de celui-ci. Bon, ça c'est ce qu'on nous promet : je ne sais pas pour quand ce sera (if ever) ; en attendant cette merveille, XeTeX a l'air de ne pas être mal.

[#] J'attire notamment l'attention sur la citation en hébreu (ונפקחו עיניכם והייתם כאלהים), qui a été coupée correctement sur deux lignes, c'est-à-dire avec le début (ונפקחו עיניכם והייתם) sur une ligne, évidemment écrit de droite à gauche, et le dernier mot (כאלהים) sur la ligne suivante. Il ne suffit évidemment pas d'inverser l'ordre des caractères et de les écrire de gauche à droite, pour mettre correctement en page de l'hébreu (à l'intérieur d'un texte français) !

↑Entry #1451 [older| permalink|newer] / ↑Entrée #1451 [précédente| permalien|suivante] ↑

↓Entry #1139 [older| permalink|newer] / ↓Entrée #1139 [précédente| permalien|suivante] ↓

(jeudi)

J'apprends à écrire

Aujourd'hui, j'ai débuté un cours d'égyptien hiéroglyphique. (Il est vrai que c'est désespérément banal d'apprendre l'égyptien hiéroglyphique : le sumérien, ou le maya, au moins, ce serait un peu original, pour rester dans la catégorie des langues mortes à l'écriture pénible, et dont la grammaire est au moins aussi intéressante et riche, mais bon, je m'efforce d'apprendre des choses simples et utiles.) Le prof est intéressant (même s'il a un peu tendance à digresser). Aujourd'hui il nous a surtout résumé l'histoire de l'Égypte ancienne et de son langage et donné quelques rudiments sur l'écriture (surtout les signes phonétiques unilitères), et nous avons appris à écrire, par exemple, Anubis (enfin, Jnpw ou quelque chose de ce goût-là) en hiéroglyphes. L'ennui, c'est que comme c'est bien de l'écriture hiéroglyphique et pas hiératique qu'il s'agit, prendre des notes est un peu difficile ; il nous dit qu'il faut que nous nous formions une véritable écriture et que nous ne fassions pas des dessins, mais j'ai du mal à écrire, par exemple, un percnoptère (le hiéroglyphe représentant un son dont la valeur n'est d'ailleurs pas claire). Faire des tables grammaticales risque d'être un petit peu pénible.

Vivement que les hiéroglyphes (au moins les plus simples) soient dans Unicode ! Ce qui, malheureusement, n'est pas trop près d'arriver, malgré la proposition (à mes yeux ignares tout à fait bien convaincante) faite par le phénoménal Michael Everson. Comme une des choses qui font que la question n'avance pas est le manque d'égyptologues pour évaluer les problèmes (et notamment juger la proposition en question), je vais sans doute aborder le prof qui nous fait le cours pour lui demander s'il connaît des gens qui seraient prêts à se mettre en contact avec le consortium Unicode.

↑Entry #1139 [older| permalink|newer] / ↑Entrée #1139 [précédente| permalien|suivante] ↑

↓Entry #0936 [older| permalink|newer] / ↓Entrée #0936 [précédente| permalien|suivante] ↓

(vendredi)

Unicode Power

On m'a offert un énorme poster qui représente l'intégralité des caractères du plan 0 d'Unicode (4.0.1) ! C'est vraiment impressionnant à regarder, et surtout on se dit que le chinois prend de la place (surtout quand on pense qu'il y a encore beaucoup plus de caractères chinois dans le plan 2).

Bon, maintenant je me demande où je vais bien pouvoir afficher ça.

Voyez aussi ce site Web.

↑Entry #0936 [older| permalink|newer] / ↑Entrée #0936 [précédente| permalien|suivante] ↑

↓Entry #0926 [older| permalink|newer] / ↓Entrée #0926 [précédente| permalien|suivante] ↓

(jeudi)

J−1

Bon, normalement mon exposé est au point (c'est-à-dire autant qu'il le sera), j'ai fait une répétition hier où je ne m'en suis pas trop mal sorti, mes transparents sont nuls mais il faudra faire avec. J'ai récupéré le dossier de soutenance au service de la scolarité (une enveloppe scellée que je dois remettre au président du jury — je me demande bien ce qu'il y a dedans[#]), j'ai récupéré les exemplaires imprimés de mon mémoire (où j'ai consciencieusement inséré une feuille d'errata) et j'en ai distribué quelques-uns. Ma mère a confirmé pour le pot (cinquante personnes). Bref : tout est prêt, et j'en suis à m'ennuyer en attendant que le temps passe.

Je serai le premier de l'année 2005 à soutenir une thèse de maths à Orsay (ben oui, les thèses se font par saison — à cause de deadlines administratives débiles —, et je suis complètement hors-saison, là). Ah, et, je me demande si tout le monde arrivera à tenir dans la salle où a lieu la soutenance

J'espère par ailleurs que l'administration n'aura pas la bêtise de me chercher des ennuis parce que sur les papiers officiels j'ai indiqué mon sujet comme étant

Hypersurfaces cubiques: équivalence rationnelle, R-équivalence, et approximation faible

alors que sur le mémoire c'est

Hypersurfaces cubiques: R-équivalence, équivalence rationnelle et approximation faible

J'ai moyennement envie de soutenir une deuxième fois sur le même sujet en permutant deux termes.

Bon, pour parler d'autre chose que de ma thèse, voici quelques pointeurs Web. Je viens de jeter un coup d'œil aux images de la dernière édition de l'IRTC, c'est-à-dire janvier-février 2005, sur le thème Out of place, et je dois dire que les lauréats sont excellents : à la fois techniquement réussis, esthétiquement intéressants, et drôles ; je conseille donc de regarder ça (de façon générale les images de l'IRTC méritent l'attention, mais cette fournée me semble vraiment bien, sans doute parce que le sujet était propice à l'inspiration). Je viens aussi de découvrir un poisson d'avril qui fera rire tous ceux qui connaissent Boing Boing : Boring Boring (A Directory of Dull Things).

Je viens aussi de découvrir un passage de la toute nouvelle version (4.1.0) du standard Unicode (béni-soit-son-nom) qui m'a fait hurler de rire :

@		Gender symbols
26A2	DOUBLED FEMALE SIGN
	= lesbianism
26A3	DOUBLED MALE SIGN
	* a glyph variant has the two circles on the same line
	= male homosexuality
26A4	INTERLOCKED FEMALE AND MALE SIGN
	* a glyph variant has the two circles on the same line
	= bisexuality
26A5	MALE AND FEMALE SIGN
	= transgendered sexuality
	= hermaphrodite (in entomology)
26A6	MALE WITH STROKE SIGN
	= transgendered sexuality
26A7	MALE WITH STROKE AND MALE AND FEMALE SIGN
	= transgendered sexuality
26A8	VERTICAL MALE WITH STROKE SIGN
	= ferrous iron sulphate (alchemy and older chemistry)
26A9	HORIZONTAL MALE WITH STROKE SIGN
	= magnesium (alchemy and older chemistry)
@		Circles
26AA	MEDIUM WHITE CIRCLE
	= asexuality, sexless, genderless
	= engaged, betrothed
	* base for male or female sign
26AB	MEDIUM BLACK CIRCLE
	* UI symbol for record function
26AC	MEDIUM SMALL WHITE CIRCLE
	= engaged, betrothed (genealogy)
	* can represent wedding ring
@		Genealogical symbols
26AD	MARRIAGE SYMBOL
	x (infinity - 221E)
26AE	DIVORCE SYMBOL
	x (infinity negated with vertical bar - 29DE)
26AF	UNMARRIED PARTNERSHIP SYMBOL
	x (double-ended multimap - 29DF)
26B0	COFFIN
	= buried (genealogy)
	x (white rectangle - 25AD)
26B1	FUNERAL URN
	= cremated (genealogy)

À quand la marche des fiertés lesbienne, gaie, bi, trans, hermaphrodite, sulfate ferreux et magnésium ? À part ça, je trouve amusant de voir le Saint Standard donner dans le politiquement correct ; ils n'ont toujours pas ajouté, d'ailleurs, le svastika dans les symboles divers (alors qu'il y a plein de croix religieuses, il y a le symbole marteau-et-faucille, le symbole peace-and-love, yin-et-yang, et plein d'autres choses de ce genre, même, très récemment, la fleur-de-lis), je me demande si c'est parce qu'ils ont peur des réactions ou simplement parce que personne n'a fait de proposition formelle. Ah, et, par ailleurs, faudrait que je me dévoue pour faire une proposition qui se tienne pour ajouter les smileys dans Unicode (je veux dire, le « répertoire standard », c'est-à-dire les smileys qu'on retrouve en commun dans énormément de systèmes de communication électronique, ceux qui servent vraiment à transmettre des informations et pas à faire de l'ASCII-art).

[#] En fait, je soupçonne quand même que ce sont les rapports. Mais comme mes rapporteurs font de toute manière partie de mon jury de soutenance, ça n'a pas énormément de sens de me donner sous enveloppe scellée à leur remettre une copie des rapports qu'ils ont eux-mêmes écrit. Et je crois qu'après la soutenance j'aurai le droit de les voir, les rapports en question.

↑Entry #0926 [older| permalink|newer] / ↑Entrée #0926 [précédente| permalien|suivante] ↑

↓Entry #0889 [older| permalink|newer] / ↓Entrée #0889 [précédente| permalien|suivante] ↓

(jeudi)

J'ai fait des folies

J'avoue, j'ai craqué : comme mon ami Gaëtan a acheté le domaine ‽.com (prononcez interrobang[#] point com, et si votre browser ne supporte pas l'IDN essayez xn--fwg.com), j'ai fait à mon tour une folie, après un saut sur Domain Discount 24 (ils ont l'air plutôt pas mal comme registrar) je suis devenu pour quelques dizaines d'euros le détenteur de ⁂.com (prononcez astérisme point com, et si votre browser ne supporte pas l'IDN essayez xn--kwg.com).

Bon, pour l'instant, il n'y a rien à voir ; je ne suis même pas sûr d'avoir configuré le DNS correctement (ça fait très longtemps que j'ai appris ça, comme j'ai pondu les zone files en cinq minutes j'ai probablement fait une erreur stupide) et de toute façon les fichiers de zone ne sont pas encore mis à jour. Peut-être qu'à terme je mettrai vraiment quelque chose à cet endroit (le déplacement définitif de ce site, qui sait ?). Bien sûr, comme l'IDN n'est pas près d'être parfaitement géré partout, je me contenterai probablement de dire que l'adresse est xn--kwg.com et peu de gens sauront ce que ça veut dire. Pas même moi, d'ailleurs, parce que je n'ai aucune idée[#2] de ce que c'est qu'un(e?) astérisme, à part trois astérisques en triangle.

C'est ça qui est merveilleux avec Unicode, le nombre de caractères absolument bizarres qui ne servent à rien et dont personne n'a la moindre idée comment ils sont arrivés là. J'avoue avoir hésité entre ASTERISM et SOFTWARE-FUNCTION SYMBOL notamment. Et dire qu'il y a des gens sur la mailing-list Unicode en ce moment qui discutent de comment limiter les IDN à un sous-ensemble de caractères correspondant aux alphabets de langues effectivement utilisées, pour éviter des risques de confusion — mais ils veulent retirer tout ce qui est intéressant, ces idiots !

[#] Il y a pourtant d'autres fans de l'interrobang sur le Web, on dirait ‽ Tiens, il faudra que je parle mon projet de virgules d'interrogation et d'exclamation, un jour. 🤪

[#2] Bon, d'accord, c'est un terme d'astronomie pour désigner un motif d'étoiles très reconnaissable (comme la ceinture d'Orion, le ‘W’ de Cassiopée ou la casserole de la grande Ourse) à l'intérieur d'une constellation — ce n'est pas plus mal vu que je donne à mes ordinateurs des noms astronomiques. Mais je parle du symbole ‘⁂’ lui-même.

↑Entry #0889 [older| permalink|newer] / ↑Entrée #0889 [précédente| permalien|suivante] ↑

↓Entry #0876 [older| permalink|newer] / ↓Entrée #0876 [précédente| permalien|suivante] ↓

(Thursday)

Internationalized Domain Names

I thought it was still a project, but apparently it “already works”: I refer to Internationalized Domain Names (as defined by RFC 3490), or the possibility of inserting (almost arbitrary) Unicode characters in Internet domain names—that is, one can now buy not only domains with names such as myname.com but also those like мояфамилия.com; the way it works, really, is that when any IDN-compliant program encounters a domain name like мояфамилия.com, it transforms it into something cryptic like xn--80aqalcbm2c2fg.com (the encoding is an extremely complicated one, known as Punycode, which is described in RFC 3492) and then handles it as if the user had typed exactly that. So basically we could say that the Internet domain name registrars have found they could sell such absurd domain names as xn--80aqalcbm2c2fg.com by telling you that it really means мояфамилия.com and by persuading the authors of Web browsers and whatnots to perform the conversion. Ingenious.

All this means, of course, that people will abuse the system in every possible way. One question is whether character normalization prescribed by RFC 3454 (another unmanageably complicated specification) will actually be performed or whether it will turn out to be possible to register domain names such as goo<zero-width unbreakable space>gle.com or other idiotic things. Someone has already pointed out that it is possible to register paypal.com with a cyrillic ‘а’ instead of the second ‘a’, in other words paypаl.com, which really means xn--paypl-7ve.com (here, Mozilla is being overzealous: I actually write this as a link to http://www.xn--paypl-7ve.com/ and it displays it as a link to http://www.paypаl.com/; this would be acceptable behavior if I had written http://www.payp&#x430;l.com/—in HTML—or http://www.payp%D0%B0l.com/, but this is really going too far). IE, as usual, is saved by not adhering to standards. Ha, ha, ha.

Conversely, there may be rules about not registering domains of a single character, but what if someone wishes to register xn--2sx.com, literally? Well, it's been done already, it seems.

↑Entry #0876 [older| permalink|newer] / ↑Entrée #0876 [précédente| permalien|suivante] ↑

↓Entry #0853 [older| permalink|newer] / ↓Entrée #0853 [précédente| permalien|suivante] ↓

(mardi)

Avec quoi je perds mon temps…

Quand je ne regarde pas les immeubles se construire, j'ai d'autres façons de perdre mon temps. J'ai encore fait joujou avec Unicode en rassemblant un certain nombre de grandes traductions classiques des versets 7 et 8 du chapitre 11 de la Genèse[#] — d'aucuns s'amuseront sans doute à relever la fascination, bizarre pour un athée, que j'ai pour la Bible.

Dans un tout autre registre, j'ai programmé un jeu de Testris. Si vous ne connaissez pas Testris, il s'agit d'une variante de Tétris où l'ordinateur, plutôt que de tirer aléatoirement la pièce qui va tomber, essaie d'emmerder exprès le joueur en lui fournissant la pièce (ou une des pièces) qui l'arrange le moins. Comme ça, le sentiment paranoïaque qu'on a tous en jouant à Tétris (mais quand est-ce qu'il va me donner une barre ?) est enfin justifié. J'ai aussi écrit un jeu de Pentris, c'est-à-dire comme Tétris mais avec des pièces qui font cinq petits carrés au lieu de quatre, et c'est encore pire que Testris, en fait : toutes les pièces ont une forme À La Con® qui est gênante dans à peu près toutes les circonstances possibles. Enfin voilà, ceux qui ont un système Unix avec Gtk+2 installé peuvent essayer ces petits joujoux, les explications sont dans le source lui-même, et, comme c'est dit, c'est dans le Domaine Public si vous voulez en faire quelque chose.

Pendant tout ce temps, évidemment, je ne fais pas les choses que je devrais faire. J'ai plein de petites questions de maths sur lesquelles il faut que je réfléchisse, je vais bientôt avoir un sujet d'agreg blanc à corriger, j'ai des courses et du ménage à faire… Vive la procrastination ! Tiens, un de mes rapporteurs de thèse s'est réveillé, il m'a envoyé quelques pages de commentaires, mais ce ne sont pratiquement que des fautes d'orthographe ou de style à corriger : j'ose espérer que ça veut dire qu'il n'a pas trouvé d'erreur plus profonde que ça ! Si on en est à me dire que j'aurais dû écrire non-trivialité et pas non trivialité, c'est sans doute que le fond est parfait. ☺️

[#] J'ai d'ailleurs commis un péché (véniel) : l'utilisation (pour écrire le passage dans l'ancien alphabet hébreu, c'est-à-dire essentiellement l'alphabet phénicien) de caractères Unicode qui ont été approuvés par le Working Group mais qui ne sont pas encore officiellement partie du Standard. Il faudra donc encore un petit moment avant qu'on puisse espérer commencer à pouvoir lire (sur un browser quelconque) le premier passage de la page en question. Ça me donne envie, d'ailleurs, d'écrire un texte qui s'appellerait State of the Unicode Address où je dresserais le bilan de là où en est pour un certain nombre de problèmes ou de décisions politiques, ainsi que l'état des scripts que tout le monde attend (qui a dit hiéroglyphes ?). Récemment, par exemple, quelqu'un m'a demandé si les caractères elfiques (de Tolkien) étaient dans Unicode : la réponse est, comme trop souvent hélas : non, pas pour l'instant.

↑Entry #0853 [older| permalink|newer] / ↑Entrée #0853 [précédente| permalien|suivante] ↑

↓Entry #0843 [older| permalink|newer] / ↓Entrée #0843 [précédente| permalien|suivante] ↓

(lundi)

Vieux slavon, alphabet cyrillique, et Unicode

Un de mes amis (que je ne dénoncerai pas — appelons-le mystérieusement R… — mais que tous ceux qui le connaissent auront reconnu), qui est au moins autant que moi passionné par Unicode et par les langages bizarres ou confidentiels, s'est pointé avant-hier soir (lors de la petite soirée où nous célébrions le nouvel an) avec une grammaire du slavon liturgique. Le slavon est la langue d'où le russe moderne dérive ; il a été fixé par écrit (ainsi que les alphabets cyrillique et glagolitique à cet effet — on ne sait pas quel est le rapport précis entre eux) dans la traduction de la bible des fameux moines (frères) Cyrille et Méthode qui ont évangélisé la Russie à la fin du IXe siècle. Du « vieux » slavon est dérivé à la fois le slavon liturgique de l'église orthodoxe et le russe moderne ainsi que, essentiellement, les autres langues slaves.

Le russe moderne est déjà une langue fort difficile (pour les non-Russes) à cause de la complexité de son système morphologique (par exemple, des huit cas de l'indo-européen primitif, six sont en usage vivant : nominatif, accusatif, génitif, datif, instrumental et locatif — seuls l'ablatif et le vocatif ont été perdus). Le slavon, il est à craindre, est encore plus compliqué (mais pas démesurément non plus : à titre d'exemple, il n'y a qu'un cas de plus qu'en russe moderne, le vocatif, qui n'est pas terriblement dur à former ; la conjugaison des verbes, cependant, est plus délicate car il existe de vrais temps du passé alors que le russe moderne n'a gardé qu'une sorte de participe utilisé comme passé ; et l'existence en slavon d'un duel à côté du singulier et du pluriel complique aussi la morphologie). Cependant, il n'est pas complètement incompréhensible par quelqu'un qui connaît le russe (à titre d'exemple, de même qu'avec mes vagues rudiments d'italien et ce que je sais de latin j'arrive à déchiffrer quelques mots de Dante, de même, en ayant fait un peu de russe et en ayant des notions de grec ancien — notamment de quoi lire l'original du nouveau testament — je repère bien des formes claires dans le texte slavon de la bible). Et on peut espérer qu'en retrouvant l'origine étymologique de certaines bizarreries du russe le langage apparaîtra comme plus clair et pas moins. Quoi qu'il en soit, si j'ai le temps, je regarderai d'un peu plus près à quoi tout cela ressemble. Il existe un cours de vieux slavon en ligne.

Une chose qui frappe en premier abord, en tout cas, est la multiplicité des signes. L'alphabet cyrillique moderne a trente-trois lettres (si on distingue le ‘Ё’ du ‘Е’, comme je tiens à le faire, même si quasiment tous les textes russes imprimés ou manuscrits de nos jours omettent les deux points sur la lettre quand elle est prononcée ‘o’[#]) ; avant la réforme d'orthographe de 1917, il en avait quelques-unes de plus, notamment ‘І’ (remplacé partout par ‘И’ — causant notamment la fusion[#2] des mots міръ, le monde, et миръ, la paix, ceci dit ces mots sont de toute façon de même origine) et ‘Ѣ’ (remplacé partout par ‘Е’ — causant notamment la fusion des mots ѣсть, manger, et есть, il y a), et il y avait nettement plus de ‘Ъ’ (signes durs) que maintenant. Cet alphabet russe provenait lui-même d'une réforme (ou, en fait, plusieurs réformes successives) effectuée(s) par Pierre le Grand pour transformer l'alphabet du slavon liturgique en un véritable alphabet à usage civil. Car le slavon a un nombre assez considérable de lettres : R et moi n'avons pas réussi à en savoir le nombre précis car les grammaires se contredisent assez quant à la question de savoir ce qui est ou n'est pas la même lettre, et d'ailleurs la langue elle-même est parfois un peu floue (même si l'orthographe en slavon liturgique est rigoureusement fixée, il n'est pas toujours clair ce qui est une lettre différente et ce qui est une simple variante de position, et il n'est pas non plus clair ce qui est une ligature entre deux lettres et ce qui est une lettre à part entière), et il y a eu des changements au passage entre le vieux slavon (écrit en glagolitique ou dans la forme la plus ancienne de l'alphabet cyrillique) et le slavon liturgique figé (disons, vers le XVIIe siècle). Toute cette histoire est racontée de façon très claire (au moins autant que possible vue la complexité de l'affaire) et très intéressante dans ce texte sur l'encodage de l'ancien alphabet cyrillique en TeX et en Unicode. Les relations entre les lettres (surtout les voyelles) sont très compliquées. Par exemple, le ‘Я’ du russe moderne dérive, à l'époque de Pierre, à la fois du petit yus (‘Ѧ’, qui lui a à peu près donné sa forme) et du a yodifié (environ ‘ІА’) ligaturé (malheureusement non codé séparément dans Unicode) — et même du petit yus yodifié (‘Ѩ’) ligaturé — ces signes étant distincts mais très fortement liés dans l'écriture du slavon. De même, le nombre de lettres du slavon prononcées approximativement ‘(i)é’, entre le ‘Є’ (à ne pas confondre avec le ‘Э’ récent, qui est une invention de l'époque de Pierre), le ‘Е’ (en slavon liturgique — peut-être une simple variante d'écriture de la lettre précédente, mais peut-être pas), le ‘Ѥ’ (version yodifiée-ligaturée de ‘Є’), le ‘Ѣ’ (qui a survécu jusqu'en 1917) et même le ‘Ь’ (qui est maintenant un signe mou, mais qui à l'époque du vieux slavon était une véritable voyelle), cela fait beaucoup. J'aimerais bien arriver à me faire une idée un peu plus précise de toutes ces évolutions (notamment concernant les yus petit et grand, les yer dur et doux, et le yat, qui sont vraiment les signes distinctifs du cyrillique).

Je me demande si, dans le catalogue des objets inutiles et bizarres que je possède, je ne vais pas rajouter une édition de la bible en slavon. En attendant, pour ceux qui veulent voir à quoi ça ressemble, voici un échantillon (la première ligne, par exemple, accents omis, donne : И вѣ всѧ зємлѧ ѹстнѣ єдинѣ, и гласъ єдинъ всѣмъ.).

[#] Cela donne des choses assez cocasses. Par exemple, le dirigeant de l'URSS de 1953 à 1964, (Никита Сергеевич) Хрущёв, est appelé Khrouchtchev en français (Khrushchev en anglais) et la manière dont on lit ce nom n'a à peu près aucun rapport avec la prononciation russe d'origine, à commencer par le fait que la voyelle finale, transcrite en ‘e’, est un ‘o’ (et il porte l'accent tonique alors que les Anglais le mettent sur la première syllabe).

[#2] Autre chose cocasse : il paraît que le titre d'un célèbre roman de Tolstoï s'écrit Война и Міръ, c'est-à-dire La Guerre et le Monde et pas Guerre et Paix comme ce serait si ça s'écrivait avec un ‘И’, même si, évidemment, le jeu de mot est volontaire. Rectification (2005-05-20) : c'est probablement faux.

↑Entry #0843 [older| permalink|newer] / ↑Entrée #0843 [précédente| permalien|suivante] ↑

↓Entry #0815 [older| permalink|newer] / ↓Entrée #0815 [précédente| permalien|suivante] ↓

(Saturday)

All human beings… in Babel

More Unicode fun: here is the first article of the Universal Declaration of Human Rights, probably one of the most translated pieces of text ever, in a number of languages. The High Commissioner's Web site, where I got the texts, has the full declaration in vastly more languages, but, unfortunately, in many cases—especially the most interesting cases as far as Unicode is concerned—, we are given either a PDF file or an image scan of a printed version. This site also displays the article in question (using Unicode) in a great number of languages, but somtimes differs from the High Commissioner's text (for example for Thai or Vietnamese).

The Thai language gave me some trouble, because the source text is badly printed and badly scanned and the Thai script is pretty complex. I solved the problem by typing not the article itself, but the declaration's title (it's shorter and printed bigger, so that was much easier), and then searching for that in Google until I found a page which contained the text I was looking for (a secondary problem is that Thai doesn't seem too keen on word breaks).

The Yi syllables were even worse: at first I thought I could do the typing myself, but even for a mere thirty-six characters, the effort of visually pattern matching each tiny symbol from the source text against Unicode's array of over one thousand syllables was too much for me. And to make matters worse, Google refuses to search for Yi text—fortunately, though, AllTheWeb will do it. And I was lucky to find what is probably the only sample of Unicode-encoded Yi text fragment on the Web: the Yi version of Wikipedia, with a single page on it, and a single sentence on that page, namely, the sentence I was trying to encode! Still, doubt remains, because two of the glyphs do not match what I decipher on the text from the High Commissioner's Web site (the Wiki page says ꊿꂷꃅꃧꆘꐥ, ꌅꅍꀂꏽꐯꒈꃅꐥꌐ. ꊿꊇꉪꍆꌋꆀꁨꉌꑌꐥ, ꄷꀋꁨꂛꂰꅫꃀꃅꐥꄡꑟ. and I believe I read ꊿꂷꃅꃧꐨꐥ, ꌅꅍꀂꏽꐯꒈꃅꐥꌐ. ꊿꊇꉪꍆꌋꆀꁨꉌꑌꐥ, ꄷꀋꁨꂛꊨꅫꃀꃅꐥꄡꑟ. on the printed text—of course, it's all Yi to me); I have no idea whether the author of the Wiki page is fluent in Yi and obviously got it right, or is just another geek like me with a little more patience for matching glyphs against a table. Well, there's perhaps one chance out of two that I got the Yi text right. But I know at least of one potential reader of this blog who might be able to help me.

I'm disappointed that the High Commissioner did not provide a Cherokee version of the declaration. True, far fewer people speak Cherokee than Yi, but there's a much more developed Cherokee Wikipedia (ᏫᎩᏇᏗᏯ) than the Yi version: it has a whopping twenty-eight articles.

One last comment concerns the Armenian script. I find that alphabet amazing, not only for its intrinsic beauty, but also because it dazzles me in a strange way: it looks vaguely like the Latin script, except of course that I can't make heads or tails of it (to me it looks something like: fununu uwunnnh uqunulu wqwnu—and so on), so it's kind of tantalizing, much like the Voynich manuscript defies imagination.

הבה נרדה ונבלה שם שפתם אשר לא ישמעו איש שפת רעהו

Many thanks to Φ for pointing out to me the existence of the Code2000 font, which is remarkably complete (before this I didn't have any font to display Yi syllables or Cherokee). Even though I dislike shareware, I believe I'll send this guy (I mean, the font's author) a check. Combine with Yudit for best results.

↑Entry #0815 [older| permalink|newer] / ↑Entrée #0815 [précédente| permalien|suivante] ↑

↓Entry #0813 [older| permalink|newer] / ↓Entrée #0813 [précédente| permalien|suivante] ↓

(Friday)

A Unicode-obfuscated programming language proposal

I'm feeling geeky today, so here's a very geeky post.

People have invented vast repertoires of obfuscated programming languages (one of my favorite is Shakespeare), but none, so far, seems to make use of Unicode's great resources for obfuscation (except perhaps, with a remarkable amount of foresight, the infamous APL). So here are a few suggestions for a language that I think someone (but not me!) should have the patience to implement. Let's call it Юᓂ곧⎔ (U+042E CYRILLIC CAPITAL LETTER YU / U+14C2 CANADIAN SYLLABICS NI / U+ACE7 HANGUL SYLLABLE GOD / U+2394 SOFTWARE-FUNCTION SYMBOL) so (1) nobody will know how to pronounce it (except simply Unicode, which is confusing), (2) nobody will have the fonts to write it properly because nobody ever has a Canadian unified aboriginal syllabics font and a Hangul font and a font with this strange SOFTWARE-FUNCTION SYMBOL (even Microsoft's supposedly all-inclusive Arial Unicode font does not recognize that symbol), (3) it says NI and GOD at once, (4) it's another of these obnoxious names which includes symbols (like Divx;-)), and (5) I'm sure nobody has ever used that particular combination of Unicode characters before me (and Google agrees, of course).

Now most programming languages up to quite recently had the rule that only ASCII characters are allowed in source code (they will give you some stupid error like illegal character if you try). Юᓂ곧⎔, on the contrary, does not allow ASCII characters in source files (except for line feed). For example, instead of using the * (U+002A ASTERISK) character to denote multiplication as is done in C, one uses × (U+00D7 MULTIPLICATION SIGN). And of course, one does not write digits with the usual “European/Arabic” digits (they are in ASCII), rather, one uses Mongolian digits, so, for example, the Юᓂ곧⎔ code to store the product of 42 and 1729 in the temporary variable 無 would be: 無 ← ᠔᠒×᠑᠗᠒᠙।. More generally, here are the basic syntax rules of Юᓂ곧⎔:

  • Generic whitespace in the program must consist of U+00A0 NO-BREAK SPACE characters.
  • Instructions are separated by U+0964 DEVANAGARI DANDA. Code blocks start with U+2639 WHITE FROWNING FACE and end with U+263A WHITE SMILING FACE.
  • Function names must be written in Cyrillic, except for the reserved “main” function, which is called U+2302 HOUSE.
  • Function arguments start with U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK and end with U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK; they are separated with U+00A6 BROKEN BAR.
  • Global variable names must be written in the Hebrew alphabet.
  • Type names must be written in Ethiopic, except for certain reserved names like U+2124 DOUBLE-STRUCK CAPITAL Z for integers.
  • Local/temporary variables names are only one character which must be a CJK unified ideograph.
  • Function arguments are written in hiragana when the function is declared, and the corresponding name in katakana is used within the function definition.
  • Preprocessor directives are written in Runic. Comments start with U+275D HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT and end with U+275E HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT.
  • Decimal digits are Mongolian. For octal digits, one uses Yijing trigram symbols: U+2630 TRIGRAM FOR HEAVEN for the octal digit 0, U+2631 TRIGRAM FOR LAKE for the octal digit 1 and so on. For hexadecimal, one enters digits two at a time by using one of the 256 Braille patterns.
  • Character strings are written between U+201C LEFT DOUBLE QUOTATION MARK and U+201D RIGHT DOUBLE QUOTATION MARK, which can contain arbitrary Unicode characters, except for a few special characters (such as the quotes themselves) which must be prefixed with U+2041 CARET INSERTION POINT. One can also enter characters numerically (in decimal, octal or hexadecimal) by prefixing and postfixing the code with U+204C BLACK LEFTWARDS BULLET and U+204D BLACK RIGHTWARDS BULLET respectively: this is necessary to enter ASCII characters in a string (since ASCII can never be part of Юᓂ곧⎔ source code, even between quotes). For a single character (rather than a character string), use U+2018 LEFT SINGLE QUOTATION MARK and U+2019 RIGHT SINGLE QUOTATION MARK instead of double quotes.
  • The assignment operator is U+2190 LEFTWARDS ARROW. One can also reverse assignment and use U+2192 RIGHTWARDS ARROW. Addition, subtraction, multiplication and division are written U+2A22 PLUS SIGN WITH SMALL CIRCLE ABOVE, U+2212 MINUS SIGN, U+00D7 MULTIPLICATION SIGN and U+00F7 DIVISION SIGN (there are lots of other operators, too). The pointer to an object is obtained with U+261B BLACK RIGHT POINTING INDEX, and the pointed object by U+261A BLACK LEFT POINTING INDEX.

We conclude with the example of the usual Hello, world! program written in Юᓂ곧⎔:

⌂ «»

  писать «“⁌☱☱☰⁍⁌☱☴☵⁍⁌☱☵☴⁍⁌☱☵☴⁍⁌☱☵☷⁍⁌☰☵☴⁍⁌☰☴☰⁍⁌☱☶☷⁍⁌☱☵☷⁍⁌☱☶☲⁍⁌☱☵☴⁍⁌☱☴☴⁍⁌☰☴☱⁍␊”»।

↑Entry #0813 [older| permalink|newer] / ↑Entrée #0813 [précédente| permalien|suivante] ↑

↓Entry #0643 [older| permalink|newer] / ↓Entrée #0643 [précédente| permalien|suivante] ↓

(Monday)

How many strokes on the dollar sign?

A very important question for all of us professional hair-splitters out here: how many vertical strokes are there on a dollar sign (‘$’)? Unfortunately, this question admits no definite answer, since apparently both the single-stroke and double-stroke variants are equally correct. Nobody knows for sure what the origin of the symbol is: the most common theories seem to be that it is initially a deformed handwritten version of a ‘p’ with a superscript ‘s’ used as an abreviation of the plural “pesos”, or else that it comes from an ‘S’ with a superimposed ‘U’ (as a kind of monogram of the United States); if we believe one or the other, the single-stroke or double-stroke variant may be more correct—but it could be that both these theories are wrong (perhaps the symbol simply originates from an accounting sign like there were many at some time). I have checked typographic specimens of various typefaces, and the single-stroke version seems more common, but the double-stroke one is used in (at least certain modern versions of) Baskerville (regular but not semibold), Bembo, Caslon and Plantin; all “modern” typefaces, from Times to Stone (through Futura, Optima, Perpetua and Frutiger) use a double stroke, so it is probably safe to say that typographers have made their choice in favor of the single stroke. Also, the Unicode's standard display sample uses a single stroke (but this isn't very significant: they just took a standard Times font for such characters).

One could also ask how many horizontal strokes the pound sign (‘£’) is supposed to have (I refer to the real “pound sign”, not to the number sign, ‘#’ which some Americans confusingly call the pound sign, and which undoubtedly has two horizontal strokes and two vertical ones). I have no answer as to that, but the symbol of the yen (‘¥’) typically has two strokes, even though Unicode says: glyph may have one or two crossbars. There are always two bars on the symbol of the euro (‘€’)—however, the latter is not properly speaking a symbol, it is a logotype (in the sense that its design is fixed and defined by the European Union, it should not depend on the font). Speaking of currency sumbols, there is in ISO Latin-1 a symbol, ‘¤’, which is “CURRENCY SYMBOL” in Unicode, and also known (still according to the Unicode standard) as Filzlaus or Ricardi-Sonne (“Ricardi sun”? what the hell is that?), and I have no idea what it stands for or how it got there; it is sometimes confused with the euro sign, because the ridiculous Latin-9 encoding (which looks confusedly much like Latin-1) replaced the one with the other, and some fonts or systems fsck up between the two. I tend to use that strange ¤ sign as the symbol of the zorkmid which has gone into hacker jargon in phrases such as do not pass go, do not collect two hundred zorkmids.

Maybe some other time I'll speak about the ampersand (‘&’), which is originally a handwritten form of “et”, or the at sign (‘@’), which comes from “ad”, or again the slash sign (‘/’), which is properly called a solidus (that's what Unicode calls it) or virgule (another confusing name, because in French it refers to a comma). Or about that number sign (‘#’) which goes by so many different names (the most ridiculous being “shibboleth”). Read more about all this in the Jargon file.

↑Entry #0643 [older| permalink|newer] / ↑Entrée #0643 [précédente| permalien|suivante] ↑

↓Entry #0402 [older| permalink|newer] / ↓Entrée #0402 [précédente| permalien|suivante] ↓

(vendredi)

L'arnaque des SMS

L'envoi d'un SMS depuis mon mobile, d'après la brochure officielle des prix de mon opérateur, coûte 0.15€. Sachant qu'un SMS peut comporter jusqu'à 160 caractères (limitation complètement ridicule s'il en est), cela nous donne un prix de 1006633€ pour un giga-octet. Un million d'euros le giga-octet ! Comparez ça au prix au giga-octet d'à peu près n'importe quel autre canal de communication ou support de stockage : c'est une arnaque absolument monstrueuse.

Je ne sais pas comment est comprimé le son sur les téléphones mobiles, mais je doute très fortement qu'on soit en-dessous de 1kbps (ce qui représenterait déjà un rapport de compression de plus de 50 par rapport au son échantillonné à 8kHz en mono, 8 bits par échantillon). Autrement dit, une minute de communication, facturée 0.48€ par le même opérateur, échange au minimum l'équivalent d'une cinquantaine de SMS, quasiment un par seconde. Mais les prix sont loin d'être dans le même rapport, la minute ne coûtant que le triple du prix du SMS. Comme je doute que le service vocal soit vendu à prix coûtant, cela signifie qu'au moins 90% du prix du SMS (et ceci est une borne inférieure très large) est du pur profit pour l'opérateur. Pas surprenant, ensuite, qu'on cherche à promouvoir le SMS comme un mode de communication djeunz et branchouille. Hallucinante arnaque.

Question subsidiaire : le manuel de mon téléphone parle de caractères Unicode pour désigner les caractères accentués qu'on peut mettre dans les SMS. Il s'agit cependant d'un jeu très restreint de caractères, ne couvrant même pas tout iso-latin-1 et assurément pas une proportion non ridicule d'Unicode. Cependant, il n'est pas clair si c'est parce que le téléphone juste ne permet de saisir qu'un ensemble très limité de caractères (et peut-être ne sait afficher qu'eux) ou si le « standard » SMS est intrinsèquement limité. La mention d'Unicode me laisserait espérer qu'ils ont pris la bonne décision, à savoir encoder les SMS en Unicode (disons utf-8 ou utf-16 — dans ce dernier cas il faudrait diviser par deux mon estimation du prix au giga-octet, d'ailleurs ; mais je crois que c'est bien 160 octets d'utf-8, en fait). Est-ce le cas ? J'aimerais bien pouvoir tester la réception d'un SMS contenant des caractères un peu exotiques pour savoir ce que mon téléphone en fait. Comment ces choses-là se passent-elles au Japon, d'ailleurs, par exemple ?

↑Entry #0402 [older| permalink|newer] / ↑Entrée #0402 [précédente| permalien|suivante] ↑

↓Entry #0373 [older| permalink|newer] / ↓Entrée #0373 [précédente| permalien|suivante] ↓

(dimanche) · Premier Quartier

Yudit

[English translation follows.] J'avais déjà essayé ce petit éditeur, mais c'était il y a longtemps, et j'avais complètement oublié son existence. Un ami vient de me le rappeler à l'esprit. En tant qu'éditeur proprement dit, Yudit est assez minable, mais il a quelque chose qu'à peu près aucun autre n'a : un support considérable pour Unicode, et là je n'en connais pas d'aussi bon, donc je tiens à propager l'information.

[Traduction anglaise de ci-dessus.] I had aleady tried this little editor, but it was a long time ago, and I had completely forgotten its existence. A friend just reminded it to me. As an editor proper, Yudit is rather bad, but it has something that almost no other editor has: extensive Unicode support, and since I know nothing better, I wish to pass on the information.

↑Entry #0373 [older| permalink|newer] / ↑Entrée #0373 [précédente| permalien|suivante] ↑

↓Entry #0243 [older| permalink|newer] / ↓Entrée #0243 [précédente| permalien|suivante] ↓

(Tuesday) · Autumnal Equinox (2003-09-23T10:46:44.54Z)

The Unicode standard, version 4.0

I have just received from Amazon.com my copy of the Unicode standard, version 4.0. For those who do not know what this is, the Unicode standard is, in a nutshell, a computer standard that seeks to provide a uniform encoding (computer representation) for all human scripts, past and present—an infinite job, of course, that will never be complete, but which is nevertheless proceeding at its own pace. Unicode is what permits any well-conceived computer file format, for example any HTML page, to contain characters, even mixed, from an incredible variety of alphabets and scripts; you can test your system's Unicode conformance (browser and scripts) by viewing this Unicode test page, which gives a small sample of Unicode from a few different scripts, together with images of what they should look like. Before Unicode, it was certainly possible to write an HTML page, say, in Japanese, or in Hindi, but it was impossible to write one that contained both Japanese and Hindi (in the same file).

But this Standard, and, beyond the standard itself, the 1500-pages printed form of the standard—the book I just bought—is truly amazing. This is a book about Writing (with a capital ‘W’), a beautiful one, and, turning its pages, one discovers many an elegant and artistic script, whose very existence had sometimes gone unsuspected (I had certainly never heard of Shavian until I learned about it from Unicode; actually, I hadn't even heard of Yi either, which is less forgivable). Have you ever beheld the strange serpent-like signs of Syriac? The graceful curves of Gujarati? The strange loops of Georgian? The treelike glyphs of Ethiopic? The deceptively simple Cherokee? The mysterious pictures of Linear B ? If not, you should have a look at the Standard (all of whose pages can be found in PDF format on the Unicode Web site).

The Unicode standard is one of Man's dreams: one standard to rule all scripts. It is also an endless pursuit: version 3.0 of the Standard (which I had also bought in printed form) already contained 27496 Chinese ideograms (simplified and unsimplified alike), and version 3.1 added another 42711 to these, making a total of 70207—probably the single largest collection of Chinese ideograms ever compiled, more than any dictionary ever published, or any collection of printer's glyphs; and rest assured that more ideograms will yet be found and added to the Standard.

But there are also important omissions in Unicode. The largest and most remarkable one is probably that of Egyptian hieroglyphic: it will certainly take years of work before a decent repertoire of glyphs for Egyptian can be added to the standard, even as a start. (I look forward to the day when I can quote the Book of the Dead in the original in my Web pages—and have it display correctly everywhere!) Unicode guru Michael Everson has written a very interesting note, Leaks in the Unicode Pipeline: Script, Script, Script…, on some of the scripts that remain to be encoded and how difficult it will be to include them someday. Well, good luck with this heroic task!

↑Entry #0243 [older| permalink|newer] / ↑Entrée #0243 [précédente| permalien|suivante] ↑

↓Entry #0175 [older| permalink|newer] / ↓Entrée #0175 [précédente| permalien|suivante] ↓

(Monday)

Adding a favicon

無Maybe you can now see a little icon appear somehow associated with my Web pages in your Web browser (Mozilla, for one, should display it next to the URL in the location bar, and on tab thumbnails): to the left is a slightly larger version of it. Since Asa Dotzler says he recommends Web sites to have some favicon, I decided I might as well try. I don't really like this thing, though: for one thing, sixteen-by-sixteen pixels is too small for any useful image, and besides I'm supposed to use some obscure Microsoft-invented image format that apparently doesn't even support full alpha channels (only all-or-nothing transparency, so I'm not putting any transparency, because the alias effect would be awful). Not having any idea what I could use as icon, I decided to take this Chinese ideogram (U+7121 in Unicode: 無; this is actually the unsimplified, or Taiwanese, form), pronounced “wu” in Mandarin Chinese and “mu” in Japanese, which has an important association with Zen buddhism. It just means something like “no” or “nothing”, which is probably appropriate since I couldn't think of anything else to put up there.

↑Entry #0175 [older| permalink|newer] / ↑Entrée #0175 [précédente| permalien|suivante] ↑

↓Entry #0168 [older| permalink|newer] / ↓Entrée #0168 [précédente| permalien|suivante] ↓

(Sunday)

Smileys

I find that I really can't live without these lil' guys 😉. But while I use them all the time in plain text, on an HTML file it doesn't do to write something like “:-)” for a happy smiley. Up to now I used the great and mighty Unicode, but Unicode only has U+2639 WHITE FROWNING FACE and U+363A WHITE SMILING FACE as smileys go, which is a bit meager ☹️ (anyone care to submit to the Unicode/ISO-10646 Joint Technical Committee a repertoire of a couple thousand smileys that they might insert in Unicode plane 3 or 4? after all, with all the useless junk that goes in Unicode, a couple thousand smileys won't matter much, and they put all the 易經 hexagrams, which may be only 64 in number, but it's a kind of precedent). Besides, not everyone has the font to display even those characters, and some may just see a box instead (here is a WHITE SMILING FACE between quotes: “☺”).

So I did what everyone does, I got a bunch of smiley images (from PHPbb) and I'll be using them. ☺️

And, yes, I'll be really careful not to overuse them. I hate smiley excess just as much as the next man: they can get really distracting. But this entry is an exception, because it's precisely the point. 😁

Since I found them with PHPbb, these smileys (which are Copyright © their legitimate Copyright owner) are covered, as far as I know, free: you can redistribute them and/or modify them under the terms of the GNU General Public License; they are distributed in the hope that they will be useful, but without any warranty, without even the implied warranty of representing my emotions at the time of writing. 🤪

↑Entry #0168 [older| permalink|newer] / ↑Entrée #0168 [précédente| permalien|suivante] ↑