【问题标题】:Is it possible to use system font in Allegro5?是否可以在 Allegro5 中使用系统字体?
【发布时间】:2014-05-20 15:27:03
【问题描述】:

我想知道是否可以只从用户的系统资源加载字体,例如 Arial - 现在,我必须将 .ttf 文件复制到我的程序目录中;否则,字体将不会加载。我试图在 Allegro5 的官方文档中找到允许这种行为的函数,但没有成功。我是不是不明白,还是我必须将我的程序与字体文件一起分发? 下面我包含了我用于加载字体的代码行,如果有帮助的话:

font=al_load_font("arial.ttf",24,0);

【问题讨论】:

    标签: c++ allegro5


    【解决方案1】:

    从 Allegro 5.0.8 版开始,您可以使用al_create_builtin_font 为您的项目创建一个小的 8x8“系统”字体。由于其大小有限,此字体通常仅用于调试目的。它是可移植的,适用于所有平台。但是不能放大(除非你使用ALLEGRO_TRANSFORM)。

    为获得最佳实践,您应该始终在项目二进制文件中包含字体。在用户的计算机上搜索合适的字体充满了问题,总体而言并不是一个好的决定。正如您可能在资源或数据文件夹中包含位图一样,在字体或 ttf 文件夹中包含一两个自定义字体符合您的最大利益。

    【讨论】:

      【解决方案2】:

      记住 Allegro 是一个跨平台的库,没有跨平台的方式来访问系统字体。

      您可以使用的一个选项是#include allegro windows(可能是它的winalleg.h)标头,然后访问该功能(Windows API 调用)以向程序提供系统字体。但这会限制您的便携性

      此外,您可以从硬编码路径访问字体,例如c:/windows/fonts/ 系统字体,但这样做存在一些问题:

      1. 如何知道用户在 C:/Windows 上安装了 windows?
      2. 如果没有字体怎么办?
      3. 这就是访问系统字体的正确方法吗?

      TL:DR

      Allegro 并非旨在从通用字体存储库加载字体。它希望一切都在你告诉它的地方,而不是其他地方。在平台案例的基础上去做。

      【讨论】:

        猜你喜欢
        • 2020-01-19
        • 2013-01-20
        • 2021-05-15
        • 2016-11-06
        • 1970-01-01
        • 1970-01-01
        • 2018-11-26
        • 2019-07-19
        • 1970-01-01
        相关资源
        最近更新 更多