本文说明在windows下如何利用msys2搭建Freetype的模拟环境。
FreeType是一个用C语言实现的一个字体光栅化库。它可以用来将字符栅格化并映射成位图以及提供其他字体相关业务的支持,在正式移植到嵌入式板子前,我们在Windows上进行模拟运行,以搞清楚如何使用FreeType, 同时也为将来移植后与实际的嵌入式板子做对比。
FreeType的主要任务就是从字体文件中读取字符,并渲染成位图,因此只要能将位图显示处理就可以进行FreeType的验证了。这里在MSYS2中安装SDL2,用SDL2来做显示,使用MSYS2中的GCC编译FreeType及其测试代码,可以在Windows下编译出可执行程序用FreeType读取字库文件,并显示。
环境搭建
所有的代码都放在https://github.com/lgl88911/FT2Test
安装MSYS2和工具
- 安装MSYS2:
参考:MSYS2 LVGL模拟环境搭建,假设我们安装在D:/program/msys2下,那么对应到MSYS2的路径就是/d/program/msys2 - 安装依赖工具
1
2pacman -Syu
pacman -S git gcc gdb ninja make cmake mingw-w64-i686-SDL2
下载FreeType和测试代码
FT2Test中已经含有freetype-2.11.0的代码1
git clone https://github.com/lgl88911/FT2Test.git
下载完代码后根据你安装MSYS2的路径修改代码FT2Test/CMakeLists.txt中编译时的依赖路径1
2include_directories(/d/program/msys64/mingw32/include/)
link_directories(/d/program/msys64/mingw32/bin)
编译
1 | cd ./FT2Test |
注意如果cmake默认不是使用ninja,请执行make而不是ninja进行编译。
测试
默认的测试代码是读取字体并显示,执行build/main.exe,可以看到如下效果
代码说明
代码目录结构如下1
2
3
4
5
6
7
8├── CMakeLists.txt
├── LICENSE
├── README.md
├── driver
├── font
├── freetype-2.11.0
├── main.c
└── main.png
- freetype-2.11.0 是freetype官方的代码,未做任何修改
- driver是对SDL的封装(参考lvgl修改),目前支持RGB565和RGB888
- font 字库,只放了思源字库,大家可以根据需要添加
- CMakeLists.txt cmake文件
- main.c 测试程序
测试程序说明
1 | #include "display.h" |