freetype-commit
[Top][All Lists]
Advanced

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

[Git][freetype/freetype][master] * src/cff/cffgload.c (cff_slot_load): F


From: Alexei Podtelezhnikov (@apodtele)
Subject: [Git][freetype/freetype][master] * src/cff/cffgload.c (cff_slot_load): Fix autohinter scaling.
Date: Wed, 07 May 2025 22:00:24 +0000

Alexei Podtelezhnikov pushed to branch master at FreeType / FreeType

Commits:

  • c1278179
    by Alexei Podtelezhnikov (Алексей Подтележников) at 2025-05-07T17:57:42-04:00
    * src/cff/cffgload.c (cff_slot_load): Fix autohinter scaling.
    
    Fixes #1330.
    

1 changed file:

Changes:

  • src/cff/cffgload.c
    ... ... @@ -408,12 +408,28 @@
    408 408
     
    
    409 409
     #endif /* FT_CONFIG_OPTION_SVG */
    
    410 410
     
    
    411
    +    /* top-level code ensures that FT_LOAD_NO_HINTING is set */
    
    412
    +    /* if FT_LOAD_NO_SCALE is active                         */
    
    413
    +    hinting = FT_BOOL( ( load_flags & FT_LOAD_NO_HINTING ) == 0 );
    
    414
    +    scaled  = FT_BOOL( ( load_flags & FT_LOAD_NO_SCALE   ) == 0 );
    
    415
    +
    
    416
    +    glyph->hint        = hinting;
    
    417
    +    glyph->scaled      = scaled;
    
    418
    +
    
    419
    +    if ( scaled )
    
    420
    +    {
    
    421
    +      glyph->x_scale = size->root.metrics.x_scale;
    
    422
    +      glyph->y_scale = size->root.metrics.y_scale;
    
    423
    +    }
    
    424
    +    else
    
    425
    +    {
    
    426
    +      glyph->x_scale = 0x10000L;
    
    427
    +      glyph->y_scale = 0x10000L;
    
    428
    +    }
    
    429
    +
    
    411 430
         /* if we have a CID subfont, use its matrix (which has already */
    
    412 431
         /* been multiplied with the root matrix)                       */
    
    413 432
     
    
    414
    -    glyph->x_scale = size->root.metrics.x_scale;
    
    415
    -    glyph->y_scale = size->root.metrics.y_scale;
    
    416
    -
    
    417 433
         /* this scaling is only relevant if the PS hinter isn't active */
    
    418 434
         if ( cff->num_subfonts )
    
    419 435
         {
    
    ... ... @@ -445,14 +461,6 @@
    445 461
           font_offset = cff->top_font.font_dict.font_offset;
    
    446 462
         }
    
    447 463
     
    
    448
    -    /* top-level code ensures that FT_LOAD_NO_HINTING is set */
    
    449
    -    /* if FT_LOAD_NO_SCALE is active                         */
    
    450
    -    hinting = FT_BOOL( ( load_flags & FT_LOAD_NO_HINTING ) == 0 );
    
    451
    -    scaled  = FT_BOOL( ( load_flags & FT_LOAD_NO_SCALE   ) == 0 );
    
    452
    -
    
    453
    -    glyph->hint        = hinting;
    
    454
    -    glyph->scaled      = scaled;
    
    455
    -
    
    456 464
         {
    
    457 465
     #ifdef CFF_CONFIG_OPTION_OLD_ENGINE
    
    458 466
           PS_Driver  driver = (PS_Driver)FT_FACE_DRIVER( face );
    
    ... ... @@ -687,7 +695,7 @@
    687 695
               metrics->vertAdvance += font_offset.y;
    
    688 696
             }
    
    689 697
     
    
    690
    -        if ( ( load_flags & FT_LOAD_NO_SCALE ) == 0 || force_scaling )
    
    698
    +        if ( scaled || force_scaling )
    
    691 699
             {
    
    692 700
               /* scale the outline and the metrics */
    
    693 701
               FT_Int       n;
    


  • reply via email to

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