1 /**************************************************************************** 2 * 3 * ftgxval.c 4 * 5 * FreeType API for validating TrueTypeGX/AAT tables (body). 6 * 7 * Copyright (C) 2004-2020 by 8 * Masatake YAMATO, Redhat K.K, 9 * David Turner, Robert Wilhelm, and Werner Lemberg. 10 * 11 * This file is part of the FreeType project, and may only be used, 12 * modified, and distributed under the terms of the FreeType project 13 * license, LICENSE.TXT. By continuing to use, modify, or distribute 14 * this file you indicate that you have read the license and 15 * understand and accept it fully. 16 * 17 */ 18 19 /**************************************************************************** 20 * 21 * gxvalid is derived from both gxlayout module and otvalid module. 22 * Development of gxlayout is supported by the Information-technology 23 * Promotion Agency(IPA), Japan. 24 * 25 */ 26 27 28 #include <freetype/internal/ftdebug.h> 29 30 #include <freetype/internal/ftobjs.h> 31 #include <freetype/internal/services/svgxval.h> 32 33 34 /* documentation is in ftgxval.h */ 35 36 FT_EXPORT_DEF( FT_Error ) FT_TrueTypeGX_Validate(FT_Face face,FT_UInt validation_flags,FT_Bytes tables[FT_VALIDATE_GX_LENGTH],FT_UInt table_length)37 FT_TrueTypeGX_Validate( FT_Face face, 38 FT_UInt validation_flags, 39 FT_Bytes tables[FT_VALIDATE_GX_LENGTH], 40 FT_UInt table_length ) 41 { 42 FT_Service_GXvalidate service; 43 FT_Error error; 44 45 46 if ( !face ) 47 { 48 error = FT_THROW( Invalid_Face_Handle ); 49 goto Exit; 50 } 51 52 if ( !tables ) 53 { 54 error = FT_THROW( Invalid_Argument ); 55 goto Exit; 56 } 57 58 FT_FACE_FIND_GLOBAL_SERVICE( face, service, GX_VALIDATE ); 59 60 if ( service ) 61 error = service->validate( face, 62 validation_flags, 63 tables, 64 table_length ); 65 else 66 error = FT_THROW( Unimplemented_Feature ); 67 68 Exit: 69 return error; 70 } 71 72 73 FT_EXPORT_DEF( void ) FT_TrueTypeGX_Free(FT_Face face,FT_Bytes table)74 FT_TrueTypeGX_Free( FT_Face face, 75 FT_Bytes table ) 76 { 77 FT_Memory memory; 78 79 80 if ( !face ) 81 return; 82 83 memory = FT_FACE_MEMORY( face ); 84 85 FT_FREE( table ); 86 } 87 88 89 FT_EXPORT_DEF( FT_Error ) FT_ClassicKern_Validate(FT_Face face,FT_UInt validation_flags,FT_Bytes * ckern_table)90 FT_ClassicKern_Validate( FT_Face face, 91 FT_UInt validation_flags, 92 FT_Bytes *ckern_table ) 93 { 94 FT_Service_CKERNvalidate service; 95 FT_Error error; 96 97 98 if ( !face ) 99 { 100 error = FT_THROW( Invalid_Face_Handle ); 101 goto Exit; 102 } 103 104 if ( !ckern_table ) 105 { 106 error = FT_THROW( Invalid_Argument ); 107 goto Exit; 108 } 109 110 FT_FACE_FIND_GLOBAL_SERVICE( face, service, CLASSICKERN_VALIDATE ); 111 112 if ( service ) 113 error = service->validate( face, 114 validation_flags, 115 ckern_table ); 116 else 117 error = FT_THROW( Unimplemented_Feature ); 118 119 Exit: 120 return error; 121 } 122 123 124 FT_EXPORT_DEF( void ) FT_ClassicKern_Free(FT_Face face,FT_Bytes table)125 FT_ClassicKern_Free( FT_Face face, 126 FT_Bytes table ) 127 { 128 FT_Memory memory; 129 130 131 if ( !face ) 132 return; 133 134 memory = FT_FACE_MEMORY( face ); 135 136 137 FT_FREE( table ); 138 } 139 140 141 /* END */ 142