< prev index next >

src/java.desktop/share/native/libfreetype/include/freetype/tttables.h

Print this page

        

*** 1,22 **** ! /***************************************************************************/ ! /* */ ! /* tttables.h */ ! /* */ ! /* Basic SFNT/TrueType tables definitions and interface */ ! /* (specification only). */ ! /* */ ! /* Copyright 1996-2018 by */ ! /* David Turner, Robert Wilhelm, and Werner Lemberg. */ ! /* */ ! /* This file is part of the FreeType project, and may only be used, */ ! /* modified, and distributed under the terms of the FreeType project */ ! /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ ! /* this file you indicate that you have read the license and */ ! /* understand and accept it fully. */ ! /* */ ! /***************************************************************************/ #ifndef TTTABLES_H_ #define TTTABLES_H_ --- 1,22 ---- ! /**************************************************************************** ! * ! * tttables.h ! * ! * Basic SFNT/TrueType tables definitions and interface ! * (specification only). ! * ! * Copyright (C) 1996-2019 by ! * David Turner, Robert Wilhelm, and Werner Lemberg. ! * ! * This file is part of the FreeType project, and may only be used, ! * modified, and distributed under the terms of the FreeType project ! * license, LICENSE.TXT. By continuing to use, modify, or distribute ! * this file you indicate that you have read the license and ! * understand and accept it fully. ! * ! */ #ifndef TTTABLES_H_ #define TTTABLES_H_
*** 31,87 **** #endif FT_BEGIN_HEADER ! /*************************************************************************/ ! /* */ ! /* <Section> */ ! /* truetype_tables */ ! /* */ ! /* <Title> */ ! /* TrueType Tables */ ! /* */ ! /* <Abstract> */ ! /* TrueType specific table types and functions. */ ! /* */ ! /* <Description> */ ! /* This section contains definitions of some basic tables specific to */ ! /* TrueType and OpenType as well as some routines used to access and */ ! /* process them. */ ! /* */ ! /* <Order> */ ! /* TT_Header */ ! /* TT_HoriHeader */ ! /* TT_VertHeader */ ! /* TT_OS2 */ ! /* TT_Postscript */ ! /* TT_PCLT */ ! /* TT_MaxProfile */ ! /* */ ! /* FT_Sfnt_Tag */ ! /* FT_Get_Sfnt_Table */ ! /* FT_Load_Sfnt_Table */ ! /* FT_Sfnt_Table_Info */ ! /* */ ! /* FT_Get_CMap_Language_ID */ ! /* FT_Get_CMap_Format */ ! /* */ ! /* FT_PARAM_TAG_UNPATENTED_HINTING */ ! /* */ ! /*************************************************************************/ ! /*************************************************************************/ ! /* */ ! /* <Struct> */ ! /* TT_Header */ ! /* */ ! /* <Description> */ ! /* A structure to model a TrueType font header table. All fields */ ! /* follow the OpenType specification. */ ! /* */ typedef struct TT_Header_ { FT_Fixed Table_Version; FT_Fixed Font_Revision; --- 31,89 ---- #endif FT_BEGIN_HEADER ! /************************************************************************** ! * ! * @section: ! * truetype_tables ! * ! * @title: ! * TrueType Tables ! * ! * @abstract: ! * TrueType-specific table types and functions. ! * ! * @description: ! * This section contains definitions of some basic tables specific to ! * TrueType and OpenType as well as some routines used to access and ! * process them. ! * ! * @order: ! * TT_Header ! * TT_HoriHeader ! * TT_VertHeader ! * TT_OS2 ! * TT_Postscript ! * TT_PCLT ! * TT_MaxProfile ! * ! * FT_Sfnt_Tag ! * FT_Get_Sfnt_Table ! * FT_Load_Sfnt_Table ! * FT_Sfnt_Table_Info ! * ! * FT_Get_CMap_Language_ID ! * FT_Get_CMap_Format ! * ! * FT_PARAM_TAG_UNPATENTED_HINTING ! * ! */ ! /************************************************************************** ! * ! * @struct: ! * TT_Header ! * ! * @description: ! * A structure to model a TrueType font header table. All fields follow ! * the OpenType specification. The 64-bit timestamps are stored in ! * two-element arrays `Created` and `Modified`, first the upper then ! * the lower 32~bits. ! */ typedef struct TT_Header_ { FT_Fixed Table_Version; FT_Fixed Font_Revision;
*** 89,100 **** FT_Long Magic_Number; FT_UShort Flags; FT_UShort Units_Per_EM; ! FT_Long Created [2]; ! FT_Long Modified[2]; FT_Short xMin; FT_Short yMin; FT_Short xMax; FT_Short yMax; --- 91,102 ---- FT_Long Magic_Number; FT_UShort Flags; FT_UShort Units_Per_EM; ! FT_ULong Created [2]; ! FT_ULong Modified[2]; FT_Short xMin; FT_Short yMin; FT_Short xMax; FT_Short yMax;
*** 107,203 **** FT_Short Glyph_Data_Format; } TT_Header; ! /*************************************************************************/ ! /* */ ! /* <Struct> */ ! /* TT_HoriHeader */ ! /* */ ! /* <Description> */ ! /* A structure to model a TrueType horizontal header, the `hhea' */ ! /* table, as well as the corresponding horizontal metrics table, */ ! /* `hmtx'. */ ! /* */ ! /* <Fields> */ ! /* Version :: The table version. */ ! /* */ ! /* Ascender :: The font's ascender, i.e., the distance */ ! /* from the baseline to the top-most of all */ ! /* glyph points found in the font. */ ! /* */ ! /* This value is invalid in many fonts, as */ ! /* it is usually set by the font designer, */ ! /* and often reflects only a portion of the */ ! /* glyphs found in the font (maybe ASCII). */ ! /* */ ! /* You should use the `sTypoAscender' field */ ! /* of the `OS/2' table instead if you want */ ! /* the correct one. */ ! /* */ ! /* Descender :: The font's descender, i.e., the distance */ ! /* from the baseline to the bottom-most of */ ! /* all glyph points found in the font. It */ ! /* is negative. */ ! /* */ ! /* This value is invalid in many fonts, as */ ! /* it is usually set by the font designer, */ ! /* and often reflects only a portion of the */ ! /* glyphs found in the font (maybe ASCII). */ ! /* */ ! /* You should use the `sTypoDescender' */ ! /* field of the `OS/2' table instead if you */ ! /* want the correct one. */ ! /* */ ! /* Line_Gap :: The font's line gap, i.e., the distance */ ! /* to add to the ascender and descender to */ ! /* get the BTB, i.e., the */ ! /* baseline-to-baseline distance for the */ ! /* font. */ ! /* */ ! /* advance_Width_Max :: This field is the maximum of all advance */ ! /* widths found in the font. It can be */ ! /* used to compute the maximum width of an */ ! /* arbitrary string of text. */ ! /* */ ! /* min_Left_Side_Bearing :: The minimum left side bearing of all */ ! /* glyphs within the font. */ ! /* */ ! /* min_Right_Side_Bearing :: The minimum right side bearing of all */ ! /* glyphs within the font. */ ! /* */ ! /* xMax_Extent :: The maximum horizontal extent (i.e., the */ ! /* `width' of a glyph's bounding box) for */ ! /* all glyphs in the font. */ ! /* */ ! /* caret_Slope_Rise :: The rise coefficient of the cursor's */ ! /* slope of the cursor (slope=rise/run). */ ! /* */ ! /* caret_Slope_Run :: The run coefficient of the cursor's */ ! /* slope. */ ! /* */ ! /* caret_Offset :: The cursor's offset for slanted fonts. */ ! /* */ ! /* Reserved :: 8~reserved bytes. */ ! /* */ ! /* metric_Data_Format :: Always~0. */ ! /* */ ! /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ ! /* table -- this value can be smaller than */ ! /* the total number of glyphs in the font. */ ! /* */ ! /* long_metrics :: A pointer into the `hmtx' table. */ ! /* */ ! /* short_metrics :: A pointer into the `hmtx' table. */ ! /* */ ! /* <Note> */ ! /* For an OpenType variation font, the values of the following fields */ ! /* can change after a call to @FT_Set_Var_Design_Coordinates (and */ ! /* friends) if the font contains an `MVAR' table: `caret_Slope_Rise', */ ! /* `caret_Slope_Run', and `caret_Offset'. */ ! /* */ typedef struct TT_HoriHeader_ { FT_Fixed Version; FT_Short Ascender; FT_Short Descender; --- 109,205 ---- FT_Short Glyph_Data_Format; } TT_Header; ! /************************************************************************** ! * ! * @struct: ! * TT_HoriHeader ! * ! * @description: ! * A structure to model a TrueType horizontal header, the 'hhea' table, ! * as well as the corresponding horizontal metrics table, 'hmtx'. ! * ! * @fields: ! * Version :: ! * The table version. ! * ! * Ascender :: ! * The font's ascender, i.e., the distance from the baseline to the ! * top-most of all glyph points found in the font. ! * ! * This value is invalid in many fonts, as it is usually set by the ! * font designer, and often reflects only a portion of the glyphs found ! * in the font (maybe ASCII). ! * ! * You should use the `sTypoAscender` field of the 'OS/2' table instead ! * if you want the correct one. ! * ! * Descender :: ! * The font's descender, i.e., the distance from the baseline to the ! * bottom-most of all glyph points found in the font. It is negative. ! * ! * This value is invalid in many fonts, as it is usually set by the ! * font designer, and often reflects only a portion of the glyphs found ! * in the font (maybe ASCII). ! * ! * You should use the `sTypoDescender` field of the 'OS/2' table ! * instead if you want the correct one. ! * ! * Line_Gap :: ! * The font's line gap, i.e., the distance to add to the ascender and ! * descender to get the BTB, i.e., the baseline-to-baseline distance ! * for the font. ! * ! * advance_Width_Max :: ! * This field is the maximum of all advance widths found in the font. ! * It can be used to compute the maximum width of an arbitrary string ! * of text. ! * ! * min_Left_Side_Bearing :: ! * The minimum left side bearing of all glyphs within the font. ! * ! * min_Right_Side_Bearing :: ! * The minimum right side bearing of all glyphs within the font. ! * ! * xMax_Extent :: ! * The maximum horizontal extent (i.e., the 'width' of a glyph's ! * bounding box) for all glyphs in the font. ! * ! * caret_Slope_Rise :: ! * The rise coefficient of the cursor's slope of the cursor ! * (slope=rise/run). ! * ! * caret_Slope_Run :: ! * The run coefficient of the cursor's slope. ! * ! * caret_Offset :: ! * The cursor's offset for slanted fonts. ! * ! * Reserved :: ! * 8~reserved bytes. ! * ! * metric_Data_Format :: ! * Always~0. ! * ! * number_Of_HMetrics :: ! * Number of HMetrics entries in the 'hmtx' table -- this value can be ! * smaller than the total number of glyphs in the font. ! * ! * long_metrics :: ! * A pointer into the 'hmtx' table. ! * ! * short_metrics :: ! * A pointer into the 'hmtx' table. ! * ! * @note: ! * For an OpenType variation font, the values of the following fields can ! * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if ! * the font contains an 'MVAR' table: `caret_Slope_Rise`, ! * `caret_Slope_Run`, and `caret_Offset`. ! */ typedef struct TT_HoriHeader_ { FT_Fixed Version; FT_Short Ascender; FT_Short Descender;
*** 217,325 **** FT_Short metric_Data_Format; FT_UShort number_Of_HMetrics; /* The following fields are not defined by the OpenType specification */ /* but they are used to connect the metrics header to the relevant */ ! /* `hmtx' table. */ void* long_metrics; void* short_metrics; } TT_HoriHeader; ! /*************************************************************************/ ! /* */ ! /* <Struct> */ ! /* TT_VertHeader */ ! /* */ ! /* <Description> */ ! /* A structure used to model a TrueType vertical header, the `vhea' */ ! /* table, as well as the corresponding vertical metrics table, */ ! /* `vmtx'. */ ! /* */ ! /* <Fields> */ ! /* Version :: The table version. */ ! /* */ ! /* Ascender :: The font's ascender, i.e., the distance */ ! /* from the baseline to the top-most of */ ! /* all glyph points found in the font. */ ! /* */ ! /* This value is invalid in many fonts, as */ ! /* it is usually set by the font designer, */ ! /* and often reflects only a portion of */ ! /* the glyphs found in the font (maybe */ ! /* ASCII). */ ! /* */ ! /* You should use the `sTypoAscender' */ ! /* field of the `OS/2' table instead if */ ! /* you want the correct one. */ ! /* */ ! /* Descender :: The font's descender, i.e., the */ ! /* distance from the baseline to the */ ! /* bottom-most of all glyph points found */ ! /* in the font. It is negative. */ ! /* */ ! /* This value is invalid in many fonts, as */ ! /* it is usually set by the font designer, */ ! /* and often reflects only a portion of */ ! /* the glyphs found in the font (maybe */ ! /* ASCII). */ ! /* */ ! /* You should use the `sTypoDescender' */ ! /* field of the `OS/2' table instead if */ ! /* you want the correct one. */ ! /* */ ! /* Line_Gap :: The font's line gap, i.e., the distance */ ! /* to add to the ascender and descender to */ ! /* get the BTB, i.e., the */ ! /* baseline-to-baseline distance for the */ ! /* font. */ ! /* */ ! /* advance_Height_Max :: This field is the maximum of all */ ! /* advance heights found in the font. It */ ! /* can be used to compute the maximum */ ! /* height of an arbitrary string of text. */ ! /* */ ! /* min_Top_Side_Bearing :: The minimum top side bearing of all */ ! /* glyphs within the font. */ ! /* */ ! /* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */ ! /* glyphs within the font. */ ! /* */ ! /* yMax_Extent :: The maximum vertical extent (i.e., the */ ! /* `height' of a glyph's bounding box) for */ ! /* all glyphs in the font. */ ! /* */ ! /* caret_Slope_Rise :: The rise coefficient of the cursor's */ ! /* slope of the cursor (slope=rise/run). */ ! /* */ ! /* caret_Slope_Run :: The run coefficient of the cursor's */ ! /* slope. */ ! /* */ ! /* caret_Offset :: The cursor's offset for slanted fonts. */ ! /* */ ! /* Reserved :: 8~reserved bytes. */ ! /* */ ! /* metric_Data_Format :: Always~0. */ ! /* */ ! /* number_Of_VMetrics :: Number of VMetrics entries in the */ ! /* `vmtx' table -- this value can be */ ! /* smaller than the total number of glyphs */ ! /* in the font. */ ! /* */ ! /* long_metrics :: A pointer into the `vmtx' table. */ ! /* */ ! /* short_metrics :: A pointer into the `vmtx' table. */ ! /* */ ! /* <Note> */ ! /* For an OpenType variation font, the values of the following fields */ ! /* can change after a call to @FT_Set_Var_Design_Coordinates (and */ ! /* friends) if the font contains an `MVAR' table: `Ascender', */ ! /* `Descender', `Line_Gap', `caret_Slope_Rise', `caret_Slope_Run', */ ! /* and `caret_Offset'. */ ! /* */ typedef struct TT_VertHeader_ { FT_Fixed Version; FT_Short Ascender; FT_Short Descender; --- 219,323 ---- FT_Short metric_Data_Format; FT_UShort number_Of_HMetrics; /* The following fields are not defined by the OpenType specification */ /* but they are used to connect the metrics header to the relevant */ ! /* 'hmtx' table. */ void* long_metrics; void* short_metrics; } TT_HoriHeader; ! /************************************************************************** ! * ! * @struct: ! * TT_VertHeader ! * ! * @description: ! * A structure used to model a TrueType vertical header, the 'vhea' ! * table, as well as the corresponding vertical metrics table, 'vmtx'. ! * ! * @fields: ! * Version :: ! * The table version. ! * ! * Ascender :: ! * The font's ascender, i.e., the distance from the baseline to the ! * top-most of all glyph points found in the font. ! * ! * This value is invalid in many fonts, as it is usually set by the ! * font designer, and often reflects only a portion of the glyphs found ! * in the font (maybe ASCII). ! * ! * You should use the `sTypoAscender` field of the 'OS/2' table instead ! * if you want the correct one. ! * ! * Descender :: ! * The font's descender, i.e., the distance from the baseline to the ! * bottom-most of all glyph points found in the font. It is negative. ! * ! * This value is invalid in many fonts, as it is usually set by the ! * font designer, and often reflects only a portion of the glyphs found ! * in the font (maybe ASCII). ! * ! * You should use the `sTypoDescender` field of the 'OS/2' table ! * instead if you want the correct one. ! * ! * Line_Gap :: ! * The font's line gap, i.e., the distance to add to the ascender and ! * descender to get the BTB, i.e., the baseline-to-baseline distance ! * for the font. ! * ! * advance_Height_Max :: ! * This field is the maximum of all advance heights found in the font. ! * It can be used to compute the maximum height of an arbitrary string ! * of text. ! * ! * min_Top_Side_Bearing :: ! * The minimum top side bearing of all glyphs within the font. ! * ! * min_Bottom_Side_Bearing :: ! * The minimum bottom side bearing of all glyphs within the font. ! * ! * yMax_Extent :: ! * The maximum vertical extent (i.e., the 'height' of a glyph's ! * bounding box) for all glyphs in the font. ! * ! * caret_Slope_Rise :: ! * The rise coefficient of the cursor's slope of the cursor ! * (slope=rise/run). ! * ! * caret_Slope_Run :: ! * The run coefficient of the cursor's slope. ! * ! * caret_Offset :: ! * The cursor's offset for slanted fonts. ! * ! * Reserved :: ! * 8~reserved bytes. ! * ! * metric_Data_Format :: ! * Always~0. ! * ! * number_Of_VMetrics :: ! * Number of VMetrics entries in the 'vmtx' table -- this value can be ! * smaller than the total number of glyphs in the font. ! * ! * long_metrics :: ! * A pointer into the 'vmtx' table. ! * ! * short_metrics :: ! * A pointer into the 'vmtx' table. ! * ! * @note: ! * For an OpenType variation font, the values of the following fields can ! * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if ! * the font contains an 'MVAR' table: `Ascender`, `Descender`, ! * `Line_Gap`, `caret_Slope_Rise`, `caret_Slope_Run`, and `caret_Offset`. ! */ typedef struct TT_VertHeader_ { FT_Fixed Version; FT_Short Ascender; FT_Short Descender;
*** 339,383 **** FT_Short metric_Data_Format; FT_UShort number_Of_VMetrics; /* The following fields are not defined by the OpenType specification */ /* but they are used to connect the metrics header to the relevant */ ! /* `vmtx' table. */ void* long_metrics; void* short_metrics; } TT_VertHeader; ! /*************************************************************************/ ! /* */ ! /* <Struct> */ ! /* TT_OS2 */ ! /* */ ! /* <Description> */ ! /* A structure to model a TrueType `OS/2' table. All fields comply */ ! /* to the OpenType specification. */ ! /* */ ! /* Note that we now support old Mac fonts that do not include an */ ! /* `OS/2' table. In this case, the `version' field is always set to */ ! /* 0xFFFF. */ ! /* */ ! /* <Note> */ ! /* For an OpenType variation font, the values of the following fields */ ! /* can change after a call to @FT_Set_Var_Design_Coordinates (and */ ! /* friends) if the font contains an `MVAR' table: `sCapHeight', */ ! /* `sTypoAscender', `sTypoDescender', `sTypoLineGap', `sxHeight', */ ! /* `usWinAscent', `usWinDescent', `yStrikeoutPosition', */ ! /* `yStrikeoutSize', `ySubscriptXOffset', `ySubScriptXSize', */ ! /* `ySubscriptYOffset', `ySubscriptYSize', `ySuperscriptXOffset', */ ! /* `ySuperscriptXSize', `ySuperscriptYOffset', and */ ! /* `ySuperscriptYSize'. */ ! /* */ ! /* Possible values for bits in the `ulUnicodeRangeX' fields are given */ ! /* by the @TT_UCR_XXX macros. */ ! /* */ typedef struct TT_OS2_ { FT_UShort version; /* 0x0001 - more or 0xFFFF */ FT_Short xAvgCharWidth; --- 337,379 ---- FT_Short metric_Data_Format; FT_UShort number_Of_VMetrics; /* The following fields are not defined by the OpenType specification */ /* but they are used to connect the metrics header to the relevant */ ! /* 'vmtx' table. */ void* long_metrics; void* short_metrics; } TT_VertHeader; ! /************************************************************************** ! * ! * @struct: ! * TT_OS2 ! * ! * @description: ! * A structure to model a TrueType 'OS/2' table. All fields comply to ! * the OpenType specification. ! * ! * Note that we now support old Mac fonts that do not include an 'OS/2' ! * table. In this case, the `version` field is always set to 0xFFFF. ! * ! * @note: ! * For an OpenType variation font, the values of the following fields can ! * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if ! * the font contains an 'MVAR' table: `sCapHeight`, `sTypoAscender`, ! * `sTypoDescender`, `sTypoLineGap`, `sxHeight`, `usWinAscent`, ! * `usWinDescent`, `yStrikeoutPosition`, `yStrikeoutSize`, ! * `ySubscriptXOffset`, `ySubScriptXSize`, `ySubscriptYOffset`, ! * `ySubscriptYSize`, `ySuperscriptXOffset`, `ySuperscriptXSize`, ! * `ySuperscriptYOffset`, and `ySuperscriptYSize`. ! * ! * Possible values for bits in the `ulUnicodeRangeX` fields are given by ! * the @TT_UCR_XXX macros. ! */ typedef struct TT_OS2_ { FT_UShort version; /* 0x0001 - more or 0xFFFF */ FT_Short xAvgCharWidth;
*** 433,459 **** FT_UShort usUpperOpticalPointSize; /* in twips (1/20th points) */ } TT_OS2; ! /*************************************************************************/ ! /* */ ! /* <Struct> */ ! /* TT_Postscript */ ! /* */ ! /* <Description> */ ! /* A structure to model a TrueType `post' table. All fields comply */ ! /* to the OpenType specification. This structure does not reference */ ! /* a font's PostScript glyph names; use @FT_Get_Glyph_Name to */ ! /* retrieve them. */ ! /* */ ! /* <Note> */ ! /* For an OpenType variation font, the values of the following fields */ ! /* can change after a call to @FT_Set_Var_Design_Coordinates (and */ ! /* friends) if the font contains an `MVAR' table: `underlinePosition' */ ! /* and `underlineThickness'. */ ! /* */ typedef struct TT_Postscript_ { FT_Fixed FormatType; FT_Fixed italicAngle; FT_Short underlinePosition; --- 429,455 ---- FT_UShort usUpperOpticalPointSize; /* in twips (1/20th points) */ } TT_OS2; ! /************************************************************************** ! * ! * @struct: ! * TT_Postscript ! * ! * @description: ! * A structure to model a TrueType 'post' table. All fields comply to ! * the OpenType specification. This structure does not reference a ! * font's PostScript glyph names; use @FT_Get_Glyph_Name to retrieve ! * them. ! * ! * @note: ! * For an OpenType variation font, the values of the following fields can ! * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if ! * the font contains an 'MVAR' table: `underlinePosition` and ! * `underlineThickness`. ! */ typedef struct TT_Postscript_ { FT_Fixed FormatType; FT_Fixed italicAngle; FT_Short underlinePosition;
*** 462,486 **** FT_ULong minMemType42; FT_ULong maxMemType42; FT_ULong minMemType1; FT_ULong maxMemType1; ! /* Glyph names follow in the `post' table, but we don't */ /* load them by default. */ } TT_Postscript; ! /*************************************************************************/ ! /* */ ! /* <Struct> */ ! /* TT_PCLT */ ! /* */ ! /* <Description> */ ! /* A structure to model a TrueType `PCLT' table. All fields comply */ ! /* to the OpenType specification. */ ! /* */ typedef struct TT_PCLT_ { FT_Fixed Version; FT_ULong FontNumber; FT_UShort Pitch; --- 458,482 ---- FT_ULong minMemType42; FT_ULong maxMemType42; FT_ULong minMemType1; FT_ULong maxMemType1; ! /* Glyph names follow in the 'post' table, but we don't */ /* load them by default. */ } TT_Postscript; ! /************************************************************************** ! * ! * @struct: ! * TT_PCLT ! * ! * @description: ! * A structure to model a TrueType 'PCLT' table. All fields comply to ! * the OpenType specification. ! */ typedef struct TT_PCLT_ { FT_Fixed Version; FT_ULong FontNumber; FT_UShort Pitch;
*** 498,571 **** FT_Byte Reserved; } TT_PCLT; ! /*************************************************************************/ ! /* */ ! /* <Struct> */ ! /* TT_MaxProfile */ ! /* */ ! /* <Description> */ ! /* The maximum profile (`maxp') table contains many max values, which */ ! /* can be used to pre-allocate arrays for speeding up glyph loading */ ! /* and hinting. */ ! /* */ ! /* <Fields> */ ! /* version :: The version number. */ ! /* */ ! /* numGlyphs :: The number of glyphs in this TrueType */ ! /* font. */ ! /* */ ! /* maxPoints :: The maximum number of points in a */ ! /* non-composite TrueType glyph. See also */ ! /* `maxCompositePoints'. */ ! /* */ ! /* maxContours :: The maximum number of contours in a */ ! /* non-composite TrueType glyph. See also */ ! /* `maxCompositeContours'. */ ! /* */ ! /* maxCompositePoints :: The maximum number of points in a */ ! /* composite TrueType glyph. See also */ ! /* `maxPoints'. */ ! /* */ ! /* maxCompositeContours :: The maximum number of contours in a */ ! /* composite TrueType glyph. See also */ ! /* `maxContours'. */ ! /* */ ! /* maxZones :: The maximum number of zones used for */ ! /* glyph hinting. */ ! /* */ ! /* maxTwilightPoints :: The maximum number of points in the */ ! /* twilight zone used for glyph hinting. */ ! /* */ ! /* maxStorage :: The maximum number of elements in the */ ! /* storage area used for glyph hinting. */ ! /* */ ! /* maxFunctionDefs :: The maximum number of function */ ! /* definitions in the TrueType bytecode for */ ! /* this font. */ ! /* */ ! /* maxInstructionDefs :: The maximum number of instruction */ ! /* definitions in the TrueType bytecode for */ ! /* this font. */ ! /* */ ! /* maxStackElements :: The maximum number of stack elements used */ ! /* during bytecode interpretation. */ ! /* */ ! /* maxSizeOfInstructions :: The maximum number of TrueType opcodes */ ! /* used for glyph hinting. */ ! /* */ ! /* maxComponentElements :: The maximum number of simple (i.e., non- */ ! /* composite) glyphs in a composite glyph. */ ! /* */ ! /* maxComponentDepth :: The maximum nesting depth of composite */ ! /* glyphs. */ ! /* */ ! /* <Note> */ ! /* This structure is only used during font loading. */ ! /* */ typedef struct TT_MaxProfile_ { FT_Fixed version; FT_UShort numGlyphs; FT_UShort maxPoints; --- 494,572 ---- FT_Byte Reserved; } TT_PCLT; ! /************************************************************************** ! * ! * @struct: ! * TT_MaxProfile ! * ! * @description: ! * The maximum profile ('maxp') table contains many max values, which can ! * be used to pre-allocate arrays for speeding up glyph loading and ! * hinting. ! * ! * @fields: ! * version :: ! * The version number. ! * ! * numGlyphs :: ! * The number of glyphs in this TrueType font. ! * ! * maxPoints :: ! * The maximum number of points in a non-composite TrueType glyph. See ! * also `maxCompositePoints`. ! * ! * maxContours :: ! * The maximum number of contours in a non-composite TrueType glyph. ! * See also `maxCompositeContours`. ! * ! * maxCompositePoints :: ! * The maximum number of points in a composite TrueType glyph. See ! * also `maxPoints`. ! * ! * maxCompositeContours :: ! * The maximum number of contours in a composite TrueType glyph. See ! * also `maxContours`. ! * ! * maxZones :: ! * The maximum number of zones used for glyph hinting. ! * ! * maxTwilightPoints :: ! * The maximum number of points in the twilight zone used for glyph ! * hinting. ! * ! * maxStorage :: ! * The maximum number of elements in the storage area used for glyph ! * hinting. ! * ! * maxFunctionDefs :: ! * The maximum number of function definitions in the TrueType bytecode ! * for this font. ! * ! * maxInstructionDefs :: ! * The maximum number of instruction definitions in the TrueType ! * bytecode for this font. ! * ! * maxStackElements :: ! * The maximum number of stack elements used during bytecode ! * interpretation. ! * ! * maxSizeOfInstructions :: ! * The maximum number of TrueType opcodes used for glyph hinting. ! * ! * maxComponentElements :: ! * The maximum number of simple (i.e., non-composite) glyphs in a ! * composite glyph. ! * ! * maxComponentDepth :: ! * The maximum nesting depth of composite glyphs. ! * ! * @note: ! * This structure is only used during font loading. ! */ typedef struct TT_MaxProfile_ { FT_Fixed version; FT_UShort numGlyphs; FT_UShort maxPoints;
*** 583,617 **** FT_UShort maxComponentDepth; } TT_MaxProfile; ! /*************************************************************************/ ! /* */ ! /* <Enum> */ ! /* FT_Sfnt_Tag */ ! /* */ ! /* <Description> */ ! /* An enumeration to specify indices of SFNT tables loaded and parsed */ ! /* by FreeType during initialization of an SFNT font. Used in the */ ! /* @FT_Get_Sfnt_Table API function. */ ! /* */ ! /* <Values> */ ! /* FT_SFNT_HEAD :: To access the font's @TT_Header structure. */ ! /* */ ! /* FT_SFNT_MAXP :: To access the font's @TT_MaxProfile structure. */ ! /* */ ! /* FT_SFNT_OS2 :: To access the font's @TT_OS2 structure. */ ! /* */ ! /* FT_SFNT_HHEA :: To access the font's @TT_HoriHeader structure. */ ! /* */ ! /* FT_SFNT_VHEA :: To access the font's @TT_VertHeader structure. */ ! /* */ ! /* FT_SFNT_POST :: To access the font's @TT_Postscript structure. */ ! /* */ ! /* FT_SFNT_PCLT :: To access the font's @TT_PCLT structure. */ ! /* */ typedef enum FT_Sfnt_Tag_ { FT_SFNT_HEAD, FT_SFNT_MAXP, FT_SFNT_OS2, --- 584,625 ---- FT_UShort maxComponentDepth; } TT_MaxProfile; ! /************************************************************************** ! * ! * @enum: ! * FT_Sfnt_Tag ! * ! * @description: ! * An enumeration to specify indices of SFNT tables loaded and parsed by ! * FreeType during initialization of an SFNT font. Used in the ! * @FT_Get_Sfnt_Table API function. ! * ! * @values: ! * FT_SFNT_HEAD :: ! * To access the font's @TT_Header structure. ! * ! * FT_SFNT_MAXP :: ! * To access the font's @TT_MaxProfile structure. ! * ! * FT_SFNT_OS2 :: ! * To access the font's @TT_OS2 structure. ! * ! * FT_SFNT_HHEA :: ! * To access the font's @TT_HoriHeader structure. ! * ! * FT_SFNT_VHEA :: ! * To access the font's @TT_VertHeader structure. ! * ! * FT_SFNT_POST :: ! * To access the font's @TT_Postscript structure. ! * ! * FT_SFNT_PCLT :: ! * To access the font's @TT_PCLT structure. ! */ typedef enum FT_Sfnt_Tag_ { FT_SFNT_HEAD, FT_SFNT_MAXP, FT_SFNT_OS2,
*** 622,680 **** FT_SFNT_MAX } FT_Sfnt_Tag; ! /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag' */ /* values instead */ #define ft_sfnt_head FT_SFNT_HEAD #define ft_sfnt_maxp FT_SFNT_MAXP #define ft_sfnt_os2 FT_SFNT_OS2 #define ft_sfnt_hhea FT_SFNT_HHEA #define ft_sfnt_vhea FT_SFNT_VHEA #define ft_sfnt_post FT_SFNT_POST #define ft_sfnt_pclt FT_SFNT_PCLT ! /*************************************************************************/ ! /* */ ! /* <Function> */ ! /* FT_Get_Sfnt_Table */ ! /* */ ! /* <Description> */ ! /* Return a pointer to a given SFNT table stored within a face. */ ! /* */ ! /* <Input> */ ! /* face :: A handle to the source. */ ! /* */ ! /* tag :: The index of the SFNT table. */ ! /* */ ! /* <Return> */ ! /* A type-less pointer to the table. This will be NULL in case of */ ! /* error, or if the corresponding table was not found *OR* loaded */ ! /* from the file. */ ! /* */ ! /* Use a typecast according to `tag' to access the structure */ ! /* elements. */ ! /* */ ! /* <Note> */ ! /* The table is owned by the face object and disappears with it. */ ! /* */ ! /* This function is only useful to access SFNT tables that are loaded */ ! /* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */ ! /* a list. */ ! /* */ ! /* Here an example how to access the `vhea' table: */ ! /* */ ! /* { */ ! /* TT_VertHeader* vert_header; */ ! /* */ ! /* */ ! /* vert_header = */ ! /* (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA ); */ ! /* } */ ! /* */ FT_EXPORT( void* ) FT_Get_Sfnt_Table( FT_Face face, FT_Sfnt_Tag tag ); --- 630,690 ---- FT_SFNT_MAX } FT_Sfnt_Tag; ! /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag` */ /* values instead */ #define ft_sfnt_head FT_SFNT_HEAD #define ft_sfnt_maxp FT_SFNT_MAXP #define ft_sfnt_os2 FT_SFNT_OS2 #define ft_sfnt_hhea FT_SFNT_HHEA #define ft_sfnt_vhea FT_SFNT_VHEA #define ft_sfnt_post FT_SFNT_POST #define ft_sfnt_pclt FT_SFNT_PCLT ! /************************************************************************** ! * ! * @function: ! * FT_Get_Sfnt_Table ! * ! * @description: ! * Return a pointer to a given SFNT table stored within a face. ! * ! * @input: ! * face :: ! * A handle to the source. ! * ! * tag :: ! * The index of the SFNT table. ! * ! * @return: ! * A type-less pointer to the table. This will be `NULL` in case of ! * error, or if the corresponding table was not found **OR** loaded from ! * the file. ! * ! * Use a typecast according to `tag` to access the structure elements. ! * ! * @note: ! * The table is owned by the face object and disappears with it. ! * ! * This function is only useful to access SFNT tables that are loaded by ! * the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for a ! * list. ! * ! * @example: ! * Here is an example demonstrating access to the 'vhea' table. ! * ! * ``` ! * TT_VertHeader* vert_header; ! * ! * ! * vert_header = ! * (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA ); ! * ``` ! */ FT_EXPORT( void* ) FT_Get_Sfnt_Table( FT_Face face, FT_Sfnt_Tag tag );
*** 689,700 **** * @input: * face :: * A handle to the source face. * * tag :: ! * The four-byte tag of the table to load. Use value~0 if you want ! * to access the whole font file. Otherwise, you can use one of the * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new * one with @FT_MAKE_TAG. * * offset :: * The starting offset in the table (or file if tag~==~0). --- 699,710 ---- * @input: * face :: * A handle to the source face. * * tag :: ! * The four-byte tag of the table to load. Use value~0 if you want to ! * access the whole font file. Otherwise, you can use one of the * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new * one with @FT_MAKE_TAG. * * offset :: * The starting offset in the table (or file if tag~==~0).
*** 704,730 **** * The target buffer address. The client must ensure that the memory * array is big enough to hold the data. * * @inout: * length :: ! * If the `length' parameter is NULL, try to load the whole table. * Return an error code if it fails. * ! * Else, if `*length' is~0, exit immediately while returning the * table's (or file) full size in it. * * Else the number of bytes to read from the table or file, from the * starting offset. * * @return: * FreeType error code. 0~means success. * * @note: * If you need to determine the table's length you should first call this ! * function with `*length' set to~0, as in the following example: * ! * { * FT_ULong length = 0; * * * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); * if ( error ) { ... table does not exist ... } --- 714,740 ---- * The target buffer address. The client must ensure that the memory * array is big enough to hold the data. * * @inout: * length :: ! * If the `length` parameter is `NULL`, try to load the whole table. * Return an error code if it fails. * ! * Else, if `*length` is~0, exit immediately while returning the * table's (or file) full size in it. * * Else the number of bytes to read from the table or file, from the * starting offset. * * @return: * FreeType error code. 0~means success. * * @note: * If you need to determine the table's length you should first call this ! * function with `*length` set to~0, as in the following example: * ! * ``` * FT_ULong length = 0; * * * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); * if ( error ) { ... table does not exist ... }
*** 732,742 **** * buffer = malloc( length ); * if ( buffer == NULL ) { ... not enough memory ... } * * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); * if ( error ) { ... could not load table ... } ! * } * * Note that structures like @TT_Header or @TT_OS2 can't be used with * this function; they are limited to @FT_Get_Sfnt_Table. Reason is that * those structures depend on the processor architecture, with varying * size (e.g. 32bit vs. 64bit) or order (big endian vs. little endian). --- 742,752 ---- * buffer = malloc( length ); * if ( buffer == NULL ) { ... not enough memory ... } * * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); * if ( error ) { ... could not load table ... } ! * ``` * * Note that structures like @TT_Header or @TT_OS2 can't be used with * this function; they are limited to @FT_Get_Sfnt_Table. Reason is that * those structures depend on the processor architecture, with varying * size (e.g. 32bit vs. 64bit) or order (big endian vs. little endian).
*** 766,783 **** * The index of an SFNT table. The function returns * FT_Err_Table_Missing for an invalid value. * * @inout: * tag :: ! * The name tag of the SFNT table. If the value is NULL, `table_index' ! * is ignored, and `length' returns the number of SFNT tables in the ! * font. * * @output: * length :: ! * The length of the SFNT table (or the number of SFNT tables, depending ! * on `tag'). * * @return: * FreeType error code. 0~means success. * * @note: --- 776,793 ---- * The index of an SFNT table. The function returns * FT_Err_Table_Missing for an invalid value. * * @inout: * tag :: ! * The name tag of the SFNT table. If the value is `NULL`, ! * `table_index` is ignored, and `length` returns the number of SFNT ! * tables in the font. * * @output: * length :: ! * The length of the SFNT table (or the number of SFNT tables, ! * depending on `tag`). * * @return: * FreeType error code. 0~means success. * * @note:
*** 790,839 **** FT_UInt table_index, FT_ULong *tag, FT_ULong *length ); ! /*************************************************************************/ ! /* */ ! /* <Function> */ ! /* FT_Get_CMap_Language_ID */ ! /* */ ! /* <Description> */ ! /* Return cmap language ID as specified in the OpenType standard. */ ! /* Definitions of language ID values are in file @FT_TRUETYPE_IDS_H. */ ! /* */ ! /* <Input> */ ! /* charmap :: */ ! /* The target charmap. */ ! /* */ ! /* <Return> */ ! /* The language ID of `charmap'. If `charmap' doesn't belong to an */ ! /* SFNT face, just return~0 as the default value. */ ! /* */ ! /* For a format~14 cmap (to access Unicode IVS), the return value is */ ! /* 0xFFFFFFFF. */ ! /* */ FT_EXPORT( FT_ULong ) FT_Get_CMap_Language_ID( FT_CharMap charmap ); ! /*************************************************************************/ ! /* */ ! /* <Function> */ ! /* FT_Get_CMap_Format */ ! /* */ ! /* <Description> */ ! /* Return the format of an SFNT `cmap' table. */ ! /* */ ! /* <Input> */ ! /* charmap :: */ ! /* The target charmap. */ ! /* */ ! /* <Return> */ ! /* The format of `charmap'. If `charmap' doesn't belong to an SFNT */ ! /* face, return -1. */ ! /* */ FT_EXPORT( FT_Long ) FT_Get_CMap_Format( FT_CharMap charmap ); /* */ --- 800,849 ---- FT_UInt table_index, FT_ULong *tag, FT_ULong *length ); ! /************************************************************************** ! * ! * @function: ! * FT_Get_CMap_Language_ID ! * ! * @description: ! * Return cmap language ID as specified in the OpenType standard. ! * Definitions of language ID values are in file @FT_TRUETYPE_IDS_H. ! * ! * @input: ! * charmap :: ! * The target charmap. ! * ! * @return: ! * The language ID of `charmap`. If `charmap` doesn't belong to an SFNT ! * face, just return~0 as the default value. ! * ! * For a format~14 cmap (to access Unicode IVS), the return value is ! * 0xFFFFFFFF. ! */ FT_EXPORT( FT_ULong ) FT_Get_CMap_Language_ID( FT_CharMap charmap ); ! /************************************************************************** ! * ! * @function: ! * FT_Get_CMap_Format ! * ! * @description: ! * Return the format of an SFNT 'cmap' table. ! * ! * @input: ! * charmap :: ! * The target charmap. ! * ! * @return: ! * The format of `charmap`. If `charmap` doesn't belong to an SFNT face, ! * return -1. ! */ FT_EXPORT( FT_Long ) FT_Get_CMap_Format( FT_CharMap charmap ); /* */
< prev index next >