1 /***************************************************************************/
5 /* Auto-fitter hinting routines for Indic scripts (body). */
7 /* Copyright 2007, 2011-2013 by */
8 /* Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>. */
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. */
16 /***************************************************************************/
23 #ifdef AF_CONFIG_OPTION_INDIC
30 #ifdef AF_CONFIG_OPTION_USE_WARPER
36 af_indic_metrics_init( AF_CJKMetrics metrics
,
39 /* skip blue zone init in CJK routines */
40 FT_CharMap oldmap
= face
->charmap
;
43 metrics
->units_per_em
= face
->units_per_EM
;
45 if ( FT_Select_Charmap( face
, FT_ENCODING_UNICODE
) )
49 af_cjk_metrics_init_widths( metrics
, face
);
51 /* either need indic specific blue_chars[] or just skip blue zones */
52 af_cjk_metrics_init_blues( metrics
, face
, af_cjk_blue_chars
);
54 af_cjk_metrics_check_digits( metrics
, face
);
57 FT_Set_Charmap( face
, oldmap
);
64 af_indic_metrics_scale( AF_CJKMetrics metrics
,
67 /* use CJK routines */
68 af_cjk_metrics_scale( metrics
, scaler
);
73 af_indic_hints_init( AF_GlyphHints hints
,
74 AF_CJKMetrics metrics
)
76 /* use CJK routines */
77 return af_cjk_hints_init( hints
, metrics
);
82 af_indic_hints_apply( AF_GlyphHints hints
,
84 AF_CJKMetrics metrics
)
86 /* use CJK routines */
87 return af_cjk_hints_apply( hints
, outline
, metrics
);
91 /*************************************************************************/
92 /*************************************************************************/
94 /***** I N D I C S C R I P T C L A S S *****/
96 /*************************************************************************/
97 /*************************************************************************/
100 static const AF_Script_UniRangeRec af_indic_uniranges
[] =
103 AF_UNIRANGE_REC( 0x0100UL
, 0xFFFFUL
), /* why this? */
105 AF_UNIRANGE_REC( 0x0900UL
, 0x0DFFUL
), /* Indic Range */
106 AF_UNIRANGE_REC( 0x0F00UL
, 0x0FFFUL
), /* Tibetan */
107 AF_UNIRANGE_REC( 0x1900UL
, 0x194FUL
), /* Limbu */
108 AF_UNIRANGE_REC( 0x1B80UL
, 0x1BBFUL
), /* Sundanese */
109 AF_UNIRANGE_REC( 0x1C80UL
, 0x1CDFUL
), /* Meetei Mayak */
110 AF_UNIRANGE_REC( 0xA800UL
, 0xA82FUL
), /* Syloti Nagri */
111 AF_UNIRANGE_REC( 0x11800UL
, 0x118DFUL
), /* Sharada */
112 AF_UNIRANGE_REC( 0UL, 0UL)
116 AF_DEFINE_SCRIPT_CLASS( af_indic_script_class
,
121 sizeof ( AF_CJKMetricsRec
),
123 (AF_Script_InitMetricsFunc
) af_indic_metrics_init
,
124 (AF_Script_ScaleMetricsFunc
)af_indic_metrics_scale
,
125 (AF_Script_DoneMetricsFunc
) NULL
,
127 (AF_Script_InitHintsFunc
) af_indic_hints_init
,
128 (AF_Script_ApplyHintsFunc
) af_indic_hints_apply
131 #else /* !AF_CONFIG_OPTION_INDIC */
133 static const AF_Script_UniRangeRec af_indic_uniranges
[] =
139 AF_DEFINE_SCRIPT_CLASS( af_indic_script_class
,
144 sizeof ( AF_CJKMetricsRec
),
146 (AF_Script_InitMetricsFunc
) NULL
,
147 (AF_Script_ScaleMetricsFunc
)NULL
,
148 (AF_Script_DoneMetricsFunc
) NULL
,
150 (AF_Script_InitHintsFunc
) NULL
,
151 (AF_Script_ApplyHintsFunc
) NULL
154 #endif /* !AF_CONFIG_OPTION_INDIC */