GoldenDict-ng(Linux/macOS/Windows)基于Qt5.15.2/Qt6.X版本

关于《本草纲目》mdx无法读取样式的分析:
GD确实无法读取此类mdx格式。 pyglossary也是。 ,读出来的结果是全文本,丢失了各种html标记。
GetDict.exe,Mdict.exe可以读取
简单用getdict打包后,可以读取(有html标签闭合问题)。

猜测的原因:
应该是mdx中的特殊的结构,目前无法正常解析到此类格式。
结论:
无法处理、先不处理。等后续有人提交commit吧。

原版的 GD 没有问题,见:

这个是记号文件呀,请额外注意换行,详情规范可见 mdxbuilder 随附的手册,摘录如下:

4) MDict的紧凑型html格式(Compat Html)
这个格式由两个文件组成,正文文件格式基本和2)一样,但在正文里可以使用记号。另外
一个是记号文件。

记号文件的格式:
由多个记号定义组成,每个记号定义有3行
第一行: 记号的名称(只能用数字,必须大于0,最大不超过255)
第二行: 开始字符串(可以为空)
第三行: 结束字符串(可以为空)
使用时在正文里使用`记号`(键盘左上角的那个符号)就会将后续的文字直到下一个记号前的文
字用记号定义的开始字符串和结束字符串括起来。正文里如果需要显示` 则用"`"表示。内
码应该和正文的一样(例如正文如果是用Unicode的话,记号文件也应该用Unicode)

例如:
记号文件:
1
<font size=5>
</font>
2
<br>

3
<font face="Kingsoft Phonetic Plain, Tahoma">
</font>



正文文件:
whole
`1`whole&#96;s`2`<p>`3`(hol,hJl; houl)
</>

最后在显示的时候就会被替换成
<font size=5>whole&#%96;s</font><br><p><font face="Kingsoft Phonetic Plain, Tahoma">(hol,hJl; houl)</font>

这本(本草纲目 #761)词典用的是记号文件,并且在 原本 记录 CSS 的地方也塞了JS 进去,这很 WFG。

提取,转换了他的 CSS 和 JS,供参考:

1


2
</span>

3
<span style="padding-left:1em;display:block;text-align:right;color:#0040B0">

4
<span style="color:#0040B0;padding-left:1em;display:block">

5
<span style="margin-left:0;text-indent:0;display:block">

6
<span style="color:#0040B0;margin-left:2.25em;text-indent:-1.25em;display:block"><font color=#008000>
&nbsp;</font>
7
<span style="margin-left:1.05em;text-indent:-0.75em;display:block"><font color=#C0C0C0>▸&nbsp;</font>

8
<span style="margin-left:1.25em;text-indent:-1.25em;display:block"><font color=#408000>
&nbsp;</font>
9
<span style="margin-left:2.55em;text-indent:-1.55em;display:block"><span style="background:#404080;color:#FFFFFF;padding:0px 2px 0px 1px;border-radius:3px;font-family:Microsoft JhengHei;font-size:90%">
</span>&nbsp;&nbsp;
10
<span style="margin:5px 0 5px 1em;padding:5px 1px 3px 5px;border-left:8px solid #A0A0A0;border-top:1px solid #A0A0A0;border-right:1px solid #A0A0A0;border-bottom:1px solid #A0A0A0;display:block">

12
<span style="padding-left:1em;text-indent:1em;display:block;padding-bottom:0.5em">

13
<span style="border:1px solid #D0D0FF;background:#E0E0FF;color:#4040C0;padding:0px 2px 0px 1px;border-radius:3px;font-family:Microsoft JhengHei;font-size:84%">  
</span>&nbsp;
14
<font color=#989898>
</font>
15
<font color=#FF4500>【
】</font>
16
&nbsp;<font color=#0000FF>◇</font> <font color=#8080C0>
</font>
17
<span style="border:1px solid #0040B0;color:#0040B0;padding:0px 2px 0px 1px;border-radius:3px;font-family:Microsoft JhengHei;font-size:72%">
</span>&nbsp;
18
&nbsp;<span style="background:#404080;color:#FFFFFF;padding:0px 2px 0px 1px;border-radius:3px;font-family:Microsoft JhengHei;font-size:90%">
</span>&nbsp;
19
&nbsp;<font color=#0000C0>
</font>&nbsp;
20
<br><font color=#FF4500>【
】</font>
21
<font face="DFKai-SB" size=+1 color=#BA55D3>
</font>
22
<font color=#606060>
</font>
23
<font color=#606060>(
)</font>
24
<font size=-1 color=#008000><sub>
</sub></font>
25
<font size=-2>
</font>
26
<font color=#FF4500><sup>
</sup></font>
27
<font face="Calibri,FMing-p,FMing-1,FMing-2,FMing-3,FMing-F,FMing-X,FSung-p,FSung-1,FSung-2,FSung-3,FSung-F,FSung-X,Calibri,PMingLiU,PMingLiU-ExtB" color=#008080>
</font>
28
<font color=#800000>
</font>
29
<p align=center>
</p>
30
<a href="entry://
"
31
>
</a>
32
參見「<a href="entry://
"
33
>
</a>」。
34
<p align=center><img src="
.jpg" align=middle style="max-width:50%"></p>
35
<img src="
.png" style="height:1.2em;margin:0 2px -5px 0">
36
<img src="
.png" height=16 hspace=2 align=middle>
39
 title="
"
40
<hr color=#009B50>

41
<a name="
"></a><hr color=#009B50>
42
<hr color=#009B50>

43
<hr color=#A0A0A0 style="margin-left:0.5em">

44
<br><hr style="height:1px;border:none;border-top:1px #C0C0C0 dashed;display:none">

50
<style>a{text-decoration:none}a:link{color:#1257F9}PUA{color:#FF0000}N{color:#008000;font-size:70%}</style><script>function SetCode(s){if(window.clipboardData){window.clipboardData.setData("Text",s);}else{var t=document.createElement("textarea");t.textContent=s;var body=document.body;body.appendChild(t);t.select();document.execCommand("copy");body.removeChild(t);}};</script><hr size=10 color=#009B50><font style="font-family:FMing-p,FMing-1,FMing-2,FMing-3,FMing-F,FMing-X,FSung-p,FSung-1,FSung-2,FSung-3,FSung-F,FSung-X,Calibri,PMingLiU,PMingLiU-ExtB"/><font size=+2 color=#0000FF style="font-family:FKai,FKai-2,FKai-3,FKai-F,FKai-X,KaiTi,FMing-p,FMing-1,FMing-2,FMing-3,FMing-F,FMing-X,FSung-p,FSung-1,FSung-2,FSung-3,FSung-F,FSung-X,PMingLiU-ExtB">
</font>
51
<style>a{text-decoration:none}a:link{color:#1257F9}PUA{color:#FF0000}N{color:#008000;font-size:70%}</style><script>function SetCode(s){if(window.clipboardData){window.clipboardData.setData("Text",s);}else{var t=document.createElement("textarea");t.textContent=s;var body=document.body;body.appendChild(t);t.select();document.execCommand("copy");body.removeChild(t);}};</script><hr size=10 color=#009B50><font style="font-family:FMing-p,FMing-1,FMing-2,FMing-3,FMing-F,FMing-X,FSung-p,FSung-1,FSung-2,FSung-3,FSung-F,FSung-X,Calibri,PMingLiU,PMingLiU-ExtB"/><font size=+2 color=#0000FF style="font-family:FKai,FKai-2,FKai-3,FKai-F,FKai-X,KaiTi,FMing-p,FMing-1,FMing-2,FMing-3,FMing-F,FMing-X,FSung-p,FSung-1,FSung-2,FSung-3,FSung-F,FSung-X,PMingLiU-ExtB">
</font>
52
<font size=+2 color=#0070D0 style="font-family:FKai,FKai-2,FKai-3,FKai-F,FKai-X,KaiTi,FMing-p,FMing-1,FMing-2,FMing-3,FMing-F,FMing-X,FSung-p,FSung-1,FSung-2,FSung-3,FSung-F,FSung-X,PMingLiU-ExtB">
</font>
53
<font  style="display:none"> 關聯:&nbsp;</font><span style="font-size:120%;display:none">

54
<font size=-1 color=#696969> 別名:&nbsp;</font><span style="font-size:120%">

60
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#000088>部首</font>:<font color=#FAB20D>
</font>
61
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#000088>特部</font>:<font color=#FAB20D>
</font>
62
 <font color=#000088>筆畫</font>:<font color=#FAB20D>
</font>
63
 <font color=#000088>總筆畫</font>:<font color=#FAB20D>
</font></span>
64
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#000088>金陵本 </font>:第&nbsp;<a href="javascript://;" onclick="SetCode(&apos;ebf://&apos;+this.innerText+&apos;+339@本草綱目(日國會金陵本)&apos;)">
</a>&nbsp;頁
65
,第&nbsp;<font color=#696969>
</font>&nbsp;字</span>
66
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#000088>卷別</font>:
</span>
67
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#000088>分類</font>:
</span>
68
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#000088>作者</font>:<font color=#BA55D3>
</font></span>
70
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#600060>近義</font>:

71
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#600060>反義</font>:

72
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#600060>關聯</font>:

73
<span
style="margin-left:4em;text-indent:-3em;display:block"><font color=#600060>同義</font>:

75
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#FF4500>★誤</font>:

80
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#000088>注音</font>:<font face="DFKai-SB" color=#BA55D3>
</font></span>
81
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#000088>拼音</font>:<font face="Calibri" color=#008080>
</font></span>
82
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#000088>倉頡</font>:
</span>
83
<span style="margin-left:4em;text-indent:-3em;display:none "><font color=#000088>通用</font>:
</span>
84
<span style="margin-left:4em;text-indent:-3em;display:block"><font
color=#000088>反切</font>:
</span>
85
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#000088>注音</font>:

86
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#000088>UNICODE</font>:

87
 <font color=#000088>BIG-5</font>:

88
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#000088>CNS11643</font>:

89
 <font color=#000088>漢語大字典</font>:

90
<table width=100% style="border-left:1px solid #887868;border-top:8px solid #887868;border-right:1px solid #887868;border-bottom:1px solid #887868;border-collapse:collapse"><tr style="border:1px solid #887868"><td align=center valign=middle style="border:1px solid #887868">

91
<td align=center valign=middle style="border:1px solid #887868">

92
<td align=center valign=middle style="border:1px solid #887868">

93
<tr><td align=center valign=middle style="border:1px solid #887868">

94

</table>
95
<table width=100% style="border-left:8px solid #808080;border-top:1px solid #808080;border-right:1px solid #808080;border-bottom:1px solid #808080;border-collapse:collapse;margin:0 0 2px 0"><tr><td width=80px align=center valign=middle style="background-color:#E0E0E0"><font color=#0070D0 style="font-family:FKai,FKai-2,FKai-3,FKai-F,FKai-X,KaiTi,FMing-p,FMing-1,FMing-2,FMing-3,FMing-F,FMing-X,FSung-p,FSung-1,FSung-2,FSung-3,FSung-F,FSung-X,PMingLiU-ExtB">
</font>
96

</td></tr></table>
97
 <img src="/
.jpg" width=60 style="padding:5px 5px 5px 5px">
98
</td><td valign=middle>

99

</td></tr></table>
100
&nbsp;<a href="javascript://;" onclick="SetCode(&apos;ebf://
+285@本草綱目(美國會金陵本)&apos;)"><span style="border:1px solid #0040B0;color:#0040B0;padding:0px 2px 0px 1px;border-radius:3px;font-family:Microsoft JhengHei;font-size:72%">美</span></a></span>
117
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#000088>張紹棠本</font>:第&nbsp;<a href="javascript://;" onclick="SetCode(&apos;ebf://&apos;+this.innerText+&apos;+101@本草綱目(張紹棠本)&apos;)">
</a>&nbsp;頁</span>
120
<span style="margin-left:4em;text-indent:-3em;display:block"><font color=#000088>新校注本</font>:第&nbsp;<a href="javascript://;" onclick="SetCode(&apos;ebf://&apos;+this.innerText+&apos;+277@本草綱目(新校注本)&apos;)">
</a>&nbsp;頁</span>
1 个赞

多谢,重现出来了。
应该是建index索引的时候出问题了 。

用原版gd先索引,新版gd可以读取。如果是webengine的gd建的索引(qt5.15.2的版本ok)。qt6.2.4版本的就有问题。我检查下。

看到大佬们针对WFG工具书的分析,想顺便请教一下:WFG制作的“说文解字字典”,见:WFG: 《說文解字》字典更新 他在“大徐本”右边设置了倒三角,点开就可以看到很多信息,都是有关《说文》不同版本的,很有用。但是,只能在MD里面点击可以打开,在GD里面则不行。不知大佬们能否顺便把这个问题也解决一下?多谢!

1 个赞

成功帅锅给qt [QTBUG-102612] QDomDocument parse attribute ,behaviour has changed. - Qt Bug Tracker

晕:
Changes to Qt XML | Qt XML 6.4.2.

1 个赞

这个样式问题,修复了。多谢 @demo @hua @hahaya
另外 @hahaya 图片展示的问题也处理了。
用今天单独编译的windows版本。

1 个赞

图片是mdict中截的


看里面是ebf的链接。 ebf在mdx里面是什么链接形式。 有人知道吗
@hua 华大知道吗

onclick="SetCode('ebf://'+this.innerText+'+16@說文解字注(許惟賢本)')"

要看到这个,必须配合两个东西:1、本地有相应的PDF书;2、本地要运行Gopage.exe,并编有相应的rmp文件。
敢问xiao大侠,最近的Qt版本在哪里下载?能更新一下webengine版吗?

这也很 WFG,这个协议和 mdx 无关。

参考:WFG: 漢字使用環境的建置 ㈣ —— 開卷篇

1 个赞

一直都在github。1楼
怀疑gd即使展示出来这些内容,也不能使用

1 个赞

能否看到那些书,跟GD无关。WFG大概是为了避免版权问题,没把电子书嵌入mdx,而是通过外部链接打开要查看的电子书。

1 个赞

处理了,Release win-20220416 · xiaoyifang/goldendict · GitHub

1 个赞

这个打印窗口是系统的。没辙。
可以反馈给qt,你的是高清屏吗

感谢更新。这下连《本草纲目》的图片也都显示了,太好了!

感谢不断完善更新!!请问是下载qt 6的还是qt 5.15.2的?这两个都解决了吗

都可。。。。。

试了下,点击WFG说文词典右边的倒三角仍然没反应:

单建个分组看下。

哦 单独建个分组确实可以点开了。不知道是被哪本词典影响了

qt5.15的版本貌似是可以的。qt6.2的版本不可以。估计是中间又发生了什么变化。