Pourquoi le texte stylé compte pour deux caractères dans un SMS
Le gras, l’italique et le script ne sont pas du texte mis en forme : ce sont des caractères Unicode à part, situés hors de la plage que la plupart des systèmes comptent comme une seule unité — d’où un SMS ou une bio à limite stricte qui se remplit plus vite que les lettres visibles ne le laissent penser.
Tapez une phrase en 𝗴𝗿𝗮𝘀 ou en 𝒮𝒸𝓇𝒾𝓅𝓉 dans un SMS ou dans une bio à limite de caractères, et il peut manquer de place nettement plus tôt que les mêmes mots en lettres ordinaires — parfois en coupant un SMS en deux, parfois en tronquant une bio en plein milieu d’un mot. Les lettres que vous voyez ne mentent pas. Ce qui change, c’est la façon dont elles sont stockées en coulisses, et cela vaut la peine d’être compris avant de conclure que l’app est cassée ou que la limite a rétréci.
Une lettre est un nombre, et certains nombres pèsent plus lourd
Chaque caractère qu’un ordinateur manipule — une lettre, un chiffre, un emoji — est en réalité un nombre en coulisses, appelé point de code. Les 65 536 premiers de ces nombres forment ce qu’Unicode appelle le Plan multilingue de base, et il couvre l’immense majorité de ce que tout le monde tape au quotidien : l’alphabet latin, les lettres accentuées, la plupart des autres écritures, la ponctuation courante. Les systèmes qui stockent le texte en unités de 16 bits, ce qui inclut une bonne partie de ce qui fait fonctionner un SMS ou un formulaire web, représentent n’importe quel caractère de cette plage avec une seule unité.
Un plus petit nombre de blocs Unicode se trouvent au-dessus de cette plage, et un caractère venu de l’un d’eux a besoin de deux unités de 16 bits au lieu d’une — une paire, plutôt qu’une seule valeur — pour être représenté de la même façon. Visuellement, cela reste une seule lettre à l’écran. En coulisses, cela prend deux fois plus de place, et tout ce qui compte dans ces unités le compte comme deux.
Où se situent les styles de texte stylé
Le gras, l’italique, le gras italique, le script et le double-struck ne sont pas l’alphabet ordinaire affublé d’une étiquette de style : chaque lettre est un caractère à part, appartenant à un bloc Unicode appelé Mathematical Alphanumeric Symbols, ajouté à l’origine pour que les articles de mathématiques puissent distinguer un vecteur en gras d’un scalaire en italique en texte brut. Ce bloc se trouve au-dessus du Plan multilingue de base. Taper une lettre en gras ne produit toujours qu’un seul caractère — rien n’est ajouté, contrairement à la marque de barré qui vient se greffer sur une lettre — mais ce caractère unique pèse plus lourd. Un 𝐁 est une lettre visible et deux unités de stockage, le même type de coût qu’un emoji, et tout compteur qui travaille dans ces unités — ce qui décrit une bonne partie des logiciels derrière les SMS, les formulaires et les légendes à limite stricte — lit deux caractères pour chaque lettre visible.
Où cela se voit vraiment
Les SMS
Un SMS ordinaire utilise un alphabet ancien sur 7 bits qui fait tenir 160 caractères dans un seul message. Dès que le message contient un caractère hors de cet alphabet — ce qui est le cas de toute lettre stylée, et de la plupart des emoji aussi — le message entier bascule vers un encodage Unicode, et la limite d’un seul segment passe de 160 à 70. Le téléphone continue à l’afficher comme un seul message pendant que vous tapez, puis l’envoie discrètement en deux segments ou plus s’il dépasse cette limite plus basse, et chaque segment supplémentaire est un message à part côté envoi comme côté réception. Deux ou trois mots en gras ou en script suffisent souvent à faire basculer un message par ailleurs court au-delà de cette ligne. iMessage, qui passe par les données plutôt que par le canal SMS de l’opérateur, n’a pas cette limite précise — l’arithmétique des segments est propre au SMS et au MMS.
Les bios et légendes à limite stricte
Le même calcul se retrouve partout où une plateforme mesure la longueur en unités de 16 bits plutôt qu’en ce qu’on appellerait une lettre visible — un champ de bio, une légende, un formulaire avec un compteur qui décroît pendant que vous tapez. La méthode de comptage exacte d’une app donnée n’est presque jamais publiée nulle part où le vérifier à l’avance, et elle peut changer. L’hypothèse prudente est la même que pour les SMS : une ligne truffée de lettres stylées peut atteindre sa limite plus tôt que les mêmes mots en texte ordinaire, jamais plus tard.
Tous les styles ne font pas ça
Cela concerne spécifiquement les styles construits à partir de caractères situés hors du Plan multilingue de base — le gras, l’italique, le gras italique, le script et le double-struck entre autres. D’autres styles stylés correspondent à des caractères déjà présents dans ce plan et ne coûtent rien de plus : les petites capitales et le texte large, par exemple, sont des caractères ordinaires à une seule unité, simplement peu courants. Le barré, lui, allonge le texte pour une raison totalement différente — une marque combinante ajoutée après chaque lettre plutôt qu’une lettre remplacée — un mécanisme à part, avec son propre coût, distinct de celui-ci.
Où Kibo s’inscrit là-dedans
Kibo embarque douze styles de texte stylé directement sur le clavier, appliqués au fil de la frappe plutôt que via un générateur web à copier-coller : gras, italique, gras italique, script, double-struck, mono, petites capitales, large, cerclé, encadré, à l’envers et barré. Aucun clavier ne change la façon dont l’app qui reçoit compte ce qui arrive ; ce calcul appartient à Unicode et à l’endroit où vous écrivez. Ce que fait Kibo, c’est convertir toutes les lettres qu’il peut et laisser le reste en texte ordinaire et lisible plutôt qu’en carré vide, et rien de tout cela n’a besoin de l’accès complet — cet interrupteur n’est lu que par les boutons Copier le mot, Copier la ligne et Coller de sa barre d’outils. Il est gratuit.
Questions fréquentes
Le gras ou le texte stylé compte-t-il vraiment pour deux caractères ?
Pour les styles construits à partir du bloc Unicode Mathematical Alphanumeric Symbols — gras, italique, gras italique, script et double-struck — oui, dans tout système qui compte le texte en unités de 16 bits. Chaque lettre visible a besoin de deux de ces unités au lieu d’une, donc un compteur qui fonctionne ainsi lit deux caractères.
Pourquoi mon SMS s’est-il coupé en deux messages avec des lettres stylées ?
Un SMS passe d’une limite de 160 caractères à une limite de 70 dès qu’il contient un caractère hors de l’ancien alphabet sur 7 bits, ce qui inclut toute lettre stylée et la plupart des emoji. Un message court en texte stylé peut franchir cette limite plus basse et partir en deux segments au lieu d’un.
Quels styles de texte stylé n’ont pas ce problème ?
Les petites capitales et le texte large correspondent à des caractères déjà présents dans le Plan multilingue de base, donc ils ne coûtent rien de plus. Le barré allonge bien le texte, mais pour une autre raison — une marque combinante posée sur chaque lettre plutôt qu’un caractère distinct qui la remplace.
Essayez-le sur votre propre clavier
Kibo est un clavier personnalisé gratuit pour iPhone : de vrais sons mécaniques, des thèmes au choix et des effets lumineux RGB. Sans compte, sans publicité, et il fonctionne avec l’accès complet désactivé.