我想知道是否可以从用户的系统资源中加载字体,例如Arial - 现在,我必须将.ttf文件复制到我的程序目录中;否则,字体将无法加载。我试图在Allegro5的官方文档中找到允许这种行为的函数,但没有成功。我不理解某些东西,或者我是否必须将我的程序与字体文件一起分发? 下面我包括我用于加载字体的代码行,如果它有任何帮助:
font=al_load_font("arial.ttf",24,0);
答案 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/
系统字体,但是存在一些问题:
Allegro不是为了从普通的字体仓库加载字体而设计的。它希望一切都在你告诉它的地方,而不是其他地方。去平台案例吧。