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