diff options
author | Oleg Oshmyan <chortos@inbox.lv> | 2015-10-21 00:51:34 +0300 |
---|---|---|
committer | Oleg Oshmyan <chortos@inbox.lv> | 2015-10-23 02:36:53 +0300 |
commit | e00691e8096cc69e5651480155ebc61d9e079290 (patch) | |
tree | b097d3c1b8b560b08b6688330434b5c746d12407 /libass/ass_coretext.c | |
parent | 018cfe7b2cbbcd10e7860e7903564b5d5a0b1d16 (diff) | |
download | libass-e00691e8096cc69e5651480155ebc61d9e079290.tar.bz2 libass-e00691e8096cc69e5651480155ebc61d9e079290.tar.xz |
fontselect: find fonts with PostScript outlines by PostScript name
Fonts without PostScript outlines (such as TrueType fonts) are unaffected,
and their PostScript names continue to be ignored when searching for fonts.
This matches the behavior of GDI and hence VSFilter.
Diffstat (limited to 'libass/ass_coretext.c')
-rw-r--r-- | libass/ass_coretext.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libass/ass_coretext.c b/libass/ass_coretext.c index a2cd77f..006547b 100644 --- a/libass/ass_coretext.c +++ b/libass/ass_coretext.c @@ -88,6 +88,19 @@ static void get_name(CTFontDescriptorRef fontd, CFStringRef attr, } } +static bool is_postscript(CTFontDescriptorRef fontd) +{ + int format; + CFNumberRef cfformat = + CTFontDescriptorCopyAttribute(fontd, kCTFontFormatAttribute); + + if (!CFNumberGetValue(cfformat, kCFNumberIntType, &format)) + return false; + + return format == kCTFontFormatOpenTypePostScript || + format == kCTFontFormatPostScript; +} + static void get_trait(CFDictionaryRef traits, CFStringRef attribute, float *trait) { @@ -192,6 +205,8 @@ static void process_descriptors(ASS_FontProvider *provider, CFArrayRef fontsd) get_name(fontd, kCTFontNameAttribute, identifiers, &zero); meta.postscript_name = identifiers[0]; + meta.is_postscript = is_postscript(fontd); + CFCharacterSetRef chset = CTFontDescriptorCopyAttribute(fontd, kCTFontCharacterSetAttribute); ass_font_provider_add_font(provider, &meta, path, index, (void*)chset); |