/**************************************************************************** * * gxvbsln.c * * TrueTypeGX/AAT bsln table validation (body). * * Copyright (C) 2004-2023 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * 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. * */ /**************************************************************************** * * gxvalid is derived from both gxlayout module and otvalid module. * Development of gxlayout is supported by the Information-technology * Promotion Agency(IPA), Japan. * */ #include "gxvalid.h" #include "gxvcommn.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 … /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** Data and Types *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ #define GXV_BSLN_VALUE_COUNT … #define GXV_BSLN_VALUE_EMPTY … GXV_bsln_Data; #define GXV_BSLN_DATA( field ) … /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** UTILITY FUNCTIONS *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ static void gxv_bsln_LookupValue_validate( FT_UShort glyph, GXV_LookupValueCPtr value_p, GXV_Validator gxvalid ) { … } /* +===============+ --------+ | lookup header | | +===============+ | | BinSrchHeader | | +===============+ | | lastGlyph[0] | | +---------------+ | | firstGlyph[0] | | head of lookup table +---------------+ | + | offset[0] | -> | offset [byte] +===============+ | + | lastGlyph[1] | | (glyphID - firstGlyph) * 2 [byte] +---------------+ | | firstGlyph[1] | | +---------------+ | | offset[1] | | +===============+ | | ... | | 16bit value array | +===============+ | | value | <-------+ ... */ static GXV_LookupValueDesc gxv_bsln_LookupFmt4_transit( FT_UShort relative_gindex, GXV_LookupValueCPtr base_value_p, FT_Bytes lookuptbl_limit, GXV_Validator gxvalid ) { … } static void gxv_bsln_parts_fmt0_validate( FT_Bytes tables, FT_Bytes limit, GXV_Validator gxvalid ) { … } static void gxv_bsln_parts_fmt1_validate( FT_Bytes tables, FT_Bytes limit, GXV_Validator gxvalid ) { … } static void gxv_bsln_parts_fmt2_validate( FT_Bytes tables, FT_Bytes limit, GXV_Validator gxvalid ) { … } static void gxv_bsln_parts_fmt3_validate( FT_Bytes tables, FT_Bytes limit, GXV_Validator gxvalid) { … } /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** bsln TABLE *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ FT_LOCAL_DEF( void ) gxv_bsln_validate( FT_Bytes table, FT_Face face, FT_Validator ftvalid ) { … } /* arch-tag: ebe81143-fdaa-4c68-a4d1-b57227daa3bc (do not change this comment) */ /* END */