📄 t1gload.h
字号:
/******************************************************************* * * t1gload.h 1.0 * * Type1 Glyph Loader. * * 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. * * * The Type 1 glyph loader uses three distinct objects to build * scaled and hinted outlines from a charstrings program. These are : * * - a glyph builder, T1_Builder, used to store the built outline * * - a glyph hinter, T1_Hinter, used to record and apply the stem * hints * * - a charstrings interpreter, T1_Decoder, used to parse the * Type 1 charstrings stream, manage a stack and call the builder * and/or hinter depending on the opcodes. * * Ideally, a Type 2 glyph loader would only need to have its own * T2_Decoder object (assuming the hinter is able to manage all * kinds of hints). * ******************************************************************/#ifndef T1GLOAD_H#define T1GLOAD_H#include <t1objs.h>#ifdef __cplusplus extern "C" {#endif/*************************************************************************//* *//* <Structure> T1_Builder_Funcs *//* *//* <Description> *//* a structure used to store the address of various functions *//* used by a glyph builder to implement the outline's "path *//* construction". *//* *//* */ typedef struct T1_Builder_ T1_Builder; typedef T1_Error (*T1_Builder_EndChar)( T1_Builder* loader ); typedef T1_Error (*T1_Builder_Sbw) ( T1_Builder* loader, T1_Pos sbx, T1_Pos sby, T1_Pos wx, T1_Pos wy ); typedef T1_Error (*T1_Builder_ClosePath)( T1_Builder* loader ); typedef T1_Error (*T1_Builder_RLineTo)( T1_Builder* loader, T1_Pos dx, T1_Pos dy ); typedef T1_Error (*T1_Builder_RMoveTo)( T1_Builder* loader, T1_Pos dx, T1_Pos dy ); typedef T1_Error (*T1_Builder_RCurveTo)( T1_Builder* loader, T1_Pos dx1, T1_Pos dy1, T1_Pos dx2, T1_Pos dy2, T1_Pos dx3, T1_Pos dy3 ); typedef struct T1_Builder_Funcs_ { T1_Builder_EndChar end_char; T1_Builder_Sbw set_bearing_point; T1_Builder_ClosePath close_path; T1_Builder_RLineTo rline_to; T1_Builder_RMoveTo rmove_to; T1_Builder_RCurveTo rcurve_to; } T1_Builder_Funcs;/*************************************************************************//* *//* <Structure> T1_Builder *//* *//* <Description> *//* a structure used during glyph loading to store its outline. *//* *//* <Fields> *//* system :: current system object *//* face :: current face object *//* size :: current size object *//* glyph :: current glyph slot *//* *//* current :: current glyph outline *//* base :: base glyph outline *//* *//* max_points :: maximum points in builder outline *//* max_contours :: maximum contours in builder outline *//* *//* last :: last point position *//* *//* scale_x :: horizontal scale ( FUnits to sub-pixels ) *//* scale_y :: vertical scale ( FUnits to sub-pixels ) *//* pos_x :: horizontal translation (composite glyphs) *//* pos_y :: vertical translation (composite glyph) *//* *//* left_bearing :: left side bearing point *//* advance :: horizontal advance vector *//* *//* path_begun :: flag, indicates that a new path has begun *//* load_points :: flag, if not set, no points are loaded *//* *//* pass :: pass number for multi-pass hinters *//* *//* funcs :: table of builder functions used to perform *//* the outline's path construction *//* *//* hint_point :: index of next point to hint.. *//* *//* *//* *//* */ struct T1_Builder_ { FT_Memory memory; T1_Face face; T1_Size size; T1_GlyphSlot glyph; FT_Outline current; /* the current glyph outline */ FT_Outline base; /* the composite glyph outline */ T1_Int max_points; /* capacity of base outline in points */ T1_Int max_contours; /* capacity of base outline in contours */ T1_Vector last; T1_Fixed scale_x; T1_Fixed scale_y; T1_Pos pos_x; T1_Pos pos_y; T1_Vector left_bearing; T1_Vector advance; T1_BBox bbox; /* bounding box */ T1_Bool path_begun; T1_Bool load_points; T1_Int pass; T1_Int hint_point; /* path construction function interface */ T1_Builder_Funcs funcs; };/*************************************************************************//* *//* <Structure> T1_Hinter_Funcs *//* *//* <Description> *//* a structure used to store the address of various functions *//* used by a Type 1 hinter to perform outline hinting. *//* */ typedef T1_Error (*T1_Hinter_ChangeHints)( T1_Builder* builder ); typedef T1_Error (*T1_Hinter_DotSection)( T1_Builder* builder ); typedef T1_Error (*T1_Hinter_Stem)( T1_Builder* builder, T1_Pos pos, T1_Pos width, T1_Bool vertical ); typedef T1_Error (*T1_Hinter_Stem3)( T1_Builder* builder, T1_Pos pos0, T1_Pos width0, T1_Pos pos1, T1_Pos width1, T1_Pos pos2, T1_Pos width2, T1_Bool vertical ); typedef struct T1_Hinter_Func_ { T1_Hinter_ChangeHints change_hints; T1_Hinter_DotSection dot_section; T1_Hinter_Stem stem; T1_Hinter_Stem3 stem3; } T1_Hinter_Funcs; typedef enum T1_Operator_ { op_none = 0, op_endchar, op_hsbw, op_seac,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -