1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* ftgxval.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* FreeType API for validating TrueTypeGX/AAT tables (specification). */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 7ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* Copyright 2004-2006, 2013 by */ 8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Masatake YAMATO, Redhat K.K, */ 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* This file is part of the FreeType project, and may only be used, */ 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* modified, and distributed under the terms of the FreeType project */ 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* this file you indicate that you have read the license and */ 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* understand and accept it fully. */ 16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* gxvalid is derived from both gxlayout module and otvalid module. */ 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Development of gxlayout is supported by the Information-technology */ 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Promotion Agency(IPA), Japan. */ 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __FTGXVAL_H__ 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTGXVAL_H__ 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h> 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_FREETYPE_H 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FREETYPE_H 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "freetype.h of FreeType 1 has been loaded!" 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "Please fix the directory search order for header files" 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "so that freetype.h of FreeType 2 is found first." 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Section> */ 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* gx_validation */ 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Title> */ 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueTypeGX/AAT Validation */ 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Abstract> */ 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* An API to validate TrueTypeGX/AAT tables. */ 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This section contains the declaration of functions to validate */ 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, */ 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* trak, prop, lcar). */ 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Warning: Use FT_VALIDATE_XXX to validate a table. */ 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Following definitions are for gxvalid developers. */ 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_feat_INDEX 0 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_mort_INDEX 1 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_morx_INDEX 2 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_bsln_INDEX 3 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_just_INDEX 4 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_kern_INDEX 5 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_opbd_INDEX 6 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_trak_INDEX 7 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_prop_INDEX 8 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_lcar_INDEX 9 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @macro: 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_GX_LENGTH 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The number of tables checked in this module. Use it as a parameter 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * for the `table-length' argument of function @FT_TrueTypeGX_Validate. 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_GX_LENGTH (FT_VALIDATE_GX_LAST_INDEX + 1) 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Up to 0x1000 is used by otvalid. 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project Ox2xxx is reserved for feature OT extension. */ 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_GX_START 0x4000 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_GX_BITFIELD( tag ) \ 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX ) 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /********************************************************************** 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @enum: 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_GXXXX 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A list of bit-field constants used with @FT_TrueTypeGX_Validate to 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * indicate which TrueTypeGX/AAT Type tables should be validated. 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @values: 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_feat :: 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Validate `feat' table. 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_mort :: 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Validate `mort' table. 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_morx :: 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Validate `morx' table. 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_bsln :: 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Validate `bsln' table. 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_just :: 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Validate `just' table. 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_kern :: 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Validate `kern' table. 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_opbd :: 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Validate `opbd' table. 135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_trak :: 137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Validate `trak' table. 138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_prop :: 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Validate `prop' table. 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_lcar :: 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Validate `lcar' table. 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_GX :: 146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern, 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * opbd, trak, prop and lcar). 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_feat FT_VALIDATE_GX_BITFIELD( feat ) 152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_mort FT_VALIDATE_GX_BITFIELD( mort ) 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_morx FT_VALIDATE_GX_BITFIELD( morx ) 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_bsln FT_VALIDATE_GX_BITFIELD( bsln ) 155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_just FT_VALIDATE_GX_BITFIELD( just ) 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_kern FT_VALIDATE_GX_BITFIELD( kern ) 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_opbd FT_VALIDATE_GX_BITFIELD( opbd ) 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_trak FT_VALIDATE_GX_BITFIELD( trak ) 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_prop FT_VALIDATE_GX_BITFIELD( prop ) 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_lcar FT_VALIDATE_GX_BITFIELD( lcar ) 161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_GX ( FT_VALIDATE_feat | \ 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_VALIDATE_mort | \ 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_VALIDATE_morx | \ 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_VALIDATE_bsln | \ 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_VALIDATE_just | \ 167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_VALIDATE_kern | \ 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_VALIDATE_opbd | \ 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_VALIDATE_trak | \ 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_VALIDATE_prop | \ 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_VALIDATE_lcar ) 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /********************************************************************** 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @function: 179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_TrueTypeGX_Validate 180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Validate various TrueTypeGX tables to assure that all offsets and 183ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease * indices are valid. The idea is that a higher-level library that 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * actually does the text layout can access those tables without 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * error checking (which can be quite time consuming). 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * face :: 189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the input face. 190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * validation_flags :: 192ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease * A bit field that specifies the tables to be validated. See 193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_VALIDATE_GXXXX for possible values. 194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * table_length :: 196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The size of the `tables' array. Normally, @FT_VALIDATE_GX_LENGTH 197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * should be passed. 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @output: 200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * tables :: 201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The array where all validated sfnt tables are stored. 202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The array itself must be allocated by a client. 203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 2050a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * FreeType error code. 0~means success. 206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This function only works with TrueTypeGX fonts, returning an error 209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * otherwise. 210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * After use, the application should deallocate the buffers pointed to by 212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * each `tables' element, by calling @FT_TrueTypeGX_Free. A NULL value 213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * indicates that the table either doesn't exist in the font, the 214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * application hasn't asked for validation, or the validator doesn't have 215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * the ability to validate the sfnt table. 216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_TrueTypeGX_Validate( FT_Face face, 219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt validation_flags, 220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bytes tables[FT_VALIDATE_GX_LENGTH], 221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt table_length ); 222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /********************************************************************** 227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @function: 229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_TrueTypeGX_Free 230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Free the buffer allocated by TrueTypeGX validator. 233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * face :: 236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the input face. 237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * table :: 239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The pointer to the buffer allocated by 240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_TrueTypeGX_Validate. 241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This function must be used to free the buffer allocated by 244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_TrueTypeGX_Validate only. 245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( void ) 247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_TrueTypeGX_Free( FT_Face face, 248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bytes table ); 249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /********************************************************************** 254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @enum: 256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_CKERNXXX 257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A list of bit-field constants used with @FT_ClassicKern_Validate 260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * to indicate the classic kern dialect or dialects. If the selected 261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * type doesn't fit, @FT_ClassicKern_Validate regards the table as 262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * invalid. 263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @values: 265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_MS :: 266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Handle the `kern' table as a classic Microsoft kern table. 267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_APPLE :: 269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Handle the `kern' table as a classic Apple kern table. 270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_VALIDATE_CKERN :: 272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Handle the `kern' as either classic Apple or Microsoft kern table. 273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_MS ( FT_VALIDATE_GX_START << 0 ) 275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_APPLE ( FT_VALIDATE_GX_START << 1 ) 276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE ) 278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /********************************************************************** 283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @function: 285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_ClassicKern_Validate 286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 2880a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Validate classic (16-bit format) kern table to assure that the offsets 289ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease * and indices are valid. The idea is that a higher-level library that 290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * actually does the text layout can access those tables without error 291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * checking (which can be quite time consuming). 292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The `kern' table validator in @FT_TrueTypeGX_Validate deals with both 2940a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * the new 32-bit format and the classic 16-bit format, while 2950a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * FT_ClassicKern_Validate only supports the classic 16-bit format. 296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * face :: 299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the input face. 300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * validation_flags :: 302ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease * A bit field that specifies the dialect to be validated. See 303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_VALIDATE_CKERNXXX for possible values. 304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @output: 306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * ckern_table :: 307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A pointer to the kern table. 308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 3100a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * FreeType error code. 0~means success. 311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * After use, the application should deallocate the buffers pointed to by 314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * `ckern_table', by calling @FT_ClassicKern_Free. A NULL value 315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * indicates that the table doesn't exist in the font. 316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ClassicKern_Validate( FT_Face face, 319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt validation_flags, 320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bytes *ckern_table ); 321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /********************************************************************** 326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @function: 328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_ClassicKern_Free 329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Free the buffer allocated by classic Kern validator. 332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * face :: 335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the input face. 336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * table :: 338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The pointer to the buffer that is allocated by 339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_ClassicKern_Validate. 340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This function must be used to free the buffer allocated by 343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_ClassicKern_Validate only. 344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( void ) 346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ClassicKern_Free( FT_Face face, 347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bytes table ); 348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTGXVAL_H__ */ 356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 359