summaryrefslogtreecommitdiff
path: root/Build/source/libs/freetype2/freetype-src/src/raster
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/raster
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/raster')
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/raster/ftmisc.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/raster/ftraster.c294
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/raster/ftraster.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/raster/ftrend1.c2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/raster/ftrend1.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/raster/module.mk2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/raster/raster.c2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/raster/rasterrs.h2
-rw-r--r--Build/source/libs/freetype2/freetype-src/src/raster/rules.mk2
9 files changed, 179 insertions, 131 deletions
diff --git a/Build/source/libs/freetype2/freetype-src/src/raster/ftmisc.h b/Build/source/libs/freetype2/freetype-src/src/raster/ftmisc.h
index 9de0b126993..6efe4a9a5a2 100644
--- a/Build/source/libs/freetype2/freetype-src/src/raster/ftmisc.h
+++ b/Build/source/libs/freetype2/freetype-src/src/raster/ftmisc.h
@@ -5,7 +5,7 @@
* Miscellaneous macros for stand-alone rasterizer (specification
* only).
*
- * 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/raster/ftraster.c b/Build/source/libs/freetype2/freetype-src/src/raster/ftraster.c
index fbcf8d22a21..9f0a7976fad 100644
--- a/Build/source/libs/freetype2/freetype-src/src/raster/ftraster.c
+++ b/Build/source/libs/freetype2/freetype-src/src/raster/ftraster.c
@@ -4,7 +4,7 @@
*
* The FreeType glyph rasterizer (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,
@@ -149,6 +149,9 @@
/*************************************************************************/
/*************************************************************************/
+ /* define DEBUG_RASTER if you want to compile a debugging version */
+/* #define DEBUG_RASTER */
+
/*************************************************************************/
/*************************************************************************/
@@ -197,13 +200,12 @@
#define FT_THROW( e ) FT_ERR_CAT( Raster_Err_, e )
#endif
-#define Raster_Err_Ok 0
-#define Raster_Err_Invalid_Outline -1
-#define Raster_Err_Cannot_Render_Glyph -2
-#define Raster_Err_Invalid_Argument -3
-#define Raster_Err_Raster_Overflow -4
-#define Raster_Err_Raster_Uninitialized -5
-#define Raster_Err_Raster_Negative_Height -6
+#define Raster_Err_None 0
+#define Raster_Err_Not_Ini -1
+#define Raster_Err_Overflow -2
+#define Raster_Err_Neg_Height -3
+#define Raster_Err_Invalid -4
+#define Raster_Err_Unsupported -5
#define ft_memset memset
@@ -228,6 +230,13 @@
#include "rasterrs.h"
+#define Raster_Err_None FT_Err_Ok
+#define Raster_Err_Not_Ini Raster_Err_Raster_Uninitialized
+#define Raster_Err_Overflow Raster_Err_Raster_Overflow
+#define Raster_Err_Neg_Height Raster_Err_Raster_Negative_Height
+#define Raster_Err_Invalid Raster_Err_Invalid_Outline
+#define Raster_Err_Unsupported Raster_Err_Cannot_Render_Glyph
+
#endif /* !STANDALONE_ */
@@ -366,6 +375,16 @@
typedef PProfile* PProfileList;
+ /* Simple record used to implement a stack of bands, required */
+ /* by the sub-banding mechanism */
+ typedef struct black_TBand_
+ {
+ Short y_min; /* band's minimum */
+ Short y_max; /* band's maximum */
+
+ } black_TBand;
+
+
#define AlignProfileSize \
( ( sizeof ( TProfile ) + sizeof ( Alignment ) - 1 ) / sizeof ( Long ) )
@@ -407,8 +426,8 @@
/* prototypes used for sweep function dispatch */
typedef void
- Function_Sweep_Init( RAS_ARGS Short min,
- Short max );
+ Function_Sweep_Init( RAS_ARGS Short* min,
+ Short* max );
typedef void
Function_Sweep_Span( RAS_ARGS Short y,
@@ -473,11 +492,10 @@
Int numTurns; /* number of Y-turns in outline */
- Byte dropOutControl; /* current drop_out control method */
+ TPoint* arc; /* current Bezier arc pointer */
UShort bWidth; /* target bitmap width */
PByte bOrigin; /* target bitmap bottom-left origin */
- PByte bLine; /* target bitmap current line */
Long lastX, lastY;
Long minY, maxY;
@@ -499,6 +517,9 @@
FT_Bitmap target; /* description of target bit/pixmap */
FT_Outline outline;
+ Long traceOfs; /* current offset in target bitmap */
+ Short traceIncr; /* sweep's increment in target bitmap */
+
/* dispatch variables */
Function_Sweep_Init* Proc_Sweep_Init;
@@ -506,6 +527,18 @@
Function_Sweep_Span* Proc_Sweep_Drop;
Function_Sweep_Step* Proc_Sweep_Step;
+ Byte dropOutControl; /* current drop_out control method */
+
+ Bool second_pass; /* indicates whether a horizontal pass */
+ /* should be performed to control */
+ /* drop-out accurately when calling */
+ /* Render_Glyph. */
+
+ TPoint arcs[3 * MaxBezier + 1]; /* The Bezier stack */
+
+ black_TBand band_stack[16]; /* band stack used for sub-banding */
+ Int band_top; /* band stack top */
+
};
@@ -627,7 +660,7 @@
if ( ras.top >= ras.maxBuff )
{
- ras.error = FT_THROW( Raster_Overflow );
+ ras.error = FT_THROW( Overflow );
return FAILURE;
}
@@ -656,7 +689,7 @@
default:
FT_ERROR(( "New_Profile: invalid profile direction\n" ));
- ras.error = FT_THROW( Invalid_Outline );
+ ras.error = FT_THROW( Invalid );
return FAILURE;
}
@@ -698,7 +731,7 @@
if ( h < 0 )
{
FT_ERROR(( "End_Profile: negative height encountered\n" ));
- ras.error = FT_THROW( Raster_Negative_Height );
+ ras.error = FT_THROW( Neg_Height );
return FAILURE;
}
@@ -734,7 +767,7 @@
if ( ras.top >= ras.maxBuff )
{
FT_TRACE1(( "overflow in End_Profile\n" ));
- ras.error = FT_THROW( Raster_Overflow );
+ ras.error = FT_THROW( Overflow );
return FAILURE;
}
@@ -789,7 +822,7 @@
ras.maxBuff--;
if ( ras.maxBuff <= ras.top )
{
- ras.error = FT_THROW( Raster_Overflow );
+ ras.error = FT_THROW( Overflow );
return FAILURE;
}
ras.numTurns++;
@@ -1053,7 +1086,7 @@
size = e2 - e1 + 1;
if ( ras.top + size >= ras.maxBuff )
{
- ras.error = FT_THROW( Raster_Overflow );
+ ras.error = FT_THROW( Overflow );
return FAILURE;
}
@@ -1176,7 +1209,6 @@
*/
static Bool
Bezier_Up( RAS_ARGS Int degree,
- TPoint* arc,
TSplitter splitter,
Long miny,
Long maxy )
@@ -1184,11 +1216,13 @@
Long y1, y2, e, e2, e0;
Short f1;
+ TPoint* arc;
TPoint* start_arc;
PLong top;
+ arc = ras.arc;
y1 = arc[degree].y;
y2 = arc[0].y;
top = ras.top;
@@ -1237,7 +1271,7 @@
if ( ( top + TRUNC( e2 - e ) + 1 ) >= ras.maxBuff )
{
ras.top = top;
- ras.error = FT_THROW( Raster_Overflow );
+ ras.error = FT_THROW( Overflow );
return FAILURE;
}
@@ -1280,6 +1314,7 @@
Fin:
ras.top = top;
+ ras.arc -= degree;
return SUCCESS;
}
@@ -1311,11 +1346,11 @@
*/
static Bool
Bezier_Down( RAS_ARGS Int degree,
- TPoint* arc,
TSplitter splitter,
Long miny,
Long maxy )
{
+ TPoint* arc = ras.arc;
Bool result, fresh;
@@ -1327,7 +1362,7 @@
fresh = ras.fresh;
- result = Bezier_Up( RAS_VARS degree, arc, splitter, -maxy, -miny );
+ result = Bezier_Up( RAS_VARS degree, splitter, -maxy, -miny );
if ( fresh && !ras.fresh )
ras.cProfile->start = -ras.cProfile->start;
@@ -1468,24 +1503,22 @@
{
Long y1, y2, y3, x3, ymin, ymax;
TStates state_bez;
- TPoint arcs[2 * MaxBezier + 1]; /* The Bezier stack */
- TPoint* arc; /* current Bezier arc pointer */
- arc = arcs;
- arc[2].x = ras.lastX;
- arc[2].y = ras.lastY;
- arc[1].x = cx;
- arc[1].y = cy;
- arc[0].x = x;
- arc[0].y = y;
+ ras.arc = ras.arcs;
+ ras.arc[2].x = ras.lastX;
+ ras.arc[2].y = ras.lastY;
+ ras.arc[1].x = cx;
+ ras.arc[1].y = cy;
+ ras.arc[0].x = x;
+ ras.arc[0].y = y;
do
{
- y1 = arc[2].y;
- y2 = arc[1].y;
- y3 = arc[0].y;
- x3 = arc[0].x;
+ y1 = ras.arc[2].y;
+ y2 = ras.arc[1].y;
+ y3 = ras.arc[0].y;
+ x3 = ras.arc[0].x;
/* first, categorize the Bezier arc */
@@ -1503,13 +1536,13 @@
if ( y2 < ymin || y2 > ymax )
{
/* this arc has no given direction, split it! */
- Split_Conic( arc );
- arc += 2;
+ Split_Conic( ras.arc );
+ ras.arc += 2;
}
else if ( y1 == y3 )
{
/* this arc is flat, ignore it and pop it from the Bezier stack */
- arc -= 2;
+ ras.arc -= 2;
}
else
{
@@ -1536,18 +1569,15 @@
/* now call the appropriate routine */
if ( state_bez == Ascending_State )
{
- if ( Bezier_Up( RAS_VARS 2, arc, Split_Conic,
- ras.minY, ras.maxY ) )
+ if ( Bezier_Up( RAS_VARS 2, Split_Conic, ras.minY, ras.maxY ) )
goto Fail;
}
else
- if ( Bezier_Down( RAS_VARS 2, arc, Split_Conic,
- ras.minY, ras.maxY ) )
+ if ( Bezier_Down( RAS_VARS 2, Split_Conic, ras.minY, ras.maxY ) )
goto Fail;
- arc -= 2;
}
- } while ( arc >= arcs );
+ } while ( ras.arc >= ras.arcs );
ras.lastX = x3;
ras.lastY = y3;
@@ -1602,27 +1632,25 @@
{
Long y1, y2, y3, y4, x4, ymin1, ymax1, ymin2, ymax2;
TStates state_bez;
- TPoint arcs[3 * MaxBezier + 1]; /* The Bezier stack */
- TPoint* arc; /* current Bezier arc pointer */
- arc = arcs;
- arc[3].x = ras.lastX;
- arc[3].y = ras.lastY;
- arc[2].x = cx1;
- arc[2].y = cy1;
- arc[1].x = cx2;
- arc[1].y = cy2;
- arc[0].x = x;
- arc[0].y = y;
+ ras.arc = ras.arcs;
+ ras.arc[3].x = ras.lastX;
+ ras.arc[3].y = ras.lastY;
+ ras.arc[2].x = cx1;
+ ras.arc[2].y = cy1;
+ ras.arc[1].x = cx2;
+ ras.arc[1].y = cy2;
+ ras.arc[0].x = x;
+ ras.arc[0].y = y;
do
{
- y1 = arc[3].y;
- y2 = arc[2].y;
- y3 = arc[1].y;
- y4 = arc[0].y;
- x4 = arc[0].x;
+ y1 = ras.arc[3].y;
+ y2 = ras.arc[2].y;
+ y3 = ras.arc[1].y;
+ y4 = ras.arc[0].y;
+ x4 = ras.arc[0].x;
/* first, categorize the Bezier arc */
@@ -1651,13 +1679,13 @@
if ( ymin2 < ymin1 || ymax2 > ymax1 )
{
/* this arc has no given direction, split it! */
- Split_Cubic( arc );
- arc += 3;
+ Split_Cubic( ras.arc );
+ ras.arc += 3;
}
else if ( y1 == y4 )
{
/* this arc is flat, ignore it and pop it from the Bezier stack */
- arc -= 3;
+ ras.arc -= 3;
}
else
{
@@ -1683,18 +1711,15 @@
/* compute intersections */
if ( state_bez == Ascending_State )
{
- if ( Bezier_Up( RAS_VARS 3, arc, Split_Cubic,
- ras.minY, ras.maxY ) )
+ if ( Bezier_Up( RAS_VARS 3, Split_Cubic, ras.minY, ras.maxY ) )
goto Fail;
}
else
- if ( Bezier_Down( RAS_VARS 3, arc, Split_Cubic,
- ras.minY, ras.maxY ) )
+ if ( Bezier_Down( RAS_VARS 3, Split_Cubic, ras.minY, ras.maxY ) )
goto Fail;
- arc -= 3;
}
- } while ( arc >= arcs );
+ } while ( ras.arc >= ras.arcs );
ras.lastX = x4;
ras.lastY = y4;
@@ -1942,7 +1967,7 @@
return SUCCESS;
Invalid_Outline:
- ras.error = FT_THROW( Invalid_Outline );
+ ras.error = FT_THROW( Invalid );
Fail:
return FAILURE;
@@ -2189,13 +2214,16 @@
*/
static void
- Vertical_Sweep_Init( RAS_ARGS Short min,
- Short max )
+ Vertical_Sweep_Init( RAS_ARGS Short* min,
+ Short* max )
{
+ Long pitch = ras.target.pitch;
+
FT_UNUSED( max );
- ras.bLine = ras.bOrigin - min * ras.target.pitch;
+ ras.traceIncr = (Short)-pitch;
+ ras.traceOfs = -*min * pitch;
}
@@ -2257,7 +2285,7 @@
f1 = (Byte) ( 0xFF >> ( e1 & 7 ) );
f2 = (Byte) ~( 0x7F >> ( e2 & 7 ) );
- target = ras.bLine + c1;
+ target = ras.bOrigin + ras.traceOfs + c1;
c2 -= c1;
if ( c2 > 0 )
@@ -2409,8 +2437,8 @@
c1 = (Short)( e1 >> 3 );
f1 = (Short)( e1 & 7 );
- if ( e1 >= 0 && e1 < ras.bWidth &&
- ras.bLine[c1] & ( 0x80 >> f1 ) )
+ if ( e1 >= 0 && e1 < ras.bWidth &&
+ ras.bOrigin[ras.traceOfs + c1] & ( 0x80 >> f1 ) )
goto Exit;
}
else
@@ -2426,7 +2454,7 @@
c1 = (Short)( e1 >> 3 );
f1 = (Short)( e1 & 7 );
- ras.bLine[c1] |= (char)( 0x80 >> f1 );
+ ras.bOrigin[ras.traceOfs + c1] |= (char)( 0x80 >> f1 );
}
Exit:
@@ -2437,7 +2465,7 @@
static void
Vertical_Sweep_Step( RAS_ARG )
{
- ras.bLine -= ras.target.pitch;
+ ras.traceOfs += ras.traceIncr;
}
@@ -2451,8 +2479,8 @@
*/
static void
- Horizontal_Sweep_Init( RAS_ARGS Short min,
- Short max )
+ Horizontal_Sweep_Init( RAS_ARGS Short* min,
+ Short* max )
{
/* nothing, really */
FT_UNUSED_RASTER;
@@ -2716,13 +2744,13 @@
/* check the Y-turns */
if ( ras.numTurns == 0 )
{
- ras.error = FT_THROW( Invalid_Outline );
+ ras.error = FT_THROW( Invalid );
return FAILURE;
}
/* now initialize the sweep */
- ras.Proc_Sweep_Init( RAS_VARS min_Y, max_Y );
+ ras.Proc_Sweep_Init( RAS_VARS &min_Y, &max_Y );
/* then compute the distance of each profile from min_Y */
@@ -3011,54 +3039,63 @@
* Renderer error code.
*/
static int
- Render_Single_Pass( RAS_ARGS Bool flipped,
- Int y_min,
- Int y_max )
+ Render_Single_Pass( RAS_ARGS Bool flipped )
{
- Int y_mid;
- Int band_top = 0;
- Int band_stack[32]; /* enough to bisect 32-bit int bands */
+ Short i, j, k;
- while ( 1 )
+ while ( ras.band_top >= 0 )
{
- ras.minY = (Long)y_min * ras.precision;
- ras.maxY = (Long)y_max * ras.precision;
+ ras.maxY = (Long)ras.band_stack[ras.band_top].y_max * ras.precision;
+ ras.minY = (Long)ras.band_stack[ras.band_top].y_min * ras.precision;
ras.top = ras.buff;
- ras.error = Raster_Err_Ok;
+ ras.error = Raster_Err_None;
if ( Convert_Glyph( RAS_VARS flipped ) )
{
- if ( ras.error != Raster_Err_Raster_Overflow )
- return ras.error;
+ if ( ras.error != Raster_Err_Overflow )
+ return FAILURE;
+
+ ras.error = Raster_Err_None;
/* sub-banding */
- if ( y_min == y_max )
- return ras.error; /* still Raster_Overflow */
+#ifdef DEBUG_RASTER
+ ClearBand( RAS_VARS TRUNC( ras.minY ), TRUNC( ras.maxY ) );
+#endif
+
+ i = ras.band_stack[ras.band_top].y_min;
+ j = ras.band_stack[ras.band_top].y_max;
+
+ k = (Short)( ( i + j ) / 2 );
+
+ if ( ras.band_top >= 7 || k < i )
+ {
+ ras.band_top = 0;
+ ras.error = FT_THROW( Invalid );
+
+ return ras.error;
+ }
+
+ ras.band_stack[ras.band_top + 1].y_min = k;
+ ras.band_stack[ras.band_top + 1].y_max = j;
- y_mid = ( y_min + y_max ) >> 1;
+ ras.band_stack[ras.band_top].y_max = (Short)( k - 1 );
- band_stack[band_top++] = y_min;
- y_min = y_mid + 1;
+ ras.band_top++;
}
else
{
if ( ras.fProfile )
if ( Draw_Sweep( RAS_VAR ) )
return ras.error;
-
- if ( --band_top < 0 )
- break;
-
- y_max = y_min - 1;
- y_min = band_stack[band_top];
+ ras.band_top--;
}
}
- return Raster_Err_Ok;
+ return SUCCESS;
}
@@ -3095,6 +3132,9 @@
ras.dropOutControl += 1;
}
+ ras.second_pass = (Bool)( !( ras.outline.flags &
+ FT_OUTLINE_SINGLE_PASS ) );
+
/* Vertical Sweep */
FT_TRACE7(( "Vertical pass (ftraster)\n" ));
@@ -3103,18 +3143,21 @@
ras.Proc_Sweep_Drop = Vertical_Sweep_Drop;
ras.Proc_Sweep_Step = Vertical_Sweep_Step;
+ ras.band_top = 0;
+ ras.band_stack[0].y_min = 0;
+ ras.band_stack[0].y_max = (Short)( ras.target.rows - 1 );
+
ras.bWidth = (UShort)ras.target.width;
ras.bOrigin = (Byte*)ras.target.buffer;
if ( ras.target.pitch > 0 )
ras.bOrigin += (Long)( ras.target.rows - 1 ) * ras.target.pitch;
- error = Render_Single_Pass( RAS_VARS 0, 0, (Int)ras.target.rows - 1 );
- if ( error )
+ if ( ( error = Render_Single_Pass( RAS_VARS 0 ) ) != 0 )
return error;
/* Horizontal Sweep */
- if ( !( ras.outline.flags & FT_OUTLINE_SINGLE_PASS ) )
+ if ( ras.second_pass && ras.dropOutControl != 2 )
{
FT_TRACE7(( "Horizontal pass (ftraster)\n" ));
@@ -3123,12 +3166,15 @@
ras.Proc_Sweep_Drop = Horizontal_Sweep_Drop;
ras.Proc_Sweep_Step = Horizontal_Sweep_Step;
- error = Render_Single_Pass( RAS_VARS 1, 0, (Int)ras.target.width - 1 );
- if ( error )
+ ras.band_top = 0;
+ ras.band_stack[0].y_min = 0;
+ ras.band_stack[0].y_max = (Short)( ras.target.width - 1 );
+
+ if ( ( error = Render_Single_Pass( RAS_VARS 1 ) ) != 0 )
return error;
}
- return Raster_Err_Ok;
+ return Raster_Err_None;
}
@@ -3246,36 +3292,38 @@
if ( !raster )
- return FT_THROW( Raster_Uninitialized );
+ return FT_THROW( Not_Ini );
if ( !outline )
- return FT_THROW( Invalid_Outline );
+ return FT_THROW( Invalid );
/* return immediately if the outline is empty */
if ( outline->n_points == 0 || outline->n_contours <= 0 )
- return Raster_Err_Ok;
+ return Raster_Err_None;
if ( !outline->contours || !outline->points )
- return FT_THROW( Invalid_Outline );
+ return FT_THROW( Invalid );
if ( outline->n_points !=
outline->contours[outline->n_contours - 1] + 1 )
- return FT_THROW( Invalid_Outline );
+ return FT_THROW( Invalid );
/* this version of the raster does not support direct rendering, sorry */
- if ( params->flags & FT_RASTER_FLAG_DIRECT ||
- params->flags & FT_RASTER_FLAG_AA )
- return FT_THROW( Cannot_Render_Glyph );
+ if ( params->flags & FT_RASTER_FLAG_DIRECT )
+ return FT_THROW( Unsupported );
+
+ if ( params->flags & FT_RASTER_FLAG_AA )
+ return FT_THROW( Unsupported );
if ( !target_map )
- return FT_THROW( Invalid_Argument );
+ return FT_THROW( Invalid );
/* nothing to do */
if ( !target_map->width || !target_map->rows )
- return Raster_Err_Ok;
+ return Raster_Err_None;
if ( !target_map->buffer )
- return FT_THROW( Invalid_Argument );
+ return FT_THROW( Invalid );
ras.outline = *outline;
ras.target = *target_map;
diff --git a/Build/source/libs/freetype2/freetype-src/src/raster/ftraster.h b/Build/source/libs/freetype2/freetype-src/src/raster/ftraster.h
index 4affd48b51f..1b2ee3c0167 100644
--- a/Build/source/libs/freetype2/freetype-src/src/raster/ftraster.h
+++ b/Build/source/libs/freetype2/freetype-src/src/raster/ftraster.h
@@ -4,7 +4,7 @@
*
* The FreeType glyph rasterizer (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/raster/ftrend1.c b/Build/source/libs/freetype2/freetype-src/src/raster/ftrend1.c
index 236a8daf0a6..57fed9bc14c 100644
--- a/Build/source/libs/freetype2/freetype-src/src/raster/ftrend1.c
+++ b/Build/source/libs/freetype2/freetype-src/src/raster/ftrend1.c
@@ -4,7 +4,7 @@
*
* The FreeType glyph rasterizer 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,
diff --git a/Build/source/libs/freetype2/freetype-src/src/raster/ftrend1.h b/Build/source/libs/freetype2/freetype-src/src/raster/ftrend1.h
index e4cea537416..3f6be536755 100644
--- a/Build/source/libs/freetype2/freetype-src/src/raster/ftrend1.h
+++ b/Build/source/libs/freetype2/freetype-src/src/raster/ftrend1.h
@@ -4,7 +4,7 @@
*
* The FreeType glyph rasterizer 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/raster/module.mk b/Build/source/libs/freetype2/freetype-src/src/raster/module.mk
index fbc1d64ec27..3600732b16e 100644
--- a/Build/source/libs/freetype2/freetype-src/src/raster/module.mk
+++ b/Build/source/libs/freetype2/freetype-src/src/raster/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/raster/raster.c b/Build/source/libs/freetype2/freetype-src/src/raster/raster.c
index ad81a394142..cd37943bf60 100644
--- a/Build/source/libs/freetype2/freetype-src/src/raster/raster.c
+++ b/Build/source/libs/freetype2/freetype-src/src/raster/raster.c
@@ -4,7 +4,7 @@
*
* FreeType monochrome rasterer module component (body only).
*
- * 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/raster/rasterrs.h b/Build/source/libs/freetype2/freetype-src/src/raster/rasterrs.h
index 852dd5bc319..a29651a6c54 100644
--- a/Build/source/libs/freetype2/freetype-src/src/raster/rasterrs.h
+++ b/Build/source/libs/freetype2/freetype-src/src/raster/rasterrs.h
@@ -4,7 +4,7 @@
*
* monochrome renderer 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/raster/rules.mk b/Build/source/libs/freetype2/freetype-src/src/raster/rules.mk
index 7ffda772764..3e949d77416 100644
--- a/Build/source/libs/freetype2/freetype-src/src/raster/rules.mk
+++ b/Build/source/libs/freetype2/freetype-src/src/raster/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,