[base] Fix up Mac resource forks and dfonts.
* src/base/ftobjs.c (IsMacResource): Assign `face_index`. * src/base/ftmac.c (FT_New_Face_From_Suitcase): Ditto after rework.
This commit is contained in:
parent
4a85ff0b79
commit
cc081d7cce
|
@ -812,6 +812,7 @@
|
||||||
ResourceIndex res_index;
|
ResourceIndex res_index;
|
||||||
Handle fond;
|
Handle fond;
|
||||||
short num_faces_in_res;
|
short num_faces_in_res;
|
||||||
|
FT_Long count;
|
||||||
|
|
||||||
|
|
||||||
if ( noErr != FT_FSPathMakeRes( pathname, &res_ref ) )
|
if ( noErr != FT_FSPathMakeRes( pathname, &res_ref ) )
|
||||||
|
@ -821,8 +822,10 @@
|
||||||
if ( ResError() )
|
if ( ResError() )
|
||||||
return FT_THROW( Cannot_Open_Resource );
|
return FT_THROW( Cannot_Open_Resource );
|
||||||
|
|
||||||
|
res_index = 1;
|
||||||
num_faces_in_res = 0;
|
num_faces_in_res = 0;
|
||||||
for ( res_index = 1; ; res_index++ )
|
count = face_index;
|
||||||
|
while ( count >= 0 )
|
||||||
{
|
{
|
||||||
short num_faces_in_fond;
|
short num_faces_in_fond;
|
||||||
|
|
||||||
|
@ -834,15 +837,21 @@
|
||||||
num_faces_in_fond = count_faces( fond, pathname );
|
num_faces_in_fond = count_faces( fond, pathname );
|
||||||
num_faces_in_res += num_faces_in_fond;
|
num_faces_in_res += num_faces_in_fond;
|
||||||
|
|
||||||
if ( 0 <= face_index && face_index < num_faces_in_fond && error )
|
if ( count < num_faces_in_fond )
|
||||||
error = FT_New_Face_From_FOND( library, fond, face_index, aface );
|
error = FT_New_Face_From_FOND( library, fond, count, aface );
|
||||||
|
|
||||||
face_index -= num_faces_in_fond;
|
res_index++;
|
||||||
|
count -= num_faces_in_fond;
|
||||||
}
|
}
|
||||||
|
|
||||||
CloseResFile( res_ref );
|
CloseResFile( res_ref );
|
||||||
|
|
||||||
if ( !error && aface && *aface )
|
if ( !error && aface && *aface )
|
||||||
(*aface)->num_faces = num_faces_in_res;
|
{
|
||||||
|
(*aface)->num_faces = num_faces_in_res;
|
||||||
|
(*aface)->face_index = face_index;
|
||||||
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2302,7 +2302,10 @@
|
||||||
face_index_internal, aface );
|
face_index_internal, aface );
|
||||||
FT_FREE( data_offsets );
|
FT_FREE( data_offsets );
|
||||||
if ( !error )
|
if ( !error )
|
||||||
(*aface)->num_faces = count;
|
{
|
||||||
|
(*aface)->num_faces = count;
|
||||||
|
(*aface)->face_index = face_index_internal;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
|
Loading…
Reference in New Issue