【问题标题】:How to include font file / assets folder to rust binary如何将字体文件/资产文件夹包含到 Rust 二进制文件中
【发布时间】:2023-01-11 00:16:41
【问题描述】:

我正在尝试构建一个需要文本渲染的 Rust 游戏。我找到的方法是:

let font:&Font = &ttf_context.load_font(FONT_PATH, 128)?;

我的问题是这需要构建的二进制文件需要有字体文件。我想要的是二进制文件本身包含字体文件。

我简单地尝试使用include_bytes!() 和include_dir!(),但我似乎无法让它们与&ttf_context.load_font() 一起工作,它期望路径的 &str 只是让我回到原来的问题,我得到错误 "Couldn't open ./assets/Font.ttf"

有没有办法以某种方式包含字体文件,这样我仍然可以获得它的路径,或者我应该以不同的方式呈现文本?

编辑 1:我可以将二进制文件和资产文件夹组合成一个文件,例如 macOS 的 .app 文件或 Windows 的 .exe 文件吗?

【问题讨论】:

  • 你需要做load_font_from_rwops,传递它RWops::from_bytes。
  • 将所有游戏资产嵌入二进制文件是非常不寻常的。 Font.ttf 是否真的存在,这只是在运行时定位assets 文件夹的问题?
  • 我所希望的是能够在不需要同一目录中的资产文件夹的情况下运行该程序。有没有其他方法可以做到这一点,例如 macOS 上的 .app 文件?

标签: rust sdl-2 truetype


【解决方案1】:

无法获取包含文件的路径,因为该文件在运行时不一定存在,您只能将 load_font 用于文件系统中实际存在的文件。

相反,您可以像这样使用 Sdl2TtfContext::load_font_from_rwops 和 included 字节:

use sdl2::rwops::RWops;
let font: &[u8] = include_bytes!("./assets/Font.ttf");
let font: &Font = &ttf_context
    .load_font_from_rwops(RWops::from_bytes(font)?, 128)?;

【讨论】:

    猜你喜欢
    • 2018-04-13
    • 2017-09-28
    • 2021-04-26
    • 2012-01-14
    • 2011-08-07
    • 2015-11-30
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多