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

📄 ttdebug.c

📁 freetype库的应用demo,里面包含freetype的很多实例
💻 C
📖 第 1 页 / 共 3 页
字号:
#include <stdio.h>#include <stdlib.h>#ifdef UNIX#ifndef HAVE_POSIX_TERMIOS#include <sys/ioctl.h>#include <termio.h>#else#ifndef HAVE_TCGETATTR#define HAVE_TCGETATTR#endif /* HAVE_TCGETATTR */#ifndef HAVE_TCSETATTR#define HAVE_TCSETATTR#endif /* HAVE_TCSETATTR */#include <termios.h>#endif /* HAVE_POSIX_TERMIOS */#endif/* Define the `getch()' function.  On Unix systems, it is an alias  *//* for `getchar()', and the debugger front end must ensure that the *//* `stdin' file descriptor is not in line-by-line input mode.       */#ifndef UNIX#include <conio.h>#else#define getch  getchar#endif#include <ft2build.h>#include FT_FREETYPE_H/* "freetype2/src/truetype" must be in the current include path */#include "ttobjs.h"#include "ttdriver.h"#include "ttinterp.h"#include "tterrors.h"FT_Library      library;    /* root library object */FT_Memory       memory;     /* system object */FT_Driver       driver;     /* truetype driver */TT_Face         face;       /* truetype face */TT_Size         size;       /* truetype size */TT_GlyphSlot    glyph;      /* truetype glyph slot */TT_ExecContext  exec;       /* truetype execution context */FT_Error        error;TT_CodeRange_Tag  debug_coderange = tt_coderange_glyph;  typedef FT_Byte ByteStr[2];  typedef FT_Byte WordStr[4];  typedef FT_Byte LongStr[8];  typedef FT_Byte DebugStr[128];  static  DebugStr tempStr;#undef  PACK#define PACK( x, y )  ((x << 4) | y)  static const FT_Byte  Pop_Push_Count[256] =  {    /* opcodes are gathered in groups of 16 */    /* please keep the spaces as they are   */    /*  SVTCA  y  */  PACK( 0, 0 ),    /*  SVTCA  x  */  PACK( 0, 0 ),    /*  SPvTCA y  */  PACK( 0, 0 ),    /*  SPvTCA x  */  PACK( 0, 0 ),    /*  SFvTCA y  */  PACK( 0, 0 ),    /*  SFvTCA x  */  PACK( 0, 0 ),    /*  SPvTL //  */  PACK( 2, 0 ),    /*  SPvTL +   */  PACK( 2, 0 ),    /*  SFvTL //  */  PACK( 2, 0 ),    /*  SFvTL +   */  PACK( 2, 0 ),    /*  SPvFS     */  PACK( 2, 0 ),    /*  SFvFS     */  PACK( 2, 0 ),    /*  GPV       */  PACK( 0, 2 ),    /*  GFV       */  PACK( 0, 2 ),    /*  SFvTPv    */  PACK( 0, 0 ),    /*  ISECT     */  PACK( 5, 0 ),    /*  SRP0      */  PACK( 1, 0 ),    /*  SRP1      */  PACK( 1, 0 ),    /*  SRP2      */  PACK( 1, 0 ),    /*  SZP0      */  PACK( 1, 0 ),    /*  SZP1      */  PACK( 1, 0 ),    /*  SZP2      */  PACK( 1, 0 ),    /*  SZPS      */  PACK( 1, 0 ),    /*  SLOOP     */  PACK( 1, 0 ),    /*  RTG       */  PACK( 0, 0 ),    /*  RTHG      */  PACK( 0, 0 ),    /*  SMD       */  PACK( 1, 0 ),    /*  ELSE      */  PACK( 0, 0 ),    /*  JMPR      */  PACK( 1, 0 ),    /*  SCvTCi    */  PACK( 1, 0 ),    /*  SSwCi     */  PACK( 1, 0 ),    /*  SSW       */  PACK( 1, 0 ),    /*  DUP       */  PACK( 1, 2 ),    /*  POP       */  PACK( 1, 0 ),    /*  CLEAR     */  PACK( 0, 0 ),    /*  SWAP      */  PACK( 2, 2 ),    /*  DEPTH     */  PACK( 0, 1 ),    /*  CINDEX    */  PACK( 1, 1 ),    /*  MINDEX    */  PACK( 1, 0 ),    /*  AlignPTS  */  PACK( 2, 0 ),    /*  INS_$28   */  PACK( 0, 0 ),    /*  UTP       */  PACK( 1, 0 ),    /*  LOOPCALL  */  PACK( 2, 0 ),    /*  CALL      */  PACK( 1, 0 ),    /*  FDEF      */  PACK( 1, 0 ),    /*  ENDF      */  PACK( 0, 0 ),    /*  MDAP[0]   */  PACK( 1, 0 ),    /*  MDAP[1]   */  PACK( 1, 0 ),    /*  IUP[0]    */  PACK( 0, 0 ),    /*  IUP[1]    */  PACK( 0, 0 ),    /*  SHP[0]    */  PACK( 0, 0 ),    /*  SHP[1]    */  PACK( 0, 0 ),    /*  SHC[0]    */  PACK( 1, 0 ),    /*  SHC[1]    */  PACK( 1, 0 ),    /*  SHZ[0]    */  PACK( 1, 0 ),    /*  SHZ[1]    */  PACK( 1, 0 ),    /*  SHPIX     */  PACK( 1, 0 ),    /*  IP        */  PACK( 0, 0 ),    /*  MSIRP[0]  */  PACK( 2, 0 ),    /*  MSIRP[1]  */  PACK( 2, 0 ),    /*  AlignRP   */  PACK( 0, 0 ),    /*  RTDG      */  PACK( 0, 0 ),    /*  MIAP[0]   */  PACK( 2, 0 ),    /*  MIAP[1]   */  PACK( 2, 0 ),    /*  NPushB    */  PACK( 0, 0 ),    /*  NPushW    */  PACK( 0, 0 ),    /*  WS        */  PACK( 2, 0 ),    /*  RS        */  PACK( 1, 1 ),    /*  WCvtP     */  PACK( 2, 0 ),    /*  RCvt      */  PACK( 1, 1 ),    /*  GC[0]     */  PACK( 1, 1 ),    /*  GC[1]     */  PACK( 1, 1 ),    /*  SCFS      */  PACK( 2, 0 ),    /*  MD[0]     */  PACK( 2, 1 ),    /*  MD[1]     */  PACK( 2, 1 ),    /*  MPPEM     */  PACK( 0, 1 ),    /*  MPS       */  PACK( 0, 1 ),    /*  FlipON    */  PACK( 0, 0 ),    /*  FlipOFF   */  PACK( 0, 0 ),    /*  DEBUG     */  PACK( 1, 0 ),    /*  LT        */  PACK( 2, 1 ),    /*  LTEQ      */  PACK( 2, 1 ),    /*  GT        */  PACK( 2, 1 ),    /*  GTEQ      */  PACK( 2, 1 ),    /*  EQ        */  PACK( 2, 1 ),    /*  NEQ       */  PACK( 2, 1 ),    /*  ODD       */  PACK( 1, 1 ),    /*  EVEN      */  PACK( 1, 1 ),    /*  IF        */  PACK( 1, 0 ),    /*  EIF       */  PACK( 0, 0 ),    /*  AND       */  PACK( 2, 1 ),    /*  OR        */  PACK( 2, 1 ),    /*  NOT       */  PACK( 1, 1 ),    /*  DeltaP1   */  PACK( 1, 0 ),    /*  SDB       */  PACK( 1, 0 ),    /*  SDS       */  PACK( 1, 0 ),    /*  ADD       */  PACK( 2, 1 ),    /*  SUB       */  PACK( 2, 1 ),    /*  DIV       */  PACK( 2, 1 ),    /*  MUL       */  PACK( 2, 1 ),    /*  ABS       */  PACK( 1, 1 ),    /*  NEG       */  PACK( 1, 1 ),    /*  FLOOR     */  PACK( 1, 1 ),    /*  CEILING   */  PACK( 1, 1 ),    /*  ROUND[0]  */  PACK( 1, 1 ),    /*  ROUND[1]  */  PACK( 1, 1 ),    /*  ROUND[2]  */  PACK( 1, 1 ),    /*  ROUND[3]  */  PACK( 1, 1 ),    /*  NROUND[0] */  PACK( 1, 1 ),    /*  NROUND[1] */  PACK( 1, 1 ),    /*  NROUND[2] */  PACK( 1, 1 ),    /*  NROUND[3] */  PACK( 1, 1 ),    /*  WCvtF     */  PACK( 2, 0 ),    /*  DeltaP2   */  PACK( 1, 0 ),    /*  DeltaP3   */  PACK( 1, 0 ),    /*  DeltaCn[0] */ PACK( 1, 0 ),    /*  DeltaCn[1] */ PACK( 1, 0 ),    /*  DeltaCn[2] */ PACK( 1, 0 ),    /*  SROUND    */  PACK( 1, 0 ),    /*  S45Round  */  PACK( 1, 0 ),    /*  JROT      */  PACK( 2, 0 ),    /*  JROF      */  PACK( 2, 0 ),    /*  ROFF      */  PACK( 0, 0 ),    /*  INS_$7B   */  PACK( 0, 0 ),    /*  RUTG      */  PACK( 0, 0 ),    /*  RDTG      */  PACK( 0, 0 ),    /*  SANGW     */  PACK( 1, 0 ),    /*  AA        */  PACK( 1, 0 ),    /*  FlipPT    */  PACK( 0, 0 ),    /*  FlipRgON  */  PACK( 2, 0 ),    /*  FlipRgOFF */  PACK( 2, 0 ),    /*  INS_$83   */  PACK( 0, 0 ),    /*  INS_$84   */  PACK( 0, 0 ),    /*  ScanCTRL  */  PACK( 1, 0 ),    /*  SDVPTL[0] */  PACK( 2, 0 ),    /*  SDVPTL[1] */  PACK( 2, 0 ),    /*  GetINFO   */  PACK( 1, 1 ),    /*  IDEF      */  PACK( 1, 0 ),    /*  ROLL      */  PACK( 3, 3 ),    /*  MAX       */  PACK( 2, 1 ),    /*  MIN       */  PACK( 2, 1 ),    /*  ScanTYPE  */  PACK( 1, 0 ),    /*  InstCTRL  */  PACK( 2, 0 ),    /*  INS_$8F   */  PACK( 0, 0 ),    /*  INS_$90  */   PACK( 0, 0 ),    /*  INS_$91  */   PACK( 0, 0 ),    /*  INS_$92  */   PACK( 0, 0 ),    /*  INS_$93  */   PACK( 0, 0 ),    /*  INS_$94  */   PACK( 0, 0 ),    /*  INS_$95  */   PACK( 0, 0 ),    /*  INS_$96  */   PACK( 0, 0 ),    /*  INS_$97  */   PACK( 0, 0 ),    /*  INS_$98  */   PACK( 0, 0 ),    /*  INS_$99  */   PACK( 0, 0 ),    /*  INS_$9A  */   PACK( 0, 0 ),    /*  INS_$9B  */   PACK( 0, 0 ),    /*  INS_$9C  */   PACK( 0, 0 ),    /*  INS_$9D  */   PACK( 0, 0 ),    /*  INS_$9E  */   PACK( 0, 0 ),    /*  INS_$9F  */   PACK( 0, 0 ),    /*  INS_$A0  */   PACK( 0, 0 ),    /*  INS_$A1  */   PACK( 0, 0 ),    /*  INS_$A2  */   PACK( 0, 0 ),    /*  INS_$A3  */   PACK( 0, 0 ),    /*  INS_$A4  */   PACK( 0, 0 ),    /*  INS_$A5  */   PACK( 0, 0 ),    /*  INS_$A6  */   PACK( 0, 0 ),    /*  INS_$A7  */   PACK( 0, 0 ),    /*  INS_$A8  */   PACK( 0, 0 ),    /*  INS_$A9  */   PACK( 0, 0 ),    /*  INS_$AA  */   PACK( 0, 0 ),    /*  INS_$AB  */   PACK( 0, 0 ),    /*  INS_$AC  */   PACK( 0, 0 ),    /*  INS_$AD  */   PACK( 0, 0 ),    /*  INS_$AE  */   PACK( 0, 0 ),    /*  INS_$AF  */   PACK( 0, 0 ),    /*  PushB[0]  */  PACK( 0, 1 ),    /*  PushB[1]  */  PACK( 0, 2 ),    /*  PushB[2]  */  PACK( 0, 3 ),    /*  PushB[3]  */  PACK( 0, 4 ),    /*  PushB[4]  */  PACK( 0, 5 ),    /*  PushB[5]  */  PACK( 0, 6 ),    /*  PushB[6]  */  PACK( 0, 7 ),    /*  PushB[7]  */  PACK( 0, 8 ),    /*  PushW[0]  */  PACK( 0, 1 ),    /*  PushW[1]  */  PACK( 0, 2 ),    /*  PushW[2]  */  PACK( 0, 3 ),    /*  PushW[3]  */  PACK( 0, 4 ),    /*  PushW[4]  */  PACK( 0, 5 ),    /*  PushW[5]  */  PACK( 0, 6 ),    /*  PushW[6]  */  PACK( 0, 7 ),    /*  PushW[7]  */  PACK( 0, 8 ),    /*  MDRP[00]  */  PACK( 1, 0 ),    /*  MDRP[01]  */  PACK( 1, 0 ),    /*  MDRP[02]  */  PACK( 1, 0 ),    /*  MDRP[03]  */  PACK( 1, 0 ),    /*  MDRP[04]  */  PACK( 1, 0 ),    /*  MDRP[05]  */  PACK( 1, 0 ),    /*  MDRP[06]  */  PACK( 1, 0 ),    /*  MDRP[07]  */  PACK( 1, 0 ),    /*  MDRP[08]  */  PACK( 1, 0 ),    /*  MDRP[09]  */  PACK( 1, 0 ),    /*  MDRP[10]  */  PACK( 1, 0 ),    /*  MDRP[11]  */  PACK( 1, 0 ),    /*  MDRP[12]  */  PACK( 1, 0 ),    /*  MDRP[13]  */  PACK( 1, 0 ),    /*  MDRP[14]  */  PACK( 1, 0 ),    /*  MDRP[15]  */  PACK( 1, 0 ),    /*  MDRP[16]  */  PACK( 1, 0 ),    /*  MDRP[17]  */  PACK( 1, 0 ),    /*  MDRP[18]  */  PACK( 1, 0 ),    /*  MDRP[19]  */  PACK( 1, 0 ),    /*  MDRP[20]  */  PACK( 1, 0 ),    /*  MDRP[21]  */  PACK( 1, 0 ),    /*  MDRP[22]  */  PACK( 1, 0 ),    /*  MDRP[23]  */  PACK( 1, 0 ),    /*  MDRP[24]  */  PACK( 1, 0 ),    /*  MDRP[25]  */  PACK( 1, 0 ),    /*  MDRP[26]  */  PACK( 1, 0 ),    /*  MDRP[27]  */  PACK( 1, 0 ),    /*  MDRP[28]  */  PACK( 1, 0 ),    /*  MDRP[29]  */  PACK( 1, 0 ),    /*  MDRP[30]  */  PACK( 1, 0 ),    /*  MDRP[31]  */  PACK( 1, 0 ),    /*  MIRP[00]  */  PACK( 2, 0 ),    /*  MIRP[01]  */  PACK( 2, 0 ),    /*  MIRP[02]  */  PACK( 2, 0 ),    /*  MIRP[03]  */  PACK( 2, 0 ),    /*  MIRP[04]  */  PACK( 2, 0 ),    /*  MIRP[05]  */  PACK( 2, 0 ),    /*  MIRP[06]  */  PACK( 2, 0 ),    /*  MIRP[07]  */  PACK( 2, 0 ),    /*  MIRP[08]  */  PACK( 2, 0 ),    /*  MIRP[09]  */  PACK( 2, 0 ),    /*  MIRP[10]  */  PACK( 2, 0 ),    /*  MIRP[11]  */  PACK( 2, 0 ),    /*  MIRP[12]  */  PACK( 2, 0 ),    /*  MIRP[13]  */  PACK( 2, 0 ),    /*  MIRP[14]  */  PACK( 2, 0 ),    /*  MIRP[15]  */  PACK( 2, 0 ),    /*  MIRP[16]  */  PACK( 2, 0 ),    /*  MIRP[17]  */  PACK( 2, 0 ),    /*  MIRP[18]  */  PACK( 2, 0 ),    /*  MIRP[19]  */  PACK( 2, 0 ),    /*  MIRP[20]  */  PACK( 2, 0 ),    /*  MIRP[21]  */  PACK( 2, 0 ),    /*  MIRP[22]  */  PACK( 2, 0 ),    /*  MIRP[23]  */  PACK( 2, 0 ),    /*  MIRP[24]  */  PACK( 2, 0 ),    /*  MIRP[25]  */  PACK( 2, 0 ),    /*  MIRP[26]  */  PACK( 2, 0 ),    /*  MIRP[27]  */  PACK( 2, 0 ),    /*  MIRP[28]  */  PACK( 2, 0 ),    /*  MIRP[29]  */  PACK( 2, 0 ),    /*  MIRP[30]  */  PACK( 2, 0 ),    /*  MIRP[31]  */  PACK( 2, 0 )  };  static const FT_String*  OpStr[256] = {            "SVTCA y",       /* Set vectors to coordinate axis y    */            "SVTCA x",       /* Set vectors to coordinate axis x    */            "SPvTCA y",      /* Set Proj. vec. to coord. axis y     */            "SPvTCA x",      /* Set Proj. vec. to coord. axis x     */            "SFvTCA y",      /* Set Free. vec. to coord. axis y     */            "SFvTCA x",      /* Set Free. vec. to coord. axis x     */            "SPvTL //",      /* Set Proj. vec. parallel to segment  */            "SPvTL +",       /* Set Proj. vec. normal to segment    */            "SFvTL //",      /* Set Free. vec. parallel to segment  */            "SFvTL +",       /* Set Free. vec. normal to segment    */            "SPvFS",         /* Set Proj. vec. from stack           */            "SFvFS",         /* Set Free. vec. from stack           */            "GPV",           /* Get projection vector               */            "GFV",           /* Get freedom vector                  */            "SFvTPv",        /* Set free. vec. to proj. vec.        */            "ISECT",         /* compute intersection                */            "SRP0",          /* Set reference point 0               */            "SRP1",          /* Set reference point 1               */            "SRP2",          /* Set reference point 2               */            "SZP0",          /* Set Zone Pointer 0                  */            "SZP1",          /* Set Zone Pointer 1                  */            "SZP2",          /* Set Zone Pointer 2                  */            "SZPS",          /* Set all zone pointers               */            "SLOOP",         /* Set loop counter                    */            "RTG",           /* Round to Grid                       */            "RTHG",          /* Round to Half-Grid                  */            "SMD",           /* Set Minimum Distance                */            "ELSE",          /* Else                                */            "JMPR",          /* Jump Relative                       */            "SCvTCi",        /* Set CVT                             */            "SSwCi",         /*                                     */            "SSW",           /*                                     */            "DUP",            "POP",            "CLEAR",            "SWAP",            "DEPTH",            "CINDEX",            "MINDEX",            "AlignPTS",            "INS_$28",            "UTP",            "LOOPCALL",            "CALL",            "FDEF",            "ENDF",            "MDAP[-]",            "MDAP[r]",            "IUP[y]",            "IUP[x]",            "SHP[0]",            "SHP[1]",            "SHC[0]",            "SHC[1]",            "SHZ[0]",            "SHZ[1]",            "SHPIX",            "IP",            "MSIRP[0]",            "MSIRP[1]",            "AlignRP",            "RTDG",            "MIAP[-]",            "MIAP[r]",            "NPushB",            "NPushW",            "WS",            "RS",            "WCvtP",            "RCvt",            "GC[0]",            "GC[1]",            "SCFS",            "MD[0]",            "MD[1]",            "MPPEM",            "MPS",            "FlipON",            "FlipOFF",            "DEBUG",

⌨️ 快捷键说明

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