/***************************************************************************/ | |
/* */ | |
/* ftotval.c */ | |
/* */ | |
/* FreeType API for validating OpenType tables (body). */ | |
/* */ | |
/* Copyright 2004-2015 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. */ | |
/* */ | |
/***************************************************************************/ | |
#include <ft2build.h> | |
#include FT_INTERNAL_DEBUG_H | |
#include FT_INTERNAL_OBJECTS_H | |
#include FT_SERVICE_OPENTYPE_VALIDATE_H | |
#include FT_OPENTYPE_VALIDATE_H | |
/* documentation is in ftotval.h */ | |
FT_EXPORT_DEF( FT_Error ) | |
FT_OpenType_Validate( FT_Face face, | |
FT_UInt validation_flags, | |
FT_Bytes *BASE_table, | |
FT_Bytes *GDEF_table, | |
FT_Bytes *GPOS_table, | |
FT_Bytes *GSUB_table, | |
FT_Bytes *JSTF_table ) | |
{ | |
FT_Service_OTvalidate service; | |
FT_Error error; | |
if ( !face ) | |
{ | |
error = FT_THROW( Invalid_Face_Handle ); | |
goto Exit; | |
} | |
if ( !( BASE_table && | |
GDEF_table && | |
GPOS_table && | |
GSUB_table && | |
JSTF_table ) ) | |
{ | |
error = FT_THROW( Invalid_Argument ); | |
goto Exit; | |
} | |
FT_FACE_FIND_GLOBAL_SERVICE( face, service, OPENTYPE_VALIDATE ); | |
if ( service ) | |
error = service->validate( face, | |
validation_flags, | |
BASE_table, | |
GDEF_table, | |
GPOS_table, | |
GSUB_table, | |
JSTF_table ); | |
else | |
error = FT_THROW( Unimplemented_Feature ); | |
Exit: | |
return error; | |
} | |
FT_EXPORT_DEF( void ) | |
FT_OpenType_Free( FT_Face face, | |
FT_Bytes table ) | |
{ | |
FT_Memory memory; | |
if ( !face ) | |
return; | |
memory = FT_FACE_MEMORY( face ); | |
FT_FREE( table ); | |
} | |
/* END */ |