vrshoot

annotate libs/ft2static/freetype/internal/services/svpscmap.h @ 0:b2f14e535253

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 01 Feb 2014 19:58:19 +0200
parents
children
rev   line source
nuclear@0 1 /***************************************************************************/
nuclear@0 2 /* */
nuclear@0 3 /* svpscmap.h */
nuclear@0 4 /* */
nuclear@0 5 /* The FreeType PostScript charmap service (specification). */
nuclear@0 6 /* */
nuclear@0 7 /* Copyright 2003, 2006 by */
nuclear@0 8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
nuclear@0 9 /* */
nuclear@0 10 /* This file is part of the FreeType project, and may only be used, */
nuclear@0 11 /* modified, and distributed under the terms of the FreeType project */
nuclear@0 12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
nuclear@0 13 /* this file you indicate that you have read the license and */
nuclear@0 14 /* understand and accept it fully. */
nuclear@0 15 /* */
nuclear@0 16 /***************************************************************************/
nuclear@0 17
nuclear@0 18
nuclear@0 19 #ifndef __SVPSCMAP_H__
nuclear@0 20 #define __SVPSCMAP_H__
nuclear@0 21
nuclear@0 22 #include FT_INTERNAL_OBJECTS_H
nuclear@0 23
nuclear@0 24
nuclear@0 25 FT_BEGIN_HEADER
nuclear@0 26
nuclear@0 27
nuclear@0 28 #define FT_SERVICE_ID_POSTSCRIPT_CMAPS "postscript-cmaps"
nuclear@0 29
nuclear@0 30
nuclear@0 31 /*
nuclear@0 32 * Adobe glyph name to unicode value.
nuclear@0 33 */
nuclear@0 34 typedef FT_UInt32
nuclear@0 35 (*PS_Unicode_ValueFunc)( const char* glyph_name );
nuclear@0 36
nuclear@0 37 /*
nuclear@0 38 * Macintosh name id to glyph name. NULL if invalid index.
nuclear@0 39 */
nuclear@0 40 typedef const char*
nuclear@0 41 (*PS_Macintosh_NameFunc)( FT_UInt name_index );
nuclear@0 42
nuclear@0 43 /*
nuclear@0 44 * Adobe standard string ID to glyph name. NULL if invalid index.
nuclear@0 45 */
nuclear@0 46 typedef const char*
nuclear@0 47 (*PS_Adobe_Std_StringsFunc)( FT_UInt string_index );
nuclear@0 48
nuclear@0 49
nuclear@0 50 /*
nuclear@0 51 * Simple unicode -> glyph index charmap built from font glyph names
nuclear@0 52 * table.
nuclear@0 53 */
nuclear@0 54 typedef struct PS_UniMap_
nuclear@0 55 {
nuclear@0 56 FT_UInt32 unicode; /* bit 31 set: is glyph variant */
nuclear@0 57 FT_UInt glyph_index;
nuclear@0 58
nuclear@0 59 } PS_UniMap;
nuclear@0 60
nuclear@0 61
nuclear@0 62 typedef struct PS_UnicodesRec_* PS_Unicodes;
nuclear@0 63
nuclear@0 64 typedef struct PS_UnicodesRec_
nuclear@0 65 {
nuclear@0 66 FT_CMapRec cmap;
nuclear@0 67 FT_UInt num_maps;
nuclear@0 68 PS_UniMap* maps;
nuclear@0 69
nuclear@0 70 } PS_UnicodesRec;
nuclear@0 71
nuclear@0 72
nuclear@0 73 /*
nuclear@0 74 * A function which returns a glyph name for a given index. Returns
nuclear@0 75 * NULL if invalid index.
nuclear@0 76 */
nuclear@0 77 typedef const char*
nuclear@0 78 (*PS_GetGlyphNameFunc)( FT_Pointer data,
nuclear@0 79 FT_UInt string_index );
nuclear@0 80
nuclear@0 81 /*
nuclear@0 82 * A function used to release the glyph name returned by
nuclear@0 83 * PS_GetGlyphNameFunc, when needed
nuclear@0 84 */
nuclear@0 85 typedef void
nuclear@0 86 (*PS_FreeGlyphNameFunc)( FT_Pointer data,
nuclear@0 87 const char* name );
nuclear@0 88
nuclear@0 89 typedef FT_Error
nuclear@0 90 (*PS_Unicodes_InitFunc)( FT_Memory memory,
nuclear@0 91 PS_Unicodes unicodes,
nuclear@0 92 FT_UInt num_glyphs,
nuclear@0 93 PS_GetGlyphNameFunc get_glyph_name,
nuclear@0 94 PS_FreeGlyphNameFunc free_glyph_name,
nuclear@0 95 FT_Pointer glyph_data );
nuclear@0 96
nuclear@0 97 typedef FT_UInt
nuclear@0 98 (*PS_Unicodes_CharIndexFunc)( PS_Unicodes unicodes,
nuclear@0 99 FT_UInt32 unicode );
nuclear@0 100
nuclear@0 101 typedef FT_UInt32
nuclear@0 102 (*PS_Unicodes_CharNextFunc)( PS_Unicodes unicodes,
nuclear@0 103 FT_UInt32 *unicode );
nuclear@0 104
nuclear@0 105
nuclear@0 106 FT_DEFINE_SERVICE( PsCMaps )
nuclear@0 107 {
nuclear@0 108 PS_Unicode_ValueFunc unicode_value;
nuclear@0 109
nuclear@0 110 PS_Unicodes_InitFunc unicodes_init;
nuclear@0 111 PS_Unicodes_CharIndexFunc unicodes_char_index;
nuclear@0 112 PS_Unicodes_CharNextFunc unicodes_char_next;
nuclear@0 113
nuclear@0 114 PS_Macintosh_NameFunc macintosh_name;
nuclear@0 115 PS_Adobe_Std_StringsFunc adobe_std_strings;
nuclear@0 116 const unsigned short* adobe_std_encoding;
nuclear@0 117 const unsigned short* adobe_expert_encoding;
nuclear@0 118 };
nuclear@0 119
nuclear@0 120
nuclear@0 121 #ifndef FT_CONFIG_OPTION_PIC
nuclear@0 122
nuclear@0 123 #define FT_DEFINE_SERVICE_PSCMAPSREC(class_, unicode_value_, unicodes_init_, \
nuclear@0 124 unicodes_char_index_, unicodes_char_next_, macintosh_name_, \
nuclear@0 125 adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_) \
nuclear@0 126 static const FT_Service_PsCMapsRec class_ = \
nuclear@0 127 { \
nuclear@0 128 unicode_value_, unicodes_init_, \
nuclear@0 129 unicodes_char_index_, unicodes_char_next_, macintosh_name_, \
nuclear@0 130 adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_ \
nuclear@0 131 };
nuclear@0 132
nuclear@0 133 #else /* FT_CONFIG_OPTION_PIC */
nuclear@0 134
nuclear@0 135 #define FT_DEFINE_SERVICE_PSCMAPSREC(class_, unicode_value_, unicodes_init_, \
nuclear@0 136 unicodes_char_index_, unicodes_char_next_, macintosh_name_, \
nuclear@0 137 adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_) \
nuclear@0 138 void \
nuclear@0 139 FT_Init_Class_##class_( FT_Library library, \
nuclear@0 140 FT_Service_PsCMapsRec* clazz) \
nuclear@0 141 { \
nuclear@0 142 FT_UNUSED(library); \
nuclear@0 143 clazz->unicode_value = unicode_value_; \
nuclear@0 144 clazz->unicodes_init = unicodes_init_; \
nuclear@0 145 clazz->unicodes_char_index = unicodes_char_index_; \
nuclear@0 146 clazz->unicodes_char_next = unicodes_char_next_; \
nuclear@0 147 clazz->macintosh_name = macintosh_name_; \
nuclear@0 148 clazz->adobe_std_strings = adobe_std_strings_; \
nuclear@0 149 clazz->adobe_std_encoding = adobe_std_encoding_; \
nuclear@0 150 clazz->adobe_expert_encoding = adobe_expert_encoding_; \
nuclear@0 151 }
nuclear@0 152
nuclear@0 153 #endif /* FT_CONFIG_OPTION_PIC */
nuclear@0 154
nuclear@0 155 /* */
nuclear@0 156
nuclear@0 157
nuclear@0 158 FT_END_HEADER
nuclear@0 159
nuclear@0 160
nuclear@0 161 #endif /* __SVPSCMAP_H__ */
nuclear@0 162
nuclear@0 163
nuclear@0 164 /* END */