1 /* Copyright (C) 1992, 1995, 1996, 1998, 1999 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: bfont.h,v 1.10 2004/08/04 19:36:12 stefan Exp $ */ 18 /* Interpreter internal routines and data needed for building fonts */ 19 /* Requires gxfont.h */ 20 21 #ifndef bfont_INCLUDED 22 # define bfont_INCLUDED 23 24 #include "ifont.h" 25 26 /* In zfont.c */ 27 int add_FID(i_ctx_t *i_ctx_p, ref *pfdict, gs_font *pfont, 28 gs_ref_memory_t *imem); 29 30 font_proc_make_font(zdefault_make_font); 31 font_proc_make_font(zbase_make_font); 32 /* The global font directory */ 33 extern gs_font_dir *ifont_dir; 34 35 /* Structure for passing BuildChar and BuildGlyph procedures. */ 36 typedef struct build_proc_refs_s { 37 ref BuildChar; 38 ref BuildGlyph; 39 } build_proc_refs; 40 41 /* Options for collecting parameters from a font dictionary. */ 42 /* The comment indicates where the option is tested. */ 43 typedef enum { 44 bf_options_none = 0, 45 bf_Encoding_optional = 1, /* build_gs_font */ 46 bf_UniqueID_ignored = 4, /* build_gs_simple_font */ 47 bf_CharStrings_optional = 8, /* build_gs_primitive_font */ 48 bf_notdef_required = 16 /* build_gs_primitive_font */ 49 } build_font_options_t; 50 51 /* In zbfont.c */ 52 int build_proc_name_refs(const gs_memory_t *mem, 53 build_proc_refs * pbuild, 54 const char *bcstr, const char *bgstr); 55 int build_gs_font_procs(os_ptr, build_proc_refs *); 56 #define BUILD_BASE_FONT_PROC(proc)\ 57 int proc(i_ctx_t *, os_ptr, gs_font_base **, font_type,\ 58 gs_memory_type_ptr_t, const build_proc_refs *,\ 59 build_font_options_t) 60 typedef BUILD_BASE_FONT_PROC((*build_base_font_proc_t)); 61 BUILD_BASE_FONT_PROC(build_gs_primitive_font); 62 int build_gs_FDArray_font(i_ctx_t *, /*const*/ ref *, gs_font_base **, 63 font_type, gs_memory_type_ptr_t, 64 const build_proc_refs *); 65 int build_gs_outline_font(i_ctx_t *, os_ptr, gs_font_base **, font_type, 66 gs_memory_type_ptr_t, const build_proc_refs *, 67 build_font_options_t, build_base_font_proc_t); 68 BUILD_BASE_FONT_PROC(build_gs_simple_font); 69 void init_gs_simple_font(gs_font_base *pfont, const double bbox[4], 70 const gs_uid *puid); 71 void lookup_gs_simple_font_encoding(gs_font_base *); 72 int build_gs_font(i_ctx_t *, os_ptr, gs_font **, font_type, 73 gs_memory_type_ptr_t, const build_proc_refs *, 74 build_font_options_t); 75 int build_gs_sub_font(i_ctx_t *, const ref *, gs_font **, 76 font_type, gs_memory_type_ptr_t, 77 const build_proc_refs *, const ref *, ref *); 78 int define_gs_font(gs_font *); 79 void get_font_name(const gs_memory_t *mem, ref *pfname, const ref *op); 80 void copy_font_name(gs_font_name * pfstr, const ref * pfname); 81 gs_glyph zfont_encode_char(gs_font *pfont, gs_char chr, gs_glyph_space_t ignored); 82 gs_char gs_font_map_glyph_to_unicode(gs_font *font, gs_glyph glyph); 83 const ref *zfont_get_to_unicode_map(gs_font_dir *dir); 84 85 #endif /* bfont_INCLUDED */ 86