123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- /****************************************************************************
- *
- * ftadvanc.h
- *
- * Quick computation of advance widths (specification only).
- *
- * Copyright (C) 2008-2023 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 FTADVANC_H_
- #define FTADVANC_H_
- #include <freetype/freetype.h>
- #ifdef FREETYPE_H
- #error "freetype.h of FreeType 1 has been loaded!"
- #error "Please fix the directory search order for header files"
- #error "so that freetype.h of FreeType 2 is found first."
- #endif
- FT_BEGIN_HEADER
- /**************************************************************************
- *
- * @section:
- * quick_advance
- *
- * @title:
- * Quick retrieval of advance values
- *
- * @abstract:
- * Retrieve horizontal and vertical advance values without processing
- * glyph outlines, if possible.
- *
- * @description:
- * This section contains functions to quickly extract advance values
- * without handling glyph outlines, if possible.
- *
- * @order:
- * FT_Get_Advance
- * FT_Get_Advances
- *
- */
- /**************************************************************************
- *
- * @enum:
- * FT_ADVANCE_FLAG_FAST_ONLY
- *
- * @description:
- * A bit-flag to be OR-ed with the `flags` parameter of the
- * @FT_Get_Advance and @FT_Get_Advances functions.
- *
- * If set, it indicates that you want these functions to fail if the
- * corresponding hinting mode or font driver doesn't allow for very quick
- * advance computation.
- *
- * Typically, glyphs that are either unscaled, unhinted, bitmapped, or
- * light-hinted can have their advance width computed very quickly.
- *
- * Normal and bytecode hinted modes that require loading, scaling, and
- * hinting of the glyph outline, are extremely slow by comparison.
- */
- #define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000L
- /**************************************************************************
- *
- * @function:
- * FT_Get_Advance
- *
- * @description:
- * Retrieve the advance value of a given glyph outline in an @FT_Face.
- *
- * @input:
- * face ::
- * The source @FT_Face handle.
- *
- * gindex ::
- * The glyph index.
- *
- * load_flags ::
- * A set of bit flags similar to those used when calling
- * @FT_Load_Glyph, used to determine what kind of advances you need.
- *
- * @output:
- * padvance ::
- * The advance value. If scaling is performed (based on the value of
- * `load_flags`), the advance value is in 16.16 format. Otherwise, it
- * is in font units.
- *
- * If @FT_LOAD_VERTICAL_LAYOUT is set, this is the vertical advance
- * corresponding to a vertical layout. Otherwise, it is the horizontal
- * advance in a horizontal layout.
- *
- * @return:
- * FreeType error code. 0 means success.
- *
- * @note:
- * This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and if
- * the corresponding font backend doesn't have a quick way to retrieve
- * the advances.
- *
- * A scaled advance is returned in 16.16 format but isn't transformed by
- * the affine transformation specified by @FT_Set_Transform.
- */
- FT_EXPORT( FT_Error )
- FT_Get_Advance( FT_Face face,
- FT_UInt gindex,
- FT_Int32 load_flags,
- FT_Fixed *padvance );
- /**************************************************************************
- *
- * @function:
- * FT_Get_Advances
- *
- * @description:
- * Retrieve the advance values of several glyph outlines in an @FT_Face.
- *
- * @input:
- * face ::
- * The source @FT_Face handle.
- *
- * start ::
- * The first glyph index.
- *
- * count ::
- * The number of advance values you want to retrieve.
- *
- * load_flags ::
- * A set of bit flags similar to those used when calling
- * @FT_Load_Glyph.
- *
- * @output:
- * padvance ::
- * The advance values. This array, to be provided by the caller, must
- * contain at least `count` elements.
- *
- * If scaling is performed (based on the value of `load_flags`), the
- * advance values are in 16.16 format. Otherwise, they are in font
- * units.
- *
- * If @FT_LOAD_VERTICAL_LAYOUT is set, these are the vertical advances
- * corresponding to a vertical layout. Otherwise, they are the
- * horizontal advances in a horizontal layout.
- *
- * @return:
- * FreeType error code. 0 means success.
- *
- * @note:
- * This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and if
- * the corresponding font backend doesn't have a quick way to retrieve
- * the advances.
- *
- * Scaled advances are returned in 16.16 format but aren't transformed by
- * the affine transformation specified by @FT_Set_Transform.
- */
- FT_EXPORT( FT_Error )
- FT_Get_Advances( FT_Face face,
- FT_UInt start,
- FT_UInt count,
- FT_Int32 load_flags,
- FT_Fixed *padvances );
- /* */
- FT_END_HEADER
- #endif /* FTADVANC_H_ */
- /* END */
|