1ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/***************************************************************************/ 2ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/* */ 3ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/* tttables.h */ 4ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/* */ 5ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/* Basic SFNT/TrueType tables definitions and interface */ 65aa646c565b963d44e295162dbe27c039fdd2e1bWerner Lemberg/* (specification only). */ 7ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/* */ 80a0c22569deab933df21127e75db5c81f724f292Werner Lemberg/* Copyright 1996-2018 by */ 9ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 10ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/* */ 116cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg/* This file is part of the FreeType project, and may only be used, */ 126cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg/* modified, and distributed under the terms of the FreeType project */ 13ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 14ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/* this file you indicate that you have read the license and */ 15ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/* understand and accept it fully. */ 16ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/* */ 17ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/***************************************************************************/ 18ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 196cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg 2037412ff9f42212bcf4dd29d9762f3c35b5735768Werner Lemberg#ifndef TTTABLES_H_ 2137412ff9f42212bcf4dd29d9762f3c35b5735768Werner Lemberg#define TTTABLES_H_ 22ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 2390d9964ec9c6537a69dedbc29f0a6d277707dbccWerner Lemberg 24d3c8e064a5587e924f83913e5eae38586b50840cDavid Turner#include <ft2build.h> 258fba32d2d6f284bfd49ed6c0557880e0bb692f49David Turner#include FT_FREETYPE_H 268fba32d2d6f284bfd49ed6c0557880e0bb692f49David Turner 27ab3e9140009301fd028b639ab00389c1d7e5d4ccWerner Lemberg#ifdef FREETYPE_H 28ab3e9140009301fd028b639ab00389c1d7e5d4ccWerner Lemberg#error "freetype.h of FreeType 1 has been loaded!" 29ab3e9140009301fd028b639ab00389c1d7e5d4ccWerner Lemberg#error "Please fix the directory search order for header files" 30ab3e9140009301fd028b639ab00389c1d7e5d4ccWerner Lemberg#error "so that freetype.h of FreeType 2 is found first." 31ab3e9140009301fd028b639ab00389c1d7e5d4ccWerner Lemberg#endif 32ab3e9140009301fd028b639ab00389c1d7e5d4ccWerner Lemberg 3390d9964ec9c6537a69dedbc29f0a6d277707dbccWerner Lemberg 348fba32d2d6f284bfd49ed6c0557880e0bb692f49David TurnerFT_BEGIN_HEADER 356cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg 3618b55f7bbc39f92877f825326441c13f8aaf5e80David Turner /*************************************************************************/ 3718b55f7bbc39f92877f825326441c13f8aaf5e80David Turner /* */ 3838208a6e6b07c8d3e144632c33833e16023b410bWerner Lemberg /* <Section> */ 3938208a6e6b07c8d3e144632c33833e16023b410bWerner Lemberg /* truetype_tables */ 4018b55f7bbc39f92877f825326441c13f8aaf5e80David Turner /* */ 4138208a6e6b07c8d3e144632c33833e16023b410bWerner Lemberg /* <Title> */ 4238208a6e6b07c8d3e144632c33833e16023b410bWerner Lemberg /* TrueType Tables */ 4318b55f7bbc39f92877f825326441c13f8aaf5e80David Turner /* */ 4418b55f7bbc39f92877f825326441c13f8aaf5e80David Turner /* <Abstract> */ 45ee95b6f0d487cb31e90170032ab39d120258052eWerner Lemberg /* TrueType specific table types and functions. */ 4618b55f7bbc39f92877f825326441c13f8aaf5e80David Turner /* */ 4718b55f7bbc39f92877f825326441c13f8aaf5e80David Turner /* <Description> */ 488013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* This section contains definitions of some basic tables specific to */ 498013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* TrueType and OpenType as well as some routines used to access and */ 508013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* process them. */ 5118b55f7bbc39f92877f825326441c13f8aaf5e80David Turner /* */ 52de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* <Order> */ 53de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* TT_Header */ 54de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* TT_HoriHeader */ 55de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* TT_VertHeader */ 56de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* TT_OS2 */ 57de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* TT_Postscript */ 58de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* TT_PCLT */ 59de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* TT_MaxProfile */ 60de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* */ 61de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* FT_Sfnt_Tag */ 62de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* FT_Get_Sfnt_Table */ 63de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* FT_Load_Sfnt_Table */ 64de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* FT_Sfnt_Table_Info */ 65de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* */ 66de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* FT_Get_CMap_Language_ID */ 67de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* FT_Get_CMap_Format */ 68de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* */ 69de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* FT_PARAM_TAG_UNPATENTED_HINTING */ 70de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* */ 7138208a6e6b07c8d3e144632c33833e16023b410bWerner Lemberg /*************************************************************************/ 7238208a6e6b07c8d3e144632c33833e16023b410bWerner Lemberg 7390d9964ec9c6537a69dedbc29f0a6d277707dbccWerner Lemberg 74ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /*************************************************************************/ 75ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 76ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* <Struct> */ 77ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* TT_Header */ 78ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 79ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* <Description> */ 808013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* A structure to model a TrueType font header table. All fields */ 818013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* follow the OpenType specification. */ 82ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 83ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner typedef struct TT_Header_ 84ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner { 85ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Fixed Table_Version; 86ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Fixed Font_Revision; 87ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 88ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Long CheckSum_Adjust; 89ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Long Magic_Number; 90ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 91ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort Flags; 92ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort Units_Per_EM; 93ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 94ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Long Created [2]; 95ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Long Modified[2]; 96ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 97ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short xMin; 98ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short yMin; 99ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short xMax; 100ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short yMax; 101ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 102ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort Mac_Style; 103ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort Lowest_Rec_PPEM; 104ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 105ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short Font_Direction; 106ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short Index_To_Loc_Format; 107ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short Glyph_Data_Format; 108ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 109ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner } TT_Header; 110ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 111ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 112ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /*************************************************************************/ 113ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 114ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* <Struct> */ 115ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* TT_HoriHeader */ 116ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 117ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* <Description> */ 1188013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* A structure to model a TrueType horizontal header, the `hhea' */ 119ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* table, as well as the corresponding horizontal metrics table, */ 1208013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* `hmtx'. */ 121ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 122ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* <Fields> */ 123ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* Version :: The table version. */ 124ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 125ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* Ascender :: The font's ascender, i.e., the distance */ 126ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* from the baseline to the top-most of all */ 127ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* glyph points found in the font. */ 128ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 129ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* This value is invalid in many fonts, as */ 130ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* it is usually set by the font designer, */ 131ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* and often reflects only a portion of the */ 132ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* glyphs found in the font (maybe ASCII). */ 133ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 134ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* You should use the `sTypoAscender' field */ 1358013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* of the `OS/2' table instead if you want */ 136ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* the correct one. */ 137ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 138ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* Descender :: The font's descender, i.e., the distance */ 139ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* from the baseline to the bottom-most of */ 140ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* all glyph points found in the font. It */ 141ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* is negative. */ 142ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 143ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* This value is invalid in many fonts, as */ 144ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* it is usually set by the font designer, */ 145ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* and often reflects only a portion of the */ 146ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* glyphs found in the font (maybe ASCII). */ 147ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 148ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* You should use the `sTypoDescender' */ 1498013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* field of the `OS/2' table instead if you */ 150ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* want the correct one. */ 151ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 152ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* Line_Gap :: The font's line gap, i.e., the distance */ 153ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* to add to the ascender and descender to */ 154ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* get the BTB, i.e., the */ 155ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* baseline-to-baseline distance for the */ 156ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* font. */ 157ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 158ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* advance_Width_Max :: This field is the maximum of all advance */ 159ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* widths found in the font. It can be */ 160ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* used to compute the maximum width of an */ 161ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* arbitrary string of text. */ 162ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 163ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* min_Left_Side_Bearing :: The minimum left side bearing of all */ 164ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* glyphs within the font. */ 165ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 166ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* min_Right_Side_Bearing :: The minimum right side bearing of all */ 167ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* glyphs within the font. */ 168ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 169ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* xMax_Extent :: The maximum horizontal extent (i.e., the */ 170ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* `width' of a glyph's bounding box) for */ 171ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* all glyphs in the font. */ 172ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 173ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* caret_Slope_Rise :: The rise coefficient of the cursor's */ 174ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* slope of the cursor (slope=rise/run). */ 175ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 176ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* caret_Slope_Run :: The run coefficient of the cursor's */ 177ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* slope. */ 178ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 179cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* caret_Offset :: The cursor's offset for slanted fonts. */ 180cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* */ 1818a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* Reserved :: 8~reserved bytes. */ 182ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 1838a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* metric_Data_Format :: Always~0. */ 184ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 185ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ 186ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* table -- this value can be smaller than */ 187ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* the total number of glyphs in the font. */ 188ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 189ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* long_metrics :: A pointer into the `hmtx' table. */ 190ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 191ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* short_metrics :: A pointer into the `hmtx' table. */ 192ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 193ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* <Note> */ 194cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* For an OpenType variation font, the values of the following fields */ 195cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* can change after a call to @FT_Set_Var_Design_Coordinates (and */ 196cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* friends) if the font contains an `MVAR' table: `caret_Slope_Rise', */ 197cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* `caret_Slope_Run', and `caret_Offset'. */ 198cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* */ 199ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner typedef struct TT_HoriHeader_ 200ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner { 201ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Fixed Version; 202ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short Ascender; 203ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short Descender; 204ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short Line_Gap; 205ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 206ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort advance_Width_Max; /* advance width maximum */ 207ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 208ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short min_Left_Side_Bearing; /* minimum left-sb */ 209ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short min_Right_Side_Bearing; /* minimum right-sb */ 210ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short xMax_Extent; /* xmax extents */ 211ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short caret_Slope_Rise; 212ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short caret_Slope_Run; 213ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short caret_Offset; 214ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 2155dea44438f74324403cb2974a5701cac7ceab32aWerner Lemberg FT_Short Reserved[4]; 216ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 217ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short metric_Data_Format; 218ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort number_Of_HMetrics; 219ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 2208013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* The following fields are not defined by the OpenType specification */ 2214a2305cf0c686d58273e264780b48b159e42f604Werner Lemberg /* but they are used to connect the metrics header to the relevant */ 222cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* `hmtx' table. */ 223ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 224ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner void* long_metrics; 225ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner void* short_metrics; 226ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 227ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner } TT_HoriHeader; 228ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 229ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 230ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /*************************************************************************/ 231ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 232ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* <Struct> */ 233ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* TT_VertHeader */ 234ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 235ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* <Description> */ 236ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* A structure used to model a TrueType vertical header, the `vhea' */ 2378013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* table, as well as the corresponding vertical metrics table, */ 2388013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* `vmtx'. */ 239ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 240ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* <Fields> */ 241ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* Version :: The table version. */ 242ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 243ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* Ascender :: The font's ascender, i.e., the distance */ 244ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* from the baseline to the top-most of */ 245ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* all glyph points found in the font. */ 246ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 247ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* This value is invalid in many fonts, as */ 248ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* it is usually set by the font designer, */ 249ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* and often reflects only a portion of */ 250ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* the glyphs found in the font (maybe */ 251ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* ASCII). */ 252ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 253ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* You should use the `sTypoAscender' */ 2548013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* field of the `OS/2' table instead if */ 2558013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* you want the correct one. */ 256ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 257ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* Descender :: The font's descender, i.e., the */ 258ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* distance from the baseline to the */ 259ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* bottom-most of all glyph points found */ 260ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* in the font. It is negative. */ 261ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 262ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* This value is invalid in many fonts, as */ 263ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* it is usually set by the font designer, */ 264ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* and often reflects only a portion of */ 265ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* the glyphs found in the font (maybe */ 266ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* ASCII). */ 267ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 268ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* You should use the `sTypoDescender' */ 2698013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* field of the `OS/2' table instead if */ 2708013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* you want the correct one. */ 271ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 272ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* Line_Gap :: The font's line gap, i.e., the distance */ 273ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* to add to the ascender and descender to */ 274ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* get the BTB, i.e., the */ 275ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* baseline-to-baseline distance for the */ 276ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* font. */ 277ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 278ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* advance_Height_Max :: This field is the maximum of all */ 279ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* advance heights found in the font. It */ 280ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* can be used to compute the maximum */ 281ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* height of an arbitrary string of text. */ 282ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 283ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* min_Top_Side_Bearing :: The minimum top side bearing of all */ 284ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* glyphs within the font. */ 285ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 286ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */ 287ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* glyphs within the font. */ 288ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 289ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* yMax_Extent :: The maximum vertical extent (i.e., the */ 290ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* `height' of a glyph's bounding box) for */ 291ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* all glyphs in the font. */ 292ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 293ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* caret_Slope_Rise :: The rise coefficient of the cursor's */ 294ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* slope of the cursor (slope=rise/run). */ 295ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 296ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* caret_Slope_Run :: The run coefficient of the cursor's */ 297ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* slope. */ 298ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 2995dea44438f74324403cb2974a5701cac7ceab32aWerner Lemberg /* caret_Offset :: The cursor's offset for slanted fonts. */ 3005dea44438f74324403cb2974a5701cac7ceab32aWerner Lemberg /* */ 3018a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* Reserved :: 8~reserved bytes. */ 302ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 3038a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* metric_Data_Format :: Always~0. */ 304ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 3058013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* number_Of_VMetrics :: Number of VMetrics entries in the */ 306ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* `vmtx' table -- this value can be */ 307ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* smaller than the total number of glyphs */ 308ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* in the font. */ 309ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 310cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* long_metrics :: A pointer into the `vmtx' table. */ 311ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 312cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* short_metrics :: A pointer into the `vmtx' table. */ 313ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 314ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* <Note> */ 315cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* For an OpenType variation font, the values of the following fields */ 316cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* can change after a call to @FT_Set_Var_Design_Coordinates (and */ 317cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* friends) if the font contains an `MVAR' table: `Ascender', */ 318cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* `Descender', `Line_Gap', `caret_Slope_Rise', `caret_Slope_Run', */ 319cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* and `caret_Offset'. */ 320cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* */ 3214a2305cf0c686d58273e264780b48b159e42f604Werner Lemberg typedef struct TT_VertHeader_ 322ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner { 323ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Fixed Version; 324ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short Ascender; 325ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short Descender; 326ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short Line_Gap; 327ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 328ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort advance_Height_Max; /* advance height maximum */ 329ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 3308013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg FT_Short min_Top_Side_Bearing; /* minimum top-sb */ 3318013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg FT_Short min_Bottom_Side_Bearing; /* minimum bottom-sb */ 3328013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg FT_Short yMax_Extent; /* ymax extents */ 333ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short caret_Slope_Rise; 334ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short caret_Slope_Run; 335ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short caret_Offset; 336ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 3375dea44438f74324403cb2974a5701cac7ceab32aWerner Lemberg FT_Short Reserved[4]; 338ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 339ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short metric_Data_Format; 340ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort number_Of_VMetrics; 341ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 3428013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* The following fields are not defined by the OpenType specification */ 343cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* but they are used to connect the metrics header to the relevant */ 3448013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* `vmtx' table. */ 345ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 346ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner void* long_metrics; 347ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner void* short_metrics; 348ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 349ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner } TT_VertHeader; 350ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 3516cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg 352ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /*************************************************************************/ 353ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 354ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* <Struct> */ 355ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* TT_OS2 */ 356ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 357ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* <Description> */ 3588013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* A structure to model a TrueType `OS/2' table. All fields comply */ 3598013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* to the OpenType specification. */ 360ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 3618013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* Note that we now support old Mac fonts that do not include an */ 3628013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* `OS/2' table. In this case, the `version' field is always set to */ 3638013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* 0xFFFF. */ 364ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 3658013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* <Note> */ 366cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* For an OpenType variation font, the values of the following fields */ 367cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* can change after a call to @FT_Set_Var_Design_Coordinates (and */ 368cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* friends) if the font contains an `MVAR' table: `sCapHeight', */ 369cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* `sTypoAscender', `sTypoDescender', `sTypoLineGap', `sxHeight', */ 370cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* `usWinAscent', `usWinDescent', `yStrikeoutPosition', */ 371cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* `yStrikeoutSize', `ySubscriptXOffset', `ySubScriptXSize', */ 372cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* `ySubscriptYOffset', `ySubscriptYSize', `ySuperscriptXOffset', */ 373cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* `ySuperscriptXSize', `ySuperscriptYOffset', and */ 374cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* `ySuperscriptYSize'. */ 3758013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* */ 3768013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* Possible values for bits in the `ulUnicodeRangeX' fields are given */ 3778013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* by the @TT_UCR_XXX macros. */ 3788013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* */ 379cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg 380ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner typedef struct TT_OS2_ 381ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner { 382ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort version; /* 0x0001 - more or 0xFFFF */ 383ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short xAvgCharWidth; 384ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort usWeightClass; 385ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort usWidthClass; 38610aa8585932c08f048684231acb6fe1030152338Werner Lemberg FT_UShort fsType; 387ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short ySubscriptXSize; 388ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short ySubscriptYSize; 389ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short ySubscriptXOffset; 390ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short ySubscriptYOffset; 391ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short ySuperscriptXSize; 392ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short ySuperscriptYSize; 393ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short ySuperscriptXOffset; 394ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short ySuperscriptYOffset; 395ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short yStrikeoutSize; 396ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short yStrikeoutPosition; 397ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short sFamilyClass; 398ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 399ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Byte panose[10]; 400ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 401ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_ULong ulUnicodeRange1; /* Bits 0-31 */ 402ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_ULong ulUnicodeRange2; /* Bits 32-63 */ 403ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_ULong ulUnicodeRange3; /* Bits 64-95 */ 404ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_ULong ulUnicodeRange4; /* Bits 96-127 */ 405ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 406ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Char achVendID[4]; 407ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 408ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort fsSelection; 409ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort usFirstCharIndex; 410ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort usLastCharIndex; 411ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short sTypoAscender; 412ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short sTypoDescender; 413ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short sTypoLineGap; 414ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort usWinAscent; 415ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_UShort usWinDescent; 416ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 4170c61c096b8155838cea11deb4e4af5db7c29fe73Werner Lemberg /* only version 1 and higher: */ 418ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 419ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_ULong ulCodePageRange1; /* Bits 0-31 */ 420ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_ULong ulCodePageRange2; /* Bits 32-63 */ 421ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 4220c61c096b8155838cea11deb4e4af5db7c29fe73Werner Lemberg /* only version 2 and higher: */ 4236cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg 42462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_Short sxHeight; 42562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_Short sCapHeight; 42662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort usDefaultChar; 42762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort usBreakChar; 42862c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort usMaxContext; 429e49ab25c0822e1043be29e836944c7886f4e8990David Turner 4300c61c096b8155838cea11deb4e4af5db7c29fe73Werner Lemberg /* only version 5 and higher: */ 431ee5105107b59049c5d012d7658810c8378c8f411Werner Lemberg 432bc25de66c112a9ff4722264330ada77b6e651408Werner Lemberg FT_UShort usLowerOpticalPointSize; /* in twips (1/20th points) */ 433bc25de66c112a9ff4722264330ada77b6e651408Werner Lemberg FT_UShort usUpperOpticalPointSize; /* in twips (1/20th points) */ 434ee5105107b59049c5d012d7658810c8378c8f411Werner Lemberg 435ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner } TT_OS2; 436ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 437ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 438ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /*************************************************************************/ 439ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 440ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* <Struct> */ 441ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* TT_Postscript */ 442ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 443ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* <Description> */ 4448013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* A structure to model a TrueType `post' table. All fields comply */ 4458013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* to the OpenType specification. This structure does not reference */ 4468013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* a font's PostScript glyph names; use @FT_Get_Glyph_Name to */ 4478013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* retrieve them. */ 448ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner /* */ 449cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* <Note> */ 450cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* For an OpenType variation font, the values of the following fields */ 451cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* can change after a call to @FT_Set_Var_Design_Coordinates (and */ 452cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* friends) if the font contains an `MVAR' table: `underlinePosition' */ 453cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* and `underlineThickness'. */ 454cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* */ 455ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner typedef struct TT_Postscript_ 456ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner { 457ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Fixed FormatType; 458ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Fixed italicAngle; 459ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short underlinePosition; 460ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_Short underlineThickness; 461ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_ULong isFixedPitch; 462ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_ULong minMemType42; 463ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_ULong maxMemType42; 464ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_ULong minMemType1; 465ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner FT_ULong maxMemType1; 466ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 4678013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* Glyph names follow in the `post' table, but we don't */ 4688013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* load them by default. */ 469ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 470ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner } TT_Postscript; 471ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 4726cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg 47351179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner /*************************************************************************/ 47451179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner /* */ 47551179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner /* <Struct> */ 47651179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner /* TT_PCLT */ 47751179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner /* */ 47851179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner /* <Description> */ 4798013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* A structure to model a TrueType `PCLT' table. All fields comply */ 4808013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* to the OpenType specification. */ 48151179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner /* */ 4824a2305cf0c686d58273e264780b48b159e42f604Werner Lemberg typedef struct TT_PCLT_ 48351179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner { 48451179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner FT_Fixed Version; 4856cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg FT_ULong FontNumber; 4866cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg FT_UShort Pitch; 4876cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg FT_UShort xHeight; 4886cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg FT_UShort Style; 4896cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg FT_UShort TypeFamily; 4906cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg FT_UShort CapHeight; 4916cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg FT_UShort SymbolSet; 4926cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg FT_Char TypeFace[16]; 4936cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg FT_Char CharacterComplement[8]; 4946cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg FT_Char FileName[6]; 4956cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg FT_Char StrokeWeight; 4966cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg FT_Char WidthType; 4976cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg FT_Byte SerifStyle; 4986cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg FT_Byte Reserved; 4995aa646c565b963d44e295162dbe27c039fdd2e1bWerner Lemberg 50051179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner } TT_PCLT; 501ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 5026cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg 50362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /*************************************************************************/ 50462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 50562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* <Struct> */ 50662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* TT_MaxProfile */ 50762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 50862c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* <Description> */ 509cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg /* The maximum profile (`maxp') table contains many max values, which */ 5108013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* can be used to pre-allocate arrays for speeding up glyph loading */ 5118013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* and hinting. */ 51262c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 51362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* <Fields> */ 51462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* version :: The version number. */ 51562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 51662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* numGlyphs :: The number of glyphs in this TrueType */ 51762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* font. */ 51862c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 51962c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* maxPoints :: The maximum number of points in a */ 52062c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* non-composite TrueType glyph. See also */ 52162c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* `maxCompositePoints'. */ 52262c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 52362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* maxContours :: The maximum number of contours in a */ 52462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* non-composite TrueType glyph. See also */ 52562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* `maxCompositeContours'. */ 52662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 52762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* maxCompositePoints :: The maximum number of points in a */ 5288013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* composite TrueType glyph. See also */ 5298013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* `maxPoints'. */ 53062c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 53162c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* maxCompositeContours :: The maximum number of contours in a */ 5328013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* composite TrueType glyph. See also */ 5338013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* `maxContours'. */ 53462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 53562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* maxZones :: The maximum number of zones used for */ 53662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* glyph hinting. */ 53762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 53862c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* maxTwilightPoints :: The maximum number of points in the */ 53962c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* twilight zone used for glyph hinting. */ 54062c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 54162c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* maxStorage :: The maximum number of elements in the */ 54262c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* storage area used for glyph hinting. */ 54362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 54462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* maxFunctionDefs :: The maximum number of function */ 54562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* definitions in the TrueType bytecode for */ 54662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* this font. */ 54762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 54862c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* maxInstructionDefs :: The maximum number of instruction */ 54962c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* definitions in the TrueType bytecode for */ 55062c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* this font. */ 55162c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 55262c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* maxStackElements :: The maximum number of stack elements used */ 55362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* during bytecode interpretation. */ 55462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 55562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* maxSizeOfInstructions :: The maximum number of TrueType opcodes */ 55662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* used for glyph hinting. */ 55762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 55844bb303510725735ca2650bdd524af25abab0c71Werner Lemberg /* maxComponentElements :: The maximum number of simple (i.e., non- */ 55944bb303510725735ca2650bdd524af25abab0c71Werner Lemberg /* composite) glyphs in a composite glyph. */ 56062c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 56144bb303510725735ca2650bdd524af25abab0c71Werner Lemberg /* maxComponentDepth :: The maximum nesting depth of composite */ 56244bb303510725735ca2650bdd524af25abab0c71Werner Lemberg /* glyphs. */ 56362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 56462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* <Note> */ 56562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* This structure is only used during font loading. */ 56662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner /* */ 56762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner typedef struct TT_MaxProfile_ 56862c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner { 56962c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_Fixed version; 57062c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort numGlyphs; 57162c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort maxPoints; 57262c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort maxContours; 57362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort maxCompositePoints; 57462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort maxCompositeContours; 57562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort maxZones; 57662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort maxTwilightPoints; 57762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort maxStorage; 57862c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort maxFunctionDefs; 57962c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort maxInstructionDefs; 58062c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort maxStackElements; 58162c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort maxSizeOfInstructions; 58262c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort maxComponentElements; 58362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner FT_UShort maxComponentDepth; 58462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner 58562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner } TT_MaxProfile; 58662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner 58762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner 5886aa35cd5e836fb1ae7bf9b50ad7a53311f717265Werner Lemberg /*************************************************************************/ 5896aa35cd5e836fb1ae7bf9b50ad7a53311f717265Werner Lemberg /* */ 5906aa35cd5e836fb1ae7bf9b50ad7a53311f717265Werner Lemberg /* <Enum> */ 5916aa35cd5e836fb1ae7bf9b50ad7a53311f717265Werner Lemberg /* FT_Sfnt_Tag */ 5926aa35cd5e836fb1ae7bf9b50ad7a53311f717265Werner Lemberg /* */ 5936aa35cd5e836fb1ae7bf9b50ad7a53311f717265Werner Lemberg /* <Description> */ 5948013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* An enumeration to specify indices of SFNT tables loaded and parsed */ 5958013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* by FreeType during initialization of an SFNT font. Used in the */ 5968013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* @FT_Get_Sfnt_Table API function. */ 5976aa35cd5e836fb1ae7bf9b50ad7a53311f717265Werner Lemberg /* */ 59816188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* <Values> */ 59916188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* FT_SFNT_HEAD :: To access the font's @TT_Header structure. */ 60016188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* */ 60116188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* FT_SFNT_MAXP :: To access the font's @TT_MaxProfile structure. */ 60216188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* */ 60316188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* FT_SFNT_OS2 :: To access the font's @TT_OS2 structure. */ 60416188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* */ 60516188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* FT_SFNT_HHEA :: To access the font's @TT_HoriHeader structure. */ 60616188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* */ 60734207080c6e124356aee3db9aba2daeb00edf1b9Alexei Podtelezhnikov (Алексей Подтележников) /* FT_SFNT_VHEA :: To access the font's @TT_VertHeader structure. */ 60816188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* */ 60916188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* FT_SFNT_POST :: To access the font's @TT_Postscript structure. */ 61016188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* */ 61116188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* FT_SFNT_PCLT :: To access the font's @TT_PCLT structure. */ 61216188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* */ 6132b0b4221abba6497e05183d58c6a36821b9cce06Werner Lemberg typedef enum FT_Sfnt_Tag_ 614ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner { 61516188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg FT_SFNT_HEAD, 61616188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg FT_SFNT_MAXP, 61716188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg FT_SFNT_OS2, 61816188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg FT_SFNT_HHEA, 61916188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg FT_SFNT_VHEA, 62016188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg FT_SFNT_POST, 62116188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg FT_SFNT_PCLT, 62262c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner 62316188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg FT_SFNT_MAX 624e49ab25c0822e1043be29e836944c7886f4e8990David Turner 625ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner } FT_Sfnt_Tag; 626ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 62716188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag' */ 62816188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* values instead */ 62916188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg#define ft_sfnt_head FT_SFNT_HEAD 63016188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg#define ft_sfnt_maxp FT_SFNT_MAXP 63116188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg#define ft_sfnt_os2 FT_SFNT_OS2 63216188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg#define ft_sfnt_hhea FT_SFNT_HHEA 63316188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg#define ft_sfnt_vhea FT_SFNT_VHEA 63416188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg#define ft_sfnt_post FT_SFNT_POST 63516188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg#define ft_sfnt_pclt FT_SFNT_PCLT 63616188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg 6376cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg 6386cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /*************************************************************************/ 6396cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* */ 6406cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* <Function> */ 6416cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* FT_Get_Sfnt_Table */ 6426cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* */ 6436cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* <Description> */ 6448013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* Return a pointer to a given SFNT table stored within a face. */ 6456cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* */ 6466cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* <Input> */ 6476cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* face :: A handle to the source. */ 6486cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* */ 6496cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* tag :: The index of the SFNT table. */ 6506cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* */ 6516cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* <Return> */ 6528013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* A type-less pointer to the table. This will be NULL in case of */ 6536cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* error, or if the corresponding table was not found *OR* loaded */ 6546cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* from the file. */ 6556cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* */ 656a546af7684b2b6fa0ed24fac10ed979d3bcd8909Werner Lemberg /* Use a typecast according to `tag' to access the structure */ 657a546af7684b2b6fa0ed24fac10ed979d3bcd8909Werner Lemberg /* elements. */ 658a546af7684b2b6fa0ed24fac10ed979d3bcd8909Werner Lemberg /* */ 6596cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* <Note> */ 6606cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* The table is owned by the face object and disappears with it. */ 6616cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* */ 6626cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* This function is only useful to access SFNT tables that are loaded */ 6636756dc15ba424186394ca3f295ba8d125b0f047eWerner Lemberg /* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */ 664405e25949ce8446526b86436e6fec4ae4629d7d5Werner Lemberg /* a list. */ 6656cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg /* */ 66621332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg /* Here an example how to access the `vhea' table: */ 66721332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg /* */ 66821332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg /* { */ 66921332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg /* TT_VertHeader* vert_header; */ 67021332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg /* */ 67121332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg /* */ 67221332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg /* vert_header = */ 67316188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg /* (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA ); */ 67421332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg /* } */ 67521332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg /* */ 6764a2305cf0c686d58273e264780b48b159e42f604Werner Lemberg FT_EXPORT( void* ) 6774a2305cf0c686d58273e264780b48b159e42f604Werner Lemberg FT_Get_Sfnt_Table( FT_Face face, 6784a2305cf0c686d58273e264780b48b159e42f604Werner Lemberg FT_Sfnt_Tag tag ); 679ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 6803ae7cc997a270e9cbdf193e27d47168cd8da6276Werner Lemberg 6818013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /************************************************************************** 6828013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 6838013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * @function: 6848013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * FT_Load_Sfnt_Table 6858013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 6868013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * @description: 6878013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * Load any SFNT font table into client memory. 6888013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 6898013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * @input: 6908013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * face :: 6918013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * A handle to the source face. 6928013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 6938013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * tag :: 6948013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * The four-byte tag of the table to load. Use value~0 if you want 6958013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * to access the whole font file. Otherwise, you can use one of the 6968013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new 6978013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * one with @FT_MAKE_TAG. 6988013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 6998013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * offset :: 7008013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * The starting offset in the table (or file if tag~==~0). 7018013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7028013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * @output: 7038013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * buffer :: 7048013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * The target buffer address. The client must ensure that the memory 7058013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * array is big enough to hold the data. 7068013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7078013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * @inout: 7088013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * length :: 7098013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * If the `length' parameter is NULL, try to load the whole table. 7108013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * Return an error code if it fails. 7118013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7128013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * Else, if `*length' is~0, exit immediately while returning the 7138013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * table's (or file) full size in it. 7148013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7158013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * Else the number of bytes to read from the table or file, from the 7168013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * starting offset. 7178013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7188013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * @return: 7198013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * FreeType error code. 0~means success. 7208013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7218013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * @note: 7228013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * If you need to determine the table's length you should first call this 7238013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * function with `*length' set to~0, as in the following example: 7248013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7258013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * { 7268013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * FT_ULong length = 0; 7278013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7288013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7298013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); 7308013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * if ( error ) { ... table does not exist ... } 7318013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7328013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * buffer = malloc( length ); 7338013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * if ( buffer == NULL ) { ... not enough memory ... } 7348013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7358013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); 7368013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * if ( error ) { ... could not load table ... } 7378013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * } 7388013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7398013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * Note that structures like @TT_Header or @TT_OS2 can't be used with 7408013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * this function; they are limited to @FT_Get_Sfnt_Table. Reason is that 7418013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * those structures depend on the processor architecture, with varying 7428013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * size (e.g. 32bit vs. 64bit) or order (big endian vs. little endian). 7438013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7448013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg */ 745621e4886223a6528fee553f6618ed1c22297ad19David Turner FT_EXPORT( FT_Error ) 7463ae7cc997a270e9cbdf193e27d47168cd8da6276Werner Lemberg FT_Load_Sfnt_Table( FT_Face face, 7473ae7cc997a270e9cbdf193e27d47168cd8da6276Werner Lemberg FT_ULong tag, 7483ae7cc997a270e9cbdf193e27d47168cd8da6276Werner Lemberg FT_Long offset, 7493ae7cc997a270e9cbdf193e27d47168cd8da6276Werner Lemberg FT_Byte* buffer, 7503ae7cc997a270e9cbdf193e27d47168cd8da6276Werner Lemberg FT_ULong* length ); 751046f7a0c31cc6ab69483bc99df48f5977901e369David Turner 75291a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg 7538013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /************************************************************************** 7548013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7558013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * @function: 7568013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * FT_Sfnt_Table_Info 7578013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7588013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * @description: 7598013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * Return information on an SFNT table. 7608013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7618013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * @input: 7628013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * face :: 7638013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * A handle to the source face. 7648013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7658013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * table_index :: 7668013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * The index of an SFNT table. The function returns 7678013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * FT_Err_Table_Missing for an invalid value. 7688013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7698013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * @inout: 7708013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * tag :: 7718013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * The name tag of the SFNT table. If the value is NULL, `table_index' 7728013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * is ignored, and `length' returns the number of SFNT tables in the 7738013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * font. 7748013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7758013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * @output: 7768013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * length :: 7778013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * The length of the SFNT table (or the number of SFNT tables, depending 7788013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * on `tag'). 7798013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7808013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * @return: 7818013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * FreeType error code. 0~means success. 7828013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7838013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * @note: 7848013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * While parsing fonts, FreeType handles SFNT tables with length zero as 7858013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * missing. 7868013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg * 7878013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg */ 78817439423f8a62e508647d5427c8171c0b229a081Werner Lemberg FT_EXPORT( FT_Error ) 78917439423f8a62e508647d5427c8171c0b229a081Werner Lemberg FT_Sfnt_Table_Info( FT_Face face, 79017439423f8a62e508647d5427c8171c0b229a081Werner Lemberg FT_UInt table_index, 79117439423f8a62e508647d5427c8171c0b229a081Werner Lemberg FT_ULong *tag, 79217439423f8a62e508647d5427c8171c0b229a081Werner Lemberg FT_ULong *length ); 79317439423f8a62e508647d5427c8171c0b229a081Werner Lemberg 79417439423f8a62e508647d5427c8171c0b229a081Werner Lemberg 79591a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg /*************************************************************************/ 79691a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg /* */ 79791a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg /* <Function> */ 79891a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg /* FT_Get_CMap_Language_ID */ 79991a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg /* */ 80091a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg /* <Description> */ 8018013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* Return cmap language ID as specified in the OpenType standard. */ 8028013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* Definitions of language ID values are in file @FT_TRUETYPE_IDS_H. */ 80391a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg /* */ 80491a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg /* <Input> */ 80591a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg /* charmap :: */ 80691a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg /* The target charmap. */ 80791a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg /* */ 80891a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg /* <Return> */ 8098013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* The language ID of `charmap'. If `charmap' doesn't belong to an */ 8108013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* SFNT face, just return~0 as the default value. */ 81191a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg /* */ 8123af607b07d8ac4014c2d6be93ac518a349500dc4Werner Lemberg /* For a format~14 cmap (to access Unicode IVS), the return value is */ 8133af607b07d8ac4014c2d6be93ac518a349500dc4Werner Lemberg /* 0xFFFFFFFF. */ 8143af607b07d8ac4014c2d6be93ac518a349500dc4Werner Lemberg /* */ 81591a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg FT_EXPORT( FT_ULong ) 81691a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg FT_Get_CMap_Language_ID( FT_CharMap charmap ); 81791a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg 818b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg 819b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg /*************************************************************************/ 820b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg /* */ 821b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg /* <Function> */ 822b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg /* FT_Get_CMap_Format */ 823b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg /* */ 824b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg /* <Description> */ 8258013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* Return the format of an SFNT `cmap' table. */ 826b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg /* */ 827b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg /* <Input> */ 828b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg /* charmap :: */ 829b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg /* The target charmap. */ 830b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg /* */ 831b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg /* <Return> */ 8328013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* The format of `charmap'. If `charmap' doesn't belong to an SFNT */ 8338013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg /* face, return -1. */ 834b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg /* */ 835b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg FT_EXPORT( FT_Long ) 836b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg FT_Get_CMap_Format( FT_CharMap charmap ); 837b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg 83818b55f7bbc39f92877f825326441c13f8aaf5e80David Turner /* */ 83918b55f7bbc39f92877f825326441c13f8aaf5e80David Turner 84038208a6e6b07c8d3e144632c33833e16023b410bWerner Lemberg 8418fba32d2d6f284bfd49ed6c0557880e0bb692f49David TurnerFT_END_HEADER 842ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 84337412ff9f42212bcf4dd29d9762f3c35b5735768Werner Lemberg#endif /* TTTABLES_H_ */ 844ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner 8456cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg 8466cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg/* END */ 847