summaryrefslogtreecommitdiffstats
path: root/libass/ass_render.c
diff options
context:
space:
mode:
authorGrigori Goronzy <greg@chown.ath.cx>2011-08-07 02:21:09 +0200
committerGrigori Goronzy <greg@chown.ath.cx>2015-07-10 10:41:01 +0200
commitc22a4ff9a395546637dbe0f1e9d0ee549dd0069a (patch)
tree40540f98c0faed9e3bac99ecc5caa0ef16b3aa92 /libass/ass_render.c
parentd787615845d78d8f8e6d1a4ffc3dc3eecd8a92f6 (diff)
downloadlibass-c22a4ff9a395546637dbe0f1e9d0ee549dd0069a.tar.bz2
libass-c22a4ff9a395546637dbe0f1e9d0ee549dd0069a.tar.xz
Custom font matching and font sources
Implement a simple font sorter (FontSelector) and an interface to deal with multiple font sources (FontProvider). Unfinished business, but works for the most part. Currently the only implemented FontProvider uses fontconfig.
Diffstat (limited to 'libass/ass_render.c')
-rw-r--r--libass/ass_render.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c
index 42758c8..5122128 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -147,8 +147,8 @@ void ass_renderer_done(ASS_Renderer *render_priv)
}
if (render_priv->ftlibrary)
FT_Done_FreeType(render_priv->ftlibrary);
- if (render_priv->fontconfig_priv)
- fontconfig_done(render_priv->fontconfig_priv);
+ if (render_priv->fontselect)
+ ass_fontselect_free(render_priv->fontselect);
ass_shaper_free(render_priv->shaper);
free(render_priv->eimg);
free(render_priv->text_info.glyphs);
@@ -1181,7 +1181,7 @@ get_outline_glyph(ASS_Renderer *priv, GlyphInfo *info)
ass_font_set_transform(info->font, info->scale_x,
info->scale_y, NULL);
FT_Glyph glyph =
- ass_font_get_glyph(priv->fontconfig_priv, info->font,
+ ass_font_get_glyph(info->font,
info->symbol, info->face_index, info->glyph_index,
priv->settings.hinting, info->flags);
if (glyph != NULL) {
@@ -2671,7 +2671,10 @@ ass_start_frame(ASS_Renderer *render_priv, ASS_Track *track,
&& !render_priv->settings.frame_height)
return 1; // library not initialized
- if (!render_priv->fontconfig_priv)
+ if (!render_priv->fontselect)
+ return 1;
+
+ if (render_priv->library != track->library)
return 1;
free_list_clear(render_priv);