PageRenderTime 18ms CodeModel.GetById 9ms app.highlight 7ms RepoModel.GetById 1ms app.codeStats 0ms

/src/freetype/src/autofit/afcjk.h

https://bitbucket.org/cabalistic/ogredeps/
C++ Header | 141 lines | 73 code | 40 blank | 28 comment | 0 complexity | 02954e86d50b6d2764f0baceea3dbe13 MD5 | raw file
  1/***************************************************************************/
  2/*                                                                         */
  3/*  afcjk.h                                                                */
  4/*                                                                         */
  5/*    Auto-fitter hinting routines for CJK script (specification).         */
  6/*                                                                         */
  7/*  Copyright 2006, 2007, 2011 by                                          */
  8/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
  9/*                                                                         */
 10/*  This file is part of the FreeType project, and may only be used,       */
 11/*  modified, and distributed under the terms of the FreeType project      */
 12/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 13/*  this file you indicate that you have read the license and              */
 14/*  understand and accept it fully.                                        */
 15/*                                                                         */
 16/***************************************************************************/
 17
 18
 19#ifndef __AFCJK_H__
 20#define __AFCJK_H__
 21
 22#include "afhints.h"
 23#include "aflatin.h"
 24
 25
 26FT_BEGIN_HEADER
 27
 28
 29  /* the CJK-specific script class */
 30
 31  AF_DECLARE_SCRIPT_CLASS(af_cjk_script_class)
 32
 33  /* CJK (global) metrics management */
 34
 35  /*
 36   *  CJK glyphs tend to fill the square.  So we have both vertical and
 37   *  horizontal blue zones.  But some glyphs have flat bounding strokes that
 38   *  leave some space between neighbour glyphs.
 39   */
 40  enum
 41  {
 42    AF_CJK_BLUE_TOP,
 43    AF_CJK_BLUE_BOTTOM,
 44    AF_CJK_BLUE_LEFT,
 45    AF_CJK_BLUE_RIGHT,
 46
 47    AF_CJK_BLUE_MAX
 48  };
 49
 50
 51#define AF_CJK_MAX_WIDTHS  16
 52#define AF_CJK_MAX_BLUES   AF_CJK_BLUE_MAX
 53
 54
 55  enum
 56  {
 57    AF_CJK_BLUE_ACTIVE     = 1 << 0,
 58    AF_CJK_BLUE_IS_TOP     = 1 << 1,
 59    AF_CJK_BLUE_IS_RIGHT   = 1 << 2,
 60    AF_CJK_BLUE_ADJUSTMENT = 1 << 3,  /* used for scale adjustment */
 61                                      /* optimization              */
 62    AF_CJK_BLUE_FLAG_MAX
 63  };
 64
 65
 66  typedef struct  AF_CJKBlueRec_
 67  {
 68    AF_WidthRec  ref;
 69    AF_WidthRec  shoot; /* undershoot */
 70    FT_UInt      flags;
 71
 72  } AF_CJKBlueRec, *AF_CJKBlue;
 73
 74
 75  typedef struct  AF_CJKAxisRec_
 76  {
 77    FT_Fixed       scale;
 78    FT_Pos         delta;
 79
 80    FT_UInt        width_count;
 81    AF_WidthRec    widths[AF_CJK_MAX_WIDTHS];
 82    FT_Pos         edge_distance_threshold;
 83    FT_Pos         standard_width;
 84    FT_Bool        extra_light;
 85
 86    /* used for horizontal metrics too for CJK */
 87    FT_Bool        control_overshoot;
 88    FT_UInt        blue_count;
 89    AF_CJKBlueRec  blues[AF_CJK_BLUE_MAX];
 90
 91    FT_Fixed       org_scale;
 92    FT_Pos         org_delta;
 93
 94  } AF_CJKAxisRec, *AF_CJKAxis;
 95
 96
 97  typedef struct  AF_CJKMetricsRec_
 98  {
 99    AF_ScriptMetricsRec  root;
100    FT_UInt              units_per_em;
101    AF_CJKAxisRec        axis[AF_DIMENSION_MAX];
102
103  } AF_CJKMetricsRec, *AF_CJKMetrics;
104
105
106  FT_LOCAL( FT_Error )
107  af_cjk_metrics_init( AF_CJKMetrics  metrics,
108                       FT_Face        face );
109
110  FT_LOCAL( void )
111  af_cjk_metrics_scale( AF_CJKMetrics  metrics,
112                        AF_Scaler      scaler );
113
114  FT_LOCAL( FT_Error )
115  af_cjk_hints_init( AF_GlyphHints  hints,
116                     AF_CJKMetrics  metrics );
117
118  FT_LOCAL( FT_Error )
119  af_cjk_hints_apply( AF_GlyphHints  hints,
120                      FT_Outline*    outline,
121                      AF_CJKMetrics  metrics );
122
123  /* Shared. called from afindic.c */
124  FT_LOCAL( void )
125  af_cjk_metrics_check_digits( AF_CJKMetrics  metrics,
126                               FT_Face        face );
127
128  FT_LOCAL( void )
129  af_cjk_metrics_init_widths( AF_CJKMetrics  metrics,
130                              FT_Face        face,
131                              FT_ULong       charcode );
132
133
134/* */
135
136FT_END_HEADER
137
138#endif /* __AFCJK_H__ */
139
140
141/* END */