> [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>  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) ② [陳大的 ming.py 試完筆記](/@paoyungChang/mpy_ming_py_march) ③ [陳大 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"> 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 %}
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.