19 #include FT_FREETYPE_H
20 #include FT_INTERNAL_POSTSCRIPT_AUX_H
45 typedef struct AFM_StreamRec_
62 #define AFM_IS_NEWLINE( ch ) ( (ch) == '\r' || (ch) == '\n' )
64 #define AFM_IS_EOF( ch ) ( (ch) == EOF || (ch) == '\x1a' )
65 #define AFM_IS_SPACE( ch ) ( (ch) == ' ' || (ch) == '\t' )
68 #define AFM_IS_SEP( ch ) ( (ch) == ';' )
71 ( ( (stream)->cursor < (stream)->limit ) ? *(stream)->cursor++ \
74 #define AFM_STREAM_KEY_BEGIN( stream ) \
75 (char*)( (stream)->cursor - 1 )
77 #define AFM_STREAM_KEY_LEN( stream, key ) \
78 ( (char*)(stream)->cursor - key - 1 )
80 #define AFM_STATUS_EOC( stream ) \
81 ( (stream)->status >= AFM_STREAM_STATUS_EOC )
83 #define AFM_STATUS_EOL( stream ) \
84 ( (stream)->status >= AFM_STREAM_STATUS_EOL )
86 #define AFM_STATUS_EOF( stream ) \
87 ( (stream)->status >= AFM_STREAM_STATUS_EOF )
288 "BlendDesignPositions",
340 "UnderlineThickness",
379 for ( i = 0; i <
n; i++ )
407 val->
u.
s[
len] =
'\0';
428 if ( parser->get_index )
429 val->
u.
i = parser->get_index( str, len, parser->user_data );
537 stream->cursor = stream->base = base;
538 stream->limit =
limit;
543 parser->memory = memory;
545 parser->FontInfo =
NULL;
546 parser->get_index =
NULL;
578 return PSaux_Err_Syntax_Error;
651 return PSaux_Err_Syntax_Error;
656 #define KERN_INDEX( g1, g2 ) ( ( (FT_ULong)g1 << 16 ) | g2 )
671 if ( index1 > index2 )
673 else if ( index1 < index2 )
738 kp->
y = shared_vals[2].
u.
i;
742 kp->
x = shared_vals[2].
u.
i;
744 ? shared_vals[3].
u.i : 0;
767 return PSaux_Err_Syntax_Error;
809 return PSaux_Err_Syntax_Error;
839 return PSaux_Err_Syntax_Error;
855 return PSaux_Err_Invalid_Argument;
858 if ( !key || len != 16 ||
859 ft_strncmp( key,
"StartFontMetrics", 16 ) != 0 )
860 return PSaux_Err_Unknown_File_Format;
873 if ( metrics_sets != 0 && metrics_sets != 2 )
875 error = PSaux_Err_Unimplemented_Feature;
static const char *const afm_key_table[N_AFM_TOKENS]
GLuint const GLfloat * val
#define AFM_STATUS_EOC(stream)
struct AFM_KernPairRec_ * AFM_KernPair
struct AFM_StreamRec_ * AFM_Stream
afm_parser_parse(AFM_Parser parser)
static char * afm_stream_read_one(AFM_Stream stream)
#define FT_QALLOC(ptr, size)
#define FT_QNEW_ARRAY(ptr, count)
#define KERN_INDEX(g1, g2)
static FT_Error afm_parse_kern_pairs(AFM_Parser parser)
GLboolean GLboolean GLboolean GLboolean a
#define AFM_IS_NEWLINE(ch)
#define AFM_STREAM_KEY_BEGIN(stream)
union AFM_ValueRec_::@39 u
afm_parser_next_key(AFM_Parser parser, FT_Bool line, FT_Offset *len)
afm_parser_done(AFM_Parser parser)
FT_BEGIN_HEADER typedef unsigned char FT_Bool
static FT_Error afm_parse_track_kern(AFM_Parser parser)
PS_Conv_ToFixed(FT_Byte **cursor, FT_Byte *limit, FT_Int power_ten)
#define AFM_STATUS_EOF(stream)
#define AFM_STATUS_EOL(stream)
static FT_Error afm_parse_kern_data(AFM_Parser parser)
static char * afm_stream_read_string(AFM_Stream stream)
#define FT_CALLBACK_DEF(x)
afm_compare_kern_pairs(const void *a, const void *b)
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
enum AFM_Token_ AFM_Token
afm_parser_read_int(AFM_Parser parser, FT_Int *aint)
afm_parser_init(AFM_Parser parser, FT_Memory memory, FT_Byte *base, FT_Byte *limit)
static AFM_Token afm_tokenize(const char *key, FT_Offset len)
static int afm_stream_skip_spaces(AFM_Stream stream)
GLdouble GLdouble GLdouble r
static FT_Error afm_parser_skip_section(AFM_Parser parser, FT_UInt n, AFM_Token end_section)
GLdouble GLdouble GLdouble b
struct AFM_StreamRec_ AFM_StreamRec
#define AFM_STREAM_KEY_LEN(stream, key)
PS_Conv_ToInt(FT_Byte **cursor, FT_Byte *limit)
#define AFM_MAX_ARGUMENTS
afm_parser_read_vals(AFM_Parser parser, AFM_Value vals, FT_UInt n)