tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ftsynth.h (4483B)


      1 /****************************************************************************
      2 *
      3 * ftsynth.h
      4 *
      5 *   FreeType synthesizing code for emboldening and slanting
      6 *   (specification).
      7 *
      8 * Copyright (C) 2000-2025 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 */