summaryrefslogtreecommitdiffstats
path: root/libass/ass_fontconfig.c
diff options
context:
space:
mode:
Diffstat (limited to 'libass/ass_fontconfig.c')
-rw-r--r--libass/ass_fontconfig.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/libass/ass_fontconfig.c b/libass/ass_fontconfig.c
index 0a2eb3f6..54479cf2 100644
--- a/libass/ass_fontconfig.c
+++ b/libass/ass_fontconfig.c
@@ -427,7 +427,7 @@ static void process_fontdata(fc_instance_t *priv, ass_library_t *library,
*/
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));
@@ -440,11 +440,19 @@ fc_instance_t *fontconfig_init(ass_library_t *library,
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;