Vai al contenuto principale
Questa pagina descrive come vengono considerati i caratteri durante la composizione dei Tweet e nell’intera X API. Per ulteriori informazioni sull’implementazione, X mette a disposizione la libreria open source twitter-text, disponibile su GitHub.

Contesto

X è nata come servizio basato su SMS. Questo limitava la lunghezza originaria dei Tweet a 140 caratteri (in parte determinata dal limite di 160 caratteri degli SMS, con 20 caratteri riservati a comandi e nomi utente). Con l’evoluzione di X, nel tempo la lunghezza massima dei Tweet è passata a 280 caratteri: ancora breve e concisa, ma tale da consentire una maggiore espressività.

Definizione di carattere

Nella maggior parte dei casi, il contenuto testuale di un Tweet può contenere fino a 280 caratteri o glifi Unicode. Alcuni glifi vengono conteggiati come più di un carattere. Chiamiamo peso il fatto che un glifo valga uno o più caratteri. La definizione esatta di quali caratteri hanno un peso superiore a uno è disponibile nel file di configurazione della libreria di parsing dei Tweet twitter-text. La versione attuale del file di configurazione definisce un peso predefinito di due caratteri e quattro intervalli di code point Unicode con pesi differenti. Attualmente i code point in questi intervalli sono conteggiati come un singolo carattere.
  • Il primo intervallo copre caratteri delle code page Latin-1 (U+0000 - U+10FF).
  • Il secondo intervallo riguarda la punteggiatura generale fino a includere lo Zero Width Joiner (usato per combinare emoji e altri glifi) (U+2000-U+200D).
  • Il terzo intervallo riguarda la punteggiatura generale, escludendo U+200E e U+200F, che sono marcatori direzionali Unicode (U+2010-U+201F).
  • L’ultimo intervallo copre i segni di citazione (U+2032-U+2037).
Esempi di testo di Tweet e lunghezze calcolate dalla libreria twitter-text sono disponibili nel file di configurazione dei test validate.yml della libreria. Esempi
Carattere visualizzatoLunghezzaDescrizioneSequenza Unicode
a1Lettera minuscola latina aU+0061
á1Lettera minuscola latina a con accento acutoU+00E1
ӑ1Lettera minuscola cirillica a con breveU+04D1
1Lettera maiuscola latina o con circonflesso e accento acutoU+1ED2

Emoji

Gli emoji supportati da twemoji contano sempre come due caratteri, indipendentemente dai modificatori combinati. Questo include emoji modificati dal tono della pelle Fitzpatrick o da modificatori di genere, anche se sono composti da un numero significativamente maggiore di code point Unicode. Il peso degli emoji è definito da un’espressione regolare in twitter-text che individua sequenze di emoji standard combinate con uno o più Zero Width Joiner Unicode (U+200D). Esempi
Emoji visualizzatoLunghezzaDescrizioneSequenza Unicode
👾2Lunghezza predefinita degli emoji noti
🙋🏽2Emoji con modificatore del tono della pelle🙋 U+1F64B, 🏽 U+1F3FD
👨‍🎤2Sequenza di emoji che utilizza un glifo combinante (zero-width joiner)👨 U+1F468, U+200D, 🎤 U+1F3A4
👨‍👩‍👧‍👦2Sequenza di emoji che utilizza più glifi combinanti (zero-width joiners)👨 U+1F468, U+200D, 👩 U+1F469, U+200D, 👧 U+1F467, U+200D, 👦 U+1F466

Glifi cinesi / giapponesi / coreani

I glifi utilizzati nelle lingue CJK (cinese / giapponese / coreano) contano anch’essi come due caratteri. Pertanto, un Tweet composto esclusivamente da testo CJK può includere al massimo 140 di questi glifi.

Oggetti Entity

I Tweet possono contenere Oggetti Entity, alcuni dei quali influiscono sulla lunghezza di un Tweet. URL: Tutti gli URL vengono trasformati in link t.co. Ciò significa che la lunghezza di un URL è determinata dal parametro transformedURLLength nel file di configurazione di twitter-text. La lunghezza attuale di un URL in un Tweet è di 23 caratteri, anche se l’URL originale sarebbe più corto. Risposte: i @nomi che si compilano automaticamente all’inizio di un Tweet di risposta non vengono conteggiati nel limite di caratteri. I nuovi Tweet non di risposta che iniziano con una @menzione vengono conteggiati, così come le @menzioni aggiunte esplicitamente dall’utente nel corpo del Tweet. Media: i contenuti multimediali allegati a un Tweet, rappresentati come un URL pic.x.com, se pubblicati da un client ufficiale, contano per 0 caratteri. Per ulteriori informazioni sugli Oggetti Entity, consulta la documentazione per sviluppatori.

Codifica dei caratteri di X

Gli endpoint della X API accettano solo testo codificato in UTF-8. Tutte le altre codifiche devono essere convertite in UTF-8 prima di inviare il testo all’API. X calcola la lunghezza di un Tweet utilizzando il testo normalizzato in formato NFC (Normalization Form C). Ad esempio: la parola “café”. Esistono due sequenze di byte che visivamente appaiono e si leggono allo stesso modo, ma utilizzano un numero diverso di byte:
café0x63 0x61 0x66 0xC3 0xA9Utilizzando il carattere “é”, il “carattere composto”.
café0x63 0x61 0x66 0x65 0xCC 0x81Utilizzando il diacritico combinante, che si sovrappone alla “e”.
La Normalization Form C privilegia l’uso di un carattere completamente combinato (0xC3 0xA9 nell’esempio di café) rispetto alla versione estesa (0x65 0xCC 0x81). X conta il numero di punti di codice nel testo, anziché i byte UTF-8. Il 0xC3 0xA9 nell’esempio di café è un punto di codice (U+00E9) codificato come due byte in UTF-8, mentre 0x65 0xCC 0x81 sono due punti di codice codificati come tre byte.
I