2018-06-03 09:01:17 +02:00
|
|
|
/****************************************************************************
|
|
|
|
*
|
|
|
|
* pshglob.h
|
|
|
|
*
|
|
|
|
* PostScript hinter global hinting management.
|
|
|
|
*
|
2019-02-23 10:07:09 +01:00
|
|
|
* Copyright (C) 2001-2019 by
|
2018-06-03 09:01:17 +02:00
|
|
|
* 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.
|
|
|
|
*
|
|
|
|
*/
|
2001-10-18 13:38:43 +02:00
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
|
2016-01-12 21:37:13 +01:00
|
|
|
#ifndef PSHGLOB_H_
|
|
|
|
#define PSHGLOB_H_
|
2001-12-05 02:22:05 +01:00
|
|
|
|
2001-10-18 13:38:43 +02:00
|
|
|
|
|
|
|
#include FT_FREETYPE_H
|
|
|
|
#include FT_INTERNAL_POSTSCRIPT_HINTS_H
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
|
2001-10-18 13:38:43 +02:00
|
|
|
FT_BEGIN_HEADER
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/***** *****/
|
|
|
|
/***** GLOBAL HINTS INTERNALS *****/
|
|
|
|
/***** *****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
|
|
|
|
|
2018-06-03 09:01:17 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* @constant:
|
|
|
|
* PS_GLOBALS_MAX_BLUE_ZONES
|
|
|
|
*
|
|
|
|
* @description:
|
|
|
|
* The maximum number of blue zones in a font global hints structure.
|
|
|
|
* See @PS_Globals_BluesRec.
|
|
|
|
*/
|
2001-12-05 02:22:05 +01:00
|
|
|
#define PS_GLOBALS_MAX_BLUE_ZONES 16
|
|
|
|
|
|
|
|
|
2018-06-03 09:01:17 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* @constant:
|
|
|
|
* PS_GLOBALS_MAX_STD_WIDTHS
|
|
|
|
*
|
|
|
|
* @description:
|
|
|
|
* The maximum number of standard and snap widths in either the
|
|
|
|
* horizontal or vertical direction. See @PS_Globals_WidthsRec.
|
|
|
|
*/
|
2001-12-05 02:22:05 +01:00
|
|
|
#define PS_GLOBALS_MAX_STD_WIDTHS 16
|
|
|
|
|
|
|
|
|
|
|
|
/* standard and snap width */
|
|
|
|
typedef struct PSH_WidthRec_
|
2001-10-18 13:38:43 +02:00
|
|
|
{
|
|
|
|
FT_Int org;
|
|
|
|
FT_Pos cur;
|
|
|
|
FT_Pos fit;
|
|
|
|
|
|
|
|
} PSH_WidthRec, *PSH_Width;
|
|
|
|
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
/* standard and snap widths table */
|
|
|
|
typedef struct PSH_WidthsRec_
|
2001-10-18 13:38:43 +02:00
|
|
|
{
|
|
|
|
FT_UInt count;
|
2001-12-05 02:22:05 +01:00
|
|
|
PSH_WidthRec widths[PS_GLOBALS_MAX_STD_WIDTHS];
|
2001-10-18 13:38:43 +02:00
|
|
|
|
|
|
|
} PSH_WidthsRec, *PSH_Widths;
|
|
|
|
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
typedef struct PSH_DimensionRec_
|
2001-10-18 13:38:43 +02:00
|
|
|
{
|
2002-03-06 07:05:56 +01:00
|
|
|
PSH_WidthsRec stdw;
|
2001-10-18 13:38:43 +02:00
|
|
|
FT_Fixed scale_mult;
|
|
|
|
FT_Fixed scale_delta;
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
} PSH_DimensionRec, *PSH_Dimension;
|
2001-10-18 13:38:43 +02:00
|
|
|
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
/* blue zone descriptor */
|
|
|
|
typedef struct PSH_Blue_ZoneRec_
|
2001-10-18 13:38:43 +02:00
|
|
|
{
|
2001-12-05 02:22:05 +01:00
|
|
|
FT_Int org_ref;
|
|
|
|
FT_Int org_delta;
|
|
|
|
FT_Int org_top;
|
|
|
|
FT_Int org_bottom;
|
|
|
|
|
|
|
|
FT_Pos cur_ref;
|
|
|
|
FT_Pos cur_delta;
|
|
|
|
FT_Pos cur_bottom;
|
|
|
|
FT_Pos cur_top;
|
2001-10-18 13:38:43 +02:00
|
|
|
|
|
|
|
} PSH_Blue_ZoneRec, *PSH_Blue_Zone;
|
|
|
|
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
typedef struct PSH_Blue_TableRec_
|
2001-10-18 13:38:43 +02:00
|
|
|
{
|
|
|
|
FT_UInt count;
|
2001-12-05 02:22:05 +01:00
|
|
|
PSH_Blue_ZoneRec zones[PS_GLOBALS_MAX_BLUE_ZONES];
|
|
|
|
|
2001-10-18 13:38:43 +02:00
|
|
|
} PSH_Blue_TableRec, *PSH_Blue_Table;
|
|
|
|
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
/* blue zones table */
|
|
|
|
typedef struct PSH_BluesRec_
|
2001-10-18 13:38:43 +02:00
|
|
|
{
|
|
|
|
PSH_Blue_TableRec normal_top;
|
|
|
|
PSH_Blue_TableRec normal_bottom;
|
|
|
|
PSH_Blue_TableRec family_top;
|
|
|
|
PSH_Blue_TableRec family_bottom;
|
2001-12-12 17:07:29 +01:00
|
|
|
|
2001-10-18 13:38:43 +02:00
|
|
|
FT_Fixed blue_scale;
|
2001-12-12 17:07:29 +01:00
|
|
|
FT_Int blue_shift;
|
|
|
|
FT_Int blue_threshold;
|
2002-07-09 01:13:25 +02:00
|
|
|
FT_Int blue_fuzz;
|
2001-12-12 17:07:29 +01:00
|
|
|
FT_Bool no_overshoots;
|
2001-10-18 13:38:43 +02:00
|
|
|
|
|
|
|
} PSH_BluesRec, *PSH_Blues;
|
|
|
|
|
|
|
|
|
2001-12-21 16:59:43 +01:00
|
|
|
/* font globals. */
|
|
|
|
/* dimension 0 => X coordinates + vertical hints/stems */
|
|
|
|
/* dimension 1 => Y coordinates + horizontal hints/stems */
|
2001-12-05 02:22:05 +01:00
|
|
|
typedef struct PSH_GlobalsRec_
|
2001-10-18 13:38:43 +02:00
|
|
|
{
|
|
|
|
FT_Memory memory;
|
|
|
|
PSH_DimensionRec dimension[2];
|
|
|
|
PSH_BluesRec blues;
|
|
|
|
|
|
|
|
} PSH_GlobalsRec;
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
|
* src/base/ftdbgmem.c (ft_mem_table_resize, ft_mem_table_new,
ft_mem_table_set, ft_mem_debug_alloc, ft_mem_debug_free,
ft_mem_debug_realloc, ft_mem_debug_done, FT_Alloc_Debug,
FT_Realloc_Debug, FT_Free_Debug): Fix compiler warnings.
* src/base/ftcalc.c (FT_MulFix): Ditto.
* src/cff/cffdrivr.c (cff_get_name_index): Ditto.
* src/cff/cffobjs.c (CFF_Size_Get_Global_Funcs, CFF_Size_Init,
CFF_GlyphSlot_Init): Ditto.
* src/cid/cidobjs.c (CID_GlyphSlot_Init,
CID_Size_Get_Globals_Funcs): Ditto.
* src/type1/t1objs.c (T1_Size_Get_Globals_Funcs, T1_GlyphSlot_Init):
Ditto.
* src/pshinter/pshmod.c (pshinter_interface): Use `static const'.
* src/winfonts/winfnt.c (FNT_Get_Next_Char): Remove unused
variables.
* include/freetype/internal/psaux.h (T1_Builder_Funcs): Renamed
to...
(T1_Builder_FuncsRec): This.
(T1_Builder_Funcs): New typedef.
(PSAux_Interface): Remove compiler warnings.
* src/psaux/psauxmod.c (t1_builder_funcs), src/psaux/psobjs.h
(t1_builder_funcs): Updated.
* src/pshinter/pshglob.h (PSH_Blue_Align): Replaced with ...
(PSH_BLUE_ALIGN_{NONE,TOP,BOT}): New defines.
(PSH_AlignmentRec): Updated.
* include/freetype/internal/ftstream.h (GET_Char, GET_Byte): Fix
typo.
* include/freetype/internal/ftgloadr.h (FT_SubGlyph): Ditto.
* src/base/ftstream (FT_Get_Char): Rename to...
(FT_Stream_Get_Char): This.
* src/base/ftnames.c (FT_Get_Sfnt_Name): s/index/idx/ -- `index' is
a built-in function in gcc, causing warning messages with gcc 3.0.
* src/autohint/ahglyph.c (ah_outline_load): Ditto.
* src/autohint/ahglobal.c (ah_hinter_compute_blues): Ditto.
* src/cache/ftcmanag.c (ftc_family_table_alloc,
ftc_family_table_free, FTC_Manager_Done, FTC_Manager_Register_Cache):
Ditto.
* src/cff/cffload.c (cff_new_index, cff_done_index,
cff_explicit_index, CFF_Access_Element, CFF_Forget_Element,
CFF_Get_Name, CFF_Get_String, CFF_Load_SubFont, CFF_Load_Font,
CFF_Done_Font): Ditto.
* src/psaux/psobjs.c (PS_Table_Add, PS_Parser_LoadField): Ditto.
* src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Ditto.
* src/pshinter/pshrec.c (ps_mask_test_bit, ps_mask_clear_bit,
ps_mask_set_bit, ps_dimension_add_t1stem, ps_hints_t1stem3,
* src/pshinter/pshalgo1.c (psh1_hint_table_record,
psh1_hint_table_record_mask, psh1_hint_table_activate_mask): Ditto.
* src/pshinter/pshalgo2.c (psh2_hint_table_record,
psh2_hint_table_record_mask, psh2_hint_table_activate_mask): Ditto.
* src/sfnt/ttpost.c (Load_Format_20, Load_Format_25,
TT_Get_PS_Name): Ditto.
* src/truetype/ttgload.c (TT_Get_Metrics, Get_HMetrics,
load_truetype_glyph): Ditto.
* src/type1/t1load.c (parse_subrs, T1_Open_Face): Ditto.
* src/type1/t1afm.c (T1_Get_Kerning): Ditto.
* include/freetype/cache/ftcmanag.h (ftc_family_table_free): Ditto.
2002-03-07 22:59:59 +01:00
|
|
|
#define PSH_BLUE_ALIGN_NONE 0
|
|
|
|
#define PSH_BLUE_ALIGN_TOP 1
|
|
|
|
#define PSH_BLUE_ALIGN_BOT 2
|
2001-10-18 13:38:43 +02:00
|
|
|
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
typedef struct PSH_AlignmentRec_
|
2001-10-18 13:38:43 +02:00
|
|
|
{
|
* src/base/ftdbgmem.c (ft_mem_table_resize, ft_mem_table_new,
ft_mem_table_set, ft_mem_debug_alloc, ft_mem_debug_free,
ft_mem_debug_realloc, ft_mem_debug_done, FT_Alloc_Debug,
FT_Realloc_Debug, FT_Free_Debug): Fix compiler warnings.
* src/base/ftcalc.c (FT_MulFix): Ditto.
* src/cff/cffdrivr.c (cff_get_name_index): Ditto.
* src/cff/cffobjs.c (CFF_Size_Get_Global_Funcs, CFF_Size_Init,
CFF_GlyphSlot_Init): Ditto.
* src/cid/cidobjs.c (CID_GlyphSlot_Init,
CID_Size_Get_Globals_Funcs): Ditto.
* src/type1/t1objs.c (T1_Size_Get_Globals_Funcs, T1_GlyphSlot_Init):
Ditto.
* src/pshinter/pshmod.c (pshinter_interface): Use `static const'.
* src/winfonts/winfnt.c (FNT_Get_Next_Char): Remove unused
variables.
* include/freetype/internal/psaux.h (T1_Builder_Funcs): Renamed
to...
(T1_Builder_FuncsRec): This.
(T1_Builder_Funcs): New typedef.
(PSAux_Interface): Remove compiler warnings.
* src/psaux/psauxmod.c (t1_builder_funcs), src/psaux/psobjs.h
(t1_builder_funcs): Updated.
* src/pshinter/pshglob.h (PSH_Blue_Align): Replaced with ...
(PSH_BLUE_ALIGN_{NONE,TOP,BOT}): New defines.
(PSH_AlignmentRec): Updated.
* include/freetype/internal/ftstream.h (GET_Char, GET_Byte): Fix
typo.
* include/freetype/internal/ftgloadr.h (FT_SubGlyph): Ditto.
* src/base/ftstream (FT_Get_Char): Rename to...
(FT_Stream_Get_Char): This.
* src/base/ftnames.c (FT_Get_Sfnt_Name): s/index/idx/ -- `index' is
a built-in function in gcc, causing warning messages with gcc 3.0.
* src/autohint/ahglyph.c (ah_outline_load): Ditto.
* src/autohint/ahglobal.c (ah_hinter_compute_blues): Ditto.
* src/cache/ftcmanag.c (ftc_family_table_alloc,
ftc_family_table_free, FTC_Manager_Done, FTC_Manager_Register_Cache):
Ditto.
* src/cff/cffload.c (cff_new_index, cff_done_index,
cff_explicit_index, CFF_Access_Element, CFF_Forget_Element,
CFF_Get_Name, CFF_Get_String, CFF_Load_SubFont, CFF_Load_Font,
CFF_Done_Font): Ditto.
* src/psaux/psobjs.c (PS_Table_Add, PS_Parser_LoadField): Ditto.
* src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Ditto.
* src/pshinter/pshrec.c (ps_mask_test_bit, ps_mask_clear_bit,
ps_mask_set_bit, ps_dimension_add_t1stem, ps_hints_t1stem3,
* src/pshinter/pshalgo1.c (psh1_hint_table_record,
psh1_hint_table_record_mask, psh1_hint_table_activate_mask): Ditto.
* src/pshinter/pshalgo2.c (psh2_hint_table_record,
psh2_hint_table_record_mask, psh2_hint_table_activate_mask): Ditto.
* src/sfnt/ttpost.c (Load_Format_20, Load_Format_25,
TT_Get_PS_Name): Ditto.
* src/truetype/ttgload.c (TT_Get_Metrics, Get_HMetrics,
load_truetype_glyph): Ditto.
* src/type1/t1load.c (parse_subrs, T1_Open_Face): Ditto.
* src/type1/t1afm.c (T1_Get_Kerning): Ditto.
* include/freetype/cache/ftcmanag.h (ftc_family_table_free): Ditto.
2002-03-07 22:59:59 +01:00
|
|
|
int align;
|
|
|
|
FT_Pos align_top;
|
|
|
|
FT_Pos align_bot;
|
2001-12-05 02:22:05 +01:00
|
|
|
|
2001-10-18 13:38:43 +02:00
|
|
|
} PSH_AlignmentRec, *PSH_Alignment;
|
|
|
|
|
|
|
|
|
2002-03-01 03:26:22 +01:00
|
|
|
FT_LOCAL( void )
|
2001-10-18 13:38:43 +02:00
|
|
|
psh_globals_funcs_init( PSH_Globals_FuncsRec* funcs );
|
|
|
|
|
|
|
|
|
2003-05-29 00:42:41 +02:00
|
|
|
#if 0
|
2001-12-05 02:22:05 +01:00
|
|
|
/* snap a stem width to fitter coordinates. `org_width' is in font */
|
|
|
|
/* units. The result is in device pixels (26.6 format). */
|
2002-03-01 03:26:22 +01:00
|
|
|
FT_LOCAL( FT_Pos )
|
2001-10-18 13:38:43 +02:00
|
|
|
psh_dimension_snap_width( PSH_Dimension dimension,
|
|
|
|
FT_Int org_width );
|
2003-05-29 00:42:41 +02:00
|
|
|
#endif
|
2001-10-18 13:38:43 +02:00
|
|
|
|
[Savannah bug #43682] Change some signatures to `void' return type.
* include/internal/pshints.h (PSH_Globals_SetScaleFunc),
include/internal/sfnt.h (TT_Get_Metrics_Func),
src/pshinter/pshglob.c (psh_globals_set_scale),
src/pshinter/pshrec.c (ps_hints_init), src/sfnt/ttmtx.c
(tt_face_get_metrics), src/truetype/ttinterp.c (TT_Goto_CodeRange,
TT_Set_CodeRange, TT_Clear_CodeRange, TT_Done_Context,
TT_Save_Context): Do it.
* src/pshinter/pshglob.h, src/pshinter/pshrec.h, src/sfnt/ttmtx.h,
src/truetype/ttgload.c (TT_Hint_Glyph), src/truetype/ttinterp.c
(TT_Run_Context), src/truetype/ttinterp.h, src/truetype/ttobjs.c
(tt_size_run_fpgm, tt_size_run_prep): Updated.
2014-11-25 08:14:15 +01:00
|
|
|
FT_LOCAL( void )
|
Avoid overwriting of numeric font dictionary entries for synthetic
fonts. Additionally, some entries were handled as `integer' instead
of `number'.
* include/freetype/internal/psaux.h (T1_FieldType): Add
T1_FIELD_TYPE_BOOL_P, T1_FIELD_TYPE_INTEGER_P, and
T1_FIELD_TYPE_FIXED_P.
(T1_FIELD_BOOL_P, T1_FIELD_NUM_P, T1_FIELD_FIXED_P): New macros.
* src/psaux/psobjs.c (ps_parser_load_field): Handle new field types.
* include/freetype/internal/cfftypes.h (CFF_FontRecDict),
src/cff/cfftoken.h: Change type of underline_position and
underline_thickness to FT_Fixed.
* src/cff/cffload.c (cff_subfont_load): Fix default values of
underline_position and underline_thickness.
* src/cff/cffobjs.c (cff_face_init): Set underline_position
and underline_thickness in `root'.
* include/freetype/internal/t1types.h (T1_Font): Change point_type
and stroke_width to pointers.
* include/freetype/t1tables.h (PS_FontInfo): Change italic_angle,
is_fixed_pitch, underline_position, and underline_thickness to
pointers.
* src/type1/t1tokens.h: Change italic_angle, is_fixed_pitch,
underline_position, and underline_thickness to pointers. Change
the type of the latter two to `fixed'.
Change type of stroke_width to `fixed' and make it a pointer.
Change paint_type to pointer.
* src/type1/t1objs.c (T1_Face_Done): Updated.
(T1_Face_Init): Updated.
Fix assignment of underline_position and underline_thickness.
* src/cid/cidtoken.h: Change italic_angle, is_fixed_pitch,
underline_position, and underline_thickness to pointers. Change
the type of the latter two to `fixed'.
Change type of stroke_width to `fixed'.
* src/cid/cidobjs.c (cid_face_done): Updated.
(cid_face_init): Updated.
Fix assignment of underline_position and underline_thickness.
* src/type42/t42parse.c: Change italic_angle, is_fixed_pitch,
underline_position, and underline_thickness to pointers. Change the
type of the latter two to `fixed'.
Change type of stroke_width to `fixed' and make it a pointer.
Change paint_type to pointer.
* src/type42/t42objs.c (T42_Face_Init): Updated.
Fix assignment of underline_position and underline_thickness.
(T42_Face_Done): Updated.
* src/base/ftobjs.c (open_face_from_buffer): Fix compiler warning.
* src/pshinter/pshglob.c, src/pshinter/pshglob.h
(psh_globals_set_scale): Make it a local function.
* test/gview.c: Fix remaming ps3->ps typo.
Formatting.
2003-05-30 11:12:50 +02:00
|
|
|
psh_globals_set_scale( PSH_Globals globals,
|
|
|
|
FT_Fixed x_scale,
|
|
|
|
FT_Fixed y_scale,
|
|
|
|
FT_Fixed x_delta,
|
|
|
|
FT_Fixed y_delta );
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
/* snap a stem to one or two blue zones */
|
2002-03-01 03:26:22 +01:00
|
|
|
FT_LOCAL( void )
|
2001-10-18 13:38:43 +02:00
|
|
|
psh_blues_snap_stem( PSH_Blues blues,
|
|
|
|
FT_Int stem_top,
|
|
|
|
FT_Int stem_bot,
|
|
|
|
PSH_Alignment alignment );
|
|
|
|
/* */
|
|
|
|
|
|
|
|
#ifdef DEBUG_HINTER
|
2001-12-05 02:22:05 +01:00
|
|
|
extern PSH_Globals ps_debug_globals;
|
|
|
|
#endif
|
|
|
|
|
2001-10-18 13:38:43 +02:00
|
|
|
|
|
|
|
FT_END_HEADER
|
|
|
|
|
2001-12-05 02:22:05 +01:00
|
|
|
|
2016-01-12 21:37:13 +01:00
|
|
|
#endif /* PSHGLOB_H_ */
|
2001-12-05 02:22:05 +01:00
|
|
|
|
|
|
|
|
|
|
|
/* END */
|