]> rtime.felk.cvut.cz Git - hornmich/skoda-qr-demo.git/blob - QRScanner/mobile/jni/thirdparty/freetype/src/autofit/afcjk.h
Add MuPDF native source codes
[hornmich/skoda-qr-demo.git] / QRScanner / mobile / jni / thirdparty / freetype / src / autofit / afcjk.h
1 /***************************************************************************/
2 /*                                                                         */
3 /*  afcjk.h                                                                */
4 /*                                                                         */
5 /*    Auto-fitter hinting routines for CJK script (specification).         */
6 /*                                                                         */
7 /*  Copyright 2006, 2007, 2011, 2012 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
26 FT_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 #ifdef AF_CONFIG_OPTION_CJK
107   FT_LOCAL( FT_Error )
108   af_cjk_metrics_init( AF_CJKMetrics  metrics,
109                        FT_Face        face );
110
111   FT_LOCAL( void )
112   af_cjk_metrics_scale( AF_CJKMetrics  metrics,
113                         AF_Scaler      scaler );
114
115   FT_LOCAL( FT_Error )
116   af_cjk_hints_init( AF_GlyphHints  hints,
117                      AF_CJKMetrics  metrics );
118
119   FT_LOCAL( FT_Error )
120   af_cjk_hints_apply( AF_GlyphHints  hints,
121                       FT_Outline*    outline,
122                       AF_CJKMetrics  metrics );
123
124   /* shared; called from afindic.c */
125   FT_LOCAL( void )
126   af_cjk_metrics_check_digits( AF_CJKMetrics  metrics,
127                                FT_Face        face );
128
129   FT_LOCAL( void )
130   af_cjk_metrics_init_widths( AF_CJKMetrics  metrics,
131                               FT_Face        face );
132 #endif /* AF_CONFIG_OPTION_CJK */
133
134
135 /* */
136
137 FT_END_HEADER
138
139 #endif /* __AFCJK_H__ */
140
141
142 /* END */