1 /* Copyright (C) 2001-2006 Artifex Software, Inc. 2 All Rights Reserved. 3 4 This software is provided AS-IS with no warranty, either express or 5 implied. 6 7 This software is distributed under license and may not be copied, modified 8 or distributed except as expressly authorized under the terms of that 9 license. Refer to licensing information at http://www.artifex.com/ 10 or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, 11 San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information. 12 */ 13 14 /* $Id: gdevpdtx.h 8022 2007-06-05 22:23:38Z giles $ */ 15 /* Shared implementation definitions for pdfwrite text and fonts */ 16 17 #ifndef gdevpdtx_INCLUDED 18 # define gdevpdtx_INCLUDED 19 20 #include "gdevpdt.h" 21 22 /* 23 * The pdfwrite text code is designed in layers. Each layer uses only 24 * facilities defined in that layer and those below it. The layers and the 25 * code files that define them are: 26 * 27 * Text processing 28 * gdevpdtt.c - main text processing and utilities 29 * gdevpdtc.c - processing for composite and CID-based fonts 30 * gdevpdte.c - processing for Encoding-based (i.e., all other) fonts 31 * gdevpdts.c - text state bookkeeping 32 * gdevpdt[st].h - definitions shared by the above 33 * Font resources 34 * gdevpdtf.h - interface and public definitions 35 * gdevpdtf.c - implementation of font resources, except for writing 36 * gdevpdtw.[hc] - font resource writing 37 * Font descriptors 38 * gdevpdtd.h - interface and public definitions 39 * gdevpdtd.c - implementation of font descriptors 40 * Base fonts 41 * gdevpdtb.h - interface and public definitions 42 * gdevpdtb.c - implementation of base fonts 43 * 44 * There is also a module for bitmap font processing: 45 * gdevpdti.h - interface and public definitions 46 * gdevpdti.c - implementation of bitmap fonts 47 * This handles both text processing and font resource management for 48 * Type 3 bitmap fonts, which don't fit into the layer structure very well. 49 */ 50 51 /* ================ Types and structures ================ */ 52 53 /* 54 * Define the structure for managing the text and font state. This is 55 * made up of several individually opaque components. 56 */ 57 58 #ifndef pdf_bitmap_fonts_DEFINED 59 # define pdf_bitmap_fonts_DEFINED 60 typedef struct pdf_bitmap_fonts_s pdf_bitmap_fonts_t; 61 #endif 62 #ifndef pdf_outline_fonts_DEFINED 63 # define pdf_outline_fonts_DEFINED 64 typedef struct pdf_outline_fonts_s pdf_outline_fonts_t; 65 #endif 66 #ifndef pdf_text_state_DEFINED 67 # define pdf_text_state_DEFINED 68 typedef struct pdf_text_state_s pdf_text_state_t; 69 #endif 70 71 /*typedef struct pdf_text_data_s pdf_text_data_t;*/ /* gdevpdfx.h */ 72 struct pdf_text_data_s { 73 pdf_outline_fonts_t *outline_fonts; /* gdevpdtf.c */ 74 pdf_bitmap_fonts_t *bitmap_fonts; /* gdevpdti.c */ 75 pdf_text_state_t *text_state; /* gdevpdts.c */ 76 }; 77 #define private_st_pdf_text_data() /* gdevpdt.c */\ 78 gs_private_st_ptrs3(st_pdf_text_data, pdf_text_data_t, "pdf_text_data_t",\ 79 pdf_text_data_enum_ptrs, pdf_text_data_reloc_ptrs,\ 80 outline_fonts, bitmap_fonts, text_state) 81 82 /* ================ Procedures (internal utilities) ================ */ 83 84 /* The typedef will eventually move to gdevpdfx.h. */ 85 typedef struct pdf_font_resource_s pdf_font_resource_t; 86 87 /* ---------------- Font accessing ---------------- */ 88 89 /* Get the object ID of a font resource. */ 90 long pdf_font_id(const pdf_font_resource_t *pdfont); 91 /* Register charproc fonts with the page or substream. */ 92 int pdf_used_charproc_resources(gx_device_pdf *pdev, pdf_font_resource_t *pdfont); 93 94 #endif /* gdevpdtx_INCLUDED */ 95