summaryrefslogtreecommitdiffstats
path: root/libass/ass_coretext.c
diff options
context:
space:
mode:
Diffstat (limited to 'libass/ass_coretext.c')
-rw-r--r--libass/ass_coretext.c15
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);