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 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300
|
/*
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(MPOSTCOERCE)
# 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;
struct _subfont_entry;
typedef struct _subfont_entry subfont_entry;
struct _subfont_entry {
char *infix; /* infix for this subfont, eg "01" */
long charcodes[256]; /* the mapping for this subfont as read from sfd */
subfont_entry *next;
};
typedef struct {
char *name; /* sfd name, eg "Unicode" */
subfont_entry *subfont; /* linked list of subfonts */
} sfd_entry;
typedef struct {
char *name; /* glyph name */
long code; /* -1 = undefined; -2 = multiple codes, stored
as string in unicode_seq; otherwise unicode value */
char *unicode_seq; /* multiple unicode sequence */
} glyph_unicode_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 */
subfont_entry *subfont; /* subfont mapping */
} fm_entry;
typedef struct {
char *ff_name; /* base name of font file */
char *ff_path; /* full path to font file */
} ff_entry;
typedef short shalfword;
typedef struct {
integer charcode, cwidth, cheight, xoff, yoff, xescape, rastersize;
halfword *raster;
} chardesc;
/* pdftexlib variable declarations */
extern boolean fontfile_found;
extern boolean is_otf_font;
extern boolean true_dimen;
extern boolean write_ttf_glyph_names;
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 integer ttf_length;
extern key_entry font_keys[];
extern strnumber last_tex_string;
extern size_t last_ptr_index;
extern char fontname_buf[];
/* pdftexlib function prototypes */
/* epdf.c */
extern integer get_fontfile_num (int);
extern integer get_fontname_num (int);
extern void epdf_free (void);
extern int is_type1 (fm_entry *);
/* mapfile.c */
extern char *mk_basename (char *);
extern char *mk_exname (char *, int);
extern fm_entry *lookup_fontmap (char *);
extern boolean hasfmentry (fontnumber);
extern fontnumber tfmoffm (fmentryptr);
extern void checkextfm (strnumber, integer);
extern void fm_free (void);
extern void fm_read_info (void);
extern ff_entry *check_ff_exist (fm_entry *);
extern void pdfmapfile (integer);
extern void pdfmapline (integer);
extern void pdfinitmapfile (string map_name);
extern fm_entry *new_fm_entry (void);
extern void delete_fm_entry (fm_entry *);
extern int avl_do_entry (fm_entry *, int);
/* papersiz.c */
extern integer myatodim (char **);
extern integer myatol (char **);
/* pkin.c */
extern int readchar (boolean, chardesc *);
/* subfont.c */
extern void sfd_free (void);
extern boolean handle_subfont_fm (fm_entry *, int);
/* tounicode.c */
extern void glyph_unicode_free (void);
extern void deftounicode (strnumber, strnumber);
extern integer write_tounicode (char **, char *);
/* utils.c */
extern boolean str_eq_cstr (strnumber, char *);
extern char *makecstring (integer);
extern int xfflush (FILE *);
extern int xgetc (FILE *);
extern int xputc (int, FILE *);
extern scaled extxnoverd (scaled, scaled, scaled);
extern size_t xfwrite (void *, size_t size, size_t nmemb, FILE *);
extern strnumber getresnameprefix (void);
extern strnumber maketexstring (const char *);
extern integer fb_offset (void);
extern void fb_flush (void);
extern void fb_putchar (eightbits b);
extern void fb_seek (integer);
extern void libpdffinish (void);
extern char *makecfilename (strnumber s);
extern void make_subset_tag (fm_entry *, char **, int);
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 mp_printf (const char *, ...);
extern void writestreamlength (integer, integer);
extern char *convertStringToPDFString (const char *in, int len);
extern void printID (strnumber);
extern void printcreationdate ();
extern void printmoddate ();
extern void escapename (poolpointer in);
extern void escapestring (poolpointer in);
extern void escapehex (poolpointer in);
extern void unescapehex (poolpointer in);
extern void getcreationdate ();
extern void getfilemoddate (strnumber s);
extern void getfilesize (strnumber s);
extern void getmd5sum (strnumber s, boolean file);
extern void getfiledump (strnumber s, int offset, int length);
extern void matchstrings (strnumber s, strnumber t, int subcount,
boolean icase);
extern void getmatch (int i);
extern void makepdftexbanner (void);
extern void initstarttime ();
extern void removepdffile (void);
extern void garbagewarning (void);
extern void stripspaces (char *p);
extern void initversionstring (char **versions);
extern int newcolorstack (integer s, integer literal_mode, boolean pagestart);
extern int colorstackused ();
extern integer colorstackset (int colstack_no, integer s);
extern integer colorstackpush (int colstack_no, integer s);
extern integer colorstackpop (int colstack_no);
extern integer colorstackcurrent (int colstack_no);
extern integer colorstackskippagestart (int colstack_no);
extern void checkpdfsave (int cur_h, int cur_v);
extern void checkpdfrestore (int cur_h, int cur_v);
extern void pdfshipoutbegin (boolean shipping_page);
extern void pdfshipoutend (boolean shipping_page);
extern void pdfsetmatrix (poolpointer in, scaled cur_h, scaled cur_v);
extern void matrixtransformpoint (scaled x, scaled y);
extern void matrixtransformrect (scaled llx, scaled lly, scaled urx,
scaled ury);
extern boolean matrixused ();
extern void matrixrecalculate (scaled urx);
extern scaled getllx ();
extern scaled getlly ();
extern scaled geturx ();
extern scaled getury ();
/* vfpacket.c */
extern eightbits packetbyte (void);
extern integer newvfpacket (fontnumber);
extern void poppacketstate (void);
extern void pushpacketstate (void);
extern void startpacket (fontnumber, integer);
extern void storepacket (integer, integer, integer);
extern void vf_free (void);
/* writeenc.c */
extern boolean indexed_enc (fm_entry *);
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);
/* writeimg.c */
extern boolean checkimageb (integer);
extern boolean checkimagec (integer);
extern boolean checkimagei (integer);
extern boolean ispdfimage (integer);
extern integer epdforigx (integer);
extern integer epdforigy (integer);
extern integer imageheight (integer);
extern integer imagepages (integer);
extern integer imagewidth (integer);
extern integer imagexres (integer);
extern integer imageyres (integer);
extern integer readimage (strnumber, integer, strnumber, integer, integer,
integer, integer);
extern void deleteimage (integer);
extern void img_free (void);
extern void updateimageprocset (integer);
extern void writeimage (integer);
extern integer imagecolordepth (integer img);
/* writejbig2.c */
extern void flushjbig2page0objects ();
/* writet1.c */
extern boolean t1_subset (char *, char *, unsigned char *);
extern void load_enc (char *, char **, char **);
extern void writet1 (int, fm_entry *);
extern void t1_free (void);
#define bitfile psfile
/* writet3.c */
extern void writet3 (int, fontnumber);
extern scaled getpkcharwidth (fontnumber, scaled);
/* writettf.c */
extern void writettf (void);
extern void writeotf (void);
extern void ttf_free (void);
/* writezip.c */
extern void writezip (boolean);
/* avlstuff.c */
extern void avlputobj (integer, integer);
extern integer avlfindobj (integer, integer, integer);
#endif /* MPOSTLIB */
|