Home | History | Annotate | Download | only in autofit
      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 (at) redhat.com>, <b.rahul.pm (at) 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
     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
     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
     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
     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