申明:本文没有放字体源文件和处理源码,以防止对源网站进行非法操作,出于交流目的可以联系作者。
近期最到一个需求:网页上的字体使用了自定义字体来显示不常用字体,来达到数据变向加密效果,我们就需要从字体文件里提取出来特殊字符并生成和真实显示效果语义的对应关系。
先看下截图:
截图可以看出
쿶큔큟
被使用自定义字体文件显示成了可视化的数字。
我们如何处理?
- 解析出对应的字体文件,我这里使用的 nodejs
font-carrier
类库,从字体文件里解析出来所有字符对应的svg文件
- 把对应的svg文件转换成png图片,这里我使用的 nodejs
svg2pngs
一个命令行工具,可以把目录下的所有svg文件全部转换成png
我把 svg2pngs 源码改动了下,我只需要生成一种规格的文件,而源码生成了1/2/3三种规格的文件
- 把所有png文件拼接到一张大图上,这里我使用 go 实现
在拼接时每张图之间留下空隙,防止识别时异常
- 利用百度的文字识别接口把步骤3生成的大图里的文字进行识别
- 把步骤4识别到的结果人工简单对比下(我这里的结果里少识别了一个字符)并和步骤3的顺序对应上
- 经过上面的步骤我们就可以得到一个unicode码和真实对应字符之间的对应关系
使用
使用时即可以用这个结果文件进行替换,可以解析特殊字符,也可以实现加密