CALLBACK(draw_hello,evt,param) { int ascent, descent; FONT fnt; fnt = get_appfont(); get_font_info(fnt, &ascent, &descent, NULL); plot_str(evt->graphic, 5, 5+ascent+descent, "Hello World",fnt); return 0; }
/** * \brief Process memory font. * \param priv private data * \param library library object * \param ftlibrary freetype library object * \param idx index of the processed font in library->fontdata * * Builds a FontInfo with FreeType and some table reading. */ static void process_fontdata(ASS_FontProvider *priv, ASS_Library *library, FT_Library ftlibrary, int idx) { int rc; const char *name = library->fontdata[idx].name; const char *data = library->fontdata[idx].data; int data_size = library->fontdata[idx].size; FT_Face face; int face_index, num_faces = 1; for (face_index = 0; face_index < num_faces; ++face_index) { ASS_FontProviderMetaData info; FontDataFT *ft; rc = FT_New_Memory_Face(ftlibrary, (unsigned char *) data, data_size, face_index, &face); if (rc) { ass_msg(library, MSGL_WARN, "Error opening memory font '%s'", name); continue; } num_faces = face->num_faces; charmap_magic(library, face); memset(&info, 0, sizeof(ASS_FontProviderMetaData)); if (get_font_info(ftlibrary, face, &info)) { ass_msg(library, MSGL_WARN, "Error getting metadata for embedded font '%s'", name); FT_Done_Face(face); continue; } ft = calloc(1, sizeof(FontDataFT)); if (ft == NULL) { free_font_info(&info); FT_Done_Face(face); continue; } ft->lib = library; ft->face = face; ft->idx = idx; if (ass_font_provider_add_font(priv, &info, NULL, face_index, ft)) { ass_msg(library, MSGL_WARN, "Failed to add embedded font '%s'", name); } free_font_info(&info); } }