summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfm-x/pdffont.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/dvipdfm-x/pdffont.h')
-rw-r--r--Build/source/texk/dvipdfm-x/pdffont.h134
1 files changed, 100 insertions, 34 deletions
diff --git a/Build/source/texk/dvipdfm-x/pdffont.h b/Build/source/texk/dvipdfm-x/pdffont.h
index 65ba9d6fda0..7d20f39eb1e 100644
--- a/Build/source/texk/dvipdfm-x/pdffont.h
+++ b/Build/source/texk/dvipdfm-x/pdffont.h
@@ -33,66 +33,132 @@
#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_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 */
+ 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);
-/* font_name is used when mrec is NULL.
+/* 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 *font_name,
- double font_scale, fontmap_rec *mrec);
+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, fontmap_rec *mrec);
-extern int pdf_get_font_subtype (int font_id);
-extern pdf_obj *pdf_get_font_reference (int font_id);
-extern char *pdf_get_font_usedchars (int font_id);
+extern pdf_font *pdf_get_font_data (int font_id);
-#if 0
-extern char *pdf_get_font_fontname (int font_id); /* without unique tag */
-#endif /* 0 */
-extern int pdf_get_font_encoding (int font_id);
-extern int pdf_get_font_wmode (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);
-/* Each font drivers use the followings. */
-extern int pdf_font_is_in_use (pdf_font *font);
+extern int pdf_get_font_encoding (int font_id);
+extern int pdf_get_font_wmode (int font_id);
-extern char *pdf_font_get_ident (pdf_font *font);
-extern char *pdf_font_get_mapname (pdf_font *font);
-extern char *pdf_font_get_fontname (pdf_font *font); /* without unique tag */
-extern char *pdf_font_get_uniqueTag (pdf_font *font);
+extern int pdf_font_resource_name (int font_id, char *buf);
-extern pdf_obj *pdf_font_get_resource (pdf_font *font);
-extern pdf_obj *pdf_font_get_descriptor (pdf_font *font);
-extern char *pdf_font_get_usedchars (pdf_font *font);
-extern int pdf_font_get_encoding (pdf_font *font);
+extern char *pdf_font_get_uniqueTag (pdf_font *font);
-extern int pdf_font_get_flag (pdf_font *font, int mask);
-#if 0
-extern int pdf_font_get_flags (pdf_font *font);
-#endif /* 0 */
-extern double pdf_font_get_param (pdf_font *font, int type);
+extern pdf_obj *pdf_font_get_resource (pdf_font *font);
+extern pdf_obj *pdf_font_get_descriptor (pdf_font *font);
-extern uint32_t pdf_font_get_index (pdf_font *font);
+extern void pdf_font_make_uniqueTag (char *tag);
-extern int pdf_font_set_fontname (pdf_font *font, const char *fontname);
-extern int pdf_font_set_flags (pdf_font *font, int flags);
-extern int pdf_font_set_subtype (pdf_font *font, int subtype);
+#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 void pdf_font_make_uniqueTag (char *tag);
+extern int pdf_check_tfm_widths (const char *ident, double *widths, int firstchar, int lastchar, const char *usedchars);
#endif /* _PDFFONT_H_ */