Files correlati : pdflib Ricompilazione Demo : [ ] Commento : Aggiornata pdflib.dll alla versione 7.0.4 git-svn-id: svn://10.65.10.50/trunk@18580 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			274 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			274 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /*---------------------------------------------------------------------------*
 | |
|  |              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: ft_font.h,v 1.3 2009-03-23 08:51:17 guy Exp $
 | |
|  *
 | |
|  * Header file for font handling
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #ifndef FT_FONT_H
 | |
| #define FT_FONT_H
 | |
| 
 | |
| #include "pc_util.h"
 | |
| #include "pc_geom.h"
 | |
| #include "pc_file.h"
 | |
| #include "ft_cid.h"
 | |
| 
 | |
| #define FNT_DEFAULT_WIDTH         250   /* some reasonable default */
 | |
| #define FNT_DEFAULT_CIDWIDTH     1000   /* for CID fonts */
 | |
| #define FNT_MISSING_WIDTH -1234567890   /* missing width value */
 | |
| 
 | |
| #define FNT_DEFAULT_UNDERLINEWIDTH 50   /* default value of underlineThickness*/
 | |
| 
 | |
| #define FNT_MAX_METRICS        2048.0   /* maximal font metrics value */
 | |
| 
 | |
| /*
 | |
|  * these are the font weight values of Microsoft
 | |
|  * see LOGFONT structure member lfWeight
 | |
|  */
 | |
| #define FNT_FW_DONTCARE     0
 | |
| #define FNT_FW_THIN         100
 | |
| #define FNT_FW_EXTRALIGHT   200
 | |
| #define FNT_FW_ULTRALIGHT   200
 | |
| #define FNT_FW_LIGHT        300
 | |
| #define FNT_FW_NORMAL       400
 | |
| #define FNT_FW_REGULAR      400
 | |
| #define FNT_FW_MEDIUM       500
 | |
| #define FNT_FW_SEMIBOLD     600
 | |
| #define FNT_FW_DEMIBOLD     600
 | |
| #define FNT_FW_BOLD         700
 | |
| #define FNT_FW_EXTRABOLD    800
 | |
| #define FNT_FW_ULTRABOLD    800
 | |
| #define FNT_FW_HEAVY        900
 | |
| #define FNT_FW_BLACK        900
 | |
| 
 | |
| /*
 | |
|  * these defaults are used when the stem value
 | |
|  * must be derived from the name (unused)
 | |
|  */
 | |
| #define FNT_STEMV_MIN        50     /* minimum StemV value */
 | |
| #define FNT_STEMV_LIGHT      71     /* light StemV value */
 | |
| #define FNT_STEMV_NORMAL    109     /* normal StemV value */
 | |
| #define FNT_STEMV_MEDIUM    125     /* mediumbold StemV value */
 | |
| #define FNT_STEMV_SEMIBOLD  135     /* semibold StemV value */
 | |
| #define FNT_STEMV_BOLD      165     /* bold StemV value */
 | |
| #define FNT_STEMV_EXTRABOLD 201     /* extrabold StemV value */
 | |
| #define FNT_STEMV_BLACK     241     /* black StemV value */
 | |
| 
 | |
| /*
 | |
|  * Bit positions for the font descriptor flag
 | |
|  */
 | |
| #define FNT_FIXEDWIDTH      (long) (1L<<0)
 | |
| #define FNT_SERIF           (long) (1L<<1)
 | |
| #define FNT_SYMBOL          (long) (1L<<2)
 | |
| #define FNT_SCRIPT          (long) (1L<<3)
 | |
| #define FNT_ADOBESTANDARD   (long) (1L<<5)
 | |
| #define FNT_ITALIC          (long) (1L<<6)
 | |
| #define FNT_SMALLCAPS       (long) (1L<<17)
 | |
| #define FNT_FORCEBOLD       (long) (1L<<18)
 | |
| 
 | |
| #define FNT_FI_ITALIC        255
 | |
| #define FNT_FI_ITALICNAME    "Italic"
 | |
| #define FNT_DEF_ITALICANGLE  -12           /* default italic angle */
 | |
| 
 | |
| #define FNT_MISSING_FONTVAL  PDC_SHRT_MIN  /* missing font value */
 | |
| 
 | |
| /* start sequence of PFA files */
 | |
| #define FNT_PFA_STARTSEQU   "%!PS"
 | |
| 
 | |
| /* missing file name for font outline data */
 | |
| #define FNT_MISSING_FILENAME  "__missing__filename__"
 | |
| 
 | |
| /* Font types */
 | |
| typedef enum
 | |
| {
 | |
|     fnt_Type0,          /* Type0 fonts */
 | |
|     fnt_Type1,          /* Type1 fonts */
 | |
|     fnt_MMType1,        /* Multiple master fonts */
 | |
|     fnt_TrueType,       /* TrueType fonts for 1-byte encoding */
 | |
|     fnt_CIDFontType2,   /* TrueType fonts for 2-byte encoding */
 | |
|     fnt_Type1C,         /* CFF PostScript fonts for 1-byte encoding */
 | |
|     fnt_CIDFontType0,   /* OpenType fonts with CFF_ table for 2-byte encoding */
 | |
|     fnt_CIDFontType0C,  /* CFF PostScript fonts for 2-byte encoding */
 | |
|     fnt_OpenType,       /* OpenType fonts for 1-byte encoding */
 | |
|     fnt_OpenTypeC,      /* OpenType fonts for 2-byte encoding */
 | |
|     fnt_Type3,          /* Type3 fonts */
 | |
|     fnt_unknownType     /* for initialization only */
 | |
| }
 | |
| fnt_fonttype;
 | |
| 
 | |
| /* Font styles */
 | |
| typedef enum
 | |
| {
 | |
|     fnt_Normal,
 | |
|     fnt_Bold,
 | |
|     fnt_Italic,
 | |
|     fnt_BoldItalic
 | |
| }
 | |
| fnt_fontstyle;
 | |
| 
 | |
| typedef struct fnt_interwidth_s fnt_interwidth;
 | |
| typedef struct fnt_interwidth4_s fnt_interwidth4;
 | |
| typedef struct fnt_glyphwidth_s fnt_glyphwidth;
 | |
| typedef struct fnt_font_metric_s fnt_font_metric;
 | |
| typedef struct fnt_font_s fnt_font;
 | |
| 
 | |
| /* Code interval for glyph width */
 | |
| struct fnt_interwidth_s
 | |
| {
 | |
|     pdc_ushort startcode;   /* start code of interval */
 | |
|     pdc_short width;        /* width of glyphs in the code interval */
 | |
| };
 | |
| 
 | |
| struct fnt_interwidth4_s
 | |
| {
 | |
|     int startcode;          /* start UTF-32 Unicode of interval */
 | |
|     pdc_short width;        /* width of glyphs in the code interval */
 | |
| };
 | |
| 
 | |
| /* Code and Unicode for glyph width */
 | |
| struct fnt_glyphwidth_s
 | |
| {
 | |
|     pdc_ushort unicode;     /* UTF-16 Unicode of glyph */
 | |
|     pdc_short code;         /* builtin 8-bit code */
 | |
|     pdc_short width;        /* glyph width */
 | |
| };
 | |
| 
 | |
| 
 | |
| /* Font metric exchange structure */
 | |
| struct fnt_font_metric_s
 | |
| {
 | |
|     char *name;                 /* font name (/FontName) */
 | |
|     pdc_ulong flags;            /* font flags of font descriptor */
 | |
|     fnt_fonttype type;          /* type of font */
 | |
|     int charcoll;               /* supported CID character collection */
 | |
|                                 /* < 0: Halfwidth Latin-1 character */
 | |
|     /* font metric */
 | |
|     pdc_scalar italicAngle;     /* AFM key: ItalicAngle */
 | |
|     int isFixedPitch;           /* AFM key: IsFixedPitch */
 | |
|     pdc_scalar llx;             /* AFM key: FontBBox */
 | |
|     pdc_scalar lly;             /* AFM key: FontBBox */
 | |
|     pdc_scalar urx;             /* AFM key: FontBBox */
 | |
|     pdc_scalar ury;             /* AFM key: FontBBox */
 | |
|     int underlinePosition;      /* AFM key: UnderlinePosition */
 | |
|     int underlineThickness;     /* AFM key: UnderlineThickness */
 | |
|     int capHeight;              /* AFM key: CapHeight */
 | |
|     int xHeight;                /* AFM key: XHeight */
 | |
|     int ascender;               /* AFM key: Ascender */
 | |
|     int descender;              /* AFM key: Descender */
 | |
|     int StdVW;                  /* AFM key: StdVW */
 | |
|     int StdHW;                  /* AFM key: StdHW */
 | |
| 
 | |
|     /* glyph widths */
 | |
|     int defwidth;               /* default width */
 | |
|     int numwidths;              /* number of entries in widths */
 | |
|     int *widths;                /* ptr to glyph widths (enumerated by codes) */
 | |
|     int numinters;              /* number of entries in ciw */
 | |
|     fnt_interwidth *ciw;        /* ptr to code intervals for widths array */
 | |
|     int numglwidths;            /* number of entries in glw */
 | |
|     fnt_glyphwidth *glw;        /* ptr to glyph widths array */
 | |
| 
 | |
| 
 | |
| };
 | |
| 
 | |
| /* Font exchange structure */
 | |
| struct fnt_font_s
 | |
| {
 | |
|     char *name;                 /* font name (/BaseFont or /Name or 'font_#') */
 | |
|     char *utf8name;             /* UTF-8 encoded font name (maybe with BOM) */
 | |
|     char *filename;             /* font file name */
 | |
| 
 | |
|     fnt_font_metric m;          /* name, type, flags, charcoll and metric */
 | |
|     pdc_bool isstdfont;         /* is an incore font
 | |
|                                  * or standard CJK font in pdflib */
 | |
|     pdc_bool ishostfont;        /* is an host font */
 | |
|     pdc_bool hasdescr;          /* has font descriptor */
 | |
|     pdc_bool vertical;          /* vertical writing mode */
 | |
| 
 | |
|     pdc_ushort spacechar;       /* code of space character depending on enc */
 | |
|     int spacewidth;             /* width of space character */
 | |
|     int linegap;                /* OpenType lineGap */
 | |
|     int weight;                 /* font weight value 0-1000 */
 | |
| 
 | |
|     pdc_matrix matrix;          /* Type3 font matrix */
 | |
|     pdc_rectangle bbox;         /* Type3 font bounding box */
 | |
|     pdc_scalar fsscale;         /* Type3 fontsize scaling */
 | |
| 
 | |
|     pdc_bool issymbfont;        /* is a symbol font */
 | |
|     pdc_encoding enc;           /* font encoding shortcut */
 | |
| 
 | |
|     int numglyphs;              /* number of glyphs */
 | |
|     int numcodes;               /* number of codes */
 | |
| 
 | |
|     pdc_ushort *gid2code;       /* mapping glyph ID -> [Uni]code or NULL */
 | |
|     pdc_ushort *code2gid;       /* mapping [Uni]code -> glyph ID or NULL */
 | |
|     char *cmapname;             /* CID CMap name */
 | |
| 
 | |
| 
 | |
|     /* font in memory */
 | |
|     pdc_bool embedded;          /* embedded font */
 | |
|     char *imgname;              /* name of virtual file containing *img */
 | |
|     size_t filelen;             /* length of (uncompressed) font data */
 | |
|     pdc_byte *img;              /* font (or CFF table) data */
 | |
| 
 | |
| };
 | |
| 
 | |
| /* font error numbers.
 | |
| */
 | |
| enum
 | |
| {
 | |
| #define         fnt_genNames    1
 | |
| #include        "ft_generr.h"
 | |
| 
 | |
|     FNT_E_dummy
 | |
| };
 | |
| 
 | |
| /* ft_font.c */
 | |
| void fnt_register_errtab(pdc_core *pdc);
 | |
| void fnt_init_font(fnt_font *font);
 | |
| void fnt_cleanup_font(pdc_core *pdc, fnt_font *font);
 | |
| void fnt_cleanup_fontimg(pdc_core *pdc, fnt_font *font);
 | |
| int fnt_get_glyphid(int code, fnt_font *font);
 | |
| int fnt_get_code(int gid, fnt_font *font);
 | |
| int fnt_get_glyphwidth(int code, fnt_font *font);
 | |
| int fnt_get_pdf_fonttype_code(const char *typenam);
 | |
| const char *fnt_get_pdf_fonttype_name(int typecode);
 | |
| const char *fnt_get_pdf_fonttype_desc(int typecode);
 | |
| pdc_encodingvector *fnt_create_font_ev(pdc_core *pdc, fnt_font *font);
 | |
| int fnt_check_weight(int weight);
 | |
| int fnt_weightname2weight(const char *weightname);
 | |
| int fnt_stemv2weight(int stemv);
 | |
| const char *fnt_weight2weightname(int weight);
 | |
| int fnt_macfontstyle2weight(int macfontstyle);
 | |
| int fnt_weight2stemv(int weight);
 | |
| void fnt_font_logg_widths(pdc_core *pdc, fnt_font *font);
 | |
| void fnt_font_logg_protocol(pdc_core *pdc, fnt_font *font);
 | |
| 
 | |
| /* ft_corefont.c */
 | |
| pdc_bool fnt_is_standard_font(const char *fontname);
 | |
| const char *fnt_get_abb_std_fontname(const char *fontname);
 | |
| void fnt_fill_font_metric(pdc_core *pdc, fnt_font *font, pdc_bool kerning,
 | |
|         const fnt_font_metric *metric);
 | |
| const fnt_font_metric *fnt_get_core_metric(const char *fontname);
 | |
| const char *fnt_get_abb_cjk_fontname(const char *fontname);
 | |
| int fnt_get_preinstalled_cidfont(const char *fontname,
 | |
|         const fnt_font_metric **fontmetric);
 | |
| const char **fnt_get_cid_widths_array(pdc_core *pdc, fnt_font *font);
 | |
| 
 | |
| 
 | |
| /* ft_type1.c */
 | |
| pdc_bool fnt_test_type1_font(pdc_core *pdc, const pdc_byte *img);
 | |
| pdc_bool fnt_get_type1_encoding(pdc_core *pdc, fnt_font *font, int glyphflags);
 | |
| 
 | |
| #endif  /* FT_FONT_H */
 |