[psnames] Really fix issue #49949.

We now use a separate preprocessor macro to handle both definition
and declaration of the glyph name arrays.

* src/psnames/psmodule.c (DEFINE_PS_TABLE_DATA): New macro.

* src/tools/glnames.py (StringTable::dump,
StringTable::dump_sublist): Use `DEFINE_PS_TABLE_DATA'.
(dump_encoding): Ditto.
(main): Use `wb' mode for writing the output file, which works on
Windows also.

* src/psnames/pstables.h: Regenerated.
This commit is contained in:
Werner Lemberg 2017-08-09 07:45:12 +02:00
parent 410f3799b6
commit c87fec0299
4 changed files with 62 additions and 32 deletions

View File

@ -1,3 +1,20 @@
2017-08-08 Werner Lemberg <wl@gnu.org>
[psnames] Really fix issue #49949.
We now use a separate preprocessor macro to handle both definition
and declaration of the glyph name arrays.
* src/psnames/psmodule.c (DEFINE_PS_TABLE_DATA): New macro.
* src/tools/glnames.py (StringTable::dump,
StringTable::dump_sublist): Use `DEFINE_PS_TABLE_DATA'.
(dump_encoding): Ditto.
(main): Use `wb' mode for writing the output file, which works on
Windows also.
* src/psnames/pstables.h: Regenerated.
2017-08-08 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Harmony LCD rendering.
@ -25,7 +42,7 @@
* src/sftnt/ttpost.c (format): Use otspec-compliant versions.
2017-06-27 Werner Lemberg <wl@gnu.org>
2017-08-05 Werner Lemberg <wl@gnu.org>
[truetype] Integer overflow.

View File

@ -23,8 +23,21 @@
#include "psmodule.h"
/*
* The file `pstables.h' with its arrays and its function
* `ft_get_adobe_glyph_index' is useful for other projects also (for
* example, `pdfium' is using it). However, if used as a C++ header,
* including it in two different source files makes it necessary to use
* `extern const' for the declaration of its arrays, otherwise the data
* would be duplicated as mandated by the C++ standard.
*
* For this reason, we use `DEFINE_PS_TABLES' to guard the function
* definitions, and `DEFINE_PS_TABLES_DATA' to provide both proper array
* declarations and definitions.
*/
#include "pstables.h"
#define DEFINE_PS_TABLES
#define DEFINE_PS_TABLES_DATA
#include "pstables.h"
#include "psnamerr.h"

View File

@ -19,7 +19,7 @@
/* This file has been generated automatically -- do not edit! */
#ifndef DEFINE_PS_TABLES
#ifndef DEFINE_PS_TABLES_DATA
#ifdef __cplusplus
extern "C"
#else
@ -27,7 +27,7 @@
#endif
#endif
const char ft_standard_glyph_names[3696]
#ifdef DEFINE_PS_TABLES
#ifdef DEFINE_PS_TABLES_DATA
=
{
'.','n','u','l','l', 0,
@ -451,7 +451,7 @@
'R','o','m','a','n', 0,
'S','e','m','i','b','o','l','d', 0,
}
#endif /* DEFINE_PS_TABLES */
#endif /* DEFINE_PS_TABLES_DATA */
;
@ -459,7 +459,7 @@
/* Values are offsets into the `ft_standard_glyph_names' table */
#ifndef DEFINE_PS_TABLES
#ifndef DEFINE_PS_TABLES_DATA
#ifdef __cplusplus
extern "C"
#else
@ -467,7 +467,7 @@
#endif
#endif
const short ft_mac_names[FT_NUM_MAC_NAMES]
#ifdef DEFINE_PS_TABLES
#ifdef DEFINE_PS_TABLES_DATA
=
{
253, 0, 6, 261, 267, 274, 283, 294, 301, 309, 758, 330, 340, 351,
@ -490,7 +490,7 @@
1270,1313,1323,1171,1290,1332,1211,1235,1276, 169, 175, 182, 189, 200,
209, 218, 225, 232, 239, 246
}
#endif /* DEFINE_PS_TABLES */
#endif /* DEFINE_PS_TABLES_DATA */
;
@ -498,7 +498,7 @@
/* Values are offsets into the `ft_standard_glyph_names' table */
#ifndef DEFINE_PS_TABLES
#ifndef DEFINE_PS_TABLES_DATA
#ifdef __cplusplus
extern "C"
#else
@ -506,7 +506,7 @@
#endif
#endif
const short ft_sid_names[FT_NUM_SID_NAMES]
#ifdef DEFINE_PS_TABLES
#ifdef DEFINE_PS_TABLES_DATA
=
{
253, 261, 267, 274, 283, 294, 301, 309, 319, 330, 340, 351, 360, 365,
@ -538,12 +538,12 @@
3418,3430,3442,3454,3471,3483,3498,3506,3518,3530,3542,3559,3574,3586,
3597,3612,3620,3628,3636,3644,3650,3655,3660,3666,3673,3681,3687
}
#endif /* DEFINE_PS_TABLES */
#endif /* DEFINE_PS_TABLES_DATA */
;
/* the following are indices into the SID name table */
#ifndef DEFINE_PS_TABLES
#ifndef DEFINE_PS_TABLES_DATA
#ifdef __cplusplus
extern "C"
#else
@ -551,7 +551,7 @@
#endif
#endif
const unsigned short t1_standard_encoding[256]
#ifdef DEFINE_PS_TABLES
#ifdef DEFINE_PS_TABLES_DATA
=
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -571,12 +571,12 @@
0,138, 0,139, 0, 0, 0, 0,140,141,142,143, 0, 0, 0, 0,
0,144, 0, 0, 0,145, 0, 0,146,147,148,149, 0, 0, 0, 0
}
#endif /* DEFINE_PS_TABLES */
#endif /* DEFINE_PS_TABLES_DATA */
;
/* the following are indices into the SID name table */
#ifndef DEFINE_PS_TABLES
#ifndef DEFINE_PS_TABLES_DATA
#ifdef __cplusplus
extern "C"
#else
@ -584,7 +584,7 @@
#endif
#endif
const unsigned short t1_expert_encoding[256]
#ifdef DEFINE_PS_TABLES
#ifdef DEFINE_PS_TABLES_DATA
=
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -604,7 +604,7 @@
347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,
363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378
}
#endif /* DEFINE_PS_TABLES */
#endif /* DEFINE_PS_TABLES_DATA */
;
@ -619,7 +619,7 @@
#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
#ifndef DEFINE_PS_TABLES
#ifndef DEFINE_PS_TABLES_DATA
#ifdef __cplusplus
extern "C"
#else
@ -627,7 +627,7 @@
#endif
#endif
const unsigned char ft_adobe_glyph_list[55997L]
#ifdef DEFINE_PS_TABLES
#ifdef DEFINE_PS_TABLES_DATA
=
{
0, 52, 0,106, 2,167, 3, 63, 4,220, 6,125, 9,143, 10, 23,
@ -4131,7 +4131,7 @@
182,117, 2,218,167,218,178,232,233,242,225,231,225,238, 97,128,
48, 90,235,225,244,225,235,225,238, 97,128, 48,186
}
#endif /* DEFINE_PS_TABLES */
#endif /* DEFINE_PS_TABLES_DATA */
;

View File

@ -4920,7 +4920,7 @@ class StringTable:
def dump( self, file ):
write = file.write
write( "#ifndef DEFINE_PS_TABLES\n" )
write( "#ifndef DEFINE_PS_TABLES_DATA\n" )
write( "#ifdef __cplusplus\n" )
write( ' extern "C"\n' )
write( "#else\n" )
@ -4929,7 +4929,7 @@ class StringTable:
write( "#endif\n" )
write( " const char " + self.master_table +
"[" + repr( self.total ) + "]\n" )
write( "#ifdef DEFINE_PS_TABLES\n" )
write( "#ifdef DEFINE_PS_TABLES_DATA\n" )
write( " =\n" )
write( " {\n" )
@ -4941,7 +4941,7 @@ class StringTable:
write( line )
write( " }\n" )
write( "#endif /* DEFINE_PS_TABLES */\n" )
write( "#endif /* DEFINE_PS_TABLES_DATA */\n" )
write( " ;\n\n\n" )
def dump_sublist( self, file, table_name, macro_name, sublist ):
@ -4950,7 +4950,7 @@ class StringTable:
write( " /* Values are offsets into the `" +
self.master_table + "' table */\n\n" )
write( "#ifndef DEFINE_PS_TABLES\n" )
write( "#ifndef DEFINE_PS_TABLES_DATA\n" )
write( "#ifdef __cplusplus\n" )
write( ' extern "C"\n' )
write( "#else\n" )
@ -4959,7 +4959,7 @@ class StringTable:
write( "#endif\n" )
write( " const short " + table_name +
"[" + macro_name + "]\n" )
write( "#ifdef DEFINE_PS_TABLES\n" )
write( "#ifdef DEFINE_PS_TABLES_DATA\n" )
write( " =\n" )
write( " {\n" )
@ -4979,7 +4979,7 @@ class StringTable:
write( line )
write( "\n" )
write( " }\n" )
write( "#endif /* DEFINE_PS_TABLES */\n" )
write( "#endif /* DEFINE_PS_TABLES_DATA */\n" )
write( " ;\n\n\n" )
@ -5213,7 +5213,7 @@ def dump_encoding( file, encoding_name, encoding_list ):
write = file.write
write( " /* the following are indices into the SID name table */\n" )
write( "#ifndef DEFINE_PS_TABLES\n" )
write( "#ifndef DEFINE_PS_TABLES_DATA\n" )
write( "#ifdef __cplusplus\n" )
write( ' extern "C"\n' )
write( "#else\n" )
@ -5222,7 +5222,7 @@ def dump_encoding( file, encoding_name, encoding_list ):
write( "#endif\n" )
write( " const unsigned short " + encoding_name +
"[" + repr( len( encoding_list ) ) + "]\n" )
write( "#ifdef DEFINE_PS_TABLES\n" )
write( "#ifdef DEFINE_PS_TABLES_DATA\n" )
write( " =\n" )
write( " {\n" )
@ -5241,14 +5241,14 @@ def dump_encoding( file, encoding_name, encoding_list ):
write( line )
write( "\n" )
write( " }\n" )
write( "#endif /* DEFINE_PS_TABLES */\n" )
write( "#endif /* DEFINE_PS_TABLES_DATA */\n" )
write( " ;\n\n\n" )
def dump_array( the_array, write, array_name ):
"""dumps a given encoding"""
write( "#ifndef DEFINE_PS_TABLES\n" )
write( "#ifndef DEFINE_PS_TABLES_DATA\n" )
write( "#ifdef __cplusplus\n" )
write( ' extern "C"\n' )
write( "#else\n" )
@ -5257,7 +5257,7 @@ def dump_array( the_array, write, array_name ):
write( "#endif\n" )
write( " const unsigned char " + array_name +
"[" + repr( len( the_array ) ) + "L]\n" )
write( "#ifdef DEFINE_PS_TABLES\n" )
write( "#ifdef DEFINE_PS_TABLES_DATA\n" )
write( " =\n" )
write( " {\n" )
@ -5282,7 +5282,7 @@ def dump_array( the_array, write, array_name ):
write( line )
write( "\n" )
write( " }\n" )
write( "#endif /* DEFINE_PS_TABLES */\n" )
write( "#endif /* DEFINE_PS_TABLES_DATA */\n" )
write( " ;\n\n\n" )
@ -5293,7 +5293,7 @@ def main():
print __doc__ % sys.argv[0]
sys.exit( 1 )
file = open( sys.argv[1], "w\n" )
file = open( sys.argv[1], "wb" )
write = file.write
count_sid = len( sid_standard_names )