该存储库定义了一种创建和部署字体以与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许可发布。