freetype-commit
[Top][All Lists]
Advanced

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

[Git][freetype/freetype][master] 4 commits: [truetype] Add checksums for


From: suzuki toshiya (@mpsuzuki)
Subject: [Git][freetype/freetype][master] 4 commits: [truetype] Add checksums for 2 tricky fonts.
Date: Tue, 24 Aug 2021 07:57:56 +0000

suzuki toshiya pushed to branch master at FreeType / FreeType

Commits:

1 changed file:

Changes:

  • src/truetype/ttobjs.c
    ... ... @@ -143,6 +143,30 @@
    143 143
     #endif /* TT_USE_BYTECODE_INTERPRETER */
    
    144 144
     
    
    145 145
     
    
    146
    +  /* The fonts embedded in PDF changes their family names
    
    147
    +   * by the randomization tag. PDF Reference 5.5.3 "Font
    
    148
    +   * Subsets" defines its format as 6 uppercase letters and
    
    149
    +   * '+' sign.  For safety, we do not skip the tag violating
    
    150
    +   * this rule.
    
    151
    +   */
    
    152
    +
    
    153
    +  static const FT_String*
    
    154
    +  tt_skip_pdffont_random_tag( const FT_String*  name )
    
    155
    +  {
    
    156
    +    unsigned int  i;
    
    157
    +
    
    158
    +
    
    159
    +    if ( name[6] != '+' )
    
    160
    +      return name;
    
    161
    +
    
    162
    +    for ( i = 0; i < 6; i++ )
    
    163
    +      if ( !ft_isupper( name[i] ) )
    
    164
    +        return name;
    
    165
    +
    
    166
    +    FT_TRACE7(( "name without randomization tag: %s\n", name + 7 ));
    
    167
    +    return name + 7;
    
    168
    +  }
    
    169
    +
    
    146 170
       /* Compare the face with a list of well-known `tricky' fonts. */
    
    147 171
       /* This list shall be expanded as we find more of them.       */
    
    148 172
     
    
    ... ... @@ -151,7 +175,7 @@
    151 175
       {
    
    152 176
     
    
    153 177
     #define TRICK_NAMES_MAX_CHARACTERS  19
    
    154
    -#define TRICK_NAMES_COUNT           26
    
    178
    +#define TRICK_NAMES_COUNT           20
    
    155 179
     
    
    156 180
         static const char trick_names[TRICK_NAMES_COUNT]
    
    157 181
                                      [TRICK_NAMES_MAX_CHARACTERS + 1] =
    
    ... ... @@ -171,22 +195,28 @@
    171 195
           "DFGirl-W6-WIN-BF",   /* dftt-h6.ttf; version 1.00, 1993 */
    
    172 196
           "DFGothic-EB",        /* DynaLab Inc. 1992-1995 */
    
    173 197
           "DFGyoSho-Lt",        /* DynaLab Inc. 1992-1995 */
    
    174
    -      "DFHei-Md-HK-BF",     /* maybe DynaLab Inc. */
    
    198
    +      "DFHei",              /* DynaLab Inc. 1992-1995 [DFHei-Bd-WIN-HK-BF] */
    
    199
    +                            /* covers "DFHei-Md-HK-BF" maybe DynaLab Inc. */
    
    200
    +
    
    175 201
           "DFHSGothic-W5",      /* DynaLab Inc. 1992-1995 */
    
    176 202
           "DFHSMincho-W3",      /* DynaLab Inc. 1992-1995 */
    
    177 203
           "DFHSMincho-W7",      /* DynaLab Inc. 1992-1995 */
    
    178 204
           "DFKaiSho-SB",        /* dfkaisb.ttf */
    
    179
    -      "DFKaiShu",
    
    180
    -      "DFKaiShu-Md-HK-BF",  /* maybe DynaLab Inc. */
    
    205
    +      "DFKaiShu",           /* covers "DFKaiShu-Md-HK-BF", maybe DynaLab Inc. */
    
    181 206
           "DFKai-SB",           /* kaiu.ttf; version 3.00, 1998 [DFKaiShu-SB-Estd-BF] */
    
    182
    -      "DFMing-Bd-HK-BF",    /* maybe DynaLab Inc. */
    
    207
    +
    
    208
    +      "DFMing",             /* DynaLab Inc. 1992-1995 [DFMing-Md-WIN-HK-BF] */
    
    209
    +                            /* covers "DFMing-Bd-HK-BF", maybe DynaLab Inc. */
    
    210
    +
    
    183 211
           "DLC",                /* dftt-m7.ttf; version 1.00, 1993 [DLCMingBold] */
    
    184 212
                                 /* dftt-f5.ttf; version 1.00, 1993 [DLCFongSung] */
    
    185
    -      "DLCHayMedium",       /* dftt-b5.ttf; version 1.00, 1993 */
    
    186
    -      "DLCHayBold",         /* dftt-b7.ttf; version 1.00, 1993 */
    
    187
    -      "DLCKaiMedium",       /* dftt-k5.ttf; version 1.00, 1992 */
    
    188
    -      "DLCLiShu",           /* dftt-l5.ttf; version 1.00, 1992 */
    
    189
    -      "DLCRoundBold",       /* dftt-r7.ttf; version 1.00, 1993 */
    
    213
    +                            /* covers following */
    
    214
    +                            /* "DLCHayMedium", dftt-b5.ttf; version 1.00, 1993 */
    
    215
    +                            /* "DLCHayBold",   dftt-b7.ttf; version 1.00, 1993 */
    
    216
    +                            /* "DLCKaiMedium", dftt-k5.ttf; version 1.00, 1992 */
    
    217
    +                            /* "DLCLiShu",     dftt-l5.ttf; version 1.00, 1992 */
    
    218
    +                            /* "DLCRoundBold", dftt-r7.ttf; version 1.00, 1993 */
    
    219
    +
    
    190 220
           "HuaTianKaiTi?",      /* htkt2.ttf */
    
    191 221
           "HuaTianSongTi?",     /* htst3.ttf */
    
    192 222
           "Ming(for ISO10646)", /* hkscsiic.ttf; version 0.12, 2007 [Ming] */
    
    ... ... @@ -199,10 +229,12 @@
    199 229
         };
    
    200 230
     
    
    201 231
         int  nn;
    
    232
    +    const FT_String*  name_without_tag;
    
    202 233
     
    
    203 234
     
    
    235
    +    name_without_tag = tt_skip_pdffont_random_tag( name );
    
    204 236
         for ( nn = 0; nn < TRICK_NAMES_COUNT; nn++ )
    
    205
    -      if ( ft_strstr( name, trick_names[nn] ) )
    
    237
    +      if ( ft_strstr( name_without_tag, trick_names[nn] ) )
    
    206 238
             return TRUE;
    
    207 239
     
    
    208 240
         return FALSE;
    
    ... ... @@ -277,7 +309,7 @@
    277 309
       tt_check_trickyness_sfnt_ids( TT_Face  face )
    
    278 310
       {
    
    279 311
     #define TRICK_SFNT_IDS_PER_FACE   3
    
    280
    -#define TRICK_SFNT_IDS_NUM_FACES  29
    
    312
    +#define TRICK_SFNT_IDS_NUM_FACES  31
    
    281 313
     
    
    282 314
         static const tt_sfnt_id_rec sfnt_id[TRICK_SFNT_IDS_NUM_FACES]
    
    283 315
                                            [TRICK_SFNT_IDS_PER_FACE] = {
    
    ... ... @@ -430,6 +462,16 @@
    430 462
             { 0x00170003UL, 0x00000060UL }, /* cvt  */
    
    431 463
             { 0xDBB4306EUL, 0x000058AAUL }, /* fpgm */
    
    432 464
             { 0xD643482AUL, 0x00000035UL }  /* prep */
    
    465
    +      },
    
    466
    +        { /* DFHei-Bd-WIN-HK-BF, issue #1087 */
    
    467
    +        { 0x1269EB58UL, 0x00000350UL }, /* cvt  */
    
    468
    +        { 0x5CD5957AUL, 0x00006A4EUL }, /* fpgm */
    
    469
    +        { 0xF758323AUL, 0x00000380UL }  /* prep */
    
    470
    +      },
    
    471
    +        { /* DFMing-Md-WIN-HK-BF, issue #1087 */
    
    472
    +        { 0x122FEB0BUL, 0x00000350UL }, /* cvt  */
    
    473
    +        { 0x7F10919AUL, 0x000070A9UL }, /* fpgm */
    
    474
    +        { 0x7CD7E7B7UL, 0x0000025CUL }  /* prep */
    
    433 475
           }
    
    434 476
         };
    
    435 477
     
    
    ... ... @@ -510,13 +552,21 @@
    510 552
         /* For first, check the face name for quick check. */
    
    511 553
         if ( face->family_name                               &&
    
    512 554
              tt_check_trickyness_family( face->family_name ) )
    
    555
    +    {
    
    556
    +      FT_TRACE3(( "found as a tricky font by "
    
    557
    +                  "its family name: %s\n", face->family_name ));
    
    513 558
           return TRUE;
    
    559
    +    }
    
    514 560
     
    
    515 561
         /* Type42 fonts may lack `name' tables, we thus try to identify */
    
    516 562
         /* tricky fonts by checking the checksums of Type42-persistent  */
    
    517 563
         /* sfnt tables (`cvt', `fpgm', and `prep').                     */
    
    518 564
         if ( tt_check_trickyness_sfnt_ids( (TT_Face)face ) )
    
    565
    +    {
    
    566
    +      FT_TRACE3(( "found as a tricky font by "
    
    567
    +                  "its cvt/fpgm/prep table checksum\n" ));
    
    519 568
           return TRUE;
    
    569
    +    }
    
    520 570
     
    
    521 571
         return FALSE;
    
    522 572
       }
    


  • reply via email to

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