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 */ 105