summaryrefslogtreecommitdiffstats
path: root/libass
diff options
context:
space:
mode:
Diffstat (limited to 'libass')
-rw-r--r--libass/ass.h8
-rw-r--r--libass/ass_fontselect.c15
-rw-r--r--libass/libass.sym1
3 files changed, 24 insertions, 0 deletions
diff --git a/libass/ass.h b/libass/ass.h
index a3feb0b..1fb2234 100644
--- a/libass/ass.h
+++ b/libass/ass.h
@@ -401,6 +401,14 @@ void ass_set_line_spacing(ASS_Renderer *priv, double line_spacing);
void ass_set_line_position(ASS_Renderer *priv, double line_position);
/**
+ * \brief Get the list of available font providers.
+ * \return list of available font providers (user owns the returned array)
+ */
+void ass_get_available_font_providers(ASS_Library *priv,
+ ASS_DefaultFontProvider **providers,
+ size_t *size);
+
+/**
* \brief Set font lookup defaults.
* \param default_font path to default font to use. Must be supplied if
* fontconfig is disabled or unavailable.
diff --git a/libass/ass_fontselect.c b/libass/ass_fontselect.c
index dacff11..dc475b1 100644
--- a/libass/ass_fontselect.c
+++ b/libass/ass_fontselect.c
@@ -848,6 +848,21 @@ ass_fontselect_init(ASS_Library *library,
return priv;
}
+void ass_get_available_font_providers(ASS_Library *priv,
+ ASS_DefaultFontProvider **providers,
+ size_t *size)
+{
+ size_t offset = 2;
+ *size = offset;
+ for (int i = 0; font_constructors[i].constructor; i++)
+ (*size)++;
+ *providers = calloc(*size, sizeof(ASS_DefaultFontProvider));
+ (*providers)[0] = ASS_FONTPROVIDER_NONE;
+ (*providers)[1] = ASS_FONTPROVIDER_AUTODETECT;
+ for (int i = offset; i < *size; i++)
+ (*providers)[i] = font_constructors[i-offset].id;
+}
+
/**
* \brief Free font selector and release associated data
* \param the font selector
diff --git a/libass/libass.sym b/libass/libass.sym
index aafb7a8..8a6826a 100644
--- a/libass/libass.sym
+++ b/libass/libass.sym
@@ -14,6 +14,7 @@ ass_set_aspect_ratio
ass_set_font_scale
ass_set_hinting
ass_set_line_spacing
+ass_get_available_font_providers
ass_set_fonts
ass_render_frame
ass_new_track