1 /****************************************************************************
5 * The FreeType PostScript charmap service (specification).
7 * Copyright (C) 2003-2020 by
8 * David Turner, Robert Wilhelm, and Werner Lemberg.
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.
22 #include <freetype/internal/ftobjs.h>
28 #define FT_SERVICE_ID_POSTSCRIPT_CMAPS "postscript-cmaps"
32 * Adobe glyph name to unicode value.
35 (*PS_Unicode_ValueFunc)( const char* glyph_name );
38 * Macintosh name id to glyph name. `NULL` if invalid index.
41 (*PS_Macintosh_NameFunc)( FT_UInt name_index );
44 * Adobe standard string ID to glyph name. `NULL` if invalid index.
47 (*PS_Adobe_Std_StringsFunc)( FT_UInt string_index );
51 * Simple unicode -> glyph index charmap built from font glyph names table.
53 typedef struct PS_UniMap_
55 FT_UInt32 unicode; /* bit 31 set: is glyph variant */
61 typedef struct PS_UnicodesRec_* PS_Unicodes;
63 typedef struct PS_UnicodesRec_
73 * A function which returns a glyph name for a given index. Returns
74 * `NULL` if invalid index.
77 (*PS_GetGlyphNameFunc)( FT_Pointer data,
78 FT_UInt string_index );
81 * A function used to release the glyph name returned by
82 * PS_GetGlyphNameFunc, when needed
85 (*PS_FreeGlyphNameFunc)( FT_Pointer data,
89 (*PS_Unicodes_InitFunc)( FT_Memory memory,
92 PS_GetGlyphNameFunc get_glyph_name,
93 PS_FreeGlyphNameFunc free_glyph_name,
94 FT_Pointer glyph_data );
97 (*PS_Unicodes_CharIndexFunc)( PS_Unicodes unicodes,
101 (*PS_Unicodes_CharNextFunc)( PS_Unicodes unicodes,
102 FT_UInt32 *unicode );
105 FT_DEFINE_SERVICE( PsCMaps )
107 PS_Unicode_ValueFunc unicode_value;
109 PS_Unicodes_InitFunc unicodes_init;
110 PS_Unicodes_CharIndexFunc unicodes_char_index;
111 PS_Unicodes_CharNextFunc unicodes_char_next;
113 PS_Macintosh_NameFunc macintosh_name;
114 PS_Adobe_Std_StringsFunc adobe_std_strings;
115 const unsigned short* adobe_std_encoding;
116 const unsigned short* adobe_expert_encoding;
120 #define FT_DEFINE_SERVICE_PSCMAPSREC( class_, \
123 unicodes_char_index_, \
124 unicodes_char_next_, \
126 adobe_std_strings_, \
127 adobe_std_encoding_, \
128 adobe_expert_encoding_ ) \
129 static const FT_Service_PsCMapsRec class_ = \
131 unicode_value_, unicodes_init_, \
132 unicodes_char_index_, unicodes_char_next_, macintosh_name_, \
133 adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_ \
142 #endif /* SVPSCMAP_H_ */