#font #bevy #pixel #image #gamedev #png #render

extol_image_font

在 Bevy 中从 PNG 图片渲染像素字体

1 个不稳定版本

0.4.0 2024年4月5日

#1239 in 游戏开发

MIT/Apache

41KB
371

extol_image_font 允许渲染以单个图片(通常是 PNG)存储的字体,每个字母位于特定位置。这在游戏开发中很常见,尤其是像素艺术字体,因为它允许使用颜色,并且可以使用任何图像编辑器创建字体,而无需使用专业软件。这些有时也被称为'像素字体',但我选择使用'图片字体'这个名字更为精确(因为存储在 OTB 中的位图字体也可以称为'像素字体')。

功能

支持

  • Unicode(任何适合单个代码点的字符)
  • 通过包含字母的字符串指定坐标(请参阅示例资产)
  • 手动指定矩形(包括非均匀大小)

未来工作

  • 自动纹理布局的填充和偏移
  • 在字符串中嵌入换行符

范围之外

  • 从'实际'位图字体进行渲染
  • 自动换行

注意事项

  • 您需要有一块仅包含空白部分的纹理,并将空格字符映射到它。
  • 目前不支持换行。

如何使用

请注意,对于像素精确渲染,将文本定位在整数坐标'在世界中'可能会导致文本模糊。 我不确定原因。如果发生这种情况,您可能需要将 x/y 坐标偏移一个小量,如 0.1。这似乎在使用 bevy_ui 时不太成问题。

只需选择具有 Handle<Image>UiImage 组件的任何实体,例如使用 SpriteBundleImageBundle 创建的实体,并向其添加一个 ImageFontText 组件。

请参阅 bevy_ui 示例 以使用 bevy_asset_loader 存储库构建纹理布局和图像的句柄,或者如果您想在'世界'中使用像素字体(例如用于飞行伤害文本),请参阅 sprite 示例

如果您不使用 bevy_ui,您可以禁用默认启用的 bevy_ui 功能,以避免对该存储库产生依赖。

这个包使用 image 包来加载图像,但默认情况下只启用 PNG 支持。如果您需要其他格式,请添加您自己的(相同版本的)image 依赖项并启用相关功能。

工作原理

致谢

示例字体由 gnsh 提供。

依赖项

~37–73MB
~1.5M SLoC