中華大字典[調整排版]MDX

原:中華大字典MDX

重要說明:本辭典錯誤非常多!很多字(異體)是亂碼,與本字對不上,千萬小心使用。不可作依據。一定要引用,也要和原書圖片對比。切記切記!
如:查,同,字。類似的錯誤非常多,小心使用。



中華大字典.mdx (8.2 MB)

4 个赞

谢谢改进。
可能是抓取自中华书局那个网站
希望原发布者说明一下。
后续也许会有人出新版本

來自哪我也不知道。中華書局字體沒用。

1 个赞

可能是
http://www.ancientbooks.cn/home
网页下方稍右有个联机字典,估计是这里抓取的

查询同字,并没有乱码,估计是抓取过程没有注意汉字编码问题。

1 个赞

word中顯示字體為:myFont3734093_2,還是亂碼。

1 个赞

網頁可以顯示,複製到文本就亂碼了。

我看了,这就是字体加密技术,网页版辞源也有的。

似乎無解了。。

1 个赞

成本问题罢了,如果仅想看着是对的字的话,那抓取的时候将字体下载下来就好了,也不费事。
如果想要替换成正确的字的话,应该是可行的,我还在分析字体和代码。(仅会提供可行性报告)

可行性报告

结论

完全可行

分析过程

查询的时候,会有三个 WOFF 字体加载请求。这个字体格式关系不大,WOFF网页用的而已。其中文件大小最小的就是 加密字体 。这个网站(http://www.ancientbooks.cn/home)只是会加密一个文章的几个字,而辞源会加密所有字。
以 同 这个词条的乱码字 𠔼 为例,这字不认识,还找了个网站手写查字。下面开始硬核环节,其思路同样适用于辞源网页版。
先简单说一下字体加密原理,此网站和辞源在线版均采用了我能知道的字体加密的最先进技术。我们都知道一个字在编码的时候是一个 unicode 码,也就是一些数字和字母的组合。比如 这个字在编码的时候会写成 Uni9fa2。在解码或者渲染的时候,浏览器会到字体文件中找对应的 unicode 码的信息,再将这些信息呈现出来,我说的这些信息就是上文提到的笔画的信息,笔画构成文字,所以就渲染出了文字。这俩网站的加密方式是:将某些的字的 unicode 改成 另一些字的 unicode,比如说我用 xxxx 代表 这个字,但是 的实际的 unicode 码是 U+6211,但是我只告诉你一个人我的 xxxx 代表我,那么这就我们之间的暗语了。同样的,这俩网站替换一些文字的 unicode 为另一些文字的 unicode,然后在字体文件中写上“破译暗语的东西”,那么在渲染网页的时候,加载对应的字体,我们眼睛看到的就是正常的文字了。但是复制出来还是那些 xxxx 暗语,复制出来的文字就不对了。
解包前文提到的较小文件大小的字体。得到 XML 文件,是的,字体本质上是一些数字,这些数字代表了笔画的位置、起终、上下等信息。然后再找到这些字体的 本家字体,顺便一提,好像都是方正做的这些个加密字体。这个网站的本家字体是 方正中华书局宋体字库02,我放在下面,可能有人有用呢。

FZSONG_ZhongHuaSongPlane02_2018111620191105100324.7z (19.4 MB)

从上文的较小文件大小的字体中找出 unicode 对应的数字,再到本家字体中用数字找 unicode 就是一个完整的破解流程了。
没想到之前分析辞海的经验在这儿也能派上用场,当然如果你不想破解,只想看着对劲(我似乎从来没有复制过查词结果去哪儿),那么

截图两张,仅供讲解所用,图也并没有包含所有数字,左为加密字体,右为本家字体,请注意两点

  • unicode 的差异
  • 对应数字的相同。


至此就说明白了。逻辑不难,实现较难。

4 个赞

還是看不太懂。。那現在将字体下载下来還有用麼

这里是出版方把这本字典的所有偏僻汉字集中在一起,用自定义的一个字体去显示,这个自定义字体很可能就是中华书局委托方正制作的“中华书局宋体02平面”?
https://www.pdawiki.com/forum/thread-37487-1-1.html

这种算是不得已的字体加密。

有些epub制作者把随机的一部分常用字集中在一起,用自定义的一个字体去显示,这个自定义字体还不对外公开(相当于密码本),这就是比较恶心的字体加密了。

2 个赞

没用,每个词条的密码本不一样的。重新爬,在爬的过程中,抓下来就ok。

不公开那么怎么显示?只要能让我肉眼看到,都可以破解。当然,有壳子的电子书走开。

嗯,我指的就是 得到app,精品汇等制作的电子书,把部分常用字进行字体加密,在自家app可以正常阅读。

现在自定义字体不就是“中华书局宋体02平面”吗?是每个词条还不一样吗?或许别的词条可能有“中华书局宋体15平面”中的汉字。接下来的问题是,如何在词典软件中正确显示这些汉字?

1 个赞

还是没有看懂我的分析呀。

抓取的时候,每个词条会有一个加密字体的请求,这个加密字体是 中华书局宋体02平面 的子集的变体(变在 unicode码上),大概几个 KB,抓取的时候一起下载下来, HTML 中引用这个字体就行了,不需要解密。

1 个赞

技术细节现在迷迷糊糊的明白了 :sweat_smile:

如果现有mdx缺失这些unicode码信息,那光有了字体还没法用,需要重新抓取

这玩意用文字还真难解释清楚,技术细节有点多。什么都得分析和了解。

理论上说有了加密字体就够了,但是现在哪儿去找加密字体的链接呢,那个链接是随机生成的。所以重新爬就可以解决。

我这种文科生如果只是理解大致的原理还不算难。

但是没想到自定义字体还有

人家在第五层,而我只在第二层。

只要制作方高兴,他还可以多套几层加密,反正是一对一函数转换哈。

如果面对面拿个代码给你讲解你就马上就懂了,这种一对一的就够难了。只要配合抓取频率限制(点名在线辞源),想要抓就难的一批。

辞源的字体供应商也是方正。

无根据猜测,网页版最底层的也是“中华书局宋体00平面”、“中华书局宋体02平面”和“中华书局宋体15平面”三个ttf字体。虽然基本的原理跟上述一样,但中间的具体加密算法和防爬虫技术不一样。

2 个赞

技术细节都是一样,辞源是加密了所有字,辞源的字体是:方正辞源宋体,但是找不到下载,经过比较,他的本家字体可以是:方正宋体S SIP超大字符集。(算是分析结果都告诉你们了)

3 个赞