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/* */ 8a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin/* Copyright 1996-2017 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 20055aee28cedc3631434b2636fc6093c0d4d818abJungshik Shin#ifndef TTTABLES_H_ 21055aee28cedc3631434b2636fc6093c0d4d818abJungshik Shin#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> */ 48a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* This section contains definitions of some basic tables specific to */ 49a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* TrueType and OpenType as well as some routines used to access and */ 50a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* process them. */ 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 52fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* <Order> */ 53fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* TT_Header */ 54fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* TT_HoriHeader */ 55fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* TT_VertHeader */ 56fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* TT_OS2 */ 57fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* TT_Postscript */ 58fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* TT_PCLT */ 59fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* TT_MaxProfile */ 60fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 61fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Sfnt_Tag */ 62fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Get_Sfnt_Table */ 63fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Load_Sfnt_Table */ 64fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Sfnt_Table_Info */ 65fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 66fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Get_CMap_Language_ID */ 67fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Get_CMap_Format */ 68fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 69fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_PARAM_TAG_UNPATENTED_HINTING */ 70fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Header */ 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 80a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* A structure to model a TrueType font header table. All fields */ 81a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* follow the OpenType specification. */ 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_Header_ 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed Table_Version; 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed Font_Revision; 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long CheckSum_Adjust; 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long Magic_Number; 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort Flags; 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort Units_Per_EM; 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long Created [2]; 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long Modified[2]; 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short xMin; 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short yMin; 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short xMax; 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short yMax; 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort Mac_Style; 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort Lowest_Rec_PPEM; 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Font_Direction; 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Index_To_Loc_Format; 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Glyph_Data_Format; 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_Header; 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_HoriHeader */ 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 118a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* A structure to model a TrueType horizontal header, the `hhea' */ 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table, as well as the corresponding horizontal metrics table, */ 120a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `hmtx'. */ 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Version :: The table version. */ 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Ascender :: The font's ascender, i.e., the distance */ 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* from the baseline to the top-most of all */ 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph points found in the font. */ 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This value is invalid in many fonts, as */ 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* it is usually set by the font designer, */ 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* and often reflects only a portion of the */ 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs found in the font (maybe ASCII). */ 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* You should use the `sTypoAscender' field */ 135a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* of the `OS/2' table instead if you want */ 136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the correct one. */ 137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Descender :: The font's descender, i.e., the distance */ 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* from the baseline to the bottom-most of */ 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* all glyph points found in the font. It */ 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* is negative. */ 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This value is invalid in many fonts, as */ 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* it is usually set by the font designer, */ 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* and often reflects only a portion of the */ 146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs found in the font (maybe ASCII). */ 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* You should use the `sTypoDescender' */ 149a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* field of the `OS/2' table instead if you */ 150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* want the correct one. */ 151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Line_Gap :: The font's line gap, i.e., the distance */ 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to add to the ascender and descender to */ 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* get the BTB, i.e., the */ 155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* baseline-to-baseline distance for the */ 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font. */ 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* advance_Width_Max :: This field is the maximum of all advance */ 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* widths found in the font. It can be */ 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* used to compute the maximum width of an */ 161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* arbitrary string of text. */ 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* min_Left_Side_Bearing :: The minimum left side bearing of all */ 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs within the font. */ 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* min_Right_Side_Bearing :: The minimum right side bearing of all */ 167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs within the font. */ 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* xMax_Extent :: The maximum horizontal extent (i.e., the */ 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `width' of a glyph's bounding box) for */ 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* all glyphs in the font. */ 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_Slope_Rise :: The rise coefficient of the cursor's */ 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* slope of the cursor (slope=rise/run). */ 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_Slope_Run :: The run coefficient of the cursor's */ 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* slope. */ 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 179a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* caret_Offset :: The cursor's offset for slanted fonts. */ 180a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* */ 1810a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Reserved :: 8~reserved bytes. */ 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1830a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* metric_Data_Format :: Always~0. */ 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table -- this value can be smaller than */ 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the total number of glyphs in the font. */ 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* long_metrics :: A pointer into the `hmtx' table. */ 190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* short_metrics :: A pointer into the `hmtx' table. */ 192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 194a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* For an OpenType variation font, the values of the following fields */ 195a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* can change after a call to @FT_Set_Var_Design_Coordinates (and */ 196a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* friends) if the font contains an `MVAR' table: `caret_Slope_Rise', */ 197a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `caret_Slope_Run', and `caret_Offset'. */ 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_HoriHeader_ 200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed Version; 202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Ascender; 203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Descender; 204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Line_Gap; 205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort advance_Width_Max; /* advance width maximum */ 207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short min_Left_Side_Bearing; /* minimum left-sb */ 209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short min_Right_Side_Bearing; /* minimum right-sb */ 210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short xMax_Extent; /* xmax extents */ 211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short caret_Slope_Rise; 212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short caret_Slope_Run; 213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short caret_Offset; 214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Reserved[4]; 216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short metric_Data_Format; 218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort number_Of_HMetrics; 219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 220a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* The following fields are not defined by the OpenType specification */ 221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* but they are used to connect the metrics header to the relevant */ 222a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `hmtx' table. */ 223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* long_metrics; 225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* short_metrics; 226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_HoriHeader; 228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_VertHeader */ 234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to model a TrueType vertical header, the `vhea' */ 237a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* table, as well as the corresponding vertical metrics table, */ 238a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `vmtx'. */ 239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Version :: The table version. */ 242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Ascender :: The font's ascender, i.e., the distance */ 244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* from the baseline to the top-most of */ 245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* all glyph points found in the font. */ 246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This value is invalid in many fonts, as */ 248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* it is usually set by the font designer, */ 249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* and often reflects only a portion of */ 250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the glyphs found in the font (maybe */ 251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ASCII). */ 252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* You should use the `sTypoAscender' */ 254a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* field of the `OS/2' table instead if */ 255a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* you want the correct one. */ 256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Descender :: The font's descender, i.e., the */ 258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* distance from the baseline to the */ 259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bottom-most of all glyph points found */ 260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in the font. It is negative. */ 261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This value is invalid in many fonts, as */ 263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* it is usually set by the font designer, */ 264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* and often reflects only a portion of */ 265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the glyphs found in the font (maybe */ 266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ASCII). */ 267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* You should use the `sTypoDescender' */ 269a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* field of the `OS/2' table instead if */ 270a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* you want the correct one. */ 271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Line_Gap :: The font's line gap, i.e., the distance */ 273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to add to the ascender and descender to */ 274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* get the BTB, i.e., the */ 275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* baseline-to-baseline distance for the */ 276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font. */ 277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* advance_Height_Max :: This field is the maximum of all */ 279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* advance heights found in the font. It */ 280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* can be used to compute the maximum */ 281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* height of an arbitrary string of text. */ 282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* min_Top_Side_Bearing :: The minimum top side bearing of all */ 284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs within the font. */ 285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */ 287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs within the font. */ 288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* yMax_Extent :: The maximum vertical extent (i.e., the */ 290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `height' of a glyph's bounding box) for */ 291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* all glyphs in the font. */ 292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_Slope_Rise :: The rise coefficient of the cursor's */ 294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* slope of the cursor (slope=rise/run). */ 295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_Slope_Run :: The run coefficient of the cursor's */ 297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* slope. */ 298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_Offset :: The cursor's offset for slanted fonts. */ 300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 3010a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Reserved :: 8~reserved bytes. */ 302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 3030a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* metric_Data_Format :: Always~0. */ 304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 305a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* number_Of_VMetrics :: Number of VMetrics entries in the */ 306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `vmtx' table -- this value can be */ 307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* smaller than the total number of glyphs */ 308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in the font. */ 309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 310a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* long_metrics :: A pointer into the `vmtx' table. */ 311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 312a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* short_metrics :: A pointer into the `vmtx' table. */ 313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 315a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* For an OpenType variation font, the values of the following fields */ 316a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* can change after a call to @FT_Set_Var_Design_Coordinates (and */ 317a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* friends) if the font contains an `MVAR' table: `Ascender', */ 318a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `Descender', `Line_Gap', `caret_Slope_Rise', `caret_Slope_Run', */ 319a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* and `caret_Offset'. */ 320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_VertHeader_ 322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed Version; 324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Ascender; 325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Descender; 326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Line_Gap; 327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort advance_Height_Max; /* advance height maximum */ 329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 330a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin FT_Short min_Top_Side_Bearing; /* minimum top-sb */ 331a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin FT_Short min_Bottom_Side_Bearing; /* minimum bottom-sb */ 332a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin FT_Short yMax_Extent; /* ymax extents */ 333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short caret_Slope_Rise; 334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short caret_Slope_Run; 335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short caret_Offset; 336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short Reserved[4]; 338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short metric_Data_Format; 340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort number_Of_VMetrics; 341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 342a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* The following fields are not defined by the OpenType specification */ 343a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* but they are used to connect the metrics header to the relevant */ 344a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `vmtx' table. */ 345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* long_metrics; 347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* short_metrics; 348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_VertHeader; 350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_OS2 */ 356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 358a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* A structure to model a TrueType `OS/2' table. All fields comply */ 359a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* to the OpenType specification. */ 360a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* */ 361a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* Note that we now support old Mac fonts that do not include an */ 362a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `OS/2' table. In this case, the `version' field is always set to */ 363a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* 0xFFFF. */ 364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 365a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* <Note> */ 366a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* For an OpenType variation font, the values of the following fields */ 367a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* can change after a call to @FT_Set_Var_Design_Coordinates (and */ 368a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* friends) if the font contains an `MVAR' table: `sCapHeight', */ 369a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `sTypoAscender', `sTypoDescender', `sTypoLineGap', `sxHeight', */ 370a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `usWinAscent', `usWinDescent', `yStrikeoutPosition', */ 371a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `yStrikeoutSize', `ySubscriptXOffset', `ySubScriptXSize', */ 372a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `ySubscriptYOffset', `ySubscriptYSize', `ySuperscriptXOffset', */ 373a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `ySuperscriptXSize', `ySuperscriptYOffset', and */ 374a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `ySuperscriptYSize'. */ 375a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* */ 376a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* Possible values for bits in the `ulUnicodeRangeX' fields are given */ 377a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* by the @TT_UCR_XXX macros. */ 378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 379a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin 380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_OS2_ 381049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort version; /* 0x0001 - more or 0xFFFF */ 383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short xAvgCharWidth; 384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usWeightClass; 385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usWidthClass; 386fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki FT_UShort fsType; 387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySubscriptXSize; 388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySubscriptYSize; 389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySubscriptXOffset; 390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySubscriptYOffset; 391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySuperscriptXSize; 392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySuperscriptYSize; 393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySuperscriptXOffset; 394049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short ySuperscriptYOffset; 395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short yStrikeoutSize; 396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short yStrikeoutPosition; 397049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short sFamilyClass; 398049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte panose[10]; 400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 401049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ulUnicodeRange1; /* Bits 0-31 */ 402049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ulUnicodeRange2; /* Bits 32-63 */ 403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ulUnicodeRange3; /* Bits 64-95 */ 404049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ulUnicodeRange4; /* Bits 96-127 */ 405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char achVendID[4]; 407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort fsSelection; 409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usFirstCharIndex; 410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usLastCharIndex; 411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short sTypoAscender; 412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short sTypoDescender; 413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short sTypoLineGap; 414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usWinAscent; 415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usWinDescent; 416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 417ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* only version 1 and higher: */ 418049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ulCodePageRange1; /* Bits 0-31 */ 420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ulCodePageRange2; /* Bits 32-63 */ 421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 422ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* only version 2 and higher: */ 423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short sxHeight; 425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short sCapHeight; 426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usDefaultChar; 427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usBreakChar; 428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort usMaxContext; 429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 430ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* only version 5 and higher: */ 431ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 432ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_UShort usLowerOpticalPointSize; /* in twips (1/20th points) */ 433ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_UShort usUpperOpticalPointSize; /* in twips (1/20th points) */ 434ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_OS2; 436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Postscript */ 442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 444a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* A structure to model a TrueType `post' table. All fields comply */ 445a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* to the OpenType specification. This structure does not reference */ 446a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* a font's PostScript glyph names; use @FT_Get_Glyph_Name to */ 447a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* retrieve them. */ 448a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* */ 449a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* <Note> */ 450a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* For an OpenType variation font, the values of the following fields */ 451a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* can change after a call to @FT_Set_Var_Design_Coordinates (and */ 452a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* friends) if the font contains an `MVAR' table: `underlinePosition' */ 453a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* and `underlineThickness'. */ 454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_Postscript_ 456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed FormatType; 458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed italicAngle; 459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short underlinePosition; 460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short underlineThickness; 461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong isFixedPitch; 462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong minMemType42; 463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong maxMemType42; 464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong minMemType1; 465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong maxMemType1; 466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 467a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* Glyph names follow in the `post' table, but we don't */ 468a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* load them by default. */ 469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_Postscript; 471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_PCLT */ 477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 479a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* A structure to model a TrueType `PCLT' table. All fields comply */ 480a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* to the OpenType specification. */ 481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_PCLT_ 483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed Version; 485049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong FontNumber; 486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort Pitch; 487049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort xHeight; 488049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort Style; 489049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort TypeFamily; 490049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort CapHeight; 491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort SymbolSet; 492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char TypeFace[16]; 493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char CharacterComplement[8]; 494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char FileName[6]; 495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char StrokeWeight; 496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char WidthType; 497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte SerifStyle; 498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte Reserved; 499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_PCLT; 501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 506049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_MaxProfile */ 507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 509a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* The maximum profile (`maxp') table contains many max values, which */ 510a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* can be used to pre-allocate arrays for speeding up glyph loading */ 511a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* and hinting. */ 512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 513049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* version :: The version number. */ 515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* numGlyphs :: The number of glyphs in this TrueType */ 517049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font. */ 518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxPoints :: The maximum number of points in a */ 520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* non-composite TrueType glyph. See also */ 521049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `maxCompositePoints'. */ 522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 523049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxContours :: The maximum number of contours in a */ 524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* non-composite TrueType glyph. See also */ 525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `maxCompositeContours'. */ 526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxCompositePoints :: The maximum number of points in a */ 528a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* composite TrueType glyph. See also */ 529a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `maxPoints'. */ 530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxCompositeContours :: The maximum number of contours in a */ 532a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* composite TrueType glyph. See also */ 533a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* `maxContours'. */ 534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxZones :: The maximum number of zones used for */ 536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph hinting. */ 537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 538049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxTwilightPoints :: The maximum number of points in the */ 539049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* twilight zone used for glyph hinting. */ 540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxStorage :: The maximum number of elements in the */ 542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* storage area used for glyph hinting. */ 543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 544049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxFunctionDefs :: The maximum number of function */ 545049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* definitions in the TrueType bytecode for */ 546049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* this font. */ 547049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 548049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxInstructionDefs :: The maximum number of instruction */ 549049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* definitions in the TrueType bytecode for */ 550049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* this font. */ 551049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 552049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxStackElements :: The maximum number of stack elements used */ 553049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* during bytecode interpretation. */ 554049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 555049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxSizeOfInstructions :: The maximum number of TrueType opcodes */ 556049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* used for glyph hinting. */ 557049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 558049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxComponentElements :: The maximum number of simple (i.e., non- */ 559049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* composite) glyphs in a composite glyph. */ 560049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 561049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxComponentDepth :: The maximum nesting depth of composite */ 562049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs. */ 563049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 564049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 565049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This structure is only used during font loading. */ 566049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 567049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_MaxProfile_ 568049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 569049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed version; 570049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort numGlyphs; 571049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxPoints; 572049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxContours; 573049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxCompositePoints; 574049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxCompositeContours; 575049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxZones; 576049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxTwilightPoints; 577049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxStorage; 578049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxFunctionDefs; 579049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxInstructionDefs; 580049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxStackElements; 581049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxSizeOfInstructions; 582049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxComponentElements; 583049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxComponentDepth; 584049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 585049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_MaxProfile; 586049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 587049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 588049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 589049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 590049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Enum> */ 591049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Sfnt_Tag */ 592049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 593049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 594a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* An enumeration to specify indices of SFNT tables loaded and parsed */ 595a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* by FreeType during initialization of an SFNT font. Used in the */ 596a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* @FT_Get_Sfnt_Table API function. */ 597049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 598fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* <Values> */ 599fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_SFNT_HEAD :: To access the font's @TT_Header structure. */ 600fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 601fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_SFNT_MAXP :: To access the font's @TT_MaxProfile structure. */ 602fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 603fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_SFNT_OS2 :: To access the font's @TT_OS2 structure. */ 604fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 605fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_SFNT_HHEA :: To access the font's @TT_HoriHeader structure. */ 606fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 607055aee28cedc3631434b2636fc6093c0d4d818abJungshik Shin /* FT_SFNT_VHEA :: To access the font's @TT_VertHeader structure. */ 608fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 609fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_SFNT_POST :: To access the font's @TT_Postscript structure. */ 610fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 611fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_SFNT_PCLT :: To access the font's @TT_PCLT structure. */ 612fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 613049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef enum FT_Sfnt_Tag_ 614049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 615fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki FT_SFNT_HEAD, 616fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki FT_SFNT_MAXP, 617fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki FT_SFNT_OS2, 618fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki FT_SFNT_HHEA, 619fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki FT_SFNT_VHEA, 620fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki FT_SFNT_POST, 621fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki FT_SFNT_PCLT, 622049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 623fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki FT_SFNT_MAX 624049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 625049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Sfnt_Tag; 626049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 627fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag' */ 628fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* values instead */ 629fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki#define ft_sfnt_head FT_SFNT_HEAD 630fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki#define ft_sfnt_maxp FT_SFNT_MAXP 631fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki#define ft_sfnt_os2 FT_SFNT_OS2 632fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki#define ft_sfnt_hhea FT_SFNT_HHEA 633fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki#define ft_sfnt_vhea FT_SFNT_VHEA 634fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki#define ft_sfnt_post FT_SFNT_POST 635fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki#define ft_sfnt_pclt FT_SFNT_PCLT 636049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 637049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 638049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 639049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 640049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 641049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Get_Sfnt_Table */ 642049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 643049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 644a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* Return a pointer to a given SFNT table stored within a face. */ 645049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 646049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 647049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* face :: A handle to the source. */ 648049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 649049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* tag :: The index of the SFNT table. */ 650049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 651049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 652a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* A type-less pointer to the table. This will be NULL in case of */ 653049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* error, or if the corresponding table was not found *OR* loaded */ 654049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* from the file. */ 655049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 656aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* Use a typecast according to `tag' to access the structure */ 657aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* elements. */ 658aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* */ 659049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 660049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The table is owned by the face object and disappears with it. */ 661049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 662049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This function is only useful to access SFNT tables that are loaded */ 663049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */ 664049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* a list. */ 665049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 666727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* Here an example how to access the `vhea' table: */ 667727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 668727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* { */ 669727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* TT_VertHeader* vert_header; */ 670727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 671727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 672727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* vert_header = */ 673fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA ); */ 674727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* } */ 675727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 676049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( void* ) 677049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Get_Sfnt_Table( FT_Face face, 678049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Sfnt_Tag tag ); 679049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 680049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 681a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /************************************************************************** 682a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 683a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * @function: 684a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * FT_Load_Sfnt_Table 685a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 686a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * @description: 687a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * Load any SFNT font table into client memory. 688a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 689a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * @input: 690a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * face :: 691a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * A handle to the source face. 692a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 693a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * tag :: 694a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * The four-byte tag of the table to load. Use value~0 if you want 695a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * to access the whole font file. Otherwise, you can use one of the 696a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new 697a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * one with @FT_MAKE_TAG. 698a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 699a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * offset :: 700a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * The starting offset in the table (or file if tag~==~0). 701a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 702a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * @output: 703a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * buffer :: 704a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * The target buffer address. The client must ensure that the memory 705a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * array is big enough to hold the data. 706a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 707a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * @inout: 708a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * length :: 709a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * If the `length' parameter is NULL, try to load the whole table. 710a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * Return an error code if it fails. 711a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 712a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * Else, if `*length' is~0, exit immediately while returning the 713a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * table's (or file) full size in it. 714a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 715a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * Else the number of bytes to read from the table or file, from the 716a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * starting offset. 717a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 718a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * @return: 719a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * FreeType error code. 0~means success. 720a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 721a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * @note: 722a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * If you need to determine the table's length you should first call this 723a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * function with `*length' set to~0, as in the following example: 724a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 725a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * { 726a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * FT_ULong length = 0; 727a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 728a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 729a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); 730a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * if ( error ) { ... table does not exist ... } 731a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 732a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * buffer = malloc( length ); 733a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * if ( buffer == NULL ) { ... not enough memory ... } 734a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 735a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); 736a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * if ( error ) { ... could not load table ... } 737a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * } 738a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 739a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * Note that structures like @TT_Header or @TT_OS2 can't be used with 740a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * this function; they are limited to @FT_Get_Sfnt_Table. Reason is that 741a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * those structures depend on the processor architecture, with varying 742a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * size (e.g. 32bit vs. 64bit) or order (big endian vs. little endian). 743a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 744a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin */ 745049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 746049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Load_Sfnt_Table( FT_Face face, 747049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong tag, 748049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long offset, 749049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* buffer, 750049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong* length ); 751049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 752049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 753a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /************************************************************************** 754a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 755a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * @function: 756a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * FT_Sfnt_Table_Info 757a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 758a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * @description: 759a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * Return information on an SFNT table. 760a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 761a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * @input: 762a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * face :: 763a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * A handle to the source face. 764a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 765a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * table_index :: 766a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * The index of an SFNT table. The function returns 767a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * FT_Err_Table_Missing for an invalid value. 768a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 769a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * @inout: 770a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * tag :: 771a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * The name tag of the SFNT table. If the value is NULL, `table_index' 772a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * is ignored, and `length' returns the number of SFNT tables in the 773a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * font. 774a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 775a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * @output: 776a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * length :: 777a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * The length of the SFNT table (or the number of SFNT tables, depending 778a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * on `tag'). 779a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 780a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * @return: 781a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * FreeType error code. 0~means success. 782a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 783a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * @note: 784a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * While parsing fonts, FreeType handles SFNT tables with length zero as 785a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * missing. 786a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin * 787a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin */ 788049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 789049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Sfnt_Table_Info( FT_Face face, 790049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt table_index, 791049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong *tag, 792049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong *length ); 793049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 794049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 795049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 796049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 797049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 798049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Get_CMap_Language_ID */ 799049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 800049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 801a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* Return cmap language ID as specified in the OpenType standard. */ 802a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* Definitions of language ID values are in file @FT_TRUETYPE_IDS_H. */ 803049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 804049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 805049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* charmap :: */ 806049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The target charmap. */ 807049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 808049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 809a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* The language ID of `charmap'. If `charmap' doesn't belong to an */ 810a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* SFNT face, just return~0 as the default value. */ 811049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 812727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* For a format~14 cmap (to access Unicode IVS), the return value is */ 813727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* 0xFFFFFFFF. */ 814727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 815049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_ULong ) 816049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Get_CMap_Language_ID( FT_CharMap charmap ); 817049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 818049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 819049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 820049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 821049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 822049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Get_CMap_Format */ 823049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 824049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 825a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* Return the format of an SFNT `cmap' table. */ 826049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 827049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 828049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* charmap :: */ 829049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The target charmap. */ 830049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 831049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 832a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* The format of `charmap'. If `charmap' doesn't belong to an SFNT */ 833a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin /* face, return -1. */ 834049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 835049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Long ) 836049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Get_CMap_Format( FT_CharMap charmap ); 837049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 838049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 839049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 840049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 841049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 842049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 843055aee28cedc3631434b2636fc6093c0d4d818abJungshik Shin#endif /* TTTABLES_H_ */ 844049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 845049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 846049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 847