25#include FT_INTERNAL_CALC_H
36 loader->hints =
hints;
53 if ( !loader->globals )
60 face->autohint.finalizer =
75 loader->globals =
NULL;
80#define af_intToFixed( i ) \
81 ( (FT_Fixed)( (FT_UInt32)(i) << 16 ) )
82#define af_fixedToInt( x ) \
83 ( (FT_Short)( ( (FT_UInt32)(x) + 0x8000U ) >> 16 ) )
84#define af_floatToFixed( f ) \
85 ( (FT_Fixed)( (f) * 65536.0 + 0.5 ) )
110 FT_Matrix scale_down_matrix = { 0x10000L, 0, 0, 0x10000L };
114 if ( !
face->units_per_EM )
125 writing_system_class =
141 FT_Fixed darken_by_font_units_x, darken_x;
144 darken_by_font_units_x =
160 FT_Fixed darken_by_font_units_y, darken_y;
163 darken_by_font_units_y =
217 FT_Int32 load_flags )
230 FT_UInt style_options = AF_STYLE_NONE_DFLT;
236 return FT_THROW( Invalid_Size_Handle );
250#ifdef AF_CONFIG_OPTION_TT_SIZE_METRICS
269 face->units_per_EM );
271 face->units_per_EM );
303#ifdef FT_OPTION_AUTOFIT2
305 if ( load_flags & ( 1UL << 20 ) )
306 style_options = AF_STYLE_LTN2_DFLT;
316 style_options, &style_metrics );
321 writing_system_class =
324 loader->metrics = style_metrics;
329 style_metrics->
scaler = scaler;
349 load_flags &= ~FT_LOAD_RENDER;
381 ( !
face->internal->no_stem_darkening ||
382 (
face->internal->no_stem_darkening < 0 &&
383 !
module->no_stem_darkening ) ) )
387 if ( loader->transformed )
395 inverse = loader->trans_matrix;
400 switch (
slot->format )
404 if ( loader->transformed )
406 loader->trans_delta.x,
407 loader->trans_delta.y );
411 loader->pp1.x =
hints->x_delta;
412 loader->pp1.y =
hints->y_delta;
415 loader->pp2.y =
hints->y_delta;
418 if (
slot->outline.n_points == 0 )
454 FT_Pos pp1x_uh = new_lsb - old_lsb;
470 if ( loader->pp1.x >= new_lsb && old_lsb > 0 )
473 if ( loader->pp2.x <= edge2->
pos && old_rsb > 0 )
476 slot->lsb_delta = loader->pp1.x - pp1x_uh;
477 slot->rsb_delta = loader->pp2.x - pp2x_uh;
481 FT_Pos pp1x = loader->pp1.x;
482 FT_Pos pp2x = loader->pp2.x;
488 slot->lsb_delta = loader->pp1.x - pp1x;
489 slot->rsb_delta = loader->pp2.x - pp2x;
496 FT_Pos pp1x = loader->pp1.x;
497 FT_Pos pp2x = loader->pp2.x;
503 slot->lsb_delta = loader->pp1.x - pp1x;
504 slot->rsb_delta = loader->pp2.x - pp2x;
520 vvector.
x =
slot->metrics.vertBearingX -
slot->metrics.horiBearingX;
521 vvector.
y =
slot->metrics.vertBearingY -
slot->metrics.horiBearingY;
526 if ( loader->transformed )
560 slot->metrics.horiAdvance =
572 if (
slot->metrics.horiAdvance )
573 slot->metrics.horiAdvance = loader->pp2.x - loader->pp1.x;
606 FT_Fixed stem_width, stem_width_per_1000, scaled_stem, darken_amount;
613 units_per_EM =
face->units_per_EM;
635 stem_width_per_1000 = stem_width;
640 stem_width_per_1000 =
FT_MulFix( stem_width, em_ratio );
643 log_base_2 =
FT_MSB( (FT_UInt32)stem_width_per_1000 ) +
644 FT_MSB( (FT_UInt32)ppem );
646 if ( log_base_2 >= 46 )
652 scaled_stem =
FT_MulFix( stem_width_per_1000, ppem );
662 FT_Int x = stem_width_per_1000 -
669 darken_amount =
FT_MulDiv(
x, ydelta, xdelta ) +
679 FT_Int x = stem_width_per_1000 -
686 darken_amount =
FT_MulDiv(
x, ydelta, xdelta ) +
697 FT_Int x = stem_width_per_1000 -
704 darken_amount =
FT_MulDiv(
x, ydelta, xdelta ) +
af_face_globals_is_digit(AF_FaceGlobals globals, FT_UInt gindex)
af_face_globals_new(FT_Face face, AF_FaceGlobals *aglobals, AF_Module module)
af_face_globals_free(AF_FaceGlobals globals)
af_face_globals_get_metrics(AF_FaceGlobals globals, FT_UInt gindex, FT_UInt options, AF_StyleMetrics *ametrics)
af_writing_system_classes[]
#define AF_HINTS_DO_ADVANCE(h)
#define af_floatToFixed(f)
af_loader_init(AF_Loader loader, AF_GlyphHints hints)
static FT_Error af_loader_embolden_glyph_in_slot(AF_Loader loader, FT_Face face, AF_StyleMetrics style_metrics)
af_loader_compute_darkening(AF_Loader loader, FT_Face face, FT_Pos standard_width)
af_loader_load_glyph(AF_Loader loader, AF_Module module, FT_Face face, FT_UInt glyph_index, FT_Int32 load_flags)
af_loader_reset(AF_Loader loader, AF_Module module, FT_Face face)
af_loader_done(AF_Loader loader)
FT_BEGIN_HEADER struct AF_LoaderRec_ * AF_Loader
FT_BEGIN_HEADER struct AF_ModuleRec_ * AF_Module
struct AF_FaceGlobalsRec_ * AF_FaceGlobals
FT_Load_Glyph(FT_Face face, FT_UInt glyph_index, FT_Int32 load_flags)
#define FT_LOAD_TARGET_MODE(x)
#define FT_LOAD_IGNORE_TRANSFORM
FT_DivFix(FT_Long a, FT_Long b)
#define FT_IS_FIXED_WIDTH(face)
FT_Vector_Transform(FT_Vector *vector, const FT_Matrix *matrix)
#define FT_LOAD_LINEAR_DESIGN
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
FT_MulFix(FT_Long a, FT_Long b)
FT_Matrix_Invert(FT_Matrix *matrix)
FT_BEGIN_HEADER typedef signed long FT_Pos
FT_Outline_EmboldenXY(FT_Outline *outline, FT_Pos xstrength, FT_Pos ystrength)
FT_Outline_Translate(const FT_Outline *outline, FT_Pos xOffset, FT_Pos yOffset)
FT_Outline_Transform(const FT_Outline *outline, const FT_Matrix *matrix)
FT_Outline_Get_CBox(const FT_Outline *outline, FT_BBox *acbox)
smooth FT_Module_Constructor FT_Module_Destructor FT_Module_Requester FT_GLYPH_FORMAT_OUTLINE
FT_BEGIN_HEADER typedef unsigned char FT_Bool
void(* FT_Generic_Finalizer)(void *object)
GLint GLint GLint GLint GLint x
GLenum GLuint GLint GLenum face
static float int float int float int x3
static float int float int float int float int x4
static float int float int float int float y3
static float int float int float int float int float y4
namespace GUID const ADDRINFOEXW * hints
FT_UShort stem_darkening_for_ppem
FT_Pos standard_horizontal_width
FT_Pos standard_vertical_width
FT_Fixed scale_down_factor
FT_Render_Mode render_mode
AF_WritingSystem writing_system
FT_Bool digits_have_same_width
AF_StyleClass style_class
AF_WritingSystem_InitHintsFunc style_hints_init
AF_WritingSystem_GetStdWidthsFunc style_metrics_getstdw
AF_WritingSystem_ScaleMetricsFunc style_metrics_scale
AF_WritingSystem_ApplyHintsFunc style_hints_apply
FT_Size_Metrics autohint_metrics
FT_Render_Mode autohint_mode
FT_Bool glyph_transformed
IMAGEHLP_MODULEW64 module
T1_FIELD_DICT_PRIVATE T1_FIELD_DICT_PRIVATE T1_FIELD_DICT_PRIVATE T1_FIELD_DICT_PRIVATE T1_FIELD_DICT_PRIVATE standard_width
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG x2