/**
* \brief set font lookup defaults
* \param fc bool, use fontconfig?
+ * \param config path to fontconfig configuration file, or NULL. Only matters
+ * if fontconfig is used
*/
int ass_set_fonts(ass_renderer_t *priv, const char *default_font,
- const char *default_family, int fc);
+ const char *default_family, int fc, const char *config);
/**
* \brief render a frame, producing a list of ass_image_t
*/
fc_instance_t *fontconfig_init(ass_library_t *library,
FT_Library ftlibrary, const char *family,
- const char *path, int fc)
+ const char *path, int fc, const char *config)
{
int rc;
fc_instance_t *priv = calloc(1, sizeof(fc_instance_t));
goto exit;
}
- rc = FcInit();
- assert(rc);
+ if (config) {
+ priv->config = FcConfigCreate();
+ rc = FcConfigParseAndLoad(priv->config, (unsigned char *)config,
+ FcTrue);
+ FcConfigBuildFonts(priv->config);
+ FcConfigSetCurrent(priv->config);
+ } else {
+ rc = FcInit();
+ assert(rc);
+ priv->config = FcConfigGetCurrent();
+ }
- priv->config = FcConfigGetCurrent();
- if (!priv->config) {
+ if (!rc || !priv->config) {
mp_msg(MSGT_ASS, MSGL_FATAL,
MSGTR_LIBASS_FcInitLoadConfigAndFontsFailed);
goto exit;
fc_instance_t *fontconfig_init(ass_library_t *library,
FT_Library ftlibrary, const char *family,
- const char *path, int fc);
+ const char *path, int fc, const char *config);
char *fontconfig_select(fc_instance_t *priv, const char *family,
int treat_family_as_pattern, unsigned bold,
unsigned italic, int *index, uint32_t code);
}
int ass_set_fonts(ass_renderer_t *priv, const char *default_font,
- const char *default_family, int fc)
+ const char *default_family, int fc, const char *config)
{
if (priv->settings.default_font)
free(priv->settings.default_font);
fontconfig_done(priv->fontconfig_priv);
priv->fontconfig_priv =
fontconfig_init(priv->library, priv->ftlibrary, default_family,
- default_font, fc);
+ default_font, fc, config);
return !!priv->fontconfig_priv;
}
ass_set_margins(ass_renderer, 0, 0, 0, 0);
ass_set_use_margins(ass_renderer, 0);
ass_set_font_scale(ass_renderer, 1.);
- ass_set_fonts(ass_renderer, NULL, "Sans", 1);
+ ass_set_fonts(ass_renderer, NULL, "Sans", 1, NULL);
}
static image_t* gen_image(int width, int height) {