1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* tttables.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Basic SFNT/TrueType tables definitions and interface */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* (specification only). */ 7049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 8a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang/* Copyright 1996-2005, 2008-2012 by */ 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#ifndef __TTTABLES_H__ 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __TTTABLES_H__ 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h> 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_FREETYPE_H 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FREETYPE_H 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "freetype.h of FreeType 1 has been loaded!" 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "Please fix the directory search order for header files" 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "so that freetype.h of FreeType 2 is found first." 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Section> */ 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* truetype_tables */ 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Title> */ 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType Tables */ 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Abstract> */ 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType specific table types and functions. */ 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This section contains the definition of TrueType-specific tables */ 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* as well as some routines used to access and process them. */ 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Header */ 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to model a TrueType font header table. All */ 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* fields follow the TrueType specification. */ 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_Header_ 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed Table_Version; 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed Font_Revision; 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long CheckSum_Adjust; 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long Magic_Number; 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort Flags; 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort Units_Per_EM; 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long Created [2]; 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long Modified[2]; 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short xMin; 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short yMin; 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short xMax; 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short yMax; 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort Mac_Style; 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort Lowest_Rec_PPEM; 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Font_Direction; 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Index_To_Loc_Format; 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Glyph_Data_Format; 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_Header; 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_HoriHeader */ 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to model a TrueType horizontal header, the `hhea' */ 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table, as well as the corresponding horizontal metrics table, */ 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* i.e., the `hmtx' table. */ 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Version :: The table version. */ 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Ascender :: The font's ascender, i.e., the distance */ 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* from the baseline to the top-most of all */ 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph points found in the font. */ 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This value is invalid in many fonts, as */ 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* it is usually set by the font designer, */ 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* and often reflects only a portion of the */ 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs found in the font (maybe ASCII). */ 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* You should use the `sTypoAscender' field */ 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* of the OS/2 table instead if you want */ 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the correct one. */ 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Descender :: The font's descender, i.e., the distance */ 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* from the baseline to the bottom-most of */ 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* all glyph points found in the font. It */ 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* is negative. */ 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This value is invalid in many fonts, as */ 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* it is usually set by the font designer, */ 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* and often reflects only a portion of the */ 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs found in the font (maybe ASCII). */ 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* You should use the `sTypoDescender' */ 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* field of the OS/2 table instead if you */ 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* want the correct one. */ 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Line_Gap :: The font's line gap, i.e., the distance */ 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to add to the ascender and descender to */ 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* get the BTB, i.e., the */ 135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* baseline-to-baseline distance for the */ 136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font. */ 137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* advance_Width_Max :: This field is the maximum of all advance */ 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* widths found in the font. It can be */ 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* used to compute the maximum width of an */ 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* arbitrary string of text. */ 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* min_Left_Side_Bearing :: The minimum left side bearing of all */ 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs within the font. */ 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* min_Right_Side_Bearing :: The minimum right side bearing of all */ 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs within the font. */ 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* xMax_Extent :: The maximum horizontal extent (i.e., the */ 150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `width' of a glyph's bounding box) for */ 151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* all glyphs in the font. */ 152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_Slope_Rise :: The rise coefficient of the cursor's */ 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* slope of the cursor (slope=rise/run). */ 155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_Slope_Run :: The run coefficient of the cursor's */ 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* slope. */ 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1590a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Reserved :: 8~reserved bytes. */ 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1610a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* metric_Data_Format :: Always~0. */ 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table -- this value can be smaller than */ 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the total number of glyphs in the font. */ 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* long_metrics :: A pointer into the `hmtx' table. */ 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* short_metrics :: A pointer into the `hmtx' table. */ 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* be identical except for the names of their fields which */ 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* are different. */ 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This ensures that a single function in the `ttload' */ 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module is able to read both the horizontal and vertical */ 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* headers. */ 179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_HoriHeader_ 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed Version; 183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Ascender; 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Descender; 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Line_Gap; 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort advance_Width_Max; /* advance width maximum */ 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short min_Left_Side_Bearing; /* minimum left-sb */ 190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short min_Right_Side_Bearing; /* minimum right-sb */ 191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short xMax_Extent; /* xmax extents */ 192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short caret_Slope_Rise; 193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short caret_Slope_Run; 194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short caret_Offset; 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Reserved[4]; 197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short metric_Data_Format; 199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort number_Of_HMetrics; 200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The following fields are not defined by the TrueType specification */ 202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* but they are used to connect the metrics header to the relevant */ 203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `HMTX' table. */ 204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* long_metrics; 206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* short_metrics; 207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_HoriHeader; 209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_VertHeader */ 215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to model a TrueType vertical header, the `vhea' */ 218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table, as well as the corresponding vertical metrics table, i.e., */ 219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the `vmtx' table. */ 220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Version :: The table version. */ 223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Ascender :: The font's ascender, i.e., the distance */ 225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* from the baseline to the top-most of */ 226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* all glyph points found in the font. */ 227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This value is invalid in many fonts, as */ 229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* it is usually set by the font designer, */ 230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* and often reflects only a portion of */ 231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the glyphs found in the font (maybe */ 232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ASCII). */ 233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* You should use the `sTypoAscender' */ 235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* field of the OS/2 table instead if you */ 236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* want the correct one. */ 237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Descender :: The font's descender, i.e., the */ 239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* distance from the baseline to the */ 240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bottom-most of all glyph points found */ 241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in the font. It is negative. */ 242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This value is invalid in many fonts, as */ 244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* it is usually set by the font designer, */ 245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* and often reflects only a portion of */ 246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the glyphs found in the font (maybe */ 247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ASCII). */ 248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* You should use the `sTypoDescender' */ 250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* field of the OS/2 table instead if you */ 251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* want the correct one. */ 252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Line_Gap :: The font's line gap, i.e., the distance */ 254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to add to the ascender and descender to */ 255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* get the BTB, i.e., the */ 256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* baseline-to-baseline distance for the */ 257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font. */ 258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* advance_Height_Max :: This field is the maximum of all */ 260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* advance heights found in the font. It */ 261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* can be used to compute the maximum */ 262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* height of an arbitrary string of text. */ 263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* min_Top_Side_Bearing :: The minimum top side bearing of all */ 265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs within the font. */ 266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */ 268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs within the font. */ 269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* yMax_Extent :: The maximum vertical extent (i.e., the */ 271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `height' of a glyph's bounding box) for */ 272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* all glyphs in the font. */ 273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_Slope_Rise :: The rise coefficient of the cursor's */ 275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* slope of the cursor (slope=rise/run). */ 276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_Slope_Run :: The run coefficient of the cursor's */ 278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* slope. */ 279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_Offset :: The cursor's offset for slanted fonts. */ 281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This value is `reserved' in vmtx */ 282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* version 1.0. */ 283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 2840a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Reserved :: 8~reserved bytes. */ 285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 2860a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* metric_Data_Format :: Always~0. */ 287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* number_Of_HMetrics :: Number of VMetrics entries in the */ 289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `vmtx' table -- this value can be */ 290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* smaller than the total number of glyphs */ 291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in the font. */ 292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* long_metrics :: A pointer into the `vmtx' table. */ 294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* short_metrics :: A pointer into the `vmtx' table. */ 296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ 299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* be identical except for the names of their fields which */ 300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* are different. */ 301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This ensures that a single function in the `ttload' */ 303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module is able to read both the horizontal and vertical */ 304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* headers. */ 305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_VertHeader_ 307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed Version; 309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Ascender; 310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Descender; 311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Line_Gap; 312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort advance_Height_Max; /* advance height maximum */ 314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short min_Top_Side_Bearing; /* minimum left-sb or top-sb */ 316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb */ 317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short yMax_Extent; /* xmax or ymax extents */ 318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short caret_Slope_Rise; 319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short caret_Slope_Run; 320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short caret_Offset; 321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Reserved[4]; 323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short metric_Data_Format; 325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort number_Of_VMetrics; 326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The following fields are not defined by the TrueType specification */ 328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* but they're used to connect the metrics header to the relevant */ 329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `HMTX' or `VMTX' table. */ 330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* long_metrics; 332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* short_metrics; 333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_VertHeader; 335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_OS2 */ 341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to model a TrueType OS/2 table. This is the long */ 344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table version. All fields comply to the TrueType specification. */ 345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Note that we now support old Mac fonts which do not include an */ 347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* OS/2 table. In this case, the `version' field is always set to */ 348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* 0xFFFF. */ 349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_OS2_ 351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort version; /* 0x0001 - more or 0xFFFF */ 353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short xAvgCharWidth; 354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usWeightClass; 355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usWidthClass; 356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short fsType; 357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySubscriptXSize; 358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySubscriptYSize; 359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySubscriptXOffset; 360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySubscriptYOffset; 361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySuperscriptXSize; 362049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySuperscriptYSize; 363049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySuperscriptXOffset; 364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySuperscriptYOffset; 365049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short yStrikeoutSize; 366049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short yStrikeoutPosition; 367049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short sFamilyClass; 368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte panose[10]; 370049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ulUnicodeRange1; /* Bits 0-31 */ 372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ulUnicodeRange2; /* Bits 32-63 */ 373049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ulUnicodeRange3; /* Bits 64-95 */ 374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ulUnicodeRange4; /* Bits 96-127 */ 375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char achVendID[4]; 377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort fsSelection; 379049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usFirstCharIndex; 380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usLastCharIndex; 381049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short sTypoAscender; 382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short sTypoDescender; 383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short sTypoLineGap; 384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usWinAscent; 385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usWinDescent; 386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* only version 1 tables: */ 388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ulCodePageRange1; /* Bits 0-31 */ 390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ulCodePageRange2; /* Bits 32-63 */ 391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* only version 2 tables: */ 393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 394049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short sxHeight; 395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short sCapHeight; 396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usDefaultChar; 397049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usBreakChar; 398049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usMaxContext; 399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_OS2; 401049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 402049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 404049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Postscript */ 407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 4090a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* A structure used to model a TrueType PostScript table. All fields */ 410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* comply to the TrueType specification. This structure does not */ 4110a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* reference the PostScript glyph names, which can be nevertheless */ 412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* accessed with the `ttpost' module. */ 413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_Postscript_ 415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed FormatType; 417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed italicAngle; 418049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short underlinePosition; 419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short underlineThickness; 420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong isFixedPitch; 421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong minMemType42; 422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong maxMemType42; 423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong minMemType1; 424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong maxMemType1; 425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Glyph names follow in the file, but we don't */ 427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* load them by default. See the ttpost.c file. */ 428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_Postscript; 430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 432049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 433049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 434049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_PCLT */ 436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to model a TrueType PCLT table. All fields */ 439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* comply to the TrueType specification. */ 440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_PCLT_ 442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed Version; 444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong FontNumber; 445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort Pitch; 446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort xHeight; 447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort Style; 448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort TypeFamily; 449049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort CapHeight; 450049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort SymbolSet; 451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char TypeFace[16]; 452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char CharacterComplement[8]; 453049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char FileName[6]; 454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char StrokeWeight; 455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char WidthType; 456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte SerifStyle; 457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte Reserved; 458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_PCLT; 460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_MaxProfile */ 466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The maximum profile is a table containing many max values which */ 469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* can be used to pre-allocate arrays. This ensures that no memory */ 470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* allocation occurs during a glyph load. */ 471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* version :: The version number. */ 474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* numGlyphs :: The number of glyphs in this TrueType */ 476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font. */ 477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxPoints :: The maximum number of points in a */ 479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* non-composite TrueType glyph. See also */ 480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the structure element */ 481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `maxCompositePoints'. */ 482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxContours :: The maximum number of contours in a */ 484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* non-composite TrueType glyph. See also */ 485049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the structure element */ 486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `maxCompositeContours'. */ 487049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 488049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxCompositePoints :: The maximum number of points in a */ 489049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* composite TrueType glyph. See also the */ 490049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* structure element `maxPoints'. */ 491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxCompositeContours :: The maximum number of contours in a */ 493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* composite TrueType glyph. See also the */ 494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* structure element `maxContours'. */ 495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxZones :: The maximum number of zones used for */ 497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph hinting. */ 498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxTwilightPoints :: The maximum number of points in the */ 500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* twilight zone used for glyph hinting. */ 501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxStorage :: The maximum number of elements in the */ 503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* storage area used for glyph hinting. */ 504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxFunctionDefs :: The maximum number of function */ 506049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* definitions in the TrueType bytecode for */ 507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* this font. */ 508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxInstructionDefs :: The maximum number of instruction */ 510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* definitions in the TrueType bytecode for */ 511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* this font. */ 512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 513049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxStackElements :: The maximum number of stack elements used */ 514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* during bytecode interpretation. */ 515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxSizeOfInstructions :: The maximum number of TrueType opcodes */ 517049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* used for glyph hinting. */ 518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxComponentElements :: The maximum number of simple (i.e., non- */ 520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* composite) glyphs in a composite glyph. */ 521049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxComponentDepth :: The maximum nesting depth of composite */ 523049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs. */ 524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This structure is only used during font loading. */ 527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 528049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_MaxProfile_ 529049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed version; 531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort numGlyphs; 532049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxPoints; 533049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxContours; 534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxCompositePoints; 535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxCompositeContours; 536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxZones; 537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxTwilightPoints; 538049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxStorage; 539049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxFunctionDefs; 540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxInstructionDefs; 541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxStackElements; 542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxSizeOfInstructions; 543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxComponentElements; 544049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxComponentDepth; 545049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 546049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_MaxProfile; 547049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 548049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 549049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 550049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 551049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Enum> */ 552049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Sfnt_Tag */ 553049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 554049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 555049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* An enumeration used to specify the index of an SFNT table. */ 556049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Used in the @FT_Get_Sfnt_Table API function. */ 557049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 558049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef enum FT_Sfnt_Tag_ 559049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 560aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich ft_sfnt_head = 0, /* TT_Header */ 561aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich ft_sfnt_maxp = 1, /* TT_MaxProfile */ 562aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich ft_sfnt_os2 = 2, /* TT_OS2 */ 563aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich ft_sfnt_hhea = 3, /* TT_HoriHeader */ 564aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich ft_sfnt_vhea = 4, /* TT_VertHeader */ 565aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich ft_sfnt_post = 5, /* TT_Postscript */ 566aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich ft_sfnt_pclt = 6, /* TT_PCLT */ 567049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 568049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project sfnt_max /* internal end mark */ 569049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 570049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Sfnt_Tag; 571049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 572049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 573049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 574049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 575049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 576049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 577049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 578049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Get_Sfnt_Table */ 579049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 580049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 5810a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Return a pointer to a given SFNT table within a face. */ 582049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 583049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 584049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* face :: A handle to the source. */ 585049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 586049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* tag :: The index of the SFNT table. */ 587049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 588049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 5890a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* A type-less pointer to the table. This will be~0 in case of */ 590049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* error, or if the corresponding table was not found *OR* loaded */ 591049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* from the file. */ 592049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 593aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* Use a typecast according to `tag' to access the structure */ 594aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* elements. */ 595aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* */ 596049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 597049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The table is owned by the face object and disappears with it. */ 598049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 599049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This function is only useful to access SFNT tables that are loaded */ 600049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */ 601049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* a list. */ 602049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 603a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* Here an example how to access the `vhea' table: */ 604a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* */ 605a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* { */ 606a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* TT_VertHeader* vert_header; */ 607a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* */ 608a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* */ 609a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* vert_header = */ 610a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* (TT_VertHeader*)FT_Get_Sfnt_Table( face, ft_sfnt_vhea ); */ 611a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* } */ 612a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* */ 613049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( void* ) 614049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Get_Sfnt_Table( FT_Face face, 615049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Sfnt_Tag tag ); 616049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 617049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 618049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************** 619049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 620049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @function: 621049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Load_Sfnt_Table 622049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 623049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 6240a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Load any font table into client memory. 625049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 626049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 627049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * face :: 628049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the source face. 629049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 630049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * tag :: 6310a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * The four-byte tag of the table to load. Use the value~0 if you want 632049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * to access the whole font file. Otherwise, you can use one of the 633049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new 634049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * one with @FT_MAKE_TAG. 635049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 636049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * offset :: 637049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The starting offset in the table (or file if tag == 0). 638049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 639049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @output: 640049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * buffer :: 641049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The target buffer address. The client must ensure that the memory 642049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * array is big enough to hold the data. 643049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 644049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @inout: 645049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * length :: 646049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * If the `length' parameter is NULL, then try to load the whole table. 647049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Return an error code if it fails. 648049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 6490a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Else, if `*length' is~0, exit immediately while returning the 650049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * table's (or file) full size in it. 651049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 652049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Else the number of bytes to read from the table or file, from the 653049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * starting offset. 654049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 655049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 6560a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * FreeType error code. 0~means success. 657049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 658049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 659049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * If you need to determine the table's length you should first call this 6600a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * function with `*length' set to~0, as in the following example: 661049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 662049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * { 663049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_ULong length = 0; 664049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 665049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 666049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); 667049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * if ( error ) { ... table does not exist ... } 668049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 669049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * buffer = malloc( length ); 670049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * if ( buffer == NULL ) { ... not enough memory ... } 671049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 672049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); 673049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * if ( error ) { ... could not load table ... } 674049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * } 675049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 676049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 677049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Load_Sfnt_Table( FT_Face face, 678049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong tag, 679049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long offset, 680049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* buffer, 681049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong* length ); 682049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 683049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 684049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************** 685049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 686049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @function: 687049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Sfnt_Table_Info 688049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 689049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 6900a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Return information on an SFNT table. 691049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 692049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 693049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * face :: 694049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the source face. 695049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 696049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * table_index :: 697049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The index of an SFNT table. The function returns 698049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Err_Table_Missing for an invalid value. 699049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 700c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner * @inout: 701049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * tag :: 702c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner * The name tag of the SFNT table. If the value is NULL, `table_index' 703c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner * is ignored, and `length' returns the number of SFNT tables in the 704c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner * font. 705049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 706c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner * @output: 707049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * length :: 708c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner * The length of the SFNT table (or the number of SFNT tables, depending 709c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner * on `tag'). 710049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 711049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 7120a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * FreeType error code. 0~means success. 713049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 714049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 715a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * While parsing fonts, FreeType handles SFNT tables with length zero as 716a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * missing. 717049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 718049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 719049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 720049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Sfnt_Table_Info( FT_Face face, 721049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt table_index, 722049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong *tag, 723049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong *length ); 724049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 725049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 726049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 727049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 728049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 729049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Get_CMap_Language_ID */ 730049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 731049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 732049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Return TrueType/sfnt specific cmap language ID. Definitions of */ 733049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* language ID values are in `freetype/ttnameid.h'. */ 734049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 735049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 736049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* charmap :: */ 737049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The target charmap. */ 738049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 739049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 740049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The language ID of `charmap'. If `charmap' doesn't belong to a */ 7410a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* TrueType/sfnt face, just return~0 as the default value. */ 742049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 743a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* For a format~14 cmap (to access Unicode IVS), the return value is */ 744a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* 0xFFFFFFFF. */ 745a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* */ 746049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_ULong ) 747049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Get_CMap_Language_ID( FT_CharMap charmap ); 748049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 749049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 750049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 751049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 752049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 753049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Get_CMap_Format */ 754049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 755049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 756049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Return TrueType/sfnt specific cmap format. */ 757049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 758049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 759049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* charmap :: */ 760049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The target charmap. */ 761049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 762049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 763049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The format of `charmap'. If `charmap' doesn't belong to a */ 764049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType/sfnt face, return -1. */ 765049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 766049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Long ) 767049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Get_CMap_Format( FT_CharMap charmap ); 768049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 769049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 770049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 771049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 772049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 773049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 774049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __TTTABLES_H__ */ 775049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 776049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 777049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 778