用C绘制位图样式字体到显示缓冲区的算法

时间:2013-05-10 06:54:54

标签: c algorithm graphics embedded-fonts

对于具有黑/白像素(非灰度)的小型单色LCD的8位嵌入式系统,我需要一种有效的存储和显示字体的方法。我可能会选择两种固定宽度的字体,4x5像素和5x7像素。资源非常有限:30k ROM,2k RAM。字体将以1:1比例写入缓冲区,作为具有给定起始偏移量的单行字符串,以像素为单位(char* str, byte x, byte y)

我想我会使用1k的RAM作为缓冲区。除非有更高效的字体写入结构,否则我会将其排列,以便可以按顺序写入LCD,如下所示:

byte buffer[1024];

其中每个字节代表8个像素的水平线(左边的MSB),并且显示的每一行从左到右完成,并以这种方式从上到下完成。 (因此每行由(128px / 8 =)16字节表示。)

所以我的问题:

  1. 应该如何存储字体?
  2. 缓冲区应采用什么形式?
  3. 如何将字体写入缓冲区?
  4. 我认为这有一些标准算法,但我在搜索中找不到任何东西。任何建议都会非常有用(我不希望有人为我编码!)

    由于

1 个答案:

答案 0 :(得分:2)

作为第一个剪辑,实现bit blit,一个有很多用途的图元,包括绘图字符。这决定了你的问题的以下答案。

  1. 作为位图。
  2. 位图。
  3. Bit blit。
  4. bit blit本身的实现涉及一堆按位操作,重复从源位图中提取字节或两个部分字节的组合,以与目标字节组合。