summaryrefslogtreecommitdiff
path: root/Build/source/libs/freetype2/freetype-src/src/sfnt
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2021-08-29 06:19:44 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2021-08-29 06:19:44 +0000
commit0de5be92a3a0fe27e8521fc4de67e19b1057842e (patch)
treee93a390fe965486cca19498840cb8d7904252fec /Build/source/libs/freetype2/freetype-src/src/sfnt
parent27ce96eea3f1190bd744448cfa149e8d767af95a (diff)
revert freetype to 2.10.4
git-svn-id: svn://tug.org/texlive/trunk@60360 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/freetype2/freetype-src/src/sfnt')
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/module.mk2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/pngshim.c13
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/pngshim.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/rules.mk2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/sfdriver.c41
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/sfdriver.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/sferrors.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/sfnt.c2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.c24
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff.c14
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff2.c57
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff2.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttbdf.c2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttbdf.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.c12
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmapc.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttcolr.c710
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttcolr.h23
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttcpal.c2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttcpal.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttkern.c2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttkern.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttload.c35
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttload.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttmtx.c2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttmtx.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.c111
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttsbit.c22
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/ttsbit.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/woff2tags.c2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/sfnt/woff2tags.h2
35 files changed, 179 insertions, 931 deletions
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/module.mk b/Build/source/libs/freetype2/freetype-src/src/sfnt/module.mk
index eabd48f6093..0f459d84218 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/module.mk
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2021 by
+# Copyright (C) 1996-2020 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/Build/source/libs/freetype2/freetype-src/src/sfnt/pngshim.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/pngshim.c
index 02fe37440c0..f55016122c1 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/pngshim.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/pngshim.c
@@ -4,7 +4,7 @@
*
* PNG Bitmap glyph support.
*
- * Copyright (C) 2013-2021 by
+ * Copyright (C) 2013-2020 by
* Google, Inc.
* Written by Stuart Gill and Behdad Esfahbod.
*
@@ -270,10 +270,7 @@
int bitdepth, color_type, interlace;
FT_Int i;
-
- /* `rows` gets modified within a 'setjmp' scope; */
- /* we thus need the `volatile` keyword. */
- png_byte* *volatile rows = NULL;
+ png_byte* *rows = NULL; /* pacify compiler */
if ( x_offset < 0 ||
@@ -430,7 +427,7 @@
goto DestroyExit;
}
- if ( FT_QNEW_ARRAY( rows, imgHeight ) )
+ if ( FT_NEW_ARRAY( rows, imgHeight ) )
{
error = FT_THROW( Out_Of_Memory );
goto DestroyExit;
@@ -441,11 +438,11 @@
png_read_image( png, rows );
+ FT_FREE( rows );
+
png_read_end( png, info );
DestroyExit:
- /* even if reading fails with longjmp, rows must be freed */
- FT_FREE( rows );
png_destroy_read_struct( &png, &info, NULL );
FT_Stream_Close( &stream );
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/pngshim.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/pngshim.h
index 89efd27545b..2d6e83d69b0 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/pngshim.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/pngshim.h
@@ -4,7 +4,7 @@
*
* PNG Bitmap glyph support.
*
- * Copyright (C) 2013-2021 by
+ * Copyright (C) 2013-2020 by
* Google, Inc.
* Written by Stuart Gill and Behdad Esfahbod.
*
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/rules.mk b/Build/source/libs/freetype2/freetype-src/src/sfnt/rules.mk
index d41305c0ad6..f56ef060ed3 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/rules.mk
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2021 by
+# Copyright (C) 1996-2020 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/Build/source/libs/freetype2/freetype-src/src/sfnt/sfdriver.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfdriver.c
index 824e709fab6..0460339a74f 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfdriver.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfdriver.c
@@ -4,7 +4,7 @@
*
* High-level SFNT driver interface (body).
*
- * Copyright (C) 1996-2021 by
+ * Copyright (C) 1996-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -501,7 +501,7 @@
FT_UNUSED( error );
- if ( FT_QALLOC( result, entry->stringLength / 2 + 1 ) )
+ if ( FT_ALLOC( result, entry->stringLength / 2 + 1 ) )
return NULL;
if ( FT_STREAM_SEEK( entry->stringOffset ) ||
@@ -560,7 +560,7 @@
FT_UNUSED( error );
- if ( FT_QALLOC( result, entry->stringLength + 1 ) )
+ if ( FT_ALLOC( result, entry->stringLength + 1 ) )
return NULL;
if ( FT_STREAM_SEEK( entry->stringOffset ) ||
@@ -868,8 +868,8 @@
result[len] = '\0';
FT_TRACE0(( "sfnt_get_var_ps_name:"
- " Shortening variation PS name prefix\n" ));
- FT_TRACE0(( " "
+ " Shortening variation PS name prefix\n"
+ " "
" to %d characters\n", len ));
}
@@ -920,16 +920,16 @@
if ( !subfamily_name )
{
FT_TRACE1(( "sfnt_get_var_ps_name:"
- " can't construct named instance PS name;\n" ));
- FT_TRACE1(( " "
+ " can't construct named instance PS name;\n"
+ " "
" trying to construct normal instance PS name\n" ));
goto construct_instance_name;
}
/* after the prefix we have character `-' followed by the */
/* subfamily name (using only characters a-z, A-Z, and 0-9) */
- if ( FT_QALLOC( result, face->var_postscript_prefix_len +
- 1 + ft_strlen( subfamily_name ) + 1 ) )
+ if ( FT_ALLOC( result, face->var_postscript_prefix_len +
+ 1 + ft_strlen( subfamily_name ) + 1 ) )
return NULL;
ft_strcpy( result, face->var_postscript_prefix );
@@ -957,9 +957,9 @@
construct_instance_name:
axis = mm_var->axis;
- if ( FT_QALLOC( result,
- face->var_postscript_prefix_len +
- num_coords * MAX_VALUE_DESCRIPTOR_LEN + 1 ) )
+ if ( FT_ALLOC( result,
+ face->var_postscript_prefix_len +
+ num_coords * MAX_VALUE_DESCRIPTOR_LEN + 1 ) )
return NULL;
p = result;
@@ -993,7 +993,6 @@
if ( t != ' ' && ft_isalnum( t ) )
*p++ = t;
}
- *p++ = '\0';
}
check_length:
@@ -1214,8 +1213,6 @@
#define PUT_COLOR_LAYERS( a ) NULL
#endif
-#define PUT_COLOR_LAYERS_V1( a ) PUT_COLOR_LAYERS( a )
-
#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
#define PUT_PS_NAMES( a ) a
#else
@@ -1274,9 +1271,9 @@
/* TT_Free_Table_Func free_eblc */
PUT_EMBEDDED_BITMAPS( tt_face_set_sbit_strike ),
- /* TT_Set_SBit_Strike_Func set_sbit_strike */
+ /* TT_Set_SBit_Strike_Func set_sbit_strike */
PUT_EMBEDDED_BITMAPS( tt_face_load_strike_metrics ),
- /* TT_Load_Strike_Metrics_Func load_strike_metrics */
+ /* TT_Load_Strike_Metrics_Func load_strike_metrics */
PUT_COLOR_LAYERS( tt_face_load_cpal ),
/* TT_Load_Table_Func load_cpal */
@@ -1290,16 +1287,6 @@
/* TT_Set_Palette_Func set_palette */
PUT_COLOR_LAYERS( tt_face_get_colr_layer ),
/* TT_Get_Colr_Layer_Func get_colr_layer */
-
- PUT_COLOR_LAYERS_V1( tt_face_get_colr_glyph_paint ),
- /* TT_Get_Colr_Glyph_Paint_Func get_colr_glyph_paint */
- PUT_COLOR_LAYERS_V1( tt_face_get_paint_layers ),
- /* TT_Get_Paint_Layers_Func get_paint_layers */
- PUT_COLOR_LAYERS_V1( tt_face_get_colorline_stops ),
- /* TT_Get_Paint get_paint */
- PUT_COLOR_LAYERS_V1( tt_face_get_paint ),
- /* TT_Get_Colorline_Stops_Func get_colorline_stops */
-
PUT_COLOR_LAYERS( tt_face_colr_blend_layer ),
/* TT_Blend_Colr_Func colr_blend */
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfdriver.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfdriver.h
index 8d5b5ce367c..1ac2706325f 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfdriver.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfdriver.h
@@ -4,7 +4,7 @@
*
* High-level SFNT driver interface (specification).
*
- * Copyright (C) 1996-2021 by
+ * Copyright (C) 1996-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/sferrors.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/sferrors.h
index 78e6f03513a..55c3e76b666 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/sferrors.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/sferrors.h
@@ -4,7 +4,7 @@
*
* SFNT error codes (specification only).
*
- * Copyright (C) 2001-2021 by
+ * Copyright (C) 2001-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfnt.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfnt.c
index 97692cdfb0a..471239ff0ba 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfnt.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfnt.c
@@ -4,7 +4,7 @@
*
* Single object library component.
*
- * Copyright (C) 1996-2021 by
+ * Copyright (C) 1996-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.c
index cf730717eb0..39460be2e6c 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.c
@@ -4,7 +4,7 @@
*
* SFNT object management (base).
*
- * Copyright (C) 1996-2021 by
+ * Copyright (C) 1996-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -65,7 +65,7 @@
len = (FT_UInt)entry->stringLength / 2;
- if ( FT_QNEW_ARRAY( string, len + 1 ) )
+ if ( FT_NEW_ARRAY( string, len + 1 ) )
return NULL;
for ( n = 0; n < len; n++ )
@@ -100,7 +100,7 @@
len = (FT_UInt)entry->stringLength;
- if ( FT_QNEW_ARRAY( string, len + 1 ) )
+ if ( FT_NEW_ARRAY( string, len + 1 ) )
return NULL;
for ( n = 0; n < len; n++ )
@@ -446,7 +446,7 @@
return FT_THROW( Array_Too_Large );
/* now read the offsets of each font in the file */
- if ( FT_QNEW_ARRAY( face->ttc_header.offsets, face->ttc_header.count ) )
+ if ( FT_NEW_ARRAY( face->ttc_header.offsets, face->ttc_header.count ) )
return error;
if ( FT_FRAME_ENTER( face->ttc_header.count * 4L ) )
@@ -464,7 +464,7 @@
face->ttc_header.version = 1 << 16;
face->ttc_header.count = 1;
- if ( FT_QNEW( face->ttc_header.offsets ) )
+ if ( FT_NEW( face->ttc_header.offsets ) )
return error;
face->ttc_header.offsets[0] = offset;
@@ -643,8 +643,8 @@
*/
if ( ( face->variation_support & TT_FACE_FLAG_VAR_FVAR ) &&
- !( FT_QALLOC( default_values, num_axes * 4 ) ||
- FT_QALLOC( instance_values, num_axes * 4 ) ) )
+ !( FT_ALLOC( default_values, num_axes * 4 ) ||
+ FT_ALLOC( instance_values, num_axes * 4 ) ) )
{
/* the current stream position is 16 bytes after the table start */
FT_ULong array_start = FT_STREAM_POS() - 16 + offset;
@@ -820,8 +820,7 @@
/* it doesn't contain outlines. */
/* */
- FT_TRACE2(( "sfnt_load_face: %p\n", (void *)face ));
- FT_TRACE2(( "\n" ));
+ FT_TRACE2(( "sfnt_load_face: %p\n\n", (void *)face ));
/* do we have outlines in there? */
#ifdef FT_CONFIG_OPTION_INCREMENTAL
@@ -1150,10 +1149,9 @@
}
/* synthesize Unicode charmap if one is missing */
- if ( !has_unicode &&
- root->face_flags & FT_FACE_FLAG_GLYPH_NAMES )
+ if ( !has_unicode )
{
- FT_CharMapRec cmaprec;
+ FT_CharMapRec cmaprec;
cmaprec.face = root;
@@ -1238,7 +1236,7 @@
}
/* reduce array size to the actually used elements */
- (void)FT_QRENEW_ARRAY( sbit_strike_map, count, bsize_idx );
+ (void)FT_RENEW_ARRAY( sbit_strike_map, count, bsize_idx );
/* from now on, all strike indices are mapped */
/* using `sbit_strike_map' */
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.h
index 172c47ebb48..e8e30420830 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.h
@@ -4,7 +4,7 @@
*
* SFNT object management (specification).
*
- * Copyright (C) 1996-2021 by
+ * Copyright (C) 1996-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff.c
index 44c926ed413..f0a32e1e065 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff.c
@@ -4,7 +4,7 @@
*
* WOFF format management (base).
*
- * Copyright (C) 1996-2021 by
+ * Copyright (C) 1996-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -66,7 +66,7 @@
}
- FT_COMPARE_DEF( int )
+ FT_CALLBACK_DEF( int )
compare_offsets( const void* a,
const void* b )
{
@@ -160,8 +160,8 @@
}
/* Don't trust `totalSfntSize' before thorough checks. */
- if ( FT_QALLOC( sfnt, 12 + woff.num_tables * 16UL ) ||
- FT_NEW( sfnt_stream ) )
+ if ( FT_ALLOC( sfnt, 12 + woff.num_tables * 16UL ) ||
+ FT_NEW( sfnt_stream ) )
goto Exit;
sfnt_header = sfnt;
@@ -198,9 +198,9 @@
FT_NEW_ARRAY( indices, woff.num_tables ) )
goto Exit;
- FT_TRACE2(( "\n" ));
- FT_TRACE2(( " tag offset compLen origLen checksum\n" ));
- FT_TRACE2(( " -------------------------------------------\n" ));
+ FT_TRACE2(( "\n"
+ " tag offset compLen origLen checksum\n"
+ " -------------------------------------------\n" ));
if ( FT_FRAME_ENTER( 20L * woff.num_tables ) )
goto Exit;
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff.h
index e2f22731e20..d177ab11600 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff.h
@@ -4,7 +4,7 @@
*
* WOFFF format management (specification).
*
- * Copyright (C) 1996-2021 by
+ * Copyright (C) 1996-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff2.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff2.c
index df04072382e..5c8202f8237 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff2.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff2.c
@@ -4,7 +4,7 @@
*
* WOFF2 format management (base).
*
- * Copyright (C) 2019-2021 by
+ * Copyright (C) 2019-2020 by
* Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -101,7 +101,7 @@
}
- FT_COMPARE_DEF( int )
+ FT_CALLBACK_DEF( int )
compare_tags( const void* a,
const void* b )
{
@@ -341,11 +341,6 @@
#else /* !FT_CONFIG_OPTION_USE_BROTLI */
- FT_UNUSED( dst );
- FT_UNUSED( dst_size );
- FT_UNUSED( src );
- FT_UNUSED( src_size );
-
FT_ERROR(( "woff2_decompress: Brotli support not available.\n" ));
return FT_THROW( Unimplemented_Feature );
@@ -795,7 +790,7 @@
goto Fail;
loca_buf_size = loca_values_size * offset_size;
- if ( FT_QNEW_ARRAY( loca_buf, loca_buf_size ) )
+ if ( FT_NEW_ARRAY( loca_buf, loca_buf_size ) )
goto Fail;
dst = loca_buf;
@@ -1857,10 +1852,11 @@
FT_NEW_ARRAY( indices, woff2.num_tables ) )
goto Exit;
- FT_TRACE2(( "\n" ));
- FT_TRACE2(( " tag flags transform origLen transformLen offset\n" ));
- FT_TRACE2(( " -----------------------------------------------------------\n" ));
- /* " XXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX" */
+ FT_TRACE2((
+ "\n"
+ " tag flags transform origLen transformLen offset\n"
+ " -----------------------------------------------------------\n" ));
+ /* " XXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX" */
for ( nn = 0; nn < woff2.num_tables; nn++ )
{
@@ -2123,8 +2119,8 @@
/* Create a temporary array. */
- if ( FT_QNEW_ARRAY( temp_indices,
- ttc_font->num_tables ) )
+ if ( FT_NEW_ARRAY( temp_indices,
+ ttc_font->num_tables ) )
goto Exit;
FT_TRACE4(( "Storing tables for TTC face index %d.\n", face_index ));
@@ -2132,9 +2128,9 @@
temp_indices[nn] = indices[ttc_font->table_indices[nn]];
/* Resize array to required size. */
- if ( FT_QRENEW_ARRAY( indices,
- woff2.num_tables,
- ttc_font->num_tables ) )
+ if ( FT_RENEW_ARRAY( indices,
+ woff2.num_tables,
+ ttc_font->num_tables ) )
goto Exit;
for ( nn = 0; nn < ttc_font->num_tables; nn++ )
@@ -2174,8 +2170,8 @@
}
/* Write sfnt header. */
- if ( FT_QALLOC( sfnt, sfnt_size ) ||
- FT_NEW( sfnt_stream ) )
+ if ( FT_ALLOC( sfnt, sfnt_size ) ||
+ FT_NEW( sfnt_stream ) )
goto Exit;
sfnt_header = sfnt;
@@ -2213,25 +2209,6 @@
sizeof ( WOFF2_Table ),
compare_tags );
- /* reject fonts that have multiple tables with the same tag */
- for ( nn = 1; nn < woff2.num_tables; nn++ )
- {
- FT_ULong tag = indices[nn]->Tag;
-
-
- if ( tag == indices[nn - 1]->Tag )
- {
- FT_ERROR(( "woff2_open_font:"
- " multiple tables with tag `%c%c%c%c'.\n",
- (FT_Char)( tag >> 24 ),
- (FT_Char)( tag >> 16 ),
- (FT_Char)( tag >> 8 ),
- (FT_Char)( tag ) ));
- error = FT_THROW( Invalid_Table );
- goto Exit;
- }
- }
-
if ( woff2.uncompressed_size < 1 )
{
error = FT_THROW( Invalid_Table );
@@ -2246,8 +2223,8 @@
}
/* Allocate memory for uncompressed table data. */
- if ( FT_QALLOC( uncompressed_buf, woff2.uncompressed_size ) ||
- FT_FRAME_ENTER( woff2.totalCompressedSize ) )
+ if ( FT_ALLOC( uncompressed_buf, woff2.uncompressed_size ) ||
+ FT_FRAME_ENTER( woff2.totalCompressedSize ) )
goto Exit;
/* Uncompress the stream. */
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff2.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff2.h
index 27f3da7b1d3..798f66bd0af 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff2.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff2.h
@@ -4,7 +4,7 @@
*
* WOFFF2 format management (specification).
*
- * Copyright (C) 2019-2021 by
+ * Copyright (C) 2019-2020 by
* Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttbdf.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttbdf.c
index b8d9473a632..a287d3afc47 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttbdf.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttbdf.c
@@ -4,7 +4,7 @@
*
* TrueType and OpenType embedded BDF properties (body).
*
- * Copyright (C) 2005-2021 by
+ * Copyright (C) 2005-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttbdf.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttbdf.h
index 91271d916f7..e60c01cb8ba 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttbdf.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttbdf.h
@@ -4,7 +4,7 @@
*
* TrueType and OpenType embedded BDF properties (specification).
*
- * Copyright (C) 2005-2021 by
+ * Copyright (C) 2005-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.c
index b369d837884..556a712199f 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.c
@@ -4,7 +4,7 @@
*
* TrueType character mapping table (cmap) support (body).
*
- * Copyright (C) 2002-2021 by
+ * Copyright (C) 2002-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -916,16 +916,6 @@
length = (FT_UInt)( valid->limit - table );
}
- /* it also happens that the `length' field is too small; */
- /* this is easy to correct */
- if ( length < (FT_UInt)( valid->limit - table ) )
- {
- if ( valid->level >= FT_VALIDATE_PARANOID )
- FT_INVALID_DATA;
-
- length = (FT_UInt)( valid->limit - table );
- }
-
if ( length < 16 )
FT_INVALID_TOO_SHORT;
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.h
index 504fc951c41..c7d7c21d2c0 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.h
@@ -4,7 +4,7 @@
*
* TrueType character mapping table (cmap) support (specification).
*
- * Copyright (C) 2002-2021 by
+ * Copyright (C) 2002-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmapc.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmapc.h
index 4e6cd46ba88..2e4ce5075b8 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmapc.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmapc.h
@@ -4,7 +4,7 @@
*
* TT CMAP classes definitions (specification only).
*
- * Copyright (C) 2009-2021 by
+ * Copyright (C) 2009-2020 by
* Oran Agra and Mickey Gabel.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcolr.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcolr.c
index bd478ab9b5b..9025e356ce3 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcolr.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcolr.c
@@ -4,8 +4,8 @@
*
* TrueType and OpenType colored glyph layer support (body).
*
- * Copyright (C) 2018-2021 by
- * David Turner, Robert Wilhelm, Dominik Röttsches, and Werner Lemberg.
+ * Copyright (C) 2018-2020 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Originally written by Shao Yu Zhang <shaozhang@fb.com>.
*
@@ -31,7 +31,6 @@
#include <freetype/internal/ftstream.h>
#include <freetype/tttags.h>
#include <freetype/ftcolor.h>
-#include <freetype/config/integer-types.h>
#ifdef TT_CONFIG_OPTION_COLOR_LAYERS
@@ -40,27 +39,12 @@
/* NOTE: These are the table sizes calculated through the specs. */
-#define BASE_GLYPH_SIZE 6U
-#define BASE_GLYPH_PAINT_RECORD_SIZE 6U
-#define LAYER_V1_LIST_PAINT_OFFSET_SIZE 4U
-#define LAYER_V1_LIST_NUM_LAYERS_SIZE 4U
-#define COLOR_STOP_SIZE 6U
-#define LAYER_SIZE 4U
-#define COLR_HEADER_SIZE 14U
+#define BASE_GLYPH_SIZE 6U
+#define LAYER_SIZE 4U
+#define COLR_HEADER_SIZE 14U
- typedef enum FT_PaintFormat_Internal_
- {
- FT_COLR_PAINTFORMAT_INTERNAL_SCALE_CENTER = 18,
- FT_COLR_PAINTFORMAT_INTERNAL_SCALE_UNIFORM = 20,
- FT_COLR_PAINTFORMAT_INTERNAL_SCALE_UNIFORM_CENTER = 22,
- FT_COLR_PAINTFORMAT_INTERNAL_ROTATE_CENTER = 26,
- FT_COLR_PAINTFORMAT_INTERNAL_SKEW_CENTER = 30
-
- } FT_PaintFormat_Internal;
-
-
- typedef struct BaseGlyphRecord_
+ typedef struct BaseGlyphRecord_
{
FT_UShort gid;
FT_UShort first_layer_index;
@@ -69,16 +53,7 @@
} BaseGlyphRecord;
- typedef struct BaseGlyphV1Record_
- {
- FT_UShort gid;
- /* Offset from start of BaseGlyphV1List, i.e., from base_glyphs_v1. */
- FT_ULong paint_offset;
-
- } BaseGlyphV1Record;
-
-
- typedef struct Colr_
+ typedef struct Colr_
{
FT_UShort version;
FT_UShort num_base_glyphs;
@@ -87,21 +62,7 @@
FT_Byte* base_glyphs;
FT_Byte* layers;
- FT_ULong num_base_glyphs_v1;
- /* Points at beginning of BaseGlyphV1List. */
- FT_Byte* base_glyphs_v1;
-
- FT_ULong num_layers_v1;
- FT_Byte* layers_v1;
-
- /*
- * Paint tables start at the minimum of the end of the LayerList and the
- * end of the BaseGlyphList. Record this location in a field here for
- * safety checks when accessing paint tables.
- */
- FT_Byte* paints_start_v1;
-
- /* The memory that backs up the `COLR' table. */
+ /* The memory which backs up the `COLR' table. */
void* table;
FT_ULong table_size;
@@ -127,14 +88,10 @@
FT_Byte* table = NULL;
FT_Byte* p = NULL;
- /* Needed for reading array lengths in referenced tables. */
- FT_Byte* p1 = NULL;
Colr* colr = NULL;
FT_ULong base_glyph_offset, layer_offset;
- FT_ULong base_glyphs_offset_v1, num_base_glyphs_v1;
- FT_ULong layer_offset_v1, num_layers_v1;
FT_ULong table_size;
@@ -158,7 +115,7 @@
goto NoColr;
colr->version = FT_NEXT_USHORT( p );
- if ( colr->version != 0 && colr->version != 1 )
+ if ( colr->version != 0 )
goto InvalidTable;
colr->num_base_glyphs = FT_NEXT_USHORT( p );
@@ -178,56 +135,6 @@
if ( colr->num_layers * LAYER_SIZE > table_size - layer_offset )
goto InvalidTable;
- if ( colr->version == 1 )
- {
- base_glyphs_offset_v1 = FT_NEXT_ULONG( p );
-
- if ( base_glyphs_offset_v1 >= table_size )
- goto InvalidTable;
-
- p1 = (FT_Byte*)( table + base_glyphs_offset_v1 );
- num_base_glyphs_v1 = FT_PEEK_ULONG( p1 );
-
- if ( num_base_glyphs_v1 * BASE_GLYPH_PAINT_RECORD_SIZE >
- table_size - base_glyphs_offset_v1 )
- goto InvalidTable;
-
- colr->num_base_glyphs_v1 = num_base_glyphs_v1;
- colr->base_glyphs_v1 = p1;
-
- layer_offset_v1 = FT_NEXT_ULONG( p );
-
- if ( layer_offset_v1 >= table_size )
- goto InvalidTable;
-
- if ( layer_offset_v1 )
- {
- p1 = (FT_Byte*)( table + layer_offset_v1 );
- num_layers_v1 = FT_PEEK_ULONG( p1 );
-
- if ( num_layers_v1 * LAYER_V1_LIST_PAINT_OFFSET_SIZE >
- table_size - layer_offset_v1 )
- goto InvalidTable;
-
- colr->num_layers_v1 = num_layers_v1;
- colr->layers_v1 = p1;
-
- colr->paints_start_v1 =
- FT_MIN( colr->base_glyphs_v1 +
- colr->num_base_glyphs_v1 * BASE_GLYPH_PAINT_RECORD_SIZE,
- colr->layers_v1 +
- colr->num_layers_v1 * LAYER_V1_LIST_PAINT_OFFSET_SIZE );
- }
- else
- {
- colr->num_layers_v1 = 0;
- colr->layers_v1 = 0;
- colr->paints_start_v1 =
- colr->base_glyphs_v1 +
- colr->num_base_glyphs_v1 * BASE_GLYPH_PAINT_RECORD_SIZE;
- }
- }
-
colr->base_glyphs = (FT_Byte*)( table + base_glyph_offset );
colr->layers = (FT_Byte*)( table + layer_offset );
colr->table = table;
@@ -267,17 +174,17 @@
static FT_Bool
find_base_glyph_record( FT_Byte* base_glyph_begin,
- FT_UInt num_base_glyph,
+ FT_Int num_base_glyph,
FT_UInt glyph_id,
BaseGlyphRecord* record )
{
- FT_UInt min = 0;
- FT_UInt max = num_base_glyph;
+ FT_Int min = 0;
+ FT_Int max = num_base_glyph - 1;
- while ( min < max )
+ while ( min <= max )
{
- FT_UInt mid = min + ( max - min ) / 2;
+ FT_Int mid = min + ( max - min ) / 2;
FT_Byte* p = base_glyph_begin + mid * BASE_GLYPH_SIZE;
FT_UShort gid = FT_NEXT_USHORT( p );
@@ -286,7 +193,7 @@
if ( gid < glyph_id )
min = mid + 1;
else if (gid > glyph_id )
- max = mid;
+ max = mid - 1;
else
{
record->gid = gid;
@@ -358,593 +265,6 @@
}
- static FT_Bool
- read_color_line( FT_Byte* color_line_p,
- FT_ColorLine *colorline )
- {
- FT_Byte* p = color_line_p;
- FT_PaintExtend paint_extend;
-
-
- paint_extend = (FT_PaintExtend)FT_NEXT_BYTE( p );
- if ( paint_extend > FT_COLR_PAINT_EXTEND_REFLECT )
- return 0;
-
- colorline->extend = paint_extend;
-
- colorline->color_stop_iterator.num_color_stops = FT_NEXT_USHORT( p );
- colorline->color_stop_iterator.p = p;
- colorline->color_stop_iterator.current_color_stop = 0;
-
- return 1;
- }
-
-
- /*
- * Read a paint offset for `FT_Paint*` objects that have them and check
- * whether it is within reasonable limits within the font and the COLR
- * table.
- *
- * Return 1 on success, 0 on failure.
- */
- static FT_Bool
- get_child_table_pointer ( Colr* colr,
- FT_Byte* paint_base,
- FT_Byte** p,
- FT_Byte** child_table_pointer )
- {
- FT_UInt32 paint_offset;
- FT_Byte* child_table_p;
-
-
- if ( !child_table_pointer )
- return 0;
-
- paint_offset = FT_NEXT_UOFF3( *p );
- if ( !paint_offset )
- return 0;
-
- child_table_p = (FT_Byte*)( paint_base + paint_offset );
-
- if ( child_table_p < colr->paints_start_v1 ||
- child_table_p >= ( (FT_Byte*)colr->table + colr->table_size ) )
- return 0;
-
- *child_table_pointer = child_table_p;
- return 1;
- }
-
-
- static FT_Bool
- read_paint( Colr* colr,
- FT_Byte* p,
- FT_COLR_Paint* apaint )
- {
- FT_Byte* paint_base = p;
- FT_Byte* child_table_p = NULL;
-
-
- if ( !p || !colr || !colr->table )
- return 0;
-
- if ( p < colr->paints_start_v1 ||
- p >= ( (FT_Byte*)colr->table + colr->table_size ) )
- return 0;
-
- apaint->format = (FT_PaintFormat)FT_NEXT_BYTE( p );
-
- if ( apaint->format >= FT_COLR_PAINT_FORMAT_MAX )
- return 0;
-
- if ( apaint->format == FT_COLR_PAINTFORMAT_COLR_LAYERS )
- {
- /* Initialize layer iterator/ */
- FT_Byte num_layers;
- FT_UInt32 first_layer_index;
-
-
- num_layers = FT_NEXT_BYTE( p );
- if ( num_layers > colr->num_layers_v1 )
- return 0;
-
- first_layer_index = FT_NEXT_ULONG( p );
- if ( first_layer_index + num_layers > colr->num_layers_v1 )
- return 0;
-
- apaint->u.colr_layers.layer_iterator.num_layers = num_layers;
- apaint->u.colr_layers.layer_iterator.layer = 0;
- /* TODO: Check whether pointer is outside colr? */
- apaint->u.colr_layers.layer_iterator.p =
- colr->layers_v1 +
- LAYER_V1_LIST_NUM_LAYERS_SIZE +
- LAYER_V1_LIST_PAINT_OFFSET_SIZE * first_layer_index;
-
- return 1;
- }
-
- else if ( apaint->format == FT_COLR_PAINTFORMAT_SOLID )
- {
- apaint->u.solid.color.palette_index = FT_NEXT_USHORT( p );
- apaint->u.solid.color.alpha = FT_NEXT_SHORT( p );
-
- return 1;
- }
-
- else if ( apaint->format == FT_COLR_PAINTFORMAT_COLR_GLYPH )
- {
- apaint->u.colr_glyph.glyphID = FT_NEXT_USHORT( p );
-
- return 1;
- }
-
- /*
- * Grouped below here are all paint formats that have an offset to a
- * child paint table as the first entry (for example, a color line or a
- * child paint table). Retrieve that and determine whether that paint
- * offset is valid first.
- */
-
- if ( !get_child_table_pointer( colr, paint_base, &p, &child_table_p ) )
- return 0;
-
- if ( apaint->format == FT_COLR_PAINTFORMAT_LINEAR_GRADIENT )
- {
- if ( !read_color_line( child_table_p,
- &apaint->u.linear_gradient.colorline ) )
- return 0;
-
- apaint->u.linear_gradient.p0.x = FT_NEXT_SHORT( p );
- apaint->u.linear_gradient.p0.y = FT_NEXT_SHORT( p );
- apaint->u.linear_gradient.p1.x = FT_NEXT_SHORT( p );
- apaint->u.linear_gradient.p1.y = FT_NEXT_SHORT( p );
- apaint->u.linear_gradient.p2.x = FT_NEXT_SHORT( p );
- apaint->u.linear_gradient.p2.y = FT_NEXT_SHORT( p );
-
- return 1;
- }
-
- else if ( apaint->format == FT_COLR_PAINTFORMAT_RADIAL_GRADIENT )
- {
- if ( !read_color_line( child_table_p,
- &apaint->u.radial_gradient.colorline ) )
- return 0;
-
- apaint->u.radial_gradient.c0.x = FT_NEXT_SHORT( p );
- apaint->u.radial_gradient.c0.y = FT_NEXT_SHORT( p );
-
- apaint->u.radial_gradient.r0 = FT_NEXT_USHORT( p );
-
- apaint->u.radial_gradient.c1.x = FT_NEXT_SHORT( p );
- apaint->u.radial_gradient.c1.y = FT_NEXT_SHORT( p );
-
- apaint->u.radial_gradient.r1 = FT_NEXT_USHORT( p );
-
- return 1;
- }
-
- else if ( apaint->format == FT_COLR_PAINTFORMAT_SWEEP_GRADIENT )
- {
- if ( !read_color_line( child_table_p,
- &apaint->u.sweep_gradient.colorline ) )
- return 0;
-
- apaint->u.sweep_gradient.center.x = FT_NEXT_SHORT( p );
- apaint->u.sweep_gradient.center.y = FT_NEXT_SHORT( p );
-
- apaint->u.sweep_gradient.start_angle = FT_NEXT_LONG( p );
- apaint->u.sweep_gradient.end_angle = FT_NEXT_LONG( p );
-
- return 1;
- }
-
- if ( apaint->format == FT_COLR_PAINTFORMAT_GLYPH )
- {
- apaint->u.glyph.paint.p = child_table_p;
- apaint->u.glyph.paint.insert_root_transform = 0;
- apaint->u.glyph.glyphID = FT_NEXT_USHORT( p );
-
- return 1;
- }
-
- else if ( apaint->format == FT_COLR_PAINTFORMAT_TRANSFORM )
- {
- apaint->u.transform.paint.p = child_table_p;
- apaint->u.transform.paint.insert_root_transform = 0;
-
- apaint->u.transform.affine.xx = FT_NEXT_LONG( p );
- apaint->u.transform.affine.yx = FT_NEXT_LONG( p );
- apaint->u.transform.affine.xy = FT_NEXT_LONG( p );
- apaint->u.transform.affine.yy = FT_NEXT_LONG( p );
- apaint->u.transform.affine.dx = FT_NEXT_LONG( p );
- apaint->u.transform.affine.dy = FT_NEXT_LONG( p );
-
- return 1;
- }
-
- else if ( apaint->format == FT_COLR_PAINTFORMAT_TRANSLATE )
- {
- apaint->u.translate.paint.p = child_table_p;
- apaint->u.translate.paint.insert_root_transform = 0;
-
- apaint->u.translate.dx = FT_NEXT_LONG( p );
- apaint->u.translate.dy = FT_NEXT_LONG( p );
-
- return 1;
- }
-
- else if ( apaint->format ==
- FT_COLR_PAINTFORMAT_SCALE ||
- (FT_PaintFormat_Internal)apaint->format ==
- FT_COLR_PAINTFORMAT_INTERNAL_SCALE_CENTER ||
- (FT_PaintFormat_Internal)apaint->format ==
- FT_COLR_PAINTFORMAT_INTERNAL_SCALE_UNIFORM ||
- (FT_PaintFormat_Internal)apaint->format ==
- FT_COLR_PAINTFORMAT_INTERNAL_SCALE_UNIFORM_CENTER )
- {
- apaint->u.scale.paint.p = child_table_p;
- apaint->u.scale.paint.insert_root_transform = 0;
-
- /* All scale paints get at least one scale value. */
- apaint->u.scale.scale_x = FT_NEXT_LONG( p );
-
- /* Non-uniform ones read an extra y value. */
- if ( apaint->format ==
- FT_COLR_PAINTFORMAT_SCALE ||
- (FT_PaintFormat_Internal)apaint->format ==
- FT_COLR_PAINTFORMAT_INTERNAL_SCALE_CENTER )
- apaint->u.scale.scale_y = FT_NEXT_LONG( p );
- else
- apaint->u.scale.scale_y = apaint->u.scale.scale_x;
-
- /* Scale paints that have a center read center coordinates, */
- /* otherwise the center is (0,0). */
- if ( (FT_PaintFormat_Internal)apaint->format ==
- FT_COLR_PAINTFORMAT_INTERNAL_SCALE_CENTER ||
- (FT_PaintFormat_Internal)apaint->format ==
- FT_COLR_PAINTFORMAT_INTERNAL_SCALE_UNIFORM_CENTER )
- {
- apaint->u.scale.center_x = FT_NEXT_LONG ( p );
- apaint->u.scale.center_y = FT_NEXT_LONG ( p );
- }
- else
- {
- apaint->u.scale.center_x = 0;
- apaint->u.scale.center_y = 0;
- }
-
- /* FT 'COLR' v1 API output format always returns fully defined */
- /* structs; we thus set the format to the public API value. */
- apaint->format = FT_COLR_PAINTFORMAT_SCALE;
-
- return 1;
- }
-
- else if ( apaint->format == FT_COLR_PAINTFORMAT_ROTATE )
- {
- apaint->u.rotate.paint.p = child_table_p;
- apaint->u.rotate.paint.insert_root_transform = 0;
-
- apaint->u.rotate.angle = FT_NEXT_LONG( p );
-
- apaint->u.rotate.center_x = FT_NEXT_LONG( p );
- apaint->u.rotate.center_y = FT_NEXT_LONG( p );
-
- return 1;
- }
-
- else if ( apaint->format == FT_COLR_PAINTFORMAT_SKEW )
- {
- apaint->u.skew.paint.p = child_table_p;
- apaint->u.skew.paint.insert_root_transform = 0;
-
- apaint->u.skew.x_skew_angle = FT_NEXT_LONG( p );
- apaint->u.skew.y_skew_angle = FT_NEXT_LONG( p );
-
- apaint->u.skew.center_x = FT_NEXT_LONG( p );
- apaint->u.skew.center_y = FT_NEXT_LONG( p );
-
- return 1;
- }
-
- else if ( apaint->format == FT_COLR_PAINTFORMAT_COMPOSITE )
- {
- FT_UInt composite_mode;
-
-
- apaint->u.composite.source_paint.p = child_table_p;
- apaint->u.composite.source_paint.insert_root_transform = 0;
-
- composite_mode = FT_NEXT_BYTE( p );
- if ( composite_mode >= FT_COLR_COMPOSITE_MAX )
- return 0;
-
- apaint->u.composite.composite_mode = (FT_Composite_Mode)composite_mode;
-
- if ( !get_child_table_pointer( colr, paint_base, &p, &child_table_p ) )
- return 0;
-
- apaint->u.composite.backdrop_paint.p =
- child_table_p;
- apaint->u.composite.backdrop_paint.insert_root_transform =
- 0;
-
- return 1;
- }
-
- return 0;
- }
-
-
- static FT_Bool
- find_base_glyph_v1_record( FT_Byte * base_glyph_begin,
- FT_UInt num_base_glyph,
- FT_UInt glyph_id,
- BaseGlyphV1Record *record )
- {
- FT_UInt min = 0;
- FT_UInt max = num_base_glyph;
-
-
- while ( min < max )
- {
- FT_UInt mid = min + ( max - min ) / 2;
-
- /*
- * `base_glyph_begin` is the beginning of `BaseGlyphV1List`;
- * skip `numBaseGlyphV1Records` by adding 4 to start binary search
- * in the array of `BaseGlyphV1Record`.
- */
- FT_Byte *p = base_glyph_begin + 4 + mid * BASE_GLYPH_PAINT_RECORD_SIZE;
-
- FT_UShort gid = FT_NEXT_USHORT( p );
-
-
- if ( gid < glyph_id )
- min = mid + 1;
- else if (gid > glyph_id )
- max = mid;
- else
- {
- record->gid = gid;
- record->paint_offset = FT_NEXT_ULONG ( p );
- return 1;
- }
- }
-
- return 0;
- }
-
-
- FT_LOCAL_DEF( FT_Bool )
- tt_face_get_colr_glyph_paint( TT_Face face,
- FT_UInt base_glyph,
- FT_Color_Root_Transform root_transform,
- FT_OpaquePaint* opaque_paint )
- {
- Colr* colr = (Colr*)face->colr;
- BaseGlyphV1Record base_glyph_v1_record;
- FT_Byte* p;
-
- if ( !colr || !colr->table )
- return 0;
-
- if ( colr->version < 1 || !colr->num_base_glyphs_v1 ||
- !colr->base_glyphs_v1 )
- return 0;
-
- if ( opaque_paint->p )
- return 0;
-
- if ( !find_base_glyph_v1_record( colr->base_glyphs_v1,
- colr->num_base_glyphs_v1,
- base_glyph,
- &base_glyph_v1_record ) )
- return 0;
-
- if ( !base_glyph_v1_record.paint_offset ||
- base_glyph_v1_record.paint_offset > colr->table_size )
- return 0;
-
- p = (FT_Byte*)( colr->base_glyphs_v1 +
- base_glyph_v1_record.paint_offset );
- if ( p >= ( (FT_Byte*)colr->table + colr->table_size ) )
- return 0;
-
- opaque_paint->p = p;
-
- if ( root_transform == FT_COLOR_INCLUDE_ROOT_TRANSFORM )
- opaque_paint->insert_root_transform = 1;
- else
- opaque_paint->insert_root_transform = 0;
-
- return 1;
- }
-
-
- FT_LOCAL_DEF( FT_Bool )
- tt_face_get_paint_layers( TT_Face face,
- FT_LayerIterator* iterator,
- FT_OpaquePaint* opaque_paint )
- {
- FT_Byte* p = NULL;
- FT_Byte* p_first_layer = NULL;
- FT_Byte* p_paint = NULL;
- FT_UInt32 paint_offset;
-
- Colr* colr;
-
-
- if ( iterator->layer == iterator->num_layers )
- return 0;
-
- colr = (Colr*)face->colr;
- if ( !colr )
- return 0;
-
- /*
- * We have an iterator pointing at a paint offset as part of the
- * `paintOffset` array in `LayerV1List`.
- */
- p = iterator->p;
-
- /*
- * First ensure that p is within COLRv1.
- */
- if ( p < colr->layers_v1 ||
- p >= ( (FT_Byte*)colr->table + colr->table_size ) )
- return 0;
-
- /*
- * Do a cursor sanity check of the iterator. Counting backwards from
- * where it stands, we need to end up at a position after the beginning
- * of the `LayerV1List` table and not after the end of the
- * `LayerV1List`.
- */
- p_first_layer = p -
- iterator->layer * LAYER_V1_LIST_PAINT_OFFSET_SIZE -
- LAYER_V1_LIST_NUM_LAYERS_SIZE;
- if ( p_first_layer < (FT_Byte*)colr->layers_v1 )
- return 0;
- if ( p_first_layer >= (FT_Byte*)(
- colr->layers_v1 + LAYER_V1_LIST_NUM_LAYERS_SIZE +
- colr->num_layers_v1 * LAYER_V1_LIST_PAINT_OFFSET_SIZE ) )
- return 0;
-
- paint_offset =
- FT_NEXT_ULONG( p );
- opaque_paint->insert_root_transform =
- 0;
-
- p_paint = (FT_Byte*)( colr->layers_v1 + paint_offset );
-
- if ( p_paint < colr->paints_start_v1 ||
- p_paint >= ( (FT_Byte*)colr->table + colr->table_size ) )
- return 0;
-
- opaque_paint->p = p_paint;
-
- iterator->p = p;
-
- iterator->layer++;
-
- return 1;
- }
-
-
- FT_LOCAL_DEF( FT_Bool )
- tt_face_get_colorline_stops( TT_Face face,
- FT_ColorStop* color_stop,
- FT_ColorStopIterator *iterator )
- {
- Colr* colr = (Colr*)face->colr;
-
- FT_Byte* p;
-
-
- if ( !colr || !colr->table )
- return 0;
-
- if ( iterator->current_color_stop >= iterator->num_color_stops )
- return 0;
-
- if ( iterator->p +
- ( ( iterator->num_color_stops - iterator->current_color_stop ) *
- COLOR_STOP_SIZE ) >
- ( (FT_Byte *)colr->table + colr->table_size ) )
- return 0;
-
- /* Iterator points at first `ColorStop` of `ColorLine`. */
- p = iterator->p;
-
- color_stop->stop_offset = FT_NEXT_SHORT( p );
-
- color_stop->color.palette_index = FT_NEXT_USHORT( p );
-
- color_stop->color.alpha = FT_NEXT_SHORT( p );
-
- iterator->p = p;
- iterator->current_color_stop++;
-
- return 1;
- }
-
-
- FT_LOCAL_DEF( FT_Bool )
- tt_face_get_paint( TT_Face face,
- FT_OpaquePaint opaque_paint,
- FT_COLR_Paint* paint )
- {
- Colr* colr = (Colr*)face->colr;
- FT_OpaquePaint next_paint;
- FT_Matrix ft_root_scale;
-
- if ( !colr || !colr->base_glyphs_v1 || !colr->table )
- return 0;
-
- if ( opaque_paint.insert_root_transform )
- {
- /* 'COLR' v1 glyph information is returned in unscaled coordinates,
- * i.e., `FT_Size` is not applied or multiplied into the values. When
- * client applications draw color glyphs, they can request to include
- * a top-level transform, which includes the active `x_scale` and
- * `y_scale` information for scaling the glyph, as well the additional
- * transform and translate configured through `FT_Set_Transform`.
- * This allows client applications to apply this top-level transform
- * to the graphics context first and only once, then have gradient and
- * contour scaling applied correctly when performing the additional
- * drawing operations for subsequenct paints. Prepare this initial
- * transform here.
- */
- paint->format = FT_COLR_PAINTFORMAT_TRANSFORM;
-
- next_paint.p = opaque_paint.p;
- next_paint.insert_root_transform = 0;
- paint->u.transform.paint = next_paint;
-
- /* `x_scale` and `y_scale` are in 26.6 format, representing the scale
- * factor to get from font units to requested size. However, expected
- * return values are in 16.16, so we shift accordingly with rounding.
- */
- ft_root_scale.xx = ( face->root.size->metrics.x_scale + 32 ) >> 6;
- ft_root_scale.xy = 0;
- ft_root_scale.yx = 0;
- ft_root_scale.yy = ( face->root.size->metrics.y_scale + 32 ) >> 6;
-
- if ( face->root.internal->transform_flags & 1 )
- FT_Matrix_Multiply( &face->root.internal->transform_matrix,
- &ft_root_scale );
-
- paint->u.transform.affine.xx = ft_root_scale.xx;
- paint->u.transform.affine.xy = ft_root_scale.xy;
- paint->u.transform.affine.yx = ft_root_scale.yx;
- paint->u.transform.affine.yy = ft_root_scale.yy;
-
- /* The translation is specified in 26.6 format and, according to the
- * documentation of `FT_Set_Translate`, is performed on the character
- * size given in the last call to `FT_Set_Char_Size`. The
- * 'PaintTransform' paint table's `FT_Affine23` format expects
- * values in 16.16 format, thus we need to shift by 10 bits.
- */
- if ( face->root.internal->transform_flags & 2 )
- {
- paint->u.transform.affine.dx =
- face->root.internal->transform_delta.x << 10;
- paint->u.transform.affine.dy =
- face->root.internal->transform_delta.y << 10;
- }
- else
- {
- paint->u.transform.affine.dx = 0;
- paint->u.transform.affine.dy = 0;
- }
-
- return 1;
- }
-
- return read_paint( colr, opaque_paint.p, paint );
- }
-
-
FT_LOCAL_DEF( FT_Error )
tt_face_colr_blend_layer( TT_Face face,
FT_UInt color_index,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcolr.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcolr.h
index c91d2b1723e..6412162669f 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcolr.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcolr.h
@@ -4,7 +4,7 @@
*
* TrueType and OpenType colored glyph layer support (specification).
*
- * Copyright (C) 2018-2021 by
+ * Copyright (C) 2018-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Originally written by Shao Yu Zhang <shaozhang@fb.com>.
@@ -42,27 +42,6 @@ FT_BEGIN_HEADER
FT_UInt *acolor_index,
FT_LayerIterator* iterator );
- FT_LOCAL( FT_Bool )
- tt_face_get_colr_glyph_paint( TT_Face face,
- FT_UInt base_glyph,
- FT_Color_Root_Transform root_transform,
- FT_OpaquePaint* paint );
-
- FT_LOCAL( FT_Bool )
- tt_face_get_paint_layers( TT_Face face,
- FT_LayerIterator* iterator,
- FT_OpaquePaint* paint );
-
- FT_LOCAL( FT_Bool )
- tt_face_get_colorline_stops( TT_Face face,
- FT_ColorStop* color_stop,
- FT_ColorStopIterator* iterator );
-
- FT_LOCAL( FT_Bool )
- tt_face_get_paint( TT_Face face,
- FT_OpaquePaint opaque_paint,
- FT_COLR_Paint* paint );
-
FT_LOCAL( FT_Error )
tt_face_colr_blend_layer( TT_Face face,
FT_UInt color_index,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcpal.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcpal.c
index a0d84bca3a6..9c514bafe58 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcpal.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcpal.c
@@ -4,7 +4,7 @@
*
* TrueType and OpenType color palette support (body).
*
- * Copyright (C) 2018-2021 by
+ * Copyright (C) 2018-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Originally written by Shao Yu Zhang <shaozhang@fb.com>.
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcpal.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcpal.h
index 1c5586855b9..b544be696a4 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcpal.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcpal.h
@@ -4,7 +4,7 @@
*
* TrueType and OpenType color palette support (specification).
*
- * Copyright (C) 2018-2021 by
+ * Copyright (C) 2018-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Originally written by Shao Yu Zhang <shaozhang@fb.com>.
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttkern.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttkern.c
index bb1922caf95..d4a70c7855a 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttkern.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttkern.c
@@ -5,7 +5,7 @@
* Load the basic TrueType kerning table. This doesn't handle
* kerning data within the GPOS table at the moment.
*
- * Copyright (C) 1996-2021 by
+ * Copyright (C) 1996-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttkern.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttkern.h
index 3d8f1e83477..f44b5bdeb0d 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttkern.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttkern.h
@@ -5,7 +5,7 @@
* Load the basic TrueType kerning table. This doesn't handle
* kerning data within the GPOS table at the moment.
*
- * Copyright (C) 1996-2021 by
+ * Copyright (C) 1996-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttload.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttload.c
index d8ea9ea01cd..4b46f41357c 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttload.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttload.c
@@ -5,7 +5,7 @@
* Load the basic TrueType tables, i.e., tables that can be either in
* TTF or OTF fonts (body).
*
- * Copyright (C) 1996-2021 by
+ * Copyright (C) 1996-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -416,9 +416,9 @@
FT_FRAME_ENTER( sfnt.num_tables * 16L ) )
goto Exit;
- FT_TRACE2(( "\n" ));
- FT_TRACE2(( " tag offset length checksum\n" ));
- FT_TRACE2(( " ----------------------------------\n" ));
+ FT_TRACE2(( "\n"
+ " tag offset length checksum\n"
+ " ----------------------------------\n" ));
valid_entries = 0;
for ( nn = 0; nn < sfnt.num_tables; nn++ )
@@ -505,8 +505,7 @@
FT_FRAME_EXIT();
- FT_TRACE2(( "table directory loaded\n" ));
- FT_TRACE2(( "\n" ));
+ FT_TRACE2(( "table directory loaded\n\n" ));
Exit:
return error;
@@ -795,8 +794,8 @@
if ( maxProfile->maxTwilightPoints > ( 0xFFFFU - 4 ) )
{
FT_TRACE0(( "tt_face_load_maxp:"
- " too much twilight points in `maxp' table;\n" ));
- FT_TRACE0(( " "
+ " too much twilight points in `maxp' table;\n"
+ " "
" some glyphs might be rendered incorrectly\n" ));
maxProfile->maxTwilightPoints = 0xFFFFU - 4;
@@ -917,8 +916,8 @@
storage_start += 2 + 4 * table->numLangTagRecords;
/* allocate language tag records array */
- if ( FT_QNEW_ARRAY( table->langTags, table->numLangTagRecords ) ||
- FT_FRAME_ENTER( table->numLangTagRecords * 4 ) )
+ if ( FT_NEW_ARRAY( table->langTags, table->numLangTagRecords ) ||
+ FT_FRAME_ENTER( table->numLangTagRecords * 4 ) )
goto Exit;
/* load language tags */
@@ -948,8 +947,8 @@
}
/* allocate name records array */
- if ( FT_QNEW_ARRAY( table->names, table->numNameRecords ) ||
- FT_FRAME_ENTER( table->numNameRecords * 12 ) )
+ if ( FT_NEW_ARRAY( table->names, table->numNameRecords ) ||
+ FT_FRAME_ENTER( table->numNameRecords * 12 ) )
goto Exit;
/* load name records */
@@ -993,9 +992,9 @@
/* reduce array size to the actually used elements */
count = (FT_UInt)( entry - table->names );
- (void)FT_QRENEW_ARRAY( table->names,
- table->numNameRecords,
- count );
+ (void)FT_RENEW_ARRAY( table->names,
+ table->numNameRecords,
+ count );
table->numNameRecords = count;
}
@@ -1312,12 +1311,6 @@
if ( FT_STREAM_READ_FIELDS( post_fields, post ) )
return error;
- if ( post->FormatType != 0x00030000L &&
- post->FormatType != 0x00025000L &&
- post->FormatType != 0x00020000L &&
- post->FormatType != 0x00010000L )
- return FT_THROW( Invalid_Post_Table_Format );
-
/* we don't load the glyph names, we do that in another */
/* module (ttpost). */
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttload.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttload.h
index cab15cd2387..4e53d8b7823 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttload.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttload.h
@@ -5,7 +5,7 @@
* Load the basic TrueType tables, i.e., tables that can be either in
* TTF or OTF fonts (specification).
*
- * Copyright (C) 1996-2021 by
+ * Copyright (C) 1996-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttmtx.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttmtx.c
index 7aece36fb01..021123336ed 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttmtx.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttmtx.c
@@ -4,7 +4,7 @@
*
* Load the metrics tables common to TTF and OTF fonts (body).
*
- * Copyright (C) 2006-2021 by
+ * Copyright (C) 2006-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttmtx.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttmtx.h
index 270170d4782..dba65ca9ba3 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttmtx.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttmtx.h
@@ -4,7 +4,7 @@
*
* Load the metrics tables common to TTF and OTF fonts (specification).
*
- * Copyright (C) 2006-2021 by
+ * Copyright (C) 2006-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.c
index b92ca5db149..e93a4bf1b16 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.c
@@ -5,7 +5,7 @@
* PostScript name table processing for TrueType and OpenType fonts
* (body).
*
- * Copyright (C) 1996-2021 by
+ * Copyright (C) 1996-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -158,7 +158,7 @@
static FT_Error
load_format_20( TT_Face face,
FT_Stream stream,
- FT_ULong post_len )
+ FT_ULong post_limit )
{
FT_Memory memory = stream->memory;
FT_Error error;
@@ -168,7 +168,6 @@
FT_UShort* glyph_indices = NULL;
FT_Char** name_strings = NULL;
- FT_Byte* strings = NULL;
if ( FT_READ_USHORT( num_glyphs ) )
@@ -180,8 +179,7 @@
/* There already exist fonts which have more than 32768 glyph names */
/* in this table, so the test for this threshold has been dropped. */
- if ( num_glyphs > face->max_profile.numGlyphs ||
- (FT_ULong)num_glyphs * 2UL > post_len - 2 )
+ if ( num_glyphs > face->max_profile.numGlyphs )
{
error = FT_THROW( Invalid_File_Format );
goto Exit;
@@ -192,7 +190,7 @@
FT_Int n;
- if ( FT_QNEW_ARRAY( glyph_indices, num_glyphs ) ||
+ if ( FT_NEW_ARRAY ( glyph_indices, num_glyphs ) ||
FT_FRAME_ENTER( num_glyphs * 2L ) )
goto Fail;
@@ -225,56 +223,60 @@
}
/* now load the name strings */
- if ( num_names )
{
FT_UShort n;
- FT_ULong p;
- post_len -= (FT_ULong)num_glyphs * 2UL + 2;
-
- if ( FT_QALLOC( strings, post_len + 1 ) ||
- FT_STREAM_READ( strings, post_len ) ||
- FT_QNEW_ARRAY( name_strings, num_names ) )
+ if ( FT_NEW_ARRAY( name_strings, num_names ) )
goto Fail;
- /* convert from Pascal- to C-strings and set pointers */
- for ( p = 0, n = 0; p < post_len && n < num_names; n++ )
+ for ( n = 0; n < num_names; n++ )
{
- FT_UInt len = strings[p];
+ FT_UInt len;
- if ( len > 63U )
+ if ( FT_STREAM_POS() >= post_limit )
+ break;
+ else
{
- error = FT_THROW( Invalid_File_Format );
- goto Fail;
- }
+ FT_TRACE6(( "load_format_20: %ld byte left in post table\n",
+ post_limit - FT_STREAM_POS() ));
- strings[p] = 0;
- name_strings[n] = (FT_Char*)strings + p + 1;
- p += len + 1;
- }
- strings[post_len] = 0;
+ if ( FT_READ_BYTE( len ) )
+ goto Fail1;
+ }
- /* deal with missing or insufficient string data */
- if ( n < num_names )
- {
- if ( post_len == 0 )
+ if ( len > post_limit ||
+ FT_STREAM_POS() > post_limit - len )
{
- /* fake empty string */
- if ( FT_QREALLOC( strings, 1, 2 ) )
- goto Fail;
+ FT_Int d = (FT_Int)post_limit - (FT_Int)FT_STREAM_POS();
+
- post_len = 1;
- strings[post_len] = 0;
+ FT_ERROR(( "load_format_20:"
+ " exceeding string length (%d),"
+ " truncating at end of post table (%d byte left)\n",
+ len, d ));
+ len = (FT_UInt)FT_MAX( 0, d );
}
+ if ( FT_NEW_ARRAY( name_strings[n], len + 1 ) ||
+ FT_STREAM_READ( name_strings[n], len ) )
+ goto Fail1;
+
+ name_strings[n][len] = '\0';
+ }
+
+ if ( n < num_names )
+ {
FT_ERROR(( "load_format_20:"
" all entries in post table are already parsed,"
" using NULL names for gid %d - %d\n",
n, num_names - 1 ));
for ( ; n < num_names; n++ )
- name_strings[n] = (FT_Char*)strings + post_len;
+ if ( FT_NEW_ARRAY( name_strings[n], 1 ) )
+ goto Fail1;
+ else
+ name_strings[n][0] = '\0';
}
}
@@ -290,9 +292,17 @@
}
return FT_Err_Ok;
+ Fail1:
+ {
+ FT_UShort n;
+
+
+ for ( n = 0; n < num_names; n++ )
+ FT_FREE( name_strings[n] );
+ }
+
Fail:
FT_FREE( name_strings );
- FT_FREE( strings );
FT_FREE( glyph_indices );
Exit:
@@ -303,7 +313,7 @@
static FT_Error
load_format_25( TT_Face face,
FT_Stream stream,
- FT_ULong post_len )
+ FT_ULong post_limit )
{
FT_Memory memory = stream->memory;
FT_Error error;
@@ -311,7 +321,7 @@
FT_Int num_glyphs;
FT_Char* offset_table = NULL;
- FT_UNUSED( post_len );
+ FT_UNUSED( post_limit );
if ( FT_READ_USHORT( num_glyphs ) )
@@ -326,7 +336,7 @@
goto Exit;
}
- if ( FT_QNEW_ARRAY( offset_table, num_glyphs ) ||
+ if ( FT_NEW_ARRAY( offset_table, num_glyphs ) ||
FT_STREAM_READ( offset_table, num_glyphs ) )
goto Fail;
@@ -374,6 +384,7 @@
FT_Error error;
FT_Fixed format;
FT_ULong post_len;
+ FT_ULong post_limit;
/* get a stream for the face's resource */
@@ -384,6 +395,8 @@
if ( error )
goto Exit;
+ post_limit = FT_STREAM_POS() + post_len;
+
format = face->postscript.FormatType;
/* go to beginning of subtable */
@@ -391,10 +404,10 @@
goto Exit;
/* now read postscript table */
- if ( format == 0x00020000L && post_len >= 34 )
- error = load_format_20( face, stream, post_len - 32 );
- else if ( format == 0x00025000L && post_len >= 34 )
- error = load_format_25( face, stream, post_len - 32 );
+ if ( format == 0x00020000L )
+ error = load_format_20( face, stream, post_limit );
+ else if ( format == 0x00025000L )
+ error = load_format_25( face, stream, post_limit );
else
error = FT_THROW( Invalid_File_Format );
@@ -420,19 +433,17 @@
if ( format == 0x00020000L )
{
TT_Post_20 table = &names->names.format_20;
+ FT_UShort n;
FT_FREE( table->glyph_indices );
table->num_glyphs = 0;
- if ( table->num_names )
- {
- table->glyph_names[0]--;
- FT_FREE( table->glyph_names[0] );
+ for ( n = 0; n < table->num_names; n++ )
+ FT_FREE( table->glyph_names[n] );
- FT_FREE( table->glyph_names );
- table->num_names = 0;
- }
+ FT_FREE( table->glyph_names );
+ table->num_names = 0;
}
else if ( format == 0x00025000L )
{
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.h
index 6d65b5766c2..94c7d168008 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.h
@@ -5,7 +5,7 @@
* PostScript name table processing for TrueType and OpenType fonts
* (specification).
*
- * Copyright (C) 1996-2021 by
+ * Copyright (C) 1996-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttsbit.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttsbit.c
index e9ba697dba0..9dd44197106 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttsbit.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttsbit.c
@@ -4,7 +4,7 @@
*
* TrueType and OpenType embedded bitmap support (body).
*
- * Copyright (C) 2005-2021 by
+ * Copyright (C) 2005-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Copyright 2013 by Google, Inc.
@@ -172,17 +172,13 @@
goto Exit;
}
-#ifdef FT_DEBUG_LEVEL_TRACE
/* we currently don't support bit 1; however, it is better to */
/* draw at least something... */
if ( flags == 3 )
- {
FT_TRACE1(( "tt_face_load_sbit_strikes:"
- " sbix overlay not supported yet\n" ));
- FT_TRACE1(( " "
+ " sbix overlay not supported yet\n"
+ " "
" expect bad rendering results\n" ));
- }
-#endif
/*
* Count the number of strikes available in the table. We are a bit
@@ -244,8 +240,8 @@
if ( !face->ebdt_size )
{
FT_TRACE2(( "tt_face_load_sbit_strikes:"
- " no embedded bitmap data table found;\n" ));
- FT_TRACE2(( " "
+ " no embedded bitmap data table found;\n"
+ " "
" resetting number of strikes to zero\n" ));
face->sbit_num_strikes = 0;
}
@@ -349,8 +345,8 @@
if ( metrics->ascender == 0 )
{
FT_TRACE2(( "tt_face_load_strike_metrics:"
- " sanitizing invalid ascender and descender\n" ));
- FT_TRACE2(( " "
+ " sanitizing invalid ascender and descender\n"
+ " "
" values for strike %ld (%dppem, %dppem)\n",
strike_index,
metrics->x_ppem, metrics->y_ppem ));
@@ -378,8 +374,8 @@
if ( metrics->height == 0 )
{
FT_TRACE2(( "tt_face_load_strike_metrics:"
- " sanitizing invalid height value\n" ));
- FT_TRACE2(( " "
+ " sanitizing invalid height value\n"
+ " "
" for strike (%d, %d)\n",
metrics->x_ppem, metrics->y_ppem ));
metrics->height = metrics->y_ppem * 64;
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttsbit.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttsbit.h
index 7a0ed92e920..b867e43a61a 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/ttsbit.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/ttsbit.h
@@ -4,7 +4,7 @@
*
* TrueType and OpenType embedded bitmap support (specification).
*
- * Copyright (C) 1996-2021 by
+ * Copyright (C) 1996-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/woff2tags.c b/Build/source/libs/freetype2/freetype-src/src/sfnt/woff2tags.c
index 84748268c1a..fd9f2e6c5d4 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/woff2tags.c
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/woff2tags.c
@@ -4,7 +4,7 @@
*
* WOFF2 Font table tags (base).
*
- * Copyright (C) 2019-2021 by
+ * Copyright (C) 2019-2020 by
* Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/Build/source/libs/freetype2/freetype-src/src/sfnt/woff2tags.h b/Build/source/libs/freetype2/freetype-src/src/sfnt/woff2tags.h
index 543daf89111..c437c77aa1f 100644
--- a/Build/source/libs/freetype2/freetype-src/src/sfnt/woff2tags.h
+++ b/Build/source/libs/freetype2/freetype-src/src/sfnt/woff2tags.h
@@ -4,7 +4,7 @@
*
* WOFFF2 Font table tags (specification).
*
- * Copyright (C) 2019-2021 by
+ * Copyright (C) 2019-2020 by
* Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,