无法在 Allegro 中加载字体

Posted

技术标签:

【中文标题】无法在 Allegro 中加载字体【英文标题】:Unable to load font in Allegro 【发布时间】:2012-12-24 01:51:26 【问题描述】:

我正在使用 C++ 和 Visual Studio 2012 中的 Allegro 5,但由于某种原因,我无法使用 Allegro wiki 中的示例代码加载字体:

    ALLEGRO_FONT *font = al_load_ttf_font("pirulen.ttf",72,0 );

   if (!font)
      fprintf(stderr, "Could not load 'pirulen.ttf'.\n");
      return false;
   

   al_clear_to_color(al_map_rgb(50,10,70));
   al_draw_text(font, al_map_rgb(255,255,255), 640/2, (480/4),ALLEGRO_ALIGN_CENTRE, "It worked!");

我已经尝试将字体文件放在我的 Visual Studio 项目中的每个可行目录中,以及 .exe 所在的目录中(正如其他几个线程所建议的那样)。我还尝试将它的副本放在 C: 驱动器上并使用完全限定的路径调用它:我尝试了 C:\\pirulen.ttfC:/pirulen.ttf 都不起作用。我也尝试将它添加到我项目中的“资源文件”文件夹中,但这也不起作用。

对可能发生的事情有什么建议吗?

谢谢。

【问题讨论】:

【参考方案1】:

该说的都在这里了:

Loading Resources (Troubleshooting)

【讨论】:

谢谢,成功了。它没有说明字体教程页面上的初始化函数:wiki.allegro.cc/index.php?title=Allegro_5_Tutorial/Addons/Fonts【参考方案2】:

我知道这是一个古老的问题,但我刚刚找到它并阅读了 Matthew 建议的文档(每个人都应该这样做),所以我想我会在此处添加此内容以供其他人寻找简单的回答。

如果您愿意,您可以为每个资源创建一个路径,但使用al_change_directory 设置您的资源目录更容易,然后您可以在那里找到您的资产。

al_init_font_addon(); // initialize the font addon
al_init_ttf_addon();// initialize the ttf (True Type Font) addon

ALLEGRO_PATH *path = al_get_standard_path(ALLEGRO_RESOURCES_PATH);
al_append_path_component(path, "resources");
al_change_directory(al_path_cstr(path, '/'));
al_destroy_path(path);

然后您可以引用相对于 resource 根目录的路径。

ALLEGRO_FONT* font = al_load_ttf_font("LibreCaslonText-Bold.ttf", 72, 0);

// Check font is loaded
if (!font) 
    fprintf(stderr, "failed to load font!\n");
    al_destroy_font(font);
    return -1;

澄清LibreCaslonText-Bold.ttf存在于project_dir/resources/LibreCaslonText-Bold.ttf

旁注

就我而言,我还需要将资源复制到我的构建目录。所以我将此添加到我的CMakeLists.txt

if (NOT $PROJECT_SOURCE_DIR STREQUAL $CMAKE_CURRENT_BINARY_DIR)
    file(COPY "$PROJECT_SOURCE_DIR/resources" DESTINATION $CMAKE_CURRENT_BINARY_DIR)
endif()

【讨论】:

这个解决方案在 2022 年对我有用,谢谢!

以上是关于无法在 Allegro 中加载字体的主要内容,如果未能解决你的问题,请参考以下文章

allegro 焊盘字体设置

从.board文件中如何导出封装库到Allegro环境下使用 详细�0�3

allegro安装后无法定位输入点

allegro,相同net的铺铜和焊盘无法连接

allegro pcb导入dxf外框尺寸变大一倍是怎么回事

Visual Studio 无法链接到 Allegro?