summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/freetype/src/type42
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/freetype/src/type42')
-rw-r--r--src/3rdparty/freetype/src/type42/Jamfile2
-rw-r--r--src/3rdparty/freetype/src/type42/module.mk2
-rw-r--r--src/3rdparty/freetype/src/type42/rules.mk2
-rw-r--r--src/3rdparty/freetype/src/type42/t42drivr.c54
-rw-r--r--src/3rdparty/freetype/src/type42/t42drivr.h8
-rw-r--r--src/3rdparty/freetype/src/type42/t42error.h10
-rw-r--r--src/3rdparty/freetype/src/type42/t42objs.c18
-rw-r--r--src/3rdparty/freetype/src/type42/t42objs.h8
-rw-r--r--src/3rdparty/freetype/src/type42/t42parse.c55
-rw-r--r--src/3rdparty/freetype/src/type42/t42parse.h8
-rw-r--r--src/3rdparty/freetype/src/type42/t42types.h8
-rw-r--r--src/3rdparty/freetype/src/type42/type42.c8
12 files changed, 108 insertions, 75 deletions
diff --git a/src/3rdparty/freetype/src/type42/Jamfile b/src/3rdparty/freetype/src/type42/Jamfile
index 722953d37f..b98de05a74 100644
--- a/src/3rdparty/freetype/src/type42/Jamfile
+++ b/src/3rdparty/freetype/src/type42/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/type42 Jamfile
#
-# Copyright 2002-2015 by
+# Copyright 2002-2018 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/3rdparty/freetype/src/type42/module.mk b/src/3rdparty/freetype/src/type42/module.mk
index af7e651d95..3d4732bb6f 100644
--- a/src/3rdparty/freetype/src/type42/module.mk
+++ b/src/3rdparty/freetype/src/type42/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2002-2015 by
+# Copyright 2002-2018 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/3rdparty/freetype/src/type42/rules.mk b/src/3rdparty/freetype/src/type42/rules.mk
index 4a8efca507..9325d3898f 100644
--- a/src/3rdparty/freetype/src/type42/rules.mk
+++ b/src/3rdparty/freetype/src/type42/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2002-2015 by
+# Copyright 2002-2018 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/3rdparty/freetype/src/type42/t42drivr.c b/src/3rdparty/freetype/src/type42/t42drivr.c
index 2907096c9f..f579b2708c 100644
--- a/src/3rdparty/freetype/src/type42/t42drivr.c
+++ b/src/3rdparty/freetype/src/type42/t42drivr.c
@@ -4,7 +4,7 @@
/* */
/* High-level Type 42 driver interface (body). */
/* */
-/* Copyright 2002-2015 by */
+/* Copyright 2002-2018 by */
/* Roberto Alameda. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -81,7 +81,8 @@
if ( glyph_name[0] == gname[0] && !ft_strcmp( glyph_name, gname ) )
- return (FT_UInt)ft_atol( (const char *)face->type1.charstrings[i] );
+ return (FT_UInt)ft_strtol( (const char *)face->type1.charstrings[i],
+ NULL, 10 );
}
return 0;
@@ -90,8 +91,8 @@
static const FT_Service_GlyphDictRec t42_service_glyph_dict =
{
- (FT_GlyphDict_GetNameFunc) t42_get_glyph_name,
- (FT_GlyphDict_NameIndexFunc)t42_get_name_index
+ (FT_GlyphDict_GetNameFunc) t42_get_glyph_name, /* get_name */
+ (FT_GlyphDict_NameIndexFunc)t42_get_name_index /* name_index */
};
@@ -110,7 +111,7 @@
static const FT_Service_PsFontNameRec t42_service_ps_font_name =
{
- (FT_PsName_GetFunc)t42_get_ps_font_name
+ (FT_PsName_GetFunc)t42_get_ps_font_name /* get_ps_font_name */
};
@@ -161,11 +162,12 @@
static const FT_Service_PsInfoRec t42_service_ps_info =
{
- (PS_GetFontInfoFunc) t42_ps_get_font_info,
- (PS_GetFontExtraFunc) t42_ps_get_font_extra,
- (PS_HasGlyphNamesFunc) t42_ps_has_glyph_names,
- (PS_GetFontPrivateFunc)t42_ps_get_font_private,
- (PS_GetFontValueFunc) NULL /* not implemented */
+ (PS_GetFontInfoFunc) t42_ps_get_font_info, /* ps_get_font_info */
+ (PS_GetFontExtraFunc) t42_ps_get_font_extra, /* ps_get_font_extra */
+ (PS_HasGlyphNamesFunc) t42_ps_has_glyph_names, /* ps_has_glyph_names */
+ (PS_GetFontPrivateFunc)t42_ps_get_font_private, /* ps_get_font_private */
+ /* not implemented */
+ (PS_GetFontValueFunc) NULL /* ps_get_font_value */
};
@@ -212,32 +214,32 @@
0x10000L,
0x20000L,
- 0, /* format interface */
+ NULL, /* module-specific interface */
- T42_Driver_Init,
- T42_Driver_Done,
- T42_Get_Interface,
+ T42_Driver_Init, /* FT_Module_Constructor module_init */
+ T42_Driver_Done, /* FT_Module_Destructor module_done */
+ T42_Get_Interface, /* FT_Module_Requester get_interface */
},
sizeof ( T42_FaceRec ),
sizeof ( T42_SizeRec ),
sizeof ( T42_GlyphSlotRec ),
- T42_Face_Init,
- T42_Face_Done,
- T42_Size_Init,
- T42_Size_Done,
- T42_GlyphSlot_Init,
- T42_GlyphSlot_Done,
+ T42_Face_Init, /* FT_Face_InitFunc init_face */
+ T42_Face_Done, /* FT_Face_DoneFunc done_face */
+ T42_Size_Init, /* FT_Size_InitFunc init_size */
+ T42_Size_Done, /* FT_Size_DoneFunc done_size */
+ T42_GlyphSlot_Init, /* FT_Slot_InitFunc init_slot */
+ T42_GlyphSlot_Done, /* FT_Slot_DoneFunc done_slot */
- T42_GlyphSlot_Load,
+ T42_GlyphSlot_Load, /* FT_Slot_LoadFunc load_glyph */
- 0, /* FT_Face_GetKerningFunc */
- 0, /* FT_Face_AttachFunc */
+ NULL, /* FT_Face_GetKerningFunc get_kerning */
+ NULL, /* FT_Face_AttachFunc attach_file */
+ NULL, /* FT_Face_GetAdvancesFunc get_advances */
- 0, /* FT_Face_GetAdvancesFunc */
- T42_Size_Request,
- T42_Size_Select
+ T42_Size_Request, /* FT_Size_RequestFunc request_size */
+ T42_Size_Select /* FT_Size_SelectFunc select_size */
};
diff --git a/src/3rdparty/freetype/src/type42/t42drivr.h b/src/3rdparty/freetype/src/type42/t42drivr.h
index b4d1753a23..3667f3e066 100644
--- a/src/3rdparty/freetype/src/type42/t42drivr.h
+++ b/src/3rdparty/freetype/src/type42/t42drivr.h
@@ -4,7 +4,7 @@
/* */
/* High-level Type 42 driver interface (specification). */
/* */
-/* Copyright 2002-2015 by */
+/* Copyright 2002-2018 by */
/* Roberto Alameda. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -16,8 +16,8 @@
/***************************************************************************/
-#ifndef __T42DRIVR_H__
-#define __T42DRIVR_H__
+#ifndef T42DRIVR_H_
+#define T42DRIVR_H_
#include <ft2build.h>
@@ -37,7 +37,7 @@ FT_BEGIN_HEADER
FT_END_HEADER
-#endif /* __T42DRIVR_H__ */
+#endif /* T42DRIVR_H_ */
/* END */
diff --git a/src/3rdparty/freetype/src/type42/t42error.h b/src/3rdparty/freetype/src/type42/t42error.h
index cddaf9e9ca..e3978a7607 100644
--- a/src/3rdparty/freetype/src/type42/t42error.h
+++ b/src/3rdparty/freetype/src/type42/t42error.h
@@ -4,7 +4,7 @@
/* */
/* Type 42 error codes (specification only). */
/* */
-/* Copyright 2002-2015 by */
+/* Copyright 2002-2018 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -22,12 +22,12 @@
/* */
/*************************************************************************/
-#ifndef __T42ERROR_H__
-#define __T42ERROR_H__
+#ifndef T42ERROR_H_
+#define T42ERROR_H_
#include FT_MODULE_ERRORS_H
-#undef __FTERRORS_H__
+#undef FTERRORS_H_
#undef FT_ERR_PREFIX
#define FT_ERR_PREFIX T42_Err_
@@ -35,7 +35,7 @@
#include FT_ERRORS_H
-#endif /* __T42ERROR_H__ */
+#endif /* T42ERROR_H_ */
/* END */
diff --git a/src/3rdparty/freetype/src/type42/t42objs.c b/src/3rdparty/freetype/src/type42/t42objs.c
index 430871aced..66e5c40382 100644
--- a/src/3rdparty/freetype/src/type42/t42objs.c
+++ b/src/3rdparty/freetype/src/type42/t42objs.c
@@ -4,7 +4,7 @@
/* */
/* Type 42 objects manager (body). */
/* */
-/* Copyright 2002-2015 by */
+/* Copyright 2002-2018 by */
/* Roberto Alameda. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -231,9 +231,6 @@
if ( info->is_fixed_pitch )
root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH;
- /* We only set this flag if we have the patented bytecode interpreter. */
- /* There are no known `tricky' Type42 fonts that could be loaded with */
- /* the unpatented interpreter. */
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
root->face_flags |= FT_FACE_FLAG_HINTER;
#endif
@@ -397,12 +394,6 @@
if ( clazz )
error = FT_CMap_New( clazz, NULL, &charmap, NULL );
-
-#if 0
- /* Select default charmap */
- if ( root->num_charmaps )
- root->charmap = root->charmaps[0];
-#endif
}
}
Exit:
@@ -593,7 +584,7 @@
FT_Error error = FT_Err_Ok;
- if ( face->glyph == NULL )
+ if ( !face->glyph )
{
/* First glyph slot for this face */
slot->ttslot = t42face->ttf_face->glyph;
@@ -659,8 +650,9 @@
FT_TRACE1(( "T42_GlyphSlot_Load: glyph index %d\n", glyph_index ));
/* map T42 glyph index to embedded TTF's glyph index */
- glyph_index = (FT_UInt)ft_atol(
- (const char *)t42face->type1.charstrings[glyph_index] );
+ glyph_index = (FT_UInt)ft_strtol(
+ (const char *)t42face->type1.charstrings[glyph_index],
+ NULL, 10 );
t42_glyphslot_clear( t42slot->ttslot );
error = ttclazz->load_glyph( t42slot->ttslot,
diff --git a/src/3rdparty/freetype/src/type42/t42objs.h b/src/3rdparty/freetype/src/type42/t42objs.h
index 3722c670f0..3bad5135e0 100644
--- a/src/3rdparty/freetype/src/type42/t42objs.h
+++ b/src/3rdparty/freetype/src/type42/t42objs.h
@@ -4,7 +4,7 @@
/* */
/* Type 42 objects manager (specification). */
/* */
-/* Copyright 2002-2015 by */
+/* Copyright 2002-2018 by */
/* Roberto Alameda. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -16,8 +16,8 @@
/***************************************************************************/
-#ifndef __T42OBJS_H__
-#define __T42OBJS_H__
+#ifndef T42OBJS_H_
+#define T42OBJS_H_
#include <ft2build.h>
#include FT_FREETYPE_H
@@ -118,7 +118,7 @@ FT_BEGIN_HEADER
FT_END_HEADER
-#endif /* __T42OBJS_H__ */
+#endif /* T42OBJS_H_ */
/* END */
diff --git a/src/3rdparty/freetype/src/type42/t42parse.c b/src/3rdparty/freetype/src/type42/t42parse.c
index 003b63ed77..4813d1f3f9 100644
--- a/src/3rdparty/freetype/src/type42/t42parse.c
+++ b/src/3rdparty/freetype/src/type42/t42parse.c
@@ -4,7 +4,7 @@
/* */
/* Type 42 font parser (body). */
/* */
-/* Copyright 2002-2015 by */
+/* Copyright 2002-2018 by */
/* Roberto Alameda. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -575,6 +575,9 @@
while ( parser->root.cursor < limit )
{
+ FT_ULong size;
+
+
cur = parser->root.cursor;
if ( *cur == ']' )
@@ -637,7 +640,7 @@
string_buf = parser->root.cursor + 1; /* one space after `RD' */
- if ( (FT_ULong)( limit - parser->root.cursor ) < string_size )
+ if ( (FT_ULong)( limit - parser->root.cursor ) <= string_size )
{
FT_ERROR(( "t42_parse_sfnts: too much binary data\n" ));
error = FT_THROW( Invalid_File_Format );
@@ -666,6 +669,11 @@
goto Fail;
}
+ /* The whole TTF is now loaded into `string_buf'. We are */
+ /* checking its contents while copying it to `ttf_data'. */
+
+ size = (FT_ULong)( limit - parser->root.cursor );
+
for ( n = 0; n < string_size; n++ )
{
switch ( status )
@@ -683,7 +691,7 @@
status = BEFORE_TABLE_DIR;
face->ttf_size = 12 + 16 * num_tables;
- if ( (FT_Long)( limit - parser->root.cursor ) < face->ttf_size )
+ if ( (FT_Long)size < face->ttf_size )
{
FT_ERROR(( "t42_parse_sfnts: invalid data in sfnts array\n" ));
error = FT_THROW( Invalid_File_Format );
@@ -714,6 +722,14 @@
len = FT_PEEK_ULONG( p );
+ if ( len > size ||
+ face->ttf_size > (FT_Long)( size - len ) )
+ {
+ FT_ERROR(( "t42_parse_sfnts:"
+ " invalid data in sfnts array\n" ));
+ error = FT_THROW( Invalid_File_Format );
+ goto Fail;
+ }
/* Pad to a 4-byte boundary length */
face->ttf_size += (FT_Long)( ( len + 3 ) & ~3U );
@@ -721,7 +737,6 @@
status = OTHER_TABLES;
- /* there are no more than 256 tables, so no size check here */
if ( FT_REALLOC( face->ttf_data, 12 + 16 * num_tables,
face->ttf_size + 1 ) )
goto Fail;
@@ -795,6 +810,17 @@
error = FT_THROW( Invalid_File_Format );
goto Fail;
}
+
+ /* we certainly need more than 4 bytes per glyph */
+ if ( loader->num_glyphs > ( limit - parser->root.cursor ) >> 2 )
+ {
+ FT_TRACE0(( "t42_parse_charstrings: adjusting number of glyphs"
+ " (from %d to %d)\n",
+ loader->num_glyphs,
+ ( limit - parser->root.cursor ) >> 2 ));
+ loader->num_glyphs = ( limit - parser->root.cursor ) >> 2;
+ }
+
}
else if ( *parser->root.cursor == '<' )
{
@@ -873,8 +899,13 @@
for (;;)
{
- /* The format is simple: */
- /* `/glyphname' + index [+ def] */
+ /* We support two formats. */
+ /* */
+ /* `/glyphname' + index [+ `def'] */
+ /* `(glyphname)' [+ `cvn'] + index [+ `def'] */
+ /* */
+ /* The latter format gets created by the */
+ /* LilyPond typesetting program. */
T1_Skip_Spaces( parser );
@@ -902,12 +933,13 @@
if ( parser->root.error )
return;
- if ( *cur == '/' )
+ if ( *cur == '/' || *cur == '(' )
{
FT_UInt len;
+ FT_Bool have_literal = FT_BOOL( *cur == '(' );
- if ( cur + 2 >= limit )
+ if ( cur + ( have_literal ? 3 : 2 ) >= limit )
{
FT_ERROR(( "t42_parse_charstrings: out of bounds\n" ));
error = FT_THROW( Invalid_File_Format );
@@ -916,6 +948,8 @@
cur++; /* skip `/' */
len = (FT_UInt)( parser->root.cursor - cur );
+ if ( have_literal )
+ len--;
error = T1_Add_Table( name_table, n, cur, len + 1 );
if ( error )
@@ -935,6 +969,9 @@
T1_Skip_Spaces( parser );
+ if ( have_literal )
+ T1_Skip_PS_Token( parser );
+
cur = parser->root.cursor;
(void)T1_ToInt( parser );
@@ -1231,7 +1268,7 @@
{
FT_UNUSED( face );
- FT_MEM_ZERO( loader, sizeof ( *loader ) );
+ FT_ZERO( loader );
loader->num_glyphs = 0;
loader->num_chars = 0;
diff --git a/src/3rdparty/freetype/src/type42/t42parse.h b/src/3rdparty/freetype/src/type42/t42parse.h
index 8ed2fde65d..f35d23de63 100644
--- a/src/3rdparty/freetype/src/type42/t42parse.h
+++ b/src/3rdparty/freetype/src/type42/t42parse.h
@@ -4,7 +4,7 @@
/* */
/* Type 42 font parser (specification). */
/* */
-/* Copyright 2002-2015 by */
+/* Copyright 2002-2018 by */
/* Roberto Alameda. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -16,8 +16,8 @@
/***************************************************************************/
-#ifndef __T42PARSE_H__
-#define __T42PARSE_H__
+#ifndef T42PARSE_H_
+#define T42PARSE_H_
#include "t42objs.h"
@@ -85,7 +85,7 @@ FT_BEGIN_HEADER
FT_END_HEADER
-#endif /* __T42PARSE_H__ */
+#endif /* T42PARSE_H_ */
/* END */
diff --git a/src/3rdparty/freetype/src/type42/t42types.h b/src/3rdparty/freetype/src/type42/t42types.h
index 01286af827..d0aa2de570 100644
--- a/src/3rdparty/freetype/src/type42/t42types.h
+++ b/src/3rdparty/freetype/src/type42/t42types.h
@@ -4,7 +4,7 @@
/* */
/* Type 42 font data types (specification only). */
/* */
-/* Copyright 2002-2015 by */
+/* Copyright 2002-2018 by */
/* Roberto Alameda. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -16,8 +16,8 @@
/***************************************************************************/
-#ifndef __T42TYPES_H__
-#define __T42TYPES_H__
+#ifndef T42TYPES_H_
+#define T42TYPES_H_
#include <ft2build.h>
@@ -51,7 +51,7 @@ FT_BEGIN_HEADER
FT_END_HEADER
-#endif /* __T42TYPES_H__ */
+#endif /* T42TYPES_H_ */
/* END */
diff --git a/src/3rdparty/freetype/src/type42/type42.c b/src/3rdparty/freetype/src/type42/type42.c
index 3332b7b7e6..6a89cfbed1 100644
--- a/src/3rdparty/freetype/src/type42/type42.c
+++ b/src/3rdparty/freetype/src/type42/type42.c
@@ -4,7 +4,7 @@
/* */
/* FreeType Type 42 driver component. */
/* */
-/* Copyright 2002-2015 by */
+/* Copyright 2002-2018 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -15,11 +15,13 @@
/* */
/***************************************************************************/
-#define FT_MAKE_OPTION_SINGLE_OBJECT
+#define FT_MAKE_OPTION_SINGLE_OBJECT
#include <ft2build.h>
+
+#include "t42drivr.c"
#include "t42objs.c"
#include "t42parse.c"
-#include "t42drivr.c"
+
/* END */