summaryrefslogtreecommitdiffstats
path: root/libass/ass_fontselect.c
diff options
context:
space:
mode:
authorGrigori Goronzy <greg@chown.ath.cx>2017-06-01 11:25:09 +0200
committerGrigori Goronzy <greg@chown.ath.cx>2017-06-01 12:13:52 +0200
commitac052de8f7b6b6976ab89601388a1bd4d421e58b (patch)
treeb9cc2fb26548365f8c9fb4610a6e917f6a6ec434 /libass/ass_fontselect.c
parent4cf8d6bb3e6b75f8215b69f697b6b5c05b1c1dd2 (diff)
downloadlibass-ac052de8f7b6b6976ab89601388a1bd4d421e58b.tar.bz2
libass-ac052de8f7b6b6976ab89601388a1bd4d421e58b.tar.xz
directwrite: fix font collections
DirectWrite's FontFileStream does not actually use the data of a specific font in a collection, which was an expectation of the existing code. It simply returns a stream to the underlying file, collection or not. So we need to get the index of the font. This needs to be done lazily as this information is only available in a FontFace, which is expensive to initialize. Add a new optional font provider function for lazy initialization of the index and use it. This is similar to the check_postscript callback. Fixes libass#275. v2: fix type of returned value.
Diffstat (limited to 'libass/ass_fontselect.c')
-rw-r--r--libass/ass_fontselect.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/libass/ass_fontselect.c b/libass/ass_fontselect.c
index 5426b15..8c8882c 100644
--- a/libass/ass_fontselect.c
+++ b/libass/ass_fontselect.c
@@ -609,6 +609,11 @@ find_font(ASS_FontSelector *priv, ASS_Library *library,
result = selected->path;
}
+ // set up index, if lazy evaluation function exists
+ if (selected->provider->funcs.get_font_index) {
+ *index = selected->provider->funcs.get_font_index(selected->priv);
+ }
+
return result;
}