[tfm] Remove VFlib specific code and refactor to FT.

This commit is contained in:
Parth Wazurkar 2018-06-29 18:02:06 +05:30
parent 67d3c53dcd
commit 4c1f8627bf
1 changed files with 21 additions and 24 deletions

View File

@ -115,6 +115,8 @@
UINT4 *ci, v;
UINT4 i;
INT4 bbxw, bbxh, xoff, yoff;
FT_Error error =FT_Err_Ok;
FT_Memory memory = extmemory; /* needed for FT_NEW */
if( FT_ALLOC(tfm, sizeof(TFM_GlyphRec)) )
goto ErrExit;
@ -194,8 +196,8 @@
if (((signed)(tfm->begin_char-1) > (signed)tfm->end_char) ||
(tfm->end_char > 65535))
{
vf_error = VF_ERR_INVALID_METRIC;
return NULL;
error = FT_THROW( Invalid_Argument );
goto Exit;
}
}
else
@ -218,8 +220,8 @@
if (((signed)(tfm->begin_char-1) > (signed)tfm->end_char) ||
(tfm->end_char > 255))
{
vf_error = VF_ERR_INVALID_METRIC;
return NULL;
error = FT_THROW( Invalid_Argument );
goto Exit;
}
}
@ -240,7 +242,7 @@
d = (INT4*)calloc(nd, sizeof(UINT4));
if ((ci == NULL) || (w == NULL) || (h == NULL) || (d == NULL))
{
err = VF_ERR_NO_MEMORY;
error = FT_THROW( Invalid_Argument );
goto Exit;
}
fseek(fp, offset_char_info, SEEK_SET);
@ -259,7 +261,7 @@
tfm->depth = (INT4*)calloc(nc, sizeof(INT4));
if ((tfm->width == NULL) || (tfm->height == NULL) || (tfm->depth == NULL))
{
err = VF_ERR_NO_MEMORY;
error = FT_THROW( Invalid_Argument );
goto Exit;
}
bbxw = 0;
@ -323,7 +325,7 @@
tfm->ct_ctype = (unsigned int*)calloc(tfm->nt+1, sizeof(unsigned int));
if ((tfm->ct_kcode == NULL) || (tfm->ct_ctype == NULL))
{
err = VF_ERR_NO_MEMORY;
error = FT_THROW( Invalid_Argument );
goto Exit;
}
for (i = 0; i < tfm->nt; i++)
@ -341,18 +343,16 @@
tfm->slant = (double)READ_INT4(fp)/(double)(1<<20);
Exit:
vf_free(ci);
vf_free(w);
vf_free(h);
vf_free(d);
FT_FREE(ci);
FT_FREE(w);
FT_FREE(h);
FT_FREE(d);
if (err != 0)
{
vf_tfm_free(tfm);
vf_error = err;
return NULL;
tfm_free_font(tfm, memory);
error = err;
}
return tfm;
}
FT_LOCAL_DEF( void )
@ -361,15 +361,12 @@
if (tfm == NULL)
return;
if ((tfm_table->unlink_by_id)(tfm_table, tfm_id) <= 0)
{
vf_free(tfm->width);
vf_free(tfm->height);
vf_free(tfm->depth);
vf_free(tfm->ct_kcode);
vf_free(tfm->ct_ctype);
vf_free(tfm);
}
FT_FREE(tfm->width);
FT_FREE(tfm->height);
FT_FREE(tfm->depth);
FT_FREE(tfm->ct_kcode);
FT_FREE(tfm->ct_ctype);
FT_FREE(tfm);
}
/* END */