misc/libfreetype/include/freetype/ftadvanc.h
branchwebgl
changeset 9521 8054d9d775fd
parent 9282 92af50454cf2
parent 9519 b8b5c82eb61b
child 9950 2759212a27de
equal deleted inserted replaced
9282:92af50454cf2 9521:8054d9d775fd
     1 /***************************************************************************/
       
     2 /*                                                                         */
       
     3 /*  ftadvanc.h                                                             */
       
     4 /*                                                                         */
       
     5 /*    Quick computation of advance widths (specification only).            */
       
     6 /*                                                                         */
       
     7 /*  Copyright 2008 by                                                      */
       
     8 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
       
     9 /*                                                                         */
       
    10 /*  This file is part of the FreeType project, and may only be used,       */
       
    11 /*  modified, and distributed under the terms of the FreeType project      */
       
    12 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
       
    13 /*  this file you indicate that you have read the license and              */
       
    14 /*  understand and accept it fully.                                        */
       
    15 /*                                                                         */
       
    16 /***************************************************************************/
       
    17 
       
    18 
       
    19 #ifndef __FTADVANC_H__
       
    20 #define __FTADVANC_H__
       
    21 
       
    22 
       
    23 #include <ft2build.h>
       
    24 #include FT_FREETYPE_H
       
    25 
       
    26 #ifdef FREETYPE_H
       
    27 #error "freetype.h of FreeType 1 has been loaded!"
       
    28 #error "Please fix the directory search order for header files"
       
    29 #error "so that freetype.h of FreeType 2 is found first."
       
    30 #endif
       
    31 
       
    32 
       
    33 FT_BEGIN_HEADER
       
    34 
       
    35 
       
    36   /**************************************************************************
       
    37    *
       
    38    * @section:
       
    39    *   quick_advance
       
    40    *
       
    41    * @title:
       
    42    *   Quick retrieval of advance values
       
    43    *
       
    44    * @abstract:
       
    45    *   Retrieve horizontal and vertical advance values without processing
       
    46    *   glyph outlines, if possible.
       
    47    *
       
    48    * @description:
       
    49    *   This section contains functions to quickly extract advance values
       
    50    *   without handling glyph outlines, if possible.
       
    51    */
       
    52 
       
    53 
       
    54   /*************************************************************************/
       
    55   /*                                                                       */
       
    56   /* <Const>                                                               */
       
    57   /*    FT_ADVANCE_FLAG_FAST_ONLY                                          */
       
    58   /*                                                                       */
       
    59   /* <Description>                                                         */
       
    60   /*    A bit-flag to be OR-ed with the `flags' parameter of the           */
       
    61   /*    @FT_Get_Advance and @FT_Get_Advances functions.                    */
       
    62   /*                                                                       */
       
    63   /*    If set, it indicates that you want these functions to fail if the  */
       
    64   /*    corresponding hinting mode or font driver doesn't allow for very   */
       
    65   /*    quick advance computation.                                         */
       
    66   /*                                                                       */
       
    67   /*    Typically, glyphs which are either unscaled, unhinted, bitmapped,  */
       
    68   /*    or light-hinted can have their advance width computed very         */
       
    69   /*    quickly.                                                           */
       
    70   /*                                                                       */
       
    71   /*    Normal and bytecode hinted modes, which require loading, scaling,  */
       
    72   /*    and hinting of the glyph outline, are extremely slow by            */
       
    73   /*    comparison.                                                        */
       
    74   /*                                                                       */
       
    75 #define FT_ADVANCE_FLAG_FAST_ONLY  0x20000000UL
       
    76 
       
    77 
       
    78   /*************************************************************************/
       
    79   /*                                                                       */
       
    80   /* <Function>                                                            */
       
    81   /*    FT_Get_Advance                                                     */
       
    82   /*                                                                       */
       
    83   /* <Description>                                                         */
       
    84   /*    Retrieve the advance value of a given glyph outline in an          */
       
    85   /*    @FT_Face.  By default, the unhinted advance is returned in font    */
       
    86   /*    units.                                                             */
       
    87   /*                                                                       */
       
    88   /* <Input>                                                               */
       
    89   /*    face       :: The source @FT_Face handle.                          */
       
    90   /*                                                                       */
       
    91   /*    gindex     :: The glyph index.                                     */
       
    92   /*                                                                       */
       
    93   /*    load_flags :: A set of bit flags similar to those used when        */
       
    94   /*                  calling @FT_Load_Glyph, used to determine what kind  */
       
    95   /*                  of advances you need.                                */
       
    96   /* <Output>                                                              */
       
    97   /*    padvance :: The advance value, in either font units or 16.16       */
       
    98   /*                format.                                                */
       
    99   /*                                                                       */
       
   100   /*                If @FT_LOAD_VERTICAL_LAYOUT is set, this is the        */
       
   101   /*                vertical advance corresponding to a vertical layout.   */
       
   102   /*                Otherwise, it is the horizontal advance in a           */
       
   103   /*                horizontal layout.                                     */
       
   104   /*                                                                       */
       
   105   /* <Return>                                                              */
       
   106   /*    FreeType error code.  0 means success.                             */
       
   107   /*                                                                       */
       
   108   /* <Note>                                                                */
       
   109   /*    This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and   */
       
   110   /*    if the corresponding font backend doesn't have a quick way to      */
       
   111   /*    retrieve the advances.                                             */
       
   112   /*                                                                       */
       
   113   /*    A scaled advance is returned in 16.16 format but isn't transformed */
       
   114   /*    by the affine transformation specified by @FT_Set_Transform.       */
       
   115   /*                                                                       */
       
   116   FT_EXPORT( FT_Error )
       
   117   FT_Get_Advance( FT_Face    face,
       
   118                   FT_UInt    gindex,
       
   119                   FT_Int32   load_flags,
       
   120                   FT_Fixed  *padvance );
       
   121 
       
   122 
       
   123   /*************************************************************************/
       
   124   /*                                                                       */
       
   125   /* <Function>                                                            */
       
   126   /*    FT_Get_Advances                                                    */
       
   127   /*                                                                       */
       
   128   /* <Description>                                                         */
       
   129   /*    Retrieve the advance values of several glyph outlines in an        */
       
   130   /*    @FT_Face.  By default, the unhinted advances are returned in font  */
       
   131   /*    units.                                                             */
       
   132   /*                                                                       */
       
   133   /* <Input>                                                               */
       
   134   /*    face        :: The source @FT_Face handle.                         */
       
   135   /*                                                                       */
       
   136   /*    start       :: The first glyph index.                              */
       
   137   /*                                                                       */
       
   138   /*    count       :: The number of advance values you want to retrieve.  */
       
   139   /*                                                                       */
       
   140   /*    load_flags  :: A set of bit flags similar to those used when       */
       
   141   /*                   calling @FT_Load_Glyph.                             */
       
   142   /*                                                                       */
       
   143   /* <Output>                                                              */
       
   144   /*    padvance :: The advances, in either font units or 16.16 format.    */
       
   145   /*                This array must contain at least `count' elements.     */
       
   146   /*                                                                       */
       
   147   /*                If @FT_LOAD_VERTICAL_LAYOUT is set, these are the      */
       
   148   /*                vertical advances corresponding to a vertical layout.  */
       
   149   /*                Otherwise, they are the horizontal advances in a       */
       
   150   /*                horizontal layout.                                     */
       
   151   /*                                                                       */
       
   152   /* <Return>                                                              */
       
   153   /*    FreeType error code.  0 means success.                             */
       
   154   /*                                                                       */
       
   155   /* <Note>                                                                */
       
   156   /*    This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and   */
       
   157   /*    if the corresponding font backend doesn't have a quick way to      */
       
   158   /*    retrieve the advances.                                             */
       
   159   /*                                                                       */
       
   160   /*    Scaled advances are returned in 16.16 format but aren't            */
       
   161   /*    transformed by the affine transformation specified by              */
       
   162   /*    @FT_Set_Transform.                                                 */
       
   163   /*                                                                       */
       
   164   FT_EXPORT( FT_Error )
       
   165   FT_Get_Advances( FT_Face    face,
       
   166                    FT_UInt    start,
       
   167                    FT_UInt    count,
       
   168                    FT_Int32   load_flags,
       
   169                    FT_Fixed  *padvances );
       
   170 
       
   171 /* */
       
   172 
       
   173 
       
   174 FT_END_HEADER
       
   175 
       
   176 #endif /* __FTADVANC_H__ */
       
   177 
       
   178 
       
   179 /* END */