| Index: third_party/freetype2/src/src/autofit/afindic.c
|
| diff --git a/third_party/freetype2/src/src/autofit/afindic.c b/third_party/freetype2/src/src/autofit/afindic.c
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..59b14d7e098b8191cc10373b4e87f2c8ddd3ab43
|
| --- /dev/null
|
| +++ b/third_party/freetype2/src/src/autofit/afindic.c
|
| @@ -0,0 +1,157 @@
|
| +/***************************************************************************/
|
| +/* */
|
| +/* afindic.c */
|
| +/* */
|
| +/* Auto-fitter hinting routines for Indic writing system (body). */
|
| +/* */
|
| +/* Copyright 2007-2015 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 );
|
| +#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 FT_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( FT_UInt glyph_index,
|
| + AF_GlyphHints hints,
|
| + FT_Outline* outline,
|
| + AF_CJKMetrics metrics )
|
| + {
|
| + /* use CJK routines */
|
| + return af_cjk_hints_apply( glyph_index, hints, outline, metrics );
|
| + }
|
| +
|
| +
|
| + /* Extract standard_width from writing system/script specific */
|
| + /* metrics class. */
|
| +
|
| + static void
|
| + af_indic_get_standard_widths( AF_CJKMetrics metrics,
|
| + FT_Pos* stdHW,
|
| + FT_Pos* stdVW )
|
| + {
|
| + if ( stdHW )
|
| + *stdHW = metrics->axis[AF_DIMENSION_VERT].standard_width;
|
| +
|
| + if ( stdVW )
|
| + *stdVW = metrics->axis[AF_DIMENSION_HORZ].standard_width;
|
| + }
|
| +
|
| +
|
| + /*************************************************************************/
|
| + /*************************************************************************/
|
| + /***** *****/
|
| + /***** I N D I C S C R I P T C L A S S *****/
|
| + /***** *****/
|
| + /*************************************************************************/
|
| + /*************************************************************************/
|
| +
|
| +
|
| + AF_DEFINE_WRITING_SYSTEM_CLASS(
|
| + af_indic_writing_system_class,
|
| +
|
| + AF_WRITING_SYSTEM_INDIC,
|
| +
|
| + sizeof ( AF_CJKMetricsRec ),
|
| +
|
| + (AF_WritingSystem_InitMetricsFunc) af_indic_metrics_init,
|
| + (AF_WritingSystem_ScaleMetricsFunc)af_indic_metrics_scale,
|
| + (AF_WritingSystem_DoneMetricsFunc) NULL,
|
| + (AF_WritingSystem_GetStdWidthsFunc)af_indic_get_standard_widths,
|
| +
|
| + (AF_WritingSystem_InitHintsFunc) af_indic_hints_init,
|
| + (AF_WritingSystem_ApplyHintsFunc) af_indic_hints_apply
|
| + )
|
| +
|
| +
|
| +#else /* !AF_CONFIG_OPTION_INDIC */
|
| +
|
| +
|
| + AF_DEFINE_WRITING_SYSTEM_CLASS(
|
| + af_indic_writing_system_class,
|
| +
|
| + AF_WRITING_SYSTEM_INDIC,
|
| +
|
| + sizeof ( AF_CJKMetricsRec ),
|
| +
|
| + (AF_WritingSystem_InitMetricsFunc) NULL,
|
| + (AF_WritingSystem_ScaleMetricsFunc)NULL,
|
| + (AF_WritingSystem_DoneMetricsFunc) NULL,
|
| + (AF_WritingSystem_GetStdWidthsFunc)NULL,
|
| +
|
| + (AF_WritingSystem_InitHintsFunc) NULL,
|
| + (AF_WritingSystem_ApplyHintsFunc) NULL
|
| + )
|
| +
|
| +
|
| +#endif /* !AF_CONFIG_OPTION_INDIC */
|
| +
|
| +
|
| +/* END */
|
|
|