nuclear@0: /***************************************************************************/ nuclear@0: /* */ nuclear@0: /* ftadvanc.h */ nuclear@0: /* */ nuclear@0: /* Quick computation of advance widths (specification only). */ nuclear@0: /* */ nuclear@0: /* Copyright 2008 by */ nuclear@0: /* David Turner, Robert Wilhelm, and Werner Lemberg. */ nuclear@0: /* */ nuclear@0: /* This file is part of the FreeType project, and may only be used, */ nuclear@0: /* modified, and distributed under the terms of the FreeType project */ nuclear@0: /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ nuclear@0: /* this file you indicate that you have read the license and */ nuclear@0: /* understand and accept it fully. */ nuclear@0: /* */ nuclear@0: /***************************************************************************/ nuclear@0: nuclear@0: nuclear@0: #ifndef __FTADVANC_H__ nuclear@0: #define __FTADVANC_H__ nuclear@0: nuclear@0: nuclear@0: #include nuclear@0: #include FT_FREETYPE_H nuclear@0: nuclear@0: #ifdef FREETYPE_H nuclear@0: #error "freetype.h of FreeType 1 has been loaded!" nuclear@0: #error "Please fix the directory search order for header files" nuclear@0: #error "so that freetype.h of FreeType 2 is found first." nuclear@0: #endif nuclear@0: nuclear@0: nuclear@0: FT_BEGIN_HEADER nuclear@0: nuclear@0: nuclear@0: /************************************************************************** nuclear@0: * nuclear@0: * @section: nuclear@0: * quick_advance nuclear@0: * nuclear@0: * @title: nuclear@0: * Quick retrieval of advance values nuclear@0: * nuclear@0: * @abstract: nuclear@0: * Retrieve horizontal and vertical advance values without processing nuclear@0: * glyph outlines, if possible. nuclear@0: * nuclear@0: * @description: nuclear@0: * This section contains functions to quickly extract advance values nuclear@0: * without handling glyph outlines, if possible. nuclear@0: */ nuclear@0: nuclear@0: nuclear@0: /*************************************************************************/ nuclear@0: /* */ nuclear@0: /* */ nuclear@0: /* FT_ADVANCE_FLAG_FAST_ONLY */ nuclear@0: /* */ nuclear@0: /* */ nuclear@0: /* A bit-flag to be OR-ed with the `flags' parameter of the */ nuclear@0: /* @FT_Get_Advance and @FT_Get_Advances functions. */ nuclear@0: /* */ nuclear@0: /* If set, it indicates that you want these functions to fail if the */ nuclear@0: /* corresponding hinting mode or font driver doesn't allow for very */ nuclear@0: /* quick advance computation. */ nuclear@0: /* */ nuclear@0: /* Typically, glyphs which are either unscaled, unhinted, bitmapped, */ nuclear@0: /* or light-hinted can have their advance width computed very */ nuclear@0: /* quickly. */ nuclear@0: /* */ nuclear@0: /* Normal and bytecode hinted modes, which require loading, scaling, */ nuclear@0: /* and hinting of the glyph outline, are extremely slow by */ nuclear@0: /* comparison. */ nuclear@0: /* */ nuclear@0: #define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000UL nuclear@0: nuclear@0: nuclear@0: /*************************************************************************/ nuclear@0: /* */ nuclear@0: /* */ nuclear@0: /* FT_Get_Advance */ nuclear@0: /* */ nuclear@0: /* */ nuclear@0: /* Retrieve the advance value of a given glyph outline in an */ nuclear@0: /* @FT_Face. By default, the unhinted advance is returned in font */ nuclear@0: /* units. */ nuclear@0: /* */ nuclear@0: /* */ nuclear@0: /* face :: The source @FT_Face handle. */ nuclear@0: /* */ nuclear@0: /* gindex :: The glyph index. */ nuclear@0: /* */ nuclear@0: /* load_flags :: A set of bit flags similar to those used when */ nuclear@0: /* calling @FT_Load_Glyph, used to determine what kind */ nuclear@0: /* of advances you need. */ nuclear@0: /* */ nuclear@0: /* padvance :: The advance value, in either font units or 16.16 */ nuclear@0: /* format. */ nuclear@0: /* */ nuclear@0: /* If @FT_LOAD_VERTICAL_LAYOUT is set, this is the */ nuclear@0: /* vertical advance corresponding to a vertical layout. */ nuclear@0: /* Otherwise, it is the horizontal advance in a */ nuclear@0: /* horizontal layout. */ nuclear@0: /* */ nuclear@0: /* */ nuclear@0: /* FreeType error code. 0 means success. */ nuclear@0: /* */ nuclear@0: /* */ nuclear@0: /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ nuclear@0: /* if the corresponding font backend doesn't have a quick way to */ nuclear@0: /* retrieve the advances. */ nuclear@0: /* */ nuclear@0: /* A scaled advance is returned in 16.16 format but isn't transformed */ nuclear@0: /* by the affine transformation specified by @FT_Set_Transform. */ nuclear@0: /* */ nuclear@0: FT_EXPORT( FT_Error ) nuclear@0: FT_Get_Advance( FT_Face face, nuclear@0: FT_UInt gindex, nuclear@0: FT_Int32 load_flags, nuclear@0: FT_Fixed *padvance ); nuclear@0: nuclear@0: nuclear@0: /*************************************************************************/ nuclear@0: /* */ nuclear@0: /* */ nuclear@0: /* FT_Get_Advances */ nuclear@0: /* */ nuclear@0: /* */ nuclear@0: /* Retrieve the advance values of several glyph outlines in an */ nuclear@0: /* @FT_Face. By default, the unhinted advances are returned in font */ nuclear@0: /* units. */ nuclear@0: /* */ nuclear@0: /* */ nuclear@0: /* face :: The source @FT_Face handle. */ nuclear@0: /* */ nuclear@0: /* start :: The first glyph index. */ nuclear@0: /* */ nuclear@0: /* count :: The number of advance values you want to retrieve. */ nuclear@0: /* */ nuclear@0: /* load_flags :: A set of bit flags similar to those used when */ nuclear@0: /* calling @FT_Load_Glyph. */ nuclear@0: /* */ nuclear@0: /* */ nuclear@0: /* padvance :: The advances, in either font units or 16.16 format. */ nuclear@0: /* This array must contain at least `count' elements. */ nuclear@0: /* */ nuclear@0: /* If @FT_LOAD_VERTICAL_LAYOUT is set, these are the */ nuclear@0: /* vertical advances corresponding to a vertical layout. */ nuclear@0: /* Otherwise, they are the horizontal advances in a */ nuclear@0: /* horizontal layout. */ nuclear@0: /* */ nuclear@0: /* */ nuclear@0: /* FreeType error code. 0 means success. */ nuclear@0: /* */ nuclear@0: /* */ nuclear@0: /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ nuclear@0: /* if the corresponding font backend doesn't have a quick way to */ nuclear@0: /* retrieve the advances. */ nuclear@0: /* */ nuclear@0: /* Scaled advances are returned in 16.16 format but aren't */ nuclear@0: /* transformed by the affine transformation specified by */ nuclear@0: /* @FT_Set_Transform. */ nuclear@0: /* */ nuclear@0: FT_EXPORT( FT_Error ) nuclear@0: FT_Get_Advances( FT_Face face, nuclear@0: FT_UInt start, nuclear@0: FT_UInt count, nuclear@0: FT_Int32 load_flags, nuclear@0: FT_Fixed *padvances ); nuclear@0: nuclear@0: /* */ nuclear@0: nuclear@0: nuclear@0: FT_END_HEADER nuclear@0: nuclear@0: #endif /* __FTADVANC_H__ */ nuclear@0: nuclear@0: nuclear@0: /* END */