要以 libtcod 期望的方式将 TrueType 字体渲染为位图,您应该使用单独的库——字体渲染是一项非常复杂的任务。FreeType 是一个非常流行的字体渲染开源库。您可以在此处找到 Python 接口:http ://code.google.com/p/freetype-py/ 。您只需要在开发 roguelike 时使用的工具中使用 FreeType,而不需要在实际游戏中使用。
首先,确定你将在你的 roguelike 中使用哪些角色。确定如何在字体表上布置这些字符。您也可以简单地选择使用与您发布的图像中的布局相同的布局——这是一张有 32 列的表格,从空格字符(字符 32)开始。
使用您的字体渲染库,以所需的大小单独渲染每个字符。注意为每个生成的大小 - 例如,“。” 即使在相同的字体大小下,它也会很小,而 'w' 会很大。您不仅要计算高度,还要计算基线以上的高度和基线以下的高度。(例如:如果 'A' 和 'g' 都是 16 像素高,那么您可能仍然需要一个高于 16 像素的矩形才能在其中正确对齐——基线到基线。)找到最小的矩形将容纳所有这些大小的大小——这是字体表中每个单元格的大小。
一旦你知道你的工作表有多大,再通过所有需要的字母来构建你的位图,把每个字母放在它的单元格中。就 y 定位而言,所有基线都必须对齐。如果某些字符比其他字符宽,您可以选择在其单元格中将每个字符居中或左对齐。(每一个都有自己的怪异之处——你真的会想要一个固定宽度的字体来玩 roguelike。)
附加提示:
- 使用抗锯齿。与纯单色相比,这将使您的字体在眼睛上更容易。
- 不要使用颜色,用灰度渲染你的字体。libtcod 具有从灰度字体表生成彩色文本的功能。
- 考虑是否需要方形字体。方形字体的优点是你的 Roguelike 世界中的“圆圈”看起来就像屏幕上的圆圈。缺点是方形字体通常“丑陋”且难以阅读。