章节
1
功能描述2
图片显示,字体显示接口3
使用实例
功能描述
图片显示
: 支持位置设置,支持BMP && PNG格式的图片,程序通过读取bmp&&PNG图片的路径,解析图片的点阵掩码mask,再把mask写入framebuffer
汉字显示
: 支持字体大小设置(修改代码),可以位置设置,字符串输入
ascii显示
: 支持字体大小设置(需要修改代码),可以位置设置,ascii输入
字体显示分为汉字显示和ascii(字母、数字、可见符号), 汉字是点阵文件HZK16, 大小为262k,比之前的矢量文件小1.73M - 262k,引擎代码不依赖libz.so, libfreetype.so 大小为19k,比之前的矢量引擎小278k - 19k,依赖libpng.so
定义接口
图片显示接口
: picture_write(x, y, picture_path);
参数
:
xy
: 显示图片位置
picture_path
: BMP图片的路径
汉字显示接口
: void print_chinese(ft, chinese_str, x, y)
ascii显示接口
void print_ascii(ft, ascii_str, x, x)
参数
:
ft
: 汉字显示所需的上下文
chinese_str
: 显示的字符串,格式"北京锐和信"
ascii_str
: 显示的ascii,格式"1234asdf"
xy
: 设置显示的位置
注意
:
如果定义的x,y使图片或汉字超出边界,使图片汉字未能完全显示,忽略出界的部分。
使用实例
图片
int main(int argc, char ** argv)
{
picture_write(0, 0, argv[1]);
return 0;
}
汉字
int main(int argc, char **argv)
{
struct ft f;
ft_init(&f);
print_chinese(&f, "北京锐和信", 0, 0);
return 0;
}
ascii
int main(int argc, char **argv)
{
struct ft f;
ft_init(&f);
print_ascii(&f, "1234567adsfsdf", 0, 0);
return 0;
}
特点
相对于矢量字体,点阵字体灵活性比较差,汉字和字母、数字、可见符号需要不同的输出显示接口,字体大小变化需要修改显示算法,字体形式单一,但是点阵字体的优点在于占用足够小,总共不超过200k。
作者
杨善锦(Jim Yang)
github code