shithub: freetype+ttf2subf

ref: 8e29645e20e4de8c2b2cbfde12a48da7f84c3713
dir: /include/freetype/ftadvanc.h/

View raw version
/***************************************************************************/
/*                                                                         */
/*  ftadvanc.h                                                             */
/*                                                                         */
/*    FreeType access the glyph advances       (specification only).       */
/*                                                                         */
/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 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 __FREETYPE_ADVANCE_H__
#define __FREETYPE_ADVANCE_H__

#include <ft2build.h>
#include FT_FREETYPE_H

  /*************************************************************************/
  /*                                                                       */
  /* <Const>                                                               */
  /*    FT_ADVANCE_FLAG_FAST_ONLY                                          */
  /*                                                                       */
  /* <Description>                                                         */
  /*    a bit-flag to be or-ed to the 'flags' parameter of the             */
  /*    @FT_Get_Advance and @FT_Get_Advances.                              */
  /*                                                                       */
  /*    when 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, unscaled, unhinted, bitmapped and light-hinted glyphs   */
  /*    can have their advance width(s) computed very quickly.             */
  /*                                                                       */
  /*    not so for normal and bytecode hinted modes, which require         */
  /*    loading/scaling/hinting the glyph outline instead, which is        */
  /*    extremely slow by comparison                                       */
  /*                                                                       */
#define  FT_ADVANCE_FLAG_FAST_ONLY   0x20000000U


  /*************************************************************************/
  /*                                                                       */
  /* <Function>                                                            */
  /*    FT_Get_Advance                                                     */
  /*                                                                       */
  /* <Description>                                                         */
  /*    Retrieve the advance of a given glyph outline in a @FT_Face.       */
  /*    by default, the unhinted advance is returned in font units         */
  /*                                                                       */
  /* <Input>                                                               */
  /*    face       :: source @FT_Face handle                               */
  /*    gindex     :: 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, in either font units or 16.16       */
  /*                format.                                                */
  /*                                                                       */
  /*                if @FT_LOAD_VERTICAL_LAYOUT is set, this is the        */
  /*                vertical advance corresponding to a vertical layout.   */
  /*                otherwise, it's the horizontal advance in an           */
  /*                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's 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 transform specified by @FT_Set_Transform */
  /*                                                                       */
  FT_EXPORT( FT_Error )
  FT_Get_Advance( FT_Face    face,
                  FT_UInt    gindex,
                  FT_UInt    load_flags,
                  FT_Fixed  *padvance );

  /*************************************************************************/
  /*                                                                       */
  /* <Function>                                                            */
  /*    FT_Get_Advances                                                    */
  /*                                                                       */
  /* <Description>                                                         */
  /*    Retrieve the advance of several glyph outlines in a @FT_Face.      */
  /*    by default, the unhinted advances are returned in font units       */
  /*                                                                       */
  /* <Input>                                                               */
  /*    face        :: source @FT_Face handle                              */
  /*    start       :: first glyph index                                   */
  /*    count       :: number of advances you want to retrieve             */
  /*    load_flags  :: a set of bit-flags similar to those used when       */
  /*                   calling @FT_Load_Glyph.                             */
  /*                                                                       */
  /* <Output>                                                              */
  /*    padvance :: the advances, in either font units or 16.16 format.    */
  /*                this array must contain at least 'count' elements      */
  /*                                                                       */
  /*                if @FT_LOAD_VERTICAL_LAYOUT is set, these are the      */
  /*                vertical advances corresponding to a vertical layout.  */
  /*                otherwise, they are the horizontal advances in an      */
  /*                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's 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 transform specified by @FT_Set_Transform */
  /*                                                                       */
  FT_EXPORT( FT_Error )
  FT_Get_Advances( FT_Face    face,
                   FT_UInt    start,
                   FT_UInt    count,
                   FT_UInt    load_flags,
                   FT_Fixed  *padvances );

/* */

#endif /* __FREETYPE_ADVANCE_H__ */