【问题标题】:Font cannot be loaded with Emscripten but with g++字体不能用 Emscripten 加载,但用 g++
【发布时间】:2021-09-21 23:19:36
【问题描述】:

我正在尝试在本教程中第一次在 C/C++ 中将 FreeType 与 OpenGL 一起使用:https://learnopengl.com/In-Practice/Text-Rendering

#include <iostream>
#include <ft2build.h>
#include FT_FREETYPE_H 

FT_Library ft;
FT_Face face;

int main(int argc, char** argv)
{
FT_Init_FreeType(&ft);
if (FT_New_Face(ft, "/usr/share/fonts/truetype/malayalam/Uroob-Regular.ttf", 0, &face))
    {
        std::cout << "Font could not be loaded" << std::endl;  
        return -1;
    }
}

现在,当我尝试编译它时,只要没有错误输出,它就可以与 g++ 一起使用,但使用 em++ (Emscripten) 时,无法加载字体,因为错误输出“无法加载字体”然后指示。

我不需要这种字体“Uroob-Regular.ttf”,任何可读的拉丁字体都可以。我在Ubuntu下。

我将标志 -s USE_FREETYPE=1 与 Emscripten 一起使用。

【问题讨论】:

    标签: c++ c emscripten freetype


    【解决方案1】:

    Emscripten 似乎无法在当前目录下找到文件,因为当我尝试使用 --preload-file "/usr/share/fonts/truetype/malayalam/Uroob-Regular.ttf" 编译它以帮助它找到它指示的字体时:“嵌入”/usr/share/fonts/truetype/malayalam/Uroob -Regular.ttf",在当前目录"xxx"下面。这是无效的,因为当前目录成为生成代码将看到的根目录"。

    我不知道这是否是一种有效的方法,但是我将字体文件放在与 cpp 文件相同的目录中。然后我使用--preload-file "Uroob-Regular.ttf"并将相应的代码行更改为if (FT_New_Face(ft, "Uroob-Regular.ttf", 0, &amp;face)),它适用于Emscripten和g++。

    【讨论】:

      猜你喜欢
      • 2020-09-07
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多