Hi,
tl;dr: No matter what I feed it, FT_New_Face always returns 0x0B,
FT_Missing_Module. Even if I feed it a file that isn't a font at all,
whereupon I would expect FT_Invalid_File_Format or
FT_Unknown_File_Format, I still get FT_Missing_Module. How do I
figure out what module is missing?
I'm working with a default build. I've downloaded the source,
freetype-2.10.0.tar.bz2. I've installed all the dependent libraries.
My configure command is completely plain, no arguments. I am linking
my simple test program against the static libfreetype.a. Here's my
link step:
$ g++ -o font_test font_test.o objs/.libs/libfreetype.a -lpng -lz
-lbz2 -lharfbuzz
Here's the meat of my font_test.cpp (extremely simple):
FT_Library s_lib;
FT_Error err = FT_Init_FreeType(&s_lib);
// .. check for errors ..
FT_Face m_face;
err = FT_New_Face(s_lib, filename, 0, &m_face);
// .. check for errors...FT_Missing_Module
I've also tried reading the file into memory and using
FT_New_Face_Memory, but the result is the same; FT_Missing_Module.
I hope this is an appropriate place for this question. I appreciate
being pointed elsewhere if this isn't the right place.
Many thanks,
-Brian
PS: My goal is to use freetype in an embedded environment. I was able
to cross-compile it without any problems, but it crashes, and this
particular platform (ESP32-WROOM module) is basically impossible to
debug. So I figured I'd do a native build on my dev machine with
debug symbols so I could step through and maybe figure out why the
ESP32 was crashing...but I can't get past the FT_Missing_Module
error. Ultimately, I want to hack and slash at libfreetype to get it
as small as possible while maintaining the limited set of features I
actually need (just rasterization and antialiasing for ttf fonts,
basically).