Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当你双击日文文本时,Chrome如何决定突出显示什么?_Javascript_Google Chrome_Cjk - Fatal编程技术网

Javascript 当你双击日文文本时,Chrome如何决定突出显示什么?

Javascript 当你双击日文文本时,Chrome如何决定突出显示什么?,javascript,google-chrome,cjk,Javascript,Google Chrome,Cjk,如果在Chrome中双击英文文本,则会突出显示单击的以空格分隔的单词。这并不奇怪。然而,前几天我在读日语文本时点击,注意到一些单词在单词边界处突出显示,尽管日语没有空格。以下是一些示例文本: どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。 例如,如果您单击薄暗い, Chrome会正确地将其突出显示为单个单词,即使它不是单个字符类(这是汉字和平假名的混合)。并非所有的高光都是正确的,但它们似乎不是随机的 Chrome如何决定在这里突出显示

如果在Chrome中双击英文文本,则会突出显示单击的以空格分隔的单词。这并不奇怪。然而,前几天我在读日语文本时点击,注意到一些单词在单词边界处突出显示,尽管日语没有空格。以下是一些示例文本:

どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。

例如,如果您单击薄暗い, Chrome会正确地将其突出显示为单个单词,即使它不是单个字符类(这是汉字和平假名的混合)。并非所有的高光都是正确的,但它们似乎不是随机的


Chrome如何决定在这里突出显示什么?我尝试在Chrome源代码中搜索“日语单词”,但只找到了一个在我的Chrome版本中似乎不活跃的测试。

因此,v8有一个非标准的多语言分词器,它可以处理日语

function-tokenizeJA(文本){
var it=Intl.v8BreakIterator(['ja-JP'],{type:'word'})
it.adoptext(文本)
var words=[]
变量cur=0,prev=0
while(cur
我还做了一个演示

它的质量并不令人惊讶,但我很惊讶它居然得到了支持。

基于此,答案基本上可以归结为:“有一个很大的日语单词列表和Chrome检查,看看你是否双击了一个单词。”

具体地说,v8用于执行一系列与Unicode相关的文本处理工作。ICU边界检测代码包括一个用于没有空格的语言的代码,包括日语、汉语、泰语等


你的具体例子是“薄暗い,您可以在组合的(第255431行)中找到该单词。目前列表中总共有315671个中文/日文单词。如果您发现Chrome无法正确拆分某个单词,您可以向ICU发送一个补丁来添加该单词。

这是ICU项目的一部分:,另请参阅,以了解其连接位置。Windows已经能够在双击时选择正确的单词一个日语单词,你甚至不需要Chromethis@phuclv:并非所有使用Chrome的人都在Windows上运行它。您确定v8行为对浏览器UI中的文本选择有任何影响吗?鉴于v8是一个JavaScript引擎,我认为在浏览器UI中进行文本选择时不会执行任何v8代码.我想你可以通过在浏览器中禁用JavaScipt来检查,然后看看你是否观察到了相同的行为。如果你没有,那么我认为这表明行为不是由v8引起的。(我自己会这样做来测试它,但正如我在另一篇评论中指出的那样,在我的macOS环境中,无论我在哪个浏览器中测试,它都已经工作了——不仅仅是在Chrome中。)ICU和类似的项目已经存在了很长一段时间。如果Chrome的V8引擎在从WebKit过渡到WebKit之后开始使用它,我不会感到惊讶,WebKit起源于标准文本引擎已经做了近20年这种标记化的平台。@Nathaniel我不知道这对你有什么好处,但是当我双击在汉字上,它只选择汉字,当我在平假名中双击时,它只选择连续的平假名,片假名(nya-nya)的一小部分也是如此じめじめした part是一个很好的部件,用于测试浏览器是否真的在进行智能单词选择,而不仅仅是在假名/汉字/日本语边界停止选择。这都是平假名,但Chrome(和Safari)只正确选择了じめじめ 部分した 另一方面,Firefox选择错误いじめじめした (因为Firefox根本不识别实际的单词边界,但显然只是在假名/汉字/rōmaji边界处停止选择)。@草莓我明白了。对我来说,它选择了这个单词薄暗い, 如问题所述。(Chrome、Mac)除了一个例外,在我测试过的每一款macOS应用程序中——文本编辑、胶粘、便笺、终端等等——双击智能日文选词功能都如期发挥作用。因此,至少在macOS上,Chrome并没有做任何其他macOS应用程序都没有做的事情——它只是使用了现有的应用程序macOS内置基于ICU的分词支持。在macOS上,Firefox是我发现的唯一一个例外,因为macOS应用程序都可以对本问题中描述的日语文本进行相同类型的双击智能选词。Firefox似乎只做了一件简单得多的事情,即在kana/kanji/rōmaji绑定处停止选择一位Firefox工程师告诉我,这是因为Firefox没有使用内置的基于ICU的macOS平台API进行文本选择。请参阅相关错误。