diff options
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); |