ref: 456cc440cadead759578c7e71aa04d74b387a066
parent: 773601da120d49c2e95066fcc2ad41d16cf45429
author: Werner Lemberg <[email protected]>
date: Fri Aug 2 16:25:21 EDT 2013
[autofit] Move declaration of scripts into separate file. This has the benefit that we don't need to duplicate the data at different places. * src/autofit/afscript.h: New file. * src/autofit/aftypes.h (AF_Script): Include `afscript.h' to define the enumeration values. * src/autofit/afglobal.c: Include `afscript.h' to get the script specific header files. (af_script_classes): Include `afscript.h' to fill this array. * src/autofit/afpic.c: Include `afscript.h' to get the script specific header files. (autofit_module_class_pic_init): Include `afscript.h' for initialization. * src/autofit/afpic.h (AF_SCRIPT_CLASSES_COUNT, AF_SCRIPT_CLASSES_REC_COUNT): Removed. Use `AF_SCRIPT_MAX' instead. * src/autofit/rules.mk (AUTOF_DRV_H): Updated.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,30 @@
2013-08-02 Werner Lemberg <[email protected]>
+ [autofit] Move declaration of scripts into separate file.
+
+ This has the benefit that we don't need to duplicate the data at
+ different places.
+
+ * src/autofit/afscript.h: New file.
+
+ * src/autofit/aftypes.h (AF_Script): Include `afscript.h' to define
+ the enumeration values.
+
+ * src/autofit/afglobal.c: Include `afscript.h' to get the script
+ specific header files.
+ (af_script_classes): Include `afscript.h' to fill this array.
+
+ * src/autofit/afpic.c: Include `afscript.h' to get the script
+ specific header files.
+ (autofit_module_class_pic_init): Include `afscript.h' for
+ initialization.
+ * src/autofit/afpic.h (AF_SCRIPT_CLASSES_COUNT,
+ AF_SCRIPT_CLASSES_REC_COUNT): Removed. Use `AF_SCRIPT_MAX' instead.
+
+ * src/autofit/rules.mk (AUTOF_DRV_H): Updated.
+
+2013-08-02 Werner Lemberg <[email protected]>
+
[autofit] Move declaration of writing systems into separate file.
This has the benefit that we don't need to duplicate the data at
--- a/src/autofit/afglobal.c
+++ b/src/autofit/afglobal.c
@@ -50,20 +50,16 @@
};
- /* when updating this table, don't forget to update */
- /* AF_SCRIPT_CLASSES_COUNT and autofit_module_class_pic_init */
+#undef SCRIPT
+#define SCRIPT( s, S ) \
+ &af_ ## s ## _script_class,
- /* populate this list when you add new scripts */
FT_LOCAL_ARRAY_DEF( AF_ScriptClass )
af_script_classes[] =
{
- &af_dflt_script_class, /* XXX */
- &af_latn_script_class,
- &af_hani_script_class,
- &af_deva_script_class,
-#ifdef FT_OPTION_AUTOFIT2
- &af_ltn2_script_class,
-#endif
+
+#include "afscript.h"
+
NULL /* do not remove */
};
--- a/src/autofit/afglobal.h
+++ b/src/autofit/afglobal.h
@@ -42,9 +42,9 @@
/* index of fallback script in `af_script_classes' */
#ifdef AF_CONFIG_OPTION_CJK
-#define AF_SCRIPT_FALLBACK 2 /* hani */
+#define AF_SCRIPT_FALLBACK AF_SCRIPT_HANI
#else
-#define AF_SCRIPT_FALLBACK 0 /* dflt */
+#define AF_SCRIPT_FALLBACK AF_SCRIPT_DFLT
#endif
/* a bit mask indicating an uncovered glyph */
#define AF_SCRIPT_NONE 0x7F
--- a/src/autofit/afpic.c
+++ b/src/autofit/afpic.c
@@ -100,14 +100,12 @@
for ( ss = 0; ss < AF_WRITING_SYSTEM_MAX - 1; ss++ )
container->af_writing_system_classes[ss] =
&container->af_writing_system_classes_rec[ss];
- container->af_writing_system_classes
- [AF_WRITING_SYSTEM_MAX - 1] = NULL;
+ container->af_writing_system_classes[AF_WRITING_SYSTEM_MAX - 1] = NULL;
- for ( ss = 0; ss < AF_SCRIPT_CLASSES_REC_COUNT; ss++ )
+ for ( ss = 0; ss < AF_SCRIPT_MAX - 1; ss++ )
container->af_script_classes[ss] =
&container->af_script_classes_rec[ss];
- container->af_script_classes
- [AF_SCRIPT_CLASSES_COUNT - 1] = NULL;
+ container->af_script_classes[AF_SCRIPT_MAX - 1] = NULL;
#undef WRITING_SYSTEM
#define WRITING_SYSTEM( ws, WS ) \
@@ -115,22 +113,15 @@
&container->af_writing_system_classes_rec[ss++] );
ss = 0;
-
#include "afwrtsys.h"
+#undef SCRIPT
+#define SCRIPT( s, S ) \
+ FT_Init_Class_af_ ## s ## _script_class( \
+ &container->af_script_classes_rec[ss++] );
+
ss = 0;
- FT_Init_Class_af_dflt_script_class(
- &container->af_script_classes_rec[ss++] );
- FT_Init_Class_af_latn_script_class(
- &container->af_script_classes_rec[ss++] );
- FT_Init_Class_af_hani_script_class(
- &container->af_script_classes_rec[ss++] );
- FT_Init_Class_af_deva_script_class(
- &container->af_script_classes_rec[ss++] );
-#ifdef FT_OPTION_AUTOFIT2
- FT_Init_Class_af_ltn2_script_class(
- &container->af_script_classes_rec[ss++] );
-#endif
+#include "afscript.h"
FT_Init_Class_af_autofitter_interface(
library, &container->af_autofitter_interface );
--- a/src/autofit/afpic.h
+++ b/src/autofit/afpic.h
@@ -41,16 +41,7 @@
#include "aftypes.h"
-#ifdef FT_OPTION_AUTOFIT2
-#define AF_SCRIPT_CLASSES_COUNT 6
-#else
-#define AF_SCRIPT_CLASSES_COUNT 5
-#endif
-#define AF_SCRIPT_CLASSES_REC_COUNT \
- ( AF_SCRIPT_CLASSES_COUNT - 1 )
-
-
typedef struct AFModulePIC_
{
FT_ServiceDescRec* af_services;
@@ -62,9 +53,9 @@
[AF_WRITING_SYSTEM_MAX - 1];
AF_ScriptClass af_script_classes
- [AF_SCRIPT_CLASSES_COUNT];
+ [AF_SCRIPT_MAX];
AF_ScriptClassRec af_script_classes_rec
- [AF_SCRIPT_CLASSES_REC_COUNT];
+ [AF_SCRIPT_MAX - 1];
FT_AutoHinter_InterfaceRec af_autofitter_interface;
--- /dev/null
+++ b/src/autofit/afscript.h
@@ -1,0 +1,34 @@
+/***************************************************************************/
+/* */
+/* afscript.h */
+/* */
+/* Auto-fitter scripts (specification only). */
+/* */
+/* Copyright 2013 by */
+/* 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. */
+/* */
+/***************************************************************************/
+
+
+ /* The following part can be included multiple times. */
+ /* Define `SCRIPT' as needed. */
+
+
+ /* Add new scripts here. */
+
+ SCRIPT( dflt, DFLT )
+ SCRIPT( latn, LATN )
+ SCRIPT( hani, HANI )
+ SCRIPT( deva, DEVA )
+#ifdef FT_OPTION_AUTOFIT2
+ SCRIPT( ltn2, LTN2 )
+#endif
+
+
+/* END */
--- a/src/autofit/aftypes.h
+++ b/src/autofit/aftypes.h
@@ -322,19 +322,15 @@
* We use four-letter script tags from the OpenType specification.
*/
+#undef SCRIPT
+#define SCRIPT(s, S ) \
+ AF_SCRIPT_ ## S,
+
/* The list of known scripts. */
typedef enum AF_Script_
{
- AF_SCRIPT_DFLT = 0,
- AF_SCRIPT_LATN = 1,
- AF_SCRIPT_HANI = 2,
- AF_SCRIPT_DEVA = 3,
-#ifdef FT_OPTION_AUTOFIT2
- AF_SCRIPT_LTN2 = 4,
-#endif
- /* Add new scripts here. Don't forget to update */
- /* the list in `afglobal.c'. */
+#include "afscript.h"
AF_SCRIPT_MAX /* do not remove */
--- a/src/autofit/rules.mk
+++ b/src/autofit/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2003, 2004, 2005, 2006, 2007, 2011 by
+# Copyright 2003-2007, 2011, 2013 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -41,7 +41,9 @@
#
AUTOF_DRV_H := $(AUTOF_DRV_SRC:%c=%h) \
$(AUTOF_DIR)/aferrors.h \
- $(AUTOF_DIR)/aftypes.h
+ $(AUTOF_DIR)/afscript.h \
+ $(AUTOF_DIR)/aftypes.h \
+ $(AUTOF_DIR)/afwrtsys.h
# AUTOF driver object(s)