diff options
author | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
commit | ad547a6b5986815fda458221149728d9d9ab1d87 (patch) | |
tree | 16296910eb3eca724371474ea9aea3994dc69614 /Build/source/texk/dvipdfm-x/cff.h | |
parent | 947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (diff) |
restore Build,TODO from r57911
git-svn-id: svn://tug.org/texlive/trunk@57915 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipdfm-x/cff.h')
-rw-r--r-- | Build/source/texk/dvipdfm-x/cff.h | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/Build/source/texk/dvipdfm-x/cff.h b/Build/source/texk/dvipdfm-x/cff.h new file mode 100644 index 00000000000..4174186206e --- /dev/null +++ b/Build/source/texk/dvipdfm-x/cff.h @@ -0,0 +1,150 @@ +/* This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks. + + Copyright (C) 2002-2020 by Jin-Hwan Cho and Shunsaku Hirata, + the dvipdfmx project team. + + This program 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. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. +*/ + +#ifndef _CFF_H_ +#define _CFF_H_ + +#include "mfileio.h" +#include "cff_types.h" + +/* Flag */ +#define FONTTYPE_CIDFONT (1 << 0) +#define FONTTYPE_FONT (1 << 1) +#define FONTTYPE_MMASTER (1 << 2) + +#define ENCODING_STANDARD (1 << 3) +#define ENCODING_EXPERT (1 << 4) + +#define CHARSETS_ISOADOBE (1 << 5) +#define CHARSETS_EXPERT (1 << 6) +#define CHARSETS_EXPSUB (1 << 7) + +#define HAVE_STANDARD_ENCODING (ENCODING_STANDARD|ENCODING_EXPERT) +#define HAVE_STANDARD_CHARSETS \ + (CHARSETS_ISOADOBE|CHARSETS_EXPERT|CHARSETS_EXPSUB) + +#define CFF_STRING_NOTDEF 65535 + +typedef struct +{ + char *fontname; /* FontName */ + + /* - CFF structure - */ + cff_header header; /* CFF Header */ + cff_index *name; /* Name INDEX */ + cff_dict *topdict; /* Top DICT (single) */ + cff_index *string; /* String INDEX */ + cff_index *gsubr; /* Global Subr INDEX */ + cff_encoding *encoding; /* Encodings */ + cff_charsets *charsets; /* Charsets */ + cff_fdselect *fdselect; /* FDSelect, CIDFont only */ + cff_index *cstrings; /* CharStrings */ + cff_dict **fdarray; /* CIDFont only */ + cff_dict **private; /* per-Font DICT */ + cff_index **subrs; /* Local Subr INDEX, per-Private DICT */ + + /* -- extra data -- */ + l_offset offset; /* non-zero for OpenType or PostScript wrapped */ + l_offset gsubr_offset; + card16 num_glyphs; /* number of glyphs (CharString INDEX count) */ + card8 num_fds; /* number of Font DICT */ + + /* Updated String INDEX. + * Please fix this. We should separate input and output. + */ + cff_index *_string; + + FILE *stream; + + int filter; /* not used, ASCII Hex filter if needed */ + + int index; /* CFF fontset index */ + int flag; /* Flag: see above */ + int is_notdef_notzero; /* 1 if .notdef is not the 1st glyph */ +} cff_font; + +extern cff_font *cff_open (FILE *file, int offset, int idx); +#define cff_seek_set(c, p) seek_absolute (((c)->stream), ((c)->offset) + (p)); +#define cff_read_data(d, l, c) fread(d, 1, l, (c)->stream) +#define cff_tell(c) ftell((c)->stream) +#define cff_seek(c, p) seek_absolute((c)->stream, p) + +extern void cff_close (cff_font *cff); + +/* CFF Header */ +extern int cff_put_header (cff_font *cff, card8 *dest, int destlen); + +/* CFF INDEX */ +extern cff_index *cff_get_index (cff_font *cff); +extern cff_index *cff_get_index_header (cff_font *cff); +extern void cff_release_index (cff_index *idx); +extern cff_index *cff_new_index (card16 count); +extern int cff_index_size (cff_index *idx); +extern int cff_pack_index (cff_index *idx, card8 *dest, int destlen); + +/* Name INDEX */ +extern char *cff_get_name (cff_font *cff); +extern int cff_set_name (cff_font *cff, char *name); + +/* Global and Local Subrs INDEX */ +extern int cff_read_subrs (cff_font *cff); + +/* Encoding */ +extern int cff_read_encoding (cff_font *cff); +extern int cff_pack_encoding (cff_font *cff, card8 *dest, int destlen); +extern card16 cff_encoding_lookup (cff_font *cff, card8 code); +extern void cff_release_encoding (cff_encoding *encoding); + +/* Charsets */ +extern int cff_read_charsets (cff_font *cff); +extern int cff_pack_charsets (cff_font *cff, card8 *dest, int destlen); + +/* Returns GID of PS name "glyph" */ +extern card16 cff_glyph_lookup (cff_font *cff, const char *glyph); +/* Return PS name of "gid" */ +extern char* cff_get_glyphname (cff_font *cff, card16 gid); +/* Returns GID of glyph with SID/CID "cid" */ +extern card16 cff_charsets_lookup (cff_font *cff, card16 cid); +extern card16 cff_charsets_lookup_gid (cff_charsets *charset, card16 cid); +extern void cff_release_charsets (cff_charsets *charset); +/* Returns SID or CID */ +extern card16 cff_charsets_lookup_inverse (cff_font *cff, card16 gid); +extern card16 cff_charsets_lookup_cid(cff_charsets *charset, card16 gid); + +/* FDSelect */ +extern int cff_read_fdselect (cff_font *cff); +extern int cff_pack_fdselect (cff_font *cff, card8 *dest, int destlen); +extern card8 cff_fdselect_lookup (cff_font *cff, card16 gid); +extern void cff_release_fdselect (cff_fdselect *fdselect); + +/* Font DICT(s) */ +extern int cff_read_fdarray (cff_font *cff); + +/* Private DICT(s) */ +extern int cff_read_private (cff_font *cff); + +/* String */ +extern char *cff_get_string (cff_font *cff, s_SID id); +extern int cff_get_sid (cff_font *cff, const char *str); +extern int cff_get_seac_sid (cff_font *cff, const char *str); +extern s_SID cff_add_string (cff_font *cff, const char *str, int unique); +extern void cff_update_string (cff_font *cff); + +#endif /* _CFF_H_ */ |