申明:本文沒有放字體源文件和處理源碼捶朵,以防止對(duì)源網(wǎng)站進(jìn)行非法操作蜘矢,出于交流目的可以聯(lián)系作者。
近期最到一個(gè)需求:網(wǎng)頁上的字體使用了自定義字體來顯示不常用字體综看,來達(dá)到數(shù)據(jù)變向加密效果品腹,我們就需要從字體文件里提取出來特殊字符并生成和真實(shí)顯示效果語義的對(duì)應(yīng)關(guān)系。
先看下截圖:
截圖可以看出
???
被使用自定義字體文件顯示成了可視化的數(shù)字红碑。
我們?nèi)绾翁幚恚?/h2>
- 解析出對(duì)應(yīng)的字體文件舞吭,我這里使用的 nodejs
font-carrier
類庫,從字體文件里解析出來所有字符對(duì)應(yīng)的svg文件
- 把對(duì)應(yīng)的svg文件轉(zhuǎn)換成png圖片兔毙,這里我使用的 nodejs
svg2pngs
一個(gè)命令行工具唾琼,可以把目錄下的所有svg文件全部轉(zhuǎn)換成png
我把 svg2pngs 源碼改動(dòng)了下,我只需要生成一種規(guī)格的文件澎剥,而源碼生成了1/2/3三種規(guī)格的文件
- 把所有png文件拼接到一張大圖上锡溯,這里我使用 go 實(shí)現(xiàn)
在拼接時(shí)每張圖之間留下空隙,防止識(shí)別時(shí)異常
- 利用百度的文字識(shí)別接口把步驟3生成的大圖里的文字進(jìn)行識(shí)別
- 把步驟4識(shí)別到的結(jié)果人工簡單對(duì)比下(我這里的結(jié)果里少識(shí)別了一個(gè)字符)并和步驟3的順序?qū)?yīng)上
- 經(jīng)過上面的步驟我們就可以得到一個(gè)unicode碼和真實(shí)對(duì)應(yīng)字符之間的對(duì)應(yīng)關(guān)系
使用
使用時(shí)即可以用這個(gè)結(jié)果文件進(jìn)行替換哑姚,可以解析特殊字符祭饭,也可以實(shí)現(xiàn)加密
font-carrier
類庫,從字體文件里解析出來所有字符對(duì)應(yīng)的svg文件svg2pngs
一個(gè)命令行工具唾琼,可以把目錄下的所有svg文件全部轉(zhuǎn)換成png我把 svg2pngs 源碼改動(dòng)了下,我只需要生成一種規(guī)格的文件澎剥,而源碼生成了1/2/3三種規(guī)格的文件
在拼接時(shí)每張圖之間留下空隙,防止識(shí)別時(shí)異常
使用時(shí)即可以用這個(gè)結(jié)果文件進(jìn)行替換哑姚,可以解析特殊字符祭饭,也可以實(shí)現(xiàn)加密