Pular para o conteúdo principal
Esta página descreve como os caracteres são tratados ao compor Tweets e na X API. Para mais informações sobre a implementação, a X disponibiliza a biblioteca de código aberto twitter-text, que pode ser encontrada no GitHub.

Contexto

X começou como um serviço baseado em SMS. Isso limitava o tamanho original de um Tweet a 140 caracteres (em parte por causa do limite de 160 caracteres do SMS, com 20 reservados para comandos e nomes de usuário). Com o tempo, à medida que X evoluiu, o tamanho máximo de um Tweet aumentou para 280 caracteres — ainda curto e conciso, mas permitindo mais expressão.

Definição de um caractere

Na maioria dos casos, o conteúdo de texto de um Tweet pode conter até 280 caracteres ou glifos Unicode. Alguns glifos contam como mais de um caractere. Chamamos de peso o fato de um glifo contar como um ou mais caracteres. A definição exata de quais caracteres têm peso maior que um está no arquivo de configuração da biblioteca de análise de Tweets twitter-text. A versão atual do arquivo de configuração define um peso padrão de dois caracteres e quatro intervalos de pontos de código Unicode com pesos diferentes. Atualmente, os pontos de código nesses intervalos são todos contados como um único caractere.
  • O primeiro intervalo abrange caracteres nas páginas de código Latin-1 (U+0000 - U+10FF).
  • O segundo intervalo é de pontuação geral até, e incluindo, o Zero Width Joiner (usado para combinar emoji e outros glifos) (U+2000-U+200D).
  • O terceiro intervalo é de pontuação geral, excluindo U+200E e U+200F, que são marcas direcionais do Unicode (U+2010-U+201F).
  • O último intervalo abrange aspas (U+2032-U+2037).
Exemplos de texto de Tweet e comprimentos calculados pela biblioteca twitter-text podem ser encontrados no arquivo de configuração de testes validate.yml da biblioteca. Exemplos
Caractere exibidoComprimentoDescriçãoSequência Unicode
a1Letra minúscula latina aU+0061
á1Letra minúscula latina a com acento agudoU+00E1
ӑ1Letra minúscula cirílica a com brèveU+04D1
1Letra maiúscula latina o com circunflexo e acento agudoU+1ED2

Emojis

Emojis compatíveis com o twemoji sempre contam como dois caracteres, independentemente de modificadores de combinação. Isso inclui emojis modificados por modificadores de tom de pele Fitzpatrick ou por modificadores de gênero, mesmo que sejam compostos por um número significativamente maior de pontos de código Unicode. O peso do emoji é definido por uma expressão regular no twitter-text que procura sequências de emojis padrão combinadas com um ou mais Zero Width Joiners (U+200D) do Unicode. Exemplos
Emoji exibidoComprimentoDescriçãoSequência Unicode
👾2Comprimento padrão de um emoji conhecido
🙋🏽2Emoji com modificador de tom de pele🙋 U+1F64B, 🏽 U+1F3FD
👨‍🎤2Sequência de emoji usando glifo combinador (zero-width joiner)👨 U+1F468, U+200D, 🎤 U+1F3A4
👨‍👩‍👧‍👦2Sequência de emoji usando múltiplos glifos combinadores (zero-width joiners)👨 U+1F468, U+200D, 👩 U+1F469, U+200D, 👧 U+1F467, U+200D, 👦 U+1F466

Glifos em chinês / japonês / coreano

Glifos usados em idiomas CJK (chinês / japonês / coreano) também contam como dois caracteres. Portanto, um Tweet composto apenas por texto em CJK pode ter, no máximo, 140 desses glifos.

Objetos de Entidade

Tweets podem conter Objetos de Entidade, alguns dos quais afetam o comprimento de um Tweet. URLs: Todas as URLs são convertidas em links t.co. Isso significa que o comprimento de uma URL é definido pelo parâmetro transformedURLLength no arquivo de configuração do twitter-text. Atualmente, o comprimento de uma URL em um Tweet é de 23 caracteres, mesmo que a URL original seja mais curta. Respostas: @nomes que são preenchidos automaticamente no início de um Tweet de resposta não contam para o limite de caracteres. Novos Tweets que não sejam respostas e comecem com uma @menção contam, assim como @menções adicionadas explicitamente pelo usuário no corpo do Tweet. Mídia: mídia anexada a um Tweet, representada como uma URL pic.x.com quando publicada a partir de um cliente oficial, conta como 0 caracteres. Para mais informações sobre Objetos de Entidade, consulte a documentação para desenvolvedores.

Codificação de caracteres do X

Os endpoints da X API aceitam apenas texto codificado em UTF-8. Todas as outras codificações devem ser convertidas para UTF-8 antes de enviar o texto para a API. O X contabiliza o comprimento de um Tweet usando a versão do texto na Normalization Form C (NFC). Como exemplo: a palavra “café”. Existem duas sequências de bytes que, visualmente, são idênticas, mas usam um número diferente de bytes:
café0x63 0x61 0x66 0xC3 0xA9Usando o caractere “é”, o “caractere composto”.
café0x63 0x61 0x66 0x65 0xCC 0x81Usando o diacrítico combinante, que sobrepõe o “e”.
A Normalization Form C privilegia o uso de um caractere totalmente combinado (0xC3 0xA9, do exemplo de “café”) em vez da versão de forma longa (0x65 0xCC 0x81). O X conta o número de pontos de código no texto, em vez de bytes em UTF-8. O 0xC3 0xA9, do exemplo de “café”, é um ponto de código (U+00E9) codificado como dois bytes em UTF-8, enquanto 0x65 0xCC 0x81 são dois pontos de código codificados como três bytes.
I