0

我正在设计一种用于存储字体的文件格式,它将用于我需要在屏幕上绘制 ASCII 文本的游戏中。起初我认为我需要为字体中的每个字符保留一个单独的紧缩表,但在研究后我发现游戏中使用的许多字体文件格式根本没有任何紧缩表(例如,Arma 的 FXY 字体https ://community.bistudio.com/wiki/FXY_File_Format),他们只是为每个字符使用一个偏移量来确定在哪里绘制下一个字符。这对于简单的 ASCII 文本是否足够?是否有任何缺点/限制?

4

1 回答 1

1

“简单 ASCII 文本”与字距调整无关。一些(可能)最丑陋的字距候选简单 ASCII 范围内;即使只有全大写文本,您也可以期待“AV”和“TA”组合。

是否在您的文本引擎中包含字距调整取决于您的帖子中未提及的一些因素:

  1. 字体的类型。方形字体不需要像完全抗锯齿的高质量字体那样精确的字距调整。模仿 8x8 等宽系统字体的字体不需要字距调整;设计古怪的字体(例如,非常宽的“T”)可能。
  2. 字体的大小(以像素为单位)。对于 8x8 像素字体,我根本不会打扰。
  3. 计算字符串宽度和在屏幕上绘制文本的开销。对于一个典型的游戏,比如射击游戏,绘制文本只是次要的,应该尽可能快地进行。对于冒险风格游戏中的大量文本,您需要更好的输出。

即使只需要检查每个组合是否有可能的字距调整也是耗时的,无论它是否会导致调整。为了获得最快的性能,您可以为每个字符的每个字符设置一个调整值列表——本质上,对于 96 个字符,您需要 96 * 96 次查找。任何其他算法都是可能的(例如,每个字符的链表),但会更慢 - 并且可以使用更少的内存。

此外,并非每个可能的字符组合都需要字距调整信息。你应该用左右内置的空白来设计你的字体,即所谓的“侧边距”。这种“自然”间距只需要针对尽可能少的组合进行调整。

总而言之,这取决于。最好的办法是两者都尝试:不带字距调整和带字距调整。估计对“外观”的正面影响对性能的负面影响,并决定您更喜欢哪一个。

于 2014-11-15T09:54:52.543 回答