1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* ftincrem.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* FreeType incremental loading (specification). */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 7295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* Copyright 2002, 2003, 2006, 2007, 2008, 2010 by */ 8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* This file is part of the FreeType project, and may only be used, */ 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* modified, and distributed under the terms of the FreeType project */ 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* this file you indicate that you have read the license and */ 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* understand and accept it fully. */ 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __FTINCREM_H__ 20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTINCREM_H__ 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h> 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_FREETYPE_H 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FREETYPE_H 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "freetype.h of FreeType 1 has been loaded!" 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "Please fix the directory search order for header files" 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "so that freetype.h of FreeType 2 is found first." 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************** 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @section: 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * incremental 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @title: 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Incremental Loading 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @abstract: 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Custom Glyph Loading. 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This section contains various functions used to perform so-called 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * `incremental' glyph loading. This is a mode where all glyphs loaded 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * from a given @FT_Face are provided by the client application, 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Apart from that, all other tables are loaded normally from the font 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * file. This mode is useful when FreeType is used within another 520a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * engine, e.g., a PostScript Imaging Processor. 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * To enable this mode, you must use @FT_Open_Face, passing an 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_Incremental_Interface value. See the comments for 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_Incremental_InterfaceRec for an example. 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 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 * @type: 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Incremental 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * An opaque type describing a user-provided object used to implement 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * `incremental' glyph loading within FreeType. This is used to support 700a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * embedded fonts in certain environments (e.g., PostScript interpreters), 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * where the glyph data isn't in the font file, or must be overridden by 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * different values. 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * It is up to client applications to create and implement @FT_Incremental 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * objects, as long as they provide implementations for the methods 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * and @FT_Incremental_GetGlyphMetricsFunc. 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * See the description of @FT_Incremental_InterfaceRec to understand how 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * to use incremental objects with FreeType. 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_IncrementalRec_* FT_Incremental; 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************** 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @struct: 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Incremental_MetricsRec 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A small structure used to contain the basic glyph metrics returned 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * by the @FT_Incremental_GetGlyphMetricsFunc method. 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @fields: 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * bearing_x :: 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Left bearing, in font units. 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * bearing_y :: 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Top bearing, in font units. 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * advance :: 104295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner * Horizontal component of glyph advance, in font units. 105295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner * 106295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner * advance_v :: 107295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner * Vertical component of glyph advance, in font units. 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * These correspond to horizontal or vertical metrics depending on the 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * value of the `vertical' argument to the function 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_Incremental_GetGlyphMetricsFunc. 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_Incremental_MetricsRec_ 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long bearing_x; 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long bearing_y; 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long advance; 120295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner FT_Long advance_v; /* since 2.3.12 */ 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Incremental_MetricsRec; 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************** 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @struct: 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Incremental_Metrics 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to an @FT_Incremental_MetricsRec structure. 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_Incremental_MetricsRec_* FT_Incremental_Metrics; 135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************** 138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @type: 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Incremental_GetGlyphDataFunc 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A function called by FreeType to access a given glyph's data bytes 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * during @FT_Load_Glyph or @FT_Load_Char if incremental loading is 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * enabled. 146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Note that the format of the glyph's data bytes depends on the font 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * file format. For TrueType, it must correspond to the raw bytes within 1490a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * the `glyf' table. For PostScript formats, it must correspond to the 150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * *unencrypted* charstring bytes, without any `lenIV' header. It is 151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * undefined for any other format. 152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * incremental :: 155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Handle to an opaque @FT_Incremental handle provided by the client 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * application. 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * glyph_index :: 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Index of relevant glyph. 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @output: 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * adata :: 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A structure describing the returned glyph data bytes (which will be 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * accessed as a read-only byte block). 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 1670a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * FreeType error code. 0~means success. 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * If this function returns successfully the method 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_Incremental_FreeGlyphDataFunc will be called later to release 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * the data bytes. 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * compound glyphs. 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Incremental_GetGlyphDataFunc)( FT_Incremental incremental, 180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt glyph_index, 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Data* adata ); 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************** 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @type: 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Incremental_FreeGlyphDataFunc 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A function used to release the glyph data bytes returned by a 191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * successful call to @FT_Incremental_GetGlyphDataFunc. 192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * incremental :: 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to an opaque @FT_Incremental handle provided by the client 196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * application. 197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * data :: 199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A structure describing the glyph data bytes (which will be accessed 200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * as a read-only byte block). 201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental incremental, 205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Data* data ); 206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************** 209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @type: 211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Incremental_GetGlyphMetricsFunc 212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A function used to retrieve the basic metrics of a given glyph index 215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * before accessing its data. This is necessary because, in certain 216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * formats like TrueType, the metrics are stored in a different place from 217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * the glyph images proper. 218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * incremental :: 221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to an opaque @FT_Incremental handle provided by the client 222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * application. 223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * glyph_index :: 225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Index of relevant glyph. 226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * vertical :: 228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * If true, return vertical metrics. 229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * ametrics :: 231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This parameter is used for both input and output. 232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The original glyph metrics, if any, in font units. If metrics are 233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * not available all the values must be set to zero. 234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @output: 236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * ametrics :: 237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The replacement glyph metrics in font units. 238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Incremental_GetGlyphMetricsFunc) 242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( FT_Incremental incremental, 243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt glyph_index, 244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool vertical, 245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Incremental_MetricsRec *ametrics ); 246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************** 249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @struct: 251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Incremental_FuncsRec 252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A table of functions for accessing fonts that load data 255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * incrementally. Used in @FT_Incremental_InterfaceRec. 256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @fields: 258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * get_glyph_data :: 259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to get glyph data. Must not be null. 260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * free_glyph_data :: 262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to release glyph data. Must not be null. 263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * get_glyph_metrics :: 265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to get glyph metrics. May be null if the font does 266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * not provide overriding glyph metrics. 267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_Incremental_FuncsRec_ 270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Incremental_GetGlyphDataFunc get_glyph_data; 272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Incremental_FreeGlyphDataFunc free_glyph_data; 273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics; 274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Incremental_FuncsRec; 276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************** 279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @struct: 281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Incremental_InterfaceRec 282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A structure to be used with @FT_Open_Face to indicate that the user 285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * wants to support incremental glyph loading. You should use it with 286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_PARAM_TAG_INCREMENTAL as in the following example: 287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * { 289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Incremental_InterfaceRec inc_int; 290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Parameter parameter; 291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Open_Args open_args; 292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * // set up incremental descriptor 295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * inc_int.funcs = my_funcs; 296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * inc_int.object = my_object; 297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * // set up optional parameter 299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * parameter.tag = FT_PARAM_TAG_INCREMENTAL; 300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * parameter.data = &inc_int; 301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * // set up FT_Open_Args structure 303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; 304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * open_args.pathname = my_font_pathname; 305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * open_args.num_params = 1; 306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * open_args.params = ¶meter; // we use one optional argument 307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * // open the font 309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * error = FT_Open_Face( library, &open_args, index, &face ); 310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * ... 311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * } 312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_Incremental_InterfaceRec_ 315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const FT_Incremental_FuncsRec* funcs; 317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Incremental object; 318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Incremental_InterfaceRec; 320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************** 323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @type: 325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Incremental_Interface 326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A pointer to an @FT_Incremental_InterfaceRec structure. 329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Incremental_InterfaceRec* FT_Incremental_Interface; 332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************** 335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @constant: 337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_PARAM_TAG_INCREMENTAL 338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A constant used as the tag of @FT_Parameter structures to indicate 341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * an incremental loading object to be used by FreeType. 342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_PARAM_TAG_INCREMENTAL FT_MAKE_TAG( 'i', 'n', 'c', 'r' ) 345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTINCREM_H__ */ 351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 354