Edit

kc3-lang/freetype/src/autofit/afmodule.h

Branch :

  • Show log

    Commit

  • Author : Behdad Esfahbod (بهداد اسفهبد)
    Date : 2025-04-27 18:44:49
    Hash : 7651fe00
    Message : [autofit] Enable dynamic loading of HarfBuzz. (1/2) This commit activates the mini-HarfBuzz header files and provides the necessary infrastructure for dynamically loading HarfBuzz if `FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC` is defined (this macro gets set up in a follow-up commit). * src/autofit/ft-hb.c: New file, providing `ft_hb_funcs_init` and `ft_hb_funcs_done` for loading HarfBuzz dynamically. The name of the library is hold in the macro `FT_LIBHARFBUZZ`, which can be overridden. * src/autofit/ft-hb.h: Don't include `hb.h` but `ft-hb-types.h`. (hb): Modified to handle both standard linking and dynamically loading of HarfBuzz. (HB_EXTERN): New macro to load `ft-hb-decls.h`. * src/autofit/afadjust.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: For the sake of dynamically loading the HarfBuzz library, replace the compile-time macro `HB_VERSION_ATLEAST` with a call to the run-time function `hb_version_atleast` where necessary – a follow-up commit will set the minimum version of HarfBuzz to 2.6.8, which provides all necessary functions needed by FreeType. * src/autofit/afmodule.h: Include `ft-hb.h`. (AF_ModuleRec) [FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC]: Add `hb_funcs` structure to hold pointers to the dynamically loaded HarfBuzz functions. * src/autofit/afmodule.c (af_autofitter_init, af_autofitter_done) [FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC]: Call `ft_hb_funcs_init` and `ft_hb_funcs_done`. * src/autofit/afshaper.h: Updated. * src/autofit/autofit.c: Include `ft-hb.c`. * src/autofit/rules.mk (AUTOF_DRV_SRC, AUTOF_DRV_H): Updated.

  • src/autofit/afmodule.h
  • /****************************************************************************
     *
     * afmodule.h
     *
     *   Auto-fitter module implementation (specification).
     *
     * Copyright (C) 2003-2024 by
     * David Turner, Robert Wilhelm, and Werner Lemberg.
     *
     * This file is part of the FreeType project, and may only be used,
     * modified, and distributed under the terms of the FreeType project
     * license, LICENSE.TXT.  By continuing to use, modify, or distribute
     * this file you indicate that you have read the license and
     * understand and accept it fully.
     *
     */
    
    
    #ifndef AFMODULE_H_
    #define AFMODULE_H_
    
    #include <freetype/internal/ftobjs.h>
    #include <freetype/ftmodapi.h>
    
    #include "ft-hb.h"
    
    FT_BEGIN_HEADER
    
    
      /*
       * This is the `extended' FT_Module structure that holds the
       * autofitter's global data.
       */
    
      typedef struct  AF_ModuleRec_
      {
        FT_ModuleRec  root;
    
        FT_UInt       fallback_style;
        AF_Script     default_script;
        FT_Bool       no_stem_darkening;
        FT_Int        darken_params[8];
    
    #if defined( FT_CONFIG_OPTION_USE_HARFBUZZ )         && \
        defined( FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC )
        ft_hb_funcs_t*  hb_funcs;
    #endif
    
      } AF_ModuleRec, *AF_Module;
    
    
    FT_DECLARE_AUTOHINTER_INTERFACE( af_autofitter_interface )
    FT_DECLARE_MODULE( autofit_module_class )
    
    
    FT_END_HEADER
    
    #endif /* AFMODULE_H_ */
    
    
    /* END */