1
/* Copyright (C) 2001-2006 Artifex Software, Inc.
4
This software is provided AS-IS with no warranty, either express or
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.
14
/* $Id: gdevpdtx.h 8022 2007-06-05 22:23:38Z giles $ */
15
/* Shared implementation definitions for pdfwrite text and fonts */
17
#ifndef gdevpdtx_INCLUDED
18
# define gdevpdtx_INCLUDED
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:
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
34
* gdevpdtf.h - interface and public definitions
35
* gdevpdtf.c - implementation of font resources, except for writing
36
* gdevpdtw.[hc] - font resource writing
38
* gdevpdtd.h - interface and public definitions
39
* gdevpdtd.c - implementation of font descriptors
41
* gdevpdtb.h - interface and public definitions
42
* gdevpdtb.c - implementation of base fonts
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.
51
/* ================ Types and structures ================ */
54
* Define the structure for managing the text and font state. This is
55
* made up of several individually opaque components.
58
#ifndef pdf_bitmap_fonts_DEFINED
59
# define pdf_bitmap_fonts_DEFINED
60
typedef struct pdf_bitmap_fonts_s pdf_bitmap_fonts_t;
62
#ifndef pdf_outline_fonts_DEFINED
63
# define pdf_outline_fonts_DEFINED
64
typedef struct pdf_outline_fonts_s pdf_outline_fonts_t;
66
#ifndef pdf_text_state_DEFINED
67
# define pdf_text_state_DEFINED
68
typedef struct pdf_text_state_s pdf_text_state_t;
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 */
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)
82
/* ================ Procedures (internal utilities) ================ */
84
/* The typedef will eventually move to gdevpdfx.h. */
85
typedef struct pdf_font_resource_s pdf_font_resource_t;
87
/* ---------------- Font accessing ---------------- */
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);
94
#endif /* gdevpdtx_INCLUDED */