> [color=#58f][name=Paoyung][time=Jun 17, 2022][:snake: ℳ𝒾𝒸𝓇ℴ𝒫𝓎𝓉𝒽ℴ𝓃 隨手記](/@PaoyungChang/mpy_trifiles) > [color=green] <span class="c_maroon">相關主題 👉 [微控制器上字庫的選擇](/@PaoyungChang/fonts_selection)</span> 選擇 --- 從沒想過自己會和字庫這個主題糾纏這麼久呀!🤷‍♂️ 自前陣子接觸到適合 MicroPython 使用的字型後,陸陸續續做了幾番測試,也查詢到一些資料,例如[黑大](https://blog.darkthread.net/)就寫了不少篇與字型相關的文章,而在「[閒聊中文點陣字型授權-黑暗執行緒](https://blog.darkthread.net/blog/chinese-dotmatrix-font-license/)」的文章中更提到了授權這個頭疼的問題,讓我意會到可使用於商業用途的重要性,然後找啊找就發現了[Cubic 俐方體](https://github.com/ACh-K/Cubic-11/blob/main/README.md),它允許商業或非商業性質修改及使用,雖然只有 11x11,但放在 SSD1306 這類的小螢幕上還滿搭的,相較於 15x16 的字體可以顯示更多的內容,或許字體稱不上美觀,甚至要用呆萌來形容,但重點是不用再擔心授權的因素而踩到雷,於是馬上就在 github 向作者投上我的星星:star:。 > [color=green]<span class="f_sz11">[俐方體11號 github](https://github.com/ACh-K/Cubic-11)</span> > <span class="f_sz11">[俐方體字型授權內容](https://github.com/ACh-K/Cubic-11/blob/main/OFL.txt)</span> ![](https://i.imgur.com/dfgHYMb.jpg) Python dict --- 作者提供的字庫檔格式為 TTF,字量為 10216 字,相對於陳大 `ming.py` 有 28922 字來說小得多,按作者提供的收錄字數數據已包含了常用國字標準字體 4808 字和 Big5 第一字面 5401 字,這足以應付一般的應用了。而若要像陳大 `ming.py` 那樣便於 MicroPython 調用的話,就要把 TTF 格式轉為 Python 的 dict 資料格式,對於字型格式的轉換我並不擅長,但先讓它把字型畫在畫布上再截取 bitmap 倒是滿簡單的,使用 Python 的 PIL 模組跑一下子就可以得到 dict 格式,簡單粗暴的程式碼就不獻醜了。不過比較特殊之處在於它的規格雖然是 11x11,在中文這類方正的格局時沒有問題,但在英文和符號時並非等寬,且 gjpqy 等這些下盤較低的英文字母,考慮到上方留白則高度可達 14 pixel 才能包含整個點陣的範圍,轉換時必需留意處理才不會出現下盤不見的情況。 <span class="c_black">而按照使用條款,我將其轉換為 Python dict 格式,為其原著作的衍生品即不可再用 **cubic** 或**俐方體**之名稱,故我將之取名為「**cubicpy**」,所以後續的文章和程式碼裡會以 **cubicpy** 稱之,而提供下載的檔案中也會隨附 [SIL Open Font Licese](https://github.com/ACh-K/Cubic-11/blob/main/OFL.txt) 來發行。</span> > [color=green] <span class="f_sz11">[cubicpy.zip 下載 (含 SIL Open Font License 1.1 文檔)](https://drive.google.com/file/d/1IGh7AeBmh5w3w9YUr2gSUpTFcVjGQ-Az/view?usp=sharing)</span> > <span class="f_sz11">[俐方體11號 10216 字清單](https://drive.google.com/file/d/1f126hkK0C0hfuhjFLWq3_XAz5h0IGTH4/view?usp=sharing)</span> 技術資料 --- 在前幾篇字庫的文章中已經有詳細的說明,如有需要可參考之前的內容: 👉 <span class="f_sz11"> ① [陳大的 ming.py 試玩筆記](/@PaoyungChang/mpy_ming_py_prelude) &nbsp; ② [陳大的 ming.py 試完筆記](/@paoyungChang/mpy_ming_py_march) &nbsp; ③ [陳大 ming.py ESP32 字量極限](https://hackmd.io/@PaoyungChang/mpy_ming_py_capacity)</span> 取字 --- :snake: <span class="c_brown f_sz10">使用 Python 執行取字程式</span> {%gist paoyung/fb5152ff28a46d754c26154f73aff960 %} 調用 --- :snake: <span class="c_brown f_sz10">在 MicroPython 以 SSD1306 顯示中文 ([my_util.py 請參考這裡](https://hackmd.io/@PaoyungChang/my_util_py))</span> {%gist paoyung/def835cb2276c5909c8866c81acf8961 %} 後話 --- 字型字庫的學問很多,字寬、字高、間隔、起始位置及如何節省空間都是必須納入考量的細節,初次轉換完成的字庫檔可能還有不足之處需要優化或人工介入微調,但看著字檔和程式能順利的在 MicroPython 中調用還是有幾分喜悅的,目前已在 github 上開源,歡迎 fork 及使用。 :sunglasses: > [color=orange][name=Paoyung Chang][time=Sun, Jun 19, 2022 1:54 PM]<span class="c_midnightBlue f_sz11">![](https://i.imgur.com/gmCNo2u.png =20x) github: </span>[俐方體11號的衍生字庫檔 for MicroPython](https://github.com/paoyung/cubicpy) > [color=green] <span class="c_maroon">相關主題 👉 [微控制器上字庫的選擇](/@PaoyungChang/fonts_selection)</span> {%hackmd /@PaoyungChang/intro_v0702 %} {%hackmd /@PaoyungChang/css_01 %}