【用python玩花樣】python實現點陣字體
- 2019 年 10 月 29 日
- 筆記
來源:python編程之美
點陣字介紹
今天給大家分享的是利用python實現點陣字體,可能大家對這個名詞不太熟悉。給各位找了專業的解釋:點陣字體是把每一個字元都分成16×16或24×24個點,然後用每個點的虛實來表示字元的輪廓。點陣字體也叫點陣圖字體,其中每個字形都以一組二維像素資訊表示(來源百度百科)。如下圖,就是點陣字體

要實現這個功能要藉助點陣字型檔HZK16。
HZK16字型檔是符合GB2312標準的16×16點陣字型檔,HZK16字型檔里的16×16漢字一共需要256個點來顯示,也就是說需要32個位元組(一個位元組佔8位)才能達到顯示一個普通漢字的目的。所以我們只要去HZK16字型檔中獲取點陣資訊,拿到資訊後根據16*16點陣每個點的數據,print出不同字元即可。
python程式碼實現
首先需要得到漢字的區碼和位碼
我們知道,一個漢字佔兩個位元組,這兩個中前一個位元組為該漢字的區號,後一個位元組為該字的位號。
- 區碼:漢字的第一個位元組-0xA0,因為漢字編碼是從0xA0區開始的,所以文件最前面就是從0xA0區開始,要算出相對區碼
- 位碼:漢字的第二個位元組-0xA0

通過區碼和位碼計算在點陣字型檔中的偏移量,基於偏移量在HZK16文件中找到對應的32個位元組字模數據。
注意:在本程式碼中HZK16文件是和程式碼文件在同一目錄。如需更改,記得寫對路徑。

解析字模數據獲取點陣坐標資訊

獲取到的16*16點陣資訊,列印到控制台

來看一下運行結果