/**************************************************************************** * * otvcommn.c * * OpenType common tables validation (body). * * Copyright (C) 2004-2023 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 "otvcommn.h" /************************************************************************** * * The macro FT_COMPONENT is used in trace mode. It is an implicit * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log * messages during execution. */ #undef FT_COMPONENT #define FT_COMPONENT … /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** COVERAGE TABLE *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ FT_LOCAL_DEF( void ) otv_Coverage_validate( FT_Bytes table, OTV_Validator otvalid, FT_Int expected_count ) { … } FT_LOCAL_DEF( FT_UInt ) otv_Coverage_get_first( FT_Bytes table ) { … } FT_LOCAL_DEF( FT_UInt ) otv_Coverage_get_last( FT_Bytes table ) { … } FT_LOCAL_DEF( FT_UInt ) otv_Coverage_get_count( FT_Bytes table ) { … } /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** CLASS DEFINITION TABLE *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ FT_LOCAL_DEF( void ) otv_ClassDef_validate( FT_Bytes table, OTV_Validator otvalid ) { … } /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** DEVICE TABLE *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ FT_LOCAL_DEF( void ) otv_Device_validate( FT_Bytes table, OTV_Validator otvalid ) { … } /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** LOOKUPS *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ /* uses otvalid->type_count */ /* uses otvalid->type_funcs */ FT_LOCAL_DEF( void ) otv_Lookup_validate( FT_Bytes table, OTV_Validator otvalid ) { … } /* uses valid->lookup_count */ FT_LOCAL_DEF( void ) otv_LookupList_validate( FT_Bytes table, OTV_Validator otvalid ) { … } static FT_UInt otv_LookupList_get_count( FT_Bytes table ) { … } /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** FEATURES *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ /* uses otvalid->lookup_count */ FT_LOCAL_DEF( void ) otv_Feature_validate( FT_Bytes table, OTV_Validator otvalid ) { … } static FT_UInt otv_Feature_get_count( FT_Bytes table ) { … } /* sets otvalid->lookup_count */ FT_LOCAL_DEF( void ) otv_FeatureList_validate( FT_Bytes table, FT_Bytes lookups, OTV_Validator otvalid ) { … } /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** LANGUAGE SYSTEM *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ /* uses otvalid->extra1 (number of features) */ FT_LOCAL_DEF( void ) otv_LangSys_validate( FT_Bytes table, OTV_Validator otvalid ) { … } /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** SCRIPTS *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ FT_LOCAL_DEF( void ) otv_Script_validate( FT_Bytes table, OTV_Validator otvalid ) { … } /* sets otvalid->extra1 (number of features) */ FT_LOCAL_DEF( void ) otv_ScriptList_validate( FT_Bytes table, FT_Bytes features, OTV_Validator otvalid ) { … } /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** UTILITY FUNCTIONS *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ /* u: uint16 ux: unit16 [x] s: struct sx: struct [x] sxy: struct [x], using external y count x: uint16 x C: Coverage O: Offset On: Offset (NULL) Ox: Offset [x] Onx: Offset (NULL) [x] */ FT_LOCAL_DEF( void ) otv_x_Ox( FT_Bytes table, OTV_Validator otvalid ) { … } FT_LOCAL_DEF( void ) otv_u_C_x_Ox( FT_Bytes table, OTV_Validator otvalid ) { … } /* uses otvalid->extra1 (if > 0: array value limit) */ FT_LOCAL_DEF( void ) otv_x_ux( FT_Bytes table, OTV_Validator otvalid ) { … } /* `ux' in the function's name is not really correct since only x-1 */ /* elements are tested */ /* uses otvalid->extra1 (array value limit) */ FT_LOCAL_DEF( void ) otv_x_y_ux_sy( FT_Bytes table, OTV_Validator otvalid ) { … } /* `uy' in the function's name is not really correct since only y-1 */ /* elements are tested */ /* uses otvalid->extra1 (array value limit) */ FT_LOCAL_DEF( void ) otv_x_ux_y_uy_z_uz_p_sp( FT_Bytes table, OTV_Validator otvalid ) { … } /* sets otvalid->extra1 (valid->lookup_count) */ FT_LOCAL_DEF( void ) otv_u_O_O_x_Onx( FT_Bytes table, OTV_Validator otvalid ) { … } /* uses otvalid->lookup_count */ FT_LOCAL_DEF( void ) otv_u_x_y_Ox_sy( FT_Bytes table, OTV_Validator otvalid ) { … } /* sets otvalid->extra1 (valid->lookup_count) */ FT_LOCAL_DEF( void ) otv_u_O_O_O_O_x_Onx( FT_Bytes table, OTV_Validator otvalid ) { … } /* uses otvalid->lookup_count */ FT_LOCAL_DEF( void ) otv_u_x_Ox_y_Oy_z_Oz_p_sp( FT_Bytes table, OTV_Validator otvalid ) { … } FT_LOCAL_DEF( FT_UInt ) otv_GSUBGPOS_get_Lookup_count( FT_Bytes table ) { … } FT_LOCAL_DEF( FT_UInt ) otv_GSUBGPOS_have_MarkAttachmentType_flag( FT_Bytes table ) { … } /* END */