1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* tttypes.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Basic SFNT/TrueType type definitions and interface (specification */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* only). */ 7049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 8727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* Copyright 1996-2002, 2004-2008, 2012-2013 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 __TTTYPES_H__ 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __TTTYPES_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_TRUETYPE_TABLES_H 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_INTERNAL_OBJECTS_H 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_MULTIPLE_MASTERS_H 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** REQUIRED TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/ 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TTC_HeaderRec */ 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType collection header. This table contains the offsets of */ 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the font headers of each distinct TrueType face in the file. */ 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* tag :: Must be `ttc ' to indicate a TrueType collection. */ 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* version :: The version number. */ 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* count :: The number of faces in the collection. The */ 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* specification says this should be an unsigned long, but */ 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* we use a signed long since we need the value -1 for */ 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* specific purposes. */ 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* offsets :: The offsets of the font headers, one per face. */ 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TTC_HeaderRec_ 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong tag; 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed version; 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long count; 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong* offsets; 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TTC_HeaderRec; 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* SFNT_HeaderRec */ 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* SFNT file format header. */ 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* format_tag :: The font format tag. */ 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_tables :: The number of tables in file. */ 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* search_range :: Must be `16 * (max power of 2 <= num_tables)'. */ 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* entry_selector :: Must be log2 of `search_range / 16'. */ 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* range_shift :: Must be `num_tables * 16 - search_range'. */ 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct SFNT_HeaderRec_ 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong format_tag; 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort num_tables; 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort search_range; 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort entry_selector; 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort range_shift; 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong offset; /* not in file */ 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } SFNT_HeaderRec, *SFNT_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_TableRec */ 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This structure describes a given table of a TrueType font. */ 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Tag :: A four-bytes tag describing the table. */ 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* CheckSum :: The table checksum. This value can be ignored. */ 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Offset :: The offset of the table from the start of the TrueType */ 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font in its resource. */ 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Length :: The table length (in bytes). */ 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_TableRec_ 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong Tag; /* table type */ 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong CheckSum; /* table checksum */ 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong Offset; /* table file offset */ 135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong Length; /* table length */ 136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_TableRec, *TT_Table; 138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 143ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* WOFF_HeaderRec */ 144ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* */ 145ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* <Description> */ 146ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* WOFF file format header. */ 147ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* */ 148ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* <Fields> */ 149ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* See */ 150ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* */ 151ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* http://www.w3.org/TR/WOFF/#WOFFHeader */ 152ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* */ 153ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease typedef struct WOFF_HeaderRec_ 154ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease { 155ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong signature; 156ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong flavor; 157ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong length; 158ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_UShort num_tables; 159ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_UShort reserved; 160ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong totalSfntSize; 161ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_UShort majorVersion; 162ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_UShort minorVersion; 163ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong metaOffset; 164ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong metaLength; 165ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong metaOrigLength; 166ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong privOffset; 167ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong privLength; 168ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 169ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease } WOFF_HeaderRec, *WOFF_Header; 170ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 171ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 172ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /*************************************************************************/ 173ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* */ 174ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* <Struct> */ 175ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* WOFF_TableRec */ 176ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* */ 177ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* <Description> */ 178ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* This structure describes a given table of a WOFF font. */ 179ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* */ 180ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* <Fields> */ 181ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* Tag :: A four-bytes tag describing the table. */ 182ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* */ 183ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* Offset :: The offset of the table from the start of the WOFF */ 184ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* font in its resource. */ 185ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* */ 186ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* CompLength :: Compressed table length (in bytes). */ 187ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* */ 188ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* OrigLength :: Unompressed table length (in bytes). */ 189ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* */ 190ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* CheckSum :: The table checksum. This value can be ignored. */ 191ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* */ 192ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* OrigOffset :: The uncompressed table file offset. This value gets */ 193ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* computed while constructing the (uncompressed) SFNT */ 194ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* header. It is not contained in the WOFF file. */ 195ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* */ 196ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease typedef struct WOFF_TableRec_ 197ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease { 198ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong Tag; /* table ID */ 199ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong Offset; /* table file offset */ 200ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong CompLength; /* compressed table length */ 201ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong OrigLength; /* uncompressed table length */ 202ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong CheckSum; /* uncompressed checksum */ 203ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 204ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_ULong OrigOffset; /* uncompressed table file offset */ 205ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* (not in the WOFF file) */ 206ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease } WOFF_TableRec, *WOFF_Table; 207ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 208ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 209ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /*************************************************************************/ 210ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* */ 211ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* <Struct> */ 212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_LongMetricsRec */ 213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure modeling the long metrics of the `hmtx' and `vmtx' */ 216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType tables. The values are expressed in font units. */ 217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* advance :: The advance width or height for the glyph. */ 220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bearing :: The left-side or top-side bearing for the glyph. */ 222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_LongMetricsRec_ 224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort advance; 226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short bearing; 227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_LongMetricsRec, *TT_LongMetrics; 229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_ShortMetrics */ 235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A simple type to model the short metrics of the `hmtx' and `vmtx' */ 238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* tables. */ 239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Short TT_ShortMetrics; 241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_NameEntryRec */ 247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure modeling TrueType name records. Name records are used */ 250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to store important strings like family name, style name, */ 251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* copyright, etc. in _localized_ versions (i.e., language, encoding, */ 252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* etc). */ 253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* platformID :: The ID of the name's encoding platform. */ 256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* encodingID :: The platform-specific ID for the name's encoding. */ 258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* languageID :: The platform-specific ID for the name's language. */ 260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* nameID :: The ID specifying what kind of name this is. */ 262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* stringLength :: The length of the string in bytes. */ 264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* stringOffset :: The offset to the string in the `name' table. */ 266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* string :: A pointer to the string's bytes. Note that these */ 268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* are usually UTF-16 encoded characters. */ 269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_NameEntryRec_ 271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort platformID; 273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort encodingID; 274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort languageID; 275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort nameID; 276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort stringLength; 277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong stringOffset; 278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* this last field is not defined in the spec */ 280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* but used by the FreeType engine */ 281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* string; 283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_NameEntryRec, *TT_NameEntry; 285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_NameTableRec */ 291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure modeling the TrueType name table. */ 294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* format :: The format of the name table. */ 297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* numNameRecords :: The number of names in table. */ 299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* storageOffset :: The offset of the name table in the `name' */ 301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType table. */ 302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* names :: An array of name records. */ 304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* stream :: the file's input stream. */ 306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_NameTableRec_ 308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort format; 310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt numNameRecords; 311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt storageOffset; 312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_NameEntryRec* names; 313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Stream stream; 314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_NameTableRec, *TT_NameTable; 316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** OPTIONAL TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/ 324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_GaspRangeRec */ 335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A tiny structure used to model a gasp range according to the */ 338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType specification. */ 339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxPPEM :: The maximum ppem value to which `gaspFlag' applies. */ 342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* gaspFlag :: A flag describing the grid-fitting and anti-aliasing */ 344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* modes to be used. */ 345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_GaspRangeRec_ 347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxPPEM; 349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort gaspFlag; 350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_GaspRangeRec, *TT_GaspRange; 352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define TT_GASP_GRIDFIT 0x01 355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define TT_GASP_DOGRAY 0x02 356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_GaspRec */ 362049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 363049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure modeling the TrueType `gasp' table used to specify */ 365049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* grid-fitting and anti-aliasing behaviour. */ 366049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 367049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* version :: The version number. */ 369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 370049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* numRanges :: The number of gasp ranges in table. */ 371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* gaspRanges :: An array of gasp ranges. */ 373049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_Gasp_ 375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort version; 377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort numRanges; 378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_GaspRange gaspRanges; 379049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_GaspRec; 381049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** EMBEDDED BITMAPS SUPPORT ***/ 389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 394049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 397049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 398049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_SBit_MetricsRec */ 400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 401049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 402049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to hold the big metrics of a given glyph bitmap */ 403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in a TrueType or OpenType font. These are usually found in the */ 404049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `EBDT' (Microsoft) or `bloc' (Apple) table. */ 405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* height :: The glyph height in pixels. */ 408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* width :: The glyph width in pixels. */ 410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horiBearingX :: The horizontal left bearing. */ 412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horiBearingY :: The horizontal top bearing. */ 414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horiAdvance :: The horizontal advance. */ 416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertBearingX :: The vertical left bearing. */ 418049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertBearingY :: The vertical top bearing. */ 420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertAdvance :: The vertical advance. */ 422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_SBit_MetricsRec_ 424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 425ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_UShort height; 426ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_UShort width; 427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 428ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_Short horiBearingX; 429ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_Short horiBearingY; 430ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_UShort horiAdvance; 431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 432ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_Short vertBearingX; 433ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_Short vertBearingY; 434ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_UShort vertAdvance; 435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_SBit_MetricsRec, *TT_SBit_Metrics; 437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_SBit_SmallMetricsRec */ 443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to hold the small metrics of a given glyph bitmap */ 446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in a TrueType or OpenType font. These are usually found in the */ 447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `EBDT' (Microsoft) or the `bdat' (Apple) table. */ 448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 449049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 450049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* height :: The glyph height in pixels. */ 451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* width :: The glyph width in pixels. */ 453049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bearingX :: The left-side bearing. */ 455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bearingY :: The top-side bearing. */ 457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* advance :: The advance width or height. */ 459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_SBit_Small_Metrics_ 461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte height; 463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte width; 464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char bearingX; 466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char bearingY; 467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte advance; 468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_SBit_SmallMetricsRec, *TT_SBit_SmallMetrics; 470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_SBit_LineMetricsRec */ 476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to describe the text line metrics of a given */ 479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bitmap strike, for either a horizontal or vertical layout. */ 480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ascender :: The ascender in pixels. */ 483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* descender :: The descender in pixels. */ 485049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_width :: The maximum glyph width in pixels. */ 487049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 488049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_slope_enumerator :: Rise of the caret slope, typically set */ 489049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to 1 for non-italic fonts. */ 490049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_slope_denominator :: Rise of the caret slope, typically set */ 492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to 0 for non-italic fonts. */ 493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_offset :: Offset in pixels to move the caret for */ 495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* proper positioning. */ 496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* min_origin_SB :: Minimum of horiBearingX (resp. */ 498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertBearingY). */ 499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* min_advance_SB :: Minimum of */ 500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horizontal advance - */ 502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ( horiBearingX + width ) */ 503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* resp. */ 505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 506049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertical advance - */ 507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ( vertBearingY + height ) */ 508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_before_BL :: Maximum of horiBearingY (resp. */ 510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertBearingY). */ 511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* min_after_BL :: Minimum of */ 513049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horiBearingY - height */ 515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* resp. */ 517049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertBearingX - width */ 519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pads :: Unused (to make the size of the record */ 521049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* a multiple of 32 bits. */ 522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 523049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_SBit_LineMetricsRec_ 524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char ascender; 526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char descender; 527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte max_width; 528049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char caret_slope_numerator; 529049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char caret_slope_denominator; 530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char caret_offset; 531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char min_origin_SB; 532049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char min_advance_SB; 533049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char max_before_BL; 534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char min_after_BL; 535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char pads[2]; 536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_SBit_LineMetricsRec, *TT_SBit_LineMetrics; 538049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 539049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_SBit_RangeRec */ 544049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 545049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 546049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A TrueType/OpenType subIndexTable as defined in the `EBLC' */ 547049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* (Microsoft) or `bloc' (Apple) tables. */ 548049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 549049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 550049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* first_glyph :: The first glyph index in the range. */ 551049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 552049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* last_glyph :: The last glyph index in the range. */ 553049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 554049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* index_format :: The format of index table. Valid values are 1 */ 555049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to 5. */ 556049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 557049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* image_format :: The format of `EBDT' image data. */ 558049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 559049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* image_offset :: The offset to image data in `EBDT'. */ 560049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 561049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* image_size :: For index formats 2 and 5. This is the size in */ 562049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bytes of each glyph bitmap. */ 563049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 564049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* big_metrics :: For index formats 2 and 5. This is the big */ 565049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* metrics for each glyph bitmap. */ 566049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 567049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_glyphs :: For index formats 4 and 5. This is the number of */ 568049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs in the code array. */ 569049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 570049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph_offsets :: For index formats 1 and 3. */ 571049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 572049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph_codes :: For index formats 4 and 5. */ 573049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 574049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table_offset :: The offset of the index table in the `EBLC' */ 575049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table. Only used during strike loading. */ 576049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 577049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_SBit_RangeRec_ 578049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 579049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort first_glyph; 580049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort last_glyph; 581049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 582049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort index_format; 583049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort image_format; 584049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong image_offset; 585049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 586049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong image_size; 587049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_MetricsRec metrics; 588049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong num_glyphs; 589049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 590049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong* glyph_offsets; 591049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort* glyph_codes; 592049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 593049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong table_offset; 594049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 595049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_SBit_RangeRec, *TT_SBit_Range; 596049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 597049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 598049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 599049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 600049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 601049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_SBit_StrikeRec */ 602049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 603049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 604049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used describe a given bitmap strike in the `EBLC' */ 605049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* (Microsoft) or `bloc' (Apple) tables. */ 606049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 607049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 608049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_index_ranges :: The number of index ranges. */ 609049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 610049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* index_ranges :: An array of glyph index ranges. */ 611049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 612049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* color_ref :: Unused. `color_ref' is put in for future */ 613049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* enhancements, but these fields are already */ 614049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in use by other platforms (e.g. Newton). */ 615049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* For details, please see */ 616049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 617049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* http://fonts.apple.com/ */ 618049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TTRefMan/RM06/Chap6bloc.html */ 619049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 620049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* hori :: The line metrics for horizontal layouts. */ 621049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 622049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vert :: The line metrics for vertical layouts. */ 623049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 624049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* start_glyph :: The lowest glyph index for this strike. */ 625049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 626049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* end_glyph :: The highest glyph index for this strike. */ 627049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 628049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* x_ppem :: The number of horizontal pixels per EM. */ 629049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 630049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* y_ppem :: The number of vertical pixels per EM. */ 631049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 632049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bit_depth :: The bit depth. Valid values are 1, 2, 4, */ 633049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* and 8. */ 634049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 635049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* flags :: Is this a vertical or horizontal strike? For */ 636049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* details, please see */ 637049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 638049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* http://fonts.apple.com/ */ 639049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TTRefMan/RM06/Chap6bloc.html */ 640049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 641049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_SBit_StrikeRec_ 642049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 643049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int num_ranges; 644049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_Range sbit_ranges; 645049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ranges_offset; 646049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 647049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong color_ref; 648049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 649049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_LineMetricsRec hori; 650049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_LineMetricsRec vert; 651049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 652049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort start_glyph; 653049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort end_glyph; 654049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 655049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte x_ppem; 656049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte y_ppem; 657049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 658049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte bit_depth; 659049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char flags; 660049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 661049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_SBit_StrikeRec, *TT_SBit_Strike; 662049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 663049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 664049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 665049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 666049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 667049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_SBit_ComponentRec */ 668049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 669049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 670049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A simple structure to describe a compound sbit element. */ 671049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 672049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 673049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph_code :: The element's glyph index. */ 674049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 675049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* x_offset :: The element's left bearing. */ 676049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 677049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* y_offset :: The element's top bearing. */ 678049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 679049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_SBit_ComponentRec_ 680049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 681049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort glyph_code; 682049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char x_offset; 683049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char y_offset; 684049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 685049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_SBit_ComponentRec, *TT_SBit_Component; 686049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 687049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 688049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 689049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 690049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 691049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_SBit_ScaleRec */ 692049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 693049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 694049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used describe a given bitmap scaling table, as defined */ 695049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in the `EBSC' table. */ 696049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 697049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 698049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* hori :: The horizontal line metrics. */ 699049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 700049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vert :: The vertical line metrics. */ 701049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 702049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* x_ppem :: The number of horizontal pixels per EM. */ 703049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 704049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* y_ppem :: The number of vertical pixels per EM. */ 705049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 706049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* x_ppem_substitute :: Substitution x_ppem value. */ 707049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 708049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* y_ppem_substitute :: Substitution y_ppem value. */ 709049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 710049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_SBit_ScaleRec_ 711049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 712049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_LineMetricsRec hori; 713049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_LineMetricsRec vert; 714049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 715049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte x_ppem; 716049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte y_ppem; 717049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 718049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte x_ppem_substitute; 719049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte y_ppem_substitute; 720049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 721049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_SBit_ScaleRec, *TT_SBit_Scale; 722049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 723049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 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 /*** ***/ 729049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** POSTSCRIPT GLYPH NAMES SUPPORT ***/ 730049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 731049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 732049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 733049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 734049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 735049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 736049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 737049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 738049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 739049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 740049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Post_20Rec */ 741049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 742049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 743049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Postscript names sub-table, format 2.0. Stores the PS name of */ 744049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* each glyph in the font face. */ 745049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 746049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 747049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_glyphs :: The number of named glyphs in the table. */ 748049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 749049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_names :: The number of PS names stored in the table. */ 750049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 751049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph_indices :: The indices of the glyphs in the names arrays. */ 752049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 753049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph_names :: The PS names not in Mac Encoding. */ 754049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 755049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_Post_20Rec_ 756049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 757049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort num_glyphs; 758049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort num_names; 759049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort* glyph_indices; 760049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char** glyph_names; 761049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 762049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_Post_20Rec, *TT_Post_20; 763049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 764049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 765049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 766049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 767049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 768049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Post_25Rec */ 769049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 770049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 771049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Postscript names sub-table, format 2.5. Stores the PS name of */ 772049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* each glyph in the font face. */ 773049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 774049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 775049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_glyphs :: The number of glyphs in the table. */ 776049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 777049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* offsets :: An array of signed offsets in a normal Mac */ 778049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Postscript name encoding. */ 779049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 780049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_Post_25_ 781049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 782049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort num_glyphs; 783049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char* offsets; 784049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 785049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_Post_25Rec, *TT_Post_25; 786049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 787049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 788049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 789049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 790049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 791049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Post_NamesRec */ 792049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 793049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 794049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Postscript names table, either format 2.0 or 2.5. */ 795049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 796049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 797049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* loaded :: A flag to indicate whether the PS names are loaded. */ 798049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 799049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* format_20 :: The sub-table used for format 2.0. */ 800049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 801049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* format_25 :: The sub-table used for format 2.5. */ 802049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 803049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_Post_NamesRec_ 804049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 805049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool loaded; 806049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 807049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project union 808049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 809049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Post_20Rec format_20; 810049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Post_25Rec format_25; 811049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 812049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } names; 813049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 814049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_Post_NamesRec, *TT_Post_Names; 815049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 816049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 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 /*** ***/ 822049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** GX VARIATION TABLE SUPPORT ***/ 823049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 824049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 825049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 826049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 827049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 828049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 829049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 830049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT 831049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct GX_BlendRec_ *GX_Blend; 832049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 833049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 834049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 835049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 836049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 837049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 838049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 839049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** EMBEDDED BDF PROPERTIES TABLE SUPPORT ***/ 840049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 841049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 842049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 843049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 844049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 845049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 846049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* 847049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * These types are used to support a `BDF ' table that isn't part of the 848049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * official TrueType specification. It is mainly used in SFNT-based 849049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * bitmap fonts that were generated from a set of BDF fonts. 850049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 851049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The format of the table is as follows. 852049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 853049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * USHORT version `BDF ' table version number, should be 0x0001. 854049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * USHORT strikeCount Number of strikes (bitmap sizes) in this table. 855049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * ULONG stringTable Offset (from start of BDF table) to string 856049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * table. 857049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 858049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This is followed by an array of `strikeCount' descriptors, having the 859049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * following format. 860049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 861049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * USHORT ppem Vertical pixels per EM for this strike. 862049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * USHORT numItems Number of items for this strike (properties and 863049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * atoms). Maximum is 255. 864049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 865049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This array in turn is followed by `strikeCount' value sets. Each 866049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * `value set' is an array of `numItems' items with the following format. 867049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 868049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * ULONG item_name Offset in string table to item name. 869049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * USHORT item_type The item type. Possible values are 870049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 0 => string (e.g., COMMENT) 871049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 1 => atom (e.g., FONT or even SIZE) 872049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 2 => int32 873049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 3 => uint32 874049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 0x10 => A flag to indicate a properties. This 875049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * is ORed with the above values. 876049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * ULONG item_value For strings => Offset into string table without 877049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * the corresponding double quotes. 878049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * For atoms => Offset into string table. 879049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * For integers => Direct value. 880049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 881049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * All strings in the string table consist of bytes and are 882049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * zero-terminated. 883049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 884049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 885049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 886049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_CONFIG_OPTION_BDF 887049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 888049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_BDFRec_ 889049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 890049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* table; 891049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* table_end; 892049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* strings; 893295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner FT_ULong strings_size; 894049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt num_strikes; 895049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool loaded; 896049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 897049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_BDFRec, *TT_BDF; 898049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 899049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* TT_CONFIG_OPTION_BDF */ 900049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 901049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 902049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 903049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 904049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 905049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 906049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ORIGINAL TT_FACE CLASS DEFINITION ***/ 907049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 908049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 909049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 910049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 911049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 912049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 913049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 914049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 915049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 916049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This structure/class is defined here because it is common to the */ 917049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* following formats: TTF, OpenType-TT, and OpenType-CFF. */ 918049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 919049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Note, however, that the classes TT_Size and TT_GlyphSlot are not */ 920049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* shared between font drivers, and are thus defined in `ttobjs.h'. */ 921049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 922049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 923049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 924049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 925049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 926049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 927049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 928049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Face */ 929049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 930049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 931049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A handle to a TrueType face/font object. A TT_Face encapsulates */ 932049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the resolution and scaling independent parts of a TrueType font */ 933049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* resource. */ 934049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 935049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 936049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The TT_Face structure is also used as a `parent class' for the */ 937049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* OpenType-CFF class (T2_Face). */ 938049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 939049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_FaceRec_* TT_Face; 940049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 941049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 942049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* a function type used for the truetype bytecode interpreter hooks */ 943049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 944049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*TT_Interpreter)( void* exec_context ); 945049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 946049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* forward declaration */ 947049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_LoaderRec_* TT_Loader; 948049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 949049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 950049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 951049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 952049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 953049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Loader_GotoTableFunc */ 954049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 955049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 956049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Seeks a stream to the start of a given TrueType table. */ 957049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 958049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 959049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* face :: A handle to the target face object. */ 960049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 961049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* tag :: A 4-byte tag used to name the table. */ 962049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 963049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* stream :: The input stream. */ 964049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 965049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Output> */ 966049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* length :: The length of the table in bytes. Set to 0 if not */ 967049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* needed. */ 968049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 969049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 970049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FreeType error code. 0 means success. */ 971049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 972049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 973049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The stream cursor must be at the font file's origin. */ 974049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 975049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 976049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*TT_Loader_GotoTableFunc)( TT_Face face, 977049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong tag, 978049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Stream stream, 979049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong* length ); 980049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 981049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 982049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 983049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 984049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 985049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Loader_StartGlyphFunc */ 986049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 987049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 988049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Seeks a stream to the start of a given glyph element, and opens a */ 989049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* frame for it. */ 990049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 991049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 992049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* loader :: The current TrueType glyph loader object. */ 993049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 994049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph index :: The index of the glyph to access. */ 995049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 996049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* offset :: The offset of the glyph according to the */ 997049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `locations' table. */ 998049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 999049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* byte_count :: The size of the frame in bytes. */ 1000049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1001049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 1002049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FreeType error code. 0 means success. */ 1003049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1004049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 1005049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This function is normally equivalent to FT_STREAM_SEEK(offset) */ 1006049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* followed by FT_FRAME_ENTER(byte_count) with the loader's stream, */ 1007049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* but alternative formats (e.g. compressed ones) might use something */ 1008049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* different. */ 1009049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1010049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 1011049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*TT_Loader_StartGlyphFunc)( TT_Loader loader, 1012049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt glyph_index, 1013049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong offset, 1014049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt byte_count ); 1015049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1016049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1017049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 1018049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1019049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 1020049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Loader_ReadGlyphFunc */ 1021049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1022049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1023049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Reads one glyph element (its header, a simple glyph, or a */ 1024049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* composite) from the loader's current stream frame. */ 1025049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1026049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 1027049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* loader :: The current TrueType glyph loader object. */ 1028049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1029049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 1030049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FreeType error code. 0 means success. */ 1031049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1032049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 1033049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*TT_Loader_ReadGlyphFunc)( TT_Loader loader ); 1034049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1035049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1036049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 1037049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1038049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 1039049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Loader_EndGlyphFunc */ 1040049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1041049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1042049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Closes the current loader stream frame for the glyph. */ 1043049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1044049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 1045049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* loader :: The current TrueType glyph loader object. */ 1046049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1047049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 1048049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*TT_Loader_EndGlyphFunc)( TT_Loader loader ); 1049049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1050049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1051ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease typedef enum TT_SbitTableType_ 1052ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease { 1053ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease TT_SBIT_TABLE_TYPE_NONE = 0, 1054ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease TT_SBIT_TABLE_TYPE_EBLC, /* `EBLC' (Microsoft), */ 1055ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* `bloc' (Apple) */ 1056ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease TT_SBIT_TABLE_TYPE_CBLC, /* `CBLC' (Google) */ 1057ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease TT_SBIT_TABLE_TYPE_SBIX, /* `sbix' (Apple) */ 1058ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 1059ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* do not remove */ 1060ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease TT_SBIT_TABLE_TYPE_MAX 1061ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 1062ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease } TT_SbitTableType; 1063ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 1064ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 1065049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 1066049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1067049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType Face Type */ 1068049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1069049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 1070049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Face */ 1071049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1072049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1073049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The TrueType face class. These objects model the resolution and */ 1074049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* point-size independent data found in a TrueType font file. */ 1075049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1076049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 1077049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* root :: The base FT_Face structure, managed by the */ 1078049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* base layer. */ 1079049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1080049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ttc_header :: The TrueType collection header, used when */ 1081049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the file is a `ttc' rather than a `ttf'. */ 1082049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* For ordinary font files, the field */ 1083049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `ttc_header.count' is set to 0. */ 1084049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1085049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* format_tag :: The font format tag. */ 1086049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1087049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_tables :: The number of TrueType tables in this font */ 1088049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* file. */ 1089049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1090049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* dir_tables :: The directory of TrueType tables for this */ 1091049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font file. */ 1092049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1093049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* header :: The font's font header (`head' table). */ 1094049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Read on font opening. */ 1095049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1096049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horizontal :: The font's horizontal header (`hhea' */ 1097049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table). This field also contains the */ 1098049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* associated horizontal metrics table */ 1099049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* (`hmtx'). */ 1100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_profile :: The font's maximum profile table. Read on */ 1102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font opening. Note that some maximum */ 1103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* values cannot be taken directly from this */ 1104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table. We thus define additional fields */ 1105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* below to hold the computed maxima. */ 1106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertical_info :: A boolean which is set when the font file */ 1108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* contains vertical metrics. If not, the */ 1109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* value of the `vertical' field is */ 1110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* undefined. */ 1111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertical :: The font's vertical header (`vhea' table). */ 1113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This field also contains the associated */ 1114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertical metrics table (`vmtx'), if found. */ 1115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* IMPORTANT: The contents of this field is */ 1116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* undefined if the `verticalInfo' field is */ 1117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* unset. */ 1118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_names :: The number of name records within this */ 1120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType font. */ 1121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* name_table :: The table of name records (`name'). */ 1123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* os2 :: The font's OS/2 table (`OS/2'). */ 1125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* postscript :: The font's PostScript table (`post' */ 1127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table). The PostScript glyph names are */ 1128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* not loaded by the driver on face opening. */ 1129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* See the `ttpost' module for more details. */ 1130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cmap_table :: Address of the face's `cmap' SFNT table */ 1132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in memory (it's an extracted frame). */ 1133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cmap_size :: The size in bytes of the `cmap_table' */ 1135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* described above. */ 1136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* goto_table :: A function called by each TrueType table */ 1138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* loader to position a stream's cursor to */ 1139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the start of a given table according to */ 1140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* its tag. It defaults to TT_Goto_Face but */ 1141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* can be different for strange formats (e.g. */ 1142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Type 42). */ 1143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* access_glyph_frame :: A function used to access the frame of a */ 1145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* given glyph within the face's font file. */ 1146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* forget_glyph_frame :: A function used to forget the frame of a */ 1148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* given glyph when all data has been loaded. */ 1149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* read_glyph_header :: A function used to read a glyph header. */ 1151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* It must be called between an `access' and */ 1152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `forget'. */ 1153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* read_simple_glyph :: A function used to read a simple glyph. */ 1155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* It must be called after the header was */ 1156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* read, and before the `forget'. */ 1157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* read_composite_glyph :: A function used to read a composite glyph. */ 1159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* It must be called after the header was */ 1160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* read, and before the `forget'. */ 1161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* sfnt :: A pointer to the SFNT service. */ 1163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* psnames :: A pointer to the PostScript names service. */ 1165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* hdmx :: The face's horizontal device metrics */ 1167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* (`hdmx' table). This table is optional in */ 1168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType/OpenType fonts. */ 1169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* gasp :: The grid-fitting and scaling properties */ 1171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table (`gasp'). This table is optional in */ 1172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType/OpenType fonts. */ 1173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pclt :: The `pclt' SFNT table. */ 1175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_sbit_scales :: The number of sbit scales for this font. */ 1177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* sbit_scales :: Array of sbit scales embedded in this */ 1179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font. This table is optional in a */ 1180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType/OpenType font. */ 1181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* postscript_names :: A table used to store the Postscript names */ 1183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* of the glyphs for this font. See the */ 1184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* file `ttconfig.h' for comments on the */ 1185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES option. */ 1186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_locations :: The number of glyph locations in this */ 1188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType file. This should be */ 1189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* identical to the number of glyphs. */ 1190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Ignored for Type 2 fonts. */ 1191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph_locations :: An array of longs. These are offsets to */ 1193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph data within the `glyf' table. */ 1194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Ignored for Type 2 font faces. */ 1195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyf_len :: The length of the `glyf' table. Needed */ 1197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* for malformed `loca' tables. */ 1198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font_program_size :: Size in bytecodes of the face's font */ 1200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* program. 0 if none defined. Ignored for */ 1201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Type 2 fonts. */ 1202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font_program :: The face's font program (bytecode stream) */ 1204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* executed at load time, also used during */ 1205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph rendering. Comes from the `fpgm' */ 1206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table. Ignored for Type 2 font fonts. */ 1207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cvt_program_size :: The size in bytecodes of the face's cvt */ 1209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* program. Ignored for Type 2 fonts. */ 1210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cvt_program :: The face's cvt program (bytecode stream) */ 1212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* executed each time an instance/size is */ 1213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* changed/reset. Comes from the `prep' */ 1214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table. Ignored for Type 2 fonts. */ 1215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cvt_size :: Size of the control value table (in */ 1217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* entries). Ignored for Type 2 fonts. */ 1218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cvt :: The face's original control value table. */ 1220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Coordinates are expressed in unscaled font */ 1221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* units. Comes from the `cvt ' table. */ 1222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Ignored for Type 2 fonts. */ 1223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_kern_pairs :: The number of kerning pairs present in the */ 1225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font file. The engine only loads the */ 1226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* first horizontal format 0 kern table it */ 1227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* finds in the font file. Ignored for */ 1228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Type 2 fonts. */ 1229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* kern_table_index :: The index of the kerning table in the font */ 1231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* kerning directory. Ignored for Type 2 */ 1232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* fonts. */ 1233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* interpreter :: A pointer to the TrueType bytecode */ 1235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* interpreters field is also used to hook */ 1236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the debugger in `ttdebug'. */ 1237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* unpatented_hinting :: If true, use only unpatented methods in */ 1239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the bytecode interpreter. */ 1240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* doblend :: A boolean which is set if the font should */ 1242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* be blended (this is for GX var). */ 1243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* blend :: Contains the data needed to control GX */ 1245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* variation tables (rather like Multiple */ 1246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Master data). */ 1247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* extra :: Reserved for third-party font drivers. */ 1249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* postscript_name :: The PS name of the font. Used by the */ 1251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* postscript name service. */ 1252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_FaceRec_ 1254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 1255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_FaceRec root; 1256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TTC_HeaderRec ttc_header; 1258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong format_tag; 1260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort num_tables; 1261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Table dir_tables; 1262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Header header; /* TrueType header table */ 1264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_HoriHeader horizontal; /* TrueType horizontal header */ 1265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_MaxProfile max_profile; 1267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool vertical_info; 1269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_VertHeader vertical; /* TT Vertical header, if present */ 1270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort num_names; /* number of name records */ 1272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_NameTableRec name_table; /* name table */ 1273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_OS2 os2; /* TrueType OS/2 table */ 1275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Postscript postscript; /* TrueType Postscript table */ 1276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* cmap_table; /* extracted `cmap' table */ 1278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong cmap_size; 1279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Loader_GotoTableFunc goto_table; 1281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Loader_StartGlyphFunc access_glyph_frame; 1283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Loader_EndGlyphFunc forget_glyph_frame; 1284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Loader_ReadGlyphFunc read_glyph_header; 1285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Loader_ReadGlyphFunc read_simple_glyph; 1286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Loader_ReadGlyphFunc read_composite_glyph; 1287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* a typeless pointer to the SFNT_Interface table used to load */ 1289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the basic TrueType tables in the face object */ 1290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* sfnt; 1291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* a typeless pointer to the FT_Service_PsCMapsRec table used to */ 1293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* handle glyph names <-> unicode & Mac values */ 1294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* psnames; 1295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***********************************************************************/ 1298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Optional TrueType/OpenType tables */ 1300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***********************************************************************/ 1302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* grid-fitting and scaling table */ 1304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_GaspRec gasp; /* the `gasp' table */ 1305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* PCL 5 table */ 1307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_PCLT pclt; 1308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* embedded bitmaps support */ 1310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong num_sbit_scales; 1311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_Scale sbit_scales; 1312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* postscript names table */ 1314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Post_NamesRec postscript_names; 1315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***********************************************************************/ 1318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType-specific fields (ignored by the OTF-Type2 driver) */ 1320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***********************************************************************/ 1322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the font program, if any */ 1324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong font_program_size; 1325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* font_program; 1326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the cvt program, if any */ 1328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong cvt_program_size; 1329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* cvt_program; 1330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the original, unscaled, control value table */ 1332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong cvt_size; 1333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short* cvt; 1334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A pointer to the bytecode interpreter to use. This is also */ 1336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* used to hook the debugger for the `ttdebug' utility. */ 1337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Interpreter interpreter; 1338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING 1340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Use unpatented hinting only. */ 1341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool unpatented_hinting; 1342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***********************************************************************/ 1345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Other tables or fields. This is used by derivative formats like */ 1347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* OpenType. */ 1348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***********************************************************************/ 1350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Generic extra; 1352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const char* postscript_name; 1354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong glyf_len; 1356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT 1358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool doblend; 1359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project GX_Blend blend; 1360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1362049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* since version 2.2 */ 1363049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* horz_metrics; 1365049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong horz_metrics_size; 1366049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1367049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* vert_metrics; 1368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong vert_metrics_size; 1369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 137041371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier FT_ULong num_locations; /* in broken TTF, gid > 0xFFFF */ 1371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* glyph_locations; 1372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1373049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* hdmx_table; 1374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong hdmx_table_size; 1375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt hdmx_record_count; 1376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong hdmx_record_size; 1377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* hdmx_record_sizes; 1378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1379049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* sbit_table; 1380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong sbit_table_size; 1381ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease TT_SbitTableType sbit_table_type; 1382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt sbit_num_strikes; 1383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* kern_table; 1385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong kern_table_size; 1386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt num_kern_tables; 1387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt32 kern_avail_bits; 1388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt32 kern_order_bits; 1389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_CONFIG_OPTION_BDF 1391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_BDFRec bdf; 1392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* TT_CONFIG_OPTION_BDF */ 1393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1394049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* since 2.3.0 */ 1395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong horz_metrics_offset; 1396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong vert_metrics_offset; 1397049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1398727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING 1399727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* since 2.4.12 */ 1400727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_ULong sph_found_func_flags; /* special functions found */ 1401727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* for this face */ 1402727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_Bool sph_compatibility_mode; 1403727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ 1404727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 1405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_FaceRec; 1406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 1409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 1411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_GlyphZoneRec */ 1412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A glyph zone is used to load, scale and hint glyph outline */ 1415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* coordinates. */ 1416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 1418049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* memory :: A handle to the memory manager. */ 1419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1420727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* max_points :: The maximum size in points of the zone. */ 1421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_contours :: Max size in links contours of the zone. */ 1423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* n_points :: The current number of points in the zone. */ 1425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* n_contours :: The current number of contours in the zone. */ 1427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* org :: The original glyph coordinates (font */ 1429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* units/scaled). */ 1430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cur :: The current glyph coordinates (scaled/hinted). */ 1432049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1433049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* tags :: The point control tags. */ 1434049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* contours :: The contours end points. */ 1436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* first_point :: Offset of the current subglyph's first point. */ 1438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_GlyphZoneRec_ 1440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 1441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Memory memory; 1442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort max_points; 1443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort max_contours; 1444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort n_points; /* number of points in zone */ 1445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short n_contours; /* number of contours */ 1446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector* org; /* original point coordinates */ 1448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector* cur; /* current point coordinates */ 1449049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector* orus; /* original (unscaled) point coordinates */ 1450049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* tags; /* current touch flags */ 1452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort* contours; /* contour end points */ 1453049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort first_point; /* offset of first (#0) point */ 1455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_GlyphZoneRec, *TT_GlyphZone; 1457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* handle to execution context */ 1460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_ExecContextRec_* TT_ExecContext; 1461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph loader structure */ 1463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_LoaderRec_ 1464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 1465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Face face; 1466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Size size; 1467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_GlyphSlot glyph; 1468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_GlyphLoader gloader; 1469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong load_flags; 1471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt glyph_index; 1472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Stream stream; 1474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int byte_len; 1475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short n_contours; 1477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_BBox bbox; 1478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int left_bearing; 1479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int advance; 1480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int linear; 1481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool linear_def; 1482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector pp1; 1483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector pp2; 1484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1485049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong glyf_offset; 1486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1487049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the zone where we load our glyphs */ 1488049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_GlyphZoneRec base; 1489049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_GlyphZoneRec zone; 1490049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_ExecContext exec; 1492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* instructions; 1493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ins_pos; 1494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* for possible extensibility in other formats */ 1496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* other; 1497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* since version 2.1.8 */ 1499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int top_bearing; 1500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int vadvance; 1501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector pp3; 1502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector pp4; 1503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* since version 2.2.1 */ 1505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* cursor; 1506049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* limit; 1507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_LoaderRec; 1509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 1512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1513049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __TTTYPES_H__ */ 1514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 1517