Si hace doble clic en el texto en inglés en Chrome, se resalta la palabra delimitada por espacios en blanco en la que hizo clic. Esto no es sorprendente. Sin embargo, el otro día estaba haciendo clic mientras leía texto en japonés y noté que algunas palabras estaban resaltadas en los límites de las palabras, a pesar de que el japonés no tiene espacios. Aquí hay un texto de ejemplo:
ど こ で 生 れ た か と ん と 見 当 が つ か ぬ。 何 で も 薄 暗 い じ め じ め し た 所 で ニ ャ ー ニ ャ ー 泣 い て い た 事 だ け は 記憶 し。。
Por ejemplo, si hace clic en 薄 暗 い, Chrome lo resaltará correctamente como una sola palabra, aunque no se trate de una sola clase de caracteres (esta es una mezcla de kanji e hiragana). No todos los aspectos más destacados son correctos, pero no parecen aleatorios.
¿Cómo decide Chrome qué resaltar aquí? Intenté buscar en la fuente de Chrome "palabra japonesa", pero solo encontré pruebas para un módulo experimental que no parece activo en mi versión de Chrome.
fuente
Respuestas:
Resulta que v8 tiene un segmentador de palabras en varios idiomas no estándar y maneja japonés.
También hice un jsfiddle que muestra esto.
La calidad no es sorprendente, pero me sorprende que esto sea compatible.
fuente
Según los enlaces publicados por JonathonW , la respuesta básicamente se reduce a: "Hay una gran lista de palabras japonesas y Chrome verifica si has hecho doble clic en una palabra".
Específicamente, v8 usa ICU para hacer un montón de cosas de procesamiento de texto relacionadas con Unicode, incluida la división del texto en palabras . El código de detección de límites de la UCI incluye un "BreakIterator basado en diccionario" para idiomas que no tienen espacios, incluidos japonés, chino, tailandés, etc.
Y para su ejemplo específico de "薄 暗 い", puede encontrar esa palabra en el diccionario combinado chino-japonés enviado por ICU (línea 255431). Actualmente hay 315,671 palabras en total en chino / japonés en la lista. Presumiblemente, si encuentra una palabra que Chrome no se divide correctamente, podría enviar un parche a la UCI para agregar esa palabra.
fuente