1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* svpscmap.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* The FreeType PostScript charmap service (specification). */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 741371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier/* Copyright 2003, 2006, 2009, 2012 by */ 8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* This file is part of the FreeType project, and may only be used, */ 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* modified, and distributed under the terms of the FreeType project */ 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* this file you indicate that you have read the license and */ 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* understand and accept it fully. */ 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __SVPSCMAP_H__ 20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __SVPSCMAP_H__ 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_INTERNAL_OBJECTS_H 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_SERVICE_ID_POSTSCRIPT_CMAPS "postscript-cmaps" 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Adobe glyph name to unicode value. 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_UInt32 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*PS_Unicode_ValueFunc)( const char* glyph_name ); 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Macintosh name id to glyph name. NULL if invalid index. 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef const char* 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*PS_Macintosh_NameFunc)( FT_UInt name_index ); 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Adobe standard string ID to glyph name. NULL if invalid index. 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef const char* 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*PS_Adobe_Std_StringsFunc)( FT_UInt string_index ); 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Simple unicode -> glyph index charmap built from font glyph names 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * table. 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PS_UniMap_ 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt32 unicode; /* bit 31 set: is glyph variant */ 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt glyph_index; 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PS_UniMap; 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PS_UnicodesRec_* PS_Unicodes; 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PS_UnicodesRec_ 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CMapRec cmap; 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt num_maps; 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_UniMap* maps; 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PS_UnicodesRec; 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A function which returns a glyph name for a given index. Returns 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * NULL if invalid index. 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef const char* 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*PS_GetGlyphNameFunc)( FT_Pointer data, 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt string_index ); 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A function used to release the glyph name returned by 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * PS_GetGlyphNameFunc, when needed 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*PS_FreeGlyphNameFunc)( FT_Pointer data, 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const char* name ); 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*PS_Unicodes_InitFunc)( FT_Memory memory, 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_Unicodes unicodes, 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt num_glyphs, 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_GetGlyphNameFunc get_glyph_name, 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_FreeGlyphNameFunc free_glyph_name, 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pointer glyph_data ); 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_UInt 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*PS_Unicodes_CharIndexFunc)( PS_Unicodes unicodes, 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt32 unicode ); 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 101295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner typedef FT_UInt32 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*PS_Unicodes_CharNextFunc)( PS_Unicodes unicodes, 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt32 *unicode ); 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_DEFINE_SERVICE( PsCMaps ) 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_Unicode_ValueFunc unicode_value; 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_Unicodes_InitFunc unicodes_init; 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_Unicodes_CharIndexFunc unicodes_char_index; 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_Unicodes_CharNextFunc unicodes_char_next; 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_Macintosh_NameFunc macintosh_name; 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_Adobe_Std_StringsFunc adobe_std_strings; 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const unsigned short* adobe_std_encoding; 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const unsigned short* adobe_expert_encoding; 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project }; 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 120295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 121295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#ifndef FT_CONFIG_OPTION_PIC 122295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 12341371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier#define FT_DEFINE_SERVICE_PSCMAPSREC( class_, \ 12441371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier unicode_value_, \ 12541371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier unicodes_init_, \ 12641371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier unicodes_char_index_, \ 12741371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier unicodes_char_next_, \ 12841371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier macintosh_name_, \ 12941371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier adobe_std_strings_, \ 13041371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier adobe_std_encoding_, \ 13141371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier adobe_expert_encoding_ ) \ 13241371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier static const FT_Service_PsCMapsRec class_ = \ 13341371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier { \ 13441371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier unicode_value_, unicodes_init_, \ 13541371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier unicodes_char_index_, unicodes_char_next_, macintosh_name_, \ 13641371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_ \ 137295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner }; 138295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 13941371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier#else /* FT_CONFIG_OPTION_PIC */ 14041371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier 14141371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier#define FT_DEFINE_SERVICE_PSCMAPSREC( class_, \ 14241371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier unicode_value_, \ 14341371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier unicodes_init_, \ 14441371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier unicodes_char_index_, \ 14541371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier unicodes_char_next_, \ 14641371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier macintosh_name_, \ 14741371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier adobe_std_strings_, \ 14841371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier adobe_std_encoding_, \ 14941371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier adobe_expert_encoding_ ) \ 15041371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier void \ 15141371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier FT_Init_Class_ ## class_( FT_Library library, \ 15241371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier FT_Service_PsCMapsRec* clazz ) \ 15341371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier { \ 15441371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier FT_UNUSED( library ); \ 15541371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier \ 15641371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier clazz->unicode_value = unicode_value_; \ 15741371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier clazz->unicodes_init = unicodes_init_; \ 15841371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier clazz->unicodes_char_index = unicodes_char_index_; \ 15941371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier clazz->unicodes_char_next = unicodes_char_next_; \ 16041371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier clazz->macintosh_name = macintosh_name_; \ 16141371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier clazz->adobe_std_strings = adobe_std_strings_; \ 16241371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier clazz->adobe_std_encoding = adobe_std_encoding_; \ 16341371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier clazz->adobe_expert_encoding = adobe_expert_encoding_; \ 16441371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier } 16541371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier 16641371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier#endif /* FT_CONFIG_OPTION_PIC */ 167295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __SVPSCMAP_H__ */ 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 178