#include <ft2build.h>
#include "afmparse.h"
#include "psconv.h"
#include "psauxerr.h"
Go to the source code of this file.
|
enum | { AFM_STREAM_STATUS_NORMAL
, AFM_STREAM_STATUS_EOC
, AFM_STREAM_STATUS_EOL
, AFM_STREAM_STATUS_EOF
} |
|
enum | AFM_Token_ {
AFM_TOKEN_ASCENDER
, AFM_TOKEN_AXISLABEL
, AFM_TOKEN_AXISTYPE
, AFM_TOKEN_B
,
AFM_TOKEN_BLENDAXISTYPES
, AFM_TOKEN_BLENDDESIGNMAP
, AFM_TOKEN_BLENDDESIGNPOSITIONS
, AFM_TOKEN_C
,
AFM_TOKEN_CC
, AFM_TOKEN_CH
, AFM_TOKEN_CAPHEIGHT
, AFM_TOKEN_CHARWIDTH
,
AFM_TOKEN_CHARACTERSET
, AFM_TOKEN_CHARACTERS
, AFM_TOKEN_DESCENDER
, AFM_TOKEN_ENCODINGSCHEME
,
AFM_TOKEN_ENDAXIS
, AFM_TOKEN_ENDCHARMETRICS
, AFM_TOKEN_ENDCOMPOSITES
, AFM_TOKEN_ENDDIRECTION
,
AFM_TOKEN_ENDFONTMETRICS
, AFM_TOKEN_ENDKERNDATA
, AFM_TOKEN_ENDKERNPAIRS
, AFM_TOKEN_ENDTRACKKERN
,
AFM_TOKEN_ESCCHAR
, AFM_TOKEN_FAMILYNAME
, AFM_TOKEN_FONTBBOX
, AFM_TOKEN_FONTNAME
,
AFM_TOKEN_FULLNAME
, AFM_TOKEN_ISBASEFONT
, AFM_TOKEN_ISCIDFONT
, AFM_TOKEN_ISFIXEDPITCH
,
AFM_TOKEN_ISFIXEDV
, AFM_TOKEN_ITALICANGLE
, AFM_TOKEN_KP
, AFM_TOKEN_KPH
,
AFM_TOKEN_KPX
, AFM_TOKEN_KPY
, AFM_TOKEN_L
, AFM_TOKEN_MAPPINGSCHEME
,
AFM_TOKEN_METRICSSETS
, AFM_TOKEN_N
, AFM_TOKEN_NOTICE
, AFM_TOKEN_PCC
,
AFM_TOKEN_STARTAXIS
, AFM_TOKEN_STARTCHARMETRICS
, AFM_TOKEN_STARTCOMPOSITES
, AFM_TOKEN_STARTDIRECTION
,
AFM_TOKEN_STARTFONTMETRICS
, AFM_TOKEN_STARTKERNDATA
, AFM_TOKEN_STARTKERNPAIRS
, AFM_TOKEN_STARTKERNPAIRS0
,
AFM_TOKEN_STARTKERNPAIRS1
, AFM_TOKEN_STARTTRACKKERN
, AFM_TOKEN_STDHW
, AFM_TOKEN_STDVW
,
AFM_TOKEN_TRACKKERN
, AFM_TOKEN_UNDERLINEPOSITION
, AFM_TOKEN_UNDERLINETHICKNESS
, AFM_TOKEN_VV
,
AFM_TOKEN_VVECTOR
, AFM_TOKEN_VERSION
, AFM_TOKEN_W
, AFM_TOKEN_W0
,
AFM_TOKEN_W0X
, AFM_TOKEN_W0Y
, AFM_TOKEN_W1
, AFM_TOKEN_W1X
,
AFM_TOKEN_W1Y
, AFM_TOKEN_WX
, AFM_TOKEN_WY
, AFM_TOKEN_WEIGHT
,
AFM_TOKEN_WEIGHTVECTOR
, AFM_TOKEN_XHEIGHT
, N_AFM_TOKENS
, AFM_TOKEN_UNKNOWN
} |
|
|
static int | afm_stream_skip_spaces (AFM_Stream stream) |
|
static char * | afm_stream_read_one (AFM_Stream stream) |
|
static char * | afm_stream_read_string (AFM_Stream stream) |
|
| afm_parser_read_vals (AFM_Parser parser, AFM_Value vals, FT_Int n) |
|
| afm_parser_next_key (AFM_Parser parser, FT_Bool line, FT_Offset *len) |
|
static AFM_Token | afm_tokenize (const char *key, FT_Offset len) |
|
| afm_parser_init (AFM_Parser parser, FT_Memory memory, FT_Byte *base, FT_Byte *limit) |
|
| afm_parser_done (AFM_Parser parser) |
|
static FT_Error | afm_parser_read_int (AFM_Parser parser, FT_Int *aint) |
|
static FT_Error | afm_parse_track_kern (AFM_Parser parser) |
|
| afm_compare_kern_pairs (const void *a, const void *b) |
|
static FT_Error | afm_parse_kern_pairs (AFM_Parser parser) |
|
static FT_Error | afm_parse_kern_data (AFM_Parser parser) |
|
static FT_Error | afm_parser_skip_section (AFM_Parser parser, FT_Int n, AFM_Token end_section) |
|
| afm_parser_parse (AFM_Parser parser) |
|
◆ AFM_GETC
◆ AFM_IS_EOF
#define AFM_IS_EOF |
( |
|
ch | ) |
( (ch) == EOF || (ch) == '\x1a' ) |
◆ AFM_IS_NEWLINE
#define AFM_IS_NEWLINE |
( |
|
ch | ) |
( (ch) == '\r' || (ch) == '\n' ) |
◆ AFM_IS_SEP
#define AFM_IS_SEP |
( |
|
ch | ) |
( (ch) == ';' ) |
◆ AFM_IS_SPACE
#define AFM_IS_SPACE |
( |
|
ch | ) |
( (ch) == ' ' || (ch) == '\t' ) |
◆ AFM_STATUS_EOC
◆ AFM_STATUS_EOF
◆ AFM_STATUS_EOL
◆ AFM_STREAM_KEY_BEGIN
◆ AFM_STREAM_KEY_LEN
◆ EOF
◆ KERN_INDEX
◆ AFM_StreamRec
◆ AFM_Token
◆ anonymous enum
Enumerator |
---|
AFM_STREAM_STATUS_NORMAL | |
AFM_STREAM_STATUS_EOC | |
AFM_STREAM_STATUS_EOL | |
AFM_STREAM_STATUS_EOF | |
Definition at line 39 of file afmparse.c.
40 {
45 };
@ AFM_STREAM_STATUS_NORMAL
◆ AFM_Token_
Enumerator |
---|
AFM_TOKEN_ASCENDER | |
AFM_TOKEN_AXISLABEL | |
AFM_TOKEN_AXISTYPE | |
AFM_TOKEN_B | |
AFM_TOKEN_BLENDAXISTYPES | |
AFM_TOKEN_BLENDDESIGNMAP | |
AFM_TOKEN_BLENDDESIGNPOSITIONS | |
AFM_TOKEN_C | |
AFM_TOKEN_CC | |
AFM_TOKEN_CH | |
AFM_TOKEN_CAPHEIGHT | |
AFM_TOKEN_CHARWIDTH | |
AFM_TOKEN_CHARACTERSET | |
AFM_TOKEN_CHARACTERS | |
AFM_TOKEN_DESCENDER | |
AFM_TOKEN_ENCODINGSCHEME | |
AFM_TOKEN_ENDAXIS | |
AFM_TOKEN_ENDCHARMETRICS | |
AFM_TOKEN_ENDCOMPOSITES | |
AFM_TOKEN_ENDDIRECTION | |
AFM_TOKEN_ENDFONTMETRICS | |
AFM_TOKEN_ENDKERNDATA | |
AFM_TOKEN_ENDKERNPAIRS | |
AFM_TOKEN_ENDTRACKKERN | |
AFM_TOKEN_ESCCHAR | |
AFM_TOKEN_FAMILYNAME | |
AFM_TOKEN_FONTBBOX | |
AFM_TOKEN_FONTNAME | |
AFM_TOKEN_FULLNAME | |
AFM_TOKEN_ISBASEFONT | |
AFM_TOKEN_ISCIDFONT | |
AFM_TOKEN_ISFIXEDPITCH | |
AFM_TOKEN_ISFIXEDV | |
AFM_TOKEN_ITALICANGLE | |
AFM_TOKEN_KP | |
AFM_TOKEN_KPH | |
AFM_TOKEN_KPX | |
AFM_TOKEN_KPY | |
AFM_TOKEN_L | |
AFM_TOKEN_MAPPINGSCHEME | |
AFM_TOKEN_METRICSSETS | |
AFM_TOKEN_N | |
AFM_TOKEN_NOTICE | |
AFM_TOKEN_PCC | |
AFM_TOKEN_STARTAXIS | |
AFM_TOKEN_STARTCHARMETRICS | |
AFM_TOKEN_STARTCOMPOSITES | |
AFM_TOKEN_STARTDIRECTION | |
AFM_TOKEN_STARTFONTMETRICS | |
AFM_TOKEN_STARTKERNDATA | |
AFM_TOKEN_STARTKERNPAIRS | |
AFM_TOKEN_STARTKERNPAIRS0 | |
AFM_TOKEN_STARTKERNPAIRS1 | |
AFM_TOKEN_STARTTRACKKERN | |
AFM_TOKEN_STDHW | |
AFM_TOKEN_STDVW | |
AFM_TOKEN_TRACKKERN | |
AFM_TOKEN_UNDERLINEPOSITION | |
AFM_TOKEN_UNDERLINETHICKNESS | |
AFM_TOKEN_VV | |
AFM_TOKEN_VVECTOR | |
AFM_TOKEN_VERSION | |
AFM_TOKEN_W | |
AFM_TOKEN_W0 | |
AFM_TOKEN_W0X | |
AFM_TOKEN_W0Y | |
AFM_TOKEN_W1 | |
AFM_TOKEN_W1X | |
AFM_TOKEN_W1Y | |
AFM_TOKEN_WX | |
AFM_TOKEN_WY | |
AFM_TOKEN_WEIGHT | |
AFM_TOKEN_WEIGHTVECTOR | |
AFM_TOKEN_XHEIGHT | |
N_AFM_TOKENS | |
AFM_TOKEN_UNKNOWN | |
Definition at line 203 of file afmparse.c.
204 {
281
enum AFM_Token_ AFM_Token
@ AFM_TOKEN_UNDERLINEPOSITION
@ AFM_TOKEN_ENCODINGSCHEME
@ AFM_TOKEN_STARTTRACKKERN
@ AFM_TOKEN_STARTKERNDATA
@ AFM_TOKEN_ENDCOMPOSITES
@ AFM_TOKEN_BLENDAXISTYPES
@ AFM_TOKEN_STARTFONTMETRICS
@ AFM_TOKEN_STARTCOMPOSITES
@ AFM_TOKEN_UNDERLINETHICKNESS
@ AFM_TOKEN_STARTKERNPAIRS0
@ AFM_TOKEN_MAPPINGSCHEME
@ AFM_TOKEN_STARTCHARMETRICS
@ AFM_TOKEN_STARTKERNPAIRS
@ AFM_TOKEN_ENDCHARMETRICS
@ AFM_TOKEN_BLENDDESIGNPOSITIONS
@ AFM_TOKEN_STARTKERNPAIRS1
@ AFM_TOKEN_ENDFONTMETRICS
@ AFM_TOKEN_BLENDDESIGNMAP
@ AFM_TOKEN_STARTDIRECTION
◆ afm_compare_kern_pairs()
Definition at line 672 of file afmparse.c.
674 {
677
680
681
682 if ( index1 > index2 )
683 return 1;
684 else if ( index1 < index2 )
685 return -1;
686 else
687 return 0;
688 }
#define KERN_INDEX(g1, g2)
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
struct AFM_KernPairRec_ * AFM_KernPair
Referenced by afm_parse_kern_pairs().
◆ afm_parse_kern_data()
Definition at line 790 of file afmparse.c.
791 {
795
796
798 {
800 {
805 break;
806
812 break;
813
817
819 break;
820
821 default:
823 }
824 }
825
828 }
static FT_Error afm_parse_kern_pairs(AFM_Parser parser)
static FT_Error afm_parse_track_kern(AFM_Parser parser)
afm_parser_next_key(AFM_Parser parser, FT_Bool line, FT_Offset *len)
static AFM_Token afm_tokenize(const char *key, FT_Offset len)
Referenced by afm_parser_parse().
◆ afm_parse_kern_pairs()
Definition at line 692 of file afmparse.c.
693 {
700
701
704
705 if ( tmp < 0 )
707
709
711 {
714
715
718 }
719
721 {
723
724
726 {
730 {
733
734
736
739
741
749
750
751 kp->
index1 = shared_vals[0].
u.u;
752 kp->
index2 = shared_vals[1].
u.u;
754 {
756 kp->
y = shared_vals[2].
u.i;
757 }
758 else
759 {
760 kp->
x = shared_vals[2].
u.i;
762 ? shared_vals[3].
u.i : 0;
763 }
764 }
765 break;
766
775
777 break;
778
779 default:
781 }
782 }
783
786 }
afm_compare_kern_pairs(const void *a, const void *b)
afm_parser_read_vals(AFM_Parser parser, AFM_Value vals, FT_Int n)
static FT_Error afm_parser_read_int(AFM_Parser parser, FT_Int *aint)
#define FT_QNEW_ARRAY(ptr, count)
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
GLdouble GLdouble GLdouble r
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
static char memory[1024 *256]
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
Referenced by afm_parse_kern_data().
◆ afm_parse_track_kern()
Definition at line 588 of file afmparse.c.
589 {
596
597
600
601 if ( tmp < 0 )
603
605
607 {
610
611
614 }
615
617 {
619
620
622 {
625
628
630
638
639 tk->
degree = shared_vals[0].
u.i;
644
645 break;
646
652
654 break;
655
656 default:
658 }
659 }
660
663 }
Referenced by afm_parse_kern_data().
◆ afm_parser_done()
◆ afm_parser_init()
Definition at line 530 of file afmparse.c.
534 {
537
538
541
544
545
547
552
554 }
◆ afm_parser_next_key()
Definition at line 446 of file afmparse.c.
449 {
452
453
455 {
456 while ( 1 )
457 {
458
461
464
465
469 continue;
470
471 break;
472 }
473 }
474 else
475 {
476 while ( 1 )
477 {
478
481
484
485
489 continue;
490
491 break;
492 }
493 }
494
497 : 0;
498
500 }
#define AFM_STREAM_KEY_LEN(stream, key)
#define AFM_STATUS_EOC(stream)
#define AFM_STATUS_EOF(stream)
#define AFM_STATUS_EOL(stream)
static char * afm_stream_read_one(AFM_Stream stream)
static char * afm_stream_read_string(AFM_Stream stream)
Referenced by afm_parse_kern_data(), afm_parse_kern_pairs(), afm_parse_track_kern(), afm_parser_parse(), and afm_parser_skip_section().
◆ afm_parser_parse()
Definition at line 862 of file afmparse.c.
863 {
870
871
872 if ( !fi )
873 return FT_THROW( Invalid_Argument );
874
878 return FT_THROW( Unknown_File_Format );
879
881 {
883
884
886 {
890
891 if ( metrics_sets != 0 && metrics_sets != 2 )
892 {
894
896 }
897 break;
898
903
905 break;
906
914
919 break;
920
925
927 break;
928
933
935 break;
936
938 {
940
941
944
949 }
950 break;
951
956
957
960
961 default:
962 break;
963 }
964 }
965
969
972
974
976 }
static FT_Error afm_parser_skip_section(AFM_Parser parser, FT_Int n, AFM_Token end_section)
static FT_Error afm_parse_kern_data(AFM_Parser parser)
◆ afm_parser_read_int()
◆ afm_parser_read_vals()
Definition at line 372 of file afmparse.c.
375 {
379
380
382 return 0;
383
384 for (
i = 0;
i <
n;
i++ )
385 {
388
389
392 else
394
396 break;
397
399
401 {
404 {
407
408
410 {
413 }
414 }
415 break;
416
420 break;
421
425 break;
426
430 break;
431
435 else
437 break;
438 }
439 }
440
442 }
#define AFM_MAX_ARGUMENTS
#define FT_QALLOC(ptr, size)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
PS_Conv_ToInt(FT_Byte **cursor, FT_Byte *limit)
PS_Conv_ToFixed(FT_Byte **cursor, FT_Byte *limit, FT_Long power_ten)
Referenced by afm_parse_kern_pairs(), afm_parse_track_kern(), afm_parser_parse(), and afm_parser_read_int().
◆ afm_parser_skip_section()
◆ afm_stream_read_one()
Definition at line 122 of file afmparse.c.
123 {
125
126
130
132
133 while ( 1 )
134 {
136
137
139 break;
141 {
143 break;
144 }
146 {
148 break;
149 }
151 {
153 break;
154 }
155 }
156
158 }
#define AFM_STREAM_KEY_BEGIN(stream)
static int afm_stream_skip_spaces(AFM_Stream stream)
#define AFM_IS_NEWLINE(ch)
Referenced by afm_parser_next_key(), and afm_parser_read_vals().
◆ afm_stream_read_string()
◆ afm_stream_skip_spaces()
◆ afm_tokenize()
◆ afm_key_table