2005-03-03 18:09:08 +01:00
|
|
|
/***************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* aftypes.h */
|
|
|
|
/* */
|
|
|
|
/* Auto-fitter types (specification only). */
|
|
|
|
/* */
|
2017-01-04 20:16:34 +01:00
|
|
|
/* Copyright 2003-2017 by */
|
2005-03-03 18:09:08 +01: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. */
|
|
|
|
/* */
|
|
|
|
/***************************************************************************/
|
|
|
|
|
|
|
|
|
2006-02-10 23:15:22 +01:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
|
|
|
* The auto-fitter is a complete rewrite of the old auto-hinter.
|
|
|
|
* Its main feature is the ability to differentiate between different
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
* writing systems and scripts in order to apply specific rules.
|
2006-02-10 23:15:22 +01:00
|
|
|
*
|
2016-04-09 05:21:34 +02:00
|
|
|
* The code has also been compartmentalized into several entities that
|
2006-02-10 23:15:22 +01:00
|
|
|
* should make algorithmic experimentation easier than with the old
|
|
|
|
* code.
|
|
|
|
*
|
|
|
|
*************************************************************************/
|
2005-03-03 18:09:08 +01:00
|
|
|
|
|
|
|
|
2016-01-12 21:37:13 +01:00
|
|
|
#ifndef AFTYPES_H_
|
|
|
|
#define AFTYPES_H_
|
2004-03-27 09:43:17 +01:00
|
|
|
|
|
|
|
#include <ft2build.h>
|
2005-03-03 18:09:08 +01:00
|
|
|
|
2004-03-27 09:43:17 +01:00
|
|
|
#include FT_FREETYPE_H
|
|
|
|
#include FT_OUTLINE_H
|
|
|
|
#include FT_INTERNAL_OBJECTS_H
|
|
|
|
#include FT_INTERNAL_DEBUG_H
|
|
|
|
|
2013-08-25 08:23:22 +02:00
|
|
|
#include "afblue.h"
|
|
|
|
|
Better support of user-supplied C++ namespaces.
See
http://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html
for a rationale.
* src/autofit/afpic.h, src/base/basepic.h, src/cff/cffpic.h,
src/pshinter/pshpic.h, src/psnames/pspic.h, src/raster/rastpic.h,
src/sfnt/sfntpic.h, src/smooth/ftspic.h, src/truetype/ttpic.h
(FT_BEGIN_HEADER, FT_END_HEADER): Move macro calls to not enclose
header files that contain FT_{BEGIN,END}_HEADER macros by
themselves.
* src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include
FT_CONFIG_STANDARD_LIBRARY_H earlier.
* src/truetype/ttpic.h: Include FT_INTERNL_PIC_H.
2015-07-09 15:10:31 +02:00
|
|
|
#ifdef FT_DEBUG_AUTOFIT
|
|
|
|
#include FT_CONFIG_STANDARD_LIBRARY_H
|
|
|
|
#endif
|
|
|
|
|
2005-03-03 18:09:08 +01:00
|
|
|
|
2004-03-27 09:43:17 +01:00
|
|
|
FT_BEGIN_HEADER
|
|
|
|
|
2005-03-03 18:09:08 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/***** *****/
|
|
|
|
/***** D E B U G G I N G *****/
|
|
|
|
/***** *****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2011-04-18 19:05:28 +02:00
|
|
|
#ifdef FT_DEBUG_AUTOFIT
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2006-11-03 10:40:12 +01:00
|
|
|
extern int _af_debug_disable_horz_hints;
|
|
|
|
extern int _af_debug_disable_vert_hints;
|
|
|
|
extern int _af_debug_disable_blue_hints;
|
2006-11-02 17:37:35 +01:00
|
|
|
extern void* _af_debug_hints;
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2011-04-18 19:05:28 +02:00
|
|
|
#endif /* FT_DEBUG_AUTOFIT */
|
2004-03-27 09:43:17 +01:00
|
|
|
|
|
|
|
|
2005-03-03 18:09:08 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/***** *****/
|
|
|
|
/***** U T I L I T Y S T U F F *****/
|
|
|
|
/***** *****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
|
|
|
|
typedef struct AF_WidthRec_
|
2004-03-27 09:43:17 +01:00
|
|
|
{
|
|
|
|
FT_Pos org; /* original position/width in font units */
|
|
|
|
FT_Pos cur; /* current/scaled position/width in device sub-pixels */
|
|
|
|
FT_Pos fit; /* current/fitted position/width in device sub-pixels */
|
|
|
|
|
|
|
|
} AF_WidthRec, *AF_Width;
|
|
|
|
|
|
|
|
|
|
|
|
FT_LOCAL( void )
|
2005-03-03 18:09:08 +01:00
|
|
|
af_sort_pos( FT_UInt count,
|
|
|
|
FT_Pos* table );
|
2004-03-27 09:43:17 +01:00
|
|
|
|
|
|
|
FT_LOCAL( void )
|
2012-07-03 11:54:12 +02:00
|
|
|
af_sort_and_quantize_widths( FT_UInt* count,
|
|
|
|
AF_Width widths,
|
|
|
|
FT_Pos threshold );
|
2004-03-27 09:43:17 +01:00
|
|
|
|
|
|
|
|
2005-03-03 18:09:08 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/***** *****/
|
|
|
|
/***** A N G L E T Y P E S *****/
|
|
|
|
/***** *****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The auto-fitter doesn't need a very high angular accuracy;
|
|
|
|
* this allows us to speed up some computations considerably with a
|
|
|
|
* light Cordic algorithm (see afangles.c).
|
|
|
|
*/
|
|
|
|
|
|
|
|
typedef FT_Int AF_Angle;
|
|
|
|
|
|
|
|
|
|
|
|
#define AF_ANGLE_PI 256
|
|
|
|
#define AF_ANGLE_2PI ( AF_ANGLE_PI * 2 )
|
|
|
|
#define AF_ANGLE_PI2 ( AF_ANGLE_PI / 2 )
|
|
|
|
#define AF_ANGLE_PI4 ( AF_ANGLE_PI / 4 )
|
|
|
|
|
|
|
|
|
* include/freetype/internal/tttypes.h, src/autofit/afangles.c,
src/autofit/afcjk.c, src/autofit/afhints.c, src/autofit/aflatin.c,
src/autofit/aftypes.h, src/base/ftcalc.c, src/base/ftoutln.c,
src/gzip/ftgzip.c, src/psaux/psconv.c, src/truetype/ttgload.c,
src/type1/t1gload.c:
this is a major patch used to drastically improve the performance
of loading glyphs. This both speeds up loading the glypn vector
themselves and the auto-fitter.
note that we've started using inline assembler with GCC to
implement FT_MulFix, given that this function is so damn
important for the engine's performance.
the resulting speed-up is about 25%.
2006-05-17 15:34:21 +02:00
|
|
|
#if 0
|
2005-03-03 18:09:08 +01:00
|
|
|
/*
|
|
|
|
* compute the angle of a given 2-D vector
|
|
|
|
*/
|
2004-03-27 09:43:17 +01:00
|
|
|
FT_LOCAL( AF_Angle )
|
|
|
|
af_angle_atan( FT_Pos dx,
|
|
|
|
FT_Pos dy );
|
|
|
|
|
|
|
|
|
2005-03-03 18:09:08 +01:00
|
|
|
/*
|
|
|
|
* compute `angle2 - angle1'; the result is always within
|
|
|
|
* the range [-AF_ANGLE_PI .. AF_ANGLE_PI - 1]
|
|
|
|
*/
|
2004-03-27 09:43:17 +01:00
|
|
|
FT_LOCAL( AF_Angle )
|
|
|
|
af_angle_diff( AF_Angle angle1,
|
|
|
|
AF_Angle angle2 );
|
2005-11-11 16:49:14 +01:00
|
|
|
#endif /* 0 */
|
|
|
|
|
|
|
|
|
|
|
|
#define AF_ANGLE_DIFF( result, angle1, angle2 ) \
|
|
|
|
FT_BEGIN_STMNT \
|
|
|
|
AF_Angle _delta = (angle2) - (angle1); \
|
|
|
|
\
|
|
|
|
\
|
2015-03-22 04:30:16 +01:00
|
|
|
while ( _delta <= -AF_ANGLE_PI ) \
|
2005-11-11 16:49:14 +01:00
|
|
|
_delta += AF_ANGLE_2PI; \
|
|
|
|
\
|
2015-03-22 04:30:16 +01:00
|
|
|
while ( _delta > AF_ANGLE_PI ) \
|
2005-11-11 16:49:14 +01:00
|
|
|
_delta -= AF_ANGLE_2PI; \
|
|
|
|
\
|
|
|
|
result = _delta; \
|
2005-10-28 18:14:14 +02:00
|
|
|
FT_END_STMNT
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2005-11-11 16:49:14 +01:00
|
|
|
|
2005-03-03 18:09:08 +01:00
|
|
|
/* opaque handle to glyph-specific hints -- see `afhints.h' for more
|
|
|
|
* details
|
|
|
|
*/
|
|
|
|
typedef struct AF_GlyphHintsRec_* AF_GlyphHints;
|
|
|
|
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2005-03-03 18:09:08 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/***** *****/
|
|
|
|
/***** S C A L E R S *****/
|
|
|
|
/***** *****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2005-03-03 18:09:08 +01:00
|
|
|
/*
|
|
|
|
* A scaler models the target pixel device that will receive the
|
|
|
|
* auto-hinted glyph image.
|
|
|
|
*/
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2015-02-19 09:46:48 +01:00
|
|
|
#define AF_SCALER_FLAG_NO_HORIZONTAL 1U /* disable horizontal hinting */
|
|
|
|
#define AF_SCALER_FLAG_NO_VERTICAL 2U /* disable vertical hinting */
|
|
|
|
#define AF_SCALER_FLAG_NO_ADVANCE 4U /* disable advance hinting */
|
2015-04-16 20:11:49 +02:00
|
|
|
#define AF_SCALER_FLAG_NO_WARPER 8U /* disable warper */
|
2004-03-27 09:43:17 +01:00
|
|
|
|
|
|
|
|
2005-03-03 18:09:08 +01:00
|
|
|
typedef struct AF_ScalerRec_
|
2004-03-27 09:43:17 +01:00
|
|
|
{
|
2005-03-03 18:09:08 +01:00
|
|
|
FT_Face face; /* source font face */
|
|
|
|
FT_Fixed x_scale; /* from font units to 1/64th device pixels */
|
|
|
|
FT_Fixed y_scale; /* from font units to 1/64th device pixels */
|
|
|
|
FT_Pos x_delta; /* in 1/64th device pixels */
|
|
|
|
FT_Pos y_delta; /* in 1/64th device pixels */
|
|
|
|
FT_Render_Mode render_mode; /* monochrome, anti-aliased, LCD, etc. */
|
|
|
|
FT_UInt32 flags; /* additional control flags, see above */
|
2004-03-27 09:43:17 +01:00
|
|
|
|
|
|
|
} AF_ScalerRec, *AF_Scaler;
|
|
|
|
|
|
|
|
|
2005-03-03 18:09:08 +01:00
|
|
|
#define AF_SCALER_EQUAL_SCALES( a, b ) \
|
|
|
|
( (a)->x_scale == (b)->x_scale && \
|
|
|
|
(a)->y_scale == (b)->y_scale && \
|
|
|
|
(a)->x_delta == (b)->x_delta && \
|
|
|
|
(a)->y_delta == (b)->y_delta )
|
|
|
|
|
|
|
|
|
2013-12-19 15:24:17 +01:00
|
|
|
typedef struct AF_StyleMetricsRec_* AF_StyleMetrics;
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2005-03-03 18:09:08 +01:00
|
|
|
/* This function parses an FT_Face to compute global metrics for
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
* a specific style.
|
2005-03-03 18:09:08 +01:00
|
|
|
*/
|
|
|
|
typedef FT_Error
|
2013-12-18 12:59:35 +01:00
|
|
|
(*AF_WritingSystem_InitMetricsFunc)( AF_StyleMetrics metrics,
|
|
|
|
FT_Face face );
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2005-03-03 18:09:08 +01:00
|
|
|
typedef void
|
2013-12-18 12:59:35 +01:00
|
|
|
(*AF_WritingSystem_ScaleMetricsFunc)( AF_StyleMetrics metrics,
|
|
|
|
AF_Scaler scaler );
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2005-03-03 18:09:08 +01:00
|
|
|
typedef void
|
2013-12-18 12:59:35 +01:00
|
|
|
(*AF_WritingSystem_DoneMetricsFunc)( AF_StyleMetrics metrics );
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2015-11-02 09:32:26 +01:00
|
|
|
typedef void
|
|
|
|
(*AF_WritingSystem_GetStdWidthsFunc)( AF_StyleMetrics metrics,
|
|
|
|
FT_Pos* stdHW,
|
|
|
|
FT_Pos* stdVW );
|
|
|
|
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2005-03-03 18:09:08 +01:00
|
|
|
typedef FT_Error
|
2013-12-18 12:59:35 +01:00
|
|
|
(*AF_WritingSystem_InitHintsFunc)( AF_GlyphHints hints,
|
|
|
|
AF_StyleMetrics metrics );
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2016-12-01 07:07:22 +01:00
|
|
|
typedef FT_Error
|
2015-09-03 06:47:30 +02:00
|
|
|
(*AF_WritingSystem_ApplyHintsFunc)( FT_UInt glyph_index,
|
|
|
|
AF_GlyphHints hints,
|
2013-12-18 12:59:35 +01:00
|
|
|
FT_Outline* outline,
|
|
|
|
AF_StyleMetrics metrics );
|
2004-03-27 09:43:17 +01:00
|
|
|
|
|
|
|
|
2013-07-31 22:49:29 +02:00
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/***** *****/
|
|
|
|
/***** W R I T I N G S Y S T E M S *****/
|
|
|
|
/***** *****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
|
|
|
|
/*
|
2014-01-15 09:46:23 +01:00
|
|
|
* For the auto-hinter, a writing system consists of multiple scripts that
|
|
|
|
* can be handled similarly *in a typographical way*; the relationship is
|
|
|
|
* not based on history. For example, both the Greek and the unrelated
|
2013-07-31 22:49:29 +02:00
|
|
|
* Armenian scripts share the same features like ascender, descender,
|
|
|
|
* x-height, etc. Essentially, a writing system is covered by a
|
|
|
|
* submodule of the auto-fitter; it contains
|
|
|
|
*
|
2013-12-18 16:06:09 +01:00
|
|
|
* - a specific global analyzer that computes global metrics specific to
|
2013-07-31 22:49:29 +02:00
|
|
|
* the script (based on script-specific characters to identify ascender
|
|
|
|
* height, x-height, etc.),
|
|
|
|
*
|
|
|
|
* - a specific glyph analyzer that computes segments and edges for each
|
|
|
|
* glyph covered by the script,
|
|
|
|
*
|
|
|
|
* - a specific grid-fitting algorithm that distorts the scaled glyph
|
|
|
|
* outline according to the results of the glyph analyzer.
|
|
|
|
*/
|
|
|
|
|
2016-01-12 21:37:13 +01:00
|
|
|
#define AFWRTSYS_H_ /* don't load header files */
|
2013-08-02 19:51:17 +02:00
|
|
|
#undef WRITING_SYSTEM
|
|
|
|
#define WRITING_SYSTEM( ws, WS ) \
|
|
|
|
AF_WRITING_SYSTEM_ ## WS,
|
|
|
|
|
2013-07-31 22:49:29 +02:00
|
|
|
/* The list of known writing systems. */
|
|
|
|
typedef enum AF_WritingSystem_
|
2004-03-27 09:43:17 +01:00
|
|
|
{
|
|
|
|
|
2013-08-02 19:51:17 +02:00
|
|
|
#include "afwrtsys.h"
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2013-07-31 22:49:29 +02:00
|
|
|
AF_WRITING_SYSTEM_MAX /* do not remove */
|
2009-07-31 17:30:21 +02:00
|
|
|
|
2013-07-31 22:49:29 +02:00
|
|
|
} AF_WritingSystem;
|
2005-03-03 18:09:08 +01:00
|
|
|
|
2016-01-12 21:37:13 +01:00
|
|
|
#undef AFWRTSYS_H_
|
2013-08-02 19:51:17 +02:00
|
|
|
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2013-07-31 22:49:29 +02:00
|
|
|
typedef struct AF_WritingSystemClassRec_
|
2004-03-27 09:43:17 +01:00
|
|
|
{
|
2013-07-31 22:49:29 +02:00
|
|
|
AF_WritingSystem writing_system;
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2013-12-18 12:53:01 +01:00
|
|
|
FT_Offset style_metrics_size;
|
|
|
|
AF_WritingSystem_InitMetricsFunc style_metrics_init;
|
|
|
|
AF_WritingSystem_ScaleMetricsFunc style_metrics_scale;
|
|
|
|
AF_WritingSystem_DoneMetricsFunc style_metrics_done;
|
2015-11-02 09:32:26 +01:00
|
|
|
AF_WritingSystem_GetStdWidthsFunc style_metrics_getstdw;
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2013-12-18 12:53:01 +01:00
|
|
|
AF_WritingSystem_InitHintsFunc style_hints_init;
|
|
|
|
AF_WritingSystem_ApplyHintsFunc style_hints_apply;
|
2004-03-27 09:43:17 +01:00
|
|
|
|
2013-07-31 22:49:29 +02:00
|
|
|
} AF_WritingSystemClassRec;
|
|
|
|
|
2013-12-19 15:24:17 +01:00
|
|
|
typedef const AF_WritingSystemClassRec* AF_WritingSystemClass;
|
|
|
|
|
2013-07-31 22:49:29 +02:00
|
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/***** *****/
|
|
|
|
/***** S C R I P T S *****/
|
|
|
|
/***** *****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
|
|
|
|
/*
|
2015-09-04 10:28:53 +02:00
|
|
|
* Each script is associated with two sets of Unicode ranges to test
|
2015-09-30 17:52:42 +02:00
|
|
|
* whether the font face supports the script, and which non-base
|
|
|
|
* characters the script contains.
|
2013-07-31 22:49:29 +02:00
|
|
|
*
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
* We use four-letter script tags from the OpenType specification,
|
|
|
|
* extended by `NONE', which indicates `no script'.
|
2013-07-31 22:49:29 +02:00
|
|
|
*/
|
|
|
|
|
2013-08-02 20:25:21 +02:00
|
|
|
#undef SCRIPT
|
2015-12-23 23:25:03 +01:00
|
|
|
#define SCRIPT( s, S, d, h, H, ss ) \
|
2013-08-02 20:25:21 +02:00
|
|
|
AF_SCRIPT_ ## S,
|
|
|
|
|
2013-07-31 22:49:29 +02:00
|
|
|
/* The list of known scripts. */
|
|
|
|
typedef enum AF_Script_
|
|
|
|
{
|
2013-08-02 20:25:21 +02:00
|
|
|
|
|
|
|
#include "afscript.h"
|
2013-07-31 22:49:29 +02:00
|
|
|
|
|
|
|
AF_SCRIPT_MAX /* do not remove */
|
|
|
|
|
|
|
|
} AF_Script;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct AF_Script_UniRangeRec_
|
|
|
|
{
|
|
|
|
FT_UInt32 first;
|
|
|
|
FT_UInt32 last;
|
|
|
|
|
|
|
|
} AF_Script_UniRangeRec;
|
|
|
|
|
|
|
|
#define AF_UNIRANGE_REC( a, b ) { (FT_UInt32)(a), (FT_UInt32)(b) }
|
|
|
|
|
|
|
|
typedef const AF_Script_UniRangeRec* AF_Script_UniRange;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct AF_ScriptClassRec_
|
|
|
|
{
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
AF_Script script;
|
2013-07-31 22:49:29 +02:00
|
|
|
|
2015-09-04 10:28:53 +02:00
|
|
|
/* last element in the ranges must be { 0, 0 } */
|
|
|
|
AF_Script_UniRange script_uni_ranges;
|
2015-09-30 17:52:42 +02:00
|
|
|
AF_Script_UniRange script_uni_nonbase_ranges;
|
2014-01-26 09:45:23 +01:00
|
|
|
|
2015-12-24 08:17:51 +01:00
|
|
|
FT_Bool top_to_bottom_hinting;
|
|
|
|
|
2015-12-06 09:58:18 +01:00
|
|
|
const char* standard_charstring; /* for default width and height */
|
2013-07-31 22:49:29 +02:00
|
|
|
|
2004-03-27 09:43:17 +01:00
|
|
|
} AF_ScriptClassRec;
|
|
|
|
|
2013-12-19 15:24:17 +01:00
|
|
|
typedef const AF_ScriptClassRec* AF_ScriptClass;
|
|
|
|
|
|
|
|
|
2013-12-21 21:31:38 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/***** *****/
|
|
|
|
/***** C O V E R A G E S *****/
|
|
|
|
/***** *****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Usually, a font contains more glyphs than can be addressed by its
|
|
|
|
* character map.
|
|
|
|
*
|
|
|
|
* In the PostScript font world, encoding vectors specific to a given
|
|
|
|
* task are used to select such glyphs, and these glyphs can be often
|
|
|
|
* recognized by having a suffix in its glyph names. For example, a
|
|
|
|
* superscript glyph `A' might be called `A.sup'. Unfortunately, this
|
|
|
|
* naming scheme is not standardized and thus unusable for us.
|
|
|
|
*
|
|
|
|
* In the OpenType world, a better solution was invented, namely
|
|
|
|
* `features', which cleanly separate a character's input encoding from
|
|
|
|
* the corresponding glyph's appearance, and which don't use glyph names
|
|
|
|
* at all. For our purposes, and slightly generalized, an OpenType
|
|
|
|
* feature is a name of a mapping that maps character codes to
|
|
|
|
* non-standard glyph indices (features get used for other things also).
|
|
|
|
* For example, the `sups' feature provides superscript glyphs, thus
|
|
|
|
* mapping character codes like `A' or `B' to superscript glyph
|
|
|
|
* representation forms. How this mapping happens is completely
|
|
|
|
* uninteresting to us.
|
|
|
|
*
|
2013-12-30 07:41:22 +01:00
|
|
|
* For the auto-hinter, a `coverage' represents all glyphs of an OpenType
|
|
|
|
* feature collected in a set (as listed below) that can be hinted
|
|
|
|
* together. To continue the above example, superscript glyphs must not
|
|
|
|
* be hinted together with normal glyphs because the blue zones
|
|
|
|
* completely differ.
|
2013-12-21 21:31:38 +01:00
|
|
|
*
|
|
|
|
* Note that FreeType itself doesn't compute coverages; it only provides
|
|
|
|
* the glyphs addressable by the default Unicode character map. Instead,
|
|
|
|
* we use the HarfBuzz library (if available), which has many functions
|
|
|
|
* exactly for this purpose.
|
|
|
|
*
|
|
|
|
* AF_COVERAGE_DEFAULT is special: It should cover everything that isn't
|
|
|
|
* listed separately (including the glyphs addressable by the character
|
|
|
|
* map). In case HarfBuzz isn't available, it exactly covers the glyphs
|
|
|
|
* addressable by the character map.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2013-12-30 07:41:22 +01:00
|
|
|
#undef COVERAGE
|
|
|
|
#define COVERAGE( name, NAME, description, \
|
|
|
|
tag1, tag2, tag3, tag4 ) \
|
2013-12-21 21:31:38 +01:00
|
|
|
AF_COVERAGE_ ## NAME,
|
|
|
|
|
|
|
|
|
|
|
|
typedef enum AF_Coverage_
|
|
|
|
{
|
|
|
|
#include "afcover.h"
|
|
|
|
|
|
|
|
AF_COVERAGE_DEFAULT
|
|
|
|
|
|
|
|
} AF_Coverage;
|
|
|
|
|
|
|
|
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/***** *****/
|
|
|
|
/***** S T Y L E S *****/
|
|
|
|
/***** *****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The topmost structure for modelling the auto-hinter glyph input data
|
|
|
|
* is a `style class', grouping everything together.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef STYLE
|
2013-12-21 21:31:38 +01:00
|
|
|
#define STYLE( s, S, d, ws, sc, ss, c ) \
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
AF_STYLE_ ## S,
|
|
|
|
|
|
|
|
/* The list of known styles. */
|
|
|
|
typedef enum AF_Style_
|
|
|
|
{
|
|
|
|
|
|
|
|
#include "afstyles.h"
|
|
|
|
|
|
|
|
AF_STYLE_MAX /* do not remove */
|
|
|
|
|
|
|
|
} AF_Style;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct AF_StyleClassRec_
|
|
|
|
{
|
|
|
|
AF_Style style;
|
|
|
|
|
|
|
|
AF_WritingSystem writing_system;
|
|
|
|
AF_Script script;
|
|
|
|
AF_Blue_Stringset blue_stringset;
|
2013-12-21 21:31:38 +01:00
|
|
|
AF_Coverage coverage;
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
|
|
|
|
} AF_StyleClassRec;
|
|
|
|
|
|
|
|
typedef const AF_StyleClassRec* AF_StyleClass;
|
|
|
|
|
|
|
|
|
2013-12-19 15:24:17 +01:00
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
/***** *****/
|
|
|
|
/***** S T Y L E M E T R I C S *****/
|
|
|
|
/***** *****/
|
|
|
|
/*************************************************************************/
|
|
|
|
/*************************************************************************/
|
|
|
|
|
|
|
|
typedef struct AF_FaceGlobalsRec_* AF_FaceGlobals;
|
|
|
|
|
|
|
|
/* This is the main structure that combines everything. Autofit modules */
|
|
|
|
/* specific to writing systems derive their structures from it, for */
|
|
|
|
/* example `AF_LatinMetrics'. */
|
|
|
|
|
|
|
|
typedef struct AF_StyleMetricsRec_
|
|
|
|
{
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
AF_StyleClass style_class;
|
2013-12-19 15:24:17 +01:00
|
|
|
AF_ScalerRec scaler;
|
|
|
|
FT_Bool digits_have_same_width;
|
|
|
|
|
|
|
|
AF_FaceGlobals globals; /* to access properties */
|
|
|
|
|
|
|
|
} AF_StyleMetricsRec;
|
|
|
|
|
2011-01-23 12:42:23 +01:00
|
|
|
|
2015-12-24 08:17:51 +01:00
|
|
|
#define AF_HINTING_BOTTOM_TO_TOP 0
|
|
|
|
#define AF_HINTING_TOP_TO_BOTTOM 1
|
|
|
|
|
|
|
|
|
2011-01-23 12:42:23 +01:00
|
|
|
/* Declare and define vtables for classes */
|
2009-04-05 17:23:38 +02:00
|
|
|
#ifndef FT_CONFIG_OPTION_PIC
|
|
|
|
|
2013-07-31 22:49:29 +02:00
|
|
|
#define AF_DECLARE_WRITING_SYSTEM_CLASS( writing_system_class ) \
|
|
|
|
FT_CALLBACK_TABLE const AF_WritingSystemClassRec \
|
|
|
|
writing_system_class;
|
|
|
|
|
|
|
|
#define AF_DEFINE_WRITING_SYSTEM_CLASS( \
|
|
|
|
writing_system_class, \
|
|
|
|
system, \
|
|
|
|
m_size, \
|
|
|
|
m_init, \
|
|
|
|
m_scale, \
|
|
|
|
m_done, \
|
2015-11-02 09:32:26 +01:00
|
|
|
m_stdw, \
|
2013-07-31 22:49:29 +02:00
|
|
|
h_init, \
|
|
|
|
h_apply ) \
|
|
|
|
FT_CALLBACK_TABLE_DEF \
|
|
|
|
const AF_WritingSystemClassRec writing_system_class = \
|
|
|
|
{ \
|
|
|
|
system, \
|
|
|
|
\
|
|
|
|
m_size, \
|
|
|
|
\
|
|
|
|
m_init, \
|
|
|
|
m_scale, \
|
|
|
|
m_done, \
|
2015-11-02 09:32:26 +01:00
|
|
|
m_stdw, \
|
2013-07-31 22:49:29 +02:00
|
|
|
\
|
|
|
|
h_init, \
|
|
|
|
h_apply \
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2011-01-23 12:42:23 +01:00
|
|
|
#define AF_DECLARE_SCRIPT_CLASS( script_class ) \
|
|
|
|
FT_CALLBACK_TABLE const AF_ScriptClassRec \
|
2009-04-05 17:23:38 +02:00
|
|
|
script_class;
|
|
|
|
|
2013-07-31 22:49:29 +02:00
|
|
|
#define AF_DEFINE_SCRIPT_CLASS( \
|
|
|
|
script_class, \
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
script, \
|
2013-07-31 22:49:29 +02:00
|
|
|
ranges, \
|
2015-09-30 17:52:42 +02:00
|
|
|
nonbase_ranges, \
|
2015-12-24 08:17:51 +01:00
|
|
|
top_to_bottom, \
|
2015-12-06 09:58:18 +01:00
|
|
|
std_charstring ) \
|
2013-07-31 22:49:29 +02:00
|
|
|
FT_CALLBACK_TABLE_DEF \
|
|
|
|
const AF_ScriptClassRec script_class = \
|
|
|
|
{ \
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
script, \
|
2013-07-31 22:49:29 +02:00
|
|
|
ranges, \
|
2015-09-30 17:52:42 +02:00
|
|
|
nonbase_ranges, \
|
2015-12-24 08:17:51 +01:00
|
|
|
top_to_bottom, \
|
2015-12-06 09:58:18 +01:00
|
|
|
std_charstring, \
|
2009-04-05 17:23:38 +02:00
|
|
|
};
|
|
|
|
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
|
|
|
|
#define AF_DECLARE_STYLE_CLASS( style_class ) \
|
|
|
|
FT_CALLBACK_TABLE const AF_StyleClassRec \
|
|
|
|
style_class;
|
|
|
|
|
|
|
|
#define AF_DEFINE_STYLE_CLASS( \
|
|
|
|
style_class, \
|
|
|
|
style, \
|
|
|
|
writing_system, \
|
|
|
|
script, \
|
2013-12-21 21:31:38 +01:00
|
|
|
blue_stringset, \
|
|
|
|
coverage ) \
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
FT_CALLBACK_TABLE_DEF \
|
|
|
|
const AF_StyleClassRec style_class = \
|
|
|
|
{ \
|
|
|
|
style, \
|
|
|
|
writing_system, \
|
|
|
|
script, \
|
2013-12-21 21:31:38 +01:00
|
|
|
blue_stringset, \
|
|
|
|
coverage \
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
};
|
|
|
|
|
2011-01-23 12:42:23 +01:00
|
|
|
#else /* FT_CONFIG_OPTION_PIC */
|
|
|
|
|
2013-07-31 22:49:29 +02:00
|
|
|
#define AF_DECLARE_WRITING_SYSTEM_CLASS( writing_system_class ) \
|
|
|
|
FT_LOCAL( void ) \
|
|
|
|
FT_Init_Class_ ## writing_system_class( AF_WritingSystemClassRec* ac );
|
|
|
|
|
|
|
|
#define AF_DEFINE_WRITING_SYSTEM_CLASS( \
|
|
|
|
writing_system_class, \
|
|
|
|
system, \
|
|
|
|
m_size, \
|
|
|
|
m_init, \
|
|
|
|
m_scale, \
|
|
|
|
m_done, \
|
2017-02-02 07:13:29 +01:00
|
|
|
m_stdw, \
|
2013-07-31 22:49:29 +02:00
|
|
|
h_init, \
|
|
|
|
h_apply ) \
|
|
|
|
FT_LOCAL_DEF( void ) \
|
|
|
|
FT_Init_Class_ ## writing_system_class( AF_WritingSystemClassRec* ac ) \
|
|
|
|
{ \
|
2015-11-02 09:32:26 +01:00
|
|
|
ac->writing_system = system; \
|
2013-07-31 22:49:29 +02:00
|
|
|
\
|
2015-11-02 09:32:26 +01:00
|
|
|
ac->style_metrics_size = m_size; \
|
2013-07-31 22:49:29 +02:00
|
|
|
\
|
2015-11-02 09:32:26 +01:00
|
|
|
ac->style_metrics_init = m_init; \
|
|
|
|
ac->style_metrics_scale = m_scale; \
|
|
|
|
ac->style_metrics_done = m_done; \
|
|
|
|
ac->style_metrics_getstdw = m_stdw; \
|
2013-07-31 22:49:29 +02:00
|
|
|
\
|
2015-11-02 09:32:26 +01:00
|
|
|
ac->style_hints_init = h_init; \
|
|
|
|
ac->style_hints_apply = h_apply; \
|
2013-07-31 22:49:29 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2012-10-24 14:22:14 +02:00
|
|
|
#define AF_DECLARE_SCRIPT_CLASS( script_class ) \
|
|
|
|
FT_LOCAL( void ) \
|
|
|
|
FT_Init_Class_ ## script_class( AF_ScriptClassRec* ac );
|
2011-01-23 12:42:23 +01:00
|
|
|
|
2013-07-31 22:49:29 +02:00
|
|
|
#define AF_DEFINE_SCRIPT_CLASS( \
|
|
|
|
script_class, \
|
2013-12-20 18:35:35 +01:00
|
|
|
script_, \
|
2013-07-31 22:49:29 +02:00
|
|
|
ranges, \
|
2015-09-30 17:52:42 +02:00
|
|
|
nonbase_ranges, \
|
2015-12-24 08:17:51 +01:00
|
|
|
top_to_bottom, \
|
2015-12-06 09:58:18 +01:00
|
|
|
std_charstring ) \
|
2013-07-31 22:49:29 +02:00
|
|
|
FT_LOCAL_DEF( void ) \
|
|
|
|
FT_Init_Class_ ## script_class( AF_ScriptClassRec* ac ) \
|
|
|
|
{ \
|
2015-09-30 17:52:42 +02:00
|
|
|
ac->script = script_; \
|
|
|
|
ac->script_uni_ranges = ranges; \
|
|
|
|
ac->script_uni_nonbase_ranges = nonbase_ranges; \
|
2015-12-24 08:17:51 +01:00
|
|
|
ac->top_to_bottom_hinting = top_to_bottom; \
|
2015-12-06 09:58:18 +01:00
|
|
|
ac->standard_charstring = std_charstring; \
|
2009-04-05 17:23:38 +02:00
|
|
|
}
|
2011-01-23 12:42:23 +01:00
|
|
|
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
|
|
|
|
#define AF_DECLARE_STYLE_CLASS( style_class ) \
|
|
|
|
FT_LOCAL( void ) \
|
|
|
|
FT_Init_Class_ ## style_class( AF_StyleClassRec* ac );
|
|
|
|
|
|
|
|
#define AF_DEFINE_STYLE_CLASS( \
|
|
|
|
style_class, \
|
2013-12-20 18:35:35 +01:00
|
|
|
style_, \
|
|
|
|
writing_system_, \
|
|
|
|
script_, \
|
2013-12-21 21:31:38 +01:00
|
|
|
blue_stringset_, \
|
|
|
|
coverage_ ) \
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
FT_LOCAL_DEF( void ) \
|
|
|
|
FT_Init_Class_ ## style_class( AF_StyleClassRec* ac ) \
|
|
|
|
{ \
|
2013-12-20 18:35:35 +01:00
|
|
|
ac->style = style_; \
|
|
|
|
ac->writing_system = writing_system_; \
|
|
|
|
ac->script = script_; \
|
|
|
|
ac->blue_stringset = blue_stringset_; \
|
2013-12-21 21:31:38 +01:00
|
|
|
ac->coverage = coverage_; \
|
[autofit] Introduce `styles'.
This is the new top-level structure for handling glyph input data;
scripts are now defined separately.
* src/autofit/aftypes.h (SCRIPT): Updated.
(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
members to ...
(AF_Style_ClassRec): ... this new structure.
(AF_Style): New enumeration.
(AF_StyleMetricsRec): Replace `script' enumeration with
`style_class' pointer.
(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
* src/autofit/afstyles.h: New file, using data from `afscript.h'.
* src/autofit/afscript.h: Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
(af_style_names): ... this array.
(af_face_globals_compute_script_coverage): Renamed to...
(af_face_globals_compute_style_coverage): ... this.
Updated.
(af_face_globals_new, af_face_globals_free,
af_face_globals_get_metrics): Updated.
* src/autofit/afglobal.h (SCRIPT): Updated.
(STYLE): Redefine macro to load `afstyles.h'.
(AF_SCRIPT_FALLBACK): Update definition. This will get more
refinements with later on.
(AF_SCRIPT_UNASSIGNED): Replace with...
(AF_STYLE_UNASSIGNED): ... this macro.
(AF_FaceGlobalsRec): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
af_latin_hint_edges): Updated.
* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
(af_ltn2_uniranges): Removed.
* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
Updated.
* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
members.
* src/autofit/afranges.h: Updated.
* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2013-12-20 17:26:26 +01:00
|
|
|
}
|
|
|
|
|
2011-01-23 12:42:23 +01:00
|
|
|
#endif /* FT_CONFIG_OPTION_PIC */
|
2009-04-05 17:23:38 +02:00
|
|
|
|
2004-03-27 09:43:17 +01:00
|
|
|
|
|
|
|
/* */
|
|
|
|
|
|
|
|
FT_END_HEADER
|
|
|
|
|
2016-01-12 21:37:13 +01:00
|
|
|
#endif /* AFTYPES_H_ */
|
2005-03-03 18:09:08 +01:00
|
|
|
|
|
|
|
|
|
|
|
/* END */
|