|
|
|
@ -306,36 +306,51 @@ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static const char* |
|
|
|
|
sfnt_get_ps_name( TT_Face face ) |
|
|
|
|
static int |
|
|
|
|
search_name_id( TT_Face face, |
|
|
|
|
FT_Int id, |
|
|
|
|
FT_Int *win, |
|
|
|
|
FT_Int *apple ) |
|
|
|
|
{ |
|
|
|
|
FT_Int n, found_win, found_apple; |
|
|
|
|
const char* result = NULL; |
|
|
|
|
FT_Int n; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( face->postscript_name ) |
|
|
|
|
return face->postscript_name; |
|
|
|
|
|
|
|
|
|
/* scan the name table to see whether we have a Postscript name here, */ |
|
|
|
|
/* either in Macintosh or Windows platform encodings */ |
|
|
|
|
found_win = -1; |
|
|
|
|
found_apple = -1; |
|
|
|
|
*win = -1; |
|
|
|
|
*apple = -1; |
|
|
|
|
|
|
|
|
|
for ( n = 0; n < face->num_names; n++ ) |
|
|
|
|
{ |
|
|
|
|
TT_Name name = face->name_table.names + n; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( name->nameID == 6 && name->stringLength > 0 ) |
|
|
|
|
if ( name->nameID == id && name->stringLength > 0 ) |
|
|
|
|
{ |
|
|
|
|
if ( IS_WIN( name ) ) |
|
|
|
|
found_win = n; |
|
|
|
|
*win = n; |
|
|
|
|
|
|
|
|
|
if ( IS_APPLE( name ) ) |
|
|
|
|
found_apple = n; |
|
|
|
|
*apple = n; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return *win || *apple; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static const char* |
|
|
|
|
sfnt_get_ps_name( TT_Face face ) |
|
|
|
|
{ |
|
|
|
|
FT_Int found_win, found_apple; |
|
|
|
|
const char* result = NULL; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( face->postscript_name ) |
|
|
|
|
return face->postscript_name; |
|
|
|
|
|
|
|
|
|
/* scan the name table to see whether we have a Postscript name here, */ |
|
|
|
|
/* either in Macintosh or Windows platform encodings */ |
|
|
|
|
search_name_id( face, 6, &found_win, &found_apple ); |
|
|
|
|
|
|
|
|
|
/* prefer Windows entries over Apple */ |
|
|
|
|
if ( found_win != -1 ) |
|
|
|
|
result = get_win_string( face->root.memory, |
|
|
|
|