1 /* Copyright (C) 1997, 2000 Aladdin Enterprises. All rights reserved. 2 3 This software is provided AS-IS with no warranty, either express or 4 implied. 5 6 This software is distributed under license and may not be copied, 7 modified or distributed except as expressly authorized under the terms 8 of the license contained in the file LICENSE in this distribution. 9 10 For more information about licensing, please refer to 11 http://www.ghostscript.com/licensing/. For information on 12 commercial licensing, go to http://www.artifex.com/licensing/ or 13 contact Artifex Software, Inc., 101 Lucas Valley Road #110, 14 San Rafael, CA 94903, U.S.A., +1(415)492-9861. 15 */ 16 17 /* $Id: gsfcmap.h,v 1.9 2003/02/06 09:40:00 igor Exp $ */ 18 /* Public interface to CMaps */ 19 20 #ifndef gsfcmap_INCLUDED 21 # define gsfcmap_INCLUDED 22 23 #include "gsccode.h" 24 25 /* Define the abstract type for a CMap. */ 26 #ifndef gs_cmap_DEFINED 27 # define gs_cmap_DEFINED 28 typedef struct gs_cmap_s gs_cmap_t; 29 #endif 30 31 /* ---------------- Procedural interface ---------------- */ 32 33 /* 34 * Create an Identity CMap. 35 */ 36 int gs_cmap_create_identity(gs_cmap_t **ppcmap, int num_bytes, int wmode, 37 gs_memory_t *mem); 38 39 /* 40 * Create an Identity CMap where each entry varies only in the lowest byte, 41 * and that maps to characters rather than to CIDs. 42 * (This is suitable for use as a ToUnicode CMap, for example.) 43 */ 44 int gs_cmap_create_char_identity(gs_cmap_t **ppcmap, int num_bytes, 45 int wmode, gs_memory_t *mem); 46 47 /* 48 * Decode a character from a string using a CMap, updating the index. 49 * Return 0 for a CID or name, N > 0 for a character code where N is the 50 * number of bytes in the code, or an error. Store the decoded bytes in 51 * *pchr. For undefined characters, set *pglyph = gs_no_glyph and return 0. 52 */ 53 int gs_cmap_decode_next(const gs_cmap_t *pcmap, const gs_const_string *str, 54 uint *pindex, uint *pfidx, 55 gs_char *pchr, gs_glyph *pglyph); 56 57 /* 58 * Allocate and initialize a ToUnicode CMap. 59 */ 60 int gs_cmap_ToUnicode_alloc(gs_memory_t *mem, int id, int num_codes, int key_size, 61 gs_cmap_t **ppcmap); 62 63 /* 64 * Write a code pair to ToUnicode CMap. 65 */ 66 void gs_cmap_ToUnicode_add_pair(gs_cmap_t *pcmap, int code0, int code2); 67 68 #endif /* gsfcmap_INCLUDED */ 69