8
typedef enum { EMB_INPUT_T1, // type1-lib, with AFM/PFM,PFA/PFB
9
EMB_INPUT_TTF, // sfnt-lib, for TTF(glyf)
10
EMB_INPUT_OTF, // sfnt-lib + cff-lib, for OTF
11
EMB_INPUT_CFF, // cff-lib, for raw CFF
12
EMB_INPUT_STDFONT // don't embed (already present)
14
typedef enum { EMB_OUTPUT_T1, // original type1
15
EMB_OUTPUT_TTF, // ttf(glyf)
16
EMB_OUTPUT_CFF, // raw cff
17
EMB_OUTPUT_SFNT // OpenType (cff or glyf)
19
typedef enum { EMB_DEST_NATIVE, // just subsetting/conversion
21
EMB_DEST_PDF16 // TODO? PDF13
24
typedef enum { EMB_RIGHT_FULL=0, EMB_RIGHT_NONE=0x02,
25
EMB_RIGHT_READONLY=0x04,
26
EMB_RIGHT_NO_SUBSET=0x0100,
27
EMB_RIGHT_BITMAPONLY=0x0200 } EMB_RIGHT_TYPE;
29
typedef enum { EMB_A_MULTIBYTE=0x01, // embedd as multibyte font?
30
EMB_A_SUBSET=0x02, // do subsetting?
31
EMB_A_CONVERT_CFF=0x04, // convert Type1 to CFF?
32
EMB_A_WRAP_SFNT=0x08, // wrap in sfnt? (OTF)
34
EMB_A_CLOSE_FONTFILE=0x8000
37
typedef struct _EMB_PARAMS {
38
EMB_INPUT_FORMAT intype;
39
EMB_OUTPUT_FORMAT outtype;
46
EMB_RIGHT_TYPE rights;
52
typedef enum { EMB_C_MUST_SUBSET=0x01, // (fail, when not possible)
53
EMB_C_EDITABLE_SUBSET=0x02, // (...)
54
EMB_C_NEVER_SUBSET=0x04, // (...)
56
EMB_C_FORCE_MULTIBYTE=0x08, // always use multibyte fonts
58
EMB_C_PDF_OT=0x10, // output CFF and even TTF as OpenType (for PDF)
59
EMB_C_KEEP_T1=0x20, // don't convert T1 to CFF
61
EMB_C_TAKE_FONTFILE=0x8000 // take ownership of fontfile
64
EMB_PARAMS *emb_new(FONTFILE *font,EMB_DESTINATION dest,EMB_CONSTRAINTS mode);
65
int emb_embed(EMB_PARAMS *emb,OUTPUT_FN output,void *context); // returns number of bytes written
66
void emb_close(EMB_PARAMS *emb);
68
/*** PDF out stuff ***/
69
// all the necessary information for pdf font embedding
74
// for the following: 0=not set/invalid
75
int bbxmin,bbymin,bbxmax,bbymax;
76
int italicAngle; // >=90: not set/invalid
81
// optional, default=0:
86
char *panose; // 12 bytes
87
char *registry,*ordering;
90
char data[]; // used for storing e.g. >fontname
100
int *warray; // format: len c w ... w if (len<0) { c1 (c2=c1+(-len)) w } else { c w[len] }, terminated by len==0
103
} EMB_PDF_FONTWIDTHS;
105
const char *emb_pdf_get_font_subtype(EMB_PARAMS *emb);
106
const char *emb_pdf_get_fontfile_key(EMB_PARAMS *emb);
107
const char *emb_pdf_get_fontfile_subtype(EMB_PARAMS *emb);
109
EMB_PDF_FONTDESCR *emb_pdf_fontdescr(EMB_PARAMS *emb);
110
EMB_PDF_FONTWIDTHS *emb_pdf_fontwidths(EMB_PARAMS *emb);
112
char *emb_pdf_simple_fontdescr(EMB_PARAMS *emb,EMB_PDF_FONTDESCR *fdes,int fontfile_obj_ref);
113
char *emb_pdf_simple_font(EMB_PARAMS *emb,EMB_PDF_FONTDESCR *fdes,EMB_PDF_FONTWIDTHS *fwid,int fontdescr_obj_ref);
114
char *emb_pdf_simple_cidfont(EMB_PARAMS *emb,const char *fontname,int descendant_obj_ref);
115
char *emb_pdf_simple_stdfont(EMB_PARAMS *emb);