zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
cffgload.c File Reference
#include <ft2build.h>
#include <FT_INTERNAL_DEBUG_H>
#include <FT_INTERNAL_STREAM_H>
#include <FT_INTERNAL_SFNT_H>
#include <FT_OUTLINE_H>
#include "cffobjs.h"
#include "cffload.h"
#include "cffgload.h"
#include "cfferrs.h"

Go to the source code of this file.

Macros

#define CFF_COUNT_CHECK_WIDTH   0x80
 
#define CFF_COUNT_CLEAR_STACK   0x20
 
#define CFF_COUNT_EXACT   0x40
 
#define FT_COMPONENT   trace_cffgload
 

Typedefs

typedef enum CFF_Operator_ CFF_Operator
 

Enumerations

enum  CFF_Operator_ {
  cff_op_unknown = 0, cff_op_rmoveto, cff_op_hmoveto, cff_op_vmoveto,
  cff_op_rlineto, cff_op_hlineto, cff_op_vlineto, cff_op_rrcurveto,
  cff_op_hhcurveto, cff_op_hvcurveto, cff_op_rcurveline, cff_op_rlinecurve,
  cff_op_vhcurveto, cff_op_vvcurveto, cff_op_flex, cff_op_hflex,
  cff_op_hflex1, cff_op_flex1, cff_op_endchar, cff_op_hstem,
  cff_op_vstem, cff_op_hstemhm, cff_op_vstemhm, cff_op_hintmask,
  cff_op_cntrmask, cff_op_dotsection, cff_op_abs, cff_op_add,
  cff_op_sub, cff_op_div, cff_op_neg, cff_op_random,
  cff_op_mul, cff_op_sqrt, cff_op_blend, cff_op_drop,
  cff_op_exch, cff_op_index, cff_op_roll, cff_op_dup,
  cff_op_put, cff_op_get, cff_op_store, cff_op_load,
  cff_op_and, cff_op_or, cff_op_not, cff_op_eq,
  cff_op_ifelse, cff_op_callsubr, cff_op_callgsubr, cff_op_return,
  cff_op_hsbw, cff_op_closepath, cff_op_callothersubr, cff_op_pop,
  cff_op_seac, cff_op_sbw, cff_op_setcurrentpoint, cff_op_max
}
 

Functions

static FT_Error cff_builder_add_contour (CFF_Builder *builder)
 
static void cff_builder_add_point (CFF_Builder *builder, FT_Pos x, FT_Pos y, FT_Byte flag)
 
static FT_Error cff_builder_add_point1 (CFF_Builder *builder, FT_Pos x, FT_Pos y)
 
static void cff_builder_close_contour (CFF_Builder *builder)
 
static void cff_builder_done (CFF_Builder *builder)
 
static void cff_builder_init (CFF_Builder *builder, TT_Face face, CFF_Size size, CFF_GlyphSlot glyph, FT_Bool hinting)
 
static FT_Error cff_builder_start_point (CFF_Builder *builder, FT_Pos x, FT_Pos y)
 
static FT_Int cff_compute_bias (FT_Int in_charstring_type, FT_UInt num_subrs)
 
 cff_decoder_init (CFF_Decoder *decoder, TT_Face face, CFF_Size size, CFF_GlyphSlot slot, FT_Bool hinting, FT_Render_Mode hint_mode)
 
 cff_decoder_parse_charstrings (CFF_Decoder *decoder, FT_Byte *charstring_base, FT_ULong charstring_len)
 
 cff_decoder_prepare (CFF_Decoder *decoder, CFF_Size size, FT_UInt glyph_index)
 
static void cff_free_glyph_data (TT_Face face, FT_Byte **pointer, FT_ULong length)
 
static FT_Error cff_get_glyph_data (TT_Face face, FT_UInt glyph_index, FT_Byte **pointer, FT_ULong *length)
 
static FT_Int cff_lookup_glyph_by_stdcharcode (CFF_Font cff, FT_Int charcode)
 
static FT_Error cff_operator_seac (CFF_Decoder *decoder, FT_Pos asb, FT_Pos adx, FT_Pos ady, FT_Int bchar, FT_Int achar)
 
 cff_slot_load (CFF_GlyphSlot glyph, CFF_Size size, FT_UInt glyph_index, FT_Int32 load_flags)
 
static FT_Error check_points (CFF_Builder *builder, FT_Int count)
 

Variables

static const FT_Byte cff_argument_counts []
 

Macro Definition Documentation

#define CFF_COUNT_CHECK_WIDTH   0x80

Definition at line 125 of file cffgload.c.

Referenced by cff_decoder_parse_charstrings().

#define CFF_COUNT_CLEAR_STACK   0x20

Definition at line 127 of file cffgload.c.

#define CFF_COUNT_EXACT   0x40

Definition at line 126 of file cffgload.c.

#define FT_COMPONENT   trace_cffgload

Definition at line 39 of file cffgload.c.

Typedef Documentation

Enumeration Type Documentation

Enumerator
cff_op_unknown 
cff_op_rmoveto 
cff_op_hmoveto 
cff_op_vmoveto 
cff_op_rlineto 
cff_op_hlineto 
cff_op_vlineto 
cff_op_rrcurveto 
cff_op_hhcurveto 
cff_op_hvcurveto 
cff_op_rcurveline 
cff_op_rlinecurve 
cff_op_vhcurveto 
cff_op_vvcurveto 
cff_op_flex 
cff_op_hflex 
cff_op_hflex1 
cff_op_flex1 
cff_op_endchar 
cff_op_hstem 
cff_op_vstem 
cff_op_hstemhm 
cff_op_vstemhm 
cff_op_hintmask 
cff_op_cntrmask 
cff_op_dotsection 
cff_op_abs 
cff_op_add 
cff_op_sub 
cff_op_div 
cff_op_neg 
cff_op_random 
cff_op_mul 
cff_op_sqrt 
cff_op_blend 
cff_op_drop 
cff_op_exch 
cff_op_index 
cff_op_roll 
cff_op_dup 
cff_op_put 
cff_op_get 
cff_op_store 
cff_op_load 
cff_op_and 
cff_op_or 
cff_op_not 
cff_op_eq 
cff_op_ifelse 
cff_op_callsubr 
cff_op_callgsubr 
cff_op_return 
cff_op_hsbw 
cff_op_closepath 
cff_op_callothersubr 
cff_op_pop 
cff_op_seac 
cff_op_sbw 
cff_op_setcurrentpoint 
cff_op_max 

Definition at line 42 of file cffgload.c.

Function Documentation

static FT_Error cff_builder_add_point1 ( CFF_Builder builder,
FT_Pos  x,
FT_Pos  y 
)
static

Definition at line 499 of file cffgload.c.

References cff_builder_add_point(), check_points(), and error.

Referenced by cff_builder_start_point(), and cff_decoder_parse_charstrings().

static void cff_builder_done ( CFF_Builder builder)
static
static FT_Error cff_builder_start_point ( CFF_Builder builder,
FT_Pos  x,
FT_Pos  y 
)
static
static FT_Int cff_compute_bias ( FT_Int  in_charstring_type,
FT_UInt  num_subrs 
)
static

Definition at line 335 of file cffgload.c.

Referenced by cff_decoder_init(), and cff_decoder_prepare().

cff_decoder_parse_charstrings ( CFF_Decoder decoder,
FT_Byte charstring_base,
FT_ULong  charstring_len 
)

Definition at line 883 of file cffgload.c.

References T2_Hints_FuncsRec_::apply, CFF_Decoder_Zone_::base, cff_argument_counts, cff_builder_add_point(), cff_builder_add_point1(), cff_builder_close_contour(), cff_builder_start_point(), CFF_COUNT_CHECK_WIDTH, CFF_MAX_OPERANDS, CFF_MAX_SUBRS_CALLS, CFF_MAX_TRANS_ELEMENTS, cff_op_abs, cff_op_add, cff_op_and, cff_op_blend, cff_op_callgsubr, cff_op_callothersubr, cff_op_callsubr, cff_op_closepath, cff_op_cntrmask, cff_op_div, cff_op_dotsection, cff_op_drop, cff_op_dup, cff_op_endchar, cff_op_eq, cff_op_exch, cff_op_flex, cff_op_flex1, cff_op_get, cff_op_hflex, cff_op_hflex1, cff_op_hhcurveto, cff_op_hintmask, cff_op_hlineto, cff_op_hmoveto, cff_op_hsbw, cff_op_hstem, cff_op_hstemhm, cff_op_hvcurveto, cff_op_ifelse, cff_op_index, cff_op_load, cff_op_mul, cff_op_neg, cff_op_not, cff_op_or, cff_op_pop, cff_op_put, cff_op_random, cff_op_rcurveline, cff_op_return, cff_op_rlinecurve, cff_op_rlineto, cff_op_rmoveto, cff_op_roll, cff_op_rrcurveto, cff_op_sbw, cff_op_seac, cff_op_setcurrentpoint, cff_op_sqrt, cff_op_store, cff_op_sub, cff_op_unknown, cff_op_vhcurveto, cff_op_vlineto, cff_op_vmoveto, cff_op_vstem, cff_op_vstemhm, cff_op_vvcurveto, cff_operator_seac(), check_points(), T2_Hints_FuncsRec_::close, T2_Hints_FuncsRec_::counter, CFF_Builder_::current, CFF_Decoder_Zone_::cursor, error, FT_Bool, FT_DivFix(), FT_ERROR, FT_GlyphLoader_Add(), FT_MulFix(), FT_Pos, FT_TRACE4, FT_ULONG_MAX, T2_Hints_FuncsRec_::hintmask, T2_Hints_FuncsRec_::hints, CFF_Builder_::hints_funcs, CFF_Builder_::hints_globals, i, idx, if(), CFF_Decoder_Zone_::limit, CFF_Builder_::loader, FT_Outline_::n_points, T2_Hints_FuncsRec_::open, CFF_Builder_::path_begun, CFF_Builder_::pos_x, CFF_Builder_::pos_y, and T2_Hints_FuncsRec_::stems.

Referenced by cff_operator_seac(), and cff_slot_load().

static FT_Error cff_get_glyph_data ( TT_Face  face,
FT_UInt  glyph_index,
FT_Byte **  pointer,
FT_ULong length 
)
static
static FT_Int cff_lookup_glyph_by_stdcharcode ( CFF_Font  cff,
FT_Int  charcode 
)
static
cff_slot_load ( CFF_GlyphSlot  glyph,
CFF_Size  size,
FT_UInt  glyph_index,
FT_Int32  load_flags 
)

Definition at line 2580 of file cffgload.c.

References CFF_Builder_::advance, FT_Incremental_MetricsRec_::advance, FT_Incremental_MetricsRec_::advance_v, TT_HoriHeader_::Ascender, FT_Incremental_MetricsRec_::bearing_x, FT_Incremental_MetricsRec_::bearing_y, CFF_Decoder_::builder, cff_builder_done(), cff_charset_cid_to_gindex(), cff_decoder_init(), cff_decoder_parse_charstrings(), cff_decoder_prepare(), cff_fd_select_get(), cff_free_glyph_data(), cff_get_glyph_data(), CFF_FontRec_::charset, CFF_FontRec_::charstrings_index, CFF_FontRecDictRec_::cid_registry, CFF_CharsetRec_::cids, FT_Generic_::data, TT_HoriHeader_::Descender, error, TT_FaceRec_::extra, FALSE, CFF_FontRec_::fd_select, CFF_SubFontRec_::font_dict, CFF_FontRecDictRec_::font_matrix, CFF_FontRecDictRec_::font_offset, FT_Bool, FT_BOOL, FT_GLYPH_FORMAT_OUTLINE, FT_LOAD_ADVANCE_ONLY, FT_LOAD_NO_BITMAP, FT_LOAD_NO_HINTING, FT_LOAD_NO_RECURSE, FT_LOAD_NO_SCALE, FT_LOAD_SBITS_ONLY, FT_LOAD_TARGET_MODE, FT_LOAD_VERTICAL_LAYOUT, FT_MulDiv(), FT_MulFix(), FT_Outline_Get_CBox(), FT_OUTLINE_HIGH_PRECISION, FT_OUTLINE_REVERSE_FILL, FT_Outline_Transform(), FT_Outline_Translate(), FT_Pos, ft_synthesize_vertical_metrics(), FT_Vector_Transform(), CFF_Decoder_::glyph_width, TT_SBit_MetricsRec_::height, CFF_Builder_::hints_funcs, TT_SBit_MetricsRec_::horiAdvance, TT_SBit_MetricsRec_::horiBearingX, TT_SBit_MetricsRec_::horiBearingY, TT_FaceRec_::horizontal, FT_FaceRec_::internal, CFF_Builder_::left_bearing, TT_VertHeader_::long_metrics, FT_Outline_::n_points, CFF_Builder_::no_recurse, CFF_FontRec_::num_glyphs, CFF_FontRec_::num_subfonts, TT_VertHeader_::number_Of_VMetrics, TT_FaceRec_::os2, FT_Outline_::points, TT_FaceRec_::root, TT_FaceRec_::sfnt, FT_FaceRec_::stream, TT_OS2_::sTypoAscender, TT_OS2_::sTypoDescender, CFF_FontRec_::subfonts, CFF_FontRec_::top_font, TRUE, CFF_FontRecDictRec_::units_per_em, vec, TT_OS2_::version, TT_SBit_MetricsRec_::vertAdvance, TT_SBit_MetricsRec_::vertBearingX, TT_SBit_MetricsRec_::vertBearingY, TT_FaceRec_::vertical, TT_FaceRec_::vertical_info, TT_SBit_MetricsRec_::width, CFF_Decoder_::width_only, FT_Vector_::x, FT_BBox_::xMax, FT_BBox_::xMin, FT_Matrix_::xx, FT_Matrix_::xy, FT_Vector_::y, FT_BBox_::yMax, FT_BBox_::yMin, FT_Matrix_::yx, and FT_Matrix_::yy.

Referenced by cff_glyph_load().

static FT_Error check_points ( CFF_Builder builder,
FT_Int  count 
)
static

Variable Documentation

const FT_Byte cff_argument_counts[]
static

Definition at line 135 of file cffgload.c.

Referenced by cff_decoder_parse_charstrings().