2012-12-01 36 views
4

我正在使用TFT LCD作为显示器(480x800px)的嵌入式平台(STM32F407),并希望使我的用户界面对最终用户可以进行一些定制。我认为字体的最佳来源将是Windows兼容的,因为它们是最常见的。解码Microsoft True Type字体文件

我目前的实现使用我自己的自定义绘制字体的二进制格式和描述符表给出的字符宽度和ascii值,但不得不绘制我自己的字体一点一点的单调乏味。

我想从SD卡中读取一个TrueType字体文件,并且能够使用其中不同大小的字形,但是我没有看到如何真正实现这种魔法的海峡前沿实现。有人可以指点我一个很好的c/C++的例子吗?

作为一种解决扭结问题的方法,我想制作一个简单的gcc命令行程序,它将使用'#'作为像素以选定字体打印输入。这样我就可以担心实现,而不是任何可能弹出的其他随机错误。

有人可以帮我吗?

+0

IIRC [ttf](http://www.microsoft.com/typography/tt/ttf_spec/ttch02.doc)s不一定包含[栅格数据](https://developer.apple.com/fonts /TTRefMan/RM06/Chap6bdat.html)(为了提高可读性,少数人可以使用8pt或更少的大小)。你是否愿意为你的应用程序添加提示和贝塞尔渲染功能? :) – vladr

+0

是的,TTF主要是一种矢量格式,而且相当复杂。尽管编写渲染器显然是可行的,但使用图像文件来定义字体或使用像FNT(Windows)或BDF(UNIX)这样的位图字体格式可能会更好。 – duskwuff

+0

@duskwuff哇我觉得我再次改造了车轮。 [AngelCode的BMFont](http://www.angelcode.com/products/bmfont/)&[Useage](http://www.gamedev.net/topic/330742-quick-tutorial-variable-width-bitmap-fonts /)完全是我刚才写的,除了使用微软一次绘制一个像素,并为每个字符做数学...感谢FNT格式的提示! – uMinded

回答

1

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

这是我对自己的问题的回答:AngelCode's BMFont & Useage。这使得从已安装的字符集中选择选择字符,混合字体并将映射文件导出到每个字符。使用简单。

4

也许你可以使用Freetype库。

+0

询问OP他[STM32F407](http://www.element14.com/community/docs/DOC-44837/l/stm-datasheet-for-stm32f407-mcu)上有多少不可移动闪存存储器可用,套件第一。 :) – vladr