freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Git][freetype/freetype][master] [base] Fix up Mac resource forks and df


From: Alexei Podtelezhnikov (@apodtele)
Subject: [Git][freetype/freetype][master] [base] Fix up Mac resource forks and dfonts.
Date: Sun, 07 Jan 2024 00:32:56 +0000

Alexei Podtelezhnikov pushed to branch master at FreeType / FreeType

Commits:

  • cc081d7c
    by Alexei Podtelezhnikov (Алексей Подтележников) at 2024-01-06T19:22:36-05:00
    [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.
    

2 changed files:

Changes:

  • src/base/ftmac.c
    ... ... @@ -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
     
    

  • src/base/ftobjs.c
    ... ... @@ -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;
    


  • reply via email to

    [Prev in Thread] Current Thread [Next in Thread]