-/***************************************************************************/
-/* */
-/* cffgload.h */
-/* */
-/* OpenType Glyph Loader (specification). */
-/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 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. */
-/* */
-/***************************************************************************/
-
-
-#ifndef __CFFGLOAD_H__
-#define __CFFGLOAD_H__
-
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include "cffobjs.h"
-
-
-FT_BEGIN_HEADER
-
-
-#define CFF_MAX_OPERANDS 48
-#define CFF_MAX_SUBRS_CALLS 32
-
-
- /*************************************************************************/
- /* */
- /* <Structure> */
- /* CFF_Builder */
- /* */
- /* <Description> */
- /* A structure used during glyph loading to store its outline. */
- /* */
- /* <Fields> */
- /* memory :: The current memory object. */
- /* */
- /* face :: The current face object. */
- /* */
- /* glyph :: The current glyph slot. */
- /* */
- /* loader :: The current glyph loader. */
- /* */
- /* base :: The base glyph outline. */
- /* */
- /* current :: The current glyph outline. */
- /* */
- /* last :: The last point position. */
- /* */
- /* scale_x :: The horizontal scale (FUnits to sub-pixels). */
- /* */
- /* scale_y :: The vertical scale (FUnits to sub-pixels). */
- /* */
- /* pos_x :: The horizontal translation (if composite glyph). */
- /* */
- /* pos_y :: The vertical translation (if composite glyph). */
- /* */
- /* left_bearing :: The left side bearing point. */
- /* */
- /* advance :: The horizontal advance vector. */
- /* */
- /* bbox :: Unused. */
- /* */
- /* path_begun :: A flag which indicates that a new path has begun. */
- /* */
- /* load_points :: If this flag is not set, no points are loaded. */
- /* */
- /* no_recurse :: Set but not used. */
- /* */
- /* metrics_only :: A boolean indicating that we only want to compute */
- /* the metrics of a given glyph, not load all of its */
- /* points. */
- /* */
- /* hints_funcs :: Auxiliary pointer for hinting. */
- /* */
- /* hints_globals :: Auxiliary pointer for hinting. */
- /* */
- typedef struct CFF_Builder_
- {
- FT_Memory memory;
- TT_Face face;
- CFF_GlyphSlot glyph;
- FT_GlyphLoader loader;
- FT_Outline* base;
- FT_Outline* current;
-
- FT_Vector last;
-
- FT_Fixed scale_x;
- FT_Fixed scale_y;
-
- FT_Pos pos_x;
- FT_Pos pos_y;
-
- FT_Vector left_bearing;
- FT_Vector advance;
-
- FT_BBox bbox; /* bounding box */
- FT_Bool path_begun;
- FT_Bool load_points;
- FT_Bool no_recurse;
-
- FT_Bool metrics_only;
-
- void* hints_funcs; /* hinter-specific */
- void* hints_globals; /* hinter-specific */
-
- } CFF_Builder;
-
-
- /* execution context charstring zone */
-
- typedef struct CFF_Decoder_Zone_
- {
- FT_Byte* base;
- FT_Byte* limit;
- FT_Byte* cursor;
-
- } CFF_Decoder_Zone;
-
-
- typedef struct CFF_Decoder_
- {
- CFF_Builder builder;
- CFF_Font cff;
-
- FT_Fixed stack[CFF_MAX_OPERANDS + 1];
- FT_Fixed* top;
-
- CFF_Decoder_Zone zones[CFF_MAX_SUBRS_CALLS + 1];
- CFF_Decoder_Zone* zone;
-
- FT_Int flex_state;
- FT_Int num_flex_vectors;
- FT_Vector flex_vectors[7];
-
- FT_Pos glyph_width;
- FT_Pos nominal_width;
-
- FT_Bool read_width;
- FT_Int num_hints;
- FT_Fixed* buildchar;
- FT_Int len_buildchar;
-
- FT_UInt num_locals;
- FT_UInt num_globals;
-
- FT_Int locals_bias;
- FT_Int globals_bias;
-
- FT_Byte** locals;
- FT_Byte** globals;
-
- FT_Byte** glyph_names; /* for pure CFF fonts only */
- FT_UInt num_glyphs; /* number of glyphs in font */
-
- FT_Render_Mode hint_mode;
-
- } CFF_Decoder;
-
-
- FT_LOCAL( void )
- cff_decoder_init( CFF_Decoder* decoder,
- TT_Face face,
- CFF_Size size,
- CFF_GlyphSlot slot,
- FT_Bool hinting,
- FT_Render_Mode hint_mode );
-
- FT_LOCAL( FT_Error )
- cff_decoder_prepare( CFF_Decoder* decoder,
- FT_UInt glyph_index );
-
-#if 0 /* unused until we support pure CFF fonts */
-
- /* Compute the maximum advance width of a font through quick parsing */
- FT_LOCAL( FT_Error )
- cff_compute_max_advance( TT_Face face,
- FT_Int* max_advance );
-
-#endif /* 0 */
-
- FT_LOCAL( FT_Error )
- cff_decoder_parse_charstrings( CFF_Decoder* decoder,
- FT_Byte* charstring_base,
- FT_ULong charstring_len );
-
- FT_LOCAL( FT_Error )
- cff_slot_load( CFF_GlyphSlot glyph,
- CFF_Size size,
- FT_UInt glyph_index,
- FT_Int32 load_flags );
-
-
-FT_END_HEADER
-
-#endif /* __CFFGLOAD_H__ */
-
-
-/* END */
+/***************************************************************************/\r
+/* */\r
+/* cffgload.h */\r
+/* */\r
+/* OpenType Glyph Loader (specification). */\r
+/* */\r
+/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by */\r
+/* David Turner, Robert Wilhelm, and Werner Lemberg. */\r
+/* */\r
+/* This file is part of the FreeType project, and may only be used, */\r
+/* modified, and distributed under the terms of the FreeType project */\r
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */\r
+/* this file you indicate that you have read the license and */\r
+/* understand and accept it fully. */\r
+/* */\r
+/***************************************************************************/\r
+\r
+\r
+#ifndef __CFFGLOAD_H__\r
+#define __CFFGLOAD_H__\r
+\r
+\r
+#include <ft2build.h>\r
+#include FT_FREETYPE_H\r
+#include "cffobjs.h"\r
+\r
+\r
+FT_BEGIN_HEADER\r
+\r
+\r
+#define CFF_MAX_OPERANDS 48\r
+#define CFF_MAX_SUBRS_CALLS 32\r
+\r
+\r
+ /*************************************************************************/\r
+ /* */\r
+ /* <Structure> */\r
+ /* CFF_Builder */\r
+ /* */\r
+ /* <Description> */\r
+ /* A structure used during glyph loading to store its outline. */\r
+ /* */\r
+ /* <Fields> */\r
+ /* memory :: The current memory object. */\r
+ /* */\r
+ /* face :: The current face object. */\r
+ /* */\r
+ /* glyph :: The current glyph slot. */\r
+ /* */\r
+ /* loader :: The current glyph loader. */\r
+ /* */\r
+ /* base :: The base glyph outline. */\r
+ /* */\r
+ /* current :: The current glyph outline. */\r
+ /* */\r
+ /* last :: The last point position. */\r
+ /* */\r
+ /* scale_x :: The horizontal scale (FUnits to sub-pixels). */\r
+ /* */\r
+ /* scale_y :: The vertical scale (FUnits to sub-pixels). */\r
+ /* */\r
+ /* pos_x :: The horizontal translation (if composite glyph). */\r
+ /* */\r
+ /* pos_y :: The vertical translation (if composite glyph). */\r
+ /* */\r
+ /* left_bearing :: The left side bearing point. */\r
+ /* */\r
+ /* advance :: The horizontal advance vector. */\r
+ /* */\r
+ /* bbox :: Unused. */\r
+ /* */\r
+ /* path_begun :: A flag which indicates that a new path has begun. */\r
+ /* */\r
+ /* load_points :: If this flag is not set, no points are loaded. */\r
+ /* */\r
+ /* no_recurse :: Set but not used. */\r
+ /* */\r
+ /* metrics_only :: A boolean indicating that we only want to compute */\r
+ /* the metrics of a given glyph, not load all of its */\r
+ /* points. */\r
+ /* */\r
+ /* hints_funcs :: Auxiliary pointer for hinting. */\r
+ /* */\r
+ /* hints_globals :: Auxiliary pointer for hinting. */\r
+ /* */\r
+ typedef struct CFF_Builder_\r
+ {\r
+ FT_Memory memory;\r
+ TT_Face face;\r
+ CFF_GlyphSlot glyph;\r
+ FT_GlyphLoader loader;\r
+ FT_Outline* base;\r
+ FT_Outline* current;\r
+\r
+ FT_Vector last;\r
+\r
+ FT_Fixed scale_x;\r
+ FT_Fixed scale_y;\r
+\r
+ FT_Pos pos_x;\r
+ FT_Pos pos_y;\r
+\r
+ FT_Vector left_bearing;\r
+ FT_Vector advance;\r
+\r
+ FT_BBox bbox; /* bounding box */\r
+ FT_Bool path_begun;\r
+ FT_Bool load_points;\r
+ FT_Bool no_recurse;\r
+\r
+ FT_Bool metrics_only;\r
+\r
+ void* hints_funcs; /* hinter-specific */\r
+ void* hints_globals; /* hinter-specific */\r
+\r
+ } CFF_Builder;\r
+\r
+\r
+ /* execution context charstring zone */\r
+\r
+ typedef struct CFF_Decoder_Zone_\r
+ {\r
+ FT_Byte* base;\r
+ FT_Byte* limit;\r
+ FT_Byte* cursor;\r
+\r
+ } CFF_Decoder_Zone;\r
+\r
+\r
+ typedef struct CFF_Decoder_\r
+ {\r
+ CFF_Builder builder;\r
+ CFF_Font cff;\r
+\r
+ FT_Fixed stack[CFF_MAX_OPERANDS + 1];\r
+ FT_Fixed* top;\r
+\r
+ CFF_Decoder_Zone zones[CFF_MAX_SUBRS_CALLS + 1];\r
+ CFF_Decoder_Zone* zone;\r
+\r
+ FT_Int flex_state;\r
+ FT_Int num_flex_vectors;\r
+ FT_Vector flex_vectors[7];\r
+\r
+ FT_Pos glyph_width;\r
+ FT_Pos nominal_width;\r
+\r
+ FT_Bool read_width;\r
+ FT_Int num_hints;\r
+ FT_Fixed* buildchar;\r
+ FT_Int len_buildchar;\r
+\r
+ FT_UInt num_locals;\r
+ FT_UInt num_globals;\r
+\r
+ FT_Int locals_bias;\r
+ FT_Int globals_bias;\r
+\r
+ FT_Byte** locals;\r
+ FT_Byte** globals;\r
+\r
+ FT_Byte** glyph_names; /* for pure CFF fonts only */\r
+ FT_UInt num_glyphs; /* number of glyphs in font */\r
+\r
+ FT_Render_Mode hint_mode;\r
+\r
+ } CFF_Decoder;\r
+\r
+\r
+ FT_LOCAL( void )\r
+ cff_decoder_init( CFF_Decoder* decoder,\r
+ TT_Face face,\r
+ CFF_Size size,\r
+ CFF_GlyphSlot slot,\r
+ FT_Bool hinting,\r
+ FT_Render_Mode hint_mode );\r
+\r
+ FT_LOCAL( FT_Error )\r
+ cff_decoder_prepare( CFF_Decoder* decoder,\r
+ FT_UInt glyph_index );\r
+\r
+#if 0 /* unused until we support pure CFF fonts */\r
+\r
+ /* Compute the maximum advance width of a font through quick parsing */\r
+ FT_LOCAL( FT_Error )\r
+ cff_compute_max_advance( TT_Face face,\r
+ FT_Int* max_advance );\r
+\r
+#endif /* 0 */\r
+\r
+ FT_LOCAL( FT_Error )\r
+ cff_decoder_parse_charstrings( CFF_Decoder* decoder,\r
+ FT_Byte* charstring_base,\r
+ FT_ULong charstring_len );\r
+\r
+ FT_LOCAL( FT_Error )\r
+ cff_slot_load( CFF_GlyphSlot glyph,\r
+ CFF_Size size,\r
+ FT_UInt glyph_index,\r
+ FT_Int32 load_flags );\r
+\r
+\r
+FT_END_HEADER\r
+\r
+#endif /* __CFFGLOAD_H__ */\r
+\r
+\r
+/* END */\r