Se você clicar duas vezes no texto em inglês no Chrome, a palavra delimitada por espaços em branco em que você clicou será destacada. Isto não é surpreendente. No entanto, no outro dia, eu estava clicando enquanto lia um texto em japonês e percebi que algumas palavras estavam destacadas nos limites das palavras, mesmo que o japonês não tenha espaços. Aqui está um exemplo de texto:
ど こ で 生 れ 見 当 が つ ぬ。 何 で も 薄 暗 い じ め じ し し た 所 で ニ ー ー ー し け け け け け け け け け け け.
Por exemplo, se você clicar em 薄 暗 い, o Chrome a destacará corretamente como uma única palavra, mesmo que não seja uma classe de caractere único (essa é uma mistura de kanji e hiragana). Nem todos os destaques estão corretos, mas não parecem aleatórios.
Como o Chrome decide o que destacar aqui? Tentei pesquisar na "fonte em japonês" a fonte do Chrome, mas só encontrei testes para um módulo experimental que não parece ativo na minha versão do Chrome.
fonte
Respostas:
Acontece que a v8 tem um segmentador de palavras em vários idiomas não padrão e lida com o japonês.
Eu também fiz um jsfiddle que mostra isso.
A qualidade não é incrível, mas estou surpreso que isso seja suportado.
fonte
Com base nos links publicados por JonathonW , a resposta se resume basicamente a: "Há uma grande lista de palavras em japonês e o Chrome verifica se você clicou duas vezes em uma palavra".
Especificamente, a v8 usa a ICU para executar várias tarefas de processamento de texto relacionadas ao Unicode, incluindo dividir o texto em palavras . O código de detecção de limite da ICU inclui um "BreakIterator baseado em dicionário" para idiomas que não têm espaços, incluindo japonês, chinês, tailandês etc.
E para o seu exemplo específico de "薄 暗 い", você pode encontrar essa palavra no dicionário combinado chinês-japonês enviado pela ICU (linha 255431). Atualmente, existem 315.671 total de palavras em chinês / japonês na lista. Presumivelmente, se você encontrar uma palavra que o Chrome não se divide corretamente, você poderá enviar à ICU um patch para adicionar essa palavra.
fonte