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

**URL:** <https://forum.freemdict.com/t/topic/1111>\
**Category:** 汉汉\
**Tags:** 汉语\
**Created:** [2020 年3 月 20 日 15:32 UTC](https://forum.freemdict.com/t/topic/1111 "2020-03-20T15:32:27Z")\
**Posts on this page:** 1\
**Showing post:** 9

<div class="post-metadata">

作者： ![hua](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/hua/32/11090_2.png) [@hua](https://forum.freemdict.com/u/hua)\
发布日期： [2020 年3 月 21 日 10:50 UTC](https://forum.freemdict.com/t/topic/1111/9 "2020-03-21T10:50:49Z")

</div>

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

## 可行性报告

### 结论

**完全可行**

### 分析过程

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

[FZSONG\_ZhongHuaSongPlane02\_2018111620191105100324.7z](https://forum.freemdict.com/uploads/short-url/9ZfZ1Tqb63zOmtEDIUhYgsuIGHh.7z) (19.4 MB)

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

> [@hua](#):
>
> 那抓取的时候将字体下载下来就好了，也不费事。

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

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

 ![image](https://forumcdn.freemdict.com/uploads/default/original/2X/7/749bed6197febc380fc9f2d8e28811bb842cdad9.png) ![image](https://forumcdn.freemdict.com/uploads/default/original/2X/2/262f49efc71990f0a094cac458bcb8d5de5bd537.png)  
至此就说明白了。逻辑不难，实现较难。

---

_[View the full topic](https://forum.freemdict.com/t/topic/1111)._
