用墨水屏阅读器看书,查词体验一直不太理想:KOReader 自带的查词弹窗很顺手,却只认 StarDict;想用 MDict 词典,就只能跳到外部 App,每查一个词屏幕都要闪好几下。
所以我写了 mdict.koplugin:一个让 KOReader 直接读取 .mdx / .mdd 的插件。在 Android 上,它用系统 WebView(Chromium 内核)来排版词条,再把词条切成一页一页放进 KOReader 自己的查词弹窗里。词典原本的样子基本都能保留,竖排日语、笔顺、公式、插图、折叠例句、真人发音都没问题。

项目地址:https://github.com/moopoint-dev/mdict.koplugin(开源,AGPL-3.0,当前版本 0.2.0)
为什么要做这个插件
KOReader 查词时,用内置的 sdcv 查 StarDict 词典,HTML 释义交给 MuPDF 排版。MuPDF 擅长 PDF,作为网页引擎就比较勉强:
- CSS 只支持一部分:没有 flexbox / grid,很多现代词典的版式会乱掉。
- 不支持竖排:
writing-mode: vertical-rl不起作用,日语国语辞典只能横着看。 - 不执行 JavaScript:折叠的例句、「VERB FORMS」之类的展开区块、点开看大图,统统失效。
- 不能放声音:词典里的
sound://发音和例句录音,点了没有反应。
KOReader 官方对 MDict 的建议(issue #5552)是:用 PyGlossary 转成 StarDict,或者调用外部 App。但这两条路都有代价:
- 转换成 StarDict:音频和脚本都会丢掉,CSS 要手动处理,词典每次更新都要重新转换。
- 调用外部 App(欧路、DictTango、GoldenDict 等):每次查词都会离开 KOReader,切换 Android 界面会让墨水屏整屏刷新好几次。外部 App 大多还是滚动式界面,在墨水屏上拖得很吃力。
我想要的其实很简单:不离开 KOReader,不做格式转换,词典原来什么样,弹窗里就是什么样,而且一页一页地翻。
这个插件能做什么
原版排版:交给 WebView,而不是 MuPDF
- 在 Android 上用系统 WebView(Chromium)排版,完整支持现代 CSS(flexbox、grid、网页字体、MDD 里自带的字体)。
- 竖排日语(
vertical-rl)、注音假名(ruby)、纵中横、笔顺字表、SVG 数学公式,都按词典原本的设计显示。 - 插图、示意图照常显示,彩色屏上还能看到彩色。
运行词典自带的脚本
- 词典自己的 JavaScript 会正常运行:折叠或展开区块、点缩略图看大图等交互都能用。
- 词条里的链接、
#锚点、entry://交叉引用都能点。
发音和例句音频
- 点喇叭图标就能播放单词发音和例句录音。支持 AAC、MP3、Ogg、WAV(Speex 暂不支持)。
为墨水屏设计的翻页
- 词条按弹窗大小切成一页一页,没有滚动。横排词条上下滑或点左右半屏翻页;竖排词条左右滑翻页,上下滑切换词典。
- 双指张开就切到 KOReader 的大窗口,一页能看更多内容。
- 默认会在后台预先排好下一个结果,切换词典时更快。
- 墨水屏模式:黑色文字,去掉浅色底纹,避免显示成一片灰。
和 KOReader 无缝结合
- MDict 词典和 StarDict 词典出现在同一个「管理词典」列表里,一起启用、停用和排序。
- 长按释义里的字词可以继续查;「在释义中查找」会搜索整个词条;查词记录、生词本照常可用。
- 支持 MDict 1.2 / 2.0、zlib / LZO 压缩、加密的 key index。
- 不需要改动或重新编译 KOReader:插件的 Java 部分在运行时加载,官方版 KOReader 就能用。
- 自动更新:插件会从 GitHub Releases 检查新版本,每天最多一次,不会主动打开 Wi-Fi,也可以跳过某个版本。
给爱折腾的坛友
- 覆盖文件:在
name.mdx旁边放name.koreader.css(追加 CSS)或name.koreader.lua(改写 HTML),就能为墨水屏单独调整某部词典。放在文件夹里的mdict.koreader.css/.lua对整个文件夹生效。 - 可以按词典设置横排或竖排,以及分栏或切片的分页方式(默认自动选择)。
- 给词典制作者:大词典第一次使用时,插件会在后台建一次索引(每部几秒)。如果词条按插件的
kosort-1顺序排好,并在 MDX 头部写上KOReaderKeyOrder="kosort-1",就可以跳过建索引。参考实现和测试数据都在仓库的tools/kosort.py和spec/data/kosort-1.tsv里。
截图
以下截图来自模拟 7 英寸、300 ppi 阅读器的 Android 模拟器。
横排英汉:牛津高阶英汉双解第 10 版,「rabbit」,带插图
竖排汉字条目:三省堂 現代新国語辞典,「故」,有笔顺、注音和纵中横(大窗口)
横排日语:大辞泉,「双曲線」,有声调符号、发音按钮和彩色示意图(大窗口)
竖排日语:現代新国語辞典,「双曲線」,配图竖排(大窗口)
横排翻页演示:「watch」。双指张开切到大窗口,展开再收起 VERB FORMS,翻页,切换到下一个结果,点开插图大图再关闭

安装
- 到 Releases 下载
mdict.koplugin-<版本>.zip,解压到koreader/plugins/。 - 把词典放进 KOReader 的词典目录
koreader/data/dict/,也可以在 Search → Settings → MDict dictionaries → Dictionary folders 里添加其他文件夹。.mdx要和它的.mdd(name.mdd、name.1.mdd……)放在一起。 - 重启 KOReader。MDict 词典会出现在「管理词典」列表里。
插件的所有设置都在查找菜单的 MDict dictionaries 里。
已知限制
- 暂不支持 MDict 3.0 格式,也不支持需要注册码的加密词典。
- Speex 格式的音频暂时不能播放。
- WebView 排版只在 Android 上可用。Kindle、Kobo、PocketBook 等设备会退回 KOReader 内置的 MuPDF 渲染:文字和图片能显示,但竖排、脚本、发音这些功能用不了。
- 有些词典的 CSS 原本是为手机彩屏设计的,在墨水屏上可能需要用覆盖文件微调。
反馈
插件还很新,欢迎大家拿自己手头的词典来试。遇到显示不对、查不到词、翻页异常的情况,请到 GitHub Issues 反馈,或者直接在这个帖子里回复。附上词典名称、查询的词和截图,排查起来会快很多。
也欢迎分享你在墨水屏上用得顺手的词典,以及为它们写的 koreader.css 覆盖文件。
祝大家查词愉快!




