diff options
author | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2021-08-29 06:19:44 +0000 |
---|---|---|
committer | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2021-08-29 06:19:44 +0000 |
commit | 0de5be92a3a0fe27e8521fc4de67e19b1057842e (patch) | |
tree | e93a390fe965486cca19498840cb8d7904252fec /Build/source/libs/freetype2/freetype-src/src/sfnt | |
parent | 27ce96eea3f1190bd744448cfa149e8d767af95a (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')
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, |