summaryrefslogtreecommitdiffstats
path: root/libass/ass_coretext.c
diff options
context:
space:
mode:
authorOleg Oshmyan <chortos@inbox.lv>2021-06-17 16:57:44 +0300
committerOleg Oshmyan <chortos@inbox.lv>2021-07-10 02:36:31 +0300
commit2ff663a6f3f0a9209a75116ff549fc78cef2b75c (patch)
tree7cb8d5da7b0377fc45f2b7013efc81c1d5ed234e /libass/ass_coretext.c
parenta7f67df5f96f03fab6661d90d716c16e0fab4a21 (diff)
downloadlibass-2ff663a6f3f0a9209a75116ff549fc78cef2b75c.tar.bz2
libass-2ff663a6f3f0a9209a75116ff549fc78cef2b75c.tar.xz
Pass last-resort-fallback family name directly to get_font_info
Diffstat (limited to 'libass/ass_coretext.c')
-rw-r--r--libass/ass_coretext.c46
1 files changed, 14 insertions, 32 deletions
diff --git a/libass/ass_coretext.c b/libass/ass_coretext.c
index 4041046..42259bb 100644
--- a/libass/ass_coretext.c
+++ b/libass/ass_coretext.c
@@ -126,36 +126,6 @@ static char *get_name(CTFontDescriptorRef fontd, CFStringRef attr)
return ret;
}
-static bool fill_family_name(CTFontDescriptorRef fontd,
- ASS_FontProviderMetaData *info)
-{
- char *family_name = get_name(fontd, kCTFontFamilyNameAttribute);
- if (!family_name)
- return false;
-
- info->extended_family = family_name;
-
- if (!info->n_family) {
- family_name = strdup(family_name);
- if (!family_name) {
- free(info->extended_family);
- return false;
- }
-
- info->families = malloc(sizeof(char *));
- if (!info->families) {
- free(family_name);
- free(info->extended_family);
- return false;
- }
-
- info->families[0] = family_name;
- info->n_family++;
- }
-
- return true;
-}
-
static bool get_font_info_ct(ASS_Library *lib, FT_Library ftlib,
CTFontDescriptorRef fontd,
char **path_out,
@@ -172,10 +142,22 @@ static bool get_font_info_ct(ASS_Library *lib, FT_Library ftlib,
if (!ps_name)
return false;
- bool got_info = ass_get_font_info(lib, ftlib, path, ps_name, -1, false, info);
+ char *family_name = get_name(fontd, kCTFontFamilyNameAttribute);
+ if (!family_name) {
+ free(ps_name);
+ return false;
+ }
+
+ bool got_info =
+ ass_get_font_info(lib, ftlib, path, ps_name, -1, family_name, info);
free(ps_name);
- return got_info && fill_family_name(fontd, info);
+ if (got_info)
+ info->extended_family = family_name;
+ else
+ free(family_name);
+
+ return got_info;
}
static void process_descriptors(ASS_Library *lib, FT_Library ftlib,