LCD 上显示字符
有两种方式实现LCD显示字符:
(1)像单片机的点阵式显示屏一样,通过字符取模软件获取到字符的子模来显示字符
(2)freetype
(1)像单片机的点阵式显示屏一样,通过字符取模软件获取到字符的子模来显示字符
通过一些字符取模软件获取到字符的子模;所谓子模,其实就是一个二维数组,用于表示字符
点阵中,哪些小方块应该要填充颜色、哪些小方块不填充颜色。使用一个二维数组来表示这个字符点阵unsigned char arr[86][8];
(2)freetype
对于linux系统,在/usr/share/fonts 目录下有很多已经被编码的字体,我们只需要解析字体文件、访问字体文件,从字体文件中读取出字符的位图数据即可!
freetype 移植
源码地址:https://download.savannah.gnu.org/releases/freetype/
进入该第之后,选择freetype-2.8.tar.gz版本压缩文件,下载完成后解压缩。在另一地址下新建一个文件家为freetype作为freetype的安装路径。
在终端激活交叉编译环境,配置include/freetype/config/ftoption.h文件。该文件定义了很多宏,这里我们打开以下两个配置宏:
#define FT_CONFIG_OPTION_SYSTEM_ZLIB//使用系统安装的 zlib 库
#define FT_CONFIG_OPTION_USE_PNG//支持 PNG bitmap 位图
配置好之后,进行配置freetype工程源码:
./configure --prefix=/home/ps/work/linux/tool/freetype/ --host=arm-poky-linux-gnueabi --with-zlib=yes --with-bzip2=no --with-png=yes --with-harfbuzz=no ZLIB_CFLAGS="-I/home/ps/work/linux/tool/zlib -L/home/ps/work/linux/tool/zlib" ZLIB_LIBS=-lz LIBPNG_CFLAGS="-I/home/ps/work/linux/tool/png/include -L/home/ps/work/linux/tool/png" LIBPNG_LIBS=-lpng
解释:
–prefix 选项指定 FreeType 库的安装目录;–host 选项设置为交叉编译器名称的前缀
几个章节内容都已经给大家详细地解释过。
–with-zlib=yes 表示使用 zlib;
–with-bzip2=no 表示不使用 bzip2 库;
–with-png=yes 表示使用 libpng 库;
–with-harfbuzz=no 表示不使用 harfbuzz 库。
ZLIB_CFLAGS 选项用于指定 zlib 的头文件路径和库文件路径,根据实际安装路径填写;
ZLIB_LIBS 选项指定链接的 zlib 库的名称;
LIBPNG_CFLAGS 选项用于指定 libpng 的头文件路径和库文件路径,根据实际安装路径填写;
LIBPNG_LIBS 选项用于指定链接的 libpng 库的名称。
配置完成结果:
如果结果有问题,请检查freetype工程源码配置中的地址是否正确
接下来make make install
最终结果:
移植到开发板:
(1)删除原有环境
rm -rf /usr/lib/libfreetype.*
(2)将我们编译得到的库文件拷贝到开发板/usr/lib 目录下(注意符号链接的问题)
移植结果
FreeType 库使用
字形(glyph):书写风格
字形索引:在字体文件中,通过字形索引找到对应的字形
dpi:表示每英寸的像素点数,像素点数 = 点数 * dpi / 72
未完待续。。。。。。