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

📄 ahtypes.h

📁 qt-embedded-2.3.8.tar.gz源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************//*                                                                         *//*  ahtypes.h                                                              *//*                                                                         *//*    General types and definitions for the auto-hint module               *//*    (specification only).                                                *//*                                                                         *//*  Copyright 2000 Catharon Productions Inc.                               *//*  Author: David Turner                                                   *//*                                                                         *//*  This file is part of the Catharon Typography Project and shall only    *//*  be used, modified, and distributed under the terms of the Catharon     *//*  Open Source License that should come with this file under the name     *//*  `CatharonLicense.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 that this license is compatible with the FreeType license.        *//*                                                                         *//***************************************************************************/#ifndef AHTYPES_H#define AHTYPES_H#include <freetype/internal/ftobjs.h>  /* for freetype.h + FT_LOCAL etc. */#ifdef FT_FLAT_COMPILE#include "ahloader.h"#else#include <autohint/ahloader.h>#endif#define xxAH_DEBUG#ifdef AH_DEBUG#include <stdio.h>#define AH_LOG( x )  printf##x#else#define AH_LOG( x )  do ; while ( 0 ) /* nothing */#endif#ifdef __cplusplus  extern "C" {#endif  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  /****                                                                 ****/  /**** COMPILE-TIME BUILD OPTIONS                                      ****/  /****                                                                 ****/  /**** Toggle these configuration macros to experiment with `features' ****/  /**** of the auto-hinter.                                             ****/  /****                                                                 ****/  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  /*                                                                       */  /* If this option is defined, only strong interpolation will be used to  */  /* place the points between edges.  Otherwise, `smooth' points are       */  /* detected and later hinted through weak interpolation to correct some  */  /* unpleasant artefacts.                                                 */  /*                                                                       */#undef AH_OPTION_NO_WEAK_INTERPOLATION  /*************************************************************************/  /*                                                                       */  /* If this option is defined, only weak interpolation will be used to    */  /* place the points between edges.  Otherwise, `strong' points are       */  /* detected and later hinted through strong interpolation to correct     */  /* some unpleasant artefacts.                                            */  /*                                                                       */#undef AH_OPTION_NO_STRONG_INTERPOLATION  /*************************************************************************/  /*                                                                       */  /* Undefine this macro if you don't want to hint the metrics.  There is  */  /* no reason to do this (at least for non-CJK scripts), except for       */  /* experimentation.                                                      */  /*                                                                       */#define AH_HINT_METRICS  /*************************************************************************/  /*                                                                       */  /* Define this macro if you do not want to insert extra edges at a       */  /* glyph's x and y extremum (if there isn't one already available).      */  /* This helps to reduce a number of artefacts and allows hinting of      */  /* metrics.                                                              */  /*                                                                       */#undef AH_OPTION_NO_EXTREMUM_EDGES  /* don't touch for now */#define AH_MAX_WIDTHS   12#define AH_MAX_HEIGHTS  12  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  /****                                                                 ****/  /****   TYPE DEFINITIONS                                              ****/  /****                                                                 ****/  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  /* see agangles.h */  typedef FT_Int  AH_Angle;  /* hint flags */#define ah_flah_none       0  /* bezier control points flags */#define ah_flah_conic                 1#define ah_flah_cubic                 2#define ah_flah_control               ( ah_flah_conic | ah_flah_cubic )  /* extrema flags */#define ah_flah_extrema_x             4#define ah_flah_extrema_y             8  /* roundness */#define ah_flah_round_x              16#define ah_flah_round_y              32  /* touched */#define ah_flah_touch_x              64#define ah_flah_touch_y             128  /* weak interpolation */#define ah_flah_weak_interpolation  256  typedef FT_Int AH_Flags;  /* edge hint flags */#define ah_edge_normal  0#define ah_edge_round   1#define ah_edge_serif   2#define ah_edge_done    4  typedef FT_Int  AH_Edge_Flags;  /* hint directions -- the values are computed so that two vectors are */  /* in opposite directions iff `dir1+dir2 == 0'                        */#define ah_dir_none    4#define ah_dir_right   1#define ah_dir_left   -1#define ah_dir_up      2#define ah_dir_down   -2  typedef FT_Int  AH_Direction;  typedef struct AH_Point    AH_Point;  typedef struct AH_Segment  AH_Segment;  typedef struct AH_Edge     AH_Edge;  /*************************************************************************/  /*                                                                       */  /* <Struct>                                                              */  /*    AH_Point                                                           */  /*                                                                       */  /* <Description>                                                         */  /*    A structure used to model an outline point to the AH_Outline type. */  /*                                                                       */  /* <Fields>                                                              */  /*    flags     :: The current point hint flags.                         */  /*                                                                       */  /*    ox, oy    :: The current original scaled coordinates.              */  /*                                                                       */  /*    fx, fy    :: The current coordinates in font units.                */  /*                                                                       */  /*    x,  y     :: The current hinter coordinates.                       */  /*                                                                       */  /*    u, v      :: Point coordinates -- meaning varies with context.     */  /*                                                                       */  /*    in_dir    :: The direction of the inwards vector (prev->point).    */  /*                                                                       */  /*    out_dir   :: The direction of the outwards vector (point->next).   */  /*                                                                       */  /*    in_angle  :: The angle of the inwards vector.                      */  /*                                                                       */  /*    out_angle :: The angle of the outwards vector.                     */  /*                                                                       */  /*    next      :: The next point in same contour.                       */  /*                                                                       */  /*    prev      :: The previous point in same contour.                   */  /*                                                                       */  struct AH_Point  {    AH_Flags      flags;    /* point flags used by hinter */    FT_Pos        ox, oy;    FT_Pos        fx, fy;    FT_Pos        x,  y;    FT_Pos        u,  v;    AH_Direction  in_dir;   /* direction of inwards vector  */    AH_Direction  out_dir;  /* direction of outwards vector */    AH_Angle      in_angle;    AH_Angle      out_angle;    AH_Point*     next;     /* next point in contour     */    AH_Point*     prev;     /* previous point in contour */  };  /*************************************************************************/  /*                                                                       */  /* <Struct>                                                              */  /*    AH_Segment                                                         */  /*                                                                       */  /* <Description>                                                         */  /*    A structure used to describe an edge segment to the auto-hinter.   */  /*    A segment is simply a sequence of successive points located on the */  /*    same horizontal or vertical `position', in a given direction.      */  /*                                                                       */  /* <Fields>                                                              */  /*    flags      :: The segment edge flags (straight, rounded, etc.).    */  /*                                                                       */  /*    dir        :: The segment direction.                               */  /*                                                                       */  /*    first      :: The first point in the segment.                      */  /*                                                                       */  /*    last       :: The last point in the segment.                       */  /*                                                                       */

⌨️ 快捷键说明

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