从真字体创建位图字体的工具


26

您使用什么工具将ttf字体转换为位图字体?

以下是我要寻找的功能列表。我真的会对任何工具感到满意,但是拥有这些功能的工具会更好。

  • 输出2次幂纹理图集
  • 可解析的配置文件(因此我不必使用其渲染库)
  • 输出字距调整信息
  • 跨平台
  • 如果允许我进行实际的OpenGL调用,则渲染库将非常有用。

那么,您使用了什么工具?您满意吗?


我在Linux机器上编程时提到了跨平台。我会双重启动Windows7,因此我可以玩游戏,但是我通常不在那里开发。
deft_code 2010年

Answers:


19

字体制作工具

字体生成器几乎可以满足我的所有需求。Font Studio和Angel Code的BMFont都执行类似的任务。这是一些Font Builders功能。

  • QT应用程序,因此在所有平台上均能很好地运行。
  • 开源,因此可以根据需要轻松扩展应用程序
  • 旨在允许自定义图像和描述(布局)导出器,使其更易于扩展
  • 从文件系统而不是Windows注册表加载字体。这使从我自己的TTF生成纹理字体变得更加容易。
  • 自动调整最终图像的大小,因此无需猜测(例如在FontStudio中)。此外,可以将这些纹理约束为2大小的幂。
  • 支持紧缩对,因此如果您的TTF使用它们,则可以导出信息。

然而,这还不是完美的。默认的布局插件很烂。框布局工具仅使用字母按字母顺序从左上到右下填充纹理。不是很有效。我将其更改为首先按高度对字符进行排序,并迅速提高了效率(更改了2行)。


BmFont可以完成工作,它有很好的选择,我可以使用大于128x128的纹理,谢谢。唯一需要做的就是正确的导出设置,例如png纹理和32位字体类型
Diljeet 2014年

10

Google展示了其中的许多野兽。这可能与您追求的
http://www.angelcode.com/products/bmfont/

差不多您提到的是跨平台的,但是您指的是工具还是输出?(这可能是跨平台的,除了字节顺序之外)


很棒的工具,但是它只会从您的系统字体生成位图。我有一个要使用的特殊TTF文件。此外,它不太喜欢葡萄酒。
deft_code 2010年

8
您不能将TTF添加为系统字体吗?
Kaj 2010年

4

试用FontStudio:http ://www.ogre3d.org/forums/viewtopic.php?f =11& t = 47802

它专门用于创建游戏的位图字体。

我发布了一个指向Ogre3D论坛的链接,因为它目前还没有自己的主页。

在该主题的最后一篇文章(第2页)中找到最新版本的链接。


很棒的工具,但是它只会从您的系统字体生成位图。我有一个要使用的特殊TTF文件。
deft_code

1
嘿,我是Font Studio的创建者,我已经将Font Studio的源代码放在了bitbucket上。 bitbucket.org/michael_pote/font-studio
Mikepote


2

那里有许多复杂且功能丰富的工具,但我最喜欢的用于构建位图字体的工具是Codehead的位图字体生成器(CBFG)。这是一个简单的工具,可以很好地完成一件事。明确记录了实施技巧。

像大多数位图字体创建者一样,它当然独立于图形API,因为它仅导出图像(并且易于读取数据结构)。但是,在OpenGL或Direct3D中实现自己的文本渲染系统并不是一件容易的事-为每个字母渲染一个四边形,并使用适当的坐标应用位图字体纹理。

我希望这有帮助!

注意:这仅是Win32应用程序,但我还是推荐它!


2

Glyph Designer是Mac上的绝佳工具,已成为Cocos2D用户的首选工具。它具有许多功能,最近已更新为包括命令行支持!


9
通常,在此情况下,如果没有明确披露您与所推荐产品的隶属关系,则该表格通常被视为劣质形式。
2013年

1

上一次我(针对iPhone游戏)寻找该商品时,尝试了多种选择,但找不到能满足我需求的商品。我需要使用来自商业TTF字体的非常小的字符来渲染单个纹理。我需要能够指定字符范围,以便它仅包含我需要的字符。我希望它尽可能紧密地包装字形。我在运行时需要纹理坐标。我并不关心“真正的”字距调整,但我需要在运行时测量字形,以便合理地进行间距。因此,我编写了一个小型Windows应用程序,该应用程序渲染了所有字符并保存了ABC间距(如Windows所报告的)以及纹理坐标。

顺便说一句,如果您想在XP或Vista下呈现非常小的文本(例如小于16像素高的文字),则Windows的抗锯齿功能会带来缺点。对我来说,一个简单的解决方法是使用http://drwatson.nobody.jp/gdi++/index-en.html进行透明的超级采样。如果我从头开始,我可能会采用相同的方法,但是要看FreeType2而不是本机文本呈现。

如果您的文本不经常更新,则可以在运行时根据需要使用平台的文本呈现(或可能是FreeType)将整个块呈现为纹理。然后,您只需要为每个字符串渲染一个四边形,但是纹理分配就变得更加复杂。不过,从好的方面来说,您可以免费使用那些困难的亚洲语言进行完美的文本渲染和布局,以及更快的GL代码。渲染大量的单个字符是昂贵的,即使使用退化的三连带或诸如此类。



0

您要查找的关键字是“光栅化器”。XNA具有内置功能。快速Google搜索会显示FreeType。我不确定还有什么。


2
FreeType更像是一个“字体栅格化库”。它不是一个从字体创建纹理(2的幂)的应用程序。如果您决定自己编写这样的工具,那么FreeType将是一个不错的选择。
bummzack 2010年

0

如果需要交互式工具,则可能需要看一下FontForge,它是一个完整的字体编辑器,它支持将TTF字体转换为位图格式的各种工具。它支持各种类型的脚本,因此您也应该能够将其集成到管道中。


1
AFAIK FontForge可以创建位图字体,但是这些根本不同于OP的需求。位图字体类似于字体文件,但包含每个字符的位图(最好是各种大小)。他需要将字体渲染为纹理,因此结果将不是位图字体而是图像。
bummzack 2010年


0

已经为OS X发布了新的位图字体生成器:bmGlyph(http://www.bmglyph.com)。仅在Mac App Store上可用。输出具有许多功能的字体图集和位图(hd / sd)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.