GoldenDict++OCR Changelog「更新日志」©🚩🌱

辞书分享 双击取词 便携模式 音频引擎 播放动画 文章缓存 自动分组 阅读模式 问题帮助 划词设置 升级下载
2024.3.28 3E22:修正状态栏消息可能带有上次消息图标的问题;为音频引擎增加播放音量速度(频率)调节的接口支持(插件Bass pluginsFmod EngineFmod ExFFmpeg+libaoQt Multimedia做了完整实现);修正Fmod Engine不能播放路径含多字节编码字符的音频文件的问题;主题样式微调;修正默认主题和灵格斯主题下新建tab页(文章)视图闪烁的问题;全文搜索: 窗体可停靠,首选项、词典对话框等操作不再关闭全文搜素,修正前一个后一个按钮不能正确反映页面搜索进度的问题;修正导航栏位于屏幕下方时查询输入框的候选词列表弹出后可能被遮挡(超出屏幕显示范围)的问题(讨论);恢复对ScrollBar(滑动条)宽度的过度调整;Zstandard-1.5.6libxml2-2.12.6SQLite-3.45.2libpng-1.6.43xz-5.6.1 updated

2024.3.6 3E21B:修正macOS版本tesseract-ocr引擎无法使用的问题;Add belarus letter pairs “Ўў/Уу” to diacritic handler(讨论参考,升级到该版本需要重新索引全部词典);开放Windows-x64版本mdict格式的支持;Popup弹窗: 功能及UI优化,增加记录到查询历史配置项,配置项独立文件存储;查询结果导航面板、查询面板、收藏面板、历史面板: 修正窗体关闭后再打开不能恢复原位置或不能浮动显示的问题,为浮动面板的标题栏增加关闭按钮;重构页内搜索功能: 逻辑优化,关闭搜索框后释放内存资源,页面刷新、过滤条件改变或文章内容改变时同步更新搜索,搜索框打开时恢复已设定的过滤条件和当前会话的搜索词;显示风格(主题): 样式表简化/优化,全新设定(全局有效)灵格斯蓝色调和深色模式;修正个别zim格式词典无法查阅词头列表的问题;修正群组列表聚焦后不能自动释放焦点的问题;修正QWebPage::WebAction翻译缺失的问题;修正会话保存/恢复html转译字符不被正确处理的问题;修正当匹配项很多时查询输入框noResults状态不被及时更新的问题;修正当从搜索面板切换到搜索工具栏(快捷键Ctrl+S反复几次)时群组切换快捷键失效的问题;修正历史记录列表中复选的条目均被查询一次的问题;修正Popup窗口中切换群组或mute词典时重查输入框内容的问题;优化辞书栏显隐及mute词典的处理;辞书词条对话框: 新增快捷键F4以快速显隐参数面板,新增仅浏览当前辞书选项(选中后点击词汇列表中的词头时会且仅会在当前辞书中查询定义),新增记录到查询历史选项(浏览词条时可不发送词条到历史纪录),新增(按住Ctrl点击词条)可在新建视图中查询词汇;全文搜索对话框: 新增快捷键F4以快速显隐参数面板,新增记录到查询历史选项(浏览词条时可不发送词条到历史纪录);代码优化以提升运行效率(同时压缩生成的二进制文件大小);完善辞书词条对话框自动过滤条件判定;MSVC-2019-16.11.34openjpeg-2.5.2openssl-3.2.1zlib-1.3.1jpegsrc.v9flibplist-2.4.0icu4c-74.2(Unicode 15.1 & CLDR 44) updated
2024.2.3 3E20:为辞书词条对话框增加自动获得焦点选项(以支持通过键盘方向键+回车键查词,通过快捷键Ctrl+D获得焦点的方式依然有效);修正Add all tabs to Favorites操作将所有词条都添加到当前分组收藏夹(而不是对应tab页分组的收藏夹)的问题;优化收藏历史存取(支持从旧版或官版升级时自动导入);默认设置下Wiki型词典不再将Wikipedia设置为已使能;增加文章重载按钮(快捷F5键)Tesseract-5.3.4Qt-5.15.12-macOS_universalleptonica-1.84.1FMOD-2.02.20libxslt 1.1.39 updated
2023.12.13 3E1F:修正macOS/Linux版本取词热键修改后不被正确存取的问题;macOS系统: 修正Qt-5.15版本划词插件ExternalTools不能正常工作的问题, 修正Popup弹窗的群组名称(紧凑模式)右侧被遮挡的问题;统一Dock窗口的标题样式,修正灵格斯-蓝色调主题下Dock窗口重叠(叠加)时tab样式无效的问题;修正全文搜索对话框的最大词条数每辞书可能(超过255时)不被正确保存的问题;运行时记忆词典编辑对话框来源页面的当前页面;修正程序启动时Splash窗体可能不按预期关闭的问题;修正词典未有分组时会话不被加载的问题;新增会话保存与恢复机制(新特性: 会话导入导出、退出时自动保存会话、启动后自动加载会话);优化代码以压减生成的二进制文件大小(同时减少运行时静态内存占用);修正词典文件更新后全文索引不会随之更新的问题,修正全文查询时(极端条件下)无词典可检索可致进程崩溃的问题;修正退出程序时可能因查询视图未及时销毁而崩溃的问题;针对Qt-5.15.1x的兼容性改进(修正);剔除Dsl词典处理中不必要的异常抛出;当从设定的HunspellMorpho目录中加载词典失败时尝试从默认文件夹加载词典文件(同时支持运行在portable模式时自定义词典目录);配置文件中的查询相关参数独立节点存取;运行时保存和恢复首选项对话框当前页面;增加对音频插件不可用时使用外置播放器打开音频文件当音频插件播放失败时使用外置播放器打开音频文件尝试使用音频插件直接播放网络音频文件的支持,当外置播放器不可能时可回退使用系统默认播放器;为音频插件增加直接播放httphttps协议url链接的接口;修正保存图片或音频文件对话框中的保存类型错误;辞书词条对话框中自动过滤上限值可设定(由配置文件存取,范围 10万~50万);修正词典群组选取框紧凑模式切换到经典模式时可能过度挤占水平空间的问题;按功能将配置项分文件存储(升级后会自动处理以保证首选项词典配置不丢失),加入写保护机制以防止程序崩溃时内容被破坏;取消gdpicture处理(对dsl的图片处理与其它格式词典一致);设置界面布局微调,对话框辞书词条布局调整(与全文搜索对话框一致,更加紧凑);全文搜索: 索引和搜索时的并发任务数调整为全核心线程数量 - 2加快界面和查询操作的响应速度,调整界面布局,增加禁用时自动清除索引文件选项(使能时不再参与全文搜索的词典的全文索引文件将在下次扫描辞书过程中被自动删除),修正音频类词典使能错误(未索引的词典加入检索队列导致检索时可能崩溃,由3E1C引入)的问题,删除配置项disabledTypes,新增配置项autoRemove(默认未开启)和types,升级后不会删除已有的全文索引文件,但需在编辑菜单->辞书对话框->其它页面重选需要全文索引的辞书类型;修正Qt-5.15.1x版创建全文索引和全文检索结束时可能异常崩溃的问题(由Qt-5.15.1x自带的bug触发);CaseFolding-Unicode-15.1.0(升级到该版本会重新索引所有的文件型词典)、OpenCC-1.1.7pugixml-1.14openssl-1.0.2zi updated。
2023.9.30 3E1E:从代码层面禁用--show-error-file显示崩溃日志实现;配置参数命名规范: forcedSearchSuggestions->alwaysSuggest, synonymSearchEnabled->synonymSearch等,升级后对应参数被重置为默认值,可在首选项词典对话框修改;修正新建页面后即刻切换词典群组导致(空白或帮助)页面重查的问题;发音按钮和音频类词典的图标统一使用一个文件;弹窗Popup工具栏布局调整;改进词典群组选取框(添加紧凑模式,鼠标左键双击切换到经典模式,鼠标右键双击切换到紧凑模式,快捷键扩展:Alt+G切换至经典模式或弹出群组选择列表,Alt+J切换至紧凑模式Alt+PgDownAlt+PgUp行为不变);修正mdict词典中JavaScript脚本不能通过anchornameid属性访问html文档节点的问题(同时修正跨词条查询的锚点跳转可能失败的问题 — 撤销了原有的sub unique id机制以最大化兼容词典中的cssjs处理: 词典制作者必须保证html内容中tag节点的nameid属性值的唯一性,以及它们不存在于同查的其它词典中);为mingw+gcc32位版本开放对Apple OSX格式词典的支持;新增mingw64+gcc1364位(长期支持)版本libtiff -4.6.0openssl-1.1.1wlibwebp-1.3.2 updated。
2023.9.1 3E1D:修正索引辞书时未设置全文索引的辞书对应的全文索引文件不被清除的问题;新增删除缓存和对不存在的辞书的配置项清理辞书功能(清理临时文件和配置文件中的无效辞书项,入口:编辑菜单);优化划词接口以提供更友好的设置选项;修正macOS版本Popup窗体无法使用查询功能(快捷键⌘+F乱入主窗体)的问题;优化常量状态(计算)的生命周期(以提升mdict词典的索引效率);修正导航工具栏悬浮时输入查询后文章视图不能获取输入焦点的问题;FreeType-2.13.2 updated。
2023.7.29 3E1C:为macOS系统Vision划词语言名称添加翻译(显示时使用OCR语言名称而非语言代码);构词法词典: 短语建议实现优化,修正词典ID随应用界面语言改变而改变的问题;转写型字典: 增加语言属性,重写常量字符串映射表的实现(以提高运行效率,压减程序体积和内存占用);修正导航工具栏或/和查询面板的悬浮状态改变后查询输入框捕获键盘输入异常的问题;重构(整合)LanguageLangCoder功能(提高运行效率,压减程序体积和内存占用),为粤语吴语等增加iso639-3代码映射(词典样例:OSX英譯廣東口語詞典);减少Tesseract的依赖项以压减OCR插件的体积和内存占用;文件类型Filetype接口优化;为mingw(32位)版本加入对winrt ocr划词引擎的支持(发布包中新增gdp.ocr.winrtocr.dll插件文件);增加对运行时窗体样式文章样式改变时的状态栏信息提示;增加对dsl格式词典refurl标签target属性的支持(反馈参考);优化BtreeIndex实现以提升索引和检索效率;消除不必要的异常处理(确定不会抛出异常)以提升词典的索引和查询效率;增加基于辞書类型群组自动生成功能;个别运行时状态变量参数名称调整(以改进代码可维护性和明晰配置参数的语意,影响是否使用查询面板、是否在词典栏显示词典名称、工具栏是否用小图标、Popup窗口是否置顶/固定位置/自动聚焦,升级后的相关参数在程序首次启动时可能被重置为默认值),增加对Popup窗体词典栏显示状态的记忆与恢复;应用启动流程优化以加速启动过程;优化bgl格式词典的转码以加速词典索引的创建(转制);精简关于对话框内容;MinGW-w64-11.0.1GCC-13.2.0 updated。
2023.6.25 3E1B:增加运行时窗体样式文章样式设定机制(以实现窗体和文章视图样式的组合搭配);重构 zstd、lzma2、bz2、zip 解压实现(零缓冲)以加速 Apple’s OSX、zim、slob、mdict、aard 等格式词典的查询过程(检索效率大增的同时显著降低运行时CPU内存占用峰值);修正dsl格式词典*.dsl.files目录下的资源文件不被加载的问题;重构mdict格式词典内容的转码实现(降低运行时CPU内存峰值的同时显著提升索引和查询效率);优化FIFO缓存接口以提升 Apple‘s OSX、StarDict、xdxf、EPWing 等格式词典的查询和全文索引效率;修正主窗口面板关闭后右键菜单中缺失对应菜单项的问题;适配Debian12: 为Qt-4.8.7版本添加openssl-1.0.2zg的支持文件(以修正不能使用WebWiki型词典等问题);优化xdxfsdct_k格式词典内容的转换(修正部分字符串操作函数的歧义调用以尽可能的避免不同类型字串的转换);修正当查询输入框空置(初始无内容或被清空)时切换词典群组后不会重查的问题;修正复合短语中可能存在重复词条的问题;优化以提高当使能搜索文章时总是显示搜索建议选项或查无结果时的检索效率;优化已查得文章数量状态栏提示机制(尽可能早且不重复提示,以需及时清除提示);优化Qt信号槽参数(非必要不设参);优化macOS版本在索引OSX格式词典时的[Object-C]内存使用;修正当输入框所在工具条悬浮状态时输入内容后回车候选词列表不能收起的问题;修正重新扫描文件过程中界面卡滞(在扫描结束后恢复正常)的问题,修正在扫描词典过程中退出程序时崩溃的问题;进一步扩大右值接口的调用以提升查询效率;优化StarDict/BGL/GLS格式词典处理以加速查询过程(同时显著降低查询过程的内存和CPU占用);内置主题样式表调整。
2023.5.25 3E1A:针对QString的大量优化以提升运行效率;增加JavaScript变量以供词典中的脚本判定GoldenDict衍生版本(区别是划词版还是官方版,基于WebKit还是WebEngine/WebView2浏览器);参数Web页面的最大历史记录数量被修改后即刻(不再需要重启应用)生效;当使能搜索文章时总是显示搜索建议选项时: 修正查询结束后可能不提示查得文章数量的问题,修正点击建议的链接查询结束后文章可能跳转(到上次查询视图中的当前文章)的问题;修正通过点击文章内链接查询后可能不提示查得文章数量的问题;修正xdxf词典的描述信息中换行符丢失的问题;修正因加载词典耗时导致程序启动时传参数不能按预期工作的问题;优化以减少中间变量和临时字串的生成(提升查询效率的同时降低查询过程中的CPU内存的占用);修改Forvo词典配置界面API Key输入框为密码掩码样式且不再明文存储(在设置完成后界面上不显示密钥原文内容,在配置文件中使用Base64编码存储,升级到该版本后需要重设密钥);修正新版xdxf词典句例部分翻译与原句粘滞的问题(测试用例);优化(加速)OSX格式辞书的索引过程;修正 StarDict/GLS/Slob/Zim synonym links(or anchor) broken with & 的问题(测试用例);取消(通过编译选项禁用)鸡肋(几无用处)的资源文件通搜功能以提升查询效率;优化代码以提升运行时效率同时压缩生成的二进制文件大小;修正主窗口标题中词头文字包含&时被过度处理的问题;修正开关文件.gdautogrp未按预期工作的问题(影响3E15及后续版本,临时解决方法: 删除该文件则以之前版本的方式工作);ffmpeg-4.4.4 updated。
2023.4.20 3E19:为非Windows版本增加--toggle-scan-popup命令行参数(可在启动或运行时使能或禁用鼠标取词查询功能;参考);为stardict词典增加对sdct_r的资源单的访问支持(支持系统应用打开资源文件);修正xdxf词典文章内容中可能出现重复换行的问题(测试用例);改进xdxfstardict词典对内置媒体内容的支持(测试用例);升级(文件类词典需要重新索引)并优化Case Folding实现以提升索引及查询效率;修正当输入框词汇与当前文章词头不一致时切换当前词典分组后更新的文章内容为输入框词汇对应的查询内容的问题。
2023.3.21 3E18:拆分macOS发版x86_64arm版本(不再发布Universal安装包)以修正Universal版本在arm平台的运行问题;优化样式表以兼容在不支持audiovideo时的媒体展示效果;兼容显示个别 mdict 词典的描述信息;增加两组默认的辞书服务器(DICT protocol server);优化(提升)辞书编辑对话框的打开速度;异化WebViewjs对象名称以杜绝(更好的解决)js提权问题;尽可能的避免共用对象的重复构造及对容器参数的深拷贝以提升查询效率;在按下划词快捷键时如当前在划词过程中则(视插件实现)终止或确认当前划词操作;修正 xdxf、gls、epwing、dsl 格式词典因读取异常致全文检索和查询结果错误的问题;简化异常信息;优化linux系统ScanFlag方式的取词体验(弹出位置紧随鼠标,图标增大、背景透明等)。
2023.2.16 3E17:为MediaWiki辞书增加对ToC的支持(参考);优化mdict词典创建索引的效率及索引过程的CPU及内存占用;修正dsl格式词典因词头字符太多而致索引无限时及内存暴涨的问题(详见反馈);显式调用FIFO缓存的右值接口以提升运行效率;修正针对特定主题的CSS过滤器(针对不同主题对词典内容定制不同的显示样式,如body[gdpp-theme=darkmode]img{background:#fefdeb})不生效的问题;针对C++标准库及Qt接口的调用优化(优选右值接口)以提升运行效率;确保mingw+gcc版本链接到最新编译的ebu静态库Apple's OSX格式词典: 优化索引以提升查询效率并减少运行时的内存占用(需重建索引);修正几处因(文件操作可能的)抛出异常而导致的内存泄漏问题;格式xdxf: 新版本034支持,修正索引创建过程死循环的问题(由3E16A引入,未使用xdxf格式词典则不存在该问题)。
2023.1.20 3E16A:针对Qt4版本mdict词典查询处理的优化(提升页面渲染效率);优化异常处理以提升文件操作效率;优化dsl词典的初始化及查询过程;优化aard,zim,slob格式词典ID处理(升级后需重建索引;使用词典文件中内置的uuid,当词典文件路径变化时ID不再变动 — 故无需再次索引);修正主界面鼠标中键翻译剪切板内容功能失效的问题;修正打印预览对话框窗体不能显示在上次位置的问题;Apple's OSX格式词典: 效率优化,修正(Oxford Thesaurus of English词典)lex-link等锚点不能跳转的问题;修正在程序启动后因插件加载失败而(可能的)导致程序崩溃的问题。
2022.12.16 3E15:在首选项对话框高级页面文章增加必要时跳转到目标词典参数(默认兼容值开启);为按目录自动分组功能增加控制开关文件.gdautogrp(参数说明);为程序型词典增加超时机制(3~30秒之间,超时未返回时结束程序);修正macOS版部署后完整性可能校验失败(运行时崩溃)的问题;优化Apple's OSX格式词典索引创建过程的内存占用;mdict词典: 深度优化以提升检索效率(同时巨幅减少查询时的内存及CPU占用,需重建索引),修正因mdx中多次重复定义同一词条(内容亦相同)可能导致对应词条的查询结果中内容重复一次的问题(在3E04引入该问题);Nicomsoft OCR: 升级SDK7.1.921,适配Linux,优化初始化过程(仅需在划词配置时选取SDK的安装目录 — 运行时自动匹配32位和64位版本,多个不同版本的GoldenDict++可共享同一SDK安装目录),运行时文件不再随发行包一起发布;适配Debian 11Qt-5.15.7/Qt-4.8.7(麻雀虽小五脏俱全: 支持所有词典格式 — 包括OSX词典格式,支持鼠标/剪切板取词和OCR划词,支持bassfmod音频引擎,支持页面内调用外置 — 系统默认的视频和音频播放器):

2022.11.17 3E14:源zip格式数据解压优化以提高词典(特别是mdxosx格式)源数据的读取效率(同时减少解压过程中的CPU内存占用);修正在程序启动后即刻退出时大概率程序崩溃的问题;修正词典扫描过程中因响应界面操作及进程间消息以致程序崩溃的问题;通过辞书词条对话框保存词条时设置默认文件名为词典名称;优化Forvo词典的空间和内存占用;修正最后一个Tab页关闭后可能无法获取焦点的问题(参考);热键ESC逻辑: 若查询输入框无焦点则先聚焦到查询输入框(影响: 若已激活ESC键隐藏主窗口,在查询输入框无焦点时,则需连按两次ESC键才能隐藏主窗口);抽象接口AsyncDataRequest、AsyncWordSearchRequest 和 AsyncDataRequestRunnable、AsyncWordSearchRequestRunnable以规范各词典处理中的文章/词头及资源内容访问的处理;适用新版本pugixml接口以提高xdxfstardict格式词典的解析效率;优化索引文件读取的锁粒度以提升检索或查询速度;全文检索: 修正一处可能的未捕获异常而导致程序异常退出的问题,在全文索引未全部完成时加速未启用仅检索已索引的辞书选项时的查询过程;Apple's OSX内置词典: 适配Qt-4.8.7p,异步读取资源文件,使能DCSDictionaryCSS属性以修正个别词典样式表不被加载的问题,使能词典的语言属性(辞书信息中显示词条和释义语言);修正macOS版的app版本号不更新的问题;划词识别: 增加WinRT OCR / Windows.Media.Ocr插件(以使用Windows系统自带的OCR功能),优化WinRT OCR结果以清除中文或日文字符串中多余的空格,增加QCamera截图插件(以支持摄像头或扫描笔类视像输入设备划词)。
2022.10.17 3E13:修正bword链接跳转失败的问题;Apple's OSX内置词典: 增加词典描述信息(词典ID、供应商、版权信息等),精准友好的显示词典名称,修正Web引擎不能播放本地音视频资源文件的问题,修正anchor处理不当致查询时程序崩溃的问题,修正文章中的部分链接跳转失败的问题/修正个别词条内容不被索引的问题,修正文章内链接的部分资源文件不被加载的问题/修正css资源文件不为utf-8编码时加载失败的问题,优化索引(处理副词头和文章ID)以提高查得率(需重建索引),优化查询时内容的转换处理以提升效率全文检索: 修正在查询过程中更新词典栏时导致程序异常挂起或崩溃的问题,增加仅检索已索引完成的辞書选项(默认仍为全部检索),记忆查询参数面板的显示/隐藏状态,服务接口实现优化,全文查询界面布局优化
2022.8.19 3E11:优化主题样式内容的访问以提升页面加载速度;带有锚点的页面: 修正导航(页面回退或前进)功能无效的问题,加速常规查询后的跳转;修正打印按钮的文字及翻译错误及快捷键缺失的问题;修正页面切换时音频播放按钮不能正确反馈音频播放状态的问题;当总是显示搜索建议时,在建议内容前添加分割线以区别于查询结果的正文内容;完成对macOS系统内置词典全平台(Windows/macOS/Linux)全功能原生支持(需要索引): 查询功能正常、预匹配正常,全文搜索正常,链接及锚点跳转正常,资源加载正常(audio标签和图片正常sourcevideo标签待测),内容样式正常。
2022.7.28 3E10:查询结果导航面板的右键菜单增加打开本地辞书的缓存目录功能,辞书导航栏的右键菜单增加重命名辞书功能;切换文章标签时: 修正全文检索窗口的分组信息不更新的问题,修正收藏按钮状态可能不更新的问题;修正在后台新建的标签页中查询或打开链接时会改变当前标签页对应的收藏按钮状态的问题;查询结果导航面板不再常驻内存;修正Ctrl+Tab/Ctrl+Shift+Tab快捷键不总是有效的问题(参考);修正一处特定件下程序异常崩溃的问题;增加对macOS系统内置词典的(初步)支持: 基于词典自带索引(无需再次索引,暂不支持全文检索),查询功能正常、预匹配正常,内容样式正常;当查询操作不是由全文搜索发起时url中不再携带全文搜索参数;Forvo - Support filtering pronunciation by gender(参考)。
2022.6.27 3E0FF(Feature Final):去除(优化)大量的不必需又不必要的异常声明和异常处理以提升运行效率;增加对音频文件的播放状态的支持(注意: 当音频正在播放时点击朗读词条按钮则会停止当前播放任务(2020.12.28 2A1F))。
2022.6.18 3E0F:页面内搜索: 回退或前进当前视图页面时隐藏搜索栏,在搜索栏显式时再次按搜索热键则显示下一条内容,在弹出搜索栏时恢复最近一次的搜索文字(参考),修正大小写匹配选项在已有选取文字(高亮)时不生效的问题(参考);优化查询时资源锁的生命周期,修正查询bglslob格式词典捕获异常时可能的死锁问题;在从dsl格式词典的图片视图返回时恢复当前词典和浏览位置(参考);针对mingwTesseractOCR插件的编译期优化(禁用相关依赖库的调试输出)以提升运行效率。
2022.5.28 3E0E:修正在文章视图中鼠标右键在新标签页中查找...重置当前标签页的发音按钮状态及查询导航列表的问题;增加文章内内容搜索的完全(精确)匹配选项(详见需求):

/media/gdusage/search_ExactMatch.gif

2022.5.23 3E0E:修正epwing词典全文检索结果中的部分词条查询失败的问题(详见反馈)。
2022.5.22 3E0D:修正epwing词典查询结果中存在重复的词条内容的问题(详见反馈);macOS 版本: 修正界面语言为英语时点击设置选项(首选项)时打开了配置文件夹的问题,增加bassQt Multimedia音频引擎;修正首次部署(或全新安装)时界面语言与操作系统的界面语言不一致的问题(可在macOS中引发菜单项布局及误操作问题);增加总是显示搜索建议选项(需求参考):

…

2022.5.15 3E0C:增加对epwing格式词典color chart的处理;增加基于AutoHotkey的对文字的选择或双击取词辅助程序(仅适用于Windows平台,感谢debugfan);Add new OCR plugin using Apple’s Vision framework;修正对Forvo发音查询时网络状态处理错误导致内容不被呈现的严重问题(自版本2A26引入);修正词典编辑对话框的一处内存泄漏问题;dsl格式词典: 词头计数错误修复(不影响词条列表和查询),修正文章内容中内建卡片链接的跳转问题(参考:Fix escaped brackets handling in inside card headwords by Abs62);适配macOS arm64 Monterey 12.3.1(universal版本,同时适用于版本从10.1012.3.1的所有macOS系统 — 原生支持运行于arm64硬件上的新版macOS)。
2022.4.30 3E0B:适配macOS Monterey 12.3.1(基于 Qt-5.15.3、QtWebkit-5.212.0-alpha4-patched);全文查询过程优化、针对epwingdsl辞书的索引处理及查询过程优化(效率提升及更小的内存占用峰值);对epub格式电子图书的(实验性)支持;针对Qt4版本的迁移优化;针对全局快捷键处理的优化;修正在主界面通过Ctrl+V查询剪切板内容使用的辞书群组可能为非预设群组的问题;增加搜索时忽略索引词两端的标点符号选项(默认不生效,不建议开启;开启后并不影响含有标点符号的关键字词的精确匹配):

…

2022.4.14 3E0A:修正Close words内容总是少一条(单条不显示)的问题;补全macOS版本部分界面文字的翻译;添加配置项以使能Popup窗口获取输入焦点(默认行为)(macOSLinux系统效果不确定,需从配置文件中修改参数),禁用Popup窗口辞书栏右键菜单的辞书词条菜单项。

参考讨论:New behavior of making window foreground if launched from shell

2022.3.31 3E09:针对在打开新建页面的查询功能的优化;当查无内容时加速结束查询任务;修正配置文件不存在时程序无法正常运行的问题(3E08引入,升级时保留原有的配置文件则不受影响);在启用收起序号大于...的文章功能时,通过点击带锚点的链接或词典面板中的条目切换/跳转到的查询内容如在折叠状态自动展开;当菜单栏不被隐藏时导航栏上的菜单按钮及其子菜单项不再常驻内存,因首选项配置或用户习惯而无效的界面元素不再常驻内存

启用收起序号大于...的文章功能,请参考:懒加载以提升 GoldenDict++ 查询速度

2022.3.20 3E08:重写历史与收藏服务的相关实现以提升响应速度并减少内存占用;重写dslhide or expand optional partsExpand/Collapse article、当前文章状态切换的功能实现以节能增效;去除配置存取过程及并发索引线程中的异常处理,词典加载不再异常外溢;修正FFmpeg引擎播放个别不规范的mp3/wav音频时程序异常挂起(死锁)的问题;修正音视频目录类型词典的专辑属性被修改后词典不被重新索引的问题;xml序列化优化,对读写接口做功能拆分以提升IO效率,对配置参数进行分区(分类):

preference参数一类,词典配置一类,动态状态变量(非配置)参数一类……,各类参数间并无相互影响(可单独文件存储)。优点是修改首选项参数时不再对词典参数有影响,编辑词典参数时也不再影响首选项中的设置项,运行时的一些窗口或界面布局的状态量也不会与其它配置参数混淆,同时可提升首选项、词典编辑的响应速度。
注意配置文件文档结构改变,升级前请先备份好配置文件config.nwx,如不适用于创建基于目录(根)的群组,升级后用差异比对工具将备份的配置文件合并到新版的配置文件中去即可轻松还原词典分组和首选项等设置

2022.3.14 3E07:修正在编辑词典后全部分组中的mutedDictionaries总是被清掉的问题;收藏面板和历史面板不再常驻内存;修正当通过右键菜单隐藏查询面板后需点击两次查看菜单下的查询面板项才可以再次显示查询面板(如此多次操作还会生成多个查询工具条)的问题;配置变量: 参数更名,运行期的状态变量(非可以通过首选项设定的变量)由preferences节点移至stats节点;在音频目录的查询结果中针对专辑属性设置显示专辑或目录信息以区分曲目; 修正BASS音频引擎不能正常播放DTS格式音频的问题(简单修正未必通用,仅满足了个人曲库中绝大部分该格式曲目专辑的支持);修正语言标志图标错误(作为中国台湾省地方语言,繁体中文 — 标识tw不再有独立的图标)。
2022.3.3 3E06:音频目录(==>音视频目录): 修正portable模式下添加多个目录时只有第一个目录被正常加载的问题,增加对视频文件的索引及播放支持优化资源访问效率以提升对大体积音频文件的播放性能,增加专辑属性(类似音乐专辑)以支持对有声读物和音乐歌曲类音频文件分类目录的查询
2022.3.2 3E05:保存文章功能: 修正资源文件虽已存盘但无法访问的问题,修正保存资源文件可能失败的问题,修正同一资源文件被多次引用时可能被保存多次的问题;使用gdvideo(==>gdmedia)支持重新实现外置播放器功能(当不支持HTML5的source标签时不需要在查询时预先缓存视频资源到硬盘 — 仅在播放前按需缓存,含有的视频资源较大时查询效率提升明显;由系统以默认应用来播放视频,不再需要在首选项中设置相关的媒体播放器参数),统一zimmdxdslepwing格式词典对视频支持的处理;优化dsllsazip Sounds词典和音频目录的查询处理以提升效率;去除不再有效的异常处理;修正全文检索开始后新的结果返回前显示的搜索到的词条数目可能不为0的问题;修正当回退到最后一个Web页面时视图可能空白(无任何内容的白板)的问题;修正词典太多时前进后退导航按钮状态更新不及时的问题;增加查询结果中文章数超过n时折叠第n部以后的文章内容(取代收起大于多少字符数折叠文章功能实现):

将分组中常用的词典放前面,备参考词典放在后面,启用该设置仅正常显示常用的(备受关注的)词典 — 备参考词典的内容显示为折叠状态,n最小值为3,即查询结果中至少前3部辞书的内容是不被折叠的;启用该功能亦可缓解在较多数量(如几百部)的词典同时查询时因巨量HTML内容渲染较慢导致查询效率不高的问题 — BTW,对数百部词典同查结果有一百多部辞书内容且其中多部辞书内容包含有重型CSS和JavaScript的典型测试(开启构词法后查询单词gone、best等 — 仅HTML代码体积在5~10兆之间),内容渲染(css+js执行完毕)用时从未开启该功能时的4分钟左右缩减至不到10秒,效果显著。

2022.2.25 3E04:修正Web页面回退最大历史数量总是较预设值少一个的问题;修正语音合成功能可能的内存泄露问题;加速查询过程中mdxzim等格式辞书资源文件的访问,特例优化mdx词典的样式与脚本的访问
2022.2.21 3E03:修正GLS辞书查询结果不能正确反映文章的真实词头的问题;当未有选择任何辞书时,在查询结果中予以提示;优化候选词的检索效率和内存占用;优化读取词条链接索引信息的检索效率和内存占用;全文索引: 优化索引服务(按需调用 — 不再常驻内存),优化检索过程(服务按需调用,操作更顺畅;添加异常信息提示),修正查询结果中包含内嵌cssjs内容的错误, 修正词典内容巨大时(如各种Wiki内容的zim辞书)查询性能很低的问题(性能提升明显 — 查询时间巨幅减少)和因内存占用过大导致的查询失败问题(查询过程中内存增量从先前数G剧降至数M — 几可不计),修正当查询结果记录中无词条时再次导入不会更新查询内容和条件设置的问题;针对HTML内容组织及处理的大量优化;新增网络类型的辞书访问超时机制,默认为3秒(可在辞书编辑中单独设置),超时则自动终止当前的访问请求。

Web、Wik或服务器类型辞书的访问,受限于网络环境,适当的超时限制以避免程序长时间挂起 — 表现在网站不可达时,在连接超时返回前,程序界面操作不流畅或直接卡住 — 最坏的情况时所有其它辞书的结果都要在网络辞书的超时结束时才能展示出来。

2022.2.14 3E02:修正异步缓存大视频文件时线程池满员以致程序异常挂起的问题;FIFO缓存IO机制抽象化为独立接口,重构FIFO管道以灵活适配更多的数据类型,为二进制文件的访问适配FIFO缓存机制(直接映射资源文件),为网络资源访问适配FIFO缓存机制,同步更改所有辞书查询请求的实现。

相较先前的实现,少了几层胶水,管道读写效率稍有提高,无锁操作 — 对缓存IO的优化进一步释放了查询效能。

2022.2.4 3E01:修正鼠标右键弹出菜单时复制为文本项对个别HTML元素中的已选内容仍无效的问题;修正个别界面元素(简中、繁中)翻译缺失的问题;修正在线词典(Web或程序类型)内容可能导致词典列表被清空的问题;完善FIFO缓存机制以加速对词典css等资源文件的访问:

对于使用了大量css样式的zimmdx等格式的词典,提速还是有一些的,特别是在硬件资源捉襟见肘的老旧PC上,优化后的提速效果很明显 — 从理论上推算,如继续完善对二进制资源文件的访问,速度还是能有再进一步的提升的 — 基本上可以满足GoldenDict++Server功能的并发访问效能要求。

2022.1.24 3E00:增加快捷键Alt+B快速移动到查询内容的最底部(查看最后一部辞书);修正当工具栏查询输入框中内容被清除时候选列表不自动隐藏的问题;整理并重新组织部分JavaScript代码,优化个别变量的生命周期,添加JS对象方法在查询后内容加载完成前随时报告词典ID以(动态或自动)更新查询面板中的词典列表;完善FIFO缓存机制(适配常用的容器类型,使用右值引用以提升性能),基于该机制重写DataRequestWordSearchRequest(及基于它们的所有派生类)的定义及实现,同步更新(重写)依赖其功能的实现:

FIFO缓存机制使得查询内容(特别是样式表脚本内容)被及时的传输给Web前端,且页面加载结束前查询面板中的词典列表内容既已完整,所以不再需要被动或定时去刷新,查询速度提升明显。
当前影响页面渲染速度的最大因素,应还是部分粗制滥造的mdict词典中的cssjs代码的低劣实现。

2022.1.20:GoldenDict++,更快、更稳定、更高能效大(基础)版本号升级到3E,该版本的目标完全重写(新实现)UI(界面)以外的所有的基础功能接口词典格式解析部分以插件方式实现与发布,同步更新(重构或重写)UI(界面)的交互部分的实现:

3E0?版的目标是完全重写(重新实现)GoldenDict++基础(关键)组件及接口,包括词典访问查询请求缓存管理等类及它们的接口定义,并同步更新(重写)以其为基础的功能实现。
3E1?版实现对词典格式解析的完整的插件化支持 — 基于GoldenDict++已实现的插件机制和3E0?已实现功能的词典解析模块的插件发布
这个版本绝大部分的UI及操作行为将继续保持与GoldenDict一致。
无特殊说明时,该版本及其后续版本的分享方式保持不变,反馈bug和改进建议的交流方式不变,但不接受无偿的技术支持及任何有关词典排版、程序下载部署等的答疑活动


2022.1.18 2A4F:全新实现FIFO缓存机制(实验功能) — 查询内容直接引用(近乎零拷贝)以完全避免内存的频繁IO带来的能耗,减排提效并举 — 查询性能(速度)爆升(同时查询的辞书越多,词条内容越丰富,体验越明显)。
2022.1.16 2A4E:作为链接的Web型辞书,修正鼠标右键菜单复制复制为文本对查询内容无效的问题,修正文章视图高度可能失实的问题,增加右键菜单项以手动更新视图高度:

对于静态网页内容,iframe初始高度适应内容 ,不再虚高(底部大量留白)或遮掩内容,查询可立即可见,但对于内容(使用Javascript)动态/异步更新的网站(如https://naob.no/ordbok/%GDWORD%),查询耗时不确定 — 可能在较长的一段时间后才能返回结果,导致页面一直空白(高度不会更新),因此(右键菜单)手动刷新页面高度是很有必要的。
可能的问题:文档横向伸展时iframe高度不减(底部少量留白),但不影响内容显示。

2021.12.31 2A4D:外置应用播放视频的功能代码仅限于在WebKit不支持HTML5视频时参与编译;增加FMOD Engine音频引擎插件(以改变macOS系统中发音引擎单一的现状 — 主要还是因为ffmpeg臃肿且构建更新过程不讨喜):

FMOD EngineFmod Ex的现代(持续维护)版本,同样适用于LinuxWindows平台。使用bassFMOD引擎基本上可覆盖三个平台的常见音频格式的播放支持
插件仅限用于非商业非盈利性质的个人学习或教研工作;该插件使用的FMOD Engine Core API需要您严格认同与遵守由Firelight Technologies公司发布的Licensing(Legal Information);您在使用该插件过程中可能产生的任何侵犯Firelight Technologies公司商业权利的责任由您自行承担。

2021.12.24 2A4C:为LinuxmacOS版本启用应用完整性校验(防篡改)功能,部署脚本优化;修正macOS系统中历史面板显隐热键无效的问题(改用Ctrl+Shift+H);为视图View菜单下的部分菜单项增加快捷方式(热键)支持。
2021.12.21 2A4B:修正金山格式数据的StarDict词典在查询时导致程序崩溃的问题;修改词典中的视频外置播放器支持按钮的title内容为词典中的资源路径(而非缓存文件路径),为播放按钮(img)增加css属性类gd_video(以支持自定义样式),增强对外置应用播放视频的支持,为Qt4版本增加外置应用播放视频支持。
2021.12.18 2A4A:适当的使用QStringLiteralQByteArrayLiteral以提升运行(查询)效率;动态命名JS对象类实例变量以彻底封堵JavaScript提权漏洞
2021.12.13 2A49:增强完整性校验macOS版本的二进制文件更新及打包功能优化;为Linux版本在项目源文件集成打包功能。
2021.12.4 2A48:修正Linux系统下开启关闭至系统托盘区选项时系统注销可能被应用取消的问题参考)。
2021.11.24 2A47:为外置视频播放增加编译开关(HTML5媒体播放功能有效时代码不参与编译),增加生成视频播放按钮html内容的通用方法(以备为其它格式的词典添加视频支持),为视频播放按钮添加title提示信息。
2021.11.18 2A46:播放视频js接口优化;防恶意内容功能优化:

典型的垃圾词典中的恶意脚本或内容对用户的侵扰一例,在此也提醒常在词典论坛逛游的学友:请从安全可靠的源获取学习资料。

2021.11.12 2A45:增加播放视频js接口: 支持zim等格式词典内的视频文件,支持在线(httphttpsftp地址)视频播放,也可为其它格式的辞书增加视频内容的支持,①为mdx格式词典中的视频内容添加本地视频播放器支持,②为zim格式词典中的视频内容添加本地视频播放器支持。
2021.11.7 2A44(5):修正Dark主题文章滑动条配色与应用主题配色不搭的问题;隔离文章视图的JS对象方法以防避用户词典中的恶意脚本对程序运行带来的安全问题

测试用批处理脚本文件(UTF-8BOM)内容如下:

@echo OFF
echo "<script>setTimeout(function() { articleview.setDisabled(true); articleview.statusBarMessage('测试setDisabled'); },2000);</script>"
echo "<script>setTimeout(function() { articleview.setHidden(true); articleview.statusBarMessage('测试setHidden'); },3000);</script>"
echo "<script>setTimeout(function() { articleview.setHidden(false); },5000);</script>"
echo "<script>setTimeout(function() { articleview.zoomOut(); articleview.statusBarMessage('测试zoomOut'); },6000);</script>"
echo "<script>setTimeout(function() { articleview.zoomIn(); articleview.statusBarMessage('测试zoomIn'); },7000);</script>"
echo "<script>setTimeout(function() { articleview.showDictsPane(); articleview.statusBarMessage('测试showDictsPane'); },8000);</script>"
echo "<script>setTimeout(function() { articleview.sendWordToHistory('测试历史记录'); articleview.statusBarMessage('测试sendWordToHistory'); },9000);</script>"
echo "<script>setTimeout(function() { articleview.statusBarMessage('测试完成了'); },9000);</script>"
echo "<script>setTimeout(function() { articleview.back(); articleview.statusBarMessage('测试back'); },10000);</script>"
echo 'test PageView issues.'
exit 0

GoldenDict中将该脚本文件添加到程序型词典中去,类型选Html,然后使用该词典查词即可还原问题 — 原则上只要是使用了js脚本的词典(含类似脚本内容)在查询时均可触发问题。
该安全漏洞影响所有版本GoldenDict(含划词版),强烈建议升级到最新版本GoldenDict++
提醒:完全依赖HTML(+css+javascript)技术是mdict格式词典的优势,但由此生出的问题(质量良莠不齐,易被置入恶意脚本)也最多,强烈建议学友们使用来源安全可信mdict辞书文件

2021.10.30 2A43:恢复portable模式下对content目录的强制索引;索引时检查对索引目录的读写及修改权限,无权限时使用缓存目录存放索引文件,以保证索引功能的完整性;索引词典结束时避免(可能的)重复对索引目录的清理操作;修正Modern主题折叠状态的文章焦点切换引起文章高度改变(在文章较多文档较大时视图卡顿)的问题;优化Dark主题文章的标题显示(字体、配色及布局微调)。

2A3F版本开始禁用了对content目录的默认索引,导致portable模式功能bug:当配置中未添加content目录,或当程序存在于移动介质中且在不同的设备上content目录的路径不同时,该目录不会被索引。不再在portable目录下或非portable模式下用户应用配置目录GoldenDict下的特定index文件夹中存放索引文件。

2021.10.23 2A42:优化Dark主题文章视图配色(与应用界面深度融合,用户词典样式表配色自适应);修正全文搜索匹配问题(详参问题反馈修复 - Full text search: Fix search in “Wildcards” and “RegExp” modes)。
2021.10.10 2A41:资源文件缓存机制优化(通用接口,本地文件直接引用,在查询时缓存文件可同步或异步创建 — 没有效率上的负面影响),完善mdx格式词典查询结果中的视频播放支持(使用通用资源缓存接口。
2021.9.30 2A40:修正No such signalPrograms::RunInstance::finished(...)(使用音频类型的程序词典可能内存泄漏)的问题;对文档htmlbody增加gdpp-group="分组名"属性信息,以适用对不同分组的词典定制一致的css显示样式

需求来源:forum.ru-board.com/topic.cgi?forum=5&topic=49149&start=2660#5
对分组命名的格式约束要求:用空格、下划线(_)或中划线(-)来分割分组名称,名称中在首个分割符前面的字符(无分隔符时使用分组名称)即为gdpp-group="分组名"中的分组名。如某一分组的名称为ESLoxf_牛津系,则gdpp-group="分组名"中的分组名ESLoxf;某一分组的名称为ZimWiki,则gdpp-group="分组名"中的分组名ZimWiki
使用帮助:在配置文件夹中的styles目录下,编辑article-style.css,或编辑主题目录下的article-style.css,以修改文档背景色为例:

body[gdpp-group="ESLoxf"] {  background-color: yellow;  }
body[gdpp-group="ZimWiki"] {  background-color: red;  }

虽然使用了相同的主题,但以上css代码为不同的两个词典分组的查询结果页面设定了不一样背景色。

2021.9.21 2A3F:修正首选项设置中触摸屏手势选项Tooltip的内容错误问题;修正.zips音频档词典无名文件(文件名为.后缀)不被检索查询的问题,从索引中排除不含有未名文件的文件夹路径;修正.zips音频档词典存在分类目录时,词条检索不到的问题;在帮助菜单下增加打开缓存目录菜单项(以便于用户查看或删除程序运行时生成的缓存文件);修正缓存目录(在Linux平台)可能被系统自动删除的问题(使用标准接口获取应用的缓存目录);修正音频文件目录(内的文件)有更新但索引不更新的问题;portable模式下,morphology目录无效时反馈建议的目录信息,修正如文件系统中不存在content目录或某个自定义目录时依根目录的词典自动分组操作无效或结果错误的问题;portable模式下废弃特定的content词典目录和portable目录(非portable模式下用户应用配置目录GoldenDict文件夹下)特定的index索引目录 — portable目录(或用户应用配置目录GoldenDict文件夹)下仅用于存储用户配置文件:

如已习惯在portable模式下将词典文件存放在GoldenDict程序所在目录下的content文件夹,则需要在编辑菜单辞书项打开的对话框的文件页面中添加该目录,同时勾选递归搜索(生成的索引文件将存放在content目录下的.gdindex文件夹中);不建议继续将辞书文件存放在GoldenDict程序所在目录下的content文件夹中[本次修订于2A43版本撤销]。
portable模式索引文件存储同portable模式一样 — 但生成辞书ID时使用绝对目录;非portable模式下每个系统用户拥有自己的配置文件;在添加相同的自定义辞书目录时不会重复生成索引文件。
该索引机制的主要优点是,词典目录中的词典包括索引文件均可在网络用户或不同的本地用户间共享
除索引文件命名机制不同外,在用户体验上已无portable和非portable模式的差异。
注意:如果程序对自定义辞书目录下的.gdindex目录没有读取或写入权限,则在GoldenDict++所使用的缓存(临时)目录下创建索引文件夹。升级到该版本后的首次运行,portable模式时运行目录下content文件夹中的辞书会被重新索引一次portable目录下或非portable模式下用户应用配置目录GoldenDict文件夹下的index索引目录包括其中的文件已被弃用。
.zips音频档检索问题详见讨论 Is it possible support zipped sound dir? and how?:问题修正后所有文件均可被索引查询,压缩档中根目录下的无名文件对应的索引字头为/,压缩档中特定路径下的无名文件对应的索引字头为路径/,即可按单词或文件名模糊检索,又可按所在目录路径/文件名精准检索。

2021.9.6 2A3E:清理(彻底删除)无效代码(不再保留仅有参考意义的官版兼容及Windows Hook(鼠标取词支持)等相关的代码);修正在Linux系统下选中取词功能时Ctrl+C触发取词的问题:

问题描述:if scan pop-up is enabled, then ctrl+c of anything will be looked up in goldendict. For example, if you ctrl+c copy a file, the directory of the file will be looked up.

2021.8.31 2A3D:变量更名internalPlayerBackend=>pronouncer(受其影响,升级后须在首选项的音频页面重新选择一下音频播放引擎 — 默认仅需打开首选项对话框点击OK按钮即可);修正访问网络资源或Web型词典时重定向url为相对路径时跳转失败的问题;强化对不使用浏览器标志(UA)的处理;修正mdx格式词典一次查询返回多段文档(关联或构词的内容)时,前后两个词头文档内容的尾首可能粘合在一起(表现为衔接内容未分段)的问题;对网站型词典(未勾选作为链接)可能发生的重定向次数做限制(超10次则报错),同时修正返回内容的html头中含<meta http-equiv=refreshcontent=“秒数;url=目标链接">时目标链接内容不能正确加载(跳转失败)的问题:

错误信息:协议“gdlookup”是未知的 Failed to load URL gdlookup://localhost/目标链接. QtNetwork Error 301
当有自定义User-Agent内容时,则用自定义内容完整替换NetworkRequestUser-Agent(伪装成其它浏览器),否则仅从NetworkRequestUser-Agent中删除软件应用标志(与官版GD兼容);注意:当前的不使用浏览器标志(UA)及其自定义的User-Agent的处理对MediaWiki型词典和未勾选作为链接Web网站型词典无效(适用范围同官版GD)。

2021.8.20 2A3C:修正portable模式下自定义(外置)词典目录改变并重新添加后,其下词典被重新索引的问题:

无论是查词还是全文搜索,真真正正的索引一次,随处可用!只要运行在portable模式即可!
影响:因改变了portable模式运行时词典ID的生成算法(使用词典文件相对于索引目录的相对路径),从低版本升级上来时portable模式下所有的本地(文件)词典(morphology除外)的ID会被重新生成,故词典都会被重新索引一次(在词典较多时首次启动耗时会较长);如在不同的自定义词典目录中存在相同文件名的词典,且每份词典相对于其所在自定义词典目录的位置均相同(相对路径均相同),则这些词典的ID是一样的(尽管每一份词典的内容可能是不一致的,但均会被认为是同一部词典) — 仅有最先被索引的词典被认可(参与查询)如需避免这种情况,将同一词典的不同拷贝放置在不同的文件夹(路径)下或简单修改词典文件名即可

2021.8.13 2A3B:mdx格式词典mdd资源文件中的未压缩数据在读取时将被直接引用;修正Favorites栏自建文件夹下的词条不被判定为已收藏词条的问题(点不亮收藏按钮的蓝色标星);修正不同分辨率下Popup窗体工具栏的搜索框群组框高度违和(与工具栏上其它按钮高度不一致)的问题。

在不同分辨率(+dpi)的显示器上工具栏的高度是不一样的,同一尺寸的显示器,分辨率越低工具栏看起来可能越ugly,这种情况,可根据显示参数,通过Qt的自定义样式表去设定这个工具栏和其上按钮等界面元素的高度。
mdd中的资源文件,部分文件可能是未被压缩过的,如png图形文件,在读取这些文件时不会再产生中间数据的拷贝;对含有未被压缩数据(如高分辨率的png格式文件)的mdict(图形)词典将有显著的效率提升。

2021.8.9 2A3A:链接提示信息中包含页面内#锚点信息;增强对anchor跨页面(词条)#锚点的处理;带#锚点的链接词条与本页词条相同时,不再重新查询,而是直接页内跳转;调整zim格式词典的内置样式表以修正最新的Wiki类型词典页面宽度不能满屏的问题;修正zim格式词典的查询内容,点击带页面内锚点跳转出错的问题,同时增加对该格式词典的页面内锚点的支持;为Linux版本开放bass发音引擎;对文档htmlbody增加id="gdpp-theme-(主题标志)"属性信息,以适应词典对不同主题定制与主题一致的css显示样式;消除js脚本和css样式文件在读取时的中间内容拷贝以减少查询时的时间和硬件资源消耗;起始页、帮助页和新建页(均无用户词典内容)中不再加载用户级别jscss文件内容;扩展原有的用户级别全局js脚本功能为用户级全局HEAD元素内容(User-level’s Html HEAD Elements)文件:

user.gjs文件的内容不再仅限于js脚本,符合HTML标准的head元素均可。
如在此前版本中已使用全局user.gjs功能,升级时需对该文件内容做一点儿小改:在起始插入<script>,末尾追加</script>即可。
修正锚跳错误: 协议“gdlookup”是未知的 Failed to load URL gdlookup://localhost/锚点词头#锚点
完美支持当前词头(锚点词头)页面内锚点的跳转,阅读zim档案的Wiki系辞书内容(强烈推荐)越来越方便了;
注意:因多词典内容同时展示时相互间不能有效的隔离HTML元素及属性内容,GD++(包括原版GD)的页面内锚点的支持是不完美的,故对zim格式现有的修订只能支持到锚点单词与当前文档词头相同的情况,当锚点词头与当前词头所查得的内容不同时,锚点的点击可能会是无效的。

2021.8.6 2A39:在xdxf格式词典的文档处理过程中数据内容不再转换为中间编码UTF16字串(直接处理utf8)以提升效率;修正收起大于[…]字符的文章功能对mdx格式词典无效的问题;下载或保存文章时的文件资源在保存时不再产生内容数据的临时拷贝、通过带入长度参数优化查询内容拼接过程中常量字符串的处理、优化查询内容拼接过程中临时变量的生命周期(适当外延、正则结果引用)、资源处理过程中mdx等格式词典css样式表的隔离处理不再产生中间内容(处理时引用源字符串中的子串)、全文搜索时查询结果的排序方法中不再生成中间内容(处理时引用词头字符串的子串)、显式优化Qt的字符串拼接以提升查询结果(文档和文件内容)的处理效率:

代码层面的优化尽可能的使用已有内容的引用,通过容器再用来减少内存再分配的次数,定长内容在拼接时通过传入长度参数来减少拼接时间或中间变量的生成。在代码中直接调用QStringBuilder方法拼接字符串以避免歧义。查询效率提升显著 — 对离线词典,即便是词典较多,查询可以瞬间出结果(内容瞬时展现出来)
排除掉网络类型(包括需要联网获取数据的程序类型)的词典,如果说还有什么性能瓶颈,那就是一些内容结构复杂且使用了未经优化的css样式和js脚本的mdx格式词典了 — 部分质量低劣的mdx词典内容中甚至包含了百度站长工具、谷歌统计工具、广告平台等功能代码(查询时产生额外的联网请求数据和执行脚本的消耗,如存在恶意脚本或引发程序功能错误) — 多为爬网的数据未做清洗,个别或是词典制作者主动加入,请审慎对待这类词典。

2021.7.28 2A38:主题样式表优化(去冗余),修正深色主题样式表中的错误项;在查无内容的建议页或空(无内容)页不再展示GD++的帮助导航内容(iframe页内容);对常用到的字符串变量执行先期全局初始化以提高查询效率;规范并固化版本号机制;对自2A24版本始添加的护学模块加入编译期配置参数,默认选项下对应的功能代码及库文件不再参与编译。

固化GD++的帮助导航内容(iframe页内容)功能:导航主用于快速访问GD++的帮助网页和新版本检测,启动时首页显示,新建页面仅在当前GD++有更新时显示。
全局初始化后的常用字符串变量,在运行时会被直接引用 — 不会再有或减少了临时的初始化或复制消耗,在提升效率的同时降低CPU占用;在老旧配置的机器上会有较明显的查询体验提升。

2021.7.25 2A37:优化查询内容中的js脚本;剪裁掉tesseract-ocr中的多余功能(提升效率同时减小体积和运行时内存占用),改用静态编译以提升划词插件运行效率;更新tesseract-ocr解决系统资源(信号量、互斥锁等的句柄/内存)泄露问题。
2021.7.20 2A36:UI部分代码Review,清理(注释/删除)无效/无意义/冗余代码,个别接口向Qt6做兼容修订;当前为最新版本时新建页面中不再展示GD++的帮助导航内容(iframe页内容);Popoup窗体初始化时不再加载Blank Page初始内容及GD++的帮助导航内容(iframe页内容):

Popoup窗体的WebView仅创建一次,且在显示时几乎总是加载有查询内容,故初始页面内容对用户是不可见的,也不会如在主窗口中新建页面时带来明显的flicker

2021.7.4 2A35:修正Popup弹窗的当前词典分组中的已排除词典可能无效(已muted词典仍然参与查询)的问题(确保Popup弹窗的词典工具栏不显示时当前词典分组的已排除词典设定有效);提升Popup窗口查询速度(避免在快捷查询时不必要的词头匹配耗时及高CPU等硬件资源占用);增加文章视图操作快捷键Alt+T以快速定位到文章顶部(定位到第一部辞书):

与官方Add an option to avoid auto-scrolling out of top dictionary的设计思路和实现都不同 — (GD++中)不做过多的冗余实现(保留原有的默认定位到原文章中当前辞书的行为),在需要显示第一本辞书内容(定位到文章顶部)时,请按该组合快捷键。
Popup弹窗中支持对*、?、[、]字符(通配符)的精确查找(同主窗口输入框的行为一致 — 需使用前置符\来修饰),修改阅读模式右键菜单的Popup查询、Ctrl+C+C查询、监控剪切板查询、命令行输入查询的行为 — 精确查询粗略匹配(通配符被忽略)。

2021.7.1 2A34:二进制文件增加自校验(防篡改)机制(敬告: 请勿从非指定频道下载GD++版本的程序文件!)。
2021.6.23 2A33:禁用log功能以提升运行效率;修正MediaWiki词典查询结果中文章重复及oga音频文件不被播放的问题(参考12);更新翻译文件(修正个别翻译错误);修正词典对话框中分组编辑的快捷键操作失效的问题;优化mdx格式词典的视频缓存处理

参考《关于GoldenDict++查询性能提升的一点思考》,视频缓存改用异步任务 — 避免死锁问题又不影响查询效率;如有需要,抽象的文件缓存处理方式可以方便的添加到slobzim等支持视频内容的词典格式。
运行时参数--log-to-file不再有效

2021.5.28 2A2F:Qt5(.9.9): Backport common&important fixes and other Security&Stability Updates with qtbase modules from source-branch of Qt-5.12.11,3rdParty updated to newest;独立Windows版本的取词功能为单独的进程模块:

2A2E为最后一个使用Windows``Hook取词技术的版本。
原因之前已多次阐述,虽已取消过但后又加入,本次改造彻底将其独立为进程模块 — 删除了Windows划词使用的共享内存通道,与取词程序的信息交换使用原有的QtSingleApplication已实现的通信机制。基于前述安全原因+取词对软件的适应性并不高,单独的取词进程模块不会随发布包分享(新发版本不携带取词进程,即不再有取词功能 — 可下载外置应用以支持该功能),也强烈建议使用2A2E及之前版本的学友关闭内置的取词功能

2021.5.27 2A2F:修正xdxf词典因空的元素标签导致文档结构错误的问题 — 个别词典未规范按照xdxf格式组织数据引发渲染问题,完善xdxf词典对非标标签的兼容处理,修正查询内容不能联网发音的问题。

测验样例来自瑞典语词典

2021.5.21 2A2E:整理代码 — 剔除不再使用的代码,内联优化几处可提升效率的函数调用;剔除原有与官版兼容的更新检测和更新文件下载功能,固化更新检测功能 — 只提醒有新版本的存在,程序不再内置下载安装包等原有的升级功能:

删除了定时更新和通过帮助菜单下点击检查更新的检测新版本的方式,删除了由用户确认的升级包下载功能,改用启动后的首页或新建查询页中的导航页内容携带的版本号来完成升级校验,使用GoldenDict自身的状态提示功能(显示在界面左下方)来提醒新版本信息,由用户自行前往导航页中的升级下载页面获取基础包或升级文件。
首页或新建页面下的导航页主要用于划词版文档的主题索引,可快速链接到划词版的安装、使用等帮助说明文档。

2021.5.8 2A2D:修正源码在Debian中编译时X11头文件与Qt头文件定义内容冲突的问题;更新德语翻译文件并添加瑞士德文翻译文件de_CH.ts(qm)更新flash插件文件(仅适用于Windows版本);为Popup窗口工具栏增加快捷划词按钮。
2021.4.28 2A2C:修正深色主题下辞书信息对话框和全文索引对话框界面布局表现与其它主题不一致的问题;修正深色主题在不同分辨率下的Qt组合框标题栏表现不一致(上下位置不对称)的问题;修正(通过延迟初始化来尽可能的避免)随Windows系统启动时可能出现的卡死在启动界面的问题。

GD++增加--delay参数 — GD++在启动时会延迟5秒再继续执行;该参数仅对Windows系统有效。
进入首选项的界面页面,取消勾选随系统启动,点击OK关闭对话框,然后打开首选项对话框重新勾选随系统启动后点击OK关闭对话框,即可为GD++的自启动项增加--delay参数。

2021.4.19 2A2B:Web网络的HTTP访问支持自定义User-Agent(来替换掉应用标志);辞书词条对话框和全文搜素对话框在打开时聚焦到文字输入框,调整界面元素的Tab键响应顺序;为32Mingw版本在编译期开启DEPASLR支持;增加深色主题

User-Agent仅针对因Web请求(WebWiki型词典)发起的Get,即便对网站有效,最终还是受限于WebKitWeb技术标准的支持。

2021.4.8 2A2A:为收藏列表增加词条按字符(升序)排序功能;修正DelCtrl+C键对已选中的历史记录和收藏记录面板中的词条失效的问题;为划词增加工具栏按钮和托盘区菜单项,点击按钮或托盘菜单项即可划屏取词(释放键盘)。
2021.4.2 2A29:修正LinuxmacOS系统下报MainWindow::scanEnableToggled无效的问题(可能导致工具栏取词使能按钮无效);修正保存文章中部分anchor的链接信息丢失(不能正确转码)的问题;Windows版本重新使能鼠标悬浮取词功能,考虑将该功能独立到单独的进程以避免Hook技术可能导致的程序或操作系统的不稳定问题;修正因mdx词典一次查询结果中单部词典返回文档过多导致的WebView渲染性能下降问题。
2021.3.30 2A28:不再缓存Epwing词典根目录(以使得对该类词典文件的访问行为与其它格式词典一致):

注意:该变更导致生成的Epwing词典ID变化 — 升级至该版本(包括更新版本)会使得Epwing词典被重新索引一次

2021.3.22 2A27:portable模式开放对音频文件目录的支持,索引文件存放在对应目录下;Fix around issue: Add minimize and maximize buttons on titlebar of EditDictionaries’ dialog;划屏可选静态截图(使用外置工具,命令行wingraber);更稳妥的方式解决macOS中退出时可能崩溃的问题。
2021.2.22 2A26:优化日志接口,优化网络资源类词典的日志输出,重新使能--log-to-file日志输出功能;修正查询结果中存在dict server词典但(因匹配不到词条)文章无内容的问题;解决macOS中通过Dock栏右键退出时可能发生的崩溃问题;修正从查询工具栏切换到查询面板后查词(匹配)导致程序崩溃的问题;重构Popup窗口使其更方便于快捷查询操作:

工具栏使用Toolbar组织 — 紧凑布局以缩减屏占空间;pin状态不再显示标题栏以避免无用的屏占空间;非pin状态可调整大小;工具栏左侧pin按钮,最左侧关闭按钮,最右侧显隐词典栏按钮;工具栏中的标题区域可按下鼠标移动以改变窗体位置;词典栏强制右侧竖排显示且默认隐藏以缩减屏占空间;弹出窗口时鼠标尽可能的指向关闭按钮以便于快速隐藏窗体。

2021.2.16 2A25:工具栏样式调整;增加对zim格式词典source标签的poster属性的转换处理;为Qt4版本增加对webpwbmp图形格式的支持;同时DSL词典避免(当后缀不包含.dz时)同一路径被测用两次的问题;修正弹窗查询输入框样式违和macOS下尤为明显的问题;portable模式下构词法可以放置到content目录下;在首选项对话框中为触屏手势增加开关选项。
2021.2.7 2A23:修正弹窗首次查询所使用的词典未过滤掉已分组中被排除的词典的问题;修正主窗和弹窗使用相同的词典分组在主窗使用阅读模式查词时,主窗分组被排除而弹窗分组未被排除的词典不被查询的问题(确保阅读模式下两个分组中未被排除的词典都参与查询);调整阅读模式下弹窗查得的文章顺序(打开链接:主窗当前词典+弹窗分组词典+主窗分组其它词典;普通查询:弹窗分组词典+主窗分组词典);确保索引目录存在(尽可能的避免程序启动或扫描词典文件时报 Can’t use index directory to store GoldenDict index files 及未生成索引文件的问题)。
2021.1.28 2A22:解决zim格式打包的最新wiki词典文件信息的语言不被解析识别的问题(更新语言代码兼容 ISO 639-2/3/5);修正zim文章内的部分链接跳转无效(查询失败)的问题;修正含有某些符号(如%、?、&等)的词头查询不到的问题;更快速更安全的读取索引数据;优化辞书词条对话框: 紧凑布局,加速访问同时解决词条过多时导致界面卡死的问题,加速过滤条件改变后的列表刷新;修正词典枚举过程中stack overflow导致程序异常退出的问题(在程序启动或重新扫描文件时偶尔出现);增加.gdignored魔法(扫描词典或索引时忽略目录);解决部分dsl格式词典文件信息的语言不被解析识别的问题;进一步完善语言判据及匹配逻辑(更好的支持语言全称或别称匹配语言代码)。

.gdignored:当有大量的资源文件(数量(百)万计)存在于资源文件夹中,但这个文件夹下没有任何词典文件却在扫描目录的设定范围内,启动GoldenDict或扫描词典文件时,会在这个文件夹下耗费数十秒至数分钟。当目录中存在.gdignored文件时,该目录的所有子目录在扫描时将被忽略,可以有效的提升索引效能。 占个坑:对语言判据信息使用自定义配置文件,来存放ISO 639-2/3/5相关的代码定义信息及对应的语言旗标,ocr也用这些个功能,需独立出来封装个库文件。

2021.1.20 2A21:修正zim格式解析srchref存在的问题,合并link的hrefimagescript等的src处理以提升效率;修正在词典编辑对话框中重新扫描词典后顺序调整及分组编辑的右键菜单功能失效的问题;portable模式开放对自定义词典目录的支持,在对应目录下创建.gdindex目录来存放该目录(包括其子目录)下的所有词典的索引文件;划词设置界面调整;简化网络管理器对数据接收状态的转收(冗余)处理;bgl词典索引和查询处理的细节优化以提升能效;针对aar、bgl、dsl、zim、slob、sdict、xdxf、dictd、stardict、dict_server格式(无外置样式表):统一处理词头和文档标签以便于样式的一致设定:

使用全局标准的css样式:定义并使用了.gd_headword.gd_body全局类,对于xdxfzimslobdictdaard格式不添加额外的gd_headword

2021.1.14 2A20:修正Qt5WebKit不显示tif格式图片的问题(在GoldenDict中无需再做额外的格式转换且不再直接依赖libtiff等库文件);修正历史记录和收藏记录中的非英文词条可能乱码的问题;为分组编辑的操作按钮增加图标;收藏菜单中的添加菜单项的图标和文字状态与工具栏的收藏按钮的图标和文字状态保持一致;优化文章tab页标签的右键菜单及其行为:

当右键点击到非当前文章页面的标签(简称点选文章)时,弹出菜单项的关闭当前页面描述变更为关闭页面,其行为由关闭当前文章变更为关闭点选文章关闭其它标签页的行为由关闭当前文章除外的所有文章变更为关闭点选文章除外的所有文章。

2020.12.28 2A1F:为音频播放增加停止功能

点击工具栏的朗读词条按钮:当前有音频正在播放时,则停止播放,否则执行词条朗读功能。鉴于词条朗读一般情况下时长较短,忽略增加停播后的恢复播放功能的需求。

2020.12.20 2A1E:修正多屏时,在非主屏上划词或取词的Popup窗口位置问题(确保Popup窗体出现在鼠标所在的屏幕上),及在非主屏上划词幕布可能出现不会铺满屏幕的问题;修正主窗口最大化后,从最大化状态恢复时窗体位置错误的问题。
2020.12.18 2A1D:Qt5(.9.9): Backport common&important fixes from source-branch of Qt-5.15,and other Security&Stability Updates with qtbase modules.
2020.12.14 2A1C:Qt5(.9.9): Backport common&important fixes from source-branch of Qt-5.12,3rdParty updated to newest,unicode CLDR(Common Locale Data Repository) updated to v35.1,network module now supports openssl-1.1&dtls and new feathers,and other Security&Stability Updates with qtbase modules.

For Security&Stability&Speed, Webkit is now extra feathered with css3 text, css3 text-line-break, mathml, xslt, netscape-plugin-api, modules, custom elements, custom scheme handle, no accelerated-2d canvas, no geolocation, no quota, no media source, no media capture, and no video — but embed video with flashplayer is still supported.

2020.12.9 2A1B:Qt4: Backport some common&important fixes(CVE-2013-4549, CVE-2015-0295, CVE-2015-1860, CVE-2015-1859, CVE-2015-1858, CVE-2016-1004, CVE-2018-19872, CVE-2020-17507…) from Fedora Review
2020.12.8 2A1A:修正缩放比例不为1时作为链接的网站Web类型辞书的页面内容显示高度错误的问题;修正文章视图中水平滑动条与垂直滑动条样式表不一致的问题;修正Qt4版本关于对话框中版本信息中文乱码的问题;修正全新部署(或升级前未删除旧的参数文件)参数的默认值可能不生效的问题,修正因部署目录变动导致的ocr、划屏和音频引擎失效而必须在首选项对话框中重新配置的问题(2A18引入)。

无需重置配置文件既可从旧版本无缝顺滑的升级到新版本啦;配置文件中仅保存插件文件名 — 程序从与其同目录的gdp文件夹下寻找并加载同名插件;针对OCR的数据目录设置,如果目录不再存在或没有手动重置过,则默认从程序所在目录下的tessdatansocr文件夹加载语言识别文件。

2020.11.28 2A19:优化辞书列表的刷新机制(提交查询后秒内如页面未完成加载(渲染)则主动更新辞书列表,辞书列表做到秒出);修正因开发语言多态特性使用不当引发的多处内存泄露问题;修正索引文件创建后文件的写缓存可能不被释放(内存泄露)的问题;优化一处创建索引文件时影响性能的实现;修正词头(索引关键字)超过特定长度(默认256)时查询不到对应记录的问题。

一本离线辞书中,关键字(长度)超256个字符的记录应该不多,即便有较多的存在,这种情况下以256个字符做索引关键字,关键字相同的概率应该也是较小的 — 即便有冲突比着野蛮的丢弃以至无法查询到对应词头的内容的影响也是好的。

2020.11.22 2A18:修正Linux版本缺失tts引擎相关动态库的问题;Windows版本删除原版中带有的取词功能(这个功能模块使用的技术容易被杀毒软件报毒 — 详细原因见前述);优化辞书索引和全文索引处理;规范Web和辞书(epwingmdx)缓存目录以便于管理;为mdx格式辞书提速 — 优化查询处理,优化重复访问含有视频内容的词条的访问处理(避免重复刷新缓存文件);为Qt4版本mdx增加视频支持;对频繁访问的网络资源进行加速 — 使用缓存(参考);字符转码效率优化(类xml辞书内容加载到xml文档中既已转码成utf8,无需再次强制转换);修正在DictionaryBar上快速频繁的点击辞书标签时导致程序崩溃的问题(重构程序类型辞书的查询处理,优化WikiWeb辞书的处理);修正在词条列表匹配结束前关闭(退出)程序,会导致程序崩溃的问题;修正收藏夹中的文件夹的展开或收起状态可能不被保存的问题;修正打开首选项对话框然后点击取消按钮或直接关闭对话框后音频引擎失效的问题。
2020.11.15 2A17:优化多处严重影响查询性能的实现;仅在辞书有编辑后刷新所有文章,在扫描辞书文件后仅刷新当前文章;优化收藏列表和历史列表,减少运行时内存占用,在其中 鼠标右键( 目的是弹出右键菜单而非查词)点中条目时不执行查询操作;增强收藏按钮与收藏列表的联动 — 从列表删除当前页面的单词时会同步更新收藏按钮的状态,查询单词是否已被收藏时不区分大小写(修正issue),收藏按钮状态变化时同步更新按钮文字以反映其真实状态(修正tab页标签右键菜单中收藏项文字失实的问题);优化以提升页面资源下载的处理速度, 修正访问Web资源可能引发的内存泄漏问题;重构辞书分组属性编辑功能(修正打开辞书编辑对话框时卡顿及切换到分组页面时程序可能崩掉的问题 — 分组越多问题越易出现);修正在程序启动时程序崩掉的问题(极端情况,极少出现);修正在查询面板和查询工具栏间切换时可能导致程序崩掉的问题(有WebWiki类型辞书时易出现)。
2020.11.10 2A16:Fix around quote possible apostrophe,and quotes also need an escape;修正网页审查员不能唤起和置为当前窗口的问题;Qt4版本:修正开着 网页审查员 窗口关闭查词页面导致程序崩掉的问题。
2020.10.29 2A15:Qt4版本:去除bgl辞书的多余换行以优化显示效果,整合字体设置以支持音标等特殊字符的显示(辞书样例:En-En-Longman_Pronunciation_3rd_Ed.dsl),修正Epwing辞书加载失败的问题,修正右键 审查元素 导致程序崩溃的问题,修正开启鼠标取词导致程序崩溃的问题,修正读取xdxf辞书名称错误的问题,修正收起文章展开文章图标全黑的问题,增加PhononPlayer音频引擎,修正不支持非全英文路径名称的问题(扫描不到非全英文路径下的字典文件),修正欢迎页面乱码的问题,修正Splash窗体背景虚黑(不透明)的问题;启用Qt4的directwrite支持Qt5版本回退使用Qt-5.9.9(该版本界面工具栏无不可逆的内存泄露);修正DictionaryBar的内存泄露(mingw+gcc版完全有效,Qt-5.12Qt-5.15Qt官方修正)。
2020.10.21 2A14:通过传递屏幕dpi参数值来提高ocr识别的精度;实现截图与ocr功能分离(增强插件可用性及使用的灵活性),增加划屏插件,增加划屏OCR助手,可以配置不同的划屏方案与ocr方案的自由组合 — 以便于用户实现自己的ocr插件(如腾讯、百度等在线接口的引入);界面 大修 | 逻辑优化: DictionaryBar中标签高度优化(再也不会因为多国语言的辞书名称而导致的工具栏忽高忽低了);优化辞书群组列表、候选词列表、搜索框文字和Tab页切换的联动实现(切换Tab页不会丢失其上下文内容);优化主窗口和Popup窗口的状态栏信息显示,当启用了系统托盘图标且系统支持托盘通知在主界面不可视时将状态信息输出至系统托盘;尽可能早的在界面初始化结束前启动辞书扫描加载工作,提高了程序启动时的速度和稳定性。
2020.10.11 2A13:增加配置选项来设置主窗口查询页面和Pop窗口的最大历史记录数量(影响回退和前进),以限制在低配置硬件上的内存占用 — 最大数量限定为255,值为0时则不使用历史记录,内存占用最小;优化Linux/Unix系统划词体验 — 使用scrot截图和xclip传递图形数据(体验跟macOS基本一致,速度上亦有保证),windows系统仍使用内置截图(更换了鼠标样式);提升UCS-4utf8字符串的效率;辞书群组编辑自动生成分组时保持当前分组页面;优化辞书加载流程(在并发线程中执行针对dslmdx等格式辞书的自定义初始化处理,在程序启动时不中断并代理gui线程的事件处理);修正重新扫描文件操作后搜索框失去输入焦点的问题;tesseract划词ocr引擎增加对SSEAVX的检测支持

划词依赖: macOS系统需要screencapture(系统内置)并启用剪切板访问权限;Unix/Linux系统需先安装scrotxclip

  • Debian:apt-get install scrot xclip
  • Fedora:yum install scrot xclip
  • Arch:pacman -S scrot xclip
2020.9.29 2A12:优化下拉复选列表QComboCheckBox,限定选中状态的改变仅在选择框范围内点选时有效,修正下拉列表不能收起的问题,优化ocr识别语言配置;去除了aardepwingxdxf格式辞书查询的关键字的h3显示(样式不可控,有点儿违和);修正辞书生成的html页面源码css中错误的属性值;优化内置的主题样式表;简化用户样式表及脚本访问接口,并将用户自定义样式表限制在配置文件夹下的styles目录下,将针对金山数据的stardict辞书的样式映射文件sdct_k.style设置到用户styles目录下;解决xdxfsdct_x格式辞书def层级显示错乱及生成多余(多一个)<br />的问题,修整xdxf预定义css — 显示更美观了;清除aar格式辞书中的多余换行符;解决在辞书分组设置界面从分组删除多个辞书可能导致程序崩溃的问题;设置在流I/O级别同时打开的最大文件数8192(支持管理更多的辞书,如操作系统不支持则改为2048);为linux版本增加tts引擎支持;解决在不同分辨率的显示器间切换时窗口可能显示在屏幕区域以外的问题;增加阅读模式

通过ocr识别语言下拉框,选择区域则该区域下所有选中状态的语言都参与ocr识别,选择某一语言(不一定要在选中状态)则仅该语言参与ocr识别,如所有区域中都没有被选中的语言,则使用英文识别。
使能阅读模式后,文章(查询结果)页面,右键菜单增加 在悬浮窗中打开链接 和 在悬浮窗中查询… 项,鼠标中键点击链接、鼠标选择内容后右键查询,按住功能键CtrlShift的同时鼠标双击翻译词条或鼠标单击页面链接,将使用 悬浮窗口 显示查询结果;该模式下的查词使用联合辞书分组(悬浮窗使用的辞书组+主窗口当前文章(查询结果)页面的辞书组)查询。
加载样式表的顺序是:(内建通用样式表 -+> 内建主题样式表) -+> styles目录下的(自定义样式表 -+> 自定义主题目录下的样式表)。

2020.8.30 2A11:解决多语言环境下epwing辞书可能不被识别问题;优化OCR引擎语言列表的加载时机及初始化机制(在识别库目录无效时,不初始化语言列表,不实例化划词引擎,以避免程序崩溃);优化索引(加载后)所占用的内存,优化辞书图标的处理(大幅降低内存占用);添加基于辞书目录的自动群组功能:

辞书来源下的文件页面所添加的辞书文件所在目录基础(根)目录,以其下级存在字典的子目录(不递归)名自动添加群组,如果基础(根)目录下存在辞书文件,自动添加以基础(根)目录名为名称的群组。

2020.7.7 2A10:音频和ocr引擎适配插件机制;查词结果的标签页(View)绑定辞书群组 — 修改辞书群组仅对当前标签页有效,多个标签页可以使用不同的辞书群组,切换标签页时群组同步切换,在标签页上提示其所使用的辞书群组信息及查询的词条内容;启用对程序自身标签页取词的开关(同 忽略程序自身的选择剪切变更 项)设置。
2020.6.22 2A0F:解决linux下ffmpeg+ao库发音引擎(ao库打开设备失败)的问题;linux系统下取词功能修复,macOS/Windows中取词功能按需挂载Accessibility/注册Hook接口:

在启用屏幕取词,但未使能取词功能的情况下不加载对应的功能模块 — 降低了资源占用,在Windows中尽可能的规避了Hook对系统及其它程序的负面影响 — 见前述。

2020.6.18 2A0E:为ocr引擎设置默认识别库目录;OCR划词功能适配macOS和Linux系统,解决macOS版ffmpeg+ao发音引擎问题,Linux版本添加bass发音引擎;为划词增加Esc按键支持。

划词过程中的按键:鼠标右键 - 取消划词;待划屏状态(划取屏幕前) Esc按键- 取消划词;划屏过程中(按住鼠标左键未释放) Esc按键- 取消划取范围,释放鼠标左键后恢复待划屏状态。
在macOS平台上,因为QMediaPlayer的缺陷(无法从内存buf的io设备播放音频内容),Qt Multimedia引擎播放不了音频,故实际有效的发音引擎只有ffmpeg+ao。
此为2A0最终版了,在2A0F版本(如有)将仅解决bug,不再做任何功能改进与更新;从2A10版本开始将逐步完成插件化的处理,代码不再与2A0版本兼容。

2020.6.1 2A0D:解决枚举不到自安装的tts引擎的问题;Add Zstd compression support for ZIM format,by Abs62

关于tts引擎:如果tts组件为32位版本的,则只能为32位版本的程序加载使用,反之,64位的tts引擎组件则只能为64位版本的程序加载使用。
ocr划词可以较好的取代鼠标取词,如确实需要,将完全以插件程序的方式实现鼠标取词功能。当前鼠标取词存在的弊端:

  1. 功能的实现分两部分,既存在于程序内部,又需要一个外挂程序来配合,相对复杂,取词能力还受限(在很多软件中取不到词);
  2. 在程序UI(主线程)卡顿时会影响操作系统或其它应用程序的运行,表现为系统相关功能(开始菜单等)或其它应用卡顿或无响应;
  3. 程序存在获取不到全局鼠标或键盘消息的可能(其它进程Hook处理后未继续传递消息);
  4. 因为使用了Hook(监控鼠标键盘及其它应用的内存信息)及共享内存(进程间通信),会被部分严苛的杀毒软件判定为木马或病毒软件;
  5. Hook技术影响操作系统运行的稳定性。……
2020.5.8 2A0C:增加对全局js脚本文件的支持:

需要在配置文件目录下新建 user.gjs 文件,在其中添加javascript代码即可,代码对查词结果页面全局有效(每个辞书都可使用其中定义的变量和方法)。例,可以在 user.gjs 中加入jQuery的代码,这样各个辞书就不需要使用单独的jQuery脚本文件了。对查词结果的内存使用会有一定的影响(降低了内存占用),同时减少了文件io操作,对结果页面的解析效率应该也会有小幅度的提升。

2020.4.5 2A0B:解决全图片辞书mdd中图片读取错乱的bug,by last_idol;开放trackClipboardChanges设置项(监控剪切版变化取词);添加Tesseract OCR划词引擎,支持多国家/地区语言的选配。
2020.3.17 2A0A:使用ebu代替eb处理epwing格式字典;增加Bass发音引擎;解决程序退出时的异常问题(表现为在部分机器上程序退出后不能马上再次启动,可能需要等待较长时间或重启电脑后才能启动);解决划取(ocr)到的字符串仅有无效字符(标点符号等)时程序异常退出的问题,解决划词时选取区域为空(无字符)时程序异常退出的问题;划词支持多国家/地区语言的选配。
2020.2.25 2A09:增加鼠标划词(原生内置OCR)识别 ,支持动态划图,支持划词时多屏间任意切换(双/多屏时划词幕布随鼠标游动自动切屏),可配置划词热键。
2020.2.6 2A08:针对各种格式辞书的索引和查询做优化;增加辞书按照路径(目录+文件名)来排序的功能;剔除bgl格式辞书显示的多余换行;为mdx辞书添加对tiff图片的支持;解决zimslob格式辞书tiff图片支持问题。
2020.1.31 2A07:全文搜索功能全面优化 — 并发索引,词头去重,界面优化;增加全文搜索结果的导入(从已保存的文件加载)导出(保存为文件)功能;为金山数据的stardict格式辞书增加样式表支持,所有该格式类型的辞书共享同一样式 — 标签对应的类名称和样式都可由用户自定义。

下载并解压sdct_k.style.7z (275 字节) ,将解压出的文件放到GD的配置目录下(并按需编辑其中的标签对照表),在自定义的article-style.css添加对应标签的样式属性。

2020.01.18 2A06:挖掘内存使用优化带来的提速潜力,查询性能显著提升;优化全文搜索和辞书词条对话框的部分实现,避免可能出现的内存泄漏和界面假死现象;消灭保存文章功能的内存泄漏;重构保存文章时的进度显示;优化组织查询到的辞书列表以缩短界面阻塞时间。
2020.01.08 2A04:解决多部epwing格式辞书时创建索引导致程序异常退出的问题(针对这格式的辞书创建索引同步进行以避免线程安全问题导致的异常退出);版本信息中添加编译时间;解决xdxf格式辞书def标签的序号错乱问题。
2020.01.06 2A02:弃用QtXml,使用效率更高的pugixml解析库,受影响部分:mdict/xdxf/stardict格式辞书和forvo在线发音的解析,配置文件的读写(配置、收藏、历史记录文件);解决启动到托盘功能失效的问题。

注意:今后将仅维护2A版本;2A01及后续版本可与之前的老版本并存(同时)运行(共享运行目录和配置/辞书/索引目录),但配置文件并不兼容且并不提供转换工具,使用2A01及后续版本您的所有关于GD偏好的个人设置(编辑菜单的辞书和首选项)都必须手动重新设置。

2019.12.26 2019年终版:解决64位msvc2019版GD不能识别大小超2G文件的问题;支持修改字典显示名称;消灭一堆内存泄漏问题;优化启动界面的信息提示;并发初始化索引和加载辞书,大大减少启动时间和重新扫描文件的耗时。
2019.03.12-2019.10.19:第三方库更新;编译器适配最新版本;界面布局调整;解决一些影响稳定性(导致程序频繁的异常蹦掉)的问题;为mdx格式辞书增加flash和视频播放支持;……