我正在设计一种用于存储字体的文件格式,它将用于我需要在屏幕上绘制ASCII文本的游戏中。起初我认为我需要为字体中的每个字符保留一个单独的kern表,但在研究之后我发现游戏中使用的许多字体文件格式根本没有任何kern表(例如,Arma的FXY字体{ {3}}),他们只为每个字符使用一个偏移量来确定下一个字符的绘制位置。这对于简单的ASCII文本是否足够?是否有任何缺点/限制?
答案 0 :(得分:1)
"简单的ASCII文本"与kerning无关。在简单ASCII范围内,一些(可能)最丑陋的字距调整候选 ;即使只有全文大写的文字,你也可以期待" AV"和" TA"连击。
是否在文本引擎中包含字距调整取决于帖子中未提及的一些因素:
即使仅必须检查 可能的字距的每个组合的行为都是耗时的,无论是否导致调整。为了获得最快的性能,您可以为每个字符每个字符设置一个调整值列表 - 基本上,对于96个字符,您需要96 * 96个查找。任何其他算法都是可能的(例如,每个字符的链表)但速度较慢 - 并且可以使用更少的内存。
此外,每个可能的字符组合都不需要字距信息。您应该设计左右内置空白区域的字体,即所谓的"侧面轴承"。这个'自然'间距只需要尽可能少的组合进行调整。
总而言之,它取决于。最好的方法是尝试两种方式:不使用和使用字距调整。估计对表现的积极影响对表现的负面影响,并决定你喜欢哪一个。