summaryrefslogtreecommitdiffstats
path: root/libass/ass_fontselect.c
diff options
context:
space:
mode:
Diffstat (limited to 'libass/ass_fontselect.c')
-rw-r--r--libass/ass_fontselect.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/libass/ass_fontselect.c b/libass/ass_fontselect.c
index d8313c5..9d25425 100644
--- a/libass/ass_fontselect.c
+++ b/libass/ass_fontselect.c
@@ -990,7 +990,7 @@ static void process_fontdata(ASS_FontProvider *priv, ASS_Library *library,
*/
static ASS_FontProvider *
ass_embedded_fonts_add_provider(ASS_Library *lib, ASS_FontSelector *selector,
- FT_Library ftlib)
+ FT_Library ftlib, size_t *num_emfonts)
{
ASS_FontProvider *priv = ass_font_provider_new(selector, &ft_funcs, NULL);
if (priv == NULL)
@@ -1002,6 +1002,7 @@ ass_embedded_fonts_add_provider(ASS_Library *lib, ASS_FontSelector *selector,
for (size_t i = 0; i < lib->num_fontdata; i++)
process_fontdata(priv, lib, ftlib, i);
+ *num_emfonts = lib->num_fontdata;
return priv;
}
@@ -1035,9 +1036,8 @@ struct font_constructors font_constructors[] = {
* \return newly created font selector
*/
ASS_FontSelector *
-ass_fontselect_init(ASS_Library *library,
- FT_Library ftlibrary, const char *family,
- const char *path, const char *config,
+ass_fontselect_init(ASS_Library *library, FT_Library ftlibrary, size_t *num_emfonts,
+ const char *family, const char *path, const char *config,
ASS_DefaultFontProvider dfp)
{
ASS_FontSelector *priv = calloc(1, sizeof(ASS_FontSelector));
@@ -1050,7 +1050,7 @@ ass_fontselect_init(ASS_Library *library,
priv->index_default = 0;
priv->embedded_provider = ass_embedded_fonts_add_provider(library, priv,
- ftlibrary);
+ ftlibrary, num_emfonts);
if (priv->embedded_provider == NULL) {
ass_msg(library, MSGL_WARN, "failed to create embedded font provider");
@@ -1134,3 +1134,14 @@ void ass_map_font(const ASS_FontMapping *map, int len, const char *name,
}
}
}
+
+size_t ass_update_embedded_fonts(ASS_Library *lib, ASS_FontSelector *selector,
+ FT_Library ftlib, size_t num_loaded)
+{
+ if (!selector->embedded_provider)
+ return num_loaded;
+
+ for (size_t i = num_loaded; i < lib->num_fontdata; i++)
+ process_fontdata(selector->embedded_provider, lib, ftlib, i);
+ return lib->num_fontdata;
+}