⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t1hinter.h

📁 Qt/Embedded是一个多平台的C++图形用户界面应用程序框架
💻 H
字号:
/******************************************************************* * *  t1hinter.h                                                 1.2 * *    Type1 hinter.          * *  Copyright 1996-1999 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. * * *  The Hinter is in charge of fitting th scaled outline to the *  pixel grid in order to considerably improve the quality of *  the Type 1 font driver's output.. * ******************************************************************/#ifndef T1HINTER_H#define T1HINTER_H#include <t1objs.h>#include <t1gload.h>#ifdef __cplusplus  extern "C" {#endif/************************************************************************ * * <Struct> *   T1_Snap_Zone * * <Description> *   A "snap zone" is used to model either a blue zone or a stem width *   at a given character size. It is made of a minimum and maximum *   edge, defined in 26.6 pixels, as well as one "original" and *   "scaled" position. * *   the position corresponds to the stem width (for stem snap zones) *   or to the blue position (for blue zones) * * <Fields> *   orus  :: original position in font units *   pix   :: current position in sub-pixel units *   min   :: minimum boundary in sub-pixel units *   max   :: maximim boundary in sub-pixel units * ************************************************************************/  typedef struct T1_Snap_Zone_  {    T1_Pos  orus;    T1_Pos  pix;     T1_Pos  min;     T1_Pos  max;      } T1_Snap_Zone;/************************************************************************ * * <Struct> *   T1_Edge * * <Description> *   A very simply structure used to model an stem edge * * <Fields> *   orus  :: original edge position in font units *   pix   :: scaled edge position in sub-pixel units * ************************************************************************/  typedef struct T1_Edge_  {    T1_Pos  orus;    T1_Pos  pix;      } T1_Edge;/************************************************************************ * * <Struct> *    T1_Stem_Hint * * <Description> *    A simple structure used to model a stem hint * * <Fields> *    min_edge   :: the hint's minimum edge *    max_edge   :: the hint's maximum edge *    hint_flags :: some flags describing the stem properties * * <Note> *    the min and max edges of a ghost stem have the same position, *    even if they're coded in a weird way in the charstrings * ************************************************************************/  typedef struct T1_Stem_Hint_  {    T1_Edge  min_edge;    T1_Edge  max_edge;    T1_Int   hint_flags;  } T1_Stem_Hint;#define T1_HINT_FLAG_ACTIVE      1    /* indicates an active stem */#define T1_HINT_FLAG_MIN_BORDER  2    /* unused for now..         */#define T1_HINT_FLAG_MAX_BORDER  4    /* unused for now..         *//* hinter's configuration constants */#define T1_HINTER_MAX_BLUES    24    /* maximum number of blue zones      */#define T1_HINTER_MAX_SNAPS    16    /* maximum number of stem snap zones */#define T1_HINTER_MAX_EDGES    64    /* maximum number of stem hints      *//************************************************************************ * * <Struct> *   T1_Size_Hints * * <Description> *   A structure used to model the hinting information related to *   a size object * * <Fields> *   supress_overshoots :: a boolean flag to tell when overshoot *                         supression should occur. * *   num_blue_zones     :: the total number of blue zones (top+bottom) *   num_bottom_zones   :: the number of bottom zones * *   blue_zones         :: the blue zones table. bottom zones are *                         stored first in the table, followed by *                         all top zones * *   num_stem_snapH     :: number of horizontal stem snap zones *   stem_snapH         :: horizontal stem snap zones * *   num_stem_snapV     :: number of vertical stem snap zones *   stem_snapV         :: vertical stem snap zones * ************************************************************************/  struct T1_Size_Hints_  {    T1_Bool       supress_overshoots;    T1_Int        num_blue_zones;    T1_Int        num_bottom_zones;    T1_Snap_Zone  blue_zones[ T1_HINTER_MAX_BLUES ];    T1_Int        num_snap_widths;    T1_Snap_Zone  snap_widths[ T1_HINTER_MAX_SNAPS ];    T1_Int        num_snap_heights;    T1_Snap_Zone  snap_heights[ T1_HINTER_MAX_SNAPS ];  };/************************************************************************ * * <Struct> *    T1_Stem_Table * * <Description> *    A simple structure used to model a set of stem hints in a *    single direction during the loading of a given glyph outline. *    Not all stem hints are active at a time. Moreover, stems must *    be sorted regularly * * <Fields> *    num_stems   :: total number of stems in table *    num_active  :: number of active stems in table * *    stems       :: the table of all stems *    sort        :: a table of indices into the stems table, used *                   to keep a sorted list of the active stems * ************************************************************************/  typedef struct T1_Stem_Table_  {    T1_Int        num_stems;    T1_Int        num_active;    T1_Stem_Hint  stems[ T1_HINTER_MAX_EDGES ];    T1_Int        sort [ T1_HINTER_MAX_EDGES ];  } T1_Stem_Table;/************************************************************************ * * <Struct> *   T1_Glyph_Hints * * <Description> *   A structure used to model the stem hints of a given glyph outline *   during glyph loading.  * * <Fields> *   hori_stems  :: horizontal stem hints table *   vert_stems  :: vertical stem hints table * ************************************************************************/  struct T1_Glyph_Hints_  {    T1_Stem_Table  hori_stems;    T1_Stem_Table  vert_stems;  };/************************************************************************ * * <Data> *    t1_hinter_funcs * * <Description> *    A table containing the address of various functions used during *    the loading of an hinted scaled outline * ************************************************************************/  LOCAL_DEF  const T1_Hinter_Funcs  t1_hinter_funcs;/************************************************************************ * * <Function> *    T1_New_Size_Hinter * * <Description> *    Allocates a new hinter structure for a given size object * * <Input> *    size :: handle to target size object * * <Return> *    Error code. 0 means success * ************************************************************************/  LOCAL_DEF  T1_Error  T1_New_Size_Hinter( T1_Size  size );/************************************************************************ * * <Function> *    T1_Done_Size_Hinter * * <Description> *    Releases a given size object's hinter structure * * <Input> *    size :: handle to target size object * ************************************************************************/  LOCAL_DEF  void      T1_Done_Size_Hinter( T1_Size  size );/************************************************************************ * * <Function> *    T1_Reset_Size_Hinter * * <Description> *    Recomputes hinting information when a given size object has *    changed its resolutions/char sizes/pixel sizes * * <Input> *    size :: handle to size object * * <Return> *    Error code. 0 means success * ************************************************************************/  LOCAL_DEF  T1_Error  T1_Reset_Size_Hinter( T1_Size  size );/************************************************************************ * * <Function> *    T1_New_Glyph_Hinter * * <Description> *    Allocates a new hinter structure for a given glyph slot * * <Input> *    glyph :: handle to target glyph slot * * <Return> *    Error code. 0 means success * ************************************************************************/  LOCAL_DEF  T1_Error  T1_New_Glyph_Hinter( T1_GlyphSlot  glyph );/************************************************************************ * * <Function> *    T1_Done_Glyph_Hinter * * <Description> *    Releases a given glyph slot's hinter structure * * <Input> *    glyph :: handle to glyph slot * ************************************************************************/  LOCAL_DEF  void      T1_Done_Glyph_Hinter( T1_GlyphSlot  glyph );/************************************************************************ * * <Function> *   T1_Hint_Points * * <Description> *   this function grid-fits several points in a given Type 1 builder *   at once.  * * <Input> *   builder  :: handle to target Type 1 builder * ************************************************************************/  LOCAL_DEF  void  T1_Hint_Points( T1_Builder*  builder );/************************************************************************ * * <Function> *    T1_Hint_Stems * * <Description> *    This function is used to compute the location of each stem hint *    between the first and second passes of the glyph loader on the *    charstring. * * <Input> *    builder :: handle to target builder * ************************************************************************/  LOCAL_DEF  void  T1_Hint_Stems( T1_Builder*  builder );#ifdef __cplusplus  }#endif#endif /* T1HINTER_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -