일본어 텍스트를 두 번 클릭하면 Chrome에서 강조 표시할 항목을 어떻게 결정합니까?
Chrome에서 영어 텍스트를 두 번 클릭하면 클릭한 공백으로 구분된 단어가 강조 표시됩니다.놀랄 일도 아니다.그런데 얼마 전 일본어로 된 텍스트를 읽으면서 클릭을 했는데, 일본어는 공백이 없는데 단어 경계에 몇 개의 단어가 강조 표시되어 있었습니다.다음은 몇 가지 예제 텍스트입니다.
どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
예를 들어, 「暗」를 클릭하면, 1개의 문자 클래스가 아니고(한자와 히라가나의 혼재), Chrome은 1개의 단어로 올바르게 강조 표시됩니다.모든 하이라이트가 맞는 것은 아니지만 무작위로 보이지는 않습니다.
Chrome은 여기서 강조 표시할 항목을 어떻게 결정합니까?Chrome 소스에서 "일본어"를 검색해 보았지만, 내 Chrome 버전에서 활성화되지 않은 것 같은 실험 모듈 테스트만 찾았습니다.
v8에는 비표준 다국어 단어 분할기가 있으며 일본어에도 대응하고 있습니다.
function tokenizeJA(text) {
var it = Intl.v8BreakIterator(['ja-JP'], {type:'word'})
it.adoptText(text)
var words = []
var cur = 0, prev = 0
while (cur < text.length) {
prev = cur
cur = it.next()
words.push(text.substring(prev, cur))
}
return words
}
console.log(tokenizeJA('どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。'))
// ["どこ", "で", "生れ", "たか", "とんと", "見当", "が", "つ", "か", "ぬ", "。", "何でも", "薄暗い", "じめじめ", "した", "所", "で", "ニャーニャー", "泣", "い", "て", "いた事", "だけ", "は", "記憶", "し", "て", "いる", "。"]
이걸 보여주는 jsfiddle도 만들었어요.
품질은 놀랍지 않지만 전혀 지원되지 않는 것이 놀랍습니다.
Jonathon W가 올린 링크에 근거해, 「일본어의 방대한 리스트와 Chrome 체크가 있어 단어를 더블 클릭했는지 확인합니다.」라고 하는 것이 그 답이다.
특히 v8은 ICU를 사용하여 텍스트를 단어로 분할하는 등 Unicode 관련 텍스트 처리 작업을 많이 수행합니다.ICU 경계 탐지 코드에는 일본어, 중국어, 태국어 등 공백이 없는 언어를 위한 "사전 기반 브레이크이터"가 포함되어 있습니다.
또, ICU(255431행)에서 출하된 중국어-일본어 복합사전에 기재되어 있습니다.이 목록에는 현재 총 315,671개의 중국어/일본어가 있다.아마도 Chrome이 제대로 분할되지 않는 단어를 발견하면 ICU에 패치를 보내 해당 단어를 추가할 수 있습니다.
언급URL : https://stackoverflow.com/questions/61672829/how-does-chrome-decide-what-to-highlight-when-you-double-click-japanese-text
'it-source' 카테고리의 다른 글
larabel 지원되는 암호화기를 찾을 수 없습니다.암호 및/또는 키 길이가 잘못되었습니다. (0) | 2023.02.02 |
---|---|
PHP '테이블 만들기' 테이블 이름에 따옴표가 포함되어 있습니다. (0) | 2023.02.02 |
인터페이스 상수의 용도는 무엇입니까? (0) | 2023.01.23 |
카본 날짜 인스턴스 형식 지정 (0) | 2023.01.23 |
mariadb와 python2.7을 연결하는 방법이 있습니까? (0) | 2023.01.23 |