Formatting.
This commit is contained in:
parent
0959a8777a
commit
c8f9cf37d3
@ -1,3 +1,21 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftstream.h */
|
||||
/* */
|
||||
/* Stream handling(specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2000 by */
|
||||
/* 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. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTSTREAM_H
|
||||
#define FTSTREAM_H
|
||||
|
||||
@ -9,292 +27,312 @@
|
||||
#endif
|
||||
|
||||
|
||||
/* format of an 8-bit frame_op value = [ xxxxx | e | s ] */
|
||||
/* where s is set to 1 when the value is signed.. */
|
||||
/* where e is set to 1 when the value is little-endian */
|
||||
/* xxxxx is a command */
|
||||
/* format of an 8-bit frame_op value = [ xxxxx | e | s ] */
|
||||
/* s is set to 1 if the value is signed, */
|
||||
/* e is set to 1 if the value is little-endian */
|
||||
/* xxxxx is a command */
|
||||
|
||||
#define FT_FRAME_OP_SHIFT 2
|
||||
#define FT_FRAME_OP_SIGNED 1
|
||||
#define FT_FRAME_OP_LITTLE 2
|
||||
#define FT_FRAME_OP_COMMAND(x) (x >> FT_FRAME_OP_SHIFT)
|
||||
#define FT_FRAME_OP_SHIFT 2
|
||||
#define FT_FRAME_OP_SIGNED 1
|
||||
#define FT_FRAME_OP_LITTLE 2
|
||||
#define FT_FRAME_OP_COMMAND( x ) ( x >> FT_FRAME_OP_SHIFT )
|
||||
|
||||
#define FT_MAKE_FRAME_OP( command, little, sign ) \
|
||||
((command << FT_FRAME_OP_SHIFT) | (little << 1) | sign)
|
||||
#define FT_MAKE_FRAME_OP( command, little, sign ) \
|
||||
( ( command << FT_FRAME_OP_SHIFT ) | ( little << 1 ) | sign )
|
||||
|
||||
#define FT_FRAME_OP_END 0
|
||||
#define FT_FRAME_OP_START 1 /* start a new frame */
|
||||
#define FT_FRAME_OP_BYTE 2 /* read 1-byte value */
|
||||
#define FT_FRAME_OP_SHORT 3 /* read 2-byte value */
|
||||
#define FT_FRAME_OP_LONG 4 /* read 4-byte value */
|
||||
#define FT_FRAME_OP_OFF3 5 /* read 3-byte value */
|
||||
#define FT_FRAME_OP_START 1 /* start a new frame */
|
||||
#define FT_FRAME_OP_BYTE 2 /* read 1-byte value */
|
||||
#define FT_FRAME_OP_SHORT 3 /* read 2-byte value */
|
||||
#define FT_FRAME_OP_LONG 4 /* read 4-byte value */
|
||||
#define FT_FRAME_OP_OFF3 5 /* read 3-byte value */
|
||||
#define FT_FRAME_OP_BYTES 6 /* read a bytes sequence */
|
||||
|
||||
typedef enum FT_Frame_Op_
|
||||
{
|
||||
ft_frame_end = 0,
|
||||
ft_frame_start = FT_MAKE_FRAME_OP( FT_FRAME_OP_START, 0, 0 ),
|
||||
|
||||
ft_frame_byte = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 0 ),
|
||||
ft_frame_schar = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 1 ),
|
||||
typedef enum FT_Frame_Op_
|
||||
{
|
||||
ft_frame_end = 0,
|
||||
ft_frame_start = FT_MAKE_FRAME_OP( FT_FRAME_OP_START, 0, 0 ),
|
||||
|
||||
ft_frame_ushort_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 0 ),
|
||||
ft_frame_short_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 1 ),
|
||||
ft_frame_ushort_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 0 ),
|
||||
ft_frame_short_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 1 ),
|
||||
ft_frame_byte = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 0 ),
|
||||
ft_frame_schar = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 1 ),
|
||||
|
||||
ft_frame_ulong_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 0 ),
|
||||
ft_frame_ulong_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 1 ),
|
||||
ft_frame_long_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 0 ),
|
||||
ft_frame_long_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 1 ),
|
||||
ft_frame_ushort_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 0 ),
|
||||
ft_frame_short_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 1 ),
|
||||
ft_frame_ushort_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 0 ),
|
||||
ft_frame_short_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 1 ),
|
||||
|
||||
ft_frame_uoff3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 0 ),
|
||||
ft_frame_uoff3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 1 ),
|
||||
ft_frame_off3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 0 ),
|
||||
ft_frame_off3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 1 ),
|
||||
ft_frame_ulong_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 0 ),
|
||||
ft_frame_ulong_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 1 ),
|
||||
ft_frame_long_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 0 ),
|
||||
ft_frame_long_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 1 ),
|
||||
|
||||
ft_frame_uoff3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 0 ),
|
||||
ft_frame_uoff3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 1 ),
|
||||
ft_frame_off3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 0 ),
|
||||
ft_frame_off3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 1 ),
|
||||
|
||||
ft_frame_bytes = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 0 ),
|
||||
ft_frame_skip = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 1 )
|
||||
ft_frame_bytes = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 0 ),
|
||||
ft_frame_skip = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 1 )
|
||||
|
||||
} FT_Frame_Op;
|
||||
} FT_Frame_Op;
|
||||
|
||||
|
||||
typedef struct FT_Frame_Field_
|
||||
{
|
||||
FT_Frame_Op value;
|
||||
char size;
|
||||
FT_UShort offset;
|
||||
typedef struct FT_Frame_Field_
|
||||
{
|
||||
FT_Frame_Op value;
|
||||
char size;
|
||||
FT_UShort offset;
|
||||
|
||||
} FT_Frame_Field;
|
||||
} FT_Frame_Field;
|
||||
|
||||
/* make-up a FT_Frame_Field out of a structure type and a field name */
|
||||
#define FT_FIELD_REF(s,f) (((s*)0)->f)
|
||||
|
||||
#define FT_FRAME_FIELD( frame_op, struct_type, field ) \
|
||||
{ \
|
||||
frame_op, \
|
||||
sizeof(FT_FIELD_REF(struct_type,field)), \
|
||||
(FT_UShort)(char*)&FT_FIELD_REF(struct_type,field) }
|
||||
/* make-up a FT_Frame_Field out of a structure type and a field name */
|
||||
#define FT_FIELD_REF( s, f ) (((s*)0)->f)
|
||||
|
||||
#define FT_FRAME_FIELD( frame_op, struct_type, field ) \
|
||||
{ \
|
||||
frame_op, \
|
||||
sizeof ( FT_FIELD_REF( struct_type,field ) ), \
|
||||
(FT_UShort)(char*)&FT_FIELD_REF( struct_type, field ) \
|
||||
}
|
||||
|
||||
#define FT_MAKE_EMPTY_FIELD( frame_op ) { frame_op, 0, 0 }
|
||||
|
||||
#define FT_FRAME_START(s) { ft_frame_start, 0, s }
|
||||
#define FT_FRAME_END { ft_frame_end, 0, 0 }
|
||||
#define FT_FRAME_START( s ) { ft_frame_start, 0, s }
|
||||
#define FT_FRAME_END { ft_frame_end, 0, 0 }
|
||||
|
||||
#define FT_FRAME_LONG(s,f) FT_FRAME_FIELD( ft_frame_long_be, s, f )
|
||||
#define FT_FRAME_ULONG(s,f) FT_FRAME_FIELD( ft_frame_ulong_be, s, f )
|
||||
#define FT_FRAME_SHORT(s,f) FT_FRAME_FIELD( ft_frame_short_be, s, f )
|
||||
#define FT_FRAME_USHORT(s,f) FT_FRAME_FIELD( ft_frame_ushort_be, s, f )
|
||||
#define FT_FRAME_BYTE(s,f) FT_FRAME_FIELD( ft_frame_byte, s, f )
|
||||
#define FT_FRAME_CHAR(s,f) FT_FRAME_FIELD( ft_frame_schar, s, f )
|
||||
#define FT_FRAME_LONG( s, f ) FT_FRAME_FIELD( ft_frame_long_be, s, f )
|
||||
#define FT_FRAME_ULONG( s, f ) FT_FRAME_FIELD( ft_frame_ulong_be, s, f )
|
||||
#define FT_FRAME_SHORT( s, f ) FT_FRAME_FIELD( ft_frame_short_be, s, f )
|
||||
#define FT_FRAME_USHORT( s, f ) FT_FRAME_FIELD( ft_frame_ushort_be, s, f )
|
||||
#define FT_FRAME_BYTE( s, f ) FT_FRAME_FIELD( ft_frame_byte, s, f )
|
||||
#define FT_FRAME_CHAR( s, f ) FT_FRAME_FIELD( ft_frame_schar, s, f )
|
||||
|
||||
#define FT_FRAME_LONG_LE(s,f) FT_FRAME_FIELD( ft_frame_long_le, s, f )
|
||||
#define FT_FRAME_ULONG_LE(s,f) FT_FRAME_FIELD( ft_frame_ulong_le, s, f )
|
||||
#define FT_FRAME_SHORT_LE(s,f) FT_FRAME_FIELD( ft_frame_short_le, s, f )
|
||||
#define FT_FRAME_USHORT_LE(s,f) FT_FRAME_FIELD( ft_frame_ushort_le, s, f )
|
||||
#define FT_FRAME_LONG_LE( s, f ) FT_FRAME_FIELD( ft_frame_long_le, s, f )
|
||||
#define FT_FRAME_ULONG_LE( s, f ) FT_FRAME_FIELD( ft_frame_ulong_le, s, f )
|
||||
#define FT_FRAME_SHORT_LE( s, f ) FT_FRAME_FIELD( ft_frame_short_le, s, f )
|
||||
#define FT_FRAME_USHORT_LE( s, f ) FT_FRAME_FIELD( ft_frame_ushort_le, s, f )
|
||||
|
||||
#define FT_FRAME_SKIP_LONG { ft_frame_long_be, 0, 0 }
|
||||
#define FT_FRAME_SKIP_SHORT { ft_frame_short_be, 0, 0 }
|
||||
#define FT_FRAME_SKIP_BYTE { ft_frame_byte, 0, 0 }
|
||||
#define FT_FRAME_SKIP_LONG { ft_frame_long_be, 0, 0 }
|
||||
#define FT_FRAME_SKIP_SHORT { ft_frame_short_be, 0, 0 }
|
||||
#define FT_FRAME_SKIP_BYTE { ft_frame_byte, 0, 0 }
|
||||
|
||||
#define FT_FRAME_BYTES( struct_type, field, count ) \
|
||||
{ \
|
||||
ft_frame_bytes, \
|
||||
count, \
|
||||
(FT_UShort)(char*)&FT_FIELD_REF(struct_type,field) }
|
||||
|
||||
#define FT_FRAME_SKIP_BYTES( count ) { ft_frame_skip, count, 0 }
|
||||
(FT_UShort)(char*)&FT_FIELD_REF( struct_type, field ) \
|
||||
}
|
||||
#define FT_FRAME_SKIP_BYTES( count ) { ft_frame_skip, count, 0 }
|
||||
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* integer extraction macros - the `buffer' parameter must ALWAYS be of */
|
||||
/* integer extraction macros -- the `buffer' parameter must ALWAYS be of */
|
||||
/* type `char*' or equivalent (1-byte elements). */
|
||||
/* */
|
||||
#define NEXT_Char(buffer) ((signed char)*buffer++)
|
||||
#define NEXT_Byte(buffer) ((unsigned char)*buffer++)
|
||||
#define NEXT_Char( buffer ) \
|
||||
( (signed char)*buffer++ )
|
||||
#define NEXT_Byte( buffer ) \
|
||||
( (unsigned char)*buffer++ )
|
||||
|
||||
#define NEXT_Short(buffer) ( buffer += 2, \
|
||||
( (short)((signed char)buffer[-2] << 8) | \
|
||||
(unsigned char)buffer[-1] ) )
|
||||
#define NEXT_Short( buffer ) \
|
||||
( buffer += 2, \
|
||||
( (short)( (signed char)buffer[-2] << 8 ) | \
|
||||
(unsigned char)buffer[-1] ) )
|
||||
|
||||
#define NEXT_UShort(buffer) ((unsigned short)NEXT_Short(buffer))
|
||||
#define NEXT_UShort( buffer ) \
|
||||
( (unsigned short)NEXT_Short( buffer ) )
|
||||
|
||||
#define NEXT_Offset(buffer) ( buffer += 3, \
|
||||
( ((long)(signed char)buffer[-3] << 16) | \
|
||||
((long)(unsigned char)buffer[-2] << 8) | \
|
||||
(long)(unsigned char)buffer[-1] ) )
|
||||
#define NEXT_Offset( buffer ) \
|
||||
( buffer += 3, \
|
||||
( ( (long)(signed char)buffer[-3] << 16 ) | \
|
||||
( (long)(unsigned char)buffer[-2] << 8 ) | \
|
||||
(long)(unsigned char)buffer[-1] ) )
|
||||
|
||||
#define NEXT_UOffset(buffer) ((unsigned long)NEXT_Offset(buffer))
|
||||
#define NEXT_UOffset( buffer ) \
|
||||
( (unsigned long)NEXT_Offset( buffer ) )
|
||||
|
||||
#define NEXT_Long(buffer) ( buffer += 4, \
|
||||
( ((long)(signed char)buffer[-4] << 24) | \
|
||||
((long)(unsigned char)buffer[-3] << 16) | \
|
||||
((long)(unsigned char)buffer[-2] << 8) | \
|
||||
(long)(unsigned char)buffer[-1] ) )
|
||||
#define NEXT_Long( buffer ) \
|
||||
( buffer += 4, \
|
||||
( ( (long)(signed char)buffer[-4] << 24 ) | \
|
||||
( (long)(unsigned char)buffer[-3] << 16 ) | \
|
||||
( (long)(unsigned char)buffer[-2] << 8 ) | \
|
||||
(long)(unsigned char)buffer[-1] ) )
|
||||
|
||||
#define NEXT_ULong(buffer) ((unsigned long)NEXT_Long(buffer))
|
||||
#define NEXT_ULong( buffer ) \
|
||||
( (unsigned long)NEXT_Long( buffer ) )
|
||||
|
||||
|
||||
#define NEXT_ShortLE(buffer) ( buffer += 2, \
|
||||
( (short)((signed char)buffer[-1] << 8) | \
|
||||
(unsigned char)buffer[-2] ) )
|
||||
#define NEXT_ShortLE( buffer ) \
|
||||
( buffer += 2, \
|
||||
( (short)( (signed char)buffer[-1] << 8 ) | \
|
||||
(unsigned char)buffer[-2] ) )
|
||||
|
||||
#define NEXT_UShortLE(buffer) ((unsigned short)NEXT_ShortLE(buffer))
|
||||
#define NEXT_UShortLE( buffer ) \
|
||||
( (unsigned short)NEXT_ShortLE( buffer ) )
|
||||
|
||||
#define NEXT_OffsetLE(buffer) ( buffer += 3, \
|
||||
( ((long)(signed char)buffer[-1] << 16) | \
|
||||
((long)(unsigned char)buffer[-2] << 8) | \
|
||||
(long)(unsigned char)buffer[-3] ) )
|
||||
#define NEXT_OffsetLE( buffer ) \
|
||||
( buffer += 3, \
|
||||
( ( (long)(signed char)buffer[-1] << 16 ) | \
|
||||
( (long)(unsigned char)buffer[-2] << 8 ) | \
|
||||
(long)(unsigned char)buffer[-3] ) )
|
||||
|
||||
#define NEXT_UOffsetLE(buffer) ((unsigned long)NEXT_OffsetLE(buffer))
|
||||
#define NEXT_UOffsetLE( buffer ) \
|
||||
( (unsigned long)NEXT_OffsetLE( buffer ) )
|
||||
|
||||
|
||||
#define NEXT_LongLE(buffer) ( buffer += 4, \
|
||||
( ((long)(signed char)buffer[-1] << 24) | \
|
||||
((long)(unsigned char)buffer[-2] << 16) | \
|
||||
((long)(unsigned char)buffer[-3] << 8) | \
|
||||
(long)(unsigned char)buffer[-4] ) )
|
||||
#define NEXT_LongLE( buffer ) \
|
||||
( buffer += 4, \
|
||||
( ( (long)(signed char)buffer[-1] << 24 ) | \
|
||||
( (long)(unsigned char)buffer[-2] << 16 ) | \
|
||||
( (long)(unsigned char)buffer[-3] << 8 ) | \
|
||||
(long)(unsigned char)buffer[-4] ) )
|
||||
|
||||
#define NEXT_ULongLE( buffer ) \
|
||||
( (unsigned long)NEXT_LongLE( buffer ) )
|
||||
|
||||
#define NEXT_ULongLE(buffer) ((unsigned long)NEXT_LongLE(buffer))
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Each GET_xxxx() macro uses an implicit `stream' variable. */
|
||||
/* */
|
||||
#define FT_GET_MACRO( func, type ) ( (type)func(stream) )
|
||||
#define FT_GET_MACRO( func, type ) ( (type)func( stream ) )
|
||||
|
||||
#define GET_Char() FT_GET_MACRO( FT_Get_Char, FT_Char )
|
||||
#define GET_Byte() FT_GET_MACRO( FT_Get_Char, FT_Byte )
|
||||
#define GET_Short() FT_GET_MACRO( FT_Get_Short, FT_Short )
|
||||
#define GET_UShort() FT_GET_MACRO( FT_Get_Short, FT_UShort )
|
||||
#define GET_Offset() FT_GET_MACRO( FT_Get_Offset, FT_Long )
|
||||
#define GET_UOffset() FT_GET_MACRO( FT_Get_Offset, FT_ULong )
|
||||
#define GET_Long() FT_GET_MACRO( FT_Get_Long, FT_Long )
|
||||
#define GET_ULong() FT_GET_MACRO( FT_Get_Long, FT_ULong )
|
||||
#define GET_Tag4() FT_GET_MACRO( FT_Get_Long, FT_ULong )
|
||||
#define GET_Char() FT_GET_MACRO( FT_Get_Char, FT_Char )
|
||||
#define GET_Byte() FT_GET_MACRO( FT_Get_Char, FT_Byte )
|
||||
#define GET_Short() FT_GET_MACRO( FT_Get_Short, FT_Short )
|
||||
#define GET_UShort() FT_GET_MACRO( FT_Get_Short, FT_UShort )
|
||||
#define GET_Offset() FT_GET_MACRO( FT_Get_Offset, FT_Long )
|
||||
#define GET_UOffset() FT_GET_MACRO( FT_Get_Offset, FT_ULong )
|
||||
#define GET_Long() FT_GET_MACRO( FT_Get_Long, FT_Long )
|
||||
#define GET_ULong() FT_GET_MACRO( FT_Get_Long, FT_ULong )
|
||||
#define GET_Tag4() FT_GET_MACRO( FT_Get_Long, FT_ULong )
|
||||
|
||||
#define GET_ShortLE() FT_GET_MACRO( FT_Get_ShortLE, FT_Short )
|
||||
#define GET_UShortLE() FT_GET_MACRO( FT_Get_ShortLE, FT_UShort )
|
||||
#define GET_LongLE() FT_GET_MACRO( FT_Get_LongLE, FT_Short )
|
||||
#define GET_ULongLE() FT_GET_MACRO( FT_Get_LongLE, FT_Short )
|
||||
#define GET_LongLE() FT_GET_MACRO( FT_Get_LongLE, FT_Short )
|
||||
#define GET_ULongLE() FT_GET_MACRO( FT_Get_LongLE, FT_Short )
|
||||
|
||||
#define FT_READ_MACRO( func, type, var ) \
|
||||
( var = (type)func( stream, &error ), \
|
||||
error != FT_Err_Ok )
|
||||
|
||||
#define READ_Byte( var ) FT_READ_MACRO( FT_Read_Char, FT_Byte, var )
|
||||
#define READ_Char( var ) FT_READ_MACRO( FT_Read_Char, FT_Char, var )
|
||||
#define READ_Short( var ) FT_READ_MACRO( FT_Read_Short, FT_Short, var )
|
||||
#define READ_UShort( var ) FT_READ_MACRO( FT_Read_Short, FT_UShort, var )
|
||||
#define READ_Offset( var ) FT_READ_MACRO( FT_Read_Offset, FT_Long, var )
|
||||
#define READ_UOffset( var ) FT_READ_MACRO( FT_Read_Offset, FT_ULong, var )
|
||||
#define READ_Long( var ) FT_READ_MACRO( FT_Read_Long, FT_Long, var )
|
||||
#define READ_ULong( var ) FT_READ_MACRO( FT_Read_Long, FT_ULong, var )
|
||||
#define READ_Byte( var ) FT_READ_MACRO( FT_Read_Char, FT_Byte, var )
|
||||
#define READ_Char( var ) FT_READ_MACRO( FT_Read_Char, FT_Char, var )
|
||||
#define READ_Short( var ) FT_READ_MACRO( FT_Read_Short, FT_Short, var )
|
||||
#define READ_UShort( var ) FT_READ_MACRO( FT_Read_Short, FT_UShort, var )
|
||||
#define READ_Offset( var ) FT_READ_MACRO( FT_Read_Offset, FT_Long, var )
|
||||
#define READ_UOffset( var ) FT_READ_MACRO( FT_Read_Offset, FT_ULong, var )
|
||||
#define READ_Long( var ) FT_READ_MACRO( FT_Read_Long, FT_Long, var )
|
||||
#define READ_ULong( var ) FT_READ_MACRO( FT_Read_Long, FT_ULong, var )
|
||||
|
||||
#define READ_ShortLE( var ) FT_READ_MACRO( FT_Read_ShortLE, FT_Short, var )
|
||||
#define READ_UShortLE( var ) FT_READ_MACRO( FT_Read_ShortLE, FT_UShort, var )
|
||||
#define READ_LongLE( var ) FT_READ_MACRO( FT_Read_LongLE, FT_Long, var )
|
||||
#define READ_ULongLE( var ) FT_READ_MACRO( FT_Read_LongLE, FT_ULong, var )
|
||||
#define READ_ShortLE( var ) FT_READ_MACRO( FT_Read_ShortLE, FT_Short, var )
|
||||
#define READ_UShortLE( var ) FT_READ_MACRO( FT_Read_ShortLE, FT_UShort, var )
|
||||
#define READ_LongLE( var ) FT_READ_MACRO( FT_Read_LongLE, FT_Long, var )
|
||||
#define READ_ULongLE( var ) FT_READ_MACRO( FT_Read_LongLE, FT_ULong, var )
|
||||
|
||||
|
||||
BASE_DEF(void) FT_New_Memory_Stream( FT_Library library,
|
||||
FT_Byte* base,
|
||||
FT_ULong size,
|
||||
FT_Stream stream );
|
||||
BASE_DEF( void ) FT_New_Memory_Stream( FT_Library library,
|
||||
FT_Byte* base,
|
||||
FT_ULong size,
|
||||
FT_Stream stream );
|
||||
|
||||
BASE_DEF(FT_Error) FT_Seek_Stream( FT_Stream stream,
|
||||
FT_ULong pos );
|
||||
BASE_DEF( FT_Error ) FT_Seek_Stream( FT_Stream stream,
|
||||
FT_ULong pos );
|
||||
|
||||
BASE_DEF(FT_Error) FT_Skip_Stream( FT_Stream stream,
|
||||
FT_Long distance );
|
||||
BASE_DEF( FT_Error ) FT_Skip_Stream( FT_Stream stream,
|
||||
FT_Long distance );
|
||||
|
||||
BASE_DEF(FT_Long) FT_Stream_Pos( FT_Stream stream );
|
||||
BASE_DEF( FT_Long ) FT_Stream_Pos( FT_Stream stream );
|
||||
|
||||
|
||||
BASE_DEF(FT_Error) FT_Read_Stream( FT_Stream stream,
|
||||
FT_Byte* buffer,
|
||||
FT_ULong count );
|
||||
BASE_DEF( FT_Error ) FT_Read_Stream( FT_Stream stream,
|
||||
FT_Byte* buffer,
|
||||
FT_ULong count );
|
||||
|
||||
BASE_DEF(FT_Error) FT_Read_Stream_At( FT_Stream stream,
|
||||
FT_ULong pos,
|
||||
FT_Byte* buffer,
|
||||
BASE_DEF( FT_Error ) FT_Read_Stream_At( FT_Stream stream,
|
||||
FT_ULong pos,
|
||||
FT_Byte* buffer,
|
||||
FT_ULong count );
|
||||
|
||||
BASE_DEF( FT_Error ) FT_Access_Frame( FT_Stream stream,
|
||||
FT_ULong count );
|
||||
|
||||
BASE_DEF(FT_Error) FT_Access_Frame( FT_Stream stream,
|
||||
FT_ULong count );
|
||||
BASE_DEF( void ) FT_Forget_Frame( FT_Stream stream );
|
||||
|
||||
BASE_DEF(void) FT_Forget_Frame( FT_Stream stream );
|
||||
BASE_DEF( FT_Error ) FT_Extract_Frame( FT_Stream stream,
|
||||
FT_ULong count,
|
||||
FT_Byte** pbytes );
|
||||
|
||||
BASE_DEF(FT_Error) FT_Extract_Frame( FT_Stream stream,
|
||||
FT_ULong count,
|
||||
FT_Byte* *pbytes );
|
||||
BASE_DEF( void ) FT_Release_Frame( FT_Stream stream,
|
||||
FT_Byte** pbytes );
|
||||
|
||||
BASE_DEF(void) FT_Release_Frame( FT_Stream stream,
|
||||
FT_Byte* *pbytes );
|
||||
BASE_DEF( FT_Char ) FT_Get_Char( FT_Stream stream );
|
||||
|
||||
BASE_DEF(FT_Char) FT_Get_Char( FT_Stream stream );
|
||||
BASE_DEF( FT_Short ) FT_Get_Short( FT_Stream stream );
|
||||
|
||||
BASE_DEF(FT_Short) FT_Get_Short( FT_Stream stream );
|
||||
BASE_DEF( FT_Long ) FT_Get_Offset( FT_Stream stream );
|
||||
|
||||
BASE_DEF(FT_Long) FT_Get_Offset( FT_Stream stream );
|
||||
BASE_DEF( FT_Long ) FT_Get_Long( FT_Stream stream );
|
||||
|
||||
BASE_DEF(FT_Long) FT_Get_Long( FT_Stream stream );
|
||||
BASE_DEF( FT_Short ) FT_Get_ShortLE( FT_Stream stream );
|
||||
|
||||
BASE_DEF(FT_Short) FT_Get_ShortLE( FT_Stream stream );
|
||||
|
||||
BASE_DEF(FT_Long) FT_Get_LongLE( FT_Stream stream );
|
||||
BASE_DEF( FT_Long ) FT_Get_LongLE( FT_Stream stream );
|
||||
|
||||
|
||||
BASE_DEF(FT_Char) FT_Read_Char( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
BASE_DEF(FT_Short) FT_Read_Short( FT_Stream stream,
|
||||
BASE_DEF( FT_Char ) FT_Read_Char( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
BASE_DEF(FT_Long) FT_Read_Offset( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
BASE_DEF(FT_Long) FT_Read_Long( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
BASE_DEF(FT_Short) FT_Read_ShortLE( FT_Stream stream,
|
||||
BASE_DEF( FT_Short ) FT_Read_Short( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
BASE_DEF(FT_Long) FT_Read_LongLE( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
BASE_DEF( FT_Long ) FT_Read_Offset( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
BASE_DEF(FT_Error) FT_Read_Fields( FT_Stream stream,
|
||||
const FT_Frame_Field* fields,
|
||||
void* structure );
|
||||
BASE_DEF( FT_Long ) FT_Read_Long( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
#define USE_Stream( resource, stream ) \
|
||||
BASE_DEF( FT_Short ) FT_Read_ShortLE( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
BASE_DEF( FT_Long ) FT_Read_LongLE( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
BASE_DEF( FT_Error ) FT_Read_Fields( FT_Stream stream,
|
||||
const FT_Frame_Field* fields,
|
||||
void* structure );
|
||||
|
||||
|
||||
#define USE_Stream( resource, stream ) \
|
||||
FT_SET_ERROR( FT_Open_Stream( resource, stream ) )
|
||||
|
||||
#define DONE_Stream( stream ) \
|
||||
#define DONE_Stream( stream ) \
|
||||
FT_Done_Stream( stream )
|
||||
|
||||
|
||||
#define ACCESS_Frame( size ) \
|
||||
#define ACCESS_Frame( size ) \
|
||||
FT_SET_ERROR( FT_Access_Frame( stream, size ) )
|
||||
|
||||
#define FORGET_Frame() \
|
||||
#define FORGET_Frame() \
|
||||
FT_Forget_Frame( stream )
|
||||
|
||||
#define EXTRACT_Frame( size, bytes ) \
|
||||
FT_SET_ERROR( FT_Extract_Frame( stream, size, (FT_Byte**)&(bytes) ) )
|
||||
#define EXTRACT_Frame( size, bytes ) \
|
||||
FT_SET_ERROR( FT_Extract_Frame( stream, size, \
|
||||
(FT_Byte**)&(bytes) ) )
|
||||
|
||||
#define RELEASE_Frame( bytes ) \
|
||||
#define RELEASE_Frame( bytes ) \
|
||||
FT_Release_Frame( stream, (FT_Byte**)&(bytes) )
|
||||
|
||||
#define FILE_Seek( position ) \
|
||||
#define FILE_Seek( position ) \
|
||||
FT_SET_ERROR( FT_Seek_Stream( stream, position ) )
|
||||
|
||||
#define FILE_Skip( distance ) \
|
||||
#define FILE_Skip( distance ) \
|
||||
FT_SET_ERROR( FT_Skip_Stream( stream, distance ) )
|
||||
|
||||
#define FILE_Pos() \
|
||||
#define FILE_Pos() \
|
||||
FT_Stream_Pos( stream )
|
||||
|
||||
#define FILE_Read( buffer, count ) \
|
||||
@ -309,7 +347,7 @@ typedef struct FT_Frame_Field_
|
||||
count ) )
|
||||
|
||||
#define READ_Fields( fields, object ) \
|
||||
((error = FT_Read_Fields( stream, fields, object )) != FT_Err_Ok)
|
||||
( ( error = FT_Read_Fields( stream, fields, object ) ) != FT_Err_Ok )
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -318,3 +356,6 @@ typedef struct FT_Frame_Field_
|
||||
|
||||
|
||||
#endif /* FTSTREAM_H */
|
||||
|
||||
|
||||
/* END */
|
||||
|
@ -2,8 +2,8 @@
|
||||
/* */
|
||||
/* psnames.h */
|
||||
/* */
|
||||
/* High-level interface for the "psnames" module (in charge of */
|
||||
/* various functions related to Postscript glyph names conversion) */
|
||||
/* High-level interface for the `PSNames' module (in charge of */
|
||||
/* various functions related to Postscript glyph names conversion). */
|
||||
/* */
|
||||
/* Copyright 1996-2000 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
@ -16,132 +16,134 @@
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef PSNAMES_H
|
||||
#define PSNAMES_H
|
||||
|
||||
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* <FuncType>
|
||||
* PS_Unicode_Value_Func
|
||||
*
|
||||
* <Description>
|
||||
* A function used to return the Unicode index corresponding to a
|
||||
* given glyph name.
|
||||
*
|
||||
* <Input>
|
||||
* glyph_name :: the glyph name
|
||||
*
|
||||
* <Return>
|
||||
* The Unicode character index. The non-Unicode value 0xFFFF if the
|
||||
* glyph name has no known Unicode meaning..
|
||||
*
|
||||
* <Note>
|
||||
* This function is able to map several different glyph names to the
|
||||
* same Unicode value, according to the rules defined in the Adobe
|
||||
* Glyph List table.
|
||||
*
|
||||
* This function will not be compiled if the configuration macro
|
||||
* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST is undefined.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
typedef FT_ULong (*PS_Unicode_Value_Func)( const char* glyph_name );
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
/* PS_Unicode_Value_Func */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A function used to return the Unicode index corresponding to a */
|
||||
/* given glyph name. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* glyph_name :: The glyph name. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* The Unicode character index resp. the non-Unicode value 0xFFFF if */
|
||||
/* the glyph name has no known Unicode meaning. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This function is able to map several different glyph names to the */
|
||||
/* same Unicode value, according to the rules defined in the Adobe */
|
||||
/* Glyph List table. */
|
||||
/* */
|
||||
/* This function will not be compiled if the configuration macro */
|
||||
/* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST is undefined. */
|
||||
/* */
|
||||
typedef FT_ULong (*PS_Unicode_Value_Func)( const char* glyph_name );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* <FuncType>
|
||||
* PS_Unicode_Index_Func
|
||||
*
|
||||
* <Description>
|
||||
* A function used to return the glyph index corresponding to
|
||||
* a given unicode value.
|
||||
*
|
||||
* <Input>
|
||||
* num_glyphs :: number of glyphs in face
|
||||
* glyph_names :: array of glyph name pointers
|
||||
* uncode :: unicode value.
|
||||
*
|
||||
* <Return>
|
||||
* The glyph index. 0xFFFF is no glyph correspond to this Unicode
|
||||
* value..
|
||||
*
|
||||
* <Note>
|
||||
* This function is able to recognize several glyph names per
|
||||
* unicode values, according to the Adobe Glyph List.
|
||||
*
|
||||
* This function will not be compiled if the configuration macro
|
||||
* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST is undefined.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
/* PS_Unicode_Index_Func */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A function used to return the glyph index corresponding to a given */
|
||||
/* Unicode value. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* num_glyphs :: The number of glyphs in the face. */
|
||||
/* */
|
||||
/* glyph_names :: An array of glyph name pointers. */
|
||||
/* */
|
||||
/* unicode :: The Unicode value. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* The glyph index resp. 0xFFFF if no glyph corresponds to this */
|
||||
/* Unicode value. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This function is able to recognize several glyph names per Unicode */
|
||||
/* value, according to the Adobe Glyph List. */
|
||||
/* */
|
||||
/* This function will not be compiled if the configuration macro */
|
||||
/* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST is undefined. */
|
||||
/* */
|
||||
typedef FT_UInt (*PS_Unicode_Index_Func)( FT_UInt num_glyphs,
|
||||
const char** glyph_names,
|
||||
FT_ULong unicode );
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* <FuncType>
|
||||
* PS_Macintosh_Name_Func
|
||||
*
|
||||
* <Description>
|
||||
* A function used to return the glyph name corresponding to one
|
||||
* Apple glyph name index.
|
||||
*
|
||||
* <Input>
|
||||
* name_index :: index of the Mac name
|
||||
*
|
||||
* <Return>
|
||||
* The glyph name, or 0 if the index is incorrect.
|
||||
*
|
||||
* <Note>
|
||||
* This function will not be compiled if the configuration macro
|
||||
* FT_CONFIG_OPTION_POSTSCRIPT_NAMES is undefined
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
/* PS_Macintosh_Name_Func */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A function used to return the glyph name corresponding to an Apple */
|
||||
/* glyph name index. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* name_index :: The index of the Mac name. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* The glyph name, or 0 if the index is invalid. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This function will not be compiled if the configuration macro */
|
||||
/* FT_CONFIG_OPTION_POSTSCRIPT_NAMES is undefined. */
|
||||
/* */
|
||||
typedef const char* (*PS_Macintosh_Name_Func)( FT_UInt name_index );
|
||||
|
||||
|
||||
|
||||
typedef const char* (*PS_Adobe_Std_Strings_Func)( FT_UInt string_index );
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* <Struct>
|
||||
* PS_Unicodes
|
||||
*
|
||||
* <Description>
|
||||
* a simple table used to map Unicode values to glyph indices. It is
|
||||
* built by the PS_Build_Unicodes table according to the glyphs present
|
||||
* in a font file..
|
||||
*
|
||||
* <Fields>
|
||||
* num_codes :: number of glyphs in the font that match a given Unicode
|
||||
* value..
|
||||
*
|
||||
* unicodes :: array of unicode values, sorted in increasing order
|
||||
* gindex :: array of glyph indices, corresponding to each unicode
|
||||
*
|
||||
* <Note>
|
||||
* Use the function PS_Lookup_Unicode to retrieve the glyph index
|
||||
* corresponding to a given Unicode character code.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
typedef struct PS_UniMap_
|
||||
typedef struct PS_UniMap_
|
||||
{
|
||||
FT_UInt unicode;
|
||||
FT_UInt glyph_index;
|
||||
|
||||
} PS_UniMap;
|
||||
|
||||
typedef struct PS_Unicodes_
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* PS_Unicodes */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A simple table used to map Unicode values to glyph indices. It is */
|
||||
/* built by the PS_Build_Unicodes table according to the glyphs */
|
||||
/* present in a font file. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* num_codes :: The number of glyphs in the font that match a given */
|
||||
/* Unicode value. */
|
||||
/* */
|
||||
/* unicodes :: An array of unicode values, sorted in increasing */
|
||||
/* order. */
|
||||
/* */
|
||||
/* gindex :: An array of glyph indices, corresponding to each */
|
||||
/* Unicode value. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* Use the function PS_Lookup_Unicode() to retrieve the glyph index */
|
||||
/* corresponding to a given Unicode character code. */
|
||||
/* */
|
||||
typedef struct PS_Unicodes_
|
||||
{
|
||||
FT_UInt num_maps;
|
||||
PS_UniMap* maps;
|
||||
FT_UInt num_maps;
|
||||
PS_UniMap* maps;
|
||||
|
||||
} PS_Unicodes;
|
||||
|
||||
@ -151,49 +153,53 @@
|
||||
const char** glyph_names,
|
||||
PS_Unicodes* unicodes );
|
||||
|
||||
typedef FT_UInt (*PS_Lookup_Unicode_Func)( PS_Unicodes* unicodes,
|
||||
FT_UInt unicode );
|
||||
typedef FT_UInt (*PS_Lookup_Unicode_Func)( PS_Unicodes* unicodes,
|
||||
FT_UInt unicode );
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* <Struct>
|
||||
* PSNames_Interface
|
||||
*
|
||||
* <Description>
|
||||
* this structure holds pointers to the functions used to load and
|
||||
* free the basic tables that are required in a `sfnt' font file.
|
||||
*
|
||||
* <Fields>
|
||||
* unicode_value :: a function used to convert a glyph name into
|
||||
* a Unicode character code
|
||||
*
|
||||
* unicode_index :: a function used to return the glyph index
|
||||
* corresponding to a given Unicode character
|
||||
*
|
||||
* macintosh_name :: a function used to return the standard Apple
|
||||
* glyph Postscript name corresponding to a given
|
||||
* string index (used by the TrueType "post" table)
|
||||
*
|
||||
* adobe_std_strings :: a function that returns a pointer to a given
|
||||
* Adobe Standard Strings given a SID
|
||||
*
|
||||
* adobe_std_encoding :: a table of 256 unsigned shorts that maps
|
||||
* character codes in the Adobe Standard Encoding
|
||||
* to SIDs
|
||||
*
|
||||
* adobe_expert_encoding :: a table of 256 unsigned shorts that maps
|
||||
* character codes in the Adobe Expert Encoding
|
||||
* to SIDs.
|
||||
*
|
||||
* <Note>
|
||||
* The 'unicode_value' and 'unicode_index' will be set to 0 if the
|
||||
* configuration macro FT_CONFIG_OPTION_ADOBE_GLYPH_LIST is undefined
|
||||
*
|
||||
* The 'macintosh_name' will be set to 0 if the configuration macro
|
||||
* FT_CONFIG_OPTION_POSTSCRIPT_NAMES is undefined
|
||||
*
|
||||
*************************************************************************/
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* PSNames_Interface */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This structure defines the PSNames interface. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* unicode_value :: A function used to convert a glyph name */
|
||||
/* into a Unicode character code. */
|
||||
/* */
|
||||
/* build_unicodes :: A function which builds up the Unicode */
|
||||
/* mapping table. */
|
||||
/* */
|
||||
/* lookup_unicode :: A function used to return the glyph index */
|
||||
/* corresponding to a given Unicode */
|
||||
/* character. */
|
||||
/* */
|
||||
/* macintosh_name :: A function used to return the standard */
|
||||
/* Apple glyph Postscript name corresponding */
|
||||
/* to a given string index (used by the */
|
||||
/* TrueType `post' table). */
|
||||
/* */
|
||||
/* adobe_std_strings :: A function that returns a pointer to a */
|
||||
/* Adobe Standard String for a given SID. */
|
||||
/* */
|
||||
/* adobe_std_encoding :: A table of 256 unsigned shorts that maps */
|
||||
/* character codes in the Adobe Standard */
|
||||
/* Encoding to SIDs. */
|
||||
/* */
|
||||
/* adobe_expert_encoding :: A table of 256 unsigned shorts that maps */
|
||||
/* character codes in the Adobe Expert */
|
||||
/* Encoding to SIDs. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* `unicode_value' and `unicode_index' will be set to 0 if the */
|
||||
/* configuration macro FT_CONFIG_OPTION_ADOBE_GLYPH_LIST is */
|
||||
/* undefined. */
|
||||
/* */
|
||||
/* `macintosh_name' will be set to 0 if the configuration macro */
|
||||
/* FT_CONFIG_OPTION_POSTSCRIPT_NAMES is undefined. */
|
||||
/* */
|
||||
typedef struct PSNames_Interface_
|
||||
{
|
||||
PS_Unicode_Value_Func unicode_value;
|
||||
@ -207,8 +213,8 @@
|
||||
|
||||
} PSNames_Interface;
|
||||
|
||||
|
||||
#endif /* PSNAMES_H */
|
||||
|
||||
|
||||
|
||||
/* END */
|
||||
|
@ -19,6 +19,7 @@
|
||||
#ifndef SFNT_H
|
||||
#define SFNT_H
|
||||
|
||||
|
||||
#include <freetype/freetype.h>
|
||||
#include <freetype/internal/ftdriver.h>
|
||||
#include <freetype/internal/tttypes.h>
|
||||
@ -30,28 +31,34 @@
|
||||
/* TT_Init_Face_Func */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* First part of the SFNT face object initialisation. This will */
|
||||
/* find the face in a SFNT file or collection, and load its */
|
||||
/* format tag in face->format_tag. */
|
||||
/* First part of the SFNT face object initialization. This will find */
|
||||
/* the face in a SFNT file or collection, and load its format tag in */
|
||||
/* face->format_tag. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* stream :: The input stream. */
|
||||
/* */
|
||||
/* face :: A handle to the target face object. */
|
||||
/* faceIndex :: The index of the TrueType font, if we're opening a */
|
||||
/* */
|
||||
/* face_index :: The index of the TrueType font, if we are opening a */
|
||||
/* collection. */
|
||||
/* num_params :: number of additional parameters */
|
||||
/* params :: optional additional parameters */
|
||||
/* */
|
||||
/* num_params :: The number of additional parameters. */
|
||||
/* */
|
||||
/* params :: Optional additional parameters. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The stream cursor must be at the font file's origin */
|
||||
/* This function recognizes fonts embedded in a "TrueType collection" */
|
||||
/* The stream cursor must be at the font file's origin. */
|
||||
/* */
|
||||
/* This function recognizes fonts embedded in a `TrueType */
|
||||
/* collection'. */
|
||||
/* */
|
||||
/* Once the format tag has been validated by the font driver, it */
|
||||
/* should then call the TT_Load_Face_Func callback to read the rest */
|
||||
/* of the SFNT tables in the object.. */
|
||||
/* should then call the TT_Load_Face_Func() callback to read the rest */
|
||||
/* of the SFNT tables in the object. */
|
||||
/* */
|
||||
typedef
|
||||
FT_Error (*TT_Init_Face_Func)( FT_Stream stream,
|
||||
@ -60,29 +67,34 @@
|
||||
FT_Int num_params,
|
||||
FT_Parameter* params );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
/* TT_Load_Face_Func */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Second part of the SFNT face object initialisation. This will */
|
||||
/* load the common SFNT tables (head, OS/2, maxp, metrics, etc..) */
|
||||
/* in the face object.. */
|
||||
/* Second part of the SFNT face object initialization. This will */
|
||||
/* load the common SFNT tables (head, OS/2, maxp, metrics, etc.) in */
|
||||
/* the face object. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* stream :: The input stream. */
|
||||
/* */
|
||||
/* face :: A handle to the target face object. */
|
||||
/* faceIndex :: The index of the TrueType font, if we're opening a */
|
||||
/* */
|
||||
/* face_index :: The index of the TrueType font, if we are opening a */
|
||||
/* collection. */
|
||||
/* num_params :: number of additional parameters */
|
||||
/* params :: optional additional parameters */
|
||||
/* */
|
||||
/* num_params :: The number of additional parameters. */
|
||||
/* */
|
||||
/* params :: Optional additional parameters. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This function must be called after TT_Init_Face_Func */
|
||||
/* This function must be called after TT_Init_Face_Func(). */
|
||||
/* */
|
||||
typedef
|
||||
FT_Error (*TT_Load_Face_Func)( FT_Stream stream,
|
||||
@ -91,6 +103,7 @@
|
||||
FT_Int num_params,
|
||||
FT_Parameter* params );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
@ -100,13 +113,13 @@
|
||||
/* A callback used to delete the common SFNT data from a face. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the target face object. */
|
||||
/* face :: A handle to the target face object. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This function does NOT destroy the face object.. */
|
||||
/* This function does NOT destroy the face object. */
|
||||
/* */
|
||||
typedef
|
||||
void (*TT_Done_Face_Func)( TT_Face face );
|
||||
void (*TT_Done_Face_Func)( TT_Face face );
|
||||
|
||||
|
||||
typedef
|
||||
@ -117,33 +130,40 @@
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
/* TT_Load_SFNT_Header */
|
||||
/* TT_Load_SFNT_Header_Func */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Loads the header of a SFNT font file. Supports collections.. */
|
||||
/* Loads the header of a SFNT font file. Supports collections. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the target face object. */
|
||||
/* stream :: The input stream. */
|
||||
/* face :: A handle to the target face object. */
|
||||
/* */
|
||||
/* stream :: The input stream. */
|
||||
/* */
|
||||
/* face_index :: The index of the TrueType font, if we are opening a */
|
||||
/* collection. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* sfnt :: the sfnt header */
|
||||
/* sfnt :: The SFNT header. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* TrueType error code. 0 means success. */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The stream cursor must be at the font file's origin */
|
||||
/* This function recognizes fonts embedded in a "TrueType collection" */
|
||||
/* The stream cursor must be at the font file's origin. */
|
||||
/* */
|
||||
/* This function recognizes fonts embedded in a `TrueType */
|
||||
/* collection'. */
|
||||
/* */
|
||||
/* This function checks that the header is valid by looking at the */
|
||||
/* values of "search_range", "entry_selector" and "range_shift".. */
|
||||
/* values of `search_range', `entry_selector', and `range_shift'. */
|
||||
/* */
|
||||
typedef
|
||||
FT_Error (*TT_Load_SFNT_Header_Func)( TT_Face face,
|
||||
FT_Stream stream,
|
||||
FT_Long faceIndex,
|
||||
SFNT_Header* sfnt );
|
||||
FT_Error (*TT_Load_SFNT_Header_Func)( TT_Face face,
|
||||
FT_Stream stream,
|
||||
FT_Long face_index,
|
||||
SFNT_Header* sfnt );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
@ -155,16 +175,18 @@
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the target face object. */
|
||||
/* */
|
||||
/* stream :: The input stream. */
|
||||
/* sfnt :: sfnt header */
|
||||
/* */
|
||||
/* sfnt :: The SFNT header. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* TrueType error code. 0 means success. */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The stream cursor must be on the first byte after the 4-byte */
|
||||
/* font format tag. This is the case just after a call to */
|
||||
/* TT_Load_Format_Tag */
|
||||
/* The stream cursor must be on the first byte after the 4-byte font */
|
||||
/* format tag. This is the case just after a call to */
|
||||
/* TT_Load_Format_Tag(). */
|
||||
/* */
|
||||
typedef
|
||||
FT_Error (*TT_Load_Directory_Func)( TT_Face face,
|
||||
@ -178,13 +200,12 @@
|
||||
/* TT_Load_Any_Func */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Loads any font table into client memory. Used by the */
|
||||
/* TT_Get_Font_Data() API function. */
|
||||
/* Loads any font table into client memory. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: The face object to look for. */
|
||||
/* */
|
||||
/* tag :: The tag of table to load. Use the value 0 if you want */
|
||||
/* tag :: The tag of table to load. Use the value 0 if you want */
|
||||
/* to access the whole font file, else set this parameter */
|
||||
/* to a valid TrueType table tag that you can forge with */
|
||||
/* the MAKE_TT_TAG macro. */
|
||||
@ -243,10 +264,11 @@
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* map :: The target pixmap. */
|
||||
/* */
|
||||
/* metrics :: A big sbit metrics structure for the glyph image. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* TrueType error code. 0 means success. Returns an error if no */
|
||||
/* FreeType error code. 0 means success. Returns an error if no */
|
||||
/* glyph sbit exists for the index. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
@ -262,6 +284,7 @@
|
||||
FT_Bitmap* map,
|
||||
TT_SBit_Metrics* metrics );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
@ -279,29 +302,31 @@
|
||||
/* You must not modify the returned string! */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* TrueType error code. 0 means success. */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
typedef
|
||||
FT_Error (*TT_Get_PS_Name_Func)( TT_Face face,
|
||||
FT_UInt index,
|
||||
FT_String** PSname );
|
||||
FT_Error (*TT_Get_PS_Name_Func)( TT_Face face,
|
||||
FT_UInt index,
|
||||
FT_String** PSname );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
/* TT_Load_Metrics */
|
||||
/* TT_Load_Metrics_Func */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Loads the horizontal or vertical header in a face object. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the target face object. */
|
||||
/* */
|
||||
/* stream :: The input stream. */
|
||||
/* */
|
||||
/* vertical :: A boolean flag. If set, load vertical metrics. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* TrueType error code. 0 means success. */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
typedef
|
||||
FT_Error (*TT_Load_Metrics_Func)( TT_Face face,
|
||||
@ -309,7 +334,6 @@
|
||||
FT_Bool vertical );
|
||||
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
@ -320,13 +344,14 @@
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the parent face object. */
|
||||
/* */
|
||||
/* stream :: A handle to the current stream object. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* cmap :: A pointer to a cmap object. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* Error code. 0 means success. */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The function assumes that the stream is already in use (i.e., */
|
||||
@ -349,10 +374,11 @@
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the parent face object. */
|
||||
/* */
|
||||
/* cmap :: A handle to a cmap object. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* Error code. 0 means success. */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
typedef
|
||||
FT_Error (*TT_CharMap_Free_Func)( TT_Face face,
|
||||
@ -362,21 +388,22 @@
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
/* TT_Load_Table */
|
||||
/* TT_Load_Table_Func */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Loads a given TrueType table. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the target face object. */
|
||||
/* */
|
||||
/* stream :: The input stream. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* TrueType error code. 0 means success. */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The function will use `face->goto_table' to seek the stream to */
|
||||
/* the start of the table */
|
||||
/* the start of the table. */
|
||||
/* */
|
||||
typedef
|
||||
FT_Error (*TT_Load_Table_Func)( TT_Face face,
|
||||
@ -386,93 +413,79 @@
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
/* TT_Load_Table */
|
||||
/* TT_Free_Table_Func */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Loads a given TrueType table. */
|
||||
/* Frees a given TrueType table. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the target face object. */
|
||||
/* stream :: The input stream. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* TrueType error code. 0 means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The function will use `face->goto_table' to seek the stream to */
|
||||
/* the start of the table */
|
||||
/* face :: A handle to the target face object. */
|
||||
/* */
|
||||
typedef
|
||||
void (*TT_Free_Table_Func)( TT_Face face );
|
||||
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* SFNT_Interface */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* this structure holds pointers to the functions used to load and */
|
||||
/* This structure holds pointers to the functions used to load and */
|
||||
/* free the basic tables that are required in a `sfnt' font file. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* Check the various xxx_Func() descriptions for details. */
|
||||
/* */
|
||||
typedef struct SFNT_Interface_
|
||||
{
|
||||
TT_Goto_Table_Func goto_table;
|
||||
TT_Goto_Table_Func goto_table;
|
||||
|
||||
TT_Init_Face_Func init_face;
|
||||
TT_Load_Face_Func load_face;
|
||||
TT_Done_Face_Func done_face;
|
||||
SFNT_Get_Interface_Func get_interface;
|
||||
TT_Init_Face_Func init_face;
|
||||
TT_Load_Face_Func load_face;
|
||||
TT_Done_Face_Func done_face;
|
||||
SFNT_Get_Interface_Func get_interface;
|
||||
|
||||
TT_Load_Any_Func load_any;
|
||||
TT_Load_SFNT_Header_Func load_sfnt_header;
|
||||
TT_Load_Directory_Func load_directory;
|
||||
TT_Load_Any_Func load_any;
|
||||
TT_Load_SFNT_Header_Func load_sfnt_header;
|
||||
TT_Load_Directory_Func load_directory;
|
||||
|
||||
/* these functions are called by "load_face" but they can also */
|
||||
/* be called from external modules, if there is a need to */
|
||||
TT_Load_Table_Func load_header;
|
||||
TT_Load_Metrics_Func load_metrics;
|
||||
TT_Load_Table_Func load_charmaps;
|
||||
TT_Load_Table_Func load_max_profile;
|
||||
TT_Load_Table_Func load_os2;
|
||||
TT_Load_Table_Func load_psnames;
|
||||
/* these functions are called by `load_face' but they can also */
|
||||
/* be called from external modules, if there is a need to do so */
|
||||
TT_Load_Table_Func load_header;
|
||||
TT_Load_Metrics_Func load_metrics;
|
||||
TT_Load_Table_Func load_charmaps;
|
||||
TT_Load_Table_Func load_max_profile;
|
||||
TT_Load_Table_Func load_os2;
|
||||
TT_Load_Table_Func load_psnames;
|
||||
|
||||
TT_Load_Table_Func load_names;
|
||||
TT_Free_Table_Func free_names;
|
||||
TT_Load_Table_Func load_names;
|
||||
TT_Free_Table_Func free_names;
|
||||
|
||||
/* optional tables */
|
||||
TT_Load_Table_Func load_hdmx;
|
||||
TT_Free_Table_Func free_hdmx;
|
||||
TT_Load_Table_Func load_hdmx;
|
||||
TT_Free_Table_Func free_hdmx;
|
||||
|
||||
TT_Load_Table_Func load_kerning;
|
||||
TT_Load_Table_Func load_gasp;
|
||||
TT_Load_Table_Func load_pclt;
|
||||
TT_Load_Table_Func load_kerning;
|
||||
TT_Load_Table_Func load_gasp;
|
||||
TT_Load_Table_Func load_pclt;
|
||||
|
||||
/* see `ttsbit.h' */
|
||||
TT_Load_Table_Func load_sbits;
|
||||
TT_Load_SBit_Image_Func load_sbit_image;
|
||||
TT_Free_Table_Func free_sbits;
|
||||
TT_Load_Table_Func load_sbits;
|
||||
TT_Load_SBit_Image_Func load_sbit_image;
|
||||
TT_Free_Table_Func free_sbits;
|
||||
|
||||
/* see `ttpost.h' */
|
||||
TT_Get_PS_Name_Func get_psname;
|
||||
TT_Free_Table_Func free_psnames;
|
||||
TT_Get_PS_Name_Func get_psname;
|
||||
TT_Free_Table_Func free_psnames;
|
||||
|
||||
/* see `ttcmap.h' */
|
||||
TT_CharMap_Load_Func load_charmap;
|
||||
TT_CharMap_Free_Func free_charmap;
|
||||
TT_CharMap_Load_Func load_charmap;
|
||||
TT_CharMap_Free_Func free_charmap;
|
||||
|
||||
} SFNT_Interface;
|
||||
|
||||
|
||||
#endif /* SFNT_H */
|
||||
|
||||
|
||||
|
@ -1,63 +1,67 @@
|
||||
/*******************************************************************
|
||||
*
|
||||
* t1errors.h
|
||||
*
|
||||
* Type1 Error ID definitions
|
||||
*
|
||||
* Copyright 1996-1998 by
|
||||
* 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.
|
||||
*
|
||||
******************************************************************/
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* t1errors.h */
|
||||
/* */
|
||||
/* Type 1 error ID definitions (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2000 by */
|
||||
/* 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. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef T1ERRORS_H
|
||||
#define T1ERRORS_H
|
||||
|
||||
|
||||
/************************ error codes declaration **************/
|
||||
|
||||
/* The error codes are grouped in 'classes' used to indicate the */
|
||||
/* 'level' at which the error happened. */
|
||||
/* The class is given by an error code's high byte. */
|
||||
/* The error codes are grouped into `classes' used to indicate the */
|
||||
/* `level' at which the error happened. */
|
||||
/* */
|
||||
/* The class is given by an error code's high byte. */
|
||||
|
||||
|
||||
/* ------------- Success is always 0 -------- */
|
||||
/* ------------- Success is always 0 -------- */
|
||||
|
||||
#define T1_Err_Ok FT_Err_Ok
|
||||
#define T1_Err_Ok FT_Err_Ok
|
||||
|
||||
/* ----------- high level API errors -------- */
|
||||
/* ----------- high level API errors -------- */
|
||||
|
||||
#define T1_Err_Invalid_File_Format FT_Err_Invalid_File_Format
|
||||
#define T1_Err_Invalid_Argument FT_Err_Invalid_Argument
|
||||
#define T1_Err_Invalid_Driver_Handle FT_Err_Invalid_Driver_Handle
|
||||
#define T1_Err_Invalid_Face_Handle FT_Err_Invalid_Face_Handle
|
||||
#define T1_Err_Invalid_Size_Handle FT_Err_Invalid_Size_Handle
|
||||
#define T1_Err_Invalid_Glyph_Handle FT_Err_Invalid_Slot_Handle
|
||||
#define T1_Err_Invalid_CharMap_Handle FT_Err_Invalid_CharMap_Handle
|
||||
#define T1_Err_Invalid_Glyph_Index FT_Err_Invalid_Glyph_Index
|
||||
#define T1_Err_Invalid_File_Format FT_Err_Invalid_File_Format
|
||||
#define T1_Err_Invalid_Argument FT_Err_Invalid_Argument
|
||||
#define T1_Err_Invalid_Driver_Handle FT_Err_Invalid_Driver_Handle
|
||||
#define T1_Err_Invalid_Face_Handle FT_Err_Invalid_Face_Handle
|
||||
#define T1_Err_Invalid_Size_Handle FT_Err_Invalid_Size_Handle
|
||||
#define T1_Err_Invalid_Glyph_Handle FT_Err_Invalid_Slot_Handle
|
||||
#define T1_Err_Invalid_CharMap_Handle FT_Err_Invalid_CharMap_Handle
|
||||
#define T1_Err_Invalid_Glyph_Index FT_Err_Invalid_Glyph_Index
|
||||
|
||||
#define T1_Err_Unimplemented_Feature FT_Err_Unimplemented_Feature
|
||||
#define T1_Err_Unimplemented_Feature FT_Err_Unimplemented_Feature
|
||||
|
||||
#define T1_Err_Invalid_Engine FT_Err_Invalid_Driver_Handle
|
||||
#define T1_Err_Invalid_Engine FT_Err_Invalid_Driver_Handle
|
||||
|
||||
/* ------------- internal errors ------------ */
|
||||
/* ------------- internal errors ------------ */
|
||||
|
||||
#define T1_Err_Out_Of_Memory FT_Err_Out_Of_Memory
|
||||
#define T1_Err_Unlisted_Object FT_Err_Unlisted_Object
|
||||
#define T1_Err_Out_Of_Memory FT_Err_Out_Of_Memory
|
||||
#define T1_Err_Unlisted_Object FT_Err_Unlisted_Object
|
||||
|
||||
/* ------------ general glyph outline errors ------ */
|
||||
/* ------------ general glyph outline errors ------ */
|
||||
|
||||
#define T1_Err_Invalid_Composite FT_Err_Invalid_Composite
|
||||
#define T1_Err_Invalid_Composite FT_Err_Invalid_Composite
|
||||
|
||||
#define T1_Err_Syntax_Error FT_Err_Invalid_File_Format
|
||||
#define T1_Err_Stack_Underflow FT_Err_Invalid_File_Format
|
||||
#define T1_Err_Stack_Overflow FT_Err_Invalid_File_Format
|
||||
#define T1_Err_Syntax_Error FT_Err_Invalid_File_Format
|
||||
#define T1_Err_Stack_Underflow FT_Err_Invalid_File_Format
|
||||
#define T1_Err_Stack_Overflow FT_Err_Invalid_File_Format
|
||||
|
||||
#endif /* TDERRORS_H */
|
||||
|
||||
#endif /* T1ERRORS_H */
|
||||
|
||||
|
||||
/* END */
|
||||
|
@ -1,72 +1,76 @@
|
||||
/*******************************************************************
|
||||
*
|
||||
* t1types.h 1.0
|
||||
*
|
||||
* Basic Type1/Type2 type definitions and interface.
|
||||
*
|
||||
* This code is shared by the Type1 and Type2 drivers
|
||||
*
|
||||
*
|
||||
* Copyright 1996-2000 by
|
||||
* 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.
|
||||
*
|
||||
******************************************************************/
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* t1types.h */
|
||||
/* */
|
||||
/* Basic Type1/Type2 type definitions and interface (specification */
|
||||
/* only). */
|
||||
/* */
|
||||
/* Copyright 1996-2000 by */
|
||||
/* 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. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef T1TYPES_H
|
||||
#define T1TYPES_H
|
||||
|
||||
|
||||
#include <freetype/t1tables.h>
|
||||
#include <freetype/internal/psnames.h>
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*** ***/
|
||||
/*** ***/
|
||||
/*** REQUIRED TYPE1/TYPE2 TABLES DEFINITIONS ***/
|
||||
/*** ***/
|
||||
/*** ***/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*** ***/
|
||||
/*** ***/
|
||||
/*** REQUIRED TYPE1/TYPE2 TABLES DEFINITIONS ***/
|
||||
/*** ***/
|
||||
/*** ***/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
/***********************************************************************/
|
||||
/* */
|
||||
/* <Struct> T1_Encoding */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure modeling a custom encoding */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* num_chars :: number of char codes in encoding. Usually 256 */
|
||||
/* code_first :: lower char code in encoding */
|
||||
/* code_last :: higher char code in encoding */
|
||||
/* */
|
||||
/* char_code :: array of character codes */
|
||||
/* char_index :: array of correpsonding glyph indices */
|
||||
/* char_name :: array of correpsonding glyph names */
|
||||
/* */
|
||||
typedef struct T1_Encoding_
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* T1_Encoding */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure modeling a custom encoding */
|
||||
/* */
|
||||
/* <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_Encoding_
|
||||
{
|
||||
FT_Int num_chars;
|
||||
FT_Int code_first;
|
||||
FT_Int code_last;
|
||||
FT_Int num_chars;
|
||||
FT_Int code_first;
|
||||
FT_Int code_last;
|
||||
|
||||
FT_UShort* char_index;
|
||||
FT_String** char_name;
|
||||
FT_UShort* char_index;
|
||||
FT_String** char_name;
|
||||
|
||||
} T1_Encoding;
|
||||
|
||||
|
||||
typedef enum T1_EncodingType_
|
||||
typedef enum T1_EncodingType_
|
||||
{
|
||||
t1_encoding_none = 0,
|
||||
t1_encoding_array,
|
||||
@ -76,46 +80,46 @@
|
||||
} T1_EncodingType;
|
||||
|
||||
|
||||
typedef struct T1_Font_
|
||||
typedef struct T1_Font_
|
||||
{
|
||||
|
||||
/* font info dictionary */
|
||||
T1_FontInfo font_info;
|
||||
/* font info dictionary */
|
||||
T1_FontInfo font_info;
|
||||
|
||||
/* private dictionary */
|
||||
T1_Private private_dict;
|
||||
/* private dictionary */
|
||||
T1_Private private_dict;
|
||||
|
||||
/* top-level dictionary */
|
||||
FT_String* font_name;
|
||||
/* top-level dictionary */
|
||||
FT_String* font_name;
|
||||
|
||||
T1_EncodingType encoding_type;
|
||||
T1_Encoding encoding;
|
||||
|
||||
FT_Byte* subrs_block;
|
||||
FT_Byte* charstrings_block;
|
||||
FT_Byte* glyph_names_block;
|
||||
FT_Byte* subrs_block;
|
||||
FT_Byte* charstrings_block;
|
||||
FT_Byte* glyph_names_block;
|
||||
|
||||
FT_Int num_subrs;
|
||||
FT_Byte** subrs;
|
||||
FT_Int* subrs_len;
|
||||
FT_Int num_subrs;
|
||||
FT_Byte** subrs;
|
||||
FT_Int* subrs_len;
|
||||
|
||||
FT_Int num_glyphs;
|
||||
FT_String** glyph_names; /* array of glyph names */
|
||||
FT_Byte** charstrings; /* array of glyph charstrings */
|
||||
FT_Int* charstrings_len;
|
||||
FT_Int num_glyphs;
|
||||
FT_String** glyph_names; /* array of glyph names */
|
||||
FT_Byte** charstrings; /* array of glyph charstrings */
|
||||
FT_Int* charstrings_len;
|
||||
|
||||
FT_Byte paint_type;
|
||||
FT_Byte font_type;
|
||||
FT_Matrix font_matrix;
|
||||
FT_BBox font_bbox;
|
||||
FT_Long font_id;
|
||||
FT_Byte paint_type;
|
||||
FT_Byte font_type;
|
||||
FT_Matrix font_matrix;
|
||||
FT_BBox font_bbox;
|
||||
FT_Long font_id;
|
||||
|
||||
FT_Int stroke_width;
|
||||
FT_Int stroke_width;
|
||||
|
||||
} T1_Font;
|
||||
|
||||
|
||||
typedef struct CID_Subrs_
|
||||
typedef struct CID_Subrs_
|
||||
{
|
||||
FT_UInt num_subrs;
|
||||
FT_Byte** code;
|
||||
@ -123,65 +127,57 @@
|
||||
} CID_Subrs;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*** ***/
|
||||
/*** ***/
|
||||
/*** ORIGINAL T1_FACE CLASS DEFINITION ***/
|
||||
/*** ***/
|
||||
/*** ***/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*** ***/
|
||||
/*** ***/
|
||||
/*** This structure/class is defined here because it is common ***/
|
||||
/*** to the following formats : TTF, OpenType-TT and OpenType-CFF ***/
|
||||
/*** ***/
|
||||
/*** Note however that the classes TT_Size, TT_GlyphSlot and ***/
|
||||
/*** TT_CharMap are not shared between font drivers, and are ***/
|
||||
/*** thus defined normally in "drivers/truetype/ttobjs.h" ***/
|
||||
/*** ***/
|
||||
/*** ***/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*** ***/
|
||||
/*** ***/
|
||||
/*** ORIGINAL T1_FACE CLASS DEFINITION ***/
|
||||
/*** ***/
|
||||
/*** ***/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* This structure/class is defined here because it is common to the */
|
||||
/* following formats: TTF, OpenType-TT, and OpenType-CFF. */
|
||||
/* */
|
||||
/* Note, however, that the classes TT_Size, TT_GlyphSlot, and TT_CharMap */
|
||||
/* are not shared between font drivers, and are thus defined normally in */
|
||||
/* `ttobjs.h'. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
typedef struct T1_FaceRec_* T1_Face;
|
||||
typedef struct CID_FaceRec_* CID_Face;
|
||||
|
||||
/***************************************************/
|
||||
/* */
|
||||
/* T1_Face : */
|
||||
/* */
|
||||
/* Type1 face record.. */
|
||||
/* */
|
||||
|
||||
typedef struct T1_FaceRec_
|
||||
typedef struct T1_FaceRec_
|
||||
{
|
||||
FT_FaceRec root;
|
||||
T1_Font type1;
|
||||
void* psnames;
|
||||
void* afm_data;
|
||||
FT_CharMapRec charmaprecs[2];
|
||||
FT_CharMap charmaps[2];
|
||||
PS_Unicodes unicode_map;
|
||||
FT_FaceRec root;
|
||||
T1_Font type1;
|
||||
void* psnames;
|
||||
void* afm_data;
|
||||
FT_CharMapRec charmaprecs[2];
|
||||
FT_CharMap charmaps[2];
|
||||
PS_Unicodes unicode_map;
|
||||
|
||||
/* support for multiple masters */
|
||||
T1_Blend* blend;
|
||||
/* support for Multiple Masters fonts */
|
||||
T1_Blend* blend;
|
||||
|
||||
} T1_FaceRec;
|
||||
|
||||
|
||||
typedef struct CID_FaceRec_
|
||||
typedef struct CID_FaceRec_
|
||||
{
|
||||
FT_FaceRec root;
|
||||
void* psnames;
|
||||
CID_Info cid;
|
||||
void* afm_data;
|
||||
CID_Subrs* subrs;
|
||||
FT_FaceRec root;
|
||||
void* psnames;
|
||||
CID_Info cid;
|
||||
void* afm_data;
|
||||
CID_Subrs* subrs;
|
||||
|
||||
} CID_FaceRec;
|
||||
|
||||
|
@ -350,8 +350,7 @@
|
||||
/* TT_Load_Any */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Loads any font table into client memory. Used by the */
|
||||
/* TT_Get_Font_Data() API function. */
|
||||
/* Loads any font table into client memory. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: The face object to look for. */
|
||||
|
Loading…
Reference in New Issue
Block a user