diff options
author | Grigori Goronzy <greg@chown.ath.cx> | 2011-08-07 02:21:09 +0200 |
---|---|---|
committer | Grigori Goronzy <greg@chown.ath.cx> | 2015-07-10 10:41:01 +0200 |
commit | c22a4ff9a395546637dbe0f1e9d0ee549dd0069a (patch) | |
tree | 40540f98c0faed9e3bac99ecc5caa0ef16b3aa92 /libass/ass_render.c | |
parent | d787615845d78d8f8e6d1a4ffc3dc3eecd8a92f6 (diff) | |
download | libass-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.c | 11 |
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); |