summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/mpdir/mplib.h
blob: bc015275e06aed139de1e1a3eca249d6c3d4e02c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
/*
Copyright (c) 2006 Taco Hoekwater <taco@elvenkind.com>

This file is part of pdfTeX.

pdfTeX is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

pdfTeX is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with pdfTeX; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

$Id$
*/

#ifndef MPOSTLIB
#  define MPOSTLIB

/* WEB2C macros and prototypes */
#  if !defined(MPCOERCE)
#    define EXTERN extern
#    include "mpd.h"
#  endif

/* pdftexlib macros */
#  include "mpmac.h"

#  include "avlstuff.h"


/* pdftexlib type declarations */
typedef struct {
    const char *pdfname;
    const char *t1name;
    float value;
    boolean valid;
} key_entry;

typedef struct {
    boolean loaded;             /* the encoding has been loaded? */
    char *name;                 /* encoding file name */
    char *encname;              /* encoding true name */
    integer objnum;             /* object number */
    char **glyph_names;
    integer tounicode;          /* object number of associated ToUnicode entry */
} enc_entry;

typedef struct {
    char *tfm_name;             /* TFM file name */
    char *ps_name;              /* PostScript name */
    integer flags;              /* font flags */
    char *ff_name;              /* font file name */
    char *subset_tag;           /* pseudoUniqueTag for subsetted font */
    enc_entry *encoding;        /* pointer to corresponding encoding */
    fontnumber tfm_num; /* number of the TFM refering this entry */
    unsigned short type;        /* font type (T1/TTF/...) */
    short slant;                /* SlantFont */
    short extend;               /* ExtendFont */
    integer ff_objnum;          /* FontFile object number */
    integer fn_objnum;          /* FontName/BaseName object number */
    integer fd_objnum;          /* FontDescriptor object number */
    char *charset;              /* string containing used glyphs */
    boolean all_glyphs;         /* embed all glyphs? */
    unsigned short links;       /* link flags from tfm_tree and ps_tree */
    short tfm_avail;            /* flags whether a tfm is available */
    short pid;                  /* Pid for truetype fonts */
    short eid;                  /* Eid for truetype fonts */
    void *subfont;              /* subfont mapping, not used */
} fm_entry;

typedef struct {
    char *ff_name;              /* base name of font file */
    char *ff_path;              /* full path to font file */
} ff_entry;

/* variable declarations */

extern boolean fontfile_found;
extern char **t1_glyph_names, *t1_builtin_glyph_names[];
extern char *cur_file_name;
extern const char notdef[];
extern integer t1_length1, t1_length2, t1_length3;
extern key_entry font_keys[];
extern strnumber last_tex_string;
extern size_t last_ptr_index;
extern char fontname_buf[];

/* function prototypes */

/* mapfile.c */
extern int avl_do_entry (fm_entry *, int);
extern ff_entry *check_ff_exist (fm_entry *);
extern void delete_fm_entry (fm_entry *);
extern void fm_free (void);
extern void fm_read_info (void);
extern boolean hasfmentry (fontnumber);
extern fm_entry *lookup_fontmap (char *);
extern void mpmapfile (integer);
extern void mpmapline (integer);
extern void mpinitmapfile (int);
extern fm_entry *new_fm_entry (void);
extern fontnumber tfmoffm (fmentryptr);

/* utils.c */
extern char *convertStringToPDFString (const char *in, int len);
extern void escapehex (poolpointer in);
extern void escapename (poolpointer in);
extern void escapestring (poolpointer in);
extern scaled extxnoverd (scaled, scaled, scaled);
extern void initversionstring (char **versions);
extern void make_subset_tag (fm_entry *, char **, int);
extern char *makecfilename (strnumber s);
extern char *makecstring (integer);
extern strnumber maketexstring (const char *);
extern void mp_printf (const char *, ...);
extern void pdf_printf (const char *, ...);
extern void pdf_puts (const char *);
extern void pdftex_fail (const char *, ...);
extern void pdftex_warn (const char *, ...);
extern void setjobid (int, int, int, int);
extern void stripspaces (char *p);
extern char *stripzeros (char *a);
extern void unescapehex (poolpointer in);
extern int xfflush (FILE *);
extern size_t xfwrite (void *, size_t size, size_t nmemb, FILE *);
extern int xgetc (FILE *);
extern int xputc (int, FILE *);

/* writeenc.c */
extern enc_entry *add_enc (char *);
extern void enc_free (void);
extern void read_enc (enc_entry *);
extern void write_enc (char **, enc_entry *, integer);

/* writefont.c */
extern boolean dopsfont (fontnumber);
extern strnumber fmencodingname (fontnumber);
extern integer fmfontextend (fontnumber);
extern strnumber fmfontname (fontnumber);
extern integer fmfontslant (fontnumber);
extern strnumber fmfontsubsetname (fontnumber);
extern boolean fontisincluded (fontnumber);
extern boolean fontissubsetted (fontnumber);
extern boolean fontisreencoded (fontnumber);
extern void mpfontencodings (int, int);
extern void mploadencodings (int);

/* writet1.c */
extern void load_enc (char *, char **, char **);
extern void t1_free (void);
extern boolean t1_subset (char *, char *, unsigned char *);
extern int t1_updatefm (int, fm_entry *);
extern void writet1 (int, fm_entry *);

#define bitfile psfile

/* avlstuff.c */
extern void avlputobj (integer, integer);
extern integer avlfindobj (integer, integer, integer);

/* turningnumber.c */

extern angle bezierslope(integer,integer,integer,integer,integer,integer,integer,integer,int);

/* loadpool.c */

extern int loadpoolstrings (integer);

#endif                          /* MPOSTLIB */