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