1 /**************************************************************************** 2 * 3 * svmetric.h 4 * 5 * The FreeType services for metrics variations (specification). 6 * 7 * Copyright (C) 2016-2020 by 8 * David Turner, Robert Wilhelm, and Werner Lemberg. 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 #ifndef SVMETRIC_H_ 20 #define SVMETRIC_H_ 21 22 #include <freetype/internal/ftserv.h> 23 24 25 FT_BEGIN_HEADER 26 27 28 /* 29 * A service to manage the `HVAR, `MVAR', and `VVAR' OpenType tables. 30 * 31 */ 32 33 #define FT_SERVICE_ID_METRICS_VARIATIONS "metrics-variations" 34 35 36 /* HVAR */ 37 38 typedef FT_Error 39 (*FT_HAdvance_Adjust_Func)( FT_Face face, 40 FT_UInt gindex, 41 FT_Int *avalue ); 42 43 typedef FT_Error 44 (*FT_LSB_Adjust_Func)( FT_Face face, 45 FT_UInt gindex, 46 FT_Int *avalue ); 47 48 typedef FT_Error 49 (*FT_RSB_Adjust_Func)( FT_Face face, 50 FT_UInt gindex, 51 FT_Int *avalue ); 52 53 /* VVAR */ 54 55 typedef FT_Error 56 (*FT_VAdvance_Adjust_Func)( FT_Face face, 57 FT_UInt gindex, 58 FT_Int *avalue ); 59 60 typedef FT_Error 61 (*FT_TSB_Adjust_Func)( FT_Face face, 62 FT_UInt gindex, 63 FT_Int *avalue ); 64 65 typedef FT_Error 66 (*FT_BSB_Adjust_Func)( FT_Face face, 67 FT_UInt gindex, 68 FT_Int *avalue ); 69 70 typedef FT_Error 71 (*FT_VOrg_Adjust_Func)( FT_Face face, 72 FT_UInt gindex, 73 FT_Int *avalue ); 74 75 /* MVAR */ 76 77 typedef void 78 (*FT_Metrics_Adjust_Func)( FT_Face face ); 79 80 FT_DEFINE_SERVICE(MetricsVariations)81 FT_DEFINE_SERVICE( MetricsVariations ) 82 { 83 FT_HAdvance_Adjust_Func hadvance_adjust; 84 FT_LSB_Adjust_Func lsb_adjust; 85 FT_RSB_Adjust_Func rsb_adjust; 86 87 FT_VAdvance_Adjust_Func vadvance_adjust; 88 FT_TSB_Adjust_Func tsb_adjust; 89 FT_BSB_Adjust_Func bsb_adjust; 90 FT_VOrg_Adjust_Func vorg_adjust; 91 92 FT_Metrics_Adjust_Func metrics_adjust; 93 }; 94 95 96 #define FT_DEFINE_SERVICE_METRICSVARIATIONSREC( class_, \ 97 hadvance_adjust_, \ 98 lsb_adjust_, \ 99 rsb_adjust_, \ 100 vadvance_adjust_, \ 101 tsb_adjust_, \ 102 bsb_adjust_, \ 103 vorg_adjust_, \ 104 metrics_adjust_ ) \ 105 static const FT_Service_MetricsVariationsRec class_ = \ 106 { \ 107 hadvance_adjust_, \ 108 lsb_adjust_, \ 109 rsb_adjust_, \ 110 vadvance_adjust_, \ 111 tsb_adjust_, \ 112 bsb_adjust_, \ 113 vorg_adjust_, \ 114 metrics_adjust_ \ 115 }; 116 117 /* */ 118 119 120 FT_END_HEADER 121 122 #endif /* SVMETRIC_H_ */ 123 124 125 /* END */ 126