1 /***************************************************************************/ 2 /* */ 3 /* svgldict.h */ 4 /* */ 5 /* The FreeType glyph dictionary services (specification). */ 6 /* */ 7 /* Copyright 2003-2018 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 SVGLDICT_H_ 20 #define SVGLDICT_H_ 21 22 #include FT_INTERNAL_SERVICE_H 23 24 25 FT_BEGIN_HEADER 26 27 28 /* 29 * A service used to retrieve glyph names, as well as to find the 30 * index of a given glyph name in a font. 31 * 32 */ 33 34 #define FT_SERVICE_ID_GLYPH_DICT "glyph-dict" 35 36 37 typedef FT_Error 38 (*FT_GlyphDict_GetNameFunc)( FT_Face face, 39 FT_UInt glyph_index, 40 FT_Pointer buffer, 41 FT_UInt buffer_max ); 42 43 typedef FT_UInt 44 (*FT_GlyphDict_NameIndexFunc)( FT_Face face, 45 FT_String* glyph_name ); 46 47 FT_DEFINE_SERVICE(GlyphDict)48 FT_DEFINE_SERVICE( GlyphDict ) 49 { 50 FT_GlyphDict_GetNameFunc get_name; 51 FT_GlyphDict_NameIndexFunc name_index; /* optional */ 52 }; 53 54 55 #ifndef FT_CONFIG_OPTION_PIC 56 57 #define FT_DEFINE_SERVICE_GLYPHDICTREC( class_, \ 58 get_name_, \ 59 name_index_ ) \ 60 static const FT_Service_GlyphDictRec class_ = \ 61 { \ 62 get_name_, name_index_ \ 63 }; 64 65 #else /* FT_CONFIG_OPTION_PIC */ 66 67 #define FT_DEFINE_SERVICE_GLYPHDICTREC( class_, \ 68 get_name_, \ 69 name_index_ ) \ 70 void \ 71 FT_Init_Class_ ## class_( FT_Library library, \ 72 FT_Service_GlyphDictRec* clazz ) \ 73 { \ 74 FT_UNUSED( library ); \ 75 \ 76 clazz->get_name = get_name_; \ 77 clazz->name_index = name_index_; \ 78 } 79 80 #endif /* FT_CONFIG_OPTION_PIC */ 81 82 /* */ 83 84 85 FT_END_HEADER 86 87 88 #endif /* SVGLDICT_H_ */ 89 90 91 /* END */ 92