From 3bef786d5ca6ec772fa5c30eeeb038d5e94422ac Mon Sep 17 00:00:00 2001 From: Eliot Jones Date: Tue, 24 Dec 2019 00:10:22 +0000 Subject: [PATCH] use performant hasflag method for truetype simple glyphs --- .../Fonts/TrueType/Tables/GlyphDataTable.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/UglyToad.PdfPig/Fonts/TrueType/Tables/GlyphDataTable.cs b/src/UglyToad.PdfPig/Fonts/TrueType/Tables/GlyphDataTable.cs index 3e681b35..a73d0920 100644 --- a/src/UglyToad.PdfPig/Fonts/TrueType/Tables/GlyphDataTable.cs +++ b/src/UglyToad.PdfPig/Fonts/TrueType/Tables/GlyphDataTable.cs @@ -246,19 +246,25 @@ private static short[] ReadCoordinates(TrueTypeDataBytes data, int pointCount, SimpleGlyphFlags[] flags, SimpleGlyphFlags isByte, SimpleGlyphFlags signOrSame) { + bool HasFlag(SimpleGlyphFlags value, SimpleGlyphFlags target) + { + return (value & target) == target; + } + var xs = new short[pointCount]; var x = 0; for (var i = 0; i < pointCount; i++) { + var flag = flags[i]; int dx; - if (flags[i].HasFlag(isByte)) + if (HasFlag(flag, isByte)) { var b = data.ReadByte(); - dx = flags[i].HasFlag(signOrSame) ? b : -b; + dx = HasFlag(flag, signOrSame) ? b : -b; } else { - if (flags[i].HasFlag(signOrSame)) + if (HasFlag(flag, signOrSame)) { dx = 0; } @@ -294,7 +300,7 @@ /// public long Position { get; } - public PdfRectangle Bounds { get; set; } + public PdfRectangle Bounds { get; } public TemporaryCompositeLocation(long position, PdfRectangle bounds, short contourCount) {