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;
|