(root)/
freetype-2.13.2/
include/
freetype/
ftsynth.h
       1  /****************************************************************************
       2   *
       3   * ftsynth.h
       4   *
       5   *   FreeType synthesizing code for emboldening and slanting
       6   *   (specification).
       7   *
       8   * Copyright (C) 2000-2023 by
       9   * David Turner, Robert Wilhelm, and Werner Lemberg.
      10   *
      11   * This file is part of the FreeType project, and may only be used,
      12   * modified, and distributed under the terms of the FreeType project
      13   * license, LICENSE.TXT.  By continuing to use, modify, or distribute
      14   * this file you indicate that you have read the license and
      15   * understand and accept it fully.
      16   *
      17   */
      18  
      19  
      20    /*************************************************************************/
      21    /*************************************************************************/
      22    /*************************************************************************/
      23    /*************************************************************************/
      24    /*************************************************************************/
      25    /*********                                                       *********/
      26    /*********        WARNING, THIS IS ALPHA CODE!  THIS API         *********/
      27    /*********    IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE    *********/
      28    /*********            FREETYPE DEVELOPMENT TEAM                  *********/
      29    /*********                                                       *********/
      30    /*************************************************************************/
      31    /*************************************************************************/
      32    /*************************************************************************/
      33    /*************************************************************************/
      34    /*************************************************************************/
      35  
      36  
      37    /* Main reason for not lifting the functions in this module to a  */
      38    /* 'standard' API is that the used parameters for emboldening and */
      39    /* slanting are not configurable.  Consider the functions as a    */
      40    /* code resource that should be copied into the application and   */
      41    /* adapted to the particular needs.                               */
      42  
      43  
      44  #ifndef FTSYNTH_H_
      45  #define FTSYNTH_H_
      46  
      47  
      48  #include <freetype/freetype.h>
      49  
      50  #ifdef FREETYPE_H
      51  #error "freetype.h of FreeType 1 has been loaded!"
      52  #error "Please fix the directory search order for header files"
      53  #error "so that freetype.h of FreeType 2 is found first."
      54  #endif
      55  
      56  
      57  FT_BEGIN_HEADER
      58  
      59    /* Embolden a glyph by a 'reasonable' value (which is highly a matter of */
      60    /* taste).  This function is actually a convenience function, providing  */
      61    /* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden.           */
      62    /*                                                                       */
      63    /* For emboldened outlines the height, width, and advance metrics are    */
      64    /* increased by the strength of the emboldening -- this even affects     */
      65    /* mono-width fonts!                                                     */
      66    /*                                                                       */
      67    /* You can also call @FT_Outline_Get_CBox to get precise values.         */
      68    FT_EXPORT( void )
      69    FT_GlyphSlot_Embolden( FT_GlyphSlot  slot );
      70  
      71    /* Precisely adjust the glyph weight either horizontally or vertically.  */
      72    /* The `xdelta` and `ydelta` values are fractions of the face Em size    */
      73    /* (in fixed-point format).  Considering that a regular face would have  */
      74    /* stem widths on the order of 0.1 Em, a delta of 0.05 (0x0CCC) should   */
      75    /* be very noticeable.  To increase or decrease the weight, use positive */
      76    /* or negative values, respectively.                                     */
      77    FT_EXPORT( void )
      78    FT_GlyphSlot_AdjustWeight( FT_GlyphSlot  slot,
      79                               FT_Fixed      xdelta,
      80                               FT_Fixed      ydelta );
      81  
      82  
      83    /* Slant an outline glyph to the right by about 12 degrees.              */
      84    FT_EXPORT( void )
      85    FT_GlyphSlot_Oblique( FT_GlyphSlot  slot );
      86  
      87    /* Slant an outline glyph by a given sine of an angle.  You can apply    */
      88    /* slant along either x- or y-axis by choosing a corresponding non-zero  */
      89    /* argument.  If both slants are non-zero, some affine transformation    */
      90    /* will result.                                                          */
      91    FT_EXPORT( void )
      92    FT_GlyphSlot_Slant( FT_GlyphSlot  slot,
      93                        FT_Fixed      xslant,
      94                        FT_Fixed      yslant );
      95  
      96    /* */
      97  
      98  
      99  FT_END_HEADER
     100  
     101  #endif /* FTSYNTH_H_ */
     102  
     103  
     104  /* END */