summaryrefslogtreecommitdiffstats
path: root/libass/ass_fontconfig.c
diff options
context:
space:
mode:
authorgreg <greg@blackbox>2009-06-19 06:04:45 +0200
committergreg <greg@blackbox>2009-06-20 03:38:00 +0200
commit21ab30f2ffbc71af46c0e64824e0596f14ddb424 (patch)
treeaf165e3c5931b65e4f3a0f29f153c46bd98104d3 /libass/ass_fontconfig.c
parent4600a9a40e82d9583e6b99a6633cadd379b8aa93 (diff)
downloadlibass-21ab30f2ffbc71af46c0e64824e0596f14ddb424.tar.bz2
libass-21ab30f2ffbc71af46c0e64824e0596f14ddb424.tar.xz
ass_set_fonts: optionally pass fontconfig config path
Optionally pass a fontconfig config file to the fontconfig initialisation. This changes the public API.
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 0a2eb3f..54479cf 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;