1 /***************************************************************************/ 2 /* */ 3 /* ftcffdrv.h */ 4 /* */ 5 /* FreeType API for controlling the CFF driver (specification only). */ 6 /* */ 7 /* Copyright 2013 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 __FTCFFDRV_H__ 20 #define __FTCFFDRV_H__ 21 22 #include <ft2build.h> 23 #include FT_FREETYPE_H 24 25 #ifdef FREETYPE_H 26 #error "freetype.h of FreeType 1 has been loaded!" 27 #error "Please fix the directory search order for header files" 28 #error "so that freetype.h of FreeType 2 is found first." 29 #endif 30 31 32 FT_BEGIN_HEADER 33 34 35 /************************************************************************** 36 * 37 * @section: 38 * cff_driver 39 * 40 * @title: 41 * The CFF driver 42 * 43 * @abstract: 44 * Controlling the CFF driver module. 45 * 46 * @description: 47 * While FreeType's CFF driver doesn't expose API functions by itself, 48 * it is possible to control its behaviour with @FT_Property_Set and 49 * @FT_Property_Get. The following lists the available properties 50 * together with the necessary macros and structures. 51 * 52 * The CFF driver's module name is `cff'. 53 * 54 */ 55 56 57 /************************************************************************** 58 * 59 * @property: 60 * hinting-engine 61 * 62 * @description: 63 * Thanks to Adobe, which contributed a new hinting (and parsing) 64 * engine, an application can select between `freetype' and `adobe' if 65 * compiled with CFF_CONFIG_OPTION_OLD_ENGINE. If this configuration 66 * macro isn't defined, `hinting-engine' does nothing. 67 * 68 * The default engine is `freetype' if CFF_CONFIG_OPTION_OLD_ENGINE is 69 * defined, and `adobe' otherwise. 70 * 71 * The following example code demonstrates how to select Adobe's hinting 72 * engine (omitting the error handling). 73 * 74 * { 75 * FT_Library library; 76 * FT_Face face; 77 * FT_UInt hinting_engine = FT_CFF_HINTING_ADOBE; 78 * 79 * 80 * FT_Init_FreeType( &library ); 81 * 82 * FT_Property_Set( library, "cff", 83 * "hinting-engine", &hinting_engine ); 84 * } 85 * 86 * @note: 87 * This property can be used with @FT_Property_Get also. 88 * 89 */ 90 91 92 /************************************************************************** 93 * 94 * @enum: 95 * FT_CFF_HINTING_XXX 96 * 97 * @description: 98 * A list of constants used for the @hinting-engine property to select 99 * the hinting engine for CFF fonts. 100 * 101 * @values: 102 * FT_CFF_HINTING_FREETYPE :: 103 * Use the old FreeType hinting engine. 104 * 105 * FT_CFF_HINTING_ADOBE :: 106 * Use the hinting engine contributed by Adobe. 107 * 108 */ 109 #define FT_CFF_HINTING_FREETYPE 0 110 #define FT_CFF_HINTING_ADOBE 1 111 112 113 /************************************************************************** 114 * 115 * @property: 116 * no-stem-darkening 117 * 118 * @description: 119 * By default, the Adobe CFF engine darkens stems at smaller sizes, 120 * regardless of hinting, to enhance contrast. Setting this property, 121 * stem darkening gets switched off. 122 * 123 * Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set. 124 * 125 * { 126 * FT_Library library; 127 * FT_Face face; 128 * FT_Bool no_stem_darkening = TRUE; 129 * 130 * 131 * FT_Init_FreeType( &library ); 132 * 133 * FT_Property_Set( library, "cff", 134 * "no-stem-darkening", &no_stem_darkening ); 135 * } 136 * 137 * @note: 138 * This property can be used with @FT_Property_Get also. 139 * 140 */ 141 142 143 /* */ 144 145 FT_END_HEADER 146 147 148 #endif /* __FTCFFDRV_H__ */ 149 150 151 /* END */ 152