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/* */ 8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007, 2008 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> */ 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_LongMetricsRec */ 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure modeling the long metrics of the `hmtx' and `vmtx' */ 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType tables. The values are expressed in font units. */ 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* advance :: The advance width or height for the glyph. */ 151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bearing :: The left-side or top-side bearing for the glyph. */ 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_LongMetricsRec_ 155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort advance; 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short bearing; 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_LongMetricsRec, *TT_LongMetrics; 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_ShortMetrics */ 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A simple type to model the short metrics of the `hmtx' and `vmtx' */ 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* tables. */ 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Short TT_ShortMetrics; 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_NameEntryRec */ 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure modeling TrueType name records. Name records are used */ 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to store important strings like family name, style name, */ 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* copyright, etc. in _localized_ versions (i.e., language, encoding, */ 183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* etc). */ 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* platformID :: The ID of the name's encoding platform. */ 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* encodingID :: The platform-specific ID for the name's encoding. */ 189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* languageID :: The platform-specific ID for the name's language. */ 191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* nameID :: The ID specifying what kind of name this is. */ 193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* stringLength :: The length of the string in bytes. */ 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* stringOffset :: The offset to the string in the `name' table. */ 197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* string :: A pointer to the string's bytes. Note that these */ 199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* are usually UTF-16 encoded characters. */ 200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_NameEntryRec_ 202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort platformID; 204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort encodingID; 205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort languageID; 206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort nameID; 207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort stringLength; 208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong stringOffset; 209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* this last field is not defined in the spec */ 211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* but used by the FreeType engine */ 212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* string; 214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_NameEntryRec, *TT_NameEntry; 216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_NameTableRec */ 222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure modeling the TrueType name table. */ 225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* format :: The format of the name table. */ 228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* numNameRecords :: The number of names in table. */ 230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* storageOffset :: The offset of the name table in the `name' */ 232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType table. */ 233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* names :: An array of name records. */ 235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* stream :: the file's input stream. */ 237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_NameTableRec_ 239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort format; 241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt numNameRecords; 242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt storageOffset; 243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_NameEntryRec* names; 244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Stream stream; 245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_NameTableRec, *TT_NameTable; 247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** OPTIONAL TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/ 255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_GaspRangeRec */ 266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A tiny structure used to model a gasp range according to the */ 269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType specification. */ 270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* maxPPEM :: The maximum ppem value to which `gaspFlag' applies. */ 273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* gaspFlag :: A flag describing the grid-fitting and anti-aliasing */ 275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* modes to be used. */ 276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_GaspRangeRec_ 278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort maxPPEM; 280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort gaspFlag; 281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_GaspRangeRec, *TT_GaspRange; 283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define TT_GASP_GRIDFIT 0x01 286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define TT_GASP_DOGRAY 0x02 287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_GaspRec */ 293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure modeling the TrueType `gasp' table used to specify */ 296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* grid-fitting and anti-aliasing behaviour. */ 297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* version :: The version number. */ 300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* numRanges :: The number of gasp ranges in table. */ 302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* gaspRanges :: An array of gasp ranges. */ 304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_Gasp_ 306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort version; 308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort numRanges; 309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_GaspRange gaspRanges; 310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_GaspRec; 312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_CONFIG_OPTION_OLD_INTERNALS 315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_HdmxEntryRec */ 320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A small structure used to model the pre-computed widths of a given */ 323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* size. They are found in the `hdmx' table. */ 324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ppem :: The pixels per EM value at which these metrics apply. */ 327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_width :: The maximum advance width for this metric. */ 329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* widths :: An array of widths. Note: These are 8-bit bytes. */ 331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_HdmxEntryRec_ 333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte ppem; 335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte max_width; 336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* widths; 337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_HdmxEntryRec, *TT_HdmxEntry; 339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_HdmxRec */ 345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to model the `hdmx' table, which contains */ 348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pre-computed widths for a set of given sizes/dimensions. */ 349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* version :: The version number. */ 352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_records :: The number of hdmx records. */ 354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* records :: An array of hdmx records. */ 356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_HdmxRec_ 358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort version; 360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short num_records; 361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_HdmxEntry records; 362049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 363049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_HdmxRec, *TT_Hdmx; 364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 365049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 366049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 367049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Kern0_PairRec */ 370049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to model a kerning pair for the kerning table */ 373049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* format 0. The engine now loads this table if it finds one in the */ 374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font file. */ 375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* left :: The index of the left glyph in pair. */ 378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 379049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* right :: The index of the right glyph in pair. */ 380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 381049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* value :: The kerning distance. A positive value spaces the */ 382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs, a negative one makes them closer. */ 383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_Kern0_PairRec_ 385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort left; /* index of left glyph in pair */ 387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort right; /* index of right glyph in pair */ 388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_FWord value; /* kerning value */ 389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_Kern0_PairRec, *TT_Kern0_Pair; 391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */ 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 /*** ***/ 399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** EMBEDDED BITMAPS SUPPORT ***/ 401049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 402049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 404049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_SBit_MetricsRec */ 412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to hold the big metrics of a given glyph bitmap */ 415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in a TrueType or OpenType font. These are usually found in the */ 416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `EBDT' (Microsoft) or `bloc' (Apple) table. */ 417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 418049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* height :: The glyph height in pixels. */ 420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* width :: The glyph width in pixels. */ 422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horiBearingX :: The horizontal left bearing. */ 424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horiBearingY :: The horizontal top bearing. */ 426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horiAdvance :: The horizontal advance. */ 428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertBearingX :: The vertical left bearing. */ 430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertBearingY :: The vertical top bearing. */ 432049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 433049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertAdvance :: The vertical advance. */ 434049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_SBit_MetricsRec_ 436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte height; 438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte width; 439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char horiBearingX; 441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char horiBearingY; 442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte horiAdvance; 443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char vertBearingX; 445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char vertBearingY; 446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte vertAdvance; 447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_SBit_MetricsRec, *TT_SBit_Metrics; 449049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 450049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 453049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_SBit_SmallMetricsRec */ 455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to hold the small metrics of a given glyph bitmap */ 458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in a TrueType or OpenType font. These are usually found in the */ 459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `EBDT' (Microsoft) or the `bdat' (Apple) table. */ 460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* height :: The glyph height in pixels. */ 463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* width :: The glyph width in pixels. */ 465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bearingX :: The left-side bearing. */ 467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bearingY :: The top-side bearing. */ 469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* advance :: The advance width or height. */ 471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_SBit_Small_Metrics_ 473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte height; 475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte width; 476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char bearingX; 478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char bearingY; 479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte advance; 480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_SBit_SmallMetricsRec, *TT_SBit_SmallMetrics; 482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 485049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 487049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_SBit_LineMetricsRec */ 488049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 489049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 490049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to describe the text line metrics of a given */ 491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bitmap strike, for either a horizontal or vertical layout. */ 492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ascender :: The ascender in pixels. */ 495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* descender :: The descender in pixels. */ 497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_width :: The maximum glyph width in pixels. */ 499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_slope_enumerator :: Rise of the caret slope, typically set */ 501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to 1 for non-italic fonts. */ 502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_slope_denominator :: Rise of the caret slope, typically set */ 504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to 0 for non-italic fonts. */ 505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 506049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* caret_offset :: Offset in pixels to move the caret for */ 507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* proper positioning. */ 508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* min_origin_SB :: Minimum of horiBearingX (resp. */ 510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertBearingY). */ 511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* min_advance_SB :: Minimum of */ 512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 513049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horizontal advance - */ 514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ( horiBearingX + width ) */ 515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* resp. */ 517049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertical advance - */ 519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ( vertBearingY + height ) */ 520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 521049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_before_BL :: Maximum of horiBearingY (resp. */ 522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertBearingY). */ 523049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* min_after_BL :: Minimum of */ 525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horiBearingY - height */ 527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 528049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* resp. */ 529049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertBearingX - width */ 531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 532049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pads :: Unused (to make the size of the record */ 533049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* a multiple of 32 bits. */ 534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_SBit_LineMetricsRec_ 536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char ascender; 538049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char descender; 539049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte max_width; 540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char caret_slope_numerator; 541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char caret_slope_denominator; 542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char caret_offset; 543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char min_origin_SB; 544049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char min_advance_SB; 545049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char max_before_BL; 546049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char min_after_BL; 547049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char pads[2]; 548049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 549049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_SBit_LineMetricsRec, *TT_SBit_LineMetrics; 550049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 551049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 552049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 553049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 554049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 555049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_SBit_RangeRec */ 556049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 557049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 558049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A TrueType/OpenType subIndexTable as defined in the `EBLC' */ 559049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* (Microsoft) or `bloc' (Apple) tables. */ 560049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 561049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 562049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* first_glyph :: The first glyph index in the range. */ 563049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 564049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* last_glyph :: The last glyph index in the range. */ 565049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 566049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* index_format :: The format of index table. Valid values are 1 */ 567049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to 5. */ 568049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 569049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* image_format :: The format of `EBDT' image data. */ 570049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 571049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* image_offset :: The offset to image data in `EBDT'. */ 572049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 573049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* image_size :: For index formats 2 and 5. This is the size in */ 574049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bytes of each glyph bitmap. */ 575049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 576049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* big_metrics :: For index formats 2 and 5. This is the big */ 577049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* metrics for each glyph bitmap. */ 578049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 579049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_glyphs :: For index formats 4 and 5. This is the number of */ 580049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyphs in the code array. */ 581049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 582049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph_offsets :: For index formats 1 and 3. */ 583049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 584049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph_codes :: For index formats 4 and 5. */ 585049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 586049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table_offset :: The offset of the index table in the `EBLC' */ 587049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table. Only used during strike loading. */ 588049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 589049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_SBit_RangeRec_ 590049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 591049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort first_glyph; 592049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort last_glyph; 593049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 594049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort index_format; 595049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort image_format; 596049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong image_offset; 597049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 598049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong image_size; 599049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_MetricsRec metrics; 600049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong num_glyphs; 601049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 602049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong* glyph_offsets; 603049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort* glyph_codes; 604049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 605049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong table_offset; 606049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 607049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_SBit_RangeRec, *TT_SBit_Range; 608049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 609049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 610049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 611049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 612049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 613049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_SBit_StrikeRec */ 614049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 615049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 616049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used describe a given bitmap strike in the `EBLC' */ 617049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* (Microsoft) or `bloc' (Apple) tables. */ 618049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 619049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 620049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_index_ranges :: The number of index ranges. */ 621049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 622049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* index_ranges :: An array of glyph index ranges. */ 623049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 624049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* color_ref :: Unused. `color_ref' is put in for future */ 625049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* enhancements, but these fields are already */ 626049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in use by other platforms (e.g. Newton). */ 627049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* For details, please see */ 628049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 629049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* http://fonts.apple.com/ */ 630049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TTRefMan/RM06/Chap6bloc.html */ 631049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 632049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* hori :: The line metrics for horizontal layouts. */ 633049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 634049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vert :: The line metrics for vertical layouts. */ 635049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 636049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* start_glyph :: The lowest glyph index for this strike. */ 637049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 638049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* end_glyph :: The highest glyph index for this strike. */ 639049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 640049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* x_ppem :: The number of horizontal pixels per EM. */ 641049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 642049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* y_ppem :: The number of vertical pixels per EM. */ 643049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 644049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bit_depth :: The bit depth. Valid values are 1, 2, 4, */ 645049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* and 8. */ 646049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 647049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* flags :: Is this a vertical or horizontal strike? For */ 648049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* details, please see */ 649049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 650049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* http://fonts.apple.com/ */ 651049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TTRefMan/RM06/Chap6bloc.html */ 652049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 653049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_SBit_StrikeRec_ 654049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 655049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int num_ranges; 656049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_Range sbit_ranges; 657049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ranges_offset; 658049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 659049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong color_ref; 660049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 661049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_LineMetricsRec hori; 662049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_LineMetricsRec vert; 663049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 664049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort start_glyph; 665049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort end_glyph; 666049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 667049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte x_ppem; 668049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte y_ppem; 669049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 670049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte bit_depth; 671049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char flags; 672049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 673049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_SBit_StrikeRec, *TT_SBit_Strike; 674049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 675049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 676049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 677049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 678049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 679049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_SBit_ComponentRec */ 680049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 681049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 682049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A simple structure to describe a compound sbit element. */ 683049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 684049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 685049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph_code :: The element's glyph index. */ 686049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 687049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* x_offset :: The element's left bearing. */ 688049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 689049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* y_offset :: The element's top bearing. */ 690049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 691049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_SBit_ComponentRec_ 692049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 693049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort glyph_code; 694049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char x_offset; 695049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char y_offset; 696049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 697049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_SBit_ComponentRec, *TT_SBit_Component; 698049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 699049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 700049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 701049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 702049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 703049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_SBit_ScaleRec */ 704049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 705049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 706049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used describe a given bitmap scaling table, as defined */ 707049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in the `EBSC' table. */ 708049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 709049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 710049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* hori :: The horizontal line metrics. */ 711049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 712049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vert :: The vertical line metrics. */ 713049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 714049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* x_ppem :: The number of horizontal pixels per EM. */ 715049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 716049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* y_ppem :: The number of vertical pixels per EM. */ 717049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 718049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* x_ppem_substitute :: Substitution x_ppem value. */ 719049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 720049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* y_ppem_substitute :: Substitution y_ppem value. */ 721049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 722049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_SBit_ScaleRec_ 723049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 724049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_LineMetricsRec hori; 725049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_LineMetricsRec vert; 726049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 727049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte x_ppem; 728049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte y_ppem; 729049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 730049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte x_ppem_substitute; 731049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte y_ppem_substitute; 732049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 733049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_SBit_ScaleRec, *TT_SBit_Scale; 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 /*** ***/ 740049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 741049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** POSTSCRIPT GLYPH NAMES SUPPORT ***/ 742049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 743049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 744049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 745049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 746049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 747049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 748049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 749049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 750049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 751049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 752049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Post_20Rec */ 753049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 754049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 755049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Postscript names sub-table, format 2.0. Stores the PS name of */ 756049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* each glyph in the font face. */ 757049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 758049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 759049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_glyphs :: The number of named glyphs in the table. */ 760049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 761049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_names :: The number of PS names stored in the table. */ 762049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 763049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph_indices :: The indices of the glyphs in the names arrays. */ 764049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 765049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph_names :: The PS names not in Mac Encoding. */ 766049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 767049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_Post_20Rec_ 768049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 769049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort num_glyphs; 770049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort num_names; 771049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort* glyph_indices; 772049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char** glyph_names; 773049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 774049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_Post_20Rec, *TT_Post_20; 775049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 776049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 777049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 778049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 779049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 780049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Post_25Rec */ 781049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 782049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 783049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Postscript names sub-table, format 2.5. Stores the PS name of */ 784049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* each glyph in the font face. */ 785049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 786049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 787049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_glyphs :: The number of glyphs in the table. */ 788049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 789049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* offsets :: An array of signed offsets in a normal Mac */ 790049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Postscript name encoding. */ 791049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 792049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_Post_25_ 793049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 794049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort num_glyphs; 795049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char* offsets; 796049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 797049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_Post_25Rec, *TT_Post_25; 798049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 799049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 800049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 801049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 802049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 803049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Post_NamesRec */ 804049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 805049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 806049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Postscript names table, either format 2.0 or 2.5. */ 807049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 808049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 809049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* loaded :: A flag to indicate whether the PS names are loaded. */ 810049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 811049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* format_20 :: The sub-table used for format 2.0. */ 812049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 813049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* format_25 :: The sub-table used for format 2.5. */ 814049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 815049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_Post_NamesRec_ 816049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 817049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool loaded; 818049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 819049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project union 820049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 821049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Post_20Rec format_20; 822049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Post_25Rec format_25; 823049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 824049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } names; 825049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 826049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_Post_NamesRec, *TT_Post_Names; 827049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 828049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 829049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 830049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 831049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 832049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 833049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 834049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** GX VARIATION TABLE SUPPORT ***/ 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 /*************************************************************************/ 840049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 841049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 842049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT 843049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct GX_BlendRec_ *GX_Blend; 844049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 845049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 846049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 847049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 848049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 849049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 850049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 851049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** EMBEDDED BDF PROPERTIES TABLE SUPPORT ***/ 852049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 853049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 854049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 855049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 856049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 857049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 858049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* 859049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * These types are used to support a `BDF ' table that isn't part of the 860049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * official TrueType specification. It is mainly used in SFNT-based 861049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * bitmap fonts that were generated from a set of BDF fonts. 862049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 863049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The format of the table is as follows. 864049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 865049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * USHORT version `BDF ' table version number, should be 0x0001. 866049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * USHORT strikeCount Number of strikes (bitmap sizes) in this table. 867049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * ULONG stringTable Offset (from start of BDF table) to string 868049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * table. 869049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 870049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This is followed by an array of `strikeCount' descriptors, having the 871049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * following format. 872049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 873049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * USHORT ppem Vertical pixels per EM for this strike. 874049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * USHORT numItems Number of items for this strike (properties and 875049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * atoms). Maximum is 255. 876049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 877049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This array in turn is followed by `strikeCount' value sets. Each 878049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * `value set' is an array of `numItems' items with the following format. 879049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 880049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * ULONG item_name Offset in string table to item name. 881049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * USHORT item_type The item type. Possible values are 882049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 0 => string (e.g., COMMENT) 883049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 1 => atom (e.g., FONT or even SIZE) 884049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 2 => int32 885049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 3 => uint32 886049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 0x10 => A flag to indicate a properties. This 887049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * is ORed with the above values. 888049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * ULONG item_value For strings => Offset into string table without 889049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * the corresponding double quotes. 890049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * For atoms => Offset into string table. 891049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * For integers => Direct value. 892049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 893049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * All strings in the string table consist of bytes and are 894049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * zero-terminated. 895049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 896049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 897049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 898049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_CONFIG_OPTION_BDF 899049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 900049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_BDFRec_ 901049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 902049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* table; 903049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* table_end; 904049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* strings; 905295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner FT_ULong strings_size; 906049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt num_strikes; 907049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool loaded; 908049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 909049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_BDFRec, *TT_BDF; 910049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 911049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* TT_CONFIG_OPTION_BDF */ 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 /*** ***/ 917049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 918049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ORIGINAL TT_FACE CLASS DEFINITION ***/ 919049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 920049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*** ***/ 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 /* */ 928049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This structure/class is defined here because it is common to the */ 929049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* following formats: TTF, OpenType-TT, and OpenType-CFF. */ 930049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 931049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Note, however, that the classes TT_Size and TT_GlyphSlot are not */ 932049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* shared between font drivers, and are thus defined in `ttobjs.h'. */ 933049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 934049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 935049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 936049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 937049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 938049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 939049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 940049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Face */ 941049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 942049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 943049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A handle to a TrueType face/font object. A TT_Face encapsulates */ 944049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the resolution and scaling independent parts of a TrueType font */ 945049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* resource. */ 946049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 947049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 948049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The TT_Face structure is also used as a `parent class' for the */ 949049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* OpenType-CFF class (T2_Face). */ 950049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 951049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_FaceRec_* TT_Face; 952049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 953049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 954049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* a function type used for the truetype bytecode interpreter hooks */ 955049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 956049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*TT_Interpreter)( void* exec_context ); 957049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 958049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* forward declaration */ 959049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_LoaderRec_* TT_Loader; 960049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 961049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 962049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 963049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 964049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 965049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Loader_GotoTableFunc */ 966049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 967049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 968049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Seeks a stream to the start of a given TrueType table. */ 969049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 970049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 971049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* face :: A handle to the target face object. */ 972049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 973049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* tag :: A 4-byte tag used to name the table. */ 974049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 975049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* stream :: The input stream. */ 976049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 977049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Output> */ 978049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* length :: The length of the table in bytes. Set to 0 if not */ 979049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* needed. */ 980049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 981049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 982049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FreeType error code. 0 means success. */ 983049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 984049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 985049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The stream cursor must be at the font file's origin. */ 986049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 987049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 988049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*TT_Loader_GotoTableFunc)( TT_Face face, 989049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong tag, 990049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Stream stream, 991049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong* length ); 992049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 993049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 994049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 995049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 996049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 997049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Loader_StartGlyphFunc */ 998049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 999049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1000049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Seeks a stream to the start of a given glyph element, and opens a */ 1001049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* frame for it. */ 1002049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1003049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 1004049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* loader :: The current TrueType glyph loader object. */ 1005049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1006049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph index :: The index of the glyph to access. */ 1007049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1008049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* offset :: The offset of the glyph according to the */ 1009049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `locations' table. */ 1010049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1011049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* byte_count :: The size of the frame in bytes. */ 1012049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1013049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 1014049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FreeType error code. 0 means success. */ 1015049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1016049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 1017049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This function is normally equivalent to FT_STREAM_SEEK(offset) */ 1018049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* followed by FT_FRAME_ENTER(byte_count) with the loader's stream, */ 1019049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* but alternative formats (e.g. compressed ones) might use something */ 1020049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* different. */ 1021049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1022049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 1023049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*TT_Loader_StartGlyphFunc)( TT_Loader loader, 1024049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt glyph_index, 1025049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong offset, 1026049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt byte_count ); 1027049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1028049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1029049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 1030049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1031049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 1032049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Loader_ReadGlyphFunc */ 1033049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1034049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1035049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Reads one glyph element (its header, a simple glyph, or a */ 1036049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* composite) from the loader's current stream frame. */ 1037049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1038049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 1039049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* loader :: The current TrueType glyph loader object. */ 1040049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1041049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 1042049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FreeType error code. 0 means success. */ 1043049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1044049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 1045049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*TT_Loader_ReadGlyphFunc)( TT_Loader loader ); 1046049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1047049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1048049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 1049049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1050049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 1051049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Loader_EndGlyphFunc */ 1052049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1053049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1054049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Closes the current loader stream frame for the glyph. */ 1055049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1056049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 1057049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* loader :: The current TrueType glyph loader object. */ 1058049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1059049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 1060049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*TT_Loader_EndGlyphFunc)( TT_Loader loader ); 1061049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1062049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1063049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 1064049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1065049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType Face Type */ 1066049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1067049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 1068049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_Face */ 1069049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1070049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1071049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The TrueType face class. These objects model the resolution and */ 1072049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* point-size independent data found in a TrueType font file. */ 1073049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1074049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 1075049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* root :: The base FT_Face structure, managed by the */ 1076049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* base layer. */ 1077049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1078049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ttc_header :: The TrueType collection header, used when */ 1079049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the file is a `ttc' rather than a `ttf'. */ 1080049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* For ordinary font files, the field */ 1081049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `ttc_header.count' is set to 0. */ 1082049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1083049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* format_tag :: The font format tag. */ 1084049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1085049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_tables :: The number of TrueType tables in this font */ 1086049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* file. */ 1087049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1088049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* dir_tables :: The directory of TrueType tables for this */ 1089049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font file. */ 1090049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1091049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* header :: The font's font header (`head' table). */ 1092049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Read on font opening. */ 1093049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1094049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horizontal :: The font's horizontal header (`hhea' */ 1095049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table). This field also contains the */ 1096049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* associated horizontal metrics table */ 1097049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* (`hmtx'). */ 1098049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1099049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_profile :: The font's maximum profile table. Read on */ 1100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font opening. Note that some maximum */ 1101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* values cannot be taken directly from this */ 1102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table. We thus define additional fields */ 1103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* below to hold the computed maxima. */ 1104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertical_info :: A boolean which is set when the font file */ 1106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* contains vertical metrics. If not, the */ 1107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* value of the `vertical' field is */ 1108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* undefined. */ 1109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertical :: The font's vertical header (`vhea' table). */ 1111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This field also contains the associated */ 1112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertical metrics table (`vmtx'), if found. */ 1113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* IMPORTANT: The contents of this field is */ 1114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* undefined if the `verticalInfo' field is */ 1115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* unset. */ 1116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_names :: The number of name records within this */ 1118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType font. */ 1119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* name_table :: The table of name records (`name'). */ 1121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* os2 :: The font's OS/2 table (`OS/2'). */ 1123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* postscript :: The font's PostScript table (`post' */ 1125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table). The PostScript glyph names are */ 1126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* not loaded by the driver on face opening. */ 1127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* See the `ttpost' module for more details. */ 1128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cmap_table :: Address of the face's `cmap' SFNT table */ 1130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in memory (it's an extracted frame). */ 1131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cmap_size :: The size in bytes of the `cmap_table' */ 1133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* described above. */ 1134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* goto_table :: A function called by each TrueType table */ 1136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* loader to position a stream's cursor to */ 1137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the start of a given table according to */ 1138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* its tag. It defaults to TT_Goto_Face but */ 1139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* can be different for strange formats (e.g. */ 1140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Type 42). */ 1141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* access_glyph_frame :: A function used to access the frame of a */ 1143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* given glyph within the face's font file. */ 1144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* forget_glyph_frame :: A function used to forget the frame of a */ 1146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* given glyph when all data has been loaded. */ 1147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* read_glyph_header :: A function used to read a glyph header. */ 1149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* It must be called between an `access' and */ 1150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `forget'. */ 1151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* read_simple_glyph :: A function used to read a simple glyph. */ 1153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* It must be called after the header was */ 1154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* read, and before the `forget'. */ 1155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* read_composite_glyph :: A function used to read a composite glyph. */ 1157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* It must be called after the header was */ 1158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* read, and before the `forget'. */ 1159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* sfnt :: A pointer to the SFNT service. */ 1161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* psnames :: A pointer to the PostScript names service. */ 1163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* hdmx :: The face's horizontal device metrics */ 1165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* (`hdmx' table). This table is optional in */ 1166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType/OpenType fonts. */ 1167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* gasp :: The grid-fitting and scaling properties */ 1169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table (`gasp'). This table is optional in */ 1170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType/OpenType fonts. */ 1171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pclt :: The `pclt' SFNT table. */ 1173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_sbit_strikes :: The number of sbit strikes, i.e., bitmap */ 1175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* sizes, embedded in this font. */ 1176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* sbit_strikes :: An array of sbit strikes embedded in this */ 1178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font. This table is optional in a */ 1179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType/OpenType font. */ 1180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_sbit_scales :: The number of sbit scales for this font. */ 1182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* sbit_scales :: Array of sbit scales embedded in this */ 1184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font. This table is optional in a */ 1185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType/OpenType font. */ 1186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* postscript_names :: A table used to store the Postscript names */ 1188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* of the glyphs for this font. See the */ 1189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* file `ttconfig.h' for comments on the */ 1190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES option. */ 1191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_locations :: The number of glyph locations in this */ 1193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType file. This should be */ 1194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* identical to the number of glyphs. */ 1195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Ignored for Type 2 fonts. */ 1196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph_locations :: An array of longs. These are offsets to */ 1198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph data within the `glyf' table. */ 1199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Ignored for Type 2 font faces. */ 1200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyf_len :: The length of the `glyf' table. Needed */ 1202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* for malformed `loca' tables. */ 1203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font_program_size :: Size in bytecodes of the face's font */ 1205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* program. 0 if none defined. Ignored for */ 1206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Type 2 fonts. */ 1207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font_program :: The face's font program (bytecode stream) */ 1209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* executed at load time, also used during */ 1210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph rendering. Comes from the `fpgm' */ 1211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table. Ignored for Type 2 font fonts. */ 1212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cvt_program_size :: The size in bytecodes of the face's cvt */ 1214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* program. Ignored for Type 2 fonts. */ 1215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cvt_program :: The face's cvt program (bytecode stream) */ 1217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* executed each time an instance/size is */ 1218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* changed/reset. Comes from the `prep' */ 1219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table. Ignored for Type 2 fonts. */ 1220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cvt_size :: Size of the control value table (in */ 1222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* entries). Ignored for Type 2 fonts. */ 1223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cvt :: The face's original control value table. */ 1225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Coordinates are expressed in unscaled font */ 1226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* units. Comes from the `cvt ' table. */ 1227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Ignored for Type 2 fonts. */ 1228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_kern_pairs :: The number of kerning pairs present in the */ 1230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font file. The engine only loads the */ 1231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* first horizontal format 0 kern table it */ 1232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* finds in the font file. Ignored for */ 1233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Type 2 fonts. */ 1234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* kern_table_index :: The index of the kerning table in the font */ 1236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* kerning directory. Ignored for Type 2 */ 1237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* fonts. */ 1238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* interpreter :: A pointer to the TrueType bytecode */ 1240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* interpreters field is also used to hook */ 1241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the debugger in `ttdebug'. */ 1242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* unpatented_hinting :: If true, use only unpatented methods in */ 1244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the bytecode interpreter. */ 1245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* doblend :: A boolean which is set if the font should */ 1247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* be blended (this is for GX var). */ 1248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* blend :: Contains the data needed to control GX */ 1250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* variation tables (rather like Multiple */ 1251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Master data). */ 1252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* extra :: Reserved for third-party font drivers. */ 1254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* postscript_name :: The PS name of the font. Used by the */ 1256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* postscript name service. */ 1257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_FaceRec_ 1259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 1260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_FaceRec root; 1261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TTC_HeaderRec ttc_header; 1263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong format_tag; 1265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort num_tables; 1266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Table dir_tables; 1267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Header header; /* TrueType header table */ 1269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_HoriHeader horizontal; /* TrueType horizontal header */ 1270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_MaxProfile max_profile; 1272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_CONFIG_OPTION_OLD_INTERNALS 1273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong max_components; /* stubbed to 0 */ 1274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool vertical_info; 1277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_VertHeader vertical; /* TT Vertical header, if present */ 1278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort num_names; /* number of name records */ 1280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_NameTableRec name_table; /* name table */ 1281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_OS2 os2; /* TrueType OS/2 table */ 1283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Postscript postscript; /* TrueType Postscript table */ 1284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* cmap_table; /* extracted `cmap' table */ 1286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong cmap_size; 1287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Loader_GotoTableFunc goto_table; 1289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Loader_StartGlyphFunc access_glyph_frame; 1291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Loader_EndGlyphFunc forget_glyph_frame; 1292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Loader_ReadGlyphFunc read_glyph_header; 1293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Loader_ReadGlyphFunc read_simple_glyph; 1294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Loader_ReadGlyphFunc read_composite_glyph; 1295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* a typeless pointer to the SFNT_Interface table used to load */ 1297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the basic TrueType tables in the face object */ 1298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* sfnt; 1299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* a typeless pointer to the FT_Service_PsCMapsRec table used to */ 1301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* handle glyph names <-> unicode & Mac values */ 1302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* psnames; 1303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***********************************************************************/ 1306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Optional TrueType/OpenType tables */ 1308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***********************************************************************/ 1310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horizontal device metrics */ 1312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_CONFIG_OPTION_OLD_INTERNALS 1313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_HdmxRec hdmx; 1314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* grid-fitting and scaling table */ 1317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_GaspRec gasp; /* the `gasp' table */ 1318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* PCL 5 table */ 1320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_PCLT pclt; 1321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* embedded bitmaps support */ 1323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_CONFIG_OPTION_OLD_INTERNALS 1324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong num_sbit_strikes; 1325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_Strike sbit_strikes; 1326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong num_sbit_scales; 1329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_SBit_Scale sbit_scales; 1330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* postscript names table */ 1332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Post_NamesRec postscript_names; 1333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***********************************************************************/ 1336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TrueType-specific fields (ignored by the OTF-Type2 driver) */ 1338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***********************************************************************/ 1340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the glyph locations */ 1342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_CONFIG_OPTION_OLD_INTERNALS 1343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort num_locations_stub; 1344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long* glyph_locations_stub; 1345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the font program, if any */ 1348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong font_program_size; 1349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* font_program; 1350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the cvt program, if any */ 1352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong cvt_program_size; 1353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* cvt_program; 1354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the original, unscaled, control value table */ 1356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong cvt_size; 1357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short* cvt; 1358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_CONFIG_OPTION_OLD_INTERNALS 1360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the format 0 kerning table, if any */ 1361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int num_kern_pairs; 1362049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int kern_table_index; 1363049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Kern0_Pair kern_pairs; 1364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1365049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1366049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A pointer to the bytecode interpreter to use. This is also */ 1367049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* used to hook the debugger for the `ttdebug' utility. */ 1368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_Interpreter interpreter; 1369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1370049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING 1371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Use unpatented hinting only. */ 1372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool unpatented_hinting; 1373049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***********************************************************************/ 1376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Other tables or fields. This is used by derivative formats like */ 1378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* OpenType. */ 1379049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***********************************************************************/ 1381049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Generic extra; 1383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const char* postscript_name; 1385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* since version 2.1.8, but was originally placed after */ 1387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `glyph_locations_stub' */ 1388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong glyf_len; 1389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* since version 2.1.8, but was originally placed before `extra' */ 1391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT 1392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool doblend; 1393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project GX_Blend blend; 1394049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* since version 2.2 */ 1397049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1398049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* horz_metrics; 1399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong horz_metrics_size; 1400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1401049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* vert_metrics; 1402049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong vert_metrics_size; 1403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 140441371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier FT_ULong num_locations; /* in broken TTF, gid > 0xFFFF */ 1405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* glyph_locations; 1406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* hdmx_table; 1408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong hdmx_table_size; 1409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt hdmx_record_count; 1410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong hdmx_record_size; 1411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* hdmx_record_sizes; 1412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* sbit_table; 1414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong sbit_table_size; 1415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt sbit_num_strikes; 1416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* kern_table; 1418049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong kern_table_size; 1419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt num_kern_tables; 1420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt32 kern_avail_bits; 1421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt32 kern_order_bits; 1422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_CONFIG_OPTION_BDF 1424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_BDFRec bdf; 1425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* TT_CONFIG_OPTION_BDF */ 1426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* since 2.3.0 */ 1428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong horz_metrics_offset; 1429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong vert_metrics_offset; 1430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_FaceRec; 1432049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1433049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1434049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 1435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 1437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* TT_GlyphZoneRec */ 1438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A glyph zone is used to load, scale and hint glyph outline */ 1441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* coordinates. */ 1442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 1444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* memory :: A handle to the memory manager. */ 1445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_points :: The maximal size in points of the zone. */ 1447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_contours :: Max size in links contours of the zone. */ 1449049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1450049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* n_points :: The current number of points in the zone. */ 1451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* n_contours :: The current number of contours in the zone. */ 1453049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* org :: The original glyph coordinates (font */ 1455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* units/scaled). */ 1456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cur :: The current glyph coordinates (scaled/hinted). */ 1458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* tags :: The point control tags. */ 1460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* contours :: The contours end points. */ 1462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* first_point :: Offset of the current subglyph's first point. */ 1464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_GlyphZoneRec_ 1466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 1467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Memory memory; 1468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort max_points; 1469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort max_contours; 1470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort n_points; /* number of points in zone */ 1471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short n_contours; /* number of contours */ 1472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector* org; /* original point coordinates */ 1474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector* cur; /* current point coordinates */ 1475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector* orus; /* original (unscaled) point coordinates */ 1476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* tags; /* current touch flags */ 1478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort* contours; /* contour end points */ 1479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort first_point; /* offset of first (#0) point */ 1481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_GlyphZoneRec, *TT_GlyphZone; 1483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1485049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* handle to execution context */ 1486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_ExecContextRec_* TT_ExecContext; 1487049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1488049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph loader structure */ 1489049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct TT_LoaderRec_ 1490049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 1491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Face face; 1492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Size size; 1493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_GlyphSlot glyph; 1494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_GlyphLoader gloader; 1495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong load_flags; 1497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt glyph_index; 1498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Stream stream; 1500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int byte_len; 1501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short n_contours; 1503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_BBox bbox; 1504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int left_bearing; 1505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int advance; 1506049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int linear; 1507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool linear_def; 1508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool preserve_pps; 1509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector pp1; 1510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector pp2; 1511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong glyf_offset; 1513049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the zone where we load our glyphs */ 1515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_GlyphZoneRec base; 1516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_GlyphZoneRec zone; 1517049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project TT_ExecContext exec; 1519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* instructions; 1520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong ins_pos; 1521049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* for possible extensibility in other formats */ 1523049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* other; 1524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* since version 2.1.8 */ 1526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int top_bearing; 1527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int vadvance; 1528049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector pp3; 1529049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector pp4; 1530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* since version 2.2.1 */ 1532049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* cursor; 1533049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* limit; 1534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } TT_LoaderRec; 1536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1538049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 1539049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __TTTYPES_H__ */ 1541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 1544