⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 truetype.h

📁 Qt/Embedded是一个多平台的C++图形用户界面应用程序框架
💻 H
📖 第 1 页 / 共 5 页
字号:
/******************************************************************* * *  truetype.h * *    Backwards-compatible high-level interface for the TrueType *    driver. This file is a replacement for the old "freetype.h" *    from 1.0 and 1.1. It can be used to compile applications *    and tools using the old API.. * *    Note that this (old) interface is now deprecated and won't *    be modified in the future. Developers will have to switch to *    the newer interface to get new features ( kerning, embedded *    bitmaps, etc.. ). * * * *  Copyright 1996-1998 by *  David Turner, Robert Wilhelm, and Werner Lemberg. * *  This file is part of the FreeType project and may only be used, *  modified, and distributed under the terms of the FreeType project *  license, LICENSE.TXT.  By continuing to use, modify, or distribute  *  this file you indicate that you have read the license and *  understand and accept it fully. * *  Note: * *    This is the only file that should be included by client             *    application sources.  All other types and functions defined *    in the "tt*.h" files are library internals and should not be *    included. * ******************************************************************/#ifndef TRUETYPE_H#define TRUETYPE_H/* To make freetype.h independent from configuration files we check *//* whether EXPORT_DEF has been defined already.                     */#ifndef EXPORT_DEF#define EXPORT_DEF extern#endif/* The same for TT_Text.  If you define the HAVE_TT_TEXT macro, you *//* have to provide a typedef declaration for TT_Text before         *//* including this file.                                             */#ifndef HAVE_TT_TEXT#define HAVE_TT_TEXT  typedef char  TT_Text;              /* the data type to represent */                                      /* file name string elements  */#endif#ifdef __cplusplus  extern "C" {#endif/* The following types are also defined in "drivers/ttlib/ttobjs.h"  *//* We use the _TRUETYPE_ macro to prevent their redefinition when    *//* _compiling_ the backwards-compatible layer called "ttapi.c"       *//*                                                                   */#ifndef _TRUETYPE_  /*******************************************************************/  /*                                                                 */  /*  FreeType types definitions.                                    */  /*                                                                 */  /*  All these begin with a 'TT_' prefix.                           */  /*                                                                 */  /*******************************************************************/  typedef unsigned short  TT_Bool;  typedef signed long     TT_Fixed;   /* Signed Fixed 16.16 Float */  typedef signed short    TT_FWord;   /* Distance in FUnits */  typedef unsigned short  TT_UFWord;  /* Unsigned distance */  typedef char            TT_String;  typedef signed char     TT_Char;  typedef unsigned char   TT_Byte;  typedef signed short    TT_Short;  typedef unsigned short  TT_UShort;  typedef signed long     TT_Long;  typedef unsigned long   TT_ULong;  typedef int             TT_Int;  typedef signed short    TT_F2Dot14; /* Signed fixed float 2.14 used for */                                      /* unit vectors, with layout:       */                                      /*                                  */                                      /*  s : 1  -- sign bit              */                                      /*  m : 1  -- integer bit           */                                      /*  f : 14 -- unsigned fractional   */                                      /*                                  */                                      /*  's:m' is the 2-bit signed int   */                                      /*  value to which the positive     */                                      /*  fractional part should be       */                                      /*  added.                          */                                      /*                                  */  typedef signed long     TT_F26Dot6; /* 26.6 fixed float, used for       */                                      /* glyph points pixel coordinates.  */  typedef signed long     TT_Pos;     /* point position, expressed either */                                      /* in fractional pixels or notional */                                      /* units, depending on context.     */                                      /* For example, glyph coordinates   */                                      /* returned by TT_Load_Glyph are    */                                      /* expressed in font units when     */                                      /* scaling wasn't requested, and    */                                      /* in 26.6 fractional pixels if it  */                                      /* was.                             */  struct  TT_UnitVector_      /* guess what...  */  {     TT_F2Dot14  x;    TT_F2Dot14  y;  };  typedef struct TT_UnitVector_  TT_UnitVector;  struct  TT_Vector_          /* Simple vector type */  {    TT_F26Dot6  x;    TT_F26Dot6  y;  };  typedef struct TT_Vector_  TT_Vector;  /* A simple 2x2 matrix used for transformations. */  /* You should use 16.16 fixed floats.            */  /*                                               */  /*  x' = xx*x + xy*y                             */  /*  y' = yx*x + yy*y                             */  /*                                               */  struct  TT_Matrix_  {    TT_Fixed  xx, xy;    TT_Fixed  yx, yy;  };  typedef struct TT_Matrix_  TT_Matrix;  /* A structure used to describe a simple bounding box */  struct TT_BBox_  {    TT_Pos  xMin;    TT_Pos  yMin;    TT_Pos  xMax;    TT_Pos  yMax;  };  typedef struct TT_BBox_  TT_BBox;#endif /* _TRUETYPE_ */  /* A structure used to describe the source glyph to the renderer. */  struct  TT_Outline_  {    TT_Short         n_contours;   /* number of contours in glyph        */    TT_UShort        n_points;     /* number of points in the glyph      */    TT_Vector*       points;       /* the outline's points   */    TT_Byte*         flags;        /* the points flags       */    TT_UShort*       contours;     /* the contour end points */    /* The following flag indicates that the outline owns the arrays it  */    /* refers to.  Typically, this is true of outlines created from the  */    /* TT_New_Outline() API, while it isn't for those returned by        */    /* TT_Get_Glyph_Outline().                                           */    TT_Bool          owner;      /* the outline owns the coordinates,    */                                 /* flags and contours array it uses     */    /* The following flags are set automatically by                      */    /* TT_Get_Glyph_Outline().  Their meaning is the following:          */    /*                                                                   */    /*  high_precision   When true, the scan-line converter will use     */    /*                   a higher precision to render bitmaps (i.e. a    */    /*                   1/1024 pixel precision).  This is important for */    /*                   small ppem sizes.                               */    /*                                                                   */    /*  second_pass      When true, the scan-line converter performs     */    /*                   a second sweep phase dedicated to find          */    /*                   vertical drop-outs.  If false, only horizontal  */    /*                   drop-outs will be checked during the first      */    /*                   vertical sweep (yes, this is a bit confusing    */    /*                   but it's really the way it should work).        */    /*                   This is important for small ppems too.          */    /*                                                                   */    /*  dropout_mode     Specifies the TrueType drop-out mode to         */    /*                   use for continuity checking. valid values       */    /*                   are 0 (no check), 1, 2, 4, and 5.               */    /*                                                                   */    /*  Most of the engine's users will safely ignore these fields...    */    TT_Bool          high_precision;  /* high precision rendering */    TT_Bool          second_pass;     /* two sweeps rendering     */    TT_Char          dropout_mode;    /* dropout mode */  };  typedef struct TT_Outline_  TT_Outline;   /* A structure used to return glyph metrics.                          */  /*                                                                    */  /* The "bearingX" isn't called "left-side bearing" anymore because    */  /* it has different meanings depending on the glyph's orientation.    */  /*                                                                    */  /* The same is true for "bearingY", which is the top-side bearing     */  /* defined by the TT_Spec, i.e., the distance from the baseline to    */  /* the top of the glyph's bbox.  According to our current convention, */  /* this is always the same as "bbox.yMax" but we make it appear for   */  /* consistency in its proper field.                                   */  /*                                                                    */  /* The "advance" width is the advance width for horizontal layout,    */  /* and advance height for vertical layouts.                           */  /*                                                                    */  /* Finally, the library (ver. 1.1) doesn't support vertical text yet  */  /* but these changes were introduced to accomodate it, as it will     */  /* most certainly be introduced in later releases.                    */  struct  TT_Glyph_Metrics_  {    TT_BBox  bbox;      /* glyph bounding box */    TT_Pos   bearingX;  /* left-side bearing                    */    TT_Pos   bearingY;  /* top-side bearing, per se the TT spec */    TT_Pos   advance;   /* advance width (or height) */  };  /* A structure used to return horizontal _and_ vertical glyph         */  /* metrics.                                                           */  /*                                                                    */  /* A glyph can be used either in a horizontal or vertical layout.     */  /* Its glyph metrics vary with orientation.  The Big_Glyph_Metrics    */  /* structure is used to return _all_ metrics in one call.             */  /*                                                                    */  struct TT_Big_Glyph_Metrics_  {    TT_BBox  bbox;          /* glyph bounding box */    TT_Pos   horiBearingX;  /* left side bearing in horizontal layouts */    TT_Pos   horiBearingY;  /* top side bearing in horizontal layouts  */    TT_Pos   vertBearingX;  /* left side bearing in vertical layouts */    TT_Pos   vertBearingY;  /* top side bearing in vertical layouts  */    TT_Pos   horiAdvance;   /* advance width for horizontal layout */    TT_Pos   vertAdvance;   /* advance height for vertical layout  */    /* The following fields represent unhinted scaled metrics values. */    /* They can be useful for applications needing to do some device  */    /* independent placement of glyphs.                               */    /*                                                                */    /* Applying these metrics to hinted glyphs will most surely ruin  */    /* the grid fitting performed by the bytecode interpreter.  These */    /* values are better used to compute accumulated positioning      */    /* distances.                                                     */    TT_Pos   linearHoriBearingX;  /* linearly scaled horizontal lsb     */    TT_Pos   linearHoriAdvance;   /* linearly scaled horizontal advance */    TT_Pos   linearVertBearingY;  /* linearly scaled vertical tsb     */    TT_Pos   linearVertAdvance;   /* linearly scaled vertical advance */  };  typedef struct TT_Glyph_Metrics_      TT_Glyph_Metrics;  typedef struct TT_Big_Glyph_Metrics_  TT_Big_Glyph_Metrics;  /* A structure used to return instance metrics. */  struct  TT_Instance_Metrics_  {    TT_F26Dot6  pointSize;     /* char. size in points (1pt = 1/72 inch) */    TT_UShort   x_ppem;        /* horizontal pixels per EM square */    TT_UShort   y_ppem;        /* vertical pixels per EM square   */    TT_Fixed    x_scale;     /* 16.16 to convert from EM units to 26.6 pix */    TT_Fixed    y_scale;     /* 16.16 to convert from EM units to 26.6 pix */    TT_UShort   x_resolution;  /* device horizontal resolution in dpi */    TT_UShort   y_resolution;  /* device vertical resolution in dpi   */  };  typedef struct TT_Instance_Metrics_  TT_Instance_Metrics;  /* Flow constants:                                             */  /*                                                             */  /* The flow of a bitmap refers to the way lines are oriented   */  /* within the bitmap data, i.e., the orientation of the Y      */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -