2016-08-05 87 views
0

我在树莓派上贴上了一个屏幕。栅格化TTF字体

而不是使用X,我直接将像素数据写入帧缓冲区。我已经能够绘制图像和原始形状,混合,使用双缓冲等...

我在哪里遇到问题是绘制文本。屏幕只是这个级别的一个字节数组,所以我需要一种方法来获取字体,大小,文本等,并将其转换为位图(实际上,bool[]width/height将是更可取的,因为它可以节省额外的读取/写。

我不知道如何处理这个。

事情我至今认为...

  • 使用固定宽度字体和地图集/ spritemap。应工作,我已经可以读取图像了,但是等宽字体的视觉吸引力有限,也意味着添加更多字体是很困难的。
  • 使用固定宽度的字体,图集和掩码来指示每个字符的位置。将支持可变宽度的字体,但是,缩放将是有损的,它看起来像一个维护噩梦,除非我可以自动生成图集/掩码。

有没有人设法做过这样的事情?

如果需要一个图书馆,我可以忍受这一点,但因为这更多的是理解我的Pi而不是一个严肃的项目,所以我更喜欢解释/教程。

+0

PIL(pillow)模块可以栅格化TrueType字体,因此您可以根据需要使用它来创建字体字符的位图。 – martineau

回答

0

考虑将Cairo图形库用于所有图形,或作为生成字体地图的工具。开罗对使用TTF字体渲染字体以及其他有用的图形操作提供了广泛的支持。

在较低的级别上,您也可以使用Freetype库来加载字体并直接渲染字符。但是,与其合作更加困难。