"Fossies" - the Fresh Open Source Software Archive

Member "SDL2_ttf-2.20.2/external/freetype/src/autofit/afglobal.h" (25 May 2022, 5122 Bytes) of package /linux/misc/SDL2_ttf-2.20.2.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "afglobal.h" see the Fossies "Dox" file reference documentation.

    1 /****************************************************************************
    2  *
    3  * afglobal.h
    4  *
    5  *   Auto-fitter routines to compute global hinting values
    6  *   (specification).
    7  *
    8  * Copyright (C) 2003-2022 by
    9  * David Turner, Robert Wilhelm, and Werner Lemberg.
   10  *
   11  * This file is part of the FreeType project, and may only be used,
   12  * modified, and distributed under the terms of the FreeType project
   13  * license, LICENSE.TXT.  By continuing to use, modify, or distribute
   14  * this file you indicate that you have read the license and
   15  * understand and accept it fully.
   16  *
   17  */
   18 
   19 
   20 #ifndef AFGLOBAL_H_
   21 #define AFGLOBAL_H_
   22 
   23 
   24 #include "aftypes.h"
   25 #include "afmodule.h"
   26 #include "afshaper.h"
   27 
   28 
   29 FT_BEGIN_HEADER
   30 
   31 
   32   FT_LOCAL_ARRAY( AF_WritingSystemClass )
   33   af_writing_system_classes[];
   34 
   35 
   36 #undef  SCRIPT
   37 #define SCRIPT( s, S, d, h, H, ss )                            \
   38           AF_DECLARE_SCRIPT_CLASS( af_ ## s ## _script_class )
   39 
   40 #include "afscript.h"
   41 
   42   FT_LOCAL_ARRAY( AF_ScriptClass )
   43   af_script_classes[];
   44 
   45 
   46 #undef  STYLE
   47 #define STYLE( s, S, d, ws, sc, ss, c )                      \
   48           AF_DECLARE_STYLE_CLASS( af_ ## s ## _style_class )
   49 
   50 #include "afstyles.h"
   51 
   52   FT_LOCAL_ARRAY( AF_StyleClass )
   53   af_style_classes[];
   54 
   55 
   56 #ifdef FT_DEBUG_LEVEL_TRACE
   57   FT_LOCAL_ARRAY( char* )
   58   af_style_names[];
   59 #endif
   60 
   61 
   62   /*
   63    * Default values and flags for both autofitter globals (found in
   64    * AF_ModuleRec) and face globals (in AF_FaceGlobalsRec).
   65    */
   66 
   67   /* index of fallback style in `af_style_classes' */
   68 #ifdef AF_CONFIG_OPTION_CJK
   69 #define AF_STYLE_FALLBACK    AF_STYLE_HANI_DFLT
   70 #else
   71 #define AF_STYLE_FALLBACK    AF_STYLE_NONE_DFLT
   72 #endif
   73   /* default script for OpenType; ignored if HarfBuzz isn't used */
   74 #define AF_SCRIPT_DEFAULT    AF_SCRIPT_LATN
   75 
   76   /* a bit mask for AF_DIGIT and AF_NONBASE */
   77 #define AF_STYLE_MASK        0x3FFF
   78   /* an uncovered glyph      */
   79 #define AF_STYLE_UNASSIGNED  AF_STYLE_MASK
   80 
   81   /* if this flag is set, we have an ASCII digit   */
   82 #define AF_DIGIT             0x8000U
   83   /* if this flag is set, we have a non-base character */
   84 #define AF_NONBASE           0x4000U
   85 
   86   /* `increase-x-height' property */
   87 #define AF_PROP_INCREASE_X_HEIGHT_MIN  6
   88 #define AF_PROP_INCREASE_X_HEIGHT_MAX  0
   89 
   90 
   91   /************************************************************************/
   92   /************************************************************************/
   93   /*****                                                              *****/
   94   /*****                  F A C E   G L O B A L S                     *****/
   95   /*****                                                              *****/
   96   /************************************************************************/
   97   /************************************************************************/
   98 
   99 
  100   /*
  101    * Note that glyph_styles[] maps each glyph to an index into the
  102    * `af_style_classes' array.
  103    *
  104    */
  105   typedef struct  AF_FaceGlobalsRec_
  106   {
  107     FT_Face          face;
  108     FT_Long          glyph_count;    /* same as face->num_glyphs */
  109     FT_UShort*       glyph_styles;
  110 
  111 #ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
  112     hb_font_t*       hb_font;
  113     hb_buffer_t*     hb_buf;           /* for feature comparison */
  114 #endif
  115 
  116     /* per-face auto-hinter properties */
  117     FT_UInt          increase_x_height;
  118 
  119     AF_StyleMetrics  metrics[AF_STYLE_MAX];
  120 
  121     /* Compute darkening amount once per size.  Use this to check whether */
  122     /* darken_{x,y} needs to be recomputed.                               */
  123     FT_UShort        stem_darkening_for_ppem;
  124     /* Copy from e.g. AF_LatinMetrics.axis[AF_DIMENSION_HORZ] */
  125     /* to compute the darkening amount.                       */
  126     FT_Pos           standard_vertical_width;
  127     /* Copy from e.g. AF_LatinMetrics.axis[AF_DIMENSION_VERT] */
  128     /* to compute the darkening amount.                       */
  129     FT_Pos           standard_horizontal_width;
  130     /* The actual amount to darken a glyph along the X axis. */
  131     FT_Pos           darken_x;
  132     /* The actual amount to darken a glyph along the Y axis. */
  133     FT_Pos           darken_y;
  134     /* Amount to scale down by to keep emboldened points */
  135     /* on the Y-axis in pre-computed blue zones.         */
  136     FT_Fixed         scale_down_factor;
  137     AF_Module        module;         /* to access global properties */
  138 
  139   } AF_FaceGlobalsRec;
  140 
  141 
  142   /*
  143    * model the global hints data for a given face, decomposed into
  144    * style-specific items
  145    */
  146 
  147   FT_LOCAL( FT_Error )
  148   af_face_globals_new( FT_Face          face,
  149                        AF_FaceGlobals  *aglobals,
  150                        AF_Module        module );
  151 
  152   FT_LOCAL( FT_Error )
  153   af_face_globals_get_metrics( AF_FaceGlobals    globals,
  154                                FT_UInt           gindex,
  155                                FT_UInt           options,
  156                                AF_StyleMetrics  *ametrics );
  157 
  158   FT_LOCAL( void )
  159   af_face_globals_free( AF_FaceGlobals  globals );
  160 
  161   FT_LOCAL_DEF( FT_Bool )
  162   af_face_globals_is_digit( AF_FaceGlobals  globals,
  163                             FT_UInt         gindex );
  164 
  165   /* */
  166 
  167 
  168 FT_END_HEADER
  169 
  170 #endif /* AFGLOBAL_H_ */
  171 
  172 
  173 /* END */