Passer au contenu principal
Cette page explique comment les caractères sont pris en compte lors de la rédaction de Tweets et dans l’ensemble de la X API. Pour plus d’informations sur l’implémentation, X met à disposition la bibliothèque open source twitter-text, disponible sur GitHub.

Contexte

X a débuté comme un service basé sur les SMS. Cela limitait la longueur des Tweets à 140 caractères (en partie en raison de la limite de 160 caractères des SMS, dont 20 étaient réservés aux commandes et aux noms d’utilisateur). Au fil du temps, à mesure que X a évolué, la longueur maximale d’un Tweet est passée à 280 caractères — toujours brève et concise, mais permettant davantage d’expression.

Définition d’un caractère

Dans la plupart des cas, le contenu textuel d’un Tweet peut contenir jusqu’à 280 caractères ou glyphes Unicode. Certains glyphes comptent pour plus d’un caractère. Nous appelons poids le fait qu’un glyphe compte pour un ou plusieurs caractères. La définition exacte des caractères dont le poids est supérieur à un caractère se trouve dans le fichier de configuration de la bibliothèque d’analyse de Tweets twitter-text. La version actuelle du fichier de configuration définit un poids par défaut de deux caractères et quatre plages de points de code Unicode pondérées différemment. Actuellement, les points de code dans ces plages sont tous comptés comme un seul caractère.
  • La première plage couvre des caractères des jeux de codes Latin‑1 (U+0000 - U+10FF).
  • La deuxième plage correspond à la ponctuation générale jusqu’au Zero Width Joiner inclus (utilisé pour combiner des émojis et d’autres glyphes) (U+2000-U+200D).
  • La troisième plage correspond à la ponctuation générale à l’exception de U+200E et U+200F, qui sont des marques directionnelles Unicode (U+2010-U+201F).
  • La dernière plage couvre les guillemets (U+2032-U+2037).
Des exemples de texte de Tweet et de longueurs calculées par la bibliothèque twitter-text sont disponibles dans le fichier de configuration de test validate.yml de la bibliothèque. Exemples
Caractère affichéLongueurDescriptionSéquence Unicode
a1Lettre minuscule latine aU+0061
á1Lettre minuscule latine a avec accent aiguU+00E1
ӑ1Lettre minuscule cyrillique a avec brèveU+04D1
1Lettre majuscule latine O avec accent circonflexe et accent aiguU+1ED2

Emoji

Les emoji pris en charge par twemoji comptent toujours pour deux caractères, quels que soient les modificateurs combinés. Cela inclut les emoji modifiés par les teintes de peau de Fitzpatrick ou les modificateurs de genre, même s’ils sont composés d’un nombre nettement plus important de points de code Unicode. Le poids des emoji est défini par une expression régulière dans twitter-text qui recherche des séquences d’emoji standard combinées à un ou plusieurs « Zero Width Joiners » Unicode (U+200D). Exemples
Emoji affichéLongueurDescriptionSéquence Unicode
👾2Longueur par défaut des emoji connus
🙋🏽2Emoji avec modificateur de teinte de peau🙋 U+1F64B, 🏽 U+1F3FD
👨‍🎤2Séquence d’emoji utilisant un glyphe de combinaison (jointure sans chasse)👨 U+1F468, U+200D, 🎤 U+1F3A4
👨‍👩‍👧‍👦2Séquence d’emoji utilisant plusieurs glyphes de combinaison (jointures sans chasse)👨 U+1F468, U+200D, 👩 U+1F469, U+200D, 👧 U+1F467, U+200D, 👦 U+1F466

Glyphes chinois / japonais / coréens

Les glyphes utilisés dans les langues CJK (chinois / japonais / coréen) comptent également pour deux caractères. Par conséquent, un Tweet composé uniquement de texte CJK ne peut contenir qu’un maximum de 140 glyphes de ce type.

Objets d’entité

Les Tweets peuvent contenir des objets d’entité, dont certains influent sur la longueur d’un Tweet. URL : Toutes les URL sont encapsulées dans des liens t.co. Cela signifie que la longueur d’une URL est définie par le paramètre transformedURLLength dans le fichier de configuration twitter-text. La longueur actuelle d’une URL dans un Tweet est de 23 caractères, même si l’URL serait normalement plus courte. Réponses : les @noms qui sont renseignés automatiquement au début d’un Tweet en réponse ne comptent pas dans la limite de caractères. Les nouveaux Tweets qui ne sont pas des réponses et qui commencent par une @mention compteront, tout comme les @mentions ajoutées explicitement par l’utilisateur dans le corps du Tweet. Médias : les médias joints à un Tweet, représentés sous forme d’URL pic.x.com s’ils sont publiés depuis un client officiel, comptent pour 0 caractère. Pour en savoir plus sur les objets d’entité, consultez la documentation développeur.

Encodage des caractères sur X

Les endpoints de la X API n’acceptent que du texte encodé en UTF-8. Tous les autres encodages doivent être convertis en UTF-8 avant d’envoyer le texte à l’API. X calcule la longueur d’un Tweet à partir du texte normalisé en forme C (NFC). Par exemple : le mot « café ». Il existe deux séquences d’octets qui paraissent et se lisent de la même manière, mais qui utilisent un nombre d’octets différent :
café0x63 0x61 0x66 0xC3 0xA9En utilisant le caractère « é », le « caractère composé ».
café0x63 0x61 0x66 0x65 0xCC 0x81En utilisant le diacritique combinant, qui se superpose au « e »
La forme de normalisation C privilégie l’utilisation d’un caractère entièrement composé (0xC3 0xA9 dans l’exemple de « café ») par rapport à la version décomposée (0x65 0xCC 0x81). X compte le nombre de points de code dans le texte, plutôt que les octets UTF-8. Le 0xC3 0xA9 de l’exemple « café » correspond à un point de code (U+00E9) encodé sur deux octets en UTF-8, tandis que 0x65 0xCC 0x81 correspond à deux points de code encodés sur trois octets.
I