freetype2/include/freetype/internal/t1types.h

242 lines
8.9 KiB
C
Raw Normal View History

2000-07-19 04:59:31 +02:00
/***************************************************************************/
/* */
/* t1types.h */
/* */
/* Basic Type1/Type2 type definitions and interface (specification */
/* only). */
/* */
/* Copyright 1996-2001, 2002, 2003, 2004, 2006 by */
2000-07-19 04:59:31 +02:00
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/
1999-12-17 00:11:37 +01:00
#ifndef __T1TYPES_H__
#define __T1TYPES_H__
1999-12-17 00:11:37 +01:00
* src/type42/t42drivr.c: s/T42_ENCODING_TYPE_/T1_ENCODING_TYPE_/. (parse_font_matrix): Remove unnecessary code. (parse_sfnts): Initialize some variables. (t42_driver_class) [TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Use ft_module_driver_has_hinter conditionally. Moved some type 42 specific structure definitions to... * include/freetype/internal/t42types.h: New file. * include/freetype/internal/internal.h (FT_INTERNAL_T42_TYPES_H): New macro. * include/freetype/cache/ftcsbits.h (FTC_SBit): Added a new field `num_grays' for specifying the number of used gray levels. * src/cache/ftcsbits.c (ftc_sbit_node_load): Initialize it. Adding a driver for BDF fonts written by Francesco Zappa Nardelli <Francesco.Zappa.Nardelli@ens.fr>. Heavily modified by me to better adapt it to FreeType, removing unneeded stuff. Additionally, it now supports Mark Leisher's BDF extension for anti-aliased bitmap glyphs with 2 and 4 bpp. * src/bdf/*: New driver. * include/freetype/internal/bdftypes.h: New file. * include/freetype/internal/fttrace.h: Added BDF driver components. * include/freetype/fterrdef.h: Added error codes for BDF driver. * include/freetype/config/ftmodule.h, src/Jamfile: Updated. * include/freetype/internal/internal.h (FT_INTERNAL_BDF_TYPES_H): New macro. * include/freetype/config/ftstdlib.h (ft_sprintf): New alias for sprintf. * include/freetype/internal/fttrace.h: Added Type 42 driver component. * src/type42/t42drivr.c: Use it. * include/freetype/internal/internal.h (FT_INTERNAL_PCF_TYPES_H): New macro.
2002-05-21 16:13:01 +02:00
#include <ft2build.h>
#include FT_TYPE1_TABLES_H
2001-10-18 13:49:26 +02:00
#include FT_INTERNAL_POSTSCRIPT_HINTS_H
#include FT_INTERNAL_SERVICE_H
#include FT_SERVICE_POSTSCRIPT_CMAPS_H
FT_BEGIN_HEADER
2000-07-19 04:59:31 +02:00
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/*** ***/
/*** ***/
/*** REQUIRED TYPE1/TYPE2 TABLES DEFINITIONS ***/
/*** ***/
/*** ***/
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/* */
/* <Struct> */
/* T1_EncodingRec */
2000-07-19 04:59:31 +02:00
/* */
/* <Description> */
/* A structure modeling a custom encoding. */
2000-07-19 04:59:31 +02:00
/* */
/* <Fields> */
/* num_chars :: The number of character codes in the encoding. */
/* Usually 256. */
/* */
/* code_first :: The lowest valid character code in the encoding. */
/* */
/* code_last :: The highest valid character code in the encoding. */
/* */
/* char_index :: An array of corresponding glyph indices. */
/* */
/* char_name :: An array of corresponding glyph names. */
/* */
typedef struct T1_EncodingRecRec_
{
2000-07-19 04:59:31 +02:00
FT_Int num_chars;
FT_Int code_first;
FT_Int code_last;
2000-07-19 04:59:31 +02:00
FT_UShort* char_index;
FT_String** char_name;
} T1_EncodingRec, *T1_Encoding;
2000-07-19 04:59:31 +02:00
typedef enum T1_EncodingType_
{
T1_ENCODING_TYPE_NONE = 0,
T1_ENCODING_TYPE_ARRAY,
T1_ENCODING_TYPE_STANDARD,
T1_ENCODING_TYPE_ISOLATIN1,
T1_ENCODING_TYPE_EXPERT
} T1_EncodingType;
typedef struct T1_FontRec_
1999-12-17 00:11:37 +01:00
{
PS_FontInfoRec font_info; /* font info dictionary */
PS_PrivateRec private_dict; /* private dictionary */
FT_String* font_name; /* top-level dictionary */
1999-12-17 00:11:37 +01:00
T1_EncodingType encoding_type;
T1_EncodingRec encoding;
1999-12-17 00:11:37 +01:00
2000-07-19 04:59:31 +02:00
FT_Byte* subrs_block;
FT_Byte* charstrings_block;
FT_Byte* glyph_names_block;
1999-12-17 00:11:37 +01:00
2000-07-19 04:59:31 +02:00
FT_Int num_subrs;
FT_Byte** subrs;
FT_PtrDist* subrs_len;
1999-12-17 00:11:37 +01:00
2000-07-19 04:59:31 +02:00
FT_Int num_glyphs;
FT_String** glyph_names; /* array of glyph names */
FT_Byte** charstrings; /* array of glyph charstrings */
FT_PtrDist* charstrings_len;
1999-12-17 00:11:37 +01:00
FT_Byte paint_type;
2000-07-19 04:59:31 +02:00
FT_Byte font_type;
FT_Matrix font_matrix;
FT_Vector font_offset;
2000-07-19 04:59:31 +02:00
FT_BBox font_bbox;
FT_Long font_id;
1999-12-17 00:11:37 +01:00
FT_Fixed stroke_width;
2000-05-17 01:44:38 +02:00
} T1_FontRec, *T1_Font;
2000-05-17 01:44:38 +02:00
1999-12-17 00:11:37 +01:00
typedef struct CID_SubrsRec_
{
FT_UInt num_subrs;
FT_Byte** code;
2000-10-31 21:42:18 +01:00
} CID_SubrsRec, *CID_Subrs;
1999-12-17 00:11:37 +01:00
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/*** ***/
/*** ***/
/*** AFM FONT INFORMATION STRUCTURES ***/
/*** ***/
/*** ***/
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
typedef struct AFM_TrackKernRec_
{
FT_Int degree;
FT_Fixed min_ptsize;
FT_Fixed min_kern;
FT_Fixed max_ptsize;
FT_Fixed max_kern;
} AFM_TrackKernRec, *AFM_TrackKern;
typedef struct AFM_KernPairRec_
{
FT_Int index1;
FT_Int index2;
FT_Int x;
FT_Int y;
} AFM_KernPairRec, *AFM_KernPair;
typedef struct AFM_FontInfoRec_
{
FT_Bool IsCIDFont;
FT_BBox FontBBox;
FT_Fixed Ascender;
FT_Fixed Descender;
AFM_TrackKern TrackKerns; /* free if non-NULL */
FT_Int NumTrackKern;
AFM_KernPair KernPairs; /* free if non-NULL */
FT_Int NumKernPair;
} AFM_FontInfoRec, *AFM_FontInfo;
2000-07-19 04:59:31 +02:00
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/*** ***/
/*** ***/
/*** ORIGINAL T1_FACE CLASS DEFINITION ***/
/*** ***/
/*** ***/
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
1999-12-17 00:11:37 +01:00
typedef struct T1_FaceRec_* T1_Face;
typedef struct CID_FaceRec_* CID_Face;
1999-12-17 00:11:37 +01:00
2000-07-19 04:59:31 +02:00
typedef struct T1_FaceRec_
1999-12-17 00:11:37 +01:00
{
FT_FaceRec root;
T1_FontRec type1;
const void* psnames;
const void* psaux;
const void* afm_data;
FT_CharMapRec charmaprecs[2];
FT_CharMap charmaps[2];
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
PS_Unicodes unicode_map;
#endif
1999-12-17 00:11:37 +01:00
2000-07-19 04:59:31 +02:00
/* support for Multiple Masters fonts */
PS_Blend blend;
/* since version 2.1 - interface to PostScript hinter */
const void* pshinter;
1999-12-17 00:11:37 +01:00
} T1_FaceRec;
2000-07-19 04:59:31 +02:00
typedef struct CID_FaceRec_
{
FT_FaceRec root;
void* psnames;
void* psaux;
CID_FaceInfoRec cid;
void* afm_data;
CID_Subrs subrs;
/* since version 2.1 - interface to PostScript hinter */
void* pshinter;
2000-10-31 21:42:18 +01:00
/* since version 2.1.8, but was originally positioned after `afm_data' */
FT_Byte* binary_data; /* used if hex data has been converted */
FT_Stream cid_stream;
} CID_FaceRec;
2000-06-27 07:58:22 +02:00
FT_END_HEADER
#endif /* __T1TYPES_H__ */
2000-06-27 07:58:22 +02:00
/* END */