• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /***************************************************************************/
2 /*                                                                         */
3 /*  afindic.c                                                              */
4 /*                                                                         */
5 /*    Auto-fitter hinting routines for Indic scripts (body).               */
6 /*                                                                         */
7 /*  Copyright 2007 by                                                      */
8 /*  Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.    */
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 #include "aftypes.h"
20 #include "aflatin.h"
21 
22 
23 #ifdef AF_CONFIG_OPTION_INDIC
24 
25 #include "afindic.h"
26 #include "aferrors.h"
27 #include "afcjk.h"
28 
29 
30 #ifdef AF_USE_WARPER
31 #include "afwarp.h"
32 #endif
33 
34 
35   static FT_Error
af_indic_metrics_init(AF_LatinMetrics metrics,FT_Face face)36   af_indic_metrics_init( AF_LatinMetrics  metrics,
37                          FT_Face          face )
38   {
39     /* use CJK routines */
40     return af_cjk_metrics_init( metrics, face );
41   }
42 
43 
44   static void
af_indic_metrics_scale(AF_LatinMetrics metrics,AF_Scaler scaler)45   af_indic_metrics_scale( AF_LatinMetrics  metrics,
46                           AF_Scaler        scaler )
47   {
48     /* use CJK routines */
49     af_cjk_metrics_scale( metrics, scaler );
50   }
51 
52 
53   static FT_Error
af_indic_hints_init(AF_GlyphHints hints,AF_LatinMetrics metrics)54   af_indic_hints_init( AF_GlyphHints    hints,
55                        AF_LatinMetrics  metrics )
56   {
57     /* use CJK routines */
58     return af_cjk_hints_init( hints, metrics );
59   }
60 
61 
62   static FT_Error
af_indic_hints_apply(AF_GlyphHints hints,FT_Outline * outline,AF_LatinMetrics metrics)63   af_indic_hints_apply( AF_GlyphHints    hints,
64                         FT_Outline*      outline,
65                         AF_LatinMetrics  metrics)
66   {
67     /* use CJK routines */
68     return af_cjk_hints_apply( hints, outline, metrics );
69   }
70 
71 
72   /*************************************************************************/
73   /*************************************************************************/
74   /*****                                                               *****/
75   /*****                I N D I C   S C R I P T   C L A S S            *****/
76   /*****                                                               *****/
77   /*************************************************************************/
78   /*************************************************************************/
79 
80 
81   static const AF_Script_UniRangeRec  af_indic_uniranges[] =
82   {
83 #if 0
84     AF_UNIRANGE_REC( 0x0100UL, 0xFFFFUL ),  /* why this? */
85 #endif
86     AF_UNIRANGE_REC( 0x0900UL, 0x0DFFUL),    /* Indic Range */
87     AF_UNIRANGE_REC(      0UL,      0UL)
88   };
89 
90 
91   AF_DEFINE_SCRIPT_CLASS(af_indic_script_class,
92     AF_SCRIPT_INDIC,
93     af_indic_uniranges,
94 
95     sizeof( AF_LatinMetricsRec ),
96 
97     (AF_Script_InitMetricsFunc) af_indic_metrics_init,
98     (AF_Script_ScaleMetricsFunc)af_indic_metrics_scale,
99     (AF_Script_DoneMetricsFunc) NULL,
100 
101     (AF_Script_InitHintsFunc)   af_indic_hints_init,
102     (AF_Script_ApplyHintsFunc)  af_indic_hints_apply
103   )
104 
105 #else /* !AF_CONFIG_OPTION_INDIC */
106 
107   static const AF_Script_UniRangeRec  af_indic_uniranges[] =
108   {
109     { 0, 0 }
110   };
111 
112 
113   AF_DEFINE_SCRIPT_CLASS(af_indic_script_class,
114     AF_SCRIPT_INDIC,
115     af_indic_uniranges,
116 
117     sizeof( AF_LatinMetricsRec ),
118 
119     (AF_Script_InitMetricsFunc) NULL,
120     (AF_Script_ScaleMetricsFunc)NULL,
121     (AF_Script_DoneMetricsFunc) NULL,
122 
123     (AF_Script_InitHintsFunc)   NULL,
124     (AF_Script_ApplyHintsFunc)  NULL
125   )
126 
127 #endif /* !AF_CONFIG_OPTION_INDIC */
128 
129 
130 /* END */
131