2

我继续在我的 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 格式的字体。谢谢。

4

1 回答 1

4

要以 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 世界中的“圆圈”看起来就像屏幕上的圆圈。缺点是方形字体通常“丑陋”且难以阅读。
于 2013-03-10T17:00:43.300 回答