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

Is it possible to use system font in Allegro5?

本文关键字:系统 字体 Allegro5      更新时间:2023-10-16

我想知道是否有可能从用户的系统资源中加载字体,例如Arial -现在,我必须将。ttf文件复制到我的程序目录;否则,字体将无法加载。我试图在Allegro5的官方文档中找到允许这种行为的函数,但没有成功。是我不理解什么,还是我必须分发我的程序与字体文件?下面是我用来加载字体的代码行,如果有帮助的话:

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

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

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

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

你可以使用的一个选项是#包括allegro窗口(可能是它的winalleg.h)头文件,然后访问该功能(windows API调用)来为程序提供系统字体。但是这会限制的可移植性

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

    你怎么知道用户在C:/windows上安装了windows ?
  1. 如果字体不存在怎么办?
  2. 这是访问系统字体的正确方法吗?
<标题> TL:

Allegro不是为从通用字体库加载字体而设计的。它希望一切都在你告诉它的地方,而不是其他地方。