是否可以在Allegro5中使用系统字体?

时间:2014-05-20 15:27:04

标签: c++ allegro5

我想知道是否可以从用户的系统资源中加载字体,例如Arial - 现在,我必须将.ttf文件复制到我的程序目录中;否则,字体将无法加载。我试图在Allegro5的官方文档中找到允许这种行为的函数,但没有成功。我不理解某些东西,或者我是否必须将我的程序与字体文件一起分发? 下面我包括我用于加载字体的代码行,如果它有任何帮助:

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

2 个答案:

答案 0 :(得分:3)

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

为了获得最佳实践,您应始终在项目二进制文件中包含字体。在用户的计算机上搜索合适的字体存在很多问题,并不是一个好的决定。就像您可能在资源或数据文件夹中包含位图一样,最好在字体或ttf文件夹中包含一两个自定义字体。

答案 1 :(得分:1)

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

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

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

  1. 您如何知道用户在C:/ Windows上安装的窗口?
  2. 如果没有字体,你会怎么做?
  3. 这是访问系统字体的正确方法吗?
  4. TL:DR

    Allegro不是为了从普通的字体仓库加载字体而设计的。它希望一切都在你告诉它的地方,而不是其他地方。去平台案例吧。