forked from minhngoc25a/freetype2
[gf] Removed indentation errors.
This commit is contained in:
parent
ba5757b415
commit
846f20ac9d
|
@ -40,8 +40,8 @@
|
|||
typedef struct GF_CMapRec_
|
||||
{
|
||||
FT_CMapRec cmap;
|
||||
FT_UInt32 bc; /*Beginning Character*/
|
||||
FT_UInt32 ec; /*End Character*/
|
||||
FT_UInt32 bc; /* Beginning Character */
|
||||
FT_UInt32 ec; /* End Character */
|
||||
} GF_CMapRec, *GF_CMap;
|
||||
|
||||
|
||||
|
@ -49,7 +49,7 @@
|
|||
gf_cmap_init( FT_CMap gfcmap,
|
||||
FT_Pointer init_data )
|
||||
{
|
||||
GF_CMap cmap = (GF_CMap)gfcmap;
|
||||
GF_CMap cmap = (GF_CMap)gfcmap;
|
||||
FT_UNUSED( init_data );
|
||||
|
||||
cmap->bc = 0;
|
||||
|
@ -62,7 +62,7 @@
|
|||
FT_CALLBACK_DEF( void )
|
||||
gf_cmap_done( FT_CMap gfcmap )
|
||||
{
|
||||
GF_CMap cmap = (GF_CMap)gfcmap;
|
||||
GF_CMap cmap = (GF_CMap)gfcmap;
|
||||
|
||||
cmap->bc = 0;
|
||||
cmap->ec = -1;
|
||||
|
@ -74,10 +74,10 @@
|
|||
gf_cmap_char_index( FT_CMap gfcmap,
|
||||
FT_UInt32 char_code )
|
||||
{
|
||||
FT_UInt gindex = 0;
|
||||
GF_CMap cmap = (GF_CMap)gfcmap;
|
||||
FT_UInt gindex = 0;
|
||||
GF_CMap cmap = (GF_CMap)gfcmap;
|
||||
|
||||
char_code -= cmap->bc;
|
||||
char_code -= cmap->bc;
|
||||
|
||||
if ( char_code < cmap->ec - cmap->bc + 1 )
|
||||
gindex = (FT_UInt)( char_code );
|
||||
|
@ -89,7 +89,7 @@
|
|||
gf_cmap_char_next( FT_CMap gfcmap,
|
||||
FT_UInt32 *achar_code )
|
||||
{
|
||||
FT_UInt gindex = 0;
|
||||
FT_UInt gindex = 0;
|
||||
FT_UInt32 result = 0;
|
||||
FT_UInt32 char_code = *achar_code + 1;
|
||||
|
||||
|
@ -130,7 +130,7 @@
|
|||
FT_CALLBACK_DEF( void )
|
||||
GF_Face_Done( FT_Face gfface ) /* GF_Face */
|
||||
{
|
||||
//TO-DO
|
||||
//TO-DO
|
||||
}
|
||||
|
||||
|
||||
|
@ -141,15 +141,14 @@
|
|||
FT_Int num_params,
|
||||
FT_Parameter* params )
|
||||
{
|
||||
//TO-DO
|
||||
//TO-DO
|
||||
}
|
||||
|
||||
|
||||
FT_CALLBACK_DEF( FT_Error )
|
||||
GF_Size_Request( FT_Size size,
|
||||
FT_Size_Request req )
|
||||
{
|
||||
//TO-DO
|
||||
//TO-DO
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -27,25 +27,25 @@
|
|||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
/* BitmapRec for GF format specific glyphs */
|
||||
typedef struct GF_BitmapRec_
|
||||
{
|
||||
int bbx_width, bbx_height;
|
||||
int off_x, off_y;
|
||||
int mv_x, mv_y;
|
||||
unsigned char *bitmap;
|
||||
int raster;
|
||||
} GF_BitmapRec, *GF_Bitmap;
|
||||
/* BitmapRec for GF format specific glyphs */
|
||||
typedef struct GF_BitmapRec_
|
||||
{
|
||||
int bbx_width, bbx_height;
|
||||
int off_x, off_y;
|
||||
int mv_x, mv_y;
|
||||
unsigned char *bitmap;
|
||||
int raster;
|
||||
} GF_BitmapRec, *GF_Bitmap;
|
||||
|
||||
|
||||
typedef struct GF_Glyph_
|
||||
{
|
||||
int code_min, code_max;
|
||||
VF_BITMAP bm_table;
|
||||
double ds, hppp, vppp;
|
||||
int font_bbx_w, font_bbx_h;
|
||||
int font_bbx_xoff, font_bbx_yoff;
|
||||
}GF_Glyph, *GF_Glyph;
|
||||
typedef struct GF_Glyph_
|
||||
{
|
||||
int code_min, code_max;
|
||||
GF_BITMAP bm_table;
|
||||
double ds, hppp, vppp;
|
||||
int font_bbx_w, font_bbx_h;
|
||||
int font_bbx_xoff, font_bbx_yoff;
|
||||
} GF_Glyph, *GF_Glyph;
|
||||
|
||||
|
||||
typedef struct GF_FaceRec_
|
||||
|
|
742
src/gf/gflib.c
742
src/gf/gflib.c
|
@ -42,9 +42,9 @@
|
|||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
long gf_read_intn(FILE*,int);
|
||||
unsigned long gf_read_uintn(FILE*,int);
|
||||
void gf_skip_n(FILE*,int);
|
||||
long gf_read_intn(FILE*,int);
|
||||
unsigned long gf_read_uintn(FILE*,int);
|
||||
void gf_skip_n(FILE*,int);
|
||||
|
||||
#define READ_INT1(fp) (INT1)gf_read_intn((fp), 1)
|
||||
#define READ_UINT1(fp) (UINT1)gf_read_uintn((fp), 1)
|
||||
|
@ -62,81 +62,82 @@
|
|||
/*
|
||||
* Reading a Number from file
|
||||
*/
|
||||
unsigned long
|
||||
gf_read_uintn(FILE* fp, int size)
|
||||
{
|
||||
unsigned long v;
|
||||
unsigned long
|
||||
gf_read_uintn(FILE* fp, int size)
|
||||
{
|
||||
unsigned long v;
|
||||
|
||||
v = 0L;
|
||||
while (size >= 1)
|
||||
{
|
||||
v = v*256L + (unsigned long)getc(fp);
|
||||
--size;
|
||||
}
|
||||
return v;
|
||||
}
|
||||
v = 0L;
|
||||
while (size >= 1)
|
||||
{
|
||||
v = v*256L + (unsigned long)getc(fp);
|
||||
--size;
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
long
|
||||
gf_read_intn(FILE* fp, int size)
|
||||
{
|
||||
long v;
|
||||
long
|
||||
gf_read_intn(FILE* fp, int size)
|
||||
{
|
||||
long v;
|
||||
|
||||
v = (long)getc(fp) & 0xffL;
|
||||
if (v & 0x80L)
|
||||
v = v - 256L;
|
||||
--size;
|
||||
while (size >= 1){
|
||||
v = v*256L + (unsigned long)getc(fp);
|
||||
--size;
|
||||
v = (long)getc(fp) & 0xffL;
|
||||
if (v & 0x80L)
|
||||
v = v - 256L;
|
||||
--size;
|
||||
while (size >= 1)
|
||||
{
|
||||
v = v*256L + (unsigned long)getc(fp);
|
||||
--size;
|
||||
}
|
||||
|
||||
return v;
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
void
|
||||
gf_skip_n(FILE* fp, int size)
|
||||
{
|
||||
|
||||
while (size > 0)
|
||||
{
|
||||
(void)getc(fp);
|
||||
--size;
|
||||
}
|
||||
|
||||
}
|
||||
gf_skip_n(FILE* fp, int size)
|
||||
{
|
||||
|
||||
while (size > 0)
|
||||
{
|
||||
(void)getc(fp);
|
||||
--size;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
unsigned long
|
||||
gf_get_uintn(unsigned char *p, int size)
|
||||
{
|
||||
unsigned long v;
|
||||
unsigned long
|
||||
gf_get_uintn(unsigned char *p, int size)
|
||||
{
|
||||
unsigned long v;
|
||||
|
||||
v = 0L;
|
||||
while (size >= 1)
|
||||
{
|
||||
v = v*256L + (unsigned long) *(p++);
|
||||
--size;
|
||||
}
|
||||
v = 0L;
|
||||
while (size >= 1)
|
||||
{
|
||||
v = v*256L + (unsigned long) *(p++);
|
||||
--size;
|
||||
}
|
||||
|
||||
return v;
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
long
|
||||
gf_get_intn(unsigned char *p, int size)
|
||||
{
|
||||
long v;
|
||||
long
|
||||
gf_get_intn(unsigned char *p, int size)
|
||||
{
|
||||
long v;
|
||||
|
||||
v = (long)*(p++) & 0xffL;
|
||||
if (v & 0x80L)
|
||||
v = v - 256L;
|
||||
--size;
|
||||
while (size >= 1)
|
||||
{
|
||||
v = v*256L + (unsigned long) *(p++);
|
||||
--size;
|
||||
}
|
||||
v = (long)*(p++) & 0xffL;
|
||||
if (v & 0x80L)
|
||||
v = v - 256L;
|
||||
--size;
|
||||
while (size >= 1)
|
||||
{
|
||||
v = v*256L + (unsigned long) *(p++);
|
||||
--size;
|
||||
}
|
||||
|
||||
return v;
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -147,351 +148,360 @@
|
|||
/*************************************************************************/
|
||||
|
||||
FT_LOCAL_DEF( FT_Error )
|
||||
gf_read_glyph(FT_FILE* fp, GF_BITMAP bm)
|
||||
{
|
||||
long m, n;
|
||||
int paint_sw;
|
||||
int instr;
|
||||
INT4 min_m, max_m, min_n, max_n, del_m, del_n;
|
||||
long w, h, d;
|
||||
int m_b, k;
|
||||
unsigned char *ptr;
|
||||
gf_read_glyph(FT_FILE* fp, GF_BITMAP bm)
|
||||
{
|
||||
long m, n;
|
||||
int paint_sw;
|
||||
int instr;
|
||||
INT4 min_m, max_m, min_n, max_n, del_m, del_n;
|
||||
long w, h, d;
|
||||
int m_b, k;
|
||||
unsigned char *ptr;
|
||||
|
||||
switch (READ_UINT1(fp))
|
||||
{
|
||||
case GF_BOC:
|
||||
SKIP_N(fp, 4);
|
||||
SKIP_N(fp, 4);
|
||||
min_m = READ_INT4(fp);
|
||||
max_m = READ_INT4(fp);
|
||||
min_n = READ_INT4(fp);
|
||||
max_n = READ_INT4(fp);
|
||||
break;
|
||||
case GF_BOC1:
|
||||
SKIP_N(fp, 1);
|
||||
del_m = (INT4)READ_UINT1(fp);
|
||||
max_m = (INT4)READ_UINT1(fp);
|
||||
del_n = (INT4)READ_UINT1(fp);
|
||||
max_n = (INT4)READ_UINT1(fp);
|
||||
min_m = max_m - del_m;
|
||||
min_n = max_n - del_n;
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
switch (READ_UINT1(fp))
|
||||
{
|
||||
case GF_BOC:
|
||||
SKIP_N(fp, 4);
|
||||
SKIP_N(fp, 4);
|
||||
min_m = READ_INT4(fp);
|
||||
max_m = READ_INT4(fp);
|
||||
min_n = READ_INT4(fp);
|
||||
max_n = READ_INT4(fp);
|
||||
break;
|
||||
case GF_BOC1:
|
||||
SKIP_N(fp, 1);
|
||||
del_m = (INT4)READ_UINT1(fp);
|
||||
max_m = (INT4)READ_UINT1(fp);
|
||||
del_n = (INT4)READ_UINT1(fp);
|
||||
max_n = (INT4)READ_UINT1(fp);
|
||||
min_m = max_m - del_m;
|
||||
min_n = max_n - del_n;
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
w = max_m - min_m + 1;
|
||||
h = max_n - min_n + 1;
|
||||
if ((w < 0) || (h < 0))
|
||||
{
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
return -1;
|
||||
}
|
||||
w = max_m - min_m + 1;
|
||||
h = max_n - min_n + 1;
|
||||
if ((w < 0) || (h < 0))
|
||||
{
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((bm->bitmap = (unsigned char*)malloc(h*((w+7)/8))) == NULL)
|
||||
{
|
||||
vf_error = VF_ERR_NO_MEMORY;
|
||||
return -1;
|
||||
}
|
||||
if ((bm->bitmap = (unsigned char*)malloc(h*((w+7)/8))) == NULL)
|
||||
{
|
||||
vf_error = VF_ERR_NO_MEMORY;
|
||||
return -1;
|
||||
}
|
||||
|
||||
memclr(bm->bitmap, h*((w+7)/8));
|
||||
bm->raster = (w+7)/8;
|
||||
bm->bbx_width = w;
|
||||
bm->bbx_height = h;
|
||||
bm->off_x = -min_m;
|
||||
bm->off_y = max_n;
|
||||
#if 0
|
||||
bm->mv_x = -min_m;
|
||||
bm->mv_y = max_n;
|
||||
#endif
|
||||
memclr(bm->bitmap, h*((w+7)/8));
|
||||
bm->raster = (w+7)/8;
|
||||
bm->bbx_width = w;
|
||||
bm->bbx_height = h;
|
||||
bm->off_x = -min_m;
|
||||
bm->off_y = max_n;
|
||||
#if 0
|
||||
bm->mv_x = -min_m;
|
||||
bm->mv_y = max_n;
|
||||
#endif
|
||||
|
||||
m = min_m;
|
||||
n = max_n;
|
||||
paint_sw = 0;
|
||||
while ((instr = (int)READ_UINT1(fp)) != GF_EOC)
|
||||
{
|
||||
if (instr == GF_PAINT_0)
|
||||
{
|
||||
paint_sw = 1 - paint_sw;
|
||||
}
|
||||
else if ((GF_NEW_ROW_0 <= instr) && (instr <= GF_NEW_ROW_164))
|
||||
{
|
||||
m = min_m + (instr - GF_NEW_ROW_0);
|
||||
n = n - 1;
|
||||
paint_sw = 1;
|
||||
}
|
||||
else if ((GF_PAINT_1 <= instr) && (instr <= GF_PAINT_63))
|
||||
{
|
||||
d = (instr - GF_PAINT_1 + 1);
|
||||
goto Paint;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch ((int)instr)
|
||||
{
|
||||
case GF_PAINT1:
|
||||
case GF_PAINT2:
|
||||
case GF_PAINT3:
|
||||
d = (UINT4)READ_UINTN(fp, (instr - GF_PAINT1 + 1));
|
||||
Paint:
|
||||
if (paint_sw == 0)
|
||||
{
|
||||
m = m + d;
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr = &bm->bitmap[(max_n - n) * bm->raster + (m - min_m)/8];
|
||||
m_b = (m - min_m) % 8;
|
||||
while (d > 0)
|
||||
{
|
||||
*ptr |= bit_table[m_b];
|
||||
m++;
|
||||
if (++m_b >= 8)
|
||||
{
|
||||
m_b = 0;
|
||||
++ptr;
|
||||
}
|
||||
d--;
|
||||
}
|
||||
}
|
||||
paint_sw = 1 - paint_sw;
|
||||
break;
|
||||
m = min_m;
|
||||
n = max_n;
|
||||
paint_sw = 0;
|
||||
while ((instr = (int)READ_UINT1(fp)) != GF_EOC)
|
||||
{
|
||||
if (instr == GF_PAINT_0)
|
||||
{
|
||||
paint_sw = 1 - paint_sw;
|
||||
}
|
||||
else if ((GF_NEW_ROW_0 <= instr) && (instr <= GF_NEW_ROW_164))
|
||||
{
|
||||
m = min_m + (instr - GF_NEW_ROW_0);
|
||||
n = n - 1;
|
||||
paint_sw = 1;
|
||||
}
|
||||
else if ((GF_PAINT_1 <= instr) && (instr <= GF_PAINT_63))
|
||||
{
|
||||
d = (instr - GF_PAINT_1 + 1);
|
||||
goto Paint;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch ((int)instr)
|
||||
{
|
||||
case GF_PAINT1:
|
||||
case GF_PAINT2:
|
||||
case GF_PAINT3:
|
||||
d = (UINT4)READ_UINTN(fp, (instr - GF_PAINT1 + 1));
|
||||
Paint:
|
||||
if (paint_sw == 0)
|
||||
{
|
||||
m = m + d;
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr = &bm->bitmap[(max_n - n) * bm->raster + (m - min_m)/8];
|
||||
m_b = (m - min_m) % 8;
|
||||
while (d > 0)
|
||||
{
|
||||
*ptr |= bit_table[m_b];
|
||||
m++;
|
||||
if (++m_b >= 8)
|
||||
{
|
||||
m_b = 0;
|
||||
++ptr;
|
||||
}
|
||||
d--;
|
||||
}
|
||||
}
|
||||
paint_sw = 1 - paint_sw;
|
||||
break;
|
||||
|
||||
case GF_SKIP0:
|
||||
m = min_m;
|
||||
n = n - 1;
|
||||
paint_sw = 0;
|
||||
break;
|
||||
case GF_SKIP0:
|
||||
m = min_m;
|
||||
n = n - 1;
|
||||
paint_sw = 0;
|
||||
break;
|
||||
|
||||
case GF_SKIP1:
|
||||
case GF_SKIP2:
|
||||
case GF_SKIP3:
|
||||
m = min_m;
|
||||
n = n - (UINT4)READ_UINTN(fp, (instr - GF_SKIP1 + 1)) - 1;
|
||||
paint_sw = 0;
|
||||
break;
|
||||
case GF_SKIP1:
|
||||
case GF_SKIP2:
|
||||
case GF_SKIP3:
|
||||
m = min_m;
|
||||
n = n - (UINT4)READ_UINTN(fp, (instr - GF_SKIP1 + 1)) - 1;
|
||||
paint_sw = 0;
|
||||
break;
|
||||
|
||||
case GF_XXX1:
|
||||
case GF_XXX2:
|
||||
case GF_XXX3:
|
||||
case GF_XXX4:
|
||||
k = READ_UINTN(fp, instr - GF_XXX1 + 1);
|
||||
SKIP_N(fp, k);
|
||||
break;
|
||||
case GF_XXX1:
|
||||
case GF_XXX2:
|
||||
case GF_XXX3:
|
||||
case GF_XXX4:
|
||||
k = READ_UINTN(fp, instr - GF_XXX1 + 1);
|
||||
SKIP_N(fp, k);
|
||||
break;
|
||||
|
||||
case GF_YYY:
|
||||
SKIP_N(fp, 4);
|
||||
break;
|
||||
case GF_YYY:
|
||||
SKIP_N(fp, 4);
|
||||
break;
|
||||
|
||||
case GF_NO_OP:
|
||||
break;
|
||||
case GF_NO_OP:
|
||||
break;
|
||||
|
||||
default:
|
||||
vf_free(bm->bitmap);
|
||||
bm->bitmap = NULL;
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
vf_free(bm->bitmap);
|
||||
bm->bitmap = NULL;
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
FT_LOCAL_DEF( FT_Error )
|
||||
gf_load_font( FT_Stream stream,
|
||||
GF_Face face )
|
||||
{
|
||||
GF_GLYPH go;
|
||||
GF_BITMAP bm;
|
||||
UINT1 instr, d;
|
||||
UINT4 ds, check_sum, hppp, vppp;
|
||||
INT4 min_m, max_m, min_n, max_n;
|
||||
INT4 w;
|
||||
UINT4 code;
|
||||
double dx, dy;
|
||||
long ptr_post, ptr_p, ptr, optr, gptr;
|
||||
int bc, ec, nchars, i;
|
||||
FT_FILE *fp = stream->descriptor.pointer
|
||||
go = NULL;
|
||||
nchars = -1;
|
||||
GF_GLYPH go;
|
||||
GF_BITMAP bm;
|
||||
UINT1 instr, d;
|
||||
UINT4 ds, check_sum, hppp, vppp;
|
||||
INT4 min_m, max_m, min_n, max_n;
|
||||
INT4 w;
|
||||
UINT4 code;
|
||||
double dx, dy;
|
||||
long ptr_post, ptr_p, ptr, optr, gptr;
|
||||
int bc, ec, nchars, i;
|
||||
FT_FILE *fp = stream->descriptor.pointer
|
||||
go = NULL;
|
||||
nchars = -1;
|
||||
|
||||
/* seek to post_post instr. */
|
||||
ft_fseek(fp, -1, SEEK_END);
|
||||
/* seek to post_post instr. */
|
||||
ft_fseek(fp, -1, SEEK_END);
|
||||
|
||||
while ((d = READ_UINT1(fp)) == 223)
|
||||
fseek(fp, -2, SEEK_CUR);
|
||||
while ((d = READ_UINT1(fp)) == 223)
|
||||
fseek(fp, -2, SEEK_CUR);
|
||||
|
||||
if (d != GF_ID)
|
||||
{
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
goto ErrExit;
|
||||
}
|
||||
if (d != GF_ID)
|
||||
{
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
goto ErrExit;
|
||||
}
|
||||
|
||||
fseek(fp, -6, SEEK_CUR);
|
||||
fseek(fp, -6, SEEK_CUR);
|
||||
|
||||
/* check if the code is post_post */
|
||||
if (READ_UINT1(fp) != GF_POST_POST)
|
||||
{
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
goto ErrExit;
|
||||
}
|
||||
/* check if the code is post_post */
|
||||
if (READ_UINT1(fp) != GF_POST_POST)
|
||||
{
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
goto ErrExit;
|
||||
}
|
||||
|
||||
/* read pointer to post instr. */
|
||||
if ((ptr_post = READ_UINT4(fp)) == -1)
|
||||
{
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
goto ErrExit;
|
||||
}
|
||||
/* read pointer to post instr. */
|
||||
if ((ptr_post = READ_UINT4(fp)) == -1)
|
||||
{
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
goto ErrExit;
|
||||
}
|
||||
|
||||
/* goto post instr. and read it */
|
||||
fseek(fp, ptr_post, SEEK_SET);
|
||||
if (READ_UINT1(fp) != GF_POST)
|
||||
{
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
goto ErrExit;
|
||||
}
|
||||
/* goto post instr. and read it */
|
||||
fseek(fp, ptr_post, SEEK_SET);
|
||||
if (READ_UINT1(fp) != GF_POST)
|
||||
{
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
goto ErrExit;
|
||||
}
|
||||
|
||||
ptr_p = READ_UINT4(fp);
|
||||
ds = READ_UINT4(fp);
|
||||
check_sum = READ_UINT4(fp);
|
||||
hppp = READ_UINT4(fp);
|
||||
vppp = READ_UINT4(fp);
|
||||
min_m = READ_INT4(fp);
|
||||
max_m = READ_INT4(fp);
|
||||
min_n = READ_INT4(fp);
|
||||
max_n = READ_INT4(fp);
|
||||
ptr_p = READ_UINT4(fp);
|
||||
ds = READ_UINT4(fp);
|
||||
check_sum = READ_UINT4(fp);
|
||||
hppp = READ_UINT4(fp);
|
||||
vppp = READ_UINT4(fp);
|
||||
min_m = READ_INT4(fp);
|
||||
max_m = READ_INT4(fp);
|
||||
min_n = READ_INT4(fp);
|
||||
max_n = READ_INT4(fp);
|
||||
|
||||
gptr = ftell(fp);
|
||||
gptr = ftell(fp);
|
||||
|
||||
#if 0
|
||||
/* read min & max char code */
|
||||
bc = 256;
|
||||
ec = -1;
|
||||
for (;;){
|
||||
instr = READ_UINT1(fp);
|
||||
if (instr == GF_POST_POST){
|
||||
break;
|
||||
} else if (instr == GF_CHAR_LOC){
|
||||
code = READ_UINT1(fp);
|
||||
(void)SKIP_N(fp, 16);
|
||||
} else if (instr == GF_CHAR_LOC0){
|
||||
code = READ_UINT1(fp);
|
||||
(void)SKIP_N(fp, 9);
|
||||
} else {
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
goto ErrExit;
|
||||
}
|
||||
if (code < bc)
|
||||
bc = code;
|
||||
if (code > ec)
|
||||
ec = code;
|
||||
}
|
||||
#else
|
||||
bc = 0;
|
||||
ec = 255;
|
||||
#endif
|
||||
|
||||
nchars = ec - bc + 1;
|
||||
ALLOC_IF_ERR(go, struct s_gf_glyph)
|
||||
{
|
||||
vf_error = VF_ERR_NO_MEMORY;
|
||||
goto ErrExit;
|
||||
}
|
||||
ALLOCN_IF_ERR(go->bm_table, struct vf_s_bitmap, nchars)
|
||||
{
|
||||
vf_error = VF_ERR_NO_MEMORY;
|
||||
goto ErrExit;
|
||||
}
|
||||
#if 0
|
||||
/* read min & max char code */
|
||||
bc = 256;
|
||||
ec = -1;
|
||||
for ( ; ; )
|
||||
{
|
||||
instr = READ_UINT1(fp);
|
||||
if (instr == GF_POST_POST)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if (instr == GF_CHAR_LOC)
|
||||
{
|
||||
code = READ_UINT1(fp);
|
||||
(void)SKIP_N(fp, 16);
|
||||
}
|
||||
else if (instr == GF_CHAR_LOC0)
|
||||
{
|
||||
code = READ_UINT1(fp);
|
||||
(void)SKIP_N(fp, 9);
|
||||
}
|
||||
else
|
||||
{
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
goto ErrExit;
|
||||
}
|
||||
if (code < bc)
|
||||
bc = code;
|
||||
if (code > ec)
|
||||
ec = code;
|
||||
}
|
||||
#else
|
||||
bc = 0;
|
||||
ec = 255;
|
||||
#endif
|
||||
|
||||
for (i = 0; i < nchars; i++)
|
||||
go->bm_table[i].bitmap = NULL;
|
||||
nchars = ec - bc + 1;
|
||||
ALLOC_IF_ERR(go, struct s_gf_glyph)
|
||||
{
|
||||
vf_error = VF_ERR_NO_MEMORY;
|
||||
goto ErrExit;
|
||||
}
|
||||
ALLOCN_IF_ERR(go->bm_table, struct vf_s_bitmap, nchars)
|
||||
{
|
||||
vf_error = VF_ERR_NO_MEMORY;
|
||||
goto ErrExit;
|
||||
}
|
||||
|
||||
for (i = 0; i < nchars; i++)
|
||||
go->bm_table[i].bitmap = NULL;
|
||||
|
||||
go->ds = (double)ds/(1<<20);
|
||||
go->hppp = (double)hppp/(1<<16);
|
||||
go->vppp = (double)vppp/(1<<16);
|
||||
go->font_bbx_w = max_m - min_m;
|
||||
go->font_bbx_h = max_n - min_n;
|
||||
go->font_bbx_xoff = min_m;
|
||||
go->font_bbx_yoff = min_n;
|
||||
go->code_min = bc;
|
||||
go->code_max = ec;
|
||||
go->ds = (double)ds/(1<<20);
|
||||
go->hppp = (double)hppp/(1<<16);
|
||||
go->vppp = (double)vppp/(1<<16);
|
||||
go->font_bbx_w = max_m - min_m;
|
||||
go->font_bbx_h = max_n - min_n;
|
||||
go->font_bbx_xoff = min_m;
|
||||
go->font_bbx_yoff = min_n;
|
||||
go->code_min = bc;
|
||||
go->code_max = ec;
|
||||
|
||||
/* read glyph */
|
||||
#if 0
|
||||
fseek(fp, gptr, SEEK_SET);
|
||||
#endif
|
||||
for (;;)
|
||||
{
|
||||
if ((instr = READ_UINT1(fp)) == GF_POST_POST)
|
||||
break;
|
||||
switch ((int)instr)
|
||||
{
|
||||
/* read glyph */
|
||||
#if 0
|
||||
fseek(fp, gptr, SEEK_SET);
|
||||
#endif
|
||||
for ( ; ; )
|
||||
{
|
||||
if ((instr = READ_UINT1(fp)) == GF_POST_POST)
|
||||
break;
|
||||
switch ((int)instr)
|
||||
{
|
||||
|
||||
case GF_CHAR_LOC:
|
||||
code = READ_UINT1(fp);
|
||||
dx = (double)READ_INT4(fp)/(double)(1<<16);
|
||||
dy = (double)READ_INT4(fp)/(double)(1<<16);
|
||||
w = READ_INT4(fp);
|
||||
ptr = READ_INT4(fp);
|
||||
break;
|
||||
case GF_CHAR_LOC:
|
||||
code = READ_UINT1(fp);
|
||||
dx = (double)READ_INT4(fp)/(double)(1<<16);
|
||||
dy = (double)READ_INT4(fp)/(double)(1<<16);
|
||||
w = READ_INT4(fp);
|
||||
ptr = READ_INT4(fp);
|
||||
break;
|
||||
|
||||
case GF_CHAR_LOC0:
|
||||
code = READ_UINT1(fp);
|
||||
dx = (double)READ_INT1(fp);
|
||||
dy = (double)0;
|
||||
w = READ_INT4(fp);
|
||||
ptr = READ_INT4(fp);
|
||||
break;
|
||||
case GF_CHAR_LOC0:
|
||||
code = READ_UINT1(fp);
|
||||
dx = (double)READ_INT1(fp);
|
||||
dy = (double)0;
|
||||
w = READ_INT4(fp);
|
||||
ptr = READ_INT4(fp);
|
||||
break;
|
||||
|
||||
default:
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
goto ErrExit;
|
||||
default:
|
||||
vf_error = VF_ERR_ILL_FONT_FILE;
|
||||
goto ErrExit;
|
||||
|
||||
}
|
||||
optr = ftell(fp);
|
||||
fseek(fp, ptr, SEEK_SET);
|
||||
}
|
||||
optr = ftell(fp);
|
||||
fseek(fp, ptr, SEEK_SET);
|
||||
|
||||
bm = &go->bm_table[code - bc];
|
||||
if (gf_read_glyph(fp, bm) < 0)
|
||||
goto ErrExit;
|
||||
bm = &go->bm_table[code - bc];
|
||||
if (gf_read_glyph(fp, bm) < 0)
|
||||
goto ErrExit;
|
||||
|
||||
bm->mv_x = dx;
|
||||
bm->mv_y = dy;
|
||||
fseek(fp, optr, SEEK_SET);
|
||||
}
|
||||
return go;
|
||||
bm->mv_x = dx;
|
||||
bm->mv_y = dy;
|
||||
fseek(fp, optr, SEEK_SET);
|
||||
}
|
||||
return go;
|
||||
|
||||
ErrExit:
|
||||
printf("*ERROR\n");
|
||||
if (go != NULL)
|
||||
{
|
||||
if (go->bm_table != NULL)
|
||||
{
|
||||
for (i = 0; i < nchars; i++)
|
||||
vf_free(go->bm_table[i].bitmap);
|
||||
}
|
||||
vf_free(go->bm_table);
|
||||
}
|
||||
vf_free(go);
|
||||
return NULL;
|
||||
}
|
||||
ErrExit:
|
||||
printf("*ERROR\n");
|
||||
if (go != NULL)
|
||||
{
|
||||
if (go->bm_table != NULL)
|
||||
{
|
||||
for (i = 0; i < nchars; i++)
|
||||
vf_free(go->bm_table[i].bitmap);
|
||||
}
|
||||
vf_free(go->bm_table);
|
||||
}
|
||||
vf_free(go);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
FT_LOCAL_DEF( void )
|
||||
gf_free_font( GF_Glyph gf_glyph )
|
||||
{
|
||||
if (go != NULL)
|
||||
{
|
||||
if (go->bm_table != NULL)
|
||||
{
|
||||
for (i = 0; i < nchars; i++)
|
||||
vf_free(go->bm_table[i].bitmap);
|
||||
}
|
||||
vf_free(go->bm_table);
|
||||
}
|
||||
vf_free(go);
|
||||
if (go != NULL)
|
||||
{
|
||||
if (go->bm_table != NULL)
|
||||
{
|
||||
for (i = 0; i < nchars; i++)
|
||||
vf_free(go->bm_table[i].bitmap);
|
||||
}
|
||||
vf_free(go->bm_table);
|
||||
}
|
||||
vf_free(go);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue