Если дважды щелкнуть текст на английском языке в Chrome, выделенное пробелом слово будет выделено. Это не удивительно. Однако на днях я нажимал, читая какой-то текст на японском языке, и заметил, что некоторые слова были выделены на границах слов, хотя в японском языке нет пробелов. Вот пример текста:
ど こ で 生 れ た か と ん と 見 当 が つ か ぬ. 何 で も 薄 暗 い じ め じ め し た 所 で ニ ャ ー ニ ャ ー 泣 い て い た 事 だ け は 記憶 し て い る.
Например, если вы нажмете 薄 暗 い, Chrome правильно выделит его как одно слово, даже если это не один класс символов (это смесь кандзи и хирагана). Не все основные моменты правильны, но они не кажутся случайными.
Как Chrome решает, что здесь выделить? Я попытался найти в исходном коде Chrome «японское слово», но нашел только тесты для экспериментального модуля , который не работает в моей версии Chrome.
источник
Ответы:
Получается, что в v8 есть нестандартный многоязычный сегментатор слов и он работает с японским языком.
Я также сделал jsfiddle, который показывает это.
Качество не удивительное, но я удивлен, что это поддерживается вообще.
источник
Основываясь на ссылках, опубликованных JonathonW , ответ в основном сводится к следующему: «Существует большой список японских слов и проверок Chrome, чтобы увидеть, дважды ли вы щелкнули слово».
В частности, v8 использует ICU для обработки текстов, связанных с Unicode, включая разбиение текста на слова . Код обнаружения границ ICU включает в себя «BreakIterator на основе словаря» для языков без пробелов, включая японский, китайский, тайский и т. Д.
А для вашего конкретного примера «薄 暗 い» вы можете найти это слово в комбинированном китайско-японском словаре, поставляемом ICU (строка 255431). В настоящее время в списке 315 671 всего китайских / японских слов. Предположительно, если вы найдете слово, которое Chrome не разделяет должным образом, вы можете отправить ICU патч для добавления этого слова.
источник