解读微软True Type字体文件

4
我正在使用一个嵌入式平台(STM32F407)作为显示器(480x800像素)的TFT LCD,并希望使我的用户界面在一定程度上可定制化。我认为最好的字体来源应该是与Windows兼容的字体,因为它们是最常见的。
我的当前实现使用了我自己定制的二进制格式的字体和描述符表,给出了字符宽度和ASCII值,但是逐位绘制自己的字体非常繁琐。
我想从SD卡中读取True Type Font文件,并能够使用其中不同大小的字形,但我没有看到简单明了的实现方法。有人可以给我指出一个好的C/C++示例吗?
更好的办法是,我想制作一个简单的gcc命令行程序,使用“#”作为像素来打印出我的输入文本并选择字体。这样我就可以只关注实现而不会遇到其他随机出现的错误。
有人可以帮帮我吗?

据我所知,ttf不一定包含光栅数据(有些可能会为8pt或更小的字体大小添加以提高可读性)。您是否愿意在您的应用程序中添加提示和贝塞尔渲染功能? :) - vladr
是的,TTF主要是一种矢量格式,而且是相当复杂的。虽然显然可以编写渲染器,但最好还是使用图像文件来定义字体,或者使用位图字体格式,如FNT(Windows)或BDF(UNIX)。 - user149341
@duskwuff 哇,我想我又重复造轮子了。AngelCode的BMFont & 用法 就是我刚写的东西,只是用微软画图软件一次一个像素,对每个字符都要做数学计算。感谢提醒关于FNT格式的事项! - uMinded
2个回答

4

首先询问OP在他的STM32F407套件上有多少不可移动的闪存可用。 :) - vladr

1

正如duskwuff所说:TTF主要是矢量格式,需要编写渲染器。最好使用图像文件来定义字体,或者使用位图字体格式,如FNT(Windows)或BDF(UNIX)。

这是我对自己问题的答案:AngelCode's BMFont & Useage。这使得从已安装的字符集中选择特定字符、混合字体并导出带有每个字符映射文件的图像变得简单易用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接