英文电子书使用字典查词时选中整段的解决方法

昨天有位小伙伴向书伴提出一个问题,他在用 Kindle 设备阅读 Calibre 转换的两本英文电子书时,发现它们查词时的表现不一样,其中一本可以正常查词,而另外一本却不能,只能选择一整段内容。

▲ 只能选择整段文字,无法正常查询单词

在获得这两本电子书的样本,并仔细对比了它们的源代码后,不论是元数据还是文本内容,并没有发现查词有问题的电子书存在什么异常。但是不管怎么转换,查词问题总会重现,这着实让人疑惑。

最后,为了更彻底地做对比测试,我从这两本书中各选取了一段,并将其转换成电子书。有趣的现象出现了,居然一段无法正常查词另一段却能正常查词。由此可以推测,问题一定是出在文本内容上。

但是这两段内容看起来确实没有什么区别。当我同时选中这两段内容的时候,突然发现它们的空格看起来有点儿不同。我所用的编辑器是 Sublime Text,当正常的空格被选中时理应显示为“·”,而查词有问题的段落的空格却显示为空(如下图所示)。在确认异常空格的 HTML 实体后,终于找到了问题的症结。

和汉字不同,英文单词之间必须要有空格才有意义,但是在 HTML 中,空格可以分为很多种,其中最常见的就是普通的 ASCII 空格,编辑或阅读时,当一行的空间无法容纳下一个单词时,就会自动换到下一行。此外还有一种特殊的空格,被称为“不换行空格(Non-breaking space)”,这种空格会阻止行的自动换行,编辑或阅读时,当一行的空间不够显示时候,会破坏单词的完整性以字母为单位折行。

这种空格在某些情况下适用,比如“100 km”,可以在“100”和“km”之间加一个不换行空格,这样当一行的行尾空间无法容纳这个计量单位的时候,“100 km”就会被放到下一行的行首,而不会出现“100”在上一行“km”在下一行的情况发生。而如果把所有应该用普通空格的地方换成了不换行空格,就是对不换行空格的滥用。这种滥用的情况虽然不常见,但由于编辑器或输入法等意外情况,还是有可能出现的。

元素名称Non-breaking space(不换行空格)
字符实体: 
字符数值(十进制): 
字符数值(十六进制): 

▲ 不换行空格不同形式的 HTML 字符实体

很显然 Kindle 的字典查询功能并没有对不换行空格特殊处理,它会把所有被不换行空格连接起来的单词当作一个单词,这也就是为什么它会自动调用在线字典的原因(否则这么一大段内容它就会给自动标注了)。所以,为了解决这个问题,我们需要在转换电子书时把内容中的不换行空格替换成普通空格。

以 Calibre 为例,在转换电子书的设置面板中,切换到【搜索 & 替换】功能,按照下图所示,在正则表达式中填入 \xa0+ 用来查找特殊空格,在替换文本中输入一个普通空格(按一下空格键):

然后点击【添加】按钮将设置加入规则。这样转换出来的电子书查词就恢复正常了,如下图所示:

此问题虽得以解决,但正如前面所提到的,在 HTML 中有很多类型的空格,有可能还会因为其它类型的空格导致类似的问题出现,到时只需要确认空格的实体,然后如法炮制将其替换成普通空格即可。

本文仅针对英文内容的电子书。中文内容的 AZW3 电子书也可能会出现查询字典时选择整段文本的情况,关于这个问题可参考《为什么 AZW3 电子书查字典取词时会选中一整句》这篇文章。

————————–

参考资料:

有帮助,[ 捐助本站 ] 或分享给小伙伴:

发表评论

标注为 * 的是必填项。您填写的邮箱地址将会被保密。如果是在本站首次留言,审核后才能显示。
若提问,请务必描述清楚该问题的前因后果,提供尽可能多的对分析该问题有帮助的线索。

小伙伴们发表了 4 条评论

  1. 我遇到的情况是看英文书籍的时候没发选中整个段落……还有选中时候屏幕两边出现的黑条是最近更新的吗,之前不是这样。

    • 没法选中整个段落是什么表现?黑条的问题之前有人反馈过,但是我一直没遇到,这次更新到 5.12.1 固件后我才遇到,感觉是一个 BUG。

    • 我的MOBI(old)是選中單字後螢幕兩邊出現小黑條,若單字後面出現一些特定的標點符號,字典便無法辨識。不是什麼大問題,單純背誦單字的時候有點困擾。

    • 我也出现了两边黑条,我想这个是新系统特性,Amazon重新设计了选中的视觉风格?
      两边黑有点像markdown的引用哦。