Added API to load a font from bytes

This commit is contained in:
Chlumsky 2021-04-08 19:19:32 +02:00
parent 5f27bdfb1c
commit cf78977b47
2 changed files with 18 additions and 0 deletions

View File

@ -20,6 +20,7 @@ class FreetypeHandle {
friend FreetypeHandle * initializeFreetype();
friend void deinitializeFreetype(FreetypeHandle *library);
friend FontHandle * loadFont(FreetypeHandle *library, const char *filename);
friend FontHandle * loadFontData(FreetypeHandle *library, const byte *data, int length);
FT_Library library;
@ -28,6 +29,7 @@ class FreetypeHandle {
class FontHandle {
friend FontHandle * adoptFreetypeFont(FT_Face ftFace);
friend FontHandle * loadFont(FreetypeHandle *library, const char *filename);
friend FontHandle * loadFontData(FreetypeHandle *library, const byte *data, int length);
friend void destroyFont(FontHandle *font);
friend bool getFontMetrics(FontMetrics &metrics, FontHandle *font);
friend bool getFontWhitespaceWidth(double &spaceAdvance, double &tabAdvance, FontHandle *font);
@ -129,6 +131,19 @@ FontHandle * loadFont(FreetypeHandle *library, const char *filename) {
return handle;
}
FontHandle * loadFontData(FreetypeHandle *library, const byte *data, int length) {
if (!library)
return NULL;
FontHandle *handle = new FontHandle;
FT_Error error = FT_New_Memory_Face(library->library, data, length, 0, &handle->face);
if (error) {
delete handle;
return NULL;
}
handle->ownership = true;
return handle;
}
void destroyFont(FontHandle *font) {
if (font->ownership)
FT_Done_Face(font->face);

View File

@ -6,6 +6,7 @@
namespace msdfgen {
typedef unsigned char byte;
typedef unsigned unicode_t;
class FreetypeHandle;
@ -46,6 +47,8 @@ FontHandle * adoptFreetypeFont(FT_Face ftFace);
#endif
/// Loads a font file and returns its handle.
FontHandle * loadFont(FreetypeHandle *library, const char *filename);
/// Loads a font from binary data and returns its handle.
FontHandle * loadFontData(FreetypeHandle *library, const byte *data, int length);
/// Unloads a font file.
void destroyFont(FontHandle *font);
/// Outputs the metrics of a font file.