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;
627 x3 =
module->darken_params[4];
628 y3 =
module->darken_params[5];
629 x4 =
module->darken_params[6];
630 y4 =
module->darken_params[7];
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
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 _In_ LONG _In_ LONG x2
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2