該存儲庫定義了一種創建和部署字體以與Micropython顯示驅動程序一起使用的方法。 PC實用程序將行業標準字體文件作為python Sourcecode形式的位圖。 Micropython模塊可以在具有合適的設備驅動程序的設備上顯示此類文件。其中包括使用SSD1306芯片和官方設備驅動程序的OLED顯示器。作為納米GUI存儲庫的一部分,可以提供各種顯示技術的兼容驅動程序。
Micropython平台通常具有有限的RAM,但以閃存形式更豐富的存儲空間。字體文件往往相對較大。將字符串渲染到設備的傳統技術涉及將整個字體加載到RAM中。這是快速但密集的。將字體存儲為隨機訪問文件並按需將單個字形加載到RAM中的替代方法太慢,對於大多數顯示器設備,對於合理的性能而言。
該替代方案將字體實現為Python源文件,並將數據聲明為bytes對象。這樣的文件可以將其凍結為字節碼:這涉及從特定目錄中使用Python文件從源構建固件。在導入時很少使用RAM,但是數據可以快速訪問。請注意,使用冷凍字節碼完全是可選的:如果RAM使用不是問題,則可以以正常方式導入字體文件。
最終的文件可與兩種顯示設備驅動程序一起使用:
framebuffer類中劃分顯示類別的驅動程序。這包括四個組件,鏈接到以下文檔:
Writer類兼容的信息。此命令行實用程序以Python 3編寫,並在PC上運行。為了將可擴展字體轉換為Python,實用程序將輸入以ttf或otf形式的字體文件與像素中的高度一起輸入,並輸出一個包含字體作為位圖的Python源文件。支持固定和可變的音高渲染。設計具有以下目的:
第一個是通過向實用程序提供特定於硬件的參數來實現的。這些定義了水平或垂直映射以及字體數據的位順序。
第二個是通過使用freetype和freetype python綁定來實現的。它的使用記錄在這裡。這也詳細介紹了導入以冷凍字節碼存儲的字體時的RAM用法的測量值。
通過編程方式將可伸縮的ttf或otf文件轉換為較大的字體最有效。對於小字體,最好使用手工設計的位圖字體文件。現在支持這些: bdf或pcf字體文件可以以與源自可擴展字體的文件相同的格式轉換為Python源。另請參見包括兼容小字體( examples/fonts )的微pypoyzfonts。
不支持Kerning。字體為每個像素。顏色顯示由CWriter類支持,該類別在渲染階段添加了顏色信息。這假設字符的所有像素都是相同的。
默認情況下, font_to_py.py實用程序可產生從chr(32)到chr(126)包含的ASCII字符。命令行選項允許修改字符集以包含任意Unicode字符。可以指定替代套件,例如非英語語言。現在為稀疏字符集提供有效的支持。
字體文件以通常的方式導入,例如import font14 。 Python字體文件包含以下功能。這些返回值由提供給font_to_py.py的參數定義:
height返回像素的高度。
max_width返回像素中字形的最大寬度。
從字形頂部到基線的baseline偏移。
如果字體是水平映射的, hmap返回True 。
如果指定位反轉, reverse返回為True 。
如果指定了單一的渲染, True monospaced返回。
min_ch返回文件中最低字符的序數值。
max_ch返回文件中最高字符的序數值。
get_ch函數返回字形。它的論點是一個Unicode字符,它返回以下值:
memoryview對象。 font_to_py.py實用程序允許指定默認字形(通常是? )。如果帶有未定義的字符,則將返回此字形。
min_ch和max_ch函數主要與連續字符集有關。
所有代碼均根據MIT許可發布。