• Show log

    Commit

  • Hash : c8a24209
    Author : Werner Lemberg
    Date : 2023-04-27T11:40:46

    [truetype] Fix PostScript name handling for variation fonts.
    
    A variation font's PostScript name of a named instance is usually different
    from the PostScript name of an unnamed instance.  However, if a change
    between a named instance and an unnamed instance with exactly the same
    design axis values happened, it was possible that the PostScript name wasn't
    correctly updated.
    
    This commit reorganizes the code to handle this issue within the top-level
    API functions, using a new service to trigger recomputation of the
    PostScript name.
    
    * include/freetype/internal/services/svmm.h (FT_Construct_PS_Name_Func): New
    typedef.
    (FT_Service_MultiMasters): New field `construct_ps_name`.
    (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
    
    * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
    FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Call
    `mm->construct_ps_name` to handle `postscript_name`.
    (FT_Set_Named_Instance): Call `mm->construct_ps_name` to handle
    `postscript_name`.
    Use shortcut.
    * src/cff/cffdrivr.c (cff_construct_ps_name): New function.
    (cff_service_multi_masters): Updated.
    
    * src/truetype/ttgxvar.c (tt_set_mm_blend): Don't handle `postscript_name`.
    (TT_Set_MM_Blend): Simplify.
    (TT_Set_Named_Instance): Return -1 if axis values haven't changed.
    Don't set `face_index`.
    (tt_construct_ps_name): New function.
    
    * src/truetype/ttgxvar.h: Updated.
    
    * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
    
    * src/type1/t1driver.c (t1_service_multi_masters): Updated.
    
    * src/type1/t1load.c (T1_Set_MM_Blend): Simplify.