summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg Oshmyan <chortos@inbox.lv>2015-10-19 16:11:27 +0300
committerOleg Oshmyan <chortos@inbox.lv>2015-10-21 21:36:48 +0300
commitab6aef6d0766aa1ce801c5b4ca1441a491681489 (patch)
treef169840c7c7f5ebc6186d34a5e306acfb65b1bce
parentf224c97d4566ca7338cfcd621ce3bd8548372791 (diff)
downloadlibass-ab6aef6d0766aa1ce801c5b4ca1441a491681489.tar.bz2
libass-ab6aef6d0766aa1ce801c5b4ca1441a491681489.tar.xz
fontselect: move PostScript name into ASS_FontProviderMetaData
-rw-r--r--libass/ass_coretext.c11
-rw-r--r--libass/ass_directwrite.c11
-rw-r--r--libass/ass_fontconfig.c3
-rw-r--r--libass/ass_fontselect.c18
-rw-r--r--libass/ass_fontselect.h10
5 files changed, 28 insertions, 25 deletions
diff --git a/libass/ass_coretext.c b/libass/ass_coretext.c
index fdc7bd1..a2cd77f 100644
--- a/libass/ass_coretext.c
+++ b/libass/ass_coretext.c
@@ -185,15 +185,16 @@ static void process_descriptors(ASS_FontProvider *provider, CFArrayRef fontsd)
get_name(fontd, kCTFontFamilyNameAttribute, families, &meta.n_family);
meta.families = families;
- int zero = 0;
- get_name(fontd, kCTFontNameAttribute, identifiers, &zero);
get_name(fontd, kCTFontDisplayNameAttribute, fullnames, &meta.n_fullname);
meta.fullnames = fullnames;
+ int zero = 0;
+ get_name(fontd, kCTFontNameAttribute, identifiers, &zero);
+ meta.postscript_name = identifiers[0];
+
CFCharacterSetRef chset =
CTFontDescriptorCopyAttribute(fontd, kCTFontCharacterSetAttribute);
- ass_font_provider_add_font(provider, &meta, path, index,
- identifiers[0], (void*)chset);
+ ass_font_provider_add_font(provider, &meta, path, index, (void*)chset);
for (int j = 0; j < meta.n_family; j++)
free(meta.families[j]);
@@ -201,7 +202,7 @@ static void process_descriptors(ASS_FontProvider *provider, CFArrayRef fontsd)
for (int j = 0; j < meta.n_fullname; j++)
free(meta.fullnames[j]);
- free(identifiers[0]);
+ free(meta.postscript_name);
free(path);
}
diff --git a/libass/ass_directwrite.c b/libass/ass_directwrite.c
index 521447d..6b6b623 100644
--- a/libass/ass_directwrite.c
+++ b/libass/ass_directwrite.c
@@ -512,7 +512,6 @@ static void scan_fonts(IDWriteFactory *factory,
IDWriteLocalizedStrings *fontNames = NULL;
IDWriteLocalizedStrings *psNames = NULL;
BOOL exists = FALSE;
- char *psName = NULL;
hr = IDWriteFontCollection_GetFontFamily(fontCollection, i, &fontFamily);
if (FAILED(hr))
@@ -556,8 +555,10 @@ static void scan_fonts(IDWriteFactory *factory,
temp_name[NAME_MAX_LENGTH-1] = 0;
size_needed = WideCharToMultiByte(CP_UTF8, 0, temp_name, -1, NULL, 0,NULL, NULL);
- psName = (char *) malloc(size_needed);
- WideCharToMultiByte(CP_UTF8, 0, temp_name, -1, psName, size_needed, NULL, NULL);
+ char *mbName = (char *) malloc(size_needed);
+ WideCharToMultiByte(CP_UTF8, 0, temp_name, -1, mbName, size_needed, NULL, NULL);
+ meta.postscript_name = mbName;
+
IDWriteLocalizedStrings_Release(psNames);
}
@@ -618,7 +619,7 @@ static void scan_fonts(IDWriteFactory *factory,
FontPrivate *font_priv = (FontPrivate *) calloc(1, sizeof(*font_priv));
font_priv->font = font;
- ass_font_provider_add_font(provider, &meta, NULL, 0, psName, font_priv);
+ ass_font_provider_add_font(provider, &meta, NULL, 0, font_priv);
for (UINT32 k = 0; k < meta.n_family; ++k)
free(meta.families[k]);
@@ -626,7 +627,7 @@ static void scan_fonts(IDWriteFactory *factory,
free(meta.fullnames[k]);
free(meta.fullnames);
free(meta.families);
- free(psName);
+ free(meta.postscript_name);
}
}
}
diff --git a/libass/ass_fontconfig.c b/libass/ass_fontconfig.c
index 30a9d38..8f885c8 100644
--- a/libass/ass_fontconfig.c
+++ b/libass/ass_fontconfig.c
@@ -133,8 +133,7 @@ static void scan_fonts(FcConfig *config, ASS_FontProvider *provider)
meta.n_fullname++;
meta.fullnames = fullnames;
- ass_font_provider_add_font(provider, &meta, path, index, NULL,
- (void *)pat);
+ ass_font_provider_add_font(provider, &meta, path, index, (void *)pat);
}
}
diff --git a/libass/ass_fontselect.c b/libass/ass_fontselect.c
index 72d6d0b..d0d282f 100644
--- a/libass/ass_fontselect.c
+++ b/libass/ass_fontselect.c
@@ -237,14 +237,13 @@ static void ass_font_provider_free_fontinfo(ASS_FontInfo *info)
* \param meta basic metadata of the font
* \param path path to the font file, or NULL
* \param index face index inside the file (-1 to look up by PostScript name)
- * \param psname PostScript name of the face
* \param data private data for the font
* \return success
*/
int
ass_font_provider_add_font(ASS_FontProvider *provider,
ASS_FontProviderMetaData *meta, const char *path,
- int index, const char *psname, void *data)
+ int index, void *data)
{
int i;
int weight, slant, width;
@@ -322,15 +321,15 @@ ass_font_provider_add_font(ASS_FontProvider *provider,
goto error;
}
- if (path) {
- info->path = strdup(path);
- if (info->path == NULL)
+ if (meta->postscript_name) {
+ info->postscript_name = strdup(meta->postscript_name);
+ if (info->postscript_name == NULL)
goto error;
}
- if (psname) {
- info->postscript_name = strdup(psname);
- if (info->postscript_name == NULL)
+ if (path) {
+ info->path = strdup(path);
+ if (info->path == NULL)
goto error;
}
@@ -881,8 +880,7 @@ static void process_fontdata(ASS_FontProvider *priv, ASS_Library *library,
ft->face = face;
ft->idx = idx;
- if (ass_font_provider_add_font(priv, &info, NULL, face_index,
- NULL, ft)) {
+ if (ass_font_provider_add_font(priv, &info, NULL, face_index, ft)) {
ass_msg(library, MSGL_WARN, "Failed to add embedded font '%s'",
name);
}
diff --git a/libass/ass_fontselect.h b/libass/ass_fontselect.h
index 93bd746..f1e2933 100644
--- a/libass/ass_fontselect.h
+++ b/libass/ass_fontselect.h
@@ -147,7 +147,6 @@ typedef struct font_provider_funcs {
* At minimum one family is required.
*/
struct ass_font_provider_meta_data {
-
/**
* List of localized font family names, e.g. "Arial".
*/
@@ -158,6 +157,12 @@ struct ass_font_provider_meta_data {
* The English name should be listed first to speed up typical matching.
*/
char **fullnames;
+
+ /**
+ * The PostScript name, e.g. "Arial-BoldMT".
+ */
+ char *postscript_name;
+
int n_family; // Number of localized family names
int n_fullname; // Number of localized full names
@@ -231,7 +236,6 @@ ass_create_font_provider(ASS_Renderer *priv, ASS_FontProviderFuncs *funcs,
* \param path absolute path to font, or NULL for memory-based fonts
* \param index index inside a font collection file
* (-1 to look up by PostScript name)
- * \param psname PostScript name of the face
* \param data private data for font callbacks
* \return success
*
@@ -239,7 +243,7 @@ ass_create_font_provider(ASS_Renderer *priv, ASS_FontProviderFuncs *funcs,
int
ass_font_provider_add_font(ASS_FontProvider *provider,
ASS_FontProviderMetaData *meta, const char *path,
- int index, const char *psname, void *data);
+ int index, void *data);
/**
* \brief Free font provider and associated fonts.