summaryrefslogtreecommitdiffstats
path: root/libass/ass_coretext.c
diff options
context:
space:
mode:
authorOleg Oshmyan <chortos@inbox.lv>2015-10-21 00:51:34 +0300
committerOleg Oshmyan <chortos@inbox.lv>2015-10-23 02:36:53 +0300
commite00691e8096cc69e5651480155ebc61d9e079290 (patch)
treeb097d3c1b8b560b08b6688330434b5c746d12407 /libass/ass_coretext.c
parent018cfe7b2cbbcd10e7860e7903564b5d5a0b1d16 (diff)
downloadlibass-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.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);