afindic.c revision 295ffce55e0198e7a9f7d46b33f5c2b4147bf821
1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  afindic.c                                                              */
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    Auto-fitter hinting routines for Indic scripts (body).               */
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
7049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  Copyright 2007 by                                                      */
8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.    */
9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  This file is part of the FreeType project, and may only be used,       */
11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  modified, and distributed under the terms of the FreeType project      */
12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  this file you indicate that you have read the license and              */
14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  understand and accept it fully.                                        */
15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "aftypes.h"
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "aflatin.h"
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef AF_CONFIG_OPTION_INDIC
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "afindic.h"
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "aferrors.h"
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "afcjk.h"
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef AF_USE_WARPER
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "afwarp.h"
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  static FT_Error
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  af_indic_metrics_init( AF_LatinMetrics  metrics,
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         FT_Face          face )
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    /* use CJK routines */
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    return af_cjk_metrics_init( metrics, face );
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  static void
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  af_indic_metrics_scale( AF_LatinMetrics  metrics,
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          AF_Scaler        scaler )
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    /* use CJK routines */
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    af_cjk_metrics_scale( metrics, scaler );
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  static FT_Error
54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  af_indic_hints_init( AF_GlyphHints    hints,
55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                       AF_LatinMetrics  metrics )
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    /* use CJK routines */
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    return af_cjk_hints_init( hints, metrics );
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  static FT_Error
63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  af_indic_hints_apply( AF_GlyphHints    hints,
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                        FT_Outline*      outline,
65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                        AF_LatinMetrics  metrics)
66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    /* use CJK routines */
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    return af_cjk_hints_apply( hints, outline, metrics );
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*****                                                               *****/
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*****                I N D I C   S C R I P T   C L A S S            *****/
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*****                                                               *****/
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  static const AF_Script_UniRangeRec  af_indic_uniranges[] =
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 0
84295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner    AF_UNIRANGE_REC( 0x0100UL, 0xFFFFUL ),  /* why this? */
85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
86295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner    AF_UNIRANGE_REC( 0x0900UL, 0x0DFFUL),    /* Indic Range */
87295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner    AF_UNIRANGE_REC(      0UL,      0UL)
88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  };
89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
91295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  AF_DEFINE_SCRIPT_CLASS(af_indic_script_class,
92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    AF_SCRIPT_INDIC,
93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    af_indic_uniranges,
94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    sizeof( AF_LatinMetricsRec ),
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    (AF_Script_InitMetricsFunc) af_indic_metrics_init,
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    (AF_Script_ScaleMetricsFunc)af_indic_metrics_scale,
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    (AF_Script_DoneMetricsFunc) NULL,
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    (AF_Script_InitHintsFunc)   af_indic_hints_init,
102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    (AF_Script_ApplyHintsFunc)  af_indic_hints_apply
103295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  )
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else /* !AF_CONFIG_OPTION_INDIC */
106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  static const AF_Script_UniRangeRec  af_indic_uniranges[] =
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    { 0, 0 }
110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  };
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
113295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  AF_DEFINE_SCRIPT_CLASS(af_indic_script_class,
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    AF_SCRIPT_INDIC,
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    af_indic_uniranges,
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    sizeof( AF_LatinMetricsRec ),
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    (AF_Script_InitMetricsFunc) NULL,
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    (AF_Script_ScaleMetricsFunc)NULL,
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    (AF_Script_DoneMetricsFunc) NULL,
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    (AF_Script_InitHintsFunc)   NULL,
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    (AF_Script_ApplyHintsFunc)  NULL
125295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  )
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* !AF_CONFIG_OPTION_INDIC */
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
131