Alexei Podtelezhnikov pushed to branch master at FreeType / FreeType
Commits:
-
cc081d7c
by Alexei Podtelezhnikov (Алексей Подтележников) at 2024-01-06T19:22:36-05:00
2 changed files:
Changes:
... | ... | @@ -812,6 +812,7 @@ |
812 | 812 | ResourceIndex res_index;
|
813 | 813 | Handle fond;
|
814 | 814 | short num_faces_in_res;
|
815 | + FT_Long count;
|
|
815 | 816 | |
816 | 817 | |
817 | 818 | if ( noErr != FT_FSPathMakeRes( pathname, &res_ref ) )
|
... | ... | @@ -821,8 +822,10 @@ |
821 | 822 | if ( ResError() )
|
822 | 823 | return FT_THROW( Cannot_Open_Resource );
|
823 | 824 | |
825 | + res_index = 1;
|
|
824 | 826 | num_faces_in_res = 0;
|
825 | - for ( res_index = 1; ; res_index++ )
|
|
827 | + count = face_index;
|
|
828 | + while ( count >= 0 )
|
|
826 | 829 | {
|
827 | 830 | short num_faces_in_fond;
|
828 | 831 | |
... | ... | @@ -834,15 +837,21 @@ |
834 | 837 | num_faces_in_fond = count_faces( fond, pathname );
|
835 | 838 | num_faces_in_res += num_faces_in_fond;
|
836 | 839 | |
837 | - if ( 0 <= face_index && face_index < num_faces_in_fond && error )
|
|
838 | - error = FT_New_Face_From_FOND( library, fond, face_index, aface );
|
|
840 | + if ( count < num_faces_in_fond )
|
|
841 | + error = FT_New_Face_From_FOND( library, fond, count, aface );
|
|
839 | 842 | |
840 | - face_index -= num_faces_in_fond;
|
|
843 | + res_index++;
|
|
844 | + count -= num_faces_in_fond;
|
|
841 | 845 | }
|
842 | 846 | |
843 | 847 | CloseResFile( res_ref );
|
848 | + |
|
844 | 849 | if ( !error && aface && *aface )
|
845 | - (*aface)->num_faces = num_faces_in_res;
|
|
850 | + {
|
|
851 | + (*aface)->num_faces = num_faces_in_res;
|
|
852 | + (*aface)->face_index = face_index;
|
|
853 | + }
|
|
854 | + |
|
846 | 855 | return error;
|
847 | 856 | }
|
848 | 857 |
... | ... | @@ -2302,7 +2302,10 @@ |
2302 | 2302 | face_index_internal, aface );
|
2303 | 2303 | FT_FREE( data_offsets );
|
2304 | 2304 | if ( !error )
|
2305 | - (*aface)->num_faces = count;
|
|
2305 | + {
|
|
2306 | + (*aface)->num_faces = count;
|
|
2307 | + (*aface)->face_index = face_index_internal;
|
|
2308 | + }
|
|
2306 | 2309 | }
|
2307 | 2310 | |
2308 | 2311 | return error;
|