static void vita2d_load_pgf_post(vita2d_pgf *font) { SceFontInfo fontinfo; sceFontGetFontInfo(font->font_handle_list->font_handle, &fontinfo); font->vsize = (fontinfo.fontStyle.fontV / fontinfo.fontStyle.fontVRes) * SCREEN_DPI; font->atlas = texture_atlas_create(ATLAS_DEFAULT_W, ATLAS_DEFAULT_H, SCE_GXM_TEXTURE_FORMAT_U8_R111); }
vita2d_font *vita2d_load_font_file(const char *filename) { FT_Error error; vita2d_font *font = malloc(sizeof(*font)); if (!font) return NULL; error = FT_Init_FreeType(&font->ftlibrary); if (error != FT_Err_Ok) { free(font); return NULL; } error = FTC_Manager_New( font->ftlibrary, 0, /* use default */ 0, /* use default */ 0, /* use default */ &ftc_face_requester, /* use our requester */ NULL, /* user data */ &font->ftcmanager); if (error != FT_Err_Ok) { free(font); FT_Done_FreeType(font->ftlibrary); return NULL; } size_t len = strlen(filename); font->filename = malloc(len + 1); strcpy(font->filename, filename); FTC_CMapCache_New(font->ftcmanager, &font->cmapcache); FTC_ImageCache_New(font->ftcmanager, &font->imagecache); font->load_from = VITA2D_LOAD_FROM_FILE; font->tex_atlas = texture_atlas_create(ATLAS_DEFAULT_W, ATLAS_DEFAULT_H, SCE_GXM_TEXTURE_FORMAT_U8_R111); return font; }
vita2d_font *vita2d_load_font_mem(const void *buffer, unsigned int size) { FT_Error error; vita2d_font *font = malloc(sizeof(*font)); if (!font) return NULL; error = FT_Init_FreeType(&font->ftlibrary); if (error != FT_Err_Ok) { free(font); return NULL; } error = FTC_Manager_New( font->ftlibrary, 0, /* use default */ 0, /* use default */ 0, /* use default */ &ftc_face_requester, /* use our requester */ NULL, /* user data */ &font->ftcmanager); if (error != FT_Err_Ok) { free(font); FT_Done_FreeType(font->ftlibrary); return NULL; } font->font_buffer = buffer; font->buffer_size = size; FTC_CMapCache_New(font->ftcmanager, &font->cmapcache); FTC_ImageCache_New(font->ftcmanager, &font->imagecache); font->load_from = VITA2D_LOAD_FROM_MEM; font->tex_atlas = texture_atlas_create(ATLAS_DEFAULT_W, ATLAS_DEFAULT_H, SCE_GXM_TEXTURE_FORMAT_U8_R111); return font; }
vita2d_pgf *vita2d_load_default_pgf() { unsigned int error; vita2d_pgf *font = malloc(sizeof(*font)); if (!font) return NULL; SceFontNewLibParams params = { font, 1, NULL, pgf_alloc_func, pgf_free_func, NULL, NULL, NULL, NULL, NULL, NULL }; font->lib_handle = sceFontNewLib(¶ms, &error); if (error != 0) { free(font); return NULL; } font->font_handle = sceFontOpen(font->lib_handle, 1, 0, &error); if (error != 0) { sceFontDoneLib(font->lib_handle); free(font); return NULL; } font->tex_atlas = texture_atlas_create(ATLAS_DEFAULT_W, ATLAS_DEFAULT_H, SCE_GXM_TEXTURE_FORMAT_U8_R111); return font; }