我继续在我的python roguelike上取得进展,并进一步深入本教程:http://roguebasin.roguelikedevelopment.org/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod。我也在这个游戏中使用了我自己的字体,但我不知道该怎么做。这是我正在使用的字体图片的链接:http://i.imgur.com/j6FdNky.png。在python代码中,它将自定义字体设置为'arial10x10.png',即该字体图像。我尝试用我自己的字体制作图像,但它确实变形了。
有谁知道我如何实现自己的字体?另外,我正在使用libtcod,而我只有.ttf格式的自己的字体。 感谢。
答案 0 :(得分:4)
要以libtcod期望的方式将TrueType字体呈现为位图,您应该使用单独的库 - 字体呈现是一项非常复杂的任务。 FreeType是一种非常流行的字体渲染开源库。您可以在此处找到Python界面:http://code.google.com/p/freetype-py/。您只需要在开发roguelike时使用的工具中使用FreeType,而不是在实际游戏中使用。
首先,确定您将在roguelike中使用的字符。确定如何在字体表上布置这些字符。您也可以选择使用与您发布的图像中相同的布局 - 这是一个包含32列的工作表,从空格字符(字符32)开始。
使用字体渲染库,以所需大小自行渲染每个字符。注意为每个生成的大小 - 例如,'。'即使在相同的字体大小,它也会很小并且'w'会很大。您不仅要计算高度,还要计算基线以上的高度和基线以下的高度。 (例如:如果'A'和'g'都是16像素高,你可能仍然需要一个高于16像素的矩形才能在其中正确对齐 - 基线到基线。)找到最小的矩形容纳所有这些尺寸的尺寸 - 这是字体表中每个单元格的大小。
一旦您知道了工作表的大小,再次通过所有想要的字母来构建您的位图,将每个字母放在其单元格中。就y定位而言,所有基线必须对齐。如果某些字符比其他字符宽,则可以选择居中或左对齐其单元格中的每个字符。 (其中每一个都有它自己的怪异 - 你真的想要一个roguelike的固定宽度字体。)
其他提示: