Fonts 是否每个字体字符都有它';谁有自己的克恩表?

Fonts 是否每个字体字符都有它';谁有自己的克恩表?,fonts,kerning,Fonts,Kerning,我正在设计一种用于存储字体的文件格式,它将用于我需要在屏幕上绘制ASCII文本的游戏中。起初我认为我需要为字体中的每个字符保留一个单独的kern表,但经过研究后我发现,游戏中使用的许多字体文件格式根本没有任何kern表(例如,Arma的FXY font),它们只为每个字符使用一个偏移量来确定在何处绘制下一个字符。对于简单的ASCII文本来说,这就足够了吗?有什么缺点/限制吗?“简单的ASCII文本”与字距调整无关。一些(可能)最难看的紧排候选在简单ASCII范围内;即使使用所有大写文字,也只能使

我正在设计一种用于存储字体的文件格式,它将用于我需要在屏幕上绘制ASCII文本的游戏中。起初我认为我需要为字体中的每个字符保留一个单独的kern表,但经过研究后我发现,游戏中使用的许多字体文件格式根本没有任何kern表(例如,Arma的FXY font),它们只为每个字符使用一个偏移量来确定在何处绘制下一个字符。对于简单的ASCII文本来说,这就足够了吗?有什么缺点/限制吗?

“简单的ASCII文本”与字距调整无关。一些(可能)最难看的紧排候选在简单ASCII范围内;即使使用所有大写文字,也只能使用“AV”和“TA”组合

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

  • 字体的类型。方形字体不需要精确的字距调整,就像完全消除锯齿的高质量字体一样。模仿8x8单间距系统字体的字体不需要字距调整;一种设计古怪的字体(例如,非常宽的“T”)可能会出现
  • 字体的大小(以像素为单位)。对于8x8像素的字体,我根本不想麻烦
  • 计算字符串宽度和在屏幕上绘制文本时的开销。对于一个典型的游戏,比如射击游戏,绘制文本只是次要的,应该尽可能快地完成。对于冒险风格游戏中的大量文本,您需要更好的输出
  • 即使只需检查每个组合是否存在可能的字距调整也是很耗时的,无论是否会导致调整。为了获得最快的性能,您可以为每个字符设置一个调整值列表,基本上,对于96个字符,您需要96*96次查找。任何其他算法都是可能的(例如,每个字符都有一个链表),但速度会慢一些——并且可以使用更少的内存

    此外,并非所有可能的字符组合都需要紧排信息。你应该设计你的字体,在左右两边都有内置的空白,即所谓的“侧边方位”。这种“自然”间距只需调整尽可能少的组合即可


    总而言之,这要看情况而定。最好同时尝试两种方法:不使用紧排和使用紧排。根据“外观”的正面评价对性能的负面影响,并决定您更喜欢哪一种。

    谢谢,我想我只会使用单间距字体。我想在屏幕上绘制一些场景统计数据,所以我不在乎文本是否看起来“漂亮”。