/src/freetype/src/autofit/afindic.c
https://bitbucket.org/cabalistic/ogredeps/ · C · 155 lines · 87 code · 39 blank · 29 comment · 1 complexity · bacb34d7449735d7e7fe0f6eb29fe023 MD5 · raw file
- /***************************************************************************/
- /* */
- /* afindic.c */
- /* */
- /* Auto-fitter hinting routines for Indic scripts (body). */
- /* */
- /* Copyright 2007, 2011 by */
- /* Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>. */
- /* */
- /* This file is part of the FreeType project, and may only be used, */
- /* modified, and distributed under the terms of the FreeType project */
- /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
- /* this file you indicate that you have read the license and */
- /* understand and accept it fully. */
- /* */
- /***************************************************************************/
- #include "aftypes.h"
- #include "aflatin.h"
- #ifdef AF_CONFIG_OPTION_INDIC
- #include "afindic.h"
- #include "aferrors.h"
- #include "afcjk.h"
- #ifdef AF_CONFIG_OPTION_USE_WARPER
- #include "afwarp.h"
- #endif
- static FT_Error
- af_indic_metrics_init( AF_CJKMetrics metrics,
- FT_Face face )
- {
- /* skip blue zone init in CJK routines */
- FT_CharMap oldmap = face->charmap;
- metrics->units_per_em = face->units_per_EM;
- if ( FT_Select_Charmap( face, FT_ENCODING_UNICODE ) )
- face->charmap = NULL;
- else
- {
- af_cjk_metrics_init_widths( metrics, face, 0x7530 );
- #if 0
- /* either need indic specific blue_chars[] or just skip blue zones */
- af_cjk_metrics_init_blues( metrics, face, af_cjk_blue_chars );
- #endif
- af_cjk_metrics_check_digits( metrics, face );
- }
- FT_Set_Charmap( face, oldmap );
- return AF_Err_Ok;
- }
- static void
- af_indic_metrics_scale( AF_CJKMetrics metrics,
- AF_Scaler scaler )
- {
- /* use CJK routines */
- af_cjk_metrics_scale( metrics, scaler );
- }
- static FT_Error
- af_indic_hints_init( AF_GlyphHints hints,
- AF_CJKMetrics metrics )
- {
- /* use CJK routines */
- return af_cjk_hints_init( hints, metrics );
- }
- static FT_Error
- af_indic_hints_apply( AF_GlyphHints hints,
- FT_Outline* outline,
- AF_CJKMetrics metrics )
- {
- /* use CJK routines */
- return af_cjk_hints_apply( hints, outline, metrics );
- }
- /*************************************************************************/
- /*************************************************************************/
- /***** *****/
- /***** I N D I C S C R I P T C L A S S *****/
- /***** *****/
- /*************************************************************************/
- /*************************************************************************/
- static const AF_Script_UniRangeRec af_indic_uniranges[] =
- {
- #if 0
- AF_UNIRANGE_REC( 0x0100UL, 0xFFFFUL ), /* why this? */
- #endif
- AF_UNIRANGE_REC( 0x0900UL, 0x0DFFUL), /* Indic Range */
- AF_UNIRANGE_REC( 0x0F00UL, 0x0FFFUL), /* Tibetan */
- AF_UNIRANGE_REC( 0x1900UL, 0x194FUL), /* Limbu */
- AF_UNIRANGE_REC( 0x1B80UL, 0x1BBFUL), /* Sundanese */
- AF_UNIRANGE_REC( 0x1C80UL, 0x1CDFUL), /* Meetei Mayak */
- AF_UNIRANGE_REC( 0xA800UL, 0xA82FUL), /* Syloti Nagri */
- AF_UNIRANGE_REC( 0x11800UL, 0x118DFUL), /* Sharada */
- AF_UNIRANGE_REC( 0UL, 0UL)
- };
- AF_DEFINE_SCRIPT_CLASS( af_indic_script_class,
- AF_SCRIPT_INDIC,
- af_indic_uniranges,
- sizeof ( AF_CJKMetricsRec ),
- (AF_Script_InitMetricsFunc) af_indic_metrics_init,
- (AF_Script_ScaleMetricsFunc)af_indic_metrics_scale,
- (AF_Script_DoneMetricsFunc) NULL,
- (AF_Script_InitHintsFunc) af_indic_hints_init,
- (AF_Script_ApplyHintsFunc) af_indic_hints_apply
- )
- #else /* !AF_CONFIG_OPTION_INDIC */
- static const AF_Script_UniRangeRec af_indic_uniranges[] =
- {
- { 0, 0 }
- };
- AF_DEFINE_SCRIPT_CLASS( af_indic_script_class,
- AF_SCRIPT_INDIC,
- af_indic_uniranges,
- sizeof ( AF_CJKMetricsRec ),
- (AF_Script_InitMetricsFunc) NULL,
- (AF_Script_ScaleMetricsFunc)NULL,
- (AF_Script_DoneMetricsFunc) NULL,
- (AF_Script_InitHintsFunc) NULL,
- (AF_Script_ApplyHintsFunc) NULL
- )
- #endif /* !AF_CONFIG_OPTION_INDIC */
- /* END */