*/
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
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
printf("%d images blended\n", cnt);
}
+char *font_provider_labels[] = {
+ [ASS_FONTPROVIDER_NONE] = "None",
+ [ASS_FONTPROVIDER_AUTODETECT] = "Autodetect",
+ [ASS_FONTPROVIDER_CORETEXT] = "CoreText",
+ [ASS_FONTPROVIDER_FONTCONFIG] = "Fontconfig",
+};
+
+static void print_font_providers(ASS_Library *ass_library)
+{
+ ASS_DefaultFontProvider *providers;
+ size_t providers_size = 0;
+ ass_get_available_font_providers(ass_library, &providers, &providers_size);
+ printf("test.c: Available font providers (%zu): ", providers_size);
+ for (int i = 0; i < providers_size; i++) {
+ const char *separator = i > 0 ? ", ": "";
+ printf("%s'%s'", separator, font_provider_labels[providers[i]]);
+ }
+ printf(".\n");
+}
+
int main(int argc, char *argv[])
{
const int frame_w = 1280;
char *subfile = argv[2];
double tm = strtod(argv[3], 0);
+ print_font_providers(ass_library);
+
init(frame_w, frame_h);
ASS_Track *track = ass_read_file(ass_library, subfile, NULL);
if (!track) {