1 /***************************************************************************/ 2 /* */ 3 /* afglobal.h */ 4 /* */ 5 /* Auto-fitter routines to compute global hinting values */ 6 /* (specification). */ 7 /* */ 8 /* Copyright 2003-2015 by */ 9 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ 10 /* */ 11 /* This file is part of the FreeType project, and may only be used, */ 12 /* modified, and distributed under the terms of the FreeType project */ 13 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 14 /* this file you indicate that you have read the license and */ 15 /* understand and accept it fully. */ 16 /* */ 17 /***************************************************************************/ 18 19 20 #ifndef __AFGLOBAL_H__ 21 #define __AFGLOBAL_H__ 22 23 24 #include "aftypes.h" 25 #include "afmodule.h" 26 #include "hbshim.h" 27 28 29 FT_BEGIN_HEADER 30 31 32 FT_LOCAL_ARRAY( AF_WritingSystemClass ) 33 af_writing_system_classes[]; 34 35 36 #undef SCRIPT 37 #define SCRIPT( s, S, d, h, sc1, sc2, sc3 ) \ 38 AF_DECLARE_SCRIPT_CLASS( af_ ## s ## _script_class ) 39 40 #include "afscript.h" 41 42 FT_LOCAL_ARRAY( AF_ScriptClass ) 43 af_script_classes[]; 44 45 46 #undef STYLE 47 #define STYLE( s, S, d, ws, sc, ss, c ) \ 48 AF_DECLARE_STYLE_CLASS( af_ ## s ## _style_class ) 49 50 #include "afstyles.h" 51 52 FT_LOCAL_ARRAY( AF_StyleClass ) 53 af_style_classes[]; 54 55 56 #ifdef FT_DEBUG_LEVEL_TRACE 57 FT_LOCAL_ARRAY( char* ) 58 af_style_names[]; 59 #endif 60 61 62 /* 63 * Default values and flags for both autofitter globals (found in 64 * AF_ModuleRec) and face globals (in AF_FaceGlobalsRec). 65 */ 66 67 /* index of fallback style in `af_style_classes' */ 68 #ifdef AF_CONFIG_OPTION_CJK 69 #define AF_STYLE_FALLBACK AF_STYLE_HANI_DFLT 70 #else 71 #define AF_STYLE_FALLBACK AF_STYLE_NONE_DFLT 72 #endif 73 /* default script for OpenType; ignored if HarfBuzz isn't used */ 74 #define AF_SCRIPT_DEFAULT AF_SCRIPT_LATN 75 /* a bit mask indicating an uncovered glyph */ 76 #define AF_STYLE_UNASSIGNED 0x7F 77 /* if this flag is set, we have an ASCII digit */ 78 #define AF_DIGIT 0x80 79 80 /* `increase-x-height' property */ 81 #define AF_PROP_INCREASE_X_HEIGHT_MIN 6 82 #define AF_PROP_INCREASE_X_HEIGHT_MAX 0 83 84 85 /************************************************************************/ 86 /************************************************************************/ 87 /***** *****/ 88 /***** F A C E G L O B A L S *****/ 89 /***** *****/ 90 /************************************************************************/ 91 /************************************************************************/ 92 93 94 /* 95 * Note that glyph_styles[] maps each glyph to an index into the 96 * `af_style_classes' array. 97 * 98 */ 99 typedef struct AF_FaceGlobalsRec_ 100 { 101 FT_Face face; 102 FT_Long glyph_count; /* same as face->num_glyphs */ 103 FT_Byte* glyph_styles; 104 105 #ifdef FT_CONFIG_OPTION_USE_HARFBUZZ 106 hb_font_t* hb_font; 107 #endif 108 109 /* per-face auto-hinter properties */ 110 FT_UInt increase_x_height; 111 112 AF_StyleMetrics metrics[AF_STYLE_MAX]; 113 114 AF_Module module; /* to access global properties */ 115 116 } AF_FaceGlobalsRec; 117 118 119 /* 120 * model the global hints data for a given face, decomposed into 121 * style-specific items 122 */ 123 124 FT_LOCAL( FT_Error ) 125 af_face_globals_new( FT_Face face, 126 AF_FaceGlobals *aglobals, 127 AF_Module module ); 128 129 FT_LOCAL( FT_Error ) 130 af_face_globals_get_metrics( AF_FaceGlobals globals, 131 FT_UInt gindex, 132 FT_UInt options, 133 AF_StyleMetrics *ametrics ); 134 135 FT_LOCAL( void ) 136 af_face_globals_free( AF_FaceGlobals globals ); 137 138 FT_LOCAL_DEF( FT_Bool ) 139 af_face_globals_is_digit( AF_FaceGlobals globals, 140 FT_UInt gindex ); 141 142 /* */ 143 144 145 FT_END_HEADER 146 147 #endif /* __AFGLOBAL_H__ */ 148 149 150 /* END */ 151