1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* freetype.h */ 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* FreeType high-level API and common types (specification only). */ 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* Copyright 1996-2013 by */ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* This file is part of the FreeType project, and may only be used, */ 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* modified, and distributed under the terms of the FreeType project */ 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* this file you indicate that you have read the license and */ 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* understand and accept it fully. */ 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef __FREETYPE_H__ 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __FREETYPE_H__ 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_FREETYPE_H 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "`ft2build.h' hasn't been included yet!" 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "Please always use macros to include FreeType header files." 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "Example:" 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error " #include <ft2build.h>" 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error " #include FT_FREETYPE_H" 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../ft2build.h" 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "config/ftconfig.h" 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "fttypes.h" 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "fterrors.h" 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_BEGIN_HEADER 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Section> */ 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* user_allocation */ 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Title> */ 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* User allocation */ 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Abstract> */ 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* How client applications should allocate FreeType data structures. */ 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType assumes that structures allocated by the user and passed */ 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* as arguments are zeroed out except for the actual data. In other */ 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* words, it is recommended to use `calloc' (or variants of it) */ 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* instead of `malloc' for allocation. */ 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* B A S I C T Y P E S */ 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Section> */ 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* base_interface */ 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Title> */ 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Base Interface */ 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Abstract> */ 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The FreeType~2 base font interface. */ 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This section describes the public high-level API of FreeType~2. */ 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Order> */ 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Library */ 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Face */ 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Size */ 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_GlyphSlot */ 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_CharMap */ 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Encoding */ 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FaceRec */ 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_SCALABLE */ 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_FIXED_SIZES */ 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_FIXED_WIDTH */ 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_HORIZONTAL */ 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_VERTICAL */ 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_SFNT */ 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_KERNING */ 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_MULTIPLE_MASTERS */ 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_GLYPH_NAMES */ 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_EXTERNAL_STREAM */ 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_FAST_GLYPHS */ 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_HINTER */ 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_STYLE_FLAG_BOLD */ 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_STYLE_FLAG_ITALIC */ 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_SizeRec */ 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Size_Metrics */ 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_GlyphSlotRec */ 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Glyph_Metrics */ 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_SubGlyph */ 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Bitmap_Size */ 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Init_FreeType */ 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Done_FreeType */ 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_New_Face */ 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Done_Face */ 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_New_Memory_Face */ 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Open_Face */ 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Open_Args */ 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Parameter */ 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Attach_File */ 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Attach_Stream */ 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Set_Char_Size */ 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Set_Pixel_Sizes */ 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Request_Size */ 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Select_Size */ 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Size_Request_Type */ 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Size_Request */ 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Set_Transform */ 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Load_Glyph */ 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Char_Index */ 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Name_Index */ 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Load_Char */ 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_OPEN_MEMORY */ 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_OPEN_STREAM */ 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_OPEN_PATHNAME */ 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_OPEN_DRIVER */ 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_OPEN_PARAMS */ 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_DEFAULT */ 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_RENDER */ 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_MONOCHROME */ 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_LINEAR_DESIGN */ 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_NO_SCALE */ 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_NO_HINTING */ 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_NO_BITMAP */ 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_CROP_BITMAP */ 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_VERTICAL_LAYOUT */ 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_IGNORE_TRANSFORM */ 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH */ 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_FORCE_AUTOHINT */ 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_NO_RECURSE */ 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_PEDANTIC */ 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_TARGET_NORMAL */ 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_TARGET_LIGHT */ 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_TARGET_MONO */ 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_TARGET_LCD */ 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_LOAD_TARGET_LCD_V */ 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Render_Glyph */ 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Render_Mode */ 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Kerning */ 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Kerning_Mode */ 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Track_Kerning */ 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Glyph_Name */ 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Postscript_Name */ 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_CharMapRec */ 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Select_Charmap */ 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Set_Charmap */ 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Charmap_Index */ 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FSTYPE_INSTALLABLE_EMBEDDING */ 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING */ 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING */ 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FSTYPE_EDITABLE_EMBEDDING */ 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FSTYPE_NO_SUBSETTING */ 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FSTYPE_BITMAP_EMBEDDING_ONLY */ 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_FSType_Flags */ 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Glyph_Metrics */ 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A structure used to model the metrics of a single glyph. The */ 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* values are expressed in 26.6 fractional pixel format; if the flag */ 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_LOAD_NO_SCALE has been used while loading the glyph, values */ 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* are expressed in font units instead. */ 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* width :: */ 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The glyph's width. */ 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* height :: */ 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The glyph's height. */ 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* horiBearingX :: */ 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Left side bearing for horizontal layout. */ 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* horiBearingY :: */ 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Top side bearing for horizontal layout. */ 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* horiAdvance :: */ 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Advance width for horizontal layout. */ 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* vertBearingX :: */ 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Left side bearing for vertical layout. */ 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* vertBearingY :: */ 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Top side bearing for vertical layout. Larger positive values */ 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* mean further below the vertical glyph origin. */ 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* vertAdvance :: */ 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Advance height for vertical layout. Positive values mean the */ 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph has a positive advance downward. */ 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If not disabled with @FT_LOAD_NO_HINTING, the values represent */ 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* dimensions of the hinted glyph (in case hinting is applicable). */ 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Stroking a glyph with an outside border does not increase */ 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `horiAdvance' or `vertAdvance'; you have to manually adjust these */ 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* values to account for the added width and height. */ 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Glyph_Metrics_ 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos width; 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos height; 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos horiBearingX; 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos horiBearingY; 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos horiAdvance; 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos vertBearingX; 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos vertBearingY; 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos vertAdvance; 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Glyph_Metrics; 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Bitmap_Size */ 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This structure models the metrics of a bitmap strike (i.e., a set */ 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* of glyphs for a given point size and resolution) in a bitmap font. */ 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* It is used for the `available_sizes' field of @FT_Face. */ 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* height :: The vertical distance, in pixels, between two */ 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* consecutive baselines. It is always positive. */ 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* width :: The average width, in pixels, of all glyphs in the */ 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* strike. */ 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* size :: The nominal size of the strike in 26.6 fractional */ 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* points. This field is not very useful. */ 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* x_ppem :: The horizontal ppem (nominal width) in 26.6 fractional */ 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* pixels. */ 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* y_ppem :: The vertical ppem (nominal height) in 26.6 fractional */ 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* pixels. */ 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Windows FNT: */ 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The nominal size given in a FNT font is not reliable. Thus when */ 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the driver finds it incorrect, it sets `size' to some calculated */ 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* values and sets `x_ppem' and `y_ppem' to the pixel width and */ 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* height given in the font, respectively. */ 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TrueType embedded bitmaps: */ 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `size', `width', and `height' values are not contained in the */ 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* bitmap strike itself. They are computed from the global font */ 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* parameters. */ 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Bitmap_Size_ 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Short height; 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Short width; 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos size; 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos x_ppem; 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos y_ppem; 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Bitmap_Size; 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* O B J E C T C L A S S E S */ 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Library */ 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to a FreeType library instance. Each `library' is */ 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* completely independent from the others; it is the `root' of a set */ 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* of objects like fonts, faces, sizes, etc. */ 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* It also embeds a memory manager (see @FT_Memory), as well as a */ 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* scan-line converter object (see @FT_Raster). */ 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* In multi-threaded applications, make sure that the same FT_Library */ 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* object or any of its children doesn't get accessed in parallel. */ 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Library objects are normally created by @FT_Init_FreeType, and */ 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* destroyed with @FT_Done_FreeType. If you need reference-counting */ 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (cf. @FT_Reference_Library), use @FT_New_Library and */ 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Done_Library. */ 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_LibraryRec_ *FT_Library; 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Module */ 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to a given FreeType module object. Each module can be a */ 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* font driver, a renderer, or anything else that provides services */ 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* to the formers. */ 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_ModuleRec_* FT_Module; 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Driver */ 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to a given FreeType font driver object. Each font driver */ 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is a special module capable of creating faces from font files. */ 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_DriverRec_* FT_Driver; 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Renderer */ 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to a given FreeType renderer. A renderer is a special */ 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module in charge of converting a glyph image to a bitmap, when */ 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* necessary. Each renderer supports a given glyph image format, and */ 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* one or more target surface depths. */ 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_RendererRec_* FT_Renderer; 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Face */ 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to a given typographic face object. A face object models */ 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* a given typeface, in a given style. */ 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Each face object also owns a single @FT_GlyphSlot object, as well */ 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* as one or more @FT_Size objects. */ 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Use @FT_New_Face or @FT_Open_Face to create a new face object from */ 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* a given filepathname or a custom input stream. */ 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Use @FT_Done_Face to destroy it (along with its slot and sizes). */ 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Also> */ 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* See @FT_FaceRec for the publicly accessible fields of a given face */ 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* object. */ 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_FaceRec_* FT_Face; 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Size */ 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to an object used to model a face scaled to a given */ 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* character size. */ 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Each @FT_Face has an _active_ @FT_Size object that is used by */ 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* functions like @FT_Load_Glyph to determine the scaling */ 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* transformation which is used to load and hint glyphs and metrics. */ 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes, */ 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Request_Size or even @FT_Select_Size to change the content */ 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (i.e., the scaling values) of the active @FT_Size. */ 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* You can use @FT_New_Size to create additional size objects for a */ 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* given @FT_Face, but they won't be used by other functions until */ 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* you activate it through @FT_Activate_Size. Only one size can be */ 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* activated at any given time per face. */ 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Also> */ 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* See @FT_SizeRec for the publicly accessible fields of a given size */ 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* object. */ 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_SizeRec_* FT_Size; 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_GlyphSlot */ 442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to a given `glyph slot'. A slot is a container where it */ 445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is possible to load any of the glyphs contained in its parent */ 446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face. */ 447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* In other words, each time you call @FT_Load_Glyph or */ 449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Load_Char, the slot's content is erased by the new glyph data, */ 450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* i.e., the glyph's metrics, its image (bitmap or outline), and */ 451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* other control information. */ 452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Also> */ 454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* See @FT_GlyphSlotRec for the publicly accessible glyph fields. */ 455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_GlyphSlotRec_* FT_GlyphSlot; 457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_CharMap */ 463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to a given character map. A charmap is used to translate */ 466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* character codes in a given encoding into glyph indexes for its */ 467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* parent's face. Some font formats may provide several charmaps per */ 468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* font. */ 469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Each face object owns zero or more charmaps, but only one of them */ 471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* can be `active' and used by @FT_Get_Char_Index or @FT_Load_Char. */ 472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The list of available charmaps in a face is available through the */ 474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `face->num_charmaps' and `face->charmaps' fields of @FT_FaceRec. */ 475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The currently active charmap is available as `face->charmap'. */ 477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* You should call @FT_Set_Charmap to change it. */ 478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* When a new face is created (either through @FT_New_Face or */ 481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Open_Face), the library looks for a Unicode charmap within */ 482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the list and automatically activates it. */ 483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Also> */ 485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* See @FT_CharMapRec for the publicly accessible fields of a given */ 486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* character map. */ 487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_CharMapRec_* FT_CharMap; 489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Macro> */ 494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENC_TAG */ 495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This macro converts four-letter tags into an unsigned long. It is */ 498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* used to define `encoding' identifiers (see @FT_Encoding). */ 499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Since many 16-bit compilers don't like 32-bit enumerations, you */ 502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* should redefine this macro in case of problems to something like */ 503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* this: */ 504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* { */ 506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* #define FT_ENC_TAG( value, a, b, c, d ) value */ 507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* } */ 508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* to get a simple enumeration without assigning special numbers. */ 510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_ENC_TAG 513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ENC_TAG( value, a, b, c, d ) \ 514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov value = ( ( (FT_UInt32)(a) << 24 ) | \ 515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( (FT_UInt32)(b) << 16 ) | \ 516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( (FT_UInt32)(c) << 8 ) | \ 517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (FT_UInt32)(d) ) 518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* FT_ENC_TAG */ 520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Enum> */ 525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Encoding */ 526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* An enumeration used to specify character sets supported by */ 529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* charmaps. Used in the @FT_Select_Charmap API function. */ 530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Despite the name, this enumeration lists specific character */ 533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* repertories (i.e., charsets), and not text encoding methods (e.g., */ 534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* UTF-8, UTF-16, etc.). */ 535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Other encodings might be defined in the future. */ 537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Values> */ 539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_NONE :: */ 540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The encoding value~0 is reserved. */ 541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_UNICODE :: */ 543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Corresponds to the Unicode character set. This value covers */ 544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* all versions of the Unicode repertoire, including ASCII and */ 545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Latin-1. Most fonts include a Unicode charmap, but not all */ 546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* of them. */ 547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* For example, if you want to access Unicode value U+1F028 (and */ 549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the font contains it), use value 0x1F028 as the input value for */ 550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Get_Char_Index. */ 551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_MS_SYMBOL :: */ 553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Corresponds to the Microsoft Symbol encoding, used to encode */ 554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* mathematical symbols in the 32..255 character code range. For */ 555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* more information, see `http://www.ceviz.net/symbol.htm'. */ 556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_SJIS :: */ 558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Corresponds to Japanese SJIS encoding. More info at */ 559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* at `http://langsupport.japanreference.com/encoding.shtml'. */ 560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* See note on multi-byte encodings below. */ 561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_GB2312 :: */ 563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Corresponds to an encoding system for Simplified Chinese as used */ 564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* used in mainland China. */ 565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_BIG5 :: */ 567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Corresponds to an encoding system for Traditional Chinese as */ 568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* used in Taiwan and Hong Kong. */ 569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_WANSUNG :: */ 571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Corresponds to the Korean encoding system known as Wansung. */ 572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* For more information see */ 573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `http://www.microsoft.com/typography/unicode/949.txt'. */ 574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_JOHAB :: */ 576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The Korean standard character set (KS~C 5601-1992), which */ 577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* corresponds to MS Windows code page 1361. This character set */ 578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* includes all possible Hangeul character combinations. */ 579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_ADOBE_LATIN_1 :: */ 581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Corresponds to a Latin-1 encoding as defined in a Type~1 */ 582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* PostScript font. It is limited to 256 character codes. */ 583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_ADOBE_STANDARD :: */ 585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Corresponds to the Adobe Standard encoding, as found in Type~1, */ 586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ 587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* codes. */ 588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_ADOBE_EXPERT :: */ 590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Corresponds to the Adobe Expert encoding, as found in Type~1, */ 591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ 592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* codes. */ 593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_ADOBE_CUSTOM :: */ 595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Corresponds to a custom encoding, as found in Type~1, CFF, and */ 596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* OpenType/CFF fonts. It is limited to 256 character codes. */ 597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_APPLE_ROMAN :: */ 599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Corresponds to the 8-bit Apple roman encoding. Many TrueType */ 600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* and OpenType fonts contain a charmap for this encoding, since */ 601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* older versions of Mac OS are able to use it. */ 602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_OLD_LATIN_2 :: */ 604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This value is deprecated and was never used nor reported by */ 605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType. Don't use or test for it. */ 606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_MS_SJIS :: */ 608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Same as FT_ENCODING_SJIS. Deprecated. */ 609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_MS_GB2312 :: */ 611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Same as FT_ENCODING_GB2312. Deprecated. */ 612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_MS_BIG5 :: */ 614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Same as FT_ENCODING_BIG5. Deprecated. */ 615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_MS_WANSUNG :: */ 617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Same as FT_ENCODING_WANSUNG. Deprecated. */ 618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_MS_JOHAB :: */ 620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Same as FT_ENCODING_JOHAB. Deprecated. */ 621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* By default, FreeType automatically synthesizes a Unicode charmap */ 624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* for PostScript fonts, using their glyph names dictionaries. */ 625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* However, it also reports the encodings defined explicitly in the */ 626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* font file, for the cases when they are needed, with the Adobe */ 627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* values as well. */ 628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */ 630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is neither Unicode nor ISO-8859-1 (otherwise it is set to */ 631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out */ 632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* which encoding is really present. If, for example, the */ 633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `cs_registry' field is `KOI8' and the `cs_encoding' field is `R', */ 634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the font is encoded in KOI8-R. */ 635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_NONE is always set (with a single exception) by the */ 637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* winfonts driver. Use @FT_Get_WinFNT_Header and examine the */ 638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `charset' field of the @FT_WinFNT_HeaderRec structure to find out */ 639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* which encoding is really present. For example, */ 640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for */ 641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Russian). */ 642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */ 644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to */ 645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ENCODING_APPLE_ROMAN). */ 646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function */ 648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Get_CMap_Language_ID to query the Mac language ID which may */ 649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* be needed to be able to distinguish Apple encoding variants. See */ 650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT */ 652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* to get an idea how to do that. Basically, if the language ID */ 654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is~0, don't use it, otherwise subtract 1 from the language ID. */ 655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Then examine `encoding_id'. If, for example, `encoding_id' is */ 656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @TT_MAC_ID_ROMAN and the language ID (minus~1) is */ 657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */ 658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi */ 659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* variant the Arabic encoding. */ 660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef enum FT_Encoding_ 662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ), 664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ), 666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENC_TAG( FT_ENCODING_UNICODE, 'u', 'n', 'i', 'c' ), 667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENC_TAG( FT_ENCODING_SJIS, 's', 'j', 'i', 's' ), 669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENC_TAG( FT_ENCODING_GB2312, 'g', 'b', ' ', ' ' ), 670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENC_TAG( FT_ENCODING_BIG5, 'b', 'i', 'g', '5' ), 671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENC_TAG( FT_ENCODING_WANSUNG, 'w', 'a', 'n', 's' ), 672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENC_TAG( FT_ENCODING_JOHAB, 'j', 'o', 'h', 'a' ), 673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* for backwards compatibility */ 675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS, 676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENCODING_MS_GB2312 = FT_ENCODING_GB2312, 677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENCODING_MS_BIG5 = FT_ENCODING_BIG5, 678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG, 679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENCODING_MS_JOHAB = FT_ENCODING_JOHAB, 680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENC_TAG( FT_ENCODING_ADOBE_STANDARD, 'A', 'D', 'O', 'B' ), 682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENC_TAG( FT_ENCODING_ADOBE_EXPERT, 'A', 'D', 'B', 'E' ), 683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENC_TAG( FT_ENCODING_ADOBE_CUSTOM, 'A', 'D', 'B', 'C' ), 684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENC_TAG( FT_ENCODING_ADOBE_LATIN_1, 'l', 'a', 't', '1' ), 685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENC_TAG( FT_ENCODING_OLD_LATIN_2, 'l', 'a', 't', '2' ), 687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ENC_TAG( FT_ENCODING_APPLE_ROMAN, 'a', 'r', 'm', 'n' ) 689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Encoding; 691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Enum> */ 696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ft_encoding_xxx */ 697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* These constants are deprecated; use the corresponding @FT_Encoding */ 700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* values instead. */ 701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_encoding_none FT_ENCODING_NONE 703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_encoding_unicode FT_ENCODING_UNICODE 704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_encoding_symbol FT_ENCODING_MS_SYMBOL 705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_encoding_latin_1 FT_ENCODING_ADOBE_LATIN_1 706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_encoding_latin_2 FT_ENCODING_OLD_LATIN_2 707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_encoding_sjis FT_ENCODING_SJIS 708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_encoding_gb2312 FT_ENCODING_GB2312 709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_encoding_big5 FT_ENCODING_BIG5 710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_encoding_wansung FT_ENCODING_WANSUNG 711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_encoding_johab FT_ENCODING_JOHAB 712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_encoding_adobe_standard FT_ENCODING_ADOBE_STANDARD 714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_encoding_adobe_expert FT_ENCODING_ADOBE_EXPERT 715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_encoding_adobe_custom FT_ENCODING_ADOBE_CUSTOM 716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_encoding_apple_roman FT_ENCODING_APPLE_ROMAN 717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_CharMapRec */ 723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The base charmap structure. */ 726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the parent face object. */ 729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* encoding :: An @FT_Encoding tag identifying the charmap. Use */ 731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* this with @FT_Select_Charmap. */ 732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* platform_id :: An ID number describing the platform for the */ 734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* following encoding ID. This comes directly from */ 735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the TrueType specification and should be emulated */ 736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* for other formats. */ 737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* encoding_id :: A platform specific encoding number. This also */ 739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* comes from the TrueType specification and should be */ 740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* emulated similarly. */ 741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_CharMapRec_ 743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Face face; 745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Encoding encoding; 746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UShort platform_id; 747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UShort encoding_id; 748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_CharMapRec; 750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* B A S E O B J E C T C L A S S E S */ 756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Face_Internal */ 765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* An opaque handle to an `FT_Face_InternalRec' structure, used to */ 768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* model private data of a given @FT_Face object. */ 769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This structure might change between releases of FreeType~2 and is */ 771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* not generally available to client applications. */ 772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Face_InternalRec_* FT_Face_Internal; 774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FaceRec */ 780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType root face class structure. A face object models a */ 783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* typeface in a font file. */ 784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* num_faces :: The number of faces in the font file. Some */ 787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* font formats can have multiple faces in */ 788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* a font file. */ 789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face_index :: The index of the face in the font file. It */ 791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is set to~0 if there is only one face in */ 792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the font file. */ 793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face_flags :: A set of bit flags that give important */ 795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* information about the face; see */ 796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_FACE_FLAG_XXX for the details. */ 797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* style_flags :: A set of bit flags indicating the style of */ 799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the face; see @FT_STYLE_FLAG_XXX for the */ 800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* details. */ 801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* num_glyphs :: The number of glyphs in the face. If the */ 803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face is scalable and has sbits (see */ 804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `num_fixed_sizes'), it is set to the number */ 805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* of outline glyphs. */ 806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* For CID-keyed fonts, this value gives the */ 808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* highest CID used in the font. */ 809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* family_name :: The face's family name. This is an ASCII */ 811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* string, usually in English, which describes */ 812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the typeface's family (like `Times New */ 813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Roman', `Bodoni', `Garamond', etc). This */ 814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is a least common denominator used to list */ 815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* fonts. Some formats (TrueType & OpenType) */ 816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* provide localized and Unicode versions of */ 817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* this string. Applications should use the */ 818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* format specific interface to access them. */ 819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Can be NULL (e.g., in fonts embedded in a */ 820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* PDF file). */ 821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* style_name :: The face's style name. This is an ASCII */ 823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* string, usually in English, which describes */ 824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the typeface's style (like `Italic', */ 825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `Bold', `Condensed', etc). Not all font */ 826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* formats provide a style name, so this field */ 827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is optional, and can be set to NULL. As */ 828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* for `family_name', some formats provide */ 829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* localized and Unicode versions of this */ 830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* string. Applications should use the format */ 831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* specific interface to access them. */ 832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* num_fixed_sizes :: The number of bitmap strikes in the face. */ 834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Even if the face is scalable, there might */ 835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* still be bitmap strikes, which are called */ 836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `sbits' in that case. */ 837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* available_sizes :: An array of @FT_Bitmap_Size for all bitmap */ 839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* strikes in the face. It is set to NULL if */ 840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* there is no bitmap strike. */ 841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* num_charmaps :: The number of charmaps in the face. */ 843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* charmaps :: An array of the charmaps of the face. */ 845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* generic :: A field reserved for client uses. See the */ 847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Generic type description. */ 848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* bbox :: The font bounding box. Coordinates are */ 850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* expressed in font units (see */ 851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `units_per_EM'). The box is large enough */ 852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* to contain any glyph from the font. Thus, */ 853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `bbox.yMax' can be seen as the `maximum */ 854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ascender', and `bbox.yMin' as the `minimum */ 855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* descender'. Only relevant for scalable */ 856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* formats. */ 857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Note that the bounding box might be off by */ 859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (at least) one pixel for hinted fonts. See */ 860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Size_Metrics for further discussion. */ 861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* units_per_EM :: The number of font units per EM square for */ 863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* this face. This is typically 2048 for */ 864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TrueType fonts, and 1000 for Type~1 fonts. */ 865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Only relevant for scalable formats. */ 866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ascender :: The typographic ascender of the face, */ 868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* expressed in font units. For font formats */ 869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* not having this information, it is set to */ 870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `bbox.yMax'. Only relevant for scalable */ 871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* formats. */ 872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* descender :: The typographic descender of the face, */ 874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* expressed in font units. For font formats */ 875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* not having this information, it is set to */ 876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `bbox.yMin'. Note that this field is */ 877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* usually negative. Only relevant for */ 878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* scalable formats. */ 879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* height :: This value is the vertical distance */ 881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* between two consecutive baselines, */ 882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* expressed in font units. It is always */ 883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* positive. Only relevant for scalable */ 884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* formats. */ 885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If you want the global glyph height, use */ 887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `ascender - descender'. */ 888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* max_advance_width :: The maximum advance width, in font units, */ 890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* for all glyphs in this face. This can be */ 891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* used to make word wrapping computations */ 892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* faster. Only relevant for scalable */ 893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* formats. */ 894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* max_advance_height :: The maximum advance height, in font units, */ 896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* for all glyphs in this face. This is only */ 897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* relevant for vertical layouts, and is set */ 898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* to `height' for fonts that do not provide */ 899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* vertical metrics. Only relevant for */ 900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* scalable formats. */ 901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* underline_position :: The position, in font units, of the */ 903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* underline line for this face. It is the */ 904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* center of the underlining stem. Only */ 905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* relevant for scalable formats. */ 906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* underline_thickness :: The thickness, in font units, of the */ 908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* underline for this face. Only relevant for */ 909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* scalable formats. */ 910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph :: The face's associated glyph slot(s). */ 912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* size :: The current active size for this face. */ 914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* charmap :: The current active charmap for this face. */ 916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Fields may be changed after a call to @FT_Attach_File or */ 919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Attach_Stream. */ 920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_FaceRec_ 922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long num_faces; 924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long face_index; 925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long face_flags; 927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long style_flags; 928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long num_glyphs; 930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_String* family_name; 932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_String* style_name; 933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int num_fixed_sizes; 935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Bitmap_Size* available_sizes; 936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int num_charmaps; 938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_CharMap* charmaps; 939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef _FX_MANAGED_CODE_ 941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define generic generic_data 942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Generic generic; 945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*# The following member variables (down to `underline_thickness') */ 947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size */ 948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*# for bitmap fonts. */ 949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_BBox bbox; 950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UShort units_per_EM; 952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Short ascender; 953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Short descender; 954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Short height; 955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Short max_advance_width; 957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Short max_advance_height; 958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Short underline_position; 960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Short underline_thickness; 961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_GlyphSlot glyph; 963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Size size; 964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_CharMap charmap; 965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*@private begin */ 967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Driver driver; 969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Memory memory; 970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Stream stream; 971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ListRec sizes_list; 973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Generic autohint; /* face-specific auto-hinter data */ 975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void* extensions; /* unused */ 976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Face_Internal internal; 978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*@private end */ 980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_FaceRec; 982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Enum> */ 987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_XXX */ 988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A list of bit flags used in the `face_flags' field of the */ 991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_FaceRec structure. They inform client applications of */ 992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* properties of the corresponding face. */ 993ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Values> */ 995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_SCALABLE :: */ 996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Indicates that the face contains outline glyphs. This doesn't */ 997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* prevent bitmap strikes, i.e., a face can have both this and */ 998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* and @FT_FACE_FLAG_FIXED_SIZES set. */ 999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_FIXED_SIZES :: */ 1001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Indicates that the face contains bitmap strikes. See also the */ 1002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `num_fixed_sizes' and `available_sizes' fields of @FT_FaceRec. */ 1003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_FIXED_WIDTH :: */ 1005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Indicates that the face contains fixed-width characters (like */ 1006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Courier, Lucido, MonoType, etc.). */ 1007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_SFNT :: */ 1009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Indicates that the face uses the `sfnt' storage scheme. For */ 1010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* now, this means TrueType and OpenType. */ 1011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_HORIZONTAL :: */ 1013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Indicates that the face contains horizontal glyph metrics. This */ 1014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* should be set for all common formats. */ 1015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_VERTICAL :: */ 1017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Indicates that the face contains vertical glyph metrics. This */ 1018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is only available in some formats, not all of them. */ 1019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_KERNING :: */ 1021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Indicates that the face contains kerning information. If set, */ 1022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the kerning distance can be retrieved through the function */ 1023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Get_Kerning. Otherwise the function always return the */ 1024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* vector (0,0). Note that FreeType doesn't handle kerning data */ 1025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* from the `GPOS' table (as present in some OpenType fonts). */ 1026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_FAST_GLYPHS :: */ 1028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT. */ 1029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_MULTIPLE_MASTERS :: */ 1031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Indicates that the font contains multiple masters and is capable */ 1032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* of interpolating between them. See the multiple-masters */ 1033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* specific API for details. */ 1034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_GLYPH_NAMES :: */ 1036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Indicates that the font contains glyph names that can be */ 1037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* retrieved through @FT_Get_Glyph_Name. Note that some TrueType */ 1038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* fonts contain broken glyph name tables. Use the function */ 1039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Has_PS_Glyph_Names when needed. */ 1040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_EXTERNAL_STREAM :: */ 1042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Used internally by FreeType to indicate that a face's stream was */ 1043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* provided by the client application and should not be destroyed */ 1044ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* when @FT_Done_Face is called. Don't read or test this flag. */ 1045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_HINTER :: */ 1047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Set if the font driver has a hinting machine of its own. For */ 1048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* example, with TrueType fonts, it makes sense to use data from */ 1049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the SFNT `gasp' table only if the native TrueType hinting engine */ 1050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (with the bytecode interpreter) is available and active. */ 1051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_CID_KEYED :: */ 1053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Set if the font is CID-keyed. In that case, the font is not */ 1054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* accessed by glyph indices but by CID values. For subsetted */ 1055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* CID-keyed fonts this has the consequence that not all index */ 1056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* values are a valid argument to FT_Load_Glyph. Only the CID */ 1057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* values for which corresponding glyphs in the subsetted font */ 1058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* exist make FT_Load_Glyph return successfully; in all other cases */ 1059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* you get an `FT_Err_Invalid_Argument' error. */ 1060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Note that CID-keyed fonts which are in an SFNT wrapper don't */ 1062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* have this flag set since the glyphs are accessed in the normal */ 1063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* way (using contiguous indices); the `CID-ness' isn't visible to */ 1064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the application. */ 1065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FACE_FLAG_TRICKY :: */ 1067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Set if the font is `tricky', this is, it always needs the */ 1068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* font format's native hinting engine to get a reasonable result. */ 1069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A typical example is the Chinese font `mingli.ttf' which uses */ 1070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TrueType bytecode instructions to move and scale all of its */ 1071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* subglyphs. */ 1072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* It is not possible to autohint such fonts using */ 1074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_LOAD_FORCE_AUTOHINT; it will also ignore */ 1075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_LOAD_NO_HINTING. You have to set both @FT_LOAD_NO_HINTING */ 1076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you */ 1077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* probably never want this except for demonstration purposes. */ 1078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Currently, there are about a dozen TrueType fonts in the list of */ 1080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* tricky fonts; they are hard-coded in file `ttobjs.c'. */ 1081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FACE_FLAG_SCALABLE ( 1L << 0 ) 1083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 ) 1084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 ) 1085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FACE_FLAG_SFNT ( 1L << 3 ) 1086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FACE_FLAG_HORIZONTAL ( 1L << 4 ) 1087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FACE_FLAG_VERTICAL ( 1L << 5 ) 1088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FACE_FLAG_KERNING ( 1L << 6 ) 1089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FACE_FLAG_FAST_GLYPHS ( 1L << 7 ) 1090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FACE_FLAG_MULTIPLE_MASTERS ( 1L << 8 ) 1091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FACE_FLAG_GLYPH_NAMES ( 1L << 9 ) 1092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 ) 1093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FACE_FLAG_HINTER ( 1L << 11 ) 1094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FACE_FLAG_CID_KEYED ( 1L << 12 ) 1095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FACE_FLAG_TRICKY ( 1L << 13 ) 1096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 1099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @macro: 1101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_HAS_HORIZONTAL( face ) 1102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 1104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A macro that returns true whenever a face object contains 1105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * horizontal metrics (this is true for all font formats though). 1106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @also: 1108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @FT_HAS_VERTICAL can be used to check for vertical metrics. 1109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 1111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_HAS_HORIZONTAL( face ) \ 1112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) 1113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 1116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @macro: 1118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_HAS_VERTICAL( face ) 1119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 1121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A macro that returns true whenever a face object contains real 1122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * vertical metrics (and not only synthesized ones). 1123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 1125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_HAS_VERTICAL( face ) \ 1126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( face->face_flags & FT_FACE_FLAG_VERTICAL ) 1127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 1130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @macro: 1132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_HAS_KERNING( face ) 1133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 1135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A macro that returns true whenever a face object contains kerning 1136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * data that can be accessed with @FT_Get_Kerning. 1137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 1139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_HAS_KERNING( face ) \ 1140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( face->face_flags & FT_FACE_FLAG_KERNING ) 1141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 1144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @macro: 1146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_IS_SCALABLE( face ) 1147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 1149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A macro that returns true whenever a face object contains a scalable 1150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF, 1151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * and PFR font formats. 1152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 1154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_IS_SCALABLE( face ) \ 1155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( face->face_flags & FT_FACE_FLAG_SCALABLE ) 1156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 1159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @macro: 1161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_IS_SFNT( face ) 1162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 1164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A macro that returns true whenever a face object contains a font 1165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * whose format is based on the SFNT storage scheme. This usually 1166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * means: TrueType fonts, OpenType fonts, as well as SFNT-based embedded 1167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * bitmap fonts. 1168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * If this macro is true, all functions defined in @FT_SFNT_NAMES_H and 1170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @FT_TRUETYPE_TABLES_H are available. 1171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 1173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_IS_SFNT( face ) \ 1174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( face->face_flags & FT_FACE_FLAG_SFNT ) 1175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 1178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @macro: 1180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_IS_FIXED_WIDTH( face ) 1181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 1183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A macro that returns true whenever a face object contains a font face 1184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * that contains fixed-width (or `monospace', `fixed-pitch', etc.) 1185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * glyphs. 1186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 1188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_IS_FIXED_WIDTH( face ) \ 1189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) 1190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 1193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @macro: 1195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_HAS_FIXED_SIZES( face ) 1196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 1198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A macro that returns true whenever a face object contains some 1199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * embedded bitmaps. See the `available_sizes' field of the 1200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @FT_FaceRec structure. 1201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 1203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_HAS_FIXED_SIZES( face ) \ 1204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) 1205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 1208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @macro: 1210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_HAS_FAST_GLYPHS( face ) 1211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 1213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Deprecated. 1214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 1216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_HAS_FAST_GLYPHS( face ) 0 1217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 1220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @macro: 1222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_HAS_GLYPH_NAMES( face ) 1223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 1225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A macro that returns true whenever a face object contains some glyph 1226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * names that can be accessed through @FT_Get_Glyph_Name. 1227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 1229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_HAS_GLYPH_NAMES( face ) \ 1230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) 1231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 1234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @macro: 1236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_HAS_MULTIPLE_MASTERS( face ) 1237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 1239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A macro that returns true whenever a face object contains some 1240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H 1241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * are then available to choose the exact design you want. 1242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 1244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_HAS_MULTIPLE_MASTERS( face ) \ 1245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) 1246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 1249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @macro: 1251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_IS_CID_KEYED( face ) 1252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 1254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A macro that returns true whenever a face object contains a CID-keyed 1255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * font. See the discussion of @FT_FACE_FLAG_CID_KEYED for more 1256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * details. 1257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * If this macro is true, all functions defined in @FT_CID_H are 1259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * available. 1260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 1262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_IS_CID_KEYED( face ) \ 1263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( face->face_flags & FT_FACE_FLAG_CID_KEYED ) 1264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 1267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @macro: 1269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_IS_TRICKY( face ) 1270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 1272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A macro that returns true whenever a face represents a `tricky' font. 1273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * See the discussion of @FT_FACE_FLAG_TRICKY for more details. 1274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 1276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_IS_TRICKY( face ) \ 1277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( face->face_flags & FT_FACE_FLAG_TRICKY ) 1278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Const> */ 1283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_STYLE_FLAG_XXX */ 1284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A list of bit-flags used to indicate the style of a given face. */ 1287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* These are used in the `style_flags' field of @FT_FaceRec. */ 1288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Values> */ 1290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_STYLE_FLAG_ITALIC :: */ 1291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Indicates that a given face style is italic or oblique. */ 1292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_STYLE_FLAG_BOLD :: */ 1294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Indicates that a given face is bold. */ 1295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 1297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The style information as provided by FreeType is very basic. More */ 1298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* details are beyond the scope and should be done on a higher level */ 1299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (for example, by analyzing various fields of the `OS/2' table in */ 1300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* SFNT based fonts). */ 1301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_STYLE_FLAG_ITALIC ( 1 << 0 ) 1303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_STYLE_FLAG_BOLD ( 1 << 1 ) 1304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 1309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Size_Internal */ 1310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* An opaque handle to an `FT_Size_InternalRec' structure, used to */ 1313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* model private data of a given @FT_Size object. */ 1314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Size_InternalRec_* FT_Size_Internal; 1316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 1321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Size_Metrics */ 1322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The size metrics structure gives the metrics of a size object. */ 1325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 1327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* x_ppem :: The width of the scaled EM square in pixels, hence */ 1328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the term `ppem' (pixels per EM). It is also */ 1329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* referred to as `nominal width'. */ 1330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* y_ppem :: The height of the scaled EM square in pixels, */ 1332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* hence the term `ppem' (pixels per EM). It is also */ 1333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* referred to as `nominal height'. */ 1334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* x_scale :: A 16.16 fractional scaling value used to convert */ 1336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* horizontal metrics from font units to 26.6 */ 1337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* fractional pixels. Only relevant for scalable */ 1338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* font formats. */ 1339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* y_scale :: A 16.16 fractional scaling value used to convert */ 1341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* vertical metrics from font units to 26.6 */ 1342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* fractional pixels. Only relevant for scalable */ 1343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* font formats. */ 1344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ascender :: The ascender in 26.6 fractional pixels. See */ 1346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_FaceRec for the details. */ 1347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* descender :: The descender in 26.6 fractional pixels. See */ 1349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_FaceRec for the details. */ 1350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* height :: The height in 26.6 fractional pixels. See */ 1352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_FaceRec for the details. */ 1353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* max_advance :: The maximum advance width in 26.6 fractional */ 1355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* pixels. See @FT_FaceRec for the details. */ 1356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 1358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The scaling values, if relevant, are determined first during a */ 1359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* size changing operation. The remaining fields are then set by the */ 1360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* driver. For scalable formats, they are usually set to scaled */ 1361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* values of the corresponding fields in @FT_FaceRec. */ 1362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Note that due to glyph hinting, these values might not be exact */ 1364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* for certain fonts. Thus they must be treated as unreliable */ 1365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* with an error margin of at least one pixel! */ 1366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Indeed, the only way to get the exact metrics is to render _all_ */ 1368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyphs. As this would be a definite performance hit, it is up to */ 1369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* client applications to perform such computations. */ 1370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The FT_Size_Metrics structure is valid for bitmap fonts also. */ 1372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Size_Metrics_ 1374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UShort x_ppem; /* horizontal pixels per EM */ 1376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UShort y_ppem; /* vertical pixels per EM */ 1377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed x_scale; /* scaling values used to convert font */ 1379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed y_scale; /* units to 26.6 fractional pixels */ 1380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos ascender; /* ascender in 26.6 frac. pixels */ 1382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos descender; /* descender in 26.6 frac. pixels */ 1383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos height; /* text height in 26.6 frac. pixels */ 1384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos max_advance; /* max horizontal advance, in 26.6 pixels */ 1385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Size_Metrics; 1387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 1392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_SizeRec */ 1393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType root size class structure. A size object models a face */ 1396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* object at a given size. */ 1397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 1399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: Handle to the parent face object. */ 1400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* generic :: A typeless pointer, which is unused by the FreeType */ 1402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library or any of its drivers. It can be used by */ 1403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* client applications to link their own data to each size */ 1404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* object. */ 1405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* metrics :: Metrics for this size object. This field is read-only. */ 1407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_SizeRec_ 1409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Face face; /* parent face object */ 1411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Generic generic; /* generic pointer for client uses */ 1412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Size_Metrics metrics; /* size metrics */ 1413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Size_Internal internal; 1414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_SizeRec; 1416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 1421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_SubGlyph */ 1422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The subglyph structure is an internal object used to describe */ 1425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* subglyphs (for example, in the case of composites). */ 1426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 1428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The subglyph implementation is not part of the high-level API, */ 1429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* hence the forward structure declaration. */ 1430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* You can however retrieve subglyph information with */ 1432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Get_SubGlyph_Info. */ 1433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_SubGlyphRec_* FT_SubGlyph; 1435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 1440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Slot_Internal */ 1441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* An opaque handle to an `FT_Slot_InternalRec' structure, used to */ 1444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* model private data of a given @FT_GlyphSlot object. */ 1445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Slot_InternalRec_* FT_Slot_Internal; 1447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 1452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_GlyphSlotRec */ 1453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType root glyph slot class structure. A glyph slot is a */ 1456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* container where individual glyphs can be loaded, be they in */ 1457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* outline or bitmap format. */ 1458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 1460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library :: A handle to the FreeType library instance */ 1461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* this slot belongs to. */ 1462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the parent face object. */ 1464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* next :: In some cases (like some font tools), several */ 1466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph slots per face object can be a good */ 1467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* thing. As this is rare, the glyph slots are */ 1468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* listed through a direct, single-linked list */ 1469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* using its `next' field. */ 1470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* generic :: A typeless pointer which is unused by the */ 1472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType library or any of its drivers. It */ 1473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* can be used by client applications to link */ 1474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* their own data to each glyph slot object. */ 1475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* metrics :: The metrics of the last loaded glyph in the */ 1477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* slot. The returned values depend on the last */ 1478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* load flags (see the @FT_Load_Glyph API */ 1479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* function) and can be expressed either in 26.6 */ 1480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* fractional pixels or font units. */ 1481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Note that even when the glyph image is */ 1483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* transformed, the metrics are not. */ 1484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* linearHoriAdvance :: The advance width of the unhinted glyph. */ 1486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Its value is expressed in 16.16 fractional */ 1487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ 1488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* when loading the glyph. This field can be */ 1489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* important to perform correct WYSIWYG layout. */ 1490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Only relevant for outline glyphs. */ 1491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* linearVertAdvance :: The advance height of the unhinted glyph. */ 1493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Its value is expressed in 16.16 fractional */ 1494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ 1495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* when loading the glyph. This field can be */ 1496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* important to perform correct WYSIWYG layout. */ 1497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Only relevant for outline glyphs. */ 1498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* advance :: This shorthand is, depending on */ 1500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_LOAD_IGNORE_TRANSFORM, the transformed */ 1501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* advance width for the glyph (in 26.6 */ 1502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* fractional pixel format). As specified with */ 1503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_LOAD_VERTICAL_LAYOUT, it uses either the */ 1504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `horiAdvance' or the `vertAdvance' value of */ 1505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `metrics' field. */ 1506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* format :: This field indicates the format of the image */ 1508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* contained in the glyph slot. Typically */ 1509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_GLYPH_FORMAT_BITMAP, */ 1510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_GLYPH_FORMAT_OUTLINE, or */ 1511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_GLYPH_FORMAT_COMPOSITE, but others are */ 1512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* possible. */ 1513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* bitmap :: This field is used as a bitmap descriptor */ 1515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* when the slot format is */ 1516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_GLYPH_FORMAT_BITMAP. Note that the */ 1517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* address and content of the bitmap buffer can */ 1518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* change between calls of @FT_Load_Glyph and a */ 1519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* few other functions. */ 1520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* bitmap_left :: This is the bitmap's left bearing expressed */ 1522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* in integer pixels. Of course, this is only */ 1523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* valid if the format is */ 1524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_GLYPH_FORMAT_BITMAP. */ 1525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* bitmap_top :: This is the bitmap's top bearing expressed in */ 1527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* integer pixels. Remember that this is the */ 1528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* distance from the baseline to the top-most */ 1529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph scanline, upwards y~coordinates being */ 1530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* *positive*. */ 1531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* outline :: The outline descriptor for the current glyph */ 1533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* image if its format is */ 1534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_GLYPH_FORMAT_OUTLINE. Once a glyph is */ 1535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* loaded, `outline' can be transformed, */ 1536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* distorted, embolded, etc. However, it must */ 1537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* not be freed. */ 1538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* num_subglyphs :: The number of subglyphs in a composite glyph. */ 1540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This field is only valid for the composite */ 1541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph format that should normally only be */ 1542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* loaded with the @FT_LOAD_NO_RECURSE flag. */ 1543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* For now this is internal to FreeType. */ 1544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* subglyphs :: An array of subglyph descriptors for */ 1546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* composite glyphs. There are `num_subglyphs' */ 1547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* elements in there. Currently internal to */ 1548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType. */ 1549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* control_data :: Certain font drivers can also return the */ 1551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* control data for a given glyph image (e.g. */ 1552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TrueType bytecode, Type~1 charstrings, etc.). */ 1553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This field is a pointer to such data. */ 1554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* control_len :: This is the length in bytes of the control */ 1556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* data. */ 1557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* other :: Really wicked formats can use this pointer to */ 1559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* present their own glyph image to client */ 1560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* applications. Note that the application */ 1561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* needs to know about the image format. */ 1562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* lsb_delta :: The difference between hinted and unhinted */ 1564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* left side bearing while autohinting is */ 1565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* active. Zero otherwise. */ 1566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* rsb_delta :: The difference between hinted and unhinted */ 1568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* right side bearing while autohinting is */ 1569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* active. Zero otherwise. */ 1570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 1572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If @FT_Load_Glyph is called with default flags (see */ 1573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in */ 1574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* its native format (e.g., an outline glyph for TrueType and Type~1 */ 1575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* formats). */ 1576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This image can later be converted into a bitmap by calling */ 1578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Render_Glyph. This function finds the current renderer for */ 1579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the native image's format, then invokes it. */ 1580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The renderer is in charge of transforming the native image through */ 1582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the slot's face transformation fields, then converting it into a */ 1583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* bitmap that is returned in `slot->bitmap'. */ 1584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */ 1586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* to specify the position of the bitmap relative to the current pen */ 1587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* position (e.g., coordinates (0,0) on the baseline). Of course, */ 1588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `slot->format' is also changed to @FT_GLYPH_FORMAT_BITMAP. */ 1589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 1591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Here a small pseudo code fragment which shows how to use */ 1592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `lsb_delta' and `rsb_delta': */ 1593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* { */ 1595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Pos origin_x = 0; */ 1596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Pos prev_rsb_delta = 0; */ 1597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* for all glyphs do */ 1600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <compute kern between current and previous glyph and add it to */ 1601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `origin_x'> */ 1602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <load glyph with `FT_Load_Glyph'> */ 1604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* if ( prev_rsb_delta - face->glyph->lsb_delta >= 32 ) */ 1606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* origin_x -= 64; */ 1607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* else if ( prev_rsb_delta - face->glyph->lsb_delta < -32 ) */ 1608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* origin_x += 64; */ 1609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* prev_rsb_delta = face->glyph->rsb_delta; */ 1611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <save glyph image, or render glyph, or ...> */ 1613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* origin_x += face->glyph->advance.x; */ 1615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* endfor */ 1616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* } */ 1617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_GlyphSlotRec_ 1619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Library library; 1621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Face face; 1622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_GlyphSlot next; 1623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt reserved; /* retained for binary compatibility */ 1624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Generic generic; 1625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Glyph_Metrics metrics; 1627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed linearHoriAdvance; 1628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed linearVertAdvance; 1629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Vector advance; 1630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Glyph_Format format; 1632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Bitmap bitmap; 1634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int bitmap_left; 1635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int bitmap_top; 1636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Outline outline; 1638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt num_subglyphs; 1640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_SubGlyph subglyphs; 1641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void* control_data; 1643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov long control_len; 1644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos lsb_delta; 1646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pos rsb_delta; 1647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void* other; 1649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Slot_Internal internal; 1651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_GlyphSlotRec; 1653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* F U N C T I O N S */ 1659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 1667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Init_FreeType */ 1668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Initialize a new FreeType library object. The set of modules */ 1671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* that are registered by this function is determined at build time. */ 1672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 1674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* alibrary :: A handle to a new library object. */ 1675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 1677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 1678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 1680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* In case you want to provide your own memory allocating routines, */ 1681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* use @FT_New_Library instead, followed by a call to */ 1682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module). */ 1683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* For multi-threading applications each thread should have its own */ 1685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Library object. */ 1686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If you need reference-counting (cf. @FT_Reference_Library), use */ 1688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_New_Library and @FT_Done_Library. */ 1689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 1691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Init_FreeType( FT_Library *alibrary ); 1692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 1697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Done_FreeType */ 1698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Destroy a given FreeType library object and all of its children, */ 1701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* including resources, drivers, faces, sizes, etc. */ 1702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 1704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library :: A handle to the target library object. */ 1705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 1707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 1708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 1710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Done_FreeType( FT_Library library ); 1711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Enum> */ 1716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_OPEN_XXX */ 1717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A list of bit-field constants used within the `flags' field of the */ 1720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Open_Args structure. */ 1721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Values> */ 1723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_OPEN_MEMORY :: This is a memory-based stream. */ 1724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_OPEN_STREAM :: Copy the stream from the `stream' field. */ 1726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_OPEN_PATHNAME :: Create a new input stream from a C~path */ 1728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* name. */ 1729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_OPEN_DRIVER :: Use the `driver' field. */ 1731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_OPEN_PARAMS :: Use the `num_params' and `params' fields. */ 1733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ft_open_memory :: Deprecated; use @FT_OPEN_MEMORY instead. */ 1735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ft_open_stream :: Deprecated; use @FT_OPEN_STREAM instead. */ 1737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ft_open_pathname :: Deprecated; use @FT_OPEN_PATHNAME instead. */ 1739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ft_open_driver :: Deprecated; use @FT_OPEN_DRIVER instead. */ 1741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ft_open_params :: Deprecated; use @FT_OPEN_PARAMS instead. */ 1743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 1745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME' */ 1746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* flags are mutually exclusive. */ 1747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_OPEN_MEMORY 0x1 1749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_OPEN_STREAM 0x2 1750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_OPEN_PATHNAME 0x4 1751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_OPEN_DRIVER 0x8 1752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_OPEN_PARAMS 0x10 1753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_open_memory FT_OPEN_MEMORY /* deprecated */ 1755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_open_stream FT_OPEN_STREAM /* deprecated */ 1756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_open_pathname FT_OPEN_PATHNAME /* deprecated */ 1757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_open_driver FT_OPEN_DRIVER /* deprecated */ 1758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_open_params FT_OPEN_PARAMS /* deprecated */ 1759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 1764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Parameter */ 1765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A simple structure used to pass more or less generic parameters to */ 1768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Open_Face. */ 1769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 1771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* tag :: A four-byte identification tag. */ 1772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* data :: A pointer to the parameter data. */ 1774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 1776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The ID and function of parameters are driver-specific. See the */ 1777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* various FT_PARAM_TAG_XXX flags for more information. */ 1778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Parameter_ 1780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong tag; 1782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pointer data; 1783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Parameter; 1785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 1790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Open_Args */ 1791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A structure used to indicate how to open a new font file or */ 1794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* stream. A pointer to such a structure can be used as a parameter */ 1795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* for the functions @FT_Open_Face and @FT_Attach_Stream. */ 1796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 1798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* flags :: A set of bit flags indicating how to use the */ 1799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* structure. */ 1800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* memory_base :: The first byte of the file in memory. */ 1802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* memory_size :: The size in bytes of the file in memory. */ 1804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* pathname :: A pointer to an 8-bit file pathname. */ 1806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* stream :: A handle to a source stream object. */ 1808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* driver :: This field is exclusively used by @FT_Open_Face; */ 1810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* it simply specifies the font driver to use to open */ 1811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the face. If set to~0, FreeType tries to load the */ 1812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face with each one of the drivers in its list. */ 1813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* num_params :: The number of extra parameters. */ 1815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* params :: Extra parameters passed to the font driver when */ 1817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* opening a new face. */ 1818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 1820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The stream type is determined by the contents of `flags' which */ 1821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* are tested in the following order by @FT_Open_Face: */ 1822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If the `FT_OPEN_MEMORY' bit is set, assume that this is a */ 1824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* memory file of `memory_size' bytes, located at `memory_address'. */ 1825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The data are are not copied, and the client is responsible for */ 1826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* releasing and destroying them _after_ the corresponding call to */ 1827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Done_Face. */ 1828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Otherwise, if the `FT_OPEN_STREAM' bit is set, assume that a */ 1830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* custom input stream `stream' is used. */ 1831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Otherwise, if the `FT_OPEN_PATHNAME' bit is set, assume that this */ 1833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is a normal file and use `pathname' to open it. */ 1834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If the `FT_OPEN_DRIVER' bit is set, @FT_Open_Face only tries to */ 1836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* open the file with the driver whose handler is in `driver'. */ 1837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If the `FT_OPEN_PARAMS' bit is set, the parameters given by */ 1839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `num_params' and `params' is used. They are ignored otherwise. */ 1840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Ideally, both the `pathname' and `params' fields should be tagged */ 1842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* as `const'; this is missing for API backwards compatibility. In */ 1843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* other words, applications should treat them as read-only. */ 1844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Open_Args_ 1846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt flags; 1848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const FT_Byte* memory_base; 1849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long memory_size; 1850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_String* pathname; 1851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Stream stream; 1852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Module driver; 1853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int num_params; 1854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Parameter* params; 1855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Open_Args; 1857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 1862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_New_Face */ 1863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function calls @FT_Open_Face to open a font by its pathname. */ 1866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 1868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library :: A handle to the library resource. */ 1869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 1871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* pathname :: A path to the font file. */ 1872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face_index :: The index of the face within the font. The first */ 1874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face has index~0. */ 1875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 1877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* aface :: A handle to a new face object. If `face_index' is */ 1878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* greater than or equal to zero, it must be non-NULL. */ 1879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* See @FT_Open_Face for more details. */ 1880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 1882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 1883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 1885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Use @FT_Done_Face to destroy the created @FT_Face object (along */ 1886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* with its slot and sizes). */ 1887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 1889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_New_Face( FT_Library library, 1890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const char* filepathname, 1891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long face_index, 1892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Face *aface ); 1893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 1898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_New_Memory_Face */ 1899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function calls @FT_Open_Face to open a font which has been */ 1902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* loaded into memory. */ 1903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 1905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library :: A handle to the library resource. */ 1906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 1908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* file_base :: A pointer to the beginning of the font data. */ 1909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* file_size :: The size of the memory chunk used by the font data. */ 1911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face_index :: The index of the face within the font. The first */ 1913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face has index~0. */ 1914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 1916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* aface :: A handle to a new face object. If `face_index' is */ 1917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* greater than or equal to zero, it must be non-NULL. */ 1918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* See @FT_Open_Face for more details. */ 1919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 1921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 1922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 1924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* You must not deallocate the memory before calling @FT_Done_Face. */ 1925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 1927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_New_Memory_Face( FT_Library library, 1928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const FT_Byte* file_base, 1929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long file_size, 1930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long face_index, 1931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Face *aface ); 1932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 1937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Open_Face */ 1938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Create a face object from a given resource described by */ 1941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Open_Args. */ 1942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 1944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library :: A handle to the library resource. */ 1945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 1947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* args :: A pointer to an `FT_Open_Args' structure which must */ 1948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* be filled by the caller. */ 1949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face_index :: The index of the face within the font. The first */ 1951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face has index~0. */ 1952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 1954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* aface :: A handle to a new face object. If `face_index' is */ 1955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* greater than or equal to zero, it must be non-NULL. */ 1956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* See note below. */ 1957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 1959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 1960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 1962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Unlike FreeType 1.x, this function automatically creates a glyph */ 1963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* slot for the face object which can be accessed directly through */ 1964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `face->glyph'. */ 1965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Open_Face can be used to quickly check whether the font */ 1967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* format of a given font resource is supported by FreeType. If the */ 1968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `face_index' field is negative, the function's return value is~0 */ 1969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* if the font format is recognized, or non-zero otherwise; */ 1970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the function returns a more or less empty face handle in `*aface' */ 1971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (if `aface' isn't NULL). The only useful field in this special */ 1972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* case is `face->num_faces' which gives the number of faces within */ 1973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the font file. After examination, the returned @FT_Face structure */ 1974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* should be deallocated with a call to @FT_Done_Face. */ 1975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Each new face object created with this function also owns a */ 1977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* default @FT_Size object, accessible as `face->size'. */ 1978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* One @FT_Library instance can have multiple face objects, this is, */ 1980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Open_Face and its siblings can be called multiple times using */ 1981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the same `library' argument. */ 1982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* See the discussion of reference counters in the description of */ 1984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Reference_Face. */ 1985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 1987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Open_Face( FT_Library library, 1988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const FT_Open_Args* args, 1989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long face_index, 1990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Face *aface ); 1991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1993ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 1994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 1996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Attach_File */ 1997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 1998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 1999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function calls @FT_Attach_Stream to attach a file. */ 2000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 2002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: The target face object. */ 2003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* filepathname :: The pathname. */ 2006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 2008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 2009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 2011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Attach_File( FT_Face face, 2012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const char* filepathname ); 2013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 2018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Attach_Stream */ 2019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `Attach' data to a face object. Normally, this is used to read */ 2022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* additional information for the face object. For example, you can */ 2023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* attach an AFM file that comes with a Type~1 font to get the */ 2024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* kerning values and other metrics. */ 2025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 2027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: The target face object. */ 2028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* parameters :: A pointer to @FT_Open_Args which must be filled by */ 2031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the caller. */ 2032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 2034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 2035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 2037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The meaning of the `attach' (i.e., what really happens when the */ 2038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* new file is read) is not fixed by FreeType itself. It really */ 2039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* depends on the font format (and thus the font driver). */ 2040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Client applications are expected to know what they are doing */ 2042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* when invoking this function. Most drivers simply do not implement */ 2043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* file attachments. */ 2044ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 2046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Attach_Stream( FT_Face face, 2047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Open_Args* parameters ); 2048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 2053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Reference_Face */ 2054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A counter gets initialized to~1 at the time an @FT_Face structure */ 2057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is created. This function increments the counter. @FT_Done_Face */ 2058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* then only destroys a face if the counter is~1, otherwise it simply */ 2059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* decrements the counter. */ 2060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function helps in managing life-cycles of structures which */ 2062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* reference @FT_Face objects. */ 2063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to a target face object. */ 2066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 2068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 2069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Since> */ 2071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 2.4.2 */ 2072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 2074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Reference_Face( FT_Face face ); 2075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 2080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Done_Face */ 2081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Discard a given face object, as well as all of its child slots and */ 2084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* sizes. */ 2085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to a target face object. */ 2088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 2090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 2091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 2093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* See the discussion of reference counters in the description of */ 2094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Reference_Face. */ 2095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 2097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Done_Face( FT_Face face ); 2098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 2103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Select_Size */ 2104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Select a bitmap strike. */ 2107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 2109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to a target face object. */ 2110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* strike_index :: The index of the bitmap strike in the */ 2113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `available_sizes' field of @FT_FaceRec structure. */ 2114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 2116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 2117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 2119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Select_Size( FT_Face face, 2120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int strike_index ); 2121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Enum> */ 2126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Size_Request_Type */ 2127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* An enumeration type that lists the supported size request types. */ 2130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Values> */ 2132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_SIZE_REQUEST_TYPE_NOMINAL :: */ 2133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The nominal size. The `units_per_EM' field of @FT_FaceRec is */ 2134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* used to determine both scaling values. */ 2135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_SIZE_REQUEST_TYPE_REAL_DIM :: */ 2137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The real dimension. The sum of the the `ascender' and (minus */ 2138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* of) the `descender' fields of @FT_FaceRec are used to determine */ 2139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* both scaling values. */ 2140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_SIZE_REQUEST_TYPE_BBOX :: */ 2142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The font bounding box. The width and height of the `bbox' field */ 2143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* of @FT_FaceRec are used to determine the horizontal and vertical */ 2144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* scaling value, respectively. */ 2145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_SIZE_REQUEST_TYPE_CELL :: */ 2147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The `max_advance_width' field of @FT_FaceRec is used to */ 2148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* determine the horizontal scaling value; the vertical scaling */ 2149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* value is determined the same way as */ 2150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_SIZE_REQUEST_TYPE_REAL_DIM does. Finally, both scaling */ 2151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* values are set to the smaller one. This type is useful if you */ 2152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* want to specify the font size for, say, a window of a given */ 2153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* dimension and 80x24 cells. */ 2154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_SIZE_REQUEST_TYPE_SCALES :: */ 2156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Specify the scaling values directly. */ 2157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 2159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The above descriptions only apply to scalable formats. For bitmap */ 2160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* formats, the behaviour is up to the driver. */ 2161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* See the note section of @FT_Size_Metrics if you wonder how size */ 2163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* requesting relates to scaling values. */ 2164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef enum FT_Size_Request_Type_ 2166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_SIZE_REQUEST_TYPE_NOMINAL, 2168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_SIZE_REQUEST_TYPE_REAL_DIM, 2169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_SIZE_REQUEST_TYPE_BBOX, 2170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_SIZE_REQUEST_TYPE_CELL, 2171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_SIZE_REQUEST_TYPE_SCALES, 2172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_SIZE_REQUEST_TYPE_MAX 2174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Size_Request_Type; 2176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 2181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Size_RequestRec */ 2182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A structure used to model a size request. */ 2185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 2187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* type :: See @FT_Size_Request_Type. */ 2188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* width :: The desired width. */ 2190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* height :: The desired height. */ 2192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* horiResolution :: The horizontal resolution. If set to zero, */ 2194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `width' is treated as a 26.6 fractional pixel */ 2195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* value. */ 2196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* vertResolution :: The vertical resolution. If set to zero, */ 2198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `height' is treated as a 26.6 fractional pixel */ 2199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* value. */ 2200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 2202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If `width' is zero, then the horizontal scaling value is set equal */ 2203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* to the vertical scaling value, and vice versa. */ 2204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Size_RequestRec_ 2206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Size_Request_Type type; 2208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long width; 2209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long height; 2210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt horiResolution; 2211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt vertResolution; 2212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Size_RequestRec; 2214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 2219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Size_Request */ 2220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to a size request structure. */ 2223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Size_RequestRec_ *FT_Size_Request; 2225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 2230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Request_Size */ 2231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Resize the scale of the active @FT_Size object in a face. */ 2234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 2236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to a target face object. */ 2237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* req :: A pointer to a @FT_Size_RequestRec. */ 2240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 2242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 2243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 2245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Although drivers may select the bitmap strike matching the */ 2246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* request, you should not rely on this if you intend to select a */ 2247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* particular bitmap strike. Use @FT_Select_Size instead in that */ 2248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* case. */ 2249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The relation between the requested size and the resulting glyph */ 2251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* size is dependent entirely on how the size is defined in the */ 2252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* source face. The font designer chooses the final size of each */ 2253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph relative to this size. For more information refer to */ 2254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `http://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html' */ 2255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 2257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Request_Size( FT_Face face, 2258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Size_Request req ); 2259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 2264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Set_Char_Size */ 2265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function calls @FT_Request_Size to request the nominal size */ 2268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (in points). */ 2269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 2271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to a target face object. */ 2272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* char_width :: The nominal width, in 26.6 fractional points. */ 2275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* char_height :: The nominal height, in 26.6 fractional points. */ 2277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* horz_resolution :: The horizontal resolution in dpi. */ 2279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* vert_resolution :: The vertical resolution in dpi. */ 2281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 2283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 2284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 2286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If either the character width or height is zero, it is set equal */ 2287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* to the other value. */ 2288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If either the horizontal or vertical resolution is zero, it is set */ 2290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* equal to the other value. */ 2291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A character width or height smaller than 1pt is set to 1pt; if */ 2293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* both resolution values are zero, they are set to 72dpi. */ 2294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Don't use this function if you are using the FreeType cache API. */ 2296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 2298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Set_Char_Size( FT_Face face, 2299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_F26Dot6 char_width, 2300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_F26Dot6 char_height, 2301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt horz_resolution, 2302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt vert_resolution ); 2303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 2308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Set_Pixel_Sizes */ 2309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function calls @FT_Request_Size to request the nominal size */ 2312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (in pixels). */ 2313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 2315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the target face object. */ 2316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* pixel_width :: The nominal width, in pixels. */ 2319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* pixel_height :: The nominal height, in pixels. */ 2321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 2323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 2324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 2326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* You should not rely on the resulting glyphs matching, or being */ 2327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* constrained, to this pixel size. Refer to @FT_Request_Size to */ 2328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* understand how requested sizes relate to actual sizes. */ 2329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 2331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Set_Pixel_Sizes( FT_Face face, 2332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt pixel_width, 2333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt pixel_height ); 2334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 2339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Load_Glyph */ 2340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A function used to load a single glyph into the glyph slot of a */ 2343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face object. */ 2344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 2346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the target face object where the glyph */ 2347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is loaded. */ 2348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph_index :: The index of the glyph in the font file. For */ 2351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* CID-keyed fonts (either in PS or in CFF format) */ 2352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* this argument specifies the CID value. */ 2353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* load_flags :: A flag indicating what to load for this glyph. The */ 2355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_LOAD_XXX constants can be used to control the */ 2356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph loading process (e.g., whether the outline */ 2357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* should be scaled, whether to load bitmaps or not, */ 2358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* whether to hint the outline, etc). */ 2359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 2361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 2362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 2364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The loaded glyph may be transformed. See @FT_Set_Transform for */ 2365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the details. */ 2366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument' is */ 2368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* returned for invalid CID values (this is, for CID values which */ 2369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* don't have a corresponding glyph in the font). See the discussion */ 2370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* of the @FT_FACE_FLAG_CID_KEYED flag for more details. */ 2371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 2373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Load_Glyph( FT_Face face, 2374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt glyph_index, 2375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int32 load_flags ); 2376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 2381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Load_Char */ 2382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A function used to load a single glyph into the glyph slot of a */ 2385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face object, according to its character code. */ 2386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 2388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to a target face object where the glyph */ 2389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is loaded. */ 2390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* char_code :: The glyph's character code, according to the */ 2393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* current charmap used in the face. */ 2394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* load_flags :: A flag indicating what to load for this glyph. The */ 2396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_LOAD_XXX constants can be used to control the */ 2397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph loading process (e.g., whether the outline */ 2398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* should be scaled, whether to load bitmaps or not, */ 2399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* whether to hint the outline, etc). */ 2400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 2402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 2403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 2405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph. */ 2406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 2408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Load_Char( FT_Face face, 2409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong char_code, 2410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int32 load_flags ); 2411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 2414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @enum: 2416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_XXX 2417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 2419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A list of bit-field constants used with @FT_Load_Glyph to indicate 2420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * what kind of operations to perform during glyph loading. 2421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @values: 2423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_DEFAULT :: 2424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Corresponding to~0, this value is used as the default glyph load 2425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * operation. In this case, the following happens: 2426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1. FreeType looks for a bitmap for the glyph corresponding to the 2428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * face's current size. If one is found, the function returns. 2429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The bitmap data can be accessed from the glyph slot (see note 2430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * below). 2431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2. If no embedded bitmap is searched or found, FreeType looks for a 2433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * scalable outline. If one is found, it is loaded from the font 2434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * file, scaled to device pixels, then `hinted' to the pixel grid 2435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * in order to optimize it. The outline data can be accessed from 2436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * the glyph slot (see note below). 2437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Note that by default, the glyph loader doesn't render outlines into 2439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * bitmaps. The following flags are used to modify this default 2440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * behaviour to more specific and useful cases. 2441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_NO_SCALE :: 2443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Don't scale the loaded outline glyph but keep it in font units. 2444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and 2446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * unsets @FT_LOAD_RENDER. 2447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * If the font is `tricky' (see @FT_FACE_FLAG_TRICKY for more), using 2449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_NO_SCALE usually yields meaningless outlines because the 2450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * subglyphs must be scaled and positioned with hinting instructions. 2451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * This can be solved by loading the font without FT_LOAD_NO_SCALE and 2452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * setting the character size to `font->units_per_EM'. 2453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_NO_HINTING :: 2455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Disable hinting. This generally generates `blurrier' bitmap glyphs 2456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * when the glyph are rendered in any of the anti-aliased modes. See 2457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * also the note below. 2458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * This flag is implied by @FT_LOAD_NO_SCALE. 2460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_RENDER :: 2462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Call @FT_Render_Glyph after the glyph is loaded. By default, the 2463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * glyph is rendered in @FT_RENDER_MODE_NORMAL mode. This can be 2464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * overridden by @FT_LOAD_TARGET_XXX or @FT_LOAD_MONOCHROME. 2465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * This flag is unset by @FT_LOAD_NO_SCALE. 2467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_NO_BITMAP :: 2469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Ignore bitmap strikes when loading. Bitmap-only fonts ignore this 2470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * flag. 2471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @FT_LOAD_NO_SCALE always sets this flag. 2473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_VERTICAL_LAYOUT :: 2475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Load the glyph for vertical text layout. In particular, the 2476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * `advance' value in the @FT_GlyphSlotRec structure is set to the 2477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * `vertAdvance' value of the `metrics' field. 2478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * In case @FT_HAS_VERTICAL doesn't return true, you shouldn't use 2480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * this flag currently. Reason is that in this case vertical metrics 2481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * get synthesized, and those values are not always consistent across 2482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * various font formats. 2483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_FORCE_AUTOHINT :: 2485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Indicates that the auto-hinter is preferred over the font's native 2486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * hinter. See also the note below. 2487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_CROP_BITMAP :: 2489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Indicates that the font driver should crop the loaded bitmap glyph 2490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * (i.e., remove all space around its black bits). Not all drivers 2491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * implement this. 2492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_PEDANTIC :: 2494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Indicates that the font driver should perform pedantic verifications 2495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * during glyph loading. This is mostly used to detect broken glyphs 2496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * in fonts. By default, FreeType tries to handle broken fonts also. 2497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * In particular, errors from the TrueType bytecode engine are not 2499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * passed to the application if this flag is not set; this might 2500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * result in partially hinted or distorted glyphs in case a glyph's 2501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * bytecode is buggy. 2502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH :: 2504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Ignored. Deprecated. 2505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_NO_RECURSE :: 2507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * This flag is only used internally. It merely indicates that the 2508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * font driver should not load composite glyphs recursively. Instead, 2509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * it should set the `num_subglyph' and `subglyphs' values of the 2510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * glyph slot accordingly, and set `glyph->format' to 2511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @FT_GLYPH_FORMAT_COMPOSITE. 2512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The description of sub-glyphs is not available to client 2514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * applications for now. 2515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * This flag implies @FT_LOAD_NO_SCALE and @FT_LOAD_IGNORE_TRANSFORM. 2517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_IGNORE_TRANSFORM :: 2519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Indicates that the transform matrix set by @FT_Set_Transform should 2520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * be ignored. 2521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_MONOCHROME :: 2523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * This flag is used with @FT_LOAD_RENDER to indicate that you want to 2524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * render an outline glyph to a 1-bit monochrome bitmap glyph, with 2525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 8~pixels packed into each byte of the bitmap data. 2526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Note that this has no effect on the hinting algorithm used. You 2528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * should rather use @FT_LOAD_TARGET_MONO so that the 2529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * monochrome-optimized hinting algorithm is used. 2530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_LINEAR_DESIGN :: 2532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Indicates that the `linearHoriAdvance' and `linearVertAdvance' 2533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * fields of @FT_GlyphSlotRec should be kept in font units. See 2534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @FT_GlyphSlotRec for details. 2535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_NO_AUTOHINT :: 2537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Disable auto-hinter. See also the note below. 2538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_COLOR :: 2540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * This flag is used to request loading of color embedded-bitmap 2541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * images. The resulting color bitmaps, if available, will have the 2542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @FT_PIXEL_MODE_BGRA format. When the flag is not used and color 2543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * bitmaps are found, they will be converted to 256-level gray 2544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * bitmaps transparently. Those bitmaps will be in the 2545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @FT_PIXEL_MODE_GRAY format. 2546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @note: 2548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * By default, hinting is enabled and the font's native hinter (see 2549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can 2550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * disable hinting by setting @FT_LOAD_NO_HINTING or change the 2551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * precedence by setting @FT_LOAD_FORCE_AUTOHINT. You can also set 2552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be 2553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * used at all. 2554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * See the description of @FT_FACE_FLAG_TRICKY for a special exception 2556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * (affecting only a handful of Asian fonts). 2557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Besides deciding which hinter to use, you can also decide which 2559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details. 2560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Note that the auto-hinter needs a valid Unicode cmap (either a native 2562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * one or synthesized by FreeType) for producing correct results. If a 2563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * font provides an incorrect mapping (for example, assigning the 2564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * character code U+005A, LATIN CAPITAL LETTER Z, to a glyph depicting a 2565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * mathematical integral sign), the auto-hinter might produce useless 2566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * results. 2567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 2569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_DEFAULT 0x0 2570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_NO_SCALE ( 1L << 0 ) 2571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_NO_HINTING ( 1L << 1 ) 2572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_RENDER ( 1L << 2 ) 2573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_NO_BITMAP ( 1L << 3 ) 2574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_VERTICAL_LAYOUT ( 1L << 4 ) 2575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_FORCE_AUTOHINT ( 1L << 5 ) 2576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_CROP_BITMAP ( 1L << 6 ) 2577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_PEDANTIC ( 1L << 7 ) 2578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ( 1L << 9 ) 2579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_NO_RECURSE ( 1L << 10 ) 2580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_IGNORE_TRANSFORM ( 1L << 11 ) 2581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_MONOCHROME ( 1L << 12 ) 2582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_LINEAR_DESIGN ( 1L << 13 ) 2583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_NO_AUTOHINT ( 1L << 15 ) 2584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Bits 16..19 are used by `FT_LOAD_TARGET_' */ 2585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_COLOR ( 1L << 20 ) 2586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* used internally only by certain font drivers! */ 2590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_ADVANCE_ONLY ( 1L << 8 ) 2591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_SBITS_ONLY ( 1L << 14 ) 2592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************** 2595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @enum: 2597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_TARGET_XXX 2598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 2600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A list of values that are used to select a specific hinting algorithm 2601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * to use by the hinter. You should OR one of these values to your 2602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * `load_flags' when calling @FT_Load_Glyph. 2603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Note that font's native hinters may ignore the hinting algorithm you 2605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * have specified (e.g., the TrueType bytecode interpreter). You can set 2606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is used. 2607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Also note that @FT_LOAD_TARGET_LIGHT is an exception, in that it 2609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * always implies @FT_LOAD_FORCE_AUTOHINT. 2610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @values: 2612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_TARGET_NORMAL :: 2613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * This corresponds to the default hinting algorithm, optimized for 2614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * standard gray-level rendering. For monochrome output, use 2615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @FT_LOAD_TARGET_MONO instead. 2616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_TARGET_LIGHT :: 2618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A lighter hinting algorithm for non-monochrome modes. Many 2619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * generated glyphs are more fuzzy but better resemble its original 2620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * shape. A bit like rendering on Mac OS~X. 2621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * As a special exception, this target implies @FT_LOAD_FORCE_AUTOHINT. 2623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_TARGET_MONO :: 2625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Strong hinting algorithm that should only be used for monochrome 2626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * output. The result is probably unpleasant if the glyph is rendered 2627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * in non-monochrome modes. 2628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_TARGET_LCD :: 2630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A variant of @FT_LOAD_TARGET_NORMAL optimized for horizontally 2631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * decimated LCD displays. 2632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_TARGET_LCD_V :: 2634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A variant of @FT_LOAD_TARGET_NORMAL optimized for vertically 2635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * decimated LCD displays. 2636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @note: 2638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * You should use only _one_ of the FT_LOAD_TARGET_XXX values in your 2639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * `load_flags'. They can't be ORed. 2640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * If @FT_LOAD_RENDER is also set, the glyph is rendered in the 2642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * corresponding mode (i.e., the mode which matches the used algorithm 2643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * best). An exeption is FT_LOAD_TARGET_MONO since it implies 2644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @FT_LOAD_MONOCHROME. 2645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * You can use a hinting algorithm that doesn't correspond to the same 2647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * rendering mode. As an example, it is possible to use the `light' 2648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * hinting algorithm and have the results rendered in horizontal LCD 2649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * pixel mode, with code like 2650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * { 2652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_Load_Glyph( face, glyph_index, 2653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * load_flags | FT_LOAD_TARGET_LIGHT ); 2654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD ); 2656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * } 2657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 2659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 ) 2660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) 2662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT ) 2663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO ) 2664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_TARGET_LCD FT_LOAD_TARGET_( FT_RENDER_MODE_LCD ) 2665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V ) 2666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************** 2669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @macro: 2671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_LOAD_TARGET_MODE 2672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 2674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Return the @FT_Render_Mode corresponding to a given 2675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @FT_LOAD_TARGET_XXX value. 2676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 2678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOAD_TARGET_MODE( x ) ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) ) 2679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 2684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Set_Transform */ 2685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A function used to set the transformation that is applied to glyph */ 2688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* images when they are loaded into a glyph slot through */ 2689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Load_Glyph. */ 2690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 2692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the source face object. */ 2693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* matrix :: A pointer to the transformation's 2x2 matrix. Use~0 for */ 2696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the identity matrix. */ 2697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* delta :: A pointer to the translation vector. Use~0 for the null */ 2698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* vector. */ 2699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 2701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The transformation is only applied to scalable image formats after */ 2702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the glyph has been loaded. It means that hinting is unaltered by */ 2703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the transformation and is performed on the character size given in */ 2704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes. */ 2705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Note that this also transforms the `face.glyph.advance' field, but */ 2707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* *not* the values in `face.glyph.metrics'. */ 2708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( void ) 2710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Set_Transform( FT_Face face, 2711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Matrix* matrix, 2712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Vector* delta ); 2713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Enum> */ 2718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Render_Mode */ 2719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* An enumeration type that lists the render modes supported by */ 2722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType~2. Each mode corresponds to a specific type of scanline */ 2723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* conversion performed on the outline. */ 2724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode' */ 2726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* field in the @FT_GlyphSlotRec structure gives the format of the */ 2727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* returned bitmap. */ 2728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity. */ 2730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Values> */ 2732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_RENDER_MODE_NORMAL :: */ 2733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This is the default render mode; it corresponds to 8-bit */ 2734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* anti-aliased bitmaps. */ 2735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_RENDER_MODE_LIGHT :: */ 2737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This is equivalent to @FT_RENDER_MODE_NORMAL. It is only */ 2738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* defined as a separate value because render modes are also used */ 2739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* indirectly to define hinting algorithm selectors. See */ 2740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_LOAD_TARGET_XXX for details. */ 2741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_RENDER_MODE_MONO :: */ 2743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This mode corresponds to 1-bit bitmaps (with 2~levels of */ 2744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* opacity). */ 2745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_RENDER_MODE_LCD :: */ 2747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This mode corresponds to horizontal RGB and BGR sub-pixel */ 2748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* displays like LCD screens. It produces 8-bit bitmaps that are */ 2749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 3~times the width of the original glyph outline in pixels, and */ 2750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* which use the @FT_PIXEL_MODE_LCD mode. */ 2751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_RENDER_MODE_LCD_V :: */ 2753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This mode corresponds to vertical RGB and BGR sub-pixel displays */ 2754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (like PDA screens, rotated LCD displays, etc.). It produces */ 2755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 8-bit bitmaps that are 3~times the height of the original */ 2756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode. */ 2757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 2759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be */ 2760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* filtered to reduce color-fringes by using @FT_Library_SetLcdFilter */ 2761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (not active in the default builds). It is up to the caller to */ 2762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* either call @FT_Library_SetLcdFilter (if available) or do the */ 2763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* filtering itself. */ 2764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The selected render mode only affects vector glyphs of a font. */ 2766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Embedded bitmaps often have a different pixel mode like */ 2767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform */ 2768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* them into 8-bit pixmaps. */ 2769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef enum FT_Render_Mode_ 2771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_RENDER_MODE_NORMAL = 0, 2773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_RENDER_MODE_LIGHT, 2774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_RENDER_MODE_MONO, 2775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_RENDER_MODE_LCD, 2776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_RENDER_MODE_LCD_V, 2777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_RENDER_MODE_MAX 2779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Render_Mode; 2781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Enum> */ 2786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ft_render_mode_xxx */ 2787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* These constants are deprecated. Use the corresponding */ 2790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Render_Mode values instead. */ 2791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Values> */ 2793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ft_render_mode_normal :: see @FT_RENDER_MODE_NORMAL */ 2794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ft_render_mode_mono :: see @FT_RENDER_MODE_MONO */ 2795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_render_mode_normal FT_RENDER_MODE_NORMAL 2797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_render_mode_mono FT_RENDER_MODE_MONO 2798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 2803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Render_Glyph */ 2804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Convert a given glyph image to a bitmap. It does so by inspecting */ 2807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the glyph image format, finding the relevant renderer, and */ 2808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* invoking it. */ 2809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 2811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* slot :: A handle to the glyph slot containing the image to */ 2812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* convert. */ 2813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* render_mode :: This is the render mode used to render the glyph */ 2816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* image into a bitmap. See @FT_Render_Mode for a */ 2817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* list of possible values. */ 2818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 2820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 2821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 2823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Render_Glyph( FT_GlyphSlot slot, 2824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Render_Mode render_mode ); 2825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Enum> */ 2830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Kerning_Mode */ 2831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* An enumeration used to specify which kerning values to return in */ 2834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Get_Kerning. */ 2835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Values> */ 2837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_KERNING_DEFAULT :: Return scaled and grid-fitted kerning */ 2838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* distances (value is~0). */ 2839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_KERNING_UNFITTED :: Return scaled but un-grid-fitted kerning */ 2841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* distances. */ 2842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_KERNING_UNSCALED :: Return the kerning vector in original font */ 2844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* units. */ 2845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef enum FT_Kerning_Mode_ 2847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_KERNING_DEFAULT = 0, 2849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_KERNING_UNFITTED, 2850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_KERNING_UNSCALED 2851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Kerning_Mode; 2853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Const> */ 2858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ft_kerning_default */ 2859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This constant is deprecated. Please use @FT_KERNING_DEFAULT */ 2862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* instead. */ 2863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_kerning_default FT_KERNING_DEFAULT 2865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Const> */ 2870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ft_kerning_unfitted */ 2871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This constant is deprecated. Please use @FT_KERNING_UNFITTED */ 2874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* instead. */ 2875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_kerning_unfitted FT_KERNING_UNFITTED 2877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Const> */ 2882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ft_kerning_unscaled */ 2883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This constant is deprecated. Please use @FT_KERNING_UNSCALED */ 2886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* instead. */ 2887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_kerning_unscaled FT_KERNING_UNSCALED 2889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 2894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Kerning */ 2895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Return the kerning vector between two glyphs of a same face. */ 2898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to a source face object. */ 2901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* left_glyph :: The index of the left glyph in the kern pair. */ 2903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* right_glyph :: The index of the right glyph in the kern pair. */ 2905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* kern_mode :: See @FT_Kerning_Mode for more information. */ 2907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Determines the scale and dimension of the returned */ 2908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* kerning vector. */ 2909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 2911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* akerning :: The kerning vector. This is either in font units */ 2912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* or in pixels (26.6 format) for scalable formats, */ 2913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* and in pixels for fixed-sizes formats. */ 2914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 2916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 2917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 2919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Only horizontal layouts (left-to-right & right-to-left) are */ 2920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* supported by this method. Other layouts, or more sophisticated */ 2921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* kernings, are out of the scope of this API function -- they can be */ 2922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* implemented through format-specific interfaces. */ 2923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 2925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_Kerning( FT_Face face, 2926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt left_glyph, 2927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt right_glyph, 2928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt kern_mode, 2929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Vector *akerning ); 2930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 2935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Track_Kerning */ 2936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Return the track kerning for a given face object at a given size. */ 2939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to a source face object. */ 2942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* point_size :: The point size in 16.16 fractional points. */ 2944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* degree :: The degree of tightness. Increasingly negative */ 2946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* values represent tighter track kerning, while */ 2947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* increasingly positive values represent looser track */ 2948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* kerning. Value zero means no track kerning. */ 2949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 2951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* akerning :: The kerning in 16.16 fractional points, to be */ 2952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* uniformly applied between all glyphs. */ 2953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 2955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 2956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 2958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Currently, only the Type~1 font driver supports track kerning, */ 2959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* using data from AFM files (if attached with @FT_Attach_File or */ 2960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Attach_Stream). */ 2961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Only very few AFM files come with track kerning data; please refer */ 2963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* to the Adobe's AFM specification for more details. */ 2964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 2966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_Track_Kerning( FT_Face face, 2967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed point_size, 2968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int degree, 2969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed* akerning ); 2970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 2973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 2975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Glyph_Name */ 2976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 2978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Retrieve the ASCII name of a given glyph in a face. This only */ 2979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1. */ 2980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 2982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to a source face object. */ 2983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph_index :: The glyph index. */ 2985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* buffer_max :: The maximum number of bytes available in the */ 2987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* buffer. */ 2988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 2990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* buffer :: A pointer to a target buffer where the name is */ 2991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* copied to. */ 2992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2993ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 2994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 2995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 2996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 2997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* An error is returned if the face doesn't provide glyph names or if */ 2998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the glyph index is invalid. In all cases of failure, the first */ 2999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* byte of `buffer' is set to~0 to indicate an empty name. */ 3000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The glyph name is truncated to fit within the buffer if it is too */ 3002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* long. The returned string is always zero-terminated. */ 3003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Be aware that FreeType reorders glyph indices internally so that */ 3005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph index~0 always corresponds to the `missing glyph' (called */ 3006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `.notdef'). */ 3007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function is not compiled within the library if the config */ 3009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* macro `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is defined in */ 3010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `include/freetype/config/ftoptions.h'. */ 3011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 3013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_Glyph_Name( FT_Face face, 3014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt glyph_index, 3015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Pointer buffer, 3016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt buffer_max ); 3017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Postscript_Name */ 3023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Retrieve the ASCII PostScript name of a given face, if available. */ 3026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This only works with PostScript and TrueType fonts. */ 3027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the source face object. */ 3030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A pointer to the face's PostScript name. NULL if unavailable. */ 3033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The returned pointer is owned by the face and is destroyed with */ 3036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* it. */ 3037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( const char* ) 3039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_Postscript_Name( FT_Face face ); 3040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3044ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Select_Charmap */ 3046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Select a given charmap by its encoding tag (as listed in */ 3049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `freetype.h'). */ 3050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 3052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the source face object. */ 3053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* encoding :: A handle to the selected encoding. */ 3056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 3059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function returns an error if no charmap in the face */ 3062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* corresponds to the encoding queried here. */ 3063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Because many fonts contain more than a single cmap for Unicode */ 3065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* encoding, this function has some special code to select the one */ 3066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* which covers Unicode best (`best' in the sense that a UCS-4 cmap */ 3067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is preferred to a UCS-2 cmap). It is thus preferable to */ 3068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Set_Charmap in this case. */ 3069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 3071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Select_Charmap( FT_Face face, 3072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Encoding encoding ); 3073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Set_Charmap */ 3079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Select a given charmap for character code to glyph index mapping. */ 3082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 3084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the source face object. */ 3085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* charmap :: A handle to the selected charmap. */ 3088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 3091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function returns an error if the charmap is not part of */ 3094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the face (i.e., if it is not listed in the `face->charmaps' */ 3095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* table). */ 3096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* It also fails if a type~14 charmap is selected. */ 3098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 3100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Set_Charmap( FT_Face face, 3101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_CharMap charmap ); 3102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 3105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @function: 3107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_Get_Charmap_Index 3108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 3110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Retrieve index of a given charmap. 3111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @input: 3113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * charmap :: 3114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A handle to a charmap. 3115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return: 3117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The index into the array of character maps within the face to which 3118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * `charmap' belongs. If an error occurs, -1 is returned. 3119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 3121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Int ) 3122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_Charmap_Index( FT_CharMap charmap ); 3123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Char_Index */ 3129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Return the glyph index of a given character code. This function */ 3132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* uses a charmap object to do the mapping. */ 3133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the source face object. */ 3136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* charcode :: The character code. */ 3138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The glyph index. 0~means `undefined character code'. */ 3141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If you use FreeType to manipulate the contents of font files */ 3144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* directly, be aware that the glyph index returned by this function */ 3145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* doesn't always correspond to the internal indices used within the */ 3146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* file. This is done to ensure that value~0 always corresponds to */ 3147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the `missing glyph'. If the first glyph is not named `.notdef', */ 3148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* then for Type~1 and Type~42 fonts, `.notdef' will be moved into */ 3149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the glyph ID~0 position, and whatever was there will be moved to */ 3150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the position `.notdef' had. For Type~1 fonts, if there is no */ 3151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `.notdef' glyph at all, then one will be created at index~0 and */ 3152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* whatever was there will be moved to the last index -- Type~42 */ 3153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* fonts are considered invalid under this condition. */ 3154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_UInt ) 3156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_Char_Index( FT_Face face, 3157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong charcode ); 3158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_First_Char */ 3164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function is used to return the first character code in the */ 3167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* current charmap of a given face. It also returns the */ 3168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* corresponding glyph index. */ 3169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the source face object. */ 3172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 3174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* agindex :: Glyph index of first character code. 0~if charmap is */ 3175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* empty. */ 3176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The charmap's first character code. */ 3179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* You should use this function with @FT_Get_Next_Char to be able to */ 3182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* parse all character codes available in a given charmap. The code */ 3183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* should look like this: */ 3184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* { */ 3186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ULong charcode; */ 3187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_UInt gindex; */ 3188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* charcode = FT_Get_First_Char( face, &gindex ); */ 3191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* while ( gindex != 0 ) */ 3192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* { */ 3193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ... do something with (charcode,gindex) pair ... */ 3194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* charcode = FT_Get_Next_Char( face, charcode, &gindex ); */ 3196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* } */ 3197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* } */ 3198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Note that `*agindex' is set to~0 if the charmap is empty. The */ 3200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* result itself can be~0 in two cases: if the charmap is empty or */ 3201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* if the value~0 is the first valid character code. */ 3202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_ULong ) 3204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_First_Char( FT_Face face, 3205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt *agindex ); 3206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Next_Char */ 3212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function is used to return the next character code in the */ 3215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* current charmap of a given face following the value `char_code', */ 3216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* as well as the corresponding glyph index. */ 3217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the source face object. */ 3220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* char_code :: The starting character code. */ 3221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 3223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* agindex :: Glyph index of next character code. 0~if charmap */ 3224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is empty. */ 3225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The charmap's next character code. */ 3228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* You should use this function with @FT_Get_First_Char to walk */ 3231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* over all character codes available in a given charmap. See the */ 3232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* note for this function for a simple code example. */ 3233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Note that `*agindex' is set to~0 when there are no more codes in */ 3235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the charmap. */ 3236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_ULong ) 3238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_Next_Char( FT_Face face, 3239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong char_code, 3240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt *agindex ); 3241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Name_Index */ 3247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Return the glyph index of a given glyph name. This function uses */ 3250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* driver specific objects to do the translation. */ 3251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the source face object. */ 3254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph_name :: The glyph name. */ 3256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The glyph index. 0~means `undefined character code'. */ 3259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_UInt ) 3261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_Name_Index( FT_Face face, 3262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_String* glyph_name ); 3263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 3266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @macro: 3268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_SUBGLYPH_FLAG_XXX 3269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 3271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A list of constants used to describe subglyphs. Please refer to the 3272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * TrueType specification for the meaning of the various flags. 3273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @values: 3275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS :: 3276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES :: 3277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID :: 3278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_SUBGLYPH_FLAG_SCALE :: 3279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_SUBGLYPH_FLAG_XY_SCALE :: 3280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_SUBGLYPH_FLAG_2X2 :: 3281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_SUBGLYPH_FLAG_USE_MY_METRICS :: 3282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 3284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 3285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 3286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 3287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SUBGLYPH_FLAG_SCALE 8 3288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40 3289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SUBGLYPH_FLAG_2X2 0x80 3290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 3291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 3294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @func: 3296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_Get_SubGlyph_Info 3297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 3299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Retrieve a description of a given subglyph. Only use it if 3300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is 3301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * returned otherwise. 3302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @input: 3304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * glyph :: 3305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The source glyph slot. 3306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * sub_index :: 3308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The index of the subglyph. Must be less than 3309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * `glyph->num_subglyphs'. 3310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @output: 3312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * p_index :: 3313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The glyph index of the subglyph. 3314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * p_flags :: 3316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The subglyph flags, see @FT_SUBGLYPH_FLAG_XXX. 3317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * p_arg1 :: 3319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The subglyph's first argument (if any). 3320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * p_arg2 :: 3322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The subglyph's second argument (if any). 3323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * p_transform :: 3325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The subglyph transformation (if any). 3326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return: 3328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FreeType error code. 0~means success. 3329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @note: 3331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The values of `*p_arg1', `*p_arg2', and `*p_transform' must be 3332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * interpreted depending on the flags returned in `*p_flags'. See the 3333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * TrueType specification for details. 3334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 3336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 3337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_SubGlyph_Info( FT_GlyphSlot glyph, 3338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt sub_index, 3339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int *p_index, 3340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt *p_flags, 3341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int *p_arg1, 3342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int *p_arg2, 3343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Matrix *p_transform ); 3344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Enum> */ 3349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FSTYPE_XXX */ 3350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A list of bit flags used in the `fsType' field of the OS/2 table */ 3353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* in a TrueType or OpenType font and the `FSType' entry in a */ 3354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* PostScript font. These bit flags are returned by */ 3355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Get_FSType_Flags; they inform client applications of embedding */ 3356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* and subsetting restrictions associated with a font. */ 3357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* See http://www.adobe.com/devnet/acrobat/pdfs/FontPolicies.pdf for */ 3359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* more details. */ 3360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Values> */ 3362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FSTYPE_INSTALLABLE_EMBEDDING :: */ 3363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Fonts with no fsType bit set may be embedded and permanently */ 3364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* installed on the remote system by an application. */ 3365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING :: */ 3367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Fonts that have only this bit set must not be modified, embedded */ 3368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* or exchanged in any manner without first obtaining permission of */ 3369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the font software copyright owner. */ 3370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING :: */ 3372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If this bit is set, the font may be embedded and temporarily */ 3373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* loaded on the remote system. Documents containing Preview & */ 3374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Print fonts must be opened `read-only'; no edits can be applied */ 3375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* to the document. */ 3376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FSTYPE_EDITABLE_EMBEDDING :: */ 3378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If this bit is set, the font may be embedded but must only be */ 3379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* installed temporarily on other systems. In contrast to Preview */ 3380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* & Print fonts, documents containing editable fonts may be opened */ 3381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* for reading, editing is permitted, and changes may be saved. */ 3382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FSTYPE_NO_SUBSETTING :: */ 3384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If this bit is set, the font may not be subsetted prior to */ 3385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* embedding. */ 3386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FSTYPE_BITMAP_EMBEDDING_ONLY :: */ 3388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If this bit is set, only bitmaps contained in the font may be */ 3389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* embedded; no outline data may be embedded. If there are no */ 3390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* bitmaps available in the font, then the font is unembeddable. */ 3391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* While the fsType flags can indicate that a font may be embedded, a */ 3394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* license with the font vendor may be separately required to use the */ 3395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* font in this way. */ 3396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FSTYPE_INSTALLABLE_EMBEDDING 0x0000 3398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING 0x0002 3399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING 0x0004 3400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FSTYPE_EDITABLE_EMBEDDING 0x0008 3401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FSTYPE_NO_SUBSETTING 0x0100 3402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_FSTYPE_BITMAP_EMBEDDING_ONLY 0x0200 3403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_FSType_Flags */ 3409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Return the fsType flags for a font. */ 3412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the source face object. */ 3415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The fsType flags, @FT_FSTYPE_XXX. */ 3418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Use this function rather than directly reading the `fs_type' field */ 3421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* in the @PS_FontInfoRec structure which is only guaranteed to */ 3422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* return the correct results for Type~1 fonts. */ 3423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Since> */ 3425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 2.3.8 */ 3426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_UShort ) 3428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_FSType_Flags( FT_Face face ); 3429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Section> */ 3434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph_variants */ 3435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Title> */ 3437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Glyph Variants */ 3438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Abstract> */ 3440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The FreeType~2 interface to Unicode Ideographic Variation */ 3441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Sequences (IVS), using the SFNT cmap format~14. */ 3442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Many CJK characters have variant forms. They are a sort of grey */ 3445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* area somewhere between being totally irrelevant and semantically */ 3446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* distinct; for this reason, the Unicode consortium decided to */ 3447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* introduce Ideographic Variation Sequences (IVS), consisting of a */ 3448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Unicode base character and one of 240 variant selectors */ 3449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (U+E0100-U+E01EF), instead of further extending the already huge */ 3450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* code range for CJK characters. */ 3451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* An IVS is registered and unique; for further details please refer */ 3453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* to Unicode Technical Standard #37, the Ideographic Variation */ 3454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Database: */ 3455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* http://www.unicode.org/reports/tr37/ */ 3457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* To date (November 2012), the character with the most variants is */ 3459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* U+9089, having 31 such IVS. */ 3460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Adobe and MS decided to support IVS with a new cmap subtable */ 3462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (format~14). It is an odd subtable because it is not a mapping of */ 3463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* input code points to glyphs, but contains lists of all variants */ 3464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* supported by the font. */ 3465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A variant may be either `default' or `non-default'. A default */ 3467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* variant is the one you will get for that code point if you look it */ 3468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* up in the standard Unicode cmap. A non-default variant is a */ 3469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* different glyph. */ 3470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Face_GetCharVariantIndex */ 3478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Return the glyph index of a given character code as modified by */ 3481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the variation selector. */ 3482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: */ 3485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to the source face object. */ 3486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* charcode :: */ 3488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The character code point in Unicode. */ 3489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* variantSelector :: */ 3491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The Unicode code point of the variation selector. */ 3492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The glyph index. 0~means either `undefined character code', or */ 3495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `undefined selector code', or `no variation selector cmap */ 3496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* subtable', or `current CharMap is not Unicode'. */ 3497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If you use FreeType to manipulate the contents of font files */ 3500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* directly, be aware that the glyph index returned by this function */ 3501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* doesn't always correspond to the internal indices used within */ 3502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the file. This is done to ensure that value~0 always corresponds */ 3503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* to the `missing glyph'. */ 3504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function is only meaningful if */ 3506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* a) the font has a variation selector cmap sub table, */ 3507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* and */ 3508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* b) the current charmap has a Unicode encoding. */ 3509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Since> */ 3511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 2.3.6 */ 3512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_UInt ) 3514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Face_GetCharVariantIndex( FT_Face face, 3515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong charcode, 3516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong variantSelector ); 3517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Face_GetCharVariantIsDefault */ 3523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Check whether this variant of this Unicode character is the one to */ 3526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* be found in the `cmap'. */ 3527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: */ 3530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to the source face object. */ 3531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* charcode :: */ 3533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The character codepoint in Unicode. */ 3534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* variantSelector :: */ 3536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The Unicode codepoint of the variation selector. */ 3537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 1~if found in the standard (Unicode) cmap, 0~if found in the */ 3540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* variation selector cmap, or -1 if it is not a variant. */ 3541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function is only meaningful if the font has a variation */ 3544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* selector cmap subtable. */ 3545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Since> */ 3547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 2.3.6 */ 3548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Int ) 3550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Face_GetCharVariantIsDefault( FT_Face face, 3551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong charcode, 3552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong variantSelector ); 3553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Face_GetVariantSelectors */ 3559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Return a zero-terminated list of Unicode variant selectors found */ 3562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* in the font. */ 3563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: */ 3566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to the source face object. */ 3567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A pointer to an array of selector code points, or NULL if there is */ 3570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* no valid variant selector cmap subtable. */ 3571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The last item in the array is~0; the array is owned by the */ 3574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Face object but can be overwritten or released on the next */ 3575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* call to a FreeType function. */ 3576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Since> */ 3578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 2.3.6 */ 3579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_UInt32* ) 3581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Face_GetVariantSelectors( FT_Face face ); 3582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Face_GetVariantsOfChar */ 3588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Return a zero-terminated list of Unicode variant selectors found */ 3591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* for the specified character code. */ 3592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: */ 3595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to the source face object. */ 3596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* charcode :: */ 3598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The character codepoint in Unicode. */ 3599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A pointer to an array of variant selector code points which are */ 3602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* active for the given character, or NULL if the corresponding list */ 3603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is empty. */ 3604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The last item in the array is~0; the array is owned by the */ 3607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Face object but can be overwritten or released on the next */ 3608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* call to a FreeType function. */ 3609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Since> */ 3611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 2.3.6 */ 3612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_UInt32* ) 3614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Face_GetVariantsOfChar( FT_Face face, 3615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong charcode ); 3616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Face_GetCharsOfVariant */ 3622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Return a zero-terminated list of Unicode character codes found for */ 3625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the specified variant selector. */ 3626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: */ 3629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to the source face object. */ 3630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* variantSelector :: */ 3632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The variant selector code point in Unicode. */ 3633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A list of all the code points which are specified by this selector */ 3636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (both default and non-default codes are returned) or NULL if there */ 3637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is no valid cmap or the variant selector is invalid. */ 3638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The last item in the array is~0; the array is owned by the */ 3641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Face object but can be overwritten or released on the next */ 3642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* call to a FreeType function. */ 3643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Since> */ 3645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 2.3.6 */ 3646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_UInt32* ) 3648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Face_GetCharsOfVariant( FT_Face face, 3649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong variantSelector ); 3650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Section> */ 3655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* computations */ 3656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Title> */ 3658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Computations */ 3659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Abstract> */ 3661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Crunching fixed numbers and vectors. */ 3662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This section contains various functions used to perform */ 3665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* computations on 16.16 fixed-float numbers or 2d vectors. */ 3666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Order> */ 3668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_MulDiv */ 3669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_MulFix */ 3670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_DivFix */ 3671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_RoundFix */ 3672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_CeilFix */ 3673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FloorFix */ 3674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Vector_Transform */ 3675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Matrix_Multiply */ 3676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Matrix_Invert */ 3677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_MulDiv */ 3685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A very simple function used to perform the computation `(a*b)/c' */ 3688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* with maximum accuracy (it uses a 64-bit intermediate integer */ 3689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* whenever necessary). */ 3690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function isn't necessarily as fast as some processor specific */ 3692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* operations, but is at least completely portable. */ 3693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* a :: The first multiplier. */ 3696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* b :: The second multiplier. */ 3697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* c :: The divisor. */ 3698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The result of `(a*b)/c'. This function never traps when trying to */ 3701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ 3702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* on the signs of `a' and `b'. */ 3703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Long ) 3705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_MulDiv( FT_Long a, 3706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long b, 3707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long c ); 3708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The following #if 0 ... #endif is for the documentation formatter, */ 3713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* hiding the internal `FT_MULFIX_INLINED' macro. */ 3714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if 0 3716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_MulFix */ 3720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A very simple function used to perform the computation */ 3723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `(a*b)/0x10000' with maximum accuracy. Most of the time this is */ 3724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* used to multiply a given value by a 16.16 fixed-point factor. */ 3725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* a :: The first multiplier. */ 3728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* b :: The second multiplier. Use a 16.16 factor here whenever */ 3729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* possible (see note below). */ 3730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The result of `(a*b)/0x10000'. */ 3733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function has been optimized for the case where the absolute */ 3736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* value of `a' is less than 2048, and `b' is a 16.16 scaling factor. */ 3737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* As this happens mainly when scaling from notional units to */ 3738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* fractional pixels in FreeType, it resulted in noticeable speed */ 3739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* improvements between versions 2.x and 1.x. */ 3740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* As a conclusion, always try to place a 16.16 factor as the */ 3742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* _second_ argument of this function; this can make a great */ 3743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* difference. */ 3744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Long ) 3746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_MulFix( FT_Long a, 3747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long b ); 3748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 3751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FT_MULFIX_INLINED 3753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FPDFAPI_FT_MulFix( a, b ) FT_MULFIX_INLINED( a, b ) 3754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else 3755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Long ) 3756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_MulFix( FT_Long a, 3757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long b ); 3758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 3759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_DivFix */ 3765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A very simple function used to perform the computation */ 3768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `(a*0x10000)/b' with maximum accuracy. Most of the time, this is */ 3769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* used to divide a given value by a 16.16 fixed-point factor. */ 3770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* a :: The first multiplier. */ 3773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* b :: The second multiplier. Use a 16.16 factor here whenever */ 3774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* possible (see note below). */ 3775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The result of `(a*0x10000)/b'. */ 3778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The optimization for FT_DivFix() is simple: If (a~<<~16) fits in */ 3781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 32~bits, then the division is computed directly. Otherwise, we */ 3782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* use a specialized version of @FT_MulDiv. */ 3783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Long ) 3785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_DivFix( FT_Long a, 3786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long b ); 3787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_RoundFix */ 3793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A very simple function used to round a 16.16 fixed number. */ 3796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* a :: The number to be rounded. */ 3799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The result of `(a + 0x8000) & -0x10000'. */ 3802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Fixed ) 3804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_RoundFix( FT_Fixed a ); 3805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_CeilFix */ 3811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A very simple function used to compute the ceiling function of a */ 3814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 16.16 fixed number. */ 3815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* a :: The number for which the ceiling function is to be computed. */ 3818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The result of `(a + 0x10000 - 1) & -0x10000'. */ 3821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Fixed ) 3823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_CeilFix( FT_Fixed a ); 3824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FloorFix */ 3830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A very simple function used to compute the floor function of a */ 3833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 16.16 fixed number. */ 3834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* a :: The number for which the floor function is to be computed. */ 3837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The result of `a & -0x10000'. */ 3840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Fixed ) 3842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_FloorFix( FT_Fixed a ); 3843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Vector_Transform */ 3849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Transform a single vector through a 2x2 matrix. */ 3852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 3854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* vector :: The target vector to transform. */ 3855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* matrix :: A pointer to the source 2x2 matrix. */ 3858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The result is undefined if either `vector' or `matrix' is invalid. */ 3861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( void ) 3863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Vector_Transform( FT_Vector* vec, 3864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const FT_Matrix* matrix ); 3865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Section> */ 3870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* version */ 3871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Title> */ 3873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType Version */ 3874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Abstract> */ 3876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Functions and macros related to FreeType versions. */ 3877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Note that those functions and macros are of limited use because */ 3880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* even a new release of FreeType with only documentation changes */ 3881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* increases the version number. */ 3882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************* 3887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @enum: 3889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FREETYPE_XXX 3890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 3892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * These three macros identify the FreeType source code version. 3893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Use @FT_Library_Version to access them at runtime. 3894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @values: 3896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FREETYPE_MAJOR :: The major version number. 3897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FREETYPE_MINOR :: The minor version number. 3898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FREETYPE_PATCH :: The patch level. 3899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @note: 3901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The version number of FreeType if built as a dynamic link library 3902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * with the `libtool' package is _not_ controlled by these three 3903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * macros. 3904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 3905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 3906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FREETYPE_MAJOR 2 3907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FREETYPE_MINOR 5 3908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FREETYPE_PATCH 0 3909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Library_Version */ 3915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Return the version of the FreeType library being used. This is */ 3918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* useful when dynamically linking to the library, since one cannot */ 3919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* use the macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and */ 3920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FREETYPE_PATCH. */ 3921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library :: A source library handle. */ 3924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 3926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* amajor :: The major version number. */ 3927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* aminor :: The minor version number. */ 3929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* apatch :: The patch version number. */ 3931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The reason why this function takes a `library' argument is because */ 3934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* certain programs implement library initialization in a custom way */ 3935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* that doesn't use @FT_Init_FreeType. */ 3936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* In such cases, the library version might not be available before */ 3938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the library object has been created. */ 3939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( void ) 3941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Library_Version( FT_Library library, 3942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int *amajor, 3943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int *aminor, 3944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int *apatch ); 3945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Face_CheckTrueTypePatents */ 3951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Parse all bytecode instructions of a TrueType font file to check */ 3954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* whether any of the patented opcodes are used. This is only useful */ 3955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* if you want to be able to use the unpatented hinter with */ 3956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* fonts that do *not* use these opcodes. */ 3957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Note that this function parses *all* glyph instructions in the */ 3959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* font file, which may be slow. */ 3960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A face handle. */ 3963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 1~if this is a TrueType font that uses one of the patented */ 3966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* opcodes, 0~otherwise. */ 3967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Since May 2010, TrueType hinting is no longer patented. */ 3970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Since> */ 3972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 2.3.5 */ 3973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Bool ) 3975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Face_CheckTrueTypePatents( FT_Face face ); 3976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 3979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 3981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Face_SetUnpatentedHinting */ 3982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 3984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Enable or disable the unpatented hinter for a given face. */ 3985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Only enable it if you have determined that the face doesn't */ 3986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* use any patented opcodes (see @FT_Face_CheckTrueTypePatents). */ 3987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 3989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A face handle. */ 3990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* value :: New boolean setting. */ 3992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3993ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 3994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The old setting value. This will always be false if this is not */ 3995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* an SFNT font, or if the unpatented hinter is not compiled in this */ 3996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* instance of the library. */ 3997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 3998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 3999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Since May 2010, TrueType hinting is no longer patented. */ 4000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 4001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Since> */ 4002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 2.3.5 */ 4003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 4004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Bool ) 4005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Face_SetUnpatentedHinting( FT_Face face, 4006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Bool value ); 4007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 4008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 4009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 4010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 4011ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_END_HEADER 4012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 4013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __FREETYPE_H__ */ 4014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 4015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 4016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */ 4017