python - 如何制作字体表(用于python roguelike)

标签 python fonts roguelike

我在 python roguelike 上继续取得进展,并进一步深入研究本教程:http://roguebasin.roguelikedevelopment.org/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod 。我还制作了自己的字体在这个游戏中使用,但我不知道该怎么做。这是我当前使用的字体图像的链接:/image/1GYwt.png 。在 python 代码中,它将自定义字体设置为“arial10x10.png”,即该字体图像。我尝试用自己的字体制作图像,但它非常扭曲。

有谁知道我如何实现自己的字体?另外,我正在使用 libtcod,并且我只有 .ttf 格式的自己的字体。 谢谢。

最佳答案

要按照 libtcod 期望的方式将 TrueType 字体渲染为位图,您应该使用单独的库 —— 字体渲染是一项极其复杂的任务。 FreeType 是一个非常流行的字体渲染开源库。您可以在这里找到Python接口(interface):http://code.google.com/p/freetype-py/ 。您只需在开发 roguelike 时使用的工具中使用 FreeType,而不是在实际游戏中。

首先,确定您将在 Roguelike 中使用哪些角色。确定如何在字体表上布局这些字符。您还可以简单地选择使用与您发布的图像中的布局相同的布局 - 这是一张具有 32 列的工作表,从空格字符(字符 32)开始。

使用字体渲染库,以所需的大小单独渲染每个字符。请注意每个生成的大小 - 例如,“.”即使字体大小相同,“w”也会小而“w”会大。您不能只计算高度,还要计算基线以上的高度和基线以下的高度。 (例如:如果“A”和“g”都是 16 像素高,则您可能仍然需要一个高于 16 像素的矩形才能在其中正确对齐——基线到基线。)找到最小的矩形能够容纳所有这些尺寸的大小——这是字体表中每个单元格必须有的大小。

一旦您知道工作表有多大,请再次遍历所有所需的字母来构建位图,将每个字母放入其单元格中。就 y 定位而言,所有基线都必须对齐。如果某些字符比其他字符宽,您可以选择将每个字符在单元格内居中或左对齐。 (每一个都会有它自己的怪异之处——你真的会想要一个适合 Roguelike 的固定宽度字体。)​​

其他提示:

  • 使用抗锯齿功能。这会让你的字体比纯字体更容易被眼睛接受 单色。
  • 不要使用颜色,以灰度渲染字体。 libtcod 有 从灰度生成彩色文本的功能 字体表。
  • 考虑是否需要方形字体。的优点是 方形字体是你的 Roguelike 世界中的“圆圈”看起来像 屏幕上出现圆圈。缺点是方形字体 通常“更丑陋”且难以阅读。

关于python - 如何制作字体表(用于python roguelike),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15324475/

相关文章:

python - 如何在 MayaVi 中绘制正确的 3D 轴,就像在 Matplotlib 中找到的那样

python - openerp 中的 rml 报告

c++ - Roguelike FOV问题

python - 为地牢创建一个房间给出了错误的尺寸/没有墙壁

python - 带有 datashader 的 map 背景 - "Map data not yet available"

python - 启用 scrapy 记录器时如何查看打印语句的输出

ios - 根据设备屏幕 iPhone 4/5 和 iPhone 6/Plus 调整 UILabel 的字体大小

graphics - 无法使用 ImageMagick 将文本调整到图像

CSS 文本无法正确呈现

java - 使用 Prim 算法在迷宫中放置房间