summaryrefslogtreecommitdiff
path: root/src/pdflib/pdflib/p_font.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/pdflib/pdflib/p_font.h')
-rw-r--r--src/pdflib/pdflib/p_font.h225
1 files changed, 225 insertions, 0 deletions
diff --git a/src/pdflib/pdflib/p_font.h b/src/pdflib/pdflib/p_font.h
new file mode 100644
index 0000000..3dc4d91
--- /dev/null
+++ b/src/pdflib/pdflib/p_font.h
@@ -0,0 +1,225 @@
+/*---------------------------------------------------------------------------*
+ | PDFlib - A library for generating PDF on the fly |
+ +---------------------------------------------------------------------------+
+ | Copyright (c) 1997-2006 Thomas Merz and PDFlib GmbH. All rights reserved. |
+ +---------------------------------------------------------------------------+
+ | |
+ | This software is subject to the PDFlib license. It is NOT in the |
+ | public domain. Extended versions and commercial licenses are |
+ | available, please check http://www.pdflib.com. |
+ | |
+ *---------------------------------------------------------------------------*/
+
+/* $Id: p_font.h,v 1.1 2008/10/17 06:11:49 scuri Exp $
+ *
+ * Header file for the PDFlib font subsystem
+ *
+ */
+
+#ifndef P_FONT_H
+#define P_FONT_H
+
+#define PDF_DEFAULT_CHAR PDC_UNICODE_SPACE
+
+/* internal maximal length of fontnames */
+#define PDF_MAX_FONTNAME 128
+
+/* last text rendering mode number */
+#define PDF_LAST_TRMODE 7
+
+/* minimal number of glyphs for appropriate encoding */
+#define PDF_MIN_GLYPHS 5
+
+typedef enum
+{
+ font_ascender = (1<<0),
+ font_descender = (1<<1),
+ font_capheight = (1<<2),
+ font_xheight = (1<<3),
+ font_linegap = (1<<4),
+
+ font_italic = (1<<8),
+ font_bold = (1<<9)
+}
+pdf_font_values;
+
+typedef struct pdf_t3glyph_s pdf_t3glyph;
+
+/* font options */
+struct pdf_font_options_s
+{
+ pdc_bool embedding;
+ char *encoding;
+ int flags;
+ char *fontname;
+ fnt_fontstyle fontstyle;
+ pdc_bool fontwarning;
+ int mask;
+ int monospace;
+ int ascender;
+ int descender;
+ int capheight;
+ int xheight;
+ int linegap;
+ pdc_bool auxiliary;
+};
+
+/* Type3 font structures */
+struct pdf_t3glyph_s
+{
+ char *name;
+ pdc_id charproc_id;
+ pdc_scalar wx;
+ pdc_scalar llx;
+ pdc_scalar lly;
+ pdc_scalar urx;
+ pdc_scalar ury;
+ pdc_scalar width;
+ int pass; /* 0, 1, 2 */
+};
+
+struct pdf_t3font_s
+{
+ pdf_t3glyph *glyphs; /* dynamically growing glyph table */
+ int capacity; /* current number of slots */
+ int next_glyph; /* next available slot */
+ int curr_glyph; /* slot of current glyph */
+
+ pdc_id charprocs_id; /* id of /CharProcs dict */
+ pdc_id res_id; /* id of /Resources dict */
+ pdc_bool colorized; /* glyphs colorized */
+ int pass; /* 0, 1, 2 */
+
+};
+
+/* pdflib font structure */
+struct pdf_font_s
+{
+ /* pdcore font structure */
+ fnt_font ft;
+
+ /* font options */
+ pdf_font_options opt; /* pdflib font options */
+ pdc_bool verbose; /* put out warning/error messages */
+
+ /* special font names */
+ char *apiname; /* font name specified in API call */
+ const char *filename; /* name of font file, copy of ft.filename */
+ char *metricfilename; /* name of metric font file */
+
+ /* font control */
+ pdc_bool used_in_formfield; /* this font is in use in form field */
+ pdc_bool used_in_current_doc; /* this font is in use in current doc. */
+ pdc_bool used_on_current_page; /* this font is in use on current page */
+ pdc_id obj_id; /* object id of this font */
+
+ /* CFF table */
+ long cff_offset; /* start of CFF table in font */
+ size_t cff_length; /* length of CFF table in font */
+
+ /* Type3 font */
+ pdf_t3font *t3font; /* Type3 font data */
+ pdc_bool hasoriginal; /* has the original Type3 font data */
+
+ /* pdflib encoding and CMap properties */
+ char *encapiname; /* encoding name specified in API call */
+ char *outcmapname; /* output CMap namel */
+ int codepage; /* OEM multi byte code-page number */
+ pdc_encoding towinansi; /* convert to 'towinansi' enc. for output */
+ pdc_bool hasnomac; /* TT font has no macroman cmap */
+ pdc_bool passthrough; /* text will be passed through as is */
+ pdc_bool unibyte; /* take Unicode encoding as byte encoding */
+ pdc_bool asciispace; /* encoding has space at x20 */
+ pdc_bool issemantic; /* encoding is Unicode interpretable */
+ pdc_bool widthsmissing; /* GID widths not available */
+ pdc_ulong missingglyphs; /* bit mask for missing new AGL glyphs */
+ int metricflags; /* flags for faked font values */
+ int supplement; /* supplement number of CMap
+ * = -1: Identity-H/V */
+ pdc_encoding symenc; /* font encoding for symbol fonts */
+ int replacementchar; /* replacement character */
+ int replacementcode; /* replacement code or glyph id resp. */
+
+ /* encoding and glyph control */
+ int codesize; /* code size */
+ /* = 0: unknown, no Unicode CMap */
+ /* = 1: 1 byte encoding */
+ /* = 2: 2 byte encoding */
+ int lastcode; /* AFM: last byte code for generating runtime */
+ /* byte encoding. = -1: ignore */
+ int gid0code; /* code für gid 0 (because of Type3 fonts) */
+ pdc_byte *usedgids; /* used Glyph IDs for font subsetting */
+ pdc_bool expectglyphs; /* TT: glyph id text strings are expected */
+ pdc_bool iscidfont; /* is CID font */
+
+};
+
+/* p_truetype.c */
+pdc_bool pdf_get_metrics_tt(PDF *p, pdf_font *font,
+ const char *fontname, pdc_encoding enc,
+ const char *filename);
+int pdf_check_tt_hostfont(PDF *p, const char *hostname);
+
+/* p_afm.c */
+pdc_bool pdf_process_metrics_data(PDF *p, pdf_font *font,
+ const char *fontname);
+pdc_bool pdf_get_metrics_afm(PDF *p, pdf_font *font,
+ const char *fontname, pdc_encoding enc,
+ const char *filename, pdc_bool requested);
+
+/* p_pfm.c */
+pdc_bool pdf_check_pfm_encoding(PDF *p, pdf_font *font,
+ pdc_encoding enc);
+pdc_bool pdf_get_metrics_pfm(PDF *p, pdf_font *font,
+ const char *fontname, pdc_encoding enc,
+ const char *filename, pdc_bool requested);
+
+/* p_cid.c */
+pdc_bool pdf_handle_cidfont(PDF *p, const char *fontname,
+ const char *encoding, pdc_encoding enc, pdf_font *font, int *o_slot,
+ pdc_encoding *newenc);
+void pdf_put_cidglyph_widths(PDF *p, pdf_font *font);
+
+/* p_font.c */
+void pdf_get_page_fonts(PDF *p, pdf_reslist *rl);
+void pdf_parse_font_options(PDF *p, const char *optlist);
+double pdf_get_font_float_option(PDF *p, pdf_font_optflags fflags);
+pdc_bool pdf_check_font_embedding(PDF *p, pdf_font *font, const char *fontname);
+pdc_bool pdf_make_fontflag(PDF *p, pdf_font *font);
+int pdf_get_code_or_glyphid(PDF *p, pdf_font *font, pdc_encodingvector *ev,
+ pdc_ushort uv);
+void pdf_set_replchar(PDF *p, pdf_font *font);
+void pdf_font_issemantic(PDF *p, pdf_font *font);
+void pdf_font_set_missvalues(PDF *p, pdf_font *font);
+pdc_bool pdf_font_get_is_faked(pdf_font *font, pdf_font_values flag);
+double pdf_font_get_metric_value(int value);
+const char *pdf_get_encoding_name(PDF *p, pdc_encoding enc, pdf_font *font);
+const char *pdf_get_font_char_option(PDF *p, pdf_font_optflags fflags);
+const char *pdf_get_pdf_fontname(pdf_font *font);
+char *pdf_get_encoding_adaptname(PDF *p, pdc_encoding enc, pdf_font *font,
+ const char *fontname);
+pdc_encodingvector *pdf_create_font_encoding(PDF *p, pdc_encoding enc,
+ pdf_font *font, const char *fontname, pdc_bool kreg);
+void pdf_transform_fontwidths(PDF *p, pdf_font *font,
+ pdc_encodingvector *evto, pdc_encodingvector *evfrom);
+
+/* p_type1.c */
+pdc_bool pdf_t1open_fontfile(PDF *p, pdf_font *font, const char *fontname,
+ PDF_data_source *t1src, pdc_bool requested);
+pdc_bool pdf_make_t1src(PDF *p, pdf_font *font, PDF_data_source *t1src);
+void pdf_put_length_objs(PDF *p, PDF_data_source *t1src,
+ pdc_id length1_id, pdc_id length2_id, pdc_id length3_id);
+
+/* p_type3.c */
+void pdf_cleanup_t3font(PDF *p, pdf_t3font *t3font);
+void pdf_init_type3(PDF *p);
+pdc_bool pdf_handle_t3font(PDF *p, const char *fontname, pdc_encoding enc,
+ pdf_font *font, int *slot);
+pdc_bool pdf_isvalid_font(PDF *p, int slot);
+
+/* p_subsett.c */
+int pdf_prepare_ttfont(PDF *p, pdf_font *font);
+
+
+#endif /* P_FONT_H */
+