summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfm-x/pdffont.h
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-02-25 19:22:25 +0000
committerKarl Berry <karl@freefriends.org>2021-02-25 19:22:25 +0000
commitad547a6b5986815fda458221149728d9d9ab1d87 (patch)
tree16296910eb3eca724371474ea9aea3994dc69614 /Build/source/texk/dvipdfm-x/pdffont.h
parent947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (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/pdffont.h')
-rw-r--r--Build/source/texk/dvipdfm-x/pdffont.h165
1 files changed, 165 insertions, 0 deletions
diff --git a/Build/source/texk/dvipdfm-x/pdffont.h b/Build/source/texk/dvipdfm-x/pdffont.h
new file mode 100644
index 00000000000..7794b860111
--- /dev/null
+++ b/Build/source/texk/dvipdfm-x/pdffont.h
@@ -0,0 +1,165 @@
+/* This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks.
+
+ Copyright (C) 2002-2021 by Jin-Hwan Cho and Shunsaku Hirata,
+ the dvipdfmx project team.
+
+ Copyright (C) 1998, 1999 by Mark A. Wicks <mwicks@kettering.edu>
+
+ 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 _PDFFONT_H_
+#define _PDFFONT_H_
+
+#include "pdfobj.h"
+#include "fontmap.h"
+#include "pdflimits.h"
+
+#define PDF_FONT_FONTTYPE_TYPE1 0
+#define PDF_FONT_FONTTYPE_TYPE1C 1
+#define PDF_FONT_FONTTYPE_TYPE3 2
+#define PDF_FONT_FONTTYPE_TRUETYPE 3
+
+#define PDF_FONT_FONTTYPE_TYPE0 4
+#define PDF_FONT_FONTTYPE_CIDTYPE0 5
+#define PDF_FONT_FONTTYPE_CIDTYPE2 6
+
+extern void pdf_font_set_dpi (int font_dpi);
+
+#define PDF_FONT_FLAG_NOEMBED (1 << 0)
+#define PDF_FONT_FLAG_COMPOSITE (1 << 1)
+#define PDF_FONT_FLAG_BASEFONT (1 << 2)
+#define PDF_FONT_FLAG_USEDCHAR_SHARED (1 << 3)
+#define PDF_FONT_FLAG_IS_ALIAS (1 << 4)
+#define PDF_FONT_FLAG_IS_REENCODE (1 << 5)
+#define PDF_FONT_FLAG_ACCFONT (1 << 6)
+#define PDF_FONT_FLAG_UCSFONT (1 << 7)
+
+/* FIXME */
+/* Converted from Type 1 */
+#define CIDFONT_FLAG_TYPE1 (1 << 8)
+#define CIDFONT_FLAG_TYPE1C (1 << 9)
+#define CIDFONT_FLAG_TRUETYPE (1 << 10)
+
+#define PDF_FONT_PARAM_DESIGN_SIZE 1
+#define PDF_FONT_PARAM_POINT_SIZE 2
+
+#include "fontmap.h"
+#define FONT_STYLE_NONE FONTMAP_STYLE_NONE
+#define FONT_STYLE_BOLD FONTMAP_STYLE_BOLD
+#define FONT_STYLE_ITALIC FONTMAP_STYLE_ITALIC
+#define FONT_STYLE_BOLDITALIC FONTMAP_STYLE_BOLDITALIC
+
+typedef struct {
+ char *registry;
+ char *ordering;
+ int supplement;
+} CIDSysInfo;
+
+typedef struct
+{
+ CIDSysInfo csi;
+ int style;
+ int embed;
+ int stemv;
+} cid_opt;
+
+struct pdf_font
+{
+ char *ident; /* map name */
+ int font_id; /* ID of this font */
+ int subtype;
+
+ char *filename;
+
+ int encoding_id; /* encoding or CMap */
+
+ uint32_t index;
+ char *fontname;
+ char uniqueID[7];
+
+ /*
+ * PDF font resource objects
+ */
+ pdf_obj *reference;
+ pdf_obj *resource;
+ pdf_obj *descriptor;
+
+ /*
+ * Font format specific data
+ */
+ char *usedchars;
+ int flags;
+
+ /* PK font */
+ double point_size;
+ double design_size;
+
+ /* Type0 font */
+ struct {
+ int descendant; /* Only single descendant is allowed. */
+ int wmode;
+ } type0;
+
+ /* CIDFont */
+ struct {
+ CIDSysInfo csi; /* Character collection */
+ cid_opt options; /* Options from map record */
+ int need_vmetrics;
+ char *usedchars_v;
+ } cid;
+};
+
+typedef struct pdf_font pdf_font;
+
+/* pdf_open_document() call them. */
+extern void pdf_init_fonts (void);
+extern void pdf_close_fonts (void);
+
+/* tex_name is used when mrec is NULL.
+ * font_scale (point size) used by PK font.
+ * It might be necessary if dvipdfmx supports font format with
+ * various optical sizes supported in the future.
+ */
+extern int pdf_font_findresource (const char *tex_name, double font_scale);
+extern int pdf_font_load_font (const char *tex_name, double font_scale, const fontmap_rec *mrec);
+
+extern pdf_font *pdf_get_font_data (int font_id);
+
+extern char *pdf_get_font_ident (int font_id);
+extern int pdf_get_font_subtype (int font_id);
+extern pdf_obj *pdf_get_font_reference (int font_id);
+extern pdf_obj *pdf_get_font_resource (int font_id);
+extern char *pdf_get_font_usedchars (int font_id);
+
+extern int pdf_get_font_encoding (int font_id);
+extern int pdf_get_font_wmode (int font_id);
+
+extern int pdf_font_resource_name (int font_id, char *buf);
+
+
+extern char *pdf_font_get_uniqueTag (pdf_font *font);
+
+extern pdf_obj *pdf_font_get_resource (pdf_font *font);
+extern pdf_obj *pdf_font_get_descriptor (pdf_font *font);
+
+extern void pdf_font_make_uniqueTag (char *tag);
+
+#define add_to_used_chars2(b,c) {(b)[(c)/8] |= (1 << (7-((c)%8)));}
+#define is_used_char2(b,c) (((b)[(c)/8]) & (1 << (7-((c)%8))))
+
+extern int pdf_check_tfm_widths (const char *ident, double *widths, int firstchar, int lastchar, const char *usedchars);
+
+#endif /* _PDFFONT_H_ */