From b3601050be7e4acda223f8e30fbf290e046a2955 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Thu, 23 Jun 2022 18:56:41 +0200 Subject: [PATCH 01/56] Start implementing CFF2 support --- src/SixLabors.Fonts/BigEndianBinaryReader.cs | 3 +- src/SixLabors.Fonts/FontReader.cs | 16 +- src/SixLabors.Fonts/StreamFontMetrics.Cff.cs | 15 +- .../Variations/AVarTable.cs | 70 ++++ .../Variations/AxisValueMapRecord.cs | 34 ++ .../Variations/FVarTable.cs | 95 +++++ .../Variations/GVarTable.cs | 80 ++++ .../Variations/GlyphVariationData.cs | 47 +++ .../Variations/GlyphVariationProcessor.cs | 150 +++++++ .../Variations/InstanceRecord.cs | 59 +++ .../Variations/ItemVariationData.cs | 60 +++ .../Variations/ItemVariationStore.cs | 71 ++++ .../Variations/RegionAxisCoordinates.cs | 17 + .../Variations/SegmentMapRecord.cs | 32 ++ .../Variations/TupleVariationHeader.cs | 69 ++++ .../Variations/VariationAxisRecord.cs | 67 +++ .../Variations/VariationRegionList.cs | 89 ++++ .../Cff/{CffParser.cs => Cff1Parser.cs} | 197 +-------- src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs | 2 +- src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs | 390 ++++++++++++++++++ src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs | 20 +- .../Tables/Cff/CffEvaluationEngine.cs | 82 +++- .../Tables/Cff/CffGlyphData.cs | 23 +- src/SixLabors.Fonts/Tables/Cff/CffOperator.cs | 4 + .../Tables/Cff/CffParserBase.cs | 206 +++++++++ .../Tables/Cff/CompactFontTables.cs | 5 + .../Tables/Cff/FDRangeProvider.cs | 2 +- .../Tables/Cff/Type2Operator1.cs | 4 +- src/SixLabors.Fonts/Tables/TableLoader.cs | 4 + 29 files changed, 1688 insertions(+), 225 deletions(-) create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AxisValueMapRecord.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/InstanceRecord.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/RegionAxisCoordinates.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/SegmentMapRecord.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariationHeader.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxisRecord.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationRegionList.cs rename src/SixLabors.Fonts/Tables/Cff/{CffParser.cs => Cff1Parser.cs} (83%) create mode 100644 src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs create mode 100644 src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs diff --git a/src/SixLabors.Fonts/BigEndianBinaryReader.cs b/src/SixLabors.Fonts/BigEndianBinaryReader.cs index 6e8a987a5..3b4d68259 100644 --- a/src/SixLabors.Fonts/BigEndianBinaryReader.cs +++ b/src/SixLabors.Fonts/BigEndianBinaryReader.cs @@ -358,7 +358,7 @@ public string ReadTag() } /// - /// Reads an offset consuming the given nuber of bytes. + /// Reads an offset consuming the given number of bytes. /// /// The offset size in bytes. /// The 32-bit signed integer representing the offset. @@ -395,6 +395,7 @@ private void ReadInternal(byte[] data, int size) } } + /// public void Dispose() { if (!this.leaveOpen) diff --git a/src/SixLabors.Fonts/FontReader.cs b/src/SixLabors.Fonts/FontReader.cs index 9e494fa82..0fc279408 100644 --- a/src/SixLabors.Fonts/FontReader.cs +++ b/src/SixLabors.Fonts/FontReader.cs @@ -146,18 +146,16 @@ public FontReader(Stream stream) { return (TTableType)table; } - else + + TTableType? loadedTable = this.loader.Load(this); + if (loadedTable is null) { - TTableType? loadedTable = this.loader.Load(this); - if (loadedTable is null) - { - return null; - } - - table = loadedTable; - this.loadedTables.Add(typeof(TTableType), loadedTable); + return null; } + table = loadedTable; + this.loadedTables.Add(typeof(TTableType), loadedTable); + return (TTableType)table; } diff --git a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs index fbb5f4507..18019ccfe 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. using SixLabors.Fonts.Tables.AdvancedTypographic; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Tables.Cff; using SixLabors.Fonts.Tables.General; using SixLabors.Fonts.Tables.General.Colr; @@ -29,7 +30,6 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) NameTable name = reader.GetTable(); CMapTable cmap = reader.GetTable(); PostTable post = reader.GetTable(); - ICffTable? cff = reader.TryGetTable() ?? (ICffTable?)reader.TryGetTable(); // TODO: VORG @@ -50,6 +50,11 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) ColrTable? colr = reader.TryGetTable(); CpalTable? cpal = reader.TryGetTable(); + // Variations related tables. + FVarTable? fVar = reader.TryGetTable(); + AVarTable? aVar = reader.TryGetTable(); + // GVarTable? gVar = reader.TryGetTable(); + CompactFontTables tables = new(cmap, head, hhea, htmx, maxp, name, os2, post, cff!) { Kern = kern, @@ -60,6 +65,8 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) GPos = gPos, Colr = colr, Cpal = cpal, + FVar = fVar, + AVar = aVar }; return new StreamFontMetrics(tables); @@ -75,9 +82,11 @@ private GlyphMetrics CreateCffGlyphMetrics( ICffTable cff = tables.Cff; HorizontalMetricsTable htmx = tables.Htmx; VerticalMetricsTable? vtmx = tables.Vmtx; + FVarTable? fVar = tables.FVar; + AVarTable? aVar = tables.AVar; CffGlyphData vector = cff.GetGlyph(glyphId); - Bounds bounds = vector.GetBounds(); + Bounds bounds = vector.GetBounds(fVar, aVar); ushort advanceWidth = htmx.GetAdvancedWidth(glyphId); short lsb = htmx.GetLeftSideBearing(glyphId); @@ -93,7 +102,7 @@ private GlyphMetrics CreateCffGlyphMetrics( GlyphColor? color = null; if (glyphType == GlyphType.ColrLayer) { - // 0xFFFF is special index meaning use foreground color and thus leave unset + // 0xFFFF is special index meaning use foreground color and thus leave unset. if (palleteIndex != 0xFFFF) { CpalTable? cpal = tables.Cpal; diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs new file mode 100644 index 000000000..2ff826044 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs @@ -0,0 +1,70 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System; + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + /// + /// Implements reading the Font Variations Table `avar`. + /// + /// + [TableName(TableName)] + internal class AVarTable : Table + { + internal const string TableName = "avar"; + + public AVarTable(uint axixCount, SegmentMapRecord[] segmentMaps) + { + this.AxixCount = axixCount; + this.SegmentMaps = segmentMaps; + } + + public uint AxixCount { get; } + + public SegmentMapRecord[] SegmentMaps { get; } + + public static AVarTable Load(FontReader reader) + { + using BigEndianBinaryReader binaryReader = reader.GetReaderAtTablePosition(TableName); + return Load(binaryReader); + } + + public static AVarTable Load(BigEndianBinaryReader reader) + { + // VariationsTable `avar` + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+=========================================================================+ + // | uint16 | majorVersion | Major version number of the font variations table — set to 1. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | minorVersion | Minor version number of the font variations table — set to 0. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | (reserved) | This field is permanently reserved. Set to zero. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | axisCount | The number of variation axes in the font | + // | | | (the number of records in the axes array). | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | SegmentMaps | axisSegmentMaps[axisCount] | The segment maps array — one segment map for each axis, in the order of | + // | | | axes specified in the 'fvar' table. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + ushort major = reader.ReadUInt16(); + ushort minor = reader.ReadUInt16(); + ushort reserved = reader.ReadUInt16(); + ushort axisCount = reader.ReadUInt16(); + + if (major != 1) + { + throw new NotSupportedException("Only version 1 of avar table is supported"); + } + + var segmentMaps = new SegmentMapRecord[axisCount]; + for (int i = 0; i < axisCount; i++) + { + segmentMaps[i] = SegmentMapRecord.Load(reader); + } + + return new AVarTable(axisCount, segmentMaps); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AxisValueMapRecord.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AxisValueMapRecord.cs new file mode 100644 index 000000000..980461c64 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AxisValueMapRecord.cs @@ -0,0 +1,34 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + internal class AxisValueMapRecord + { + public AxisValueMapRecord(float fromCoordinate, float toCoordinate) + { + this.FromCoordinate = fromCoordinate; + this.ToCoordinate = toCoordinate; + } + + public float FromCoordinate { get; } + + public float ToCoordinate { get; } + + public static AxisValueMapRecord Load(BigEndianBinaryReader reader) + { + // AxisValueMapRecord + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+=========================================================================+ + // | F2DOT14 | fromCoordinate | A normalized coordinate value obtained using default normalization. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | F2DOT14 | toCoordinate | The modified, normalized coordinate value. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + float fromCoordinate = reader.ReadF2dot14(); + float toCoordinate = reader.ReadF2dot14(); + + return new AxisValueMapRecord(fromCoordinate, toCoordinate); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs new file mode 100644 index 000000000..a432b2726 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs @@ -0,0 +1,95 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System; + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + /// + /// Implements reading the Font Variations Table `fvar`. + /// + /// + [TableName(TableName)] + internal class FVarTable : Table + { + internal const string TableName = "fvar"; + + public FVarTable(ushort axisCount, VariationAxisRecord[] axes, InstanceRecord[] instances) + { + this.AxisCount = axisCount; + this.Axes = axes; + this.Instances = instances; + } + + public ushort AxisCount { get; } + + public VariationAxisRecord[] Axes { get; } + + public InstanceRecord[] Instances { get; } + + public static FVarTable Load(FontReader reader) + { + using BigEndianBinaryReader binaryReader = reader.GetReaderAtTablePosition(TableName); + return Load(binaryReader); + } + + public static FVarTable Load(BigEndianBinaryReader reader) + { + // VariationsTable `fvar` + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+================================================================+ + // | uint16 | majorVersion | Major version number of the font variations table — set to 1. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | minorVersion | Minor version number of the font variations table — set to 0. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Offset16 | axesArrayOffset | Offset in bytes from the beginning of the table to the start | + // | | | of the VariationAxisRecord array. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | (reserved) | This field is permanently reserved. Set to 2. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | axisCount | The number of variation axes in the font | + // | | | (the number of records in the axes array). | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | axisSize | The size in bytes of each VariationAxisRecord | + // | | | — set to 20 (0x0014) for this version. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | instanceCount | The number of named instances defined in the font | + // | | | (the number of records in the instances array). | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | instanceSize | The size in bytes of each InstanceRecord | + // | | | — set to either axisCount * sizeof(Fixed) + 4, | + // | | | or to axisCount * sizeof(Fixed) + 6. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + long startOffset = reader.BaseStream.Position; + ushort major = reader.ReadUInt16(); + ushort minor = reader.ReadUInt16(); + ushort axesArrayOffset = reader.ReadOffset16(); + ushort reserved = reader.ReadUInt16(); + ushort axisCount = reader.ReadUInt16(); + ushort axisSize = reader.ReadUInt16(); + ushort instanceCount = reader.ReadUInt16(); + ushort instanceSize = reader.ReadUInt16(); + + if (major != 1) + { + throw new NotSupportedException("Only version 1 of fvar table is supported"); + } + + var axesArray = new VariationAxisRecord[axisCount]; + for (int i = 0; i < axisCount; i++) + { + axesArray[i] = VariationAxisRecord.Load(reader, axesArrayOffset + axisSize); + } + + var instances = new InstanceRecord[instanceCount]; + long instancesOffset = reader.BaseStream.Position - startOffset; + for (int i = 0; i < instanceCount; i++) + { + instances[i] = InstanceRecord.Load(reader, instancesOffset + (i * instanceSize), axisCount); + } + + return new FVarTable(axisCount, axesArray, instances); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs new file mode 100644 index 000000000..ce429f414 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs @@ -0,0 +1,80 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System; + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + /// + /// Implements reading the Font Variations Table `gvar`. + /// + /// + [TableName(TableName)] + internal class GVarTable : Table + { + internal const string TableName = "gvar"; + + public static GVarTable Load(FontReader reader) + { + using BigEndianBinaryReader binaryReader = reader.GetReaderAtTablePosition(TableName); + return Load(binaryReader); + } + + public static GVarTable Load(BigEndianBinaryReader reader) + { + // VariationsTable `gvar` + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+=========================================================================+ + // | uint16 | majorVersion | Major version number of the font variations table — set to 1. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | minorVersion | Minor version number of the font variations table — set to 0. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | axisCount | The number of variation axes in the font | + // | | | (the number of records in the axes array). | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | sharedTupleCount | The number of shared tuple records. Shared tuple records can | + // | | | be referenced within glyph variation data tables for multiple glyphs, | + // | | | as opposed to other tuple records stored directly within a glyph | + // | | | variation data table. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | sharedTuplesOffset | Offset from the start of this table to the shared tuple records. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | glyphCount | The number of glyphs in this font. This must match the number of glyphs | + // | | | stored elsewhere in the font. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | flags | Bit-field that gives the format of the offset array that follows. | + // | | | If bit 0 is clear, the offsets are uint16; if bit 0 is set, | + // | | | the offsets are uint32. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | glyphVariationDataArrayOffset | Offset from the start of this table to the array of GlyphVariationData | + // | | | tables. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset16 or | glyphVariationDataOffsets[glyphCount+1]| Offsets from the start of the GlyphVariationData array to each | + // | Offset32 | | GlyphVariationData table. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + ushort major = reader.ReadUInt16(); + ushort minor = reader.ReadUInt16(); + ushort axisCount = reader.ReadUInt16(); + ushort sharedTupleCount = reader.ReadUInt16(); + ushort sharedTuplesOffset = reader.ReadOffset16(); + ushort glyphCount = reader.ReadUInt16(); + ushort flags = reader.ReadUInt16(); + ushort glyphVariationDataArrayOffset = reader.ReadOffset16(); + + if (major != 1) + { + throw new NotSupportedException("Only version 1 of gvar table is supported"); + } + + for (int i = 0; i < sharedTupleCount; i++) + { + // TODO: parse shared tuples. + } + + var glyphVariations = GlyphVariationData.Load(reader, glyphVariationDataArrayOffset); + + return new GVarTable(); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs new file mode 100644 index 000000000..60bf81d08 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs @@ -0,0 +1,47 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System.IO; + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + /// + /// Implements loading glyph variation data structure. + /// + /// + internal class GlyphVariationData + { + /// + /// Mask for the low bits to give the number of tuple variation tables. + /// + internal const int CountMask = 0x0FFF; + + public static GlyphVariationData Load(BigEndianBinaryReader reader, long offset) + { + // GlyphVariationData + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | Type | Name | Description | + // +======================+===========================================+==============================================================================+ + // | uint16 | tupleVariationCount | A packed field. The high 4 bits are flags, | + // | | | and the low 12 bits are the number of tuple variation tables for this glyph. | + // | | | The count can be any number between 1 and 4095. | + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | Offset16 | dataOffset | Offset from the start of the GlyphVariationData table to the serialized data.| + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | TupleVariationHeader |tupleVariationHeaders[tupleVariationCount] | Array of tuple variation headers. | + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + ushort tupleVariationCount = reader.ReadUInt16(); + ushort dataOffset = reader.ReadOffset16(); + + int tupleVariationTables = tupleVariationCount & CountMask; + var variationHeaders = new TupleVariationHeader[tupleVariationTables]; + for (int i = 0; i < tupleVariationTables; i++) + { + variationHeaders[i] = TupleVariationHeader.Load(reader); + } + + return new GlyphVariationData(); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs new file mode 100644 index 000000000..0f6d85125 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -0,0 +1,150 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + /// + /// This class is transforms TrueType glyphs according to the data from + /// the Apple Advanced Typography variation tables(fvar, gvar, and avar). + /// These tables allow infinite adjustments to glyph weight, width, slant, + /// and optical size without the designer needing to specify every exact style. + /// + /// Implementation is based on fontkit: https://github.com/foliojs/fontkit/blob/master/src/glyph/GlyphVariationProcessor.js + /// + internal class GlyphVariationProcessor + { + private readonly ItemVariationStore itemStore; + + private readonly FVarTable fvar; + + private readonly AVarTable? avar; + + private readonly float[] normalizedCoords; + + public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVarTable? aVar = null) + { + DebugGuard.NotNull(itemStore, nameof(itemStore)); + DebugGuard.NotNull(fVar, nameof(fVar)); + + this.itemStore = itemStore; + this.fvar = fVar; + this.avar = aVar; + this.normalizedCoords = this.NormalizeDefaultCoords(); + } + + private float[] NormalizeDefaultCoords() + { + float[] coords = new float[this.fvar.AxisCount]; + for (int i = 0; i < this.fvar.AxisCount; i++) + { + coords[i] = this.fvar.Axes[i].DefaultValue; + } + + // The default mapping is linear along each axis, in two segments: + // from the minValue to defaultValue, and from defaultValue to maxValue. + float[] normalized = new float[this.fvar.AxisCount]; + for (int i = 0; i < this.fvar.AxisCount; i++) + { + VariationAxisRecord axis = this.fvar.Axes[i]; + if (coords[i] < axis.DefaultValue) + { + normalized[i] = (coords[i] - axis.DefaultValue + float.Epsilon) / (axis.DefaultValue - axis.MinValue + float.Epsilon); + } + else + { + normalized[i] = (coords[i] - axis.DefaultValue + float.Epsilon) / (axis.MaxValue - axis.DefaultValue + float.Epsilon); + } + } + + // If there is an avar table, the normalized value is calculated + // by interpolating between the two nearest mapped values. + if (this.avar is not null) + { + for (int i = 0; i < this.avar.SegmentMaps.Length; i++) + { + SegmentMapRecord segment = this.avar.SegmentMaps[i]; + for (int j = 0; j < segment.AxisValueMap.Length; j++) + { + AxisValueMapRecord pair = segment.AxisValueMap[j]; + if (j >= 1 && normalized[i] < pair.FromCoordinate) + { + AxisValueMapRecord prev = segment.AxisValueMap[j - 1]; + normalized[i] = ((((normalized[i] - prev.FromCoordinate) * (pair.ToCoordinate - prev.ToCoordinate)) + float.Epsilon) / + (pair.FromCoordinate - prev.FromCoordinate + float.Epsilon)) + + prev.ToCoordinate; + } + } + } + } + + return normalized; + } + + public float[] BlendVector(int outerIndex) + { + ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; + + float[] blendVector = new float[variationData.RegionIndexes.Length]; + + // Outer loop steps through master designs to be blended. + for (int i = 0; i < variationData.RegionIndexes.Length; i++) + { + float scalar = 1.0f; + ushort regionIndex = variationData.RegionIndexes[i]; + RegionAxisCoordinates[] axes = this.itemStore.VariationRegionList.VariationRegions[regionIndex]; + + // Inner loop steps through axes in this region. + for (int j = 0; j < axes.Length; j++) + { + RegionAxisCoordinates axis = axes[j]; + + // Compute the scalar contribution of this axis, ignore invalid ranges. + float axisScalar; + if (axis.StartCoord > axis.PeakCoord || axis.PeakCoord > axis.EndCoord) + { + axisScalar = 1; + } + else if (axis.StartCoord < 0 && axis.EndCoord > 0 && axis.PeakCoord != 0) + { + axisScalar = 1; + } + else if (axis.PeakCoord == 0) + { + // Peak of 0 means ignore this axis. + axisScalar = 1; + } + else if (this.normalizedCoords[j] < axis.StartCoord || this.normalizedCoords[j] > axis.EndCoord) + { + // Ignore this region if coords are out of range + axisScalar = 0; + } + else + { + // Calculate a proportional factor. + if (this.normalizedCoords[j] == axis.PeakCoord) + { + axisScalar = 1; + } + else if (this.normalizedCoords[j] < axis.PeakCoord) + { + axisScalar = (this.normalizedCoords[j] - axis.StartCoord + float.Epsilon) / + (axis.PeakCoord - axis.StartCoord + float.Epsilon); + } + else + { + axisScalar = (axis.EndCoord - this.normalizedCoords[j] + float.Epsilon) / + (axis.EndCoord - axis.PeakCoord + float.Epsilon); + } + } + + // Take product of all the axis scalars. + scalar *= axisScalar; + } + + blendVector[i] = scalar; + } + + return blendVector; + } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/InstanceRecord.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/InstanceRecord.cs new file mode 100644 index 000000000..4545dbb88 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/InstanceRecord.cs @@ -0,0 +1,59 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System.IO; + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + /// + /// Defines a InstanceRecord. + /// + /// + internal class InstanceRecord + { + public InstanceRecord(ushort subfamilyNameId, ushort postScriptNameId, float[] coordinates) + { + this.SubfamilyNameId = subfamilyNameId; + this.PostScriptNameId = postScriptNameId; + this.Coordinates = coordinates; + } + + public ushort SubfamilyNameId { get; } + + public ushort PostScriptNameId { get; } + + public float[] Coordinates { get; } + + public static InstanceRecord Load(BigEndianBinaryReader reader, long offset, ushort axisCount) + { + // InstanceRecord + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+================================================================+ + // | uint16 | subfamilyNameID | The name ID for entries in the 'name' table that provide | + // | | | subfamily names for this instance. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | flags | Reserved for future use — set to 0. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | UserTuple | coordinates | The coordinates array for this instance. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | postScriptNameID | Optional. The name ID for entries in the 'name' table that | + // | | | provide PostScript names for this instance. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + + ushort subfamilyNameId = reader.ReadUInt16(); + ushort flags = reader.ReadUInt16(); + + float[] coordinates = new float[axisCount]; + for (int i = 0; i < axisCount; i++) + { + coordinates[i] = reader.ReadFixed(); + } + + ushort postScriptNameId = reader.ReadUInt16(); + + return new InstanceRecord(subfamilyNameId, postScriptNameId, coordinates); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs new file mode 100644 index 000000000..cca6500a0 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs @@ -0,0 +1,60 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System.Diagnostics; +using System.IO; + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + [DebuggerDisplay("ItemCount: {ItemCount}, WordDeltaCount: {WordDeltaCount}, RegionIndexCount: {RegionIndexes.Length}")] + internal class ItemVariationData + { + private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regionIndices) + { + this.ItemCount = itemCount; + this.WordDeltaCount = wordDeltaCount; + this.RegionIndexes = regionIndices; + } + + public ushort ItemCount { get; } + + public ushort WordDeltaCount { get; } + + public ushort[] RegionIndexes { get; } + + public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) + { + // ItemVariationData + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+================================================================+ + // | uint16 | itemCount | The number of delta sets for distinct items. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | wordDeltaCount | A packed field: the high bit is a flag. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // + uint16 | regionIndexCount | The number of variation regions referenced. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // + uint16 | regionIndexes[regionIndexCount] | Array of indices into the variation region list for | + // + | | the regions referenced by this item variation data table. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // + DeltaSet | deltaSets[itemCount] | Delta-set rows. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + ushort itemCount = reader.ReadUInt16(); + ushort wordDeltaCount = reader.ReadUInt16(); + ushort regionIndexCount = reader.ReadUInt16(); + ushort[] regionIndexes = new ushort[regionIndexCount]; + for (int i = 0; i < regionIndexCount; i++) + { + regionIndexes[i] = reader.ReadUInt16(); + } + + // TODO: how to deal with delta sets? + for (int i = 0; i < itemCount; i++) + { + } + + return new ItemVariationData(itemCount, wordDeltaCount, regionIndexes); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs new file mode 100644 index 000000000..42a0a735b --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs @@ -0,0 +1,71 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System; +using System.IO; + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + internal class ItemVariationStore + { + private static readonly ItemVariationStore EmptyItemVariationStoreTable = new(VariationRegionList.EmptyVariationRegionList, Array.Empty()); + + public ItemVariationStore(VariationRegionList variationRegionList, ItemVariationData[] itemVariations) + { + this.VariationRegionList = variationRegionList; + this.ItemVariations = itemVariations; + } + + public VariationRegionList VariationRegionList { get; } + + public ItemVariationData[] ItemVariations { get; } + + public static ItemVariationStore Load(BigEndianBinaryReader reader, long offset) + { + reader.Seek(offset, SeekOrigin.Begin); + + // Length in bytes of the Item Variation Store structure that follows. + ushort length = reader.ReadUInt16(); + if (length == 0) + { + return EmptyItemVariationStoreTable; + } + + long variationDataStoreStart = offset + 2; + + ushort format = reader.ReadUInt16(); + if (format != 1) + { + throw new InvalidFontFileException($"Invalid value for variation Store Format {format}. Should be '1'."); + } + + uint variationRegionListOffset = reader.ReadUInt32(); + ushort itemVariationDataCount = reader.ReadUInt16(); + + if (variationRegionListOffset > length) + { + throw new InvalidFontFileException("Invalid variation region list offset"); + } + + var itemVariations = new ItemVariationData[itemVariationDataCount]; + for (int i = 0; i < itemVariationDataCount; i++) + { + uint variationDataOffset = reader.ReadOffset32(); + if (offset >= length) + { + throw new InvalidFontFileException("Bad offset to variation data subtable"); + } + + var itemVariationData = ItemVariationData.Load(reader, variationDataStoreStart + variationDataOffset); + itemVariations[i] = itemVariationData; + } + + var variationRegionList = VariationRegionList.Load(reader, variationDataStoreStart + variationRegionListOffset); + + // Make sure we point to the stream to the end of the variation store data. + reader.Seek(offset + length, SeekOrigin.Begin); + + return new ItemVariationStore(variationRegionList, itemVariations); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/RegionAxisCoordinates.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/RegionAxisCoordinates.cs new file mode 100644 index 000000000..350f1b639 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/RegionAxisCoordinates.cs @@ -0,0 +1,17 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System.Diagnostics; + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + [DebuggerDisplay("StartCoord: {StartCoord}, PeakCoord: {PeakCoord}, EndCoord: {EndCoord}")] + public struct RegionAxisCoordinates + { + public float StartCoord; + + public float PeakCoord; + + public float EndCoord; + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/SegmentMapRecord.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/SegmentMapRecord.cs new file mode 100644 index 000000000..71b94e57c --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/SegmentMapRecord.cs @@ -0,0 +1,32 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + internal class SegmentMapRecord + { + public SegmentMapRecord(AxisValueMapRecord[] axisValueMap) => this.AxisValueMap = axisValueMap; + + public AxisValueMapRecord[] AxisValueMap { get; } + + public static SegmentMapRecord Load(BigEndianBinaryReader reader) + { + // SegmentMapRecord + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+=========================================================================+ + // | uint16 | positionMapCount | The number of correspondence pairs for this axis. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | AxisValueMap | axisValueMaps[positionMapCount] | The array of axis value map records for this axis. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + ushort positionMapCount = reader.ReadUInt16(); + var axisValueMap = new AxisValueMapRecord[positionMapCount]; + for (int i = 0; i < positionMapCount; i++) + { + axisValueMap[i] = AxisValueMapRecord.Load(reader); + } + + return new SegmentMapRecord(axisValueMap); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariationHeader.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariationHeader.cs new file mode 100644 index 000000000..8cf5bbafe --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariationHeader.cs @@ -0,0 +1,69 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System.IO; + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + internal class TupleVariationHeader + { + /// + /// Flag indicating that this tuple variation header includes an embedded peak tuple record, immediately after the tupleIndex field. + /// If set, the low 12 bits of the tupleIndex value are ignored. + /// Note that this must always be set within the 'cvar' table. + /// + internal const int EmbeddedPeakTupleMask = 0x8000; + + /// + /// Flag indicating that this tuple variation table applies to an intermediate region within the variation space. + /// If set, the header includes the two intermediate-region, start and end tuple records, immediately after the peak tuple record (if present). + /// + internal const int IntermediateRegionMask = 0x4000; + + /// + /// Flag indicating that the serialized data for this tuple variation table includes packed “point” number data. + /// If set, this tuple variation table uses that number data; if clear, this tuple variation table uses shared number + /// data found at the start of the serialized data for this glyph variation data or 'cvar' table. + /// + internal const int PrivatePointNumbersMask = 0x2000; + + /// + /// Mask for the low 12 bits to give the shared tuple records index. + /// + internal const int TupleIndexMask = 0x0FFF; + + public static TupleVariationHeader Load(BigEndianBinaryReader reader) + { + // TupleVariationHeader + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | Type | Name | Description | + // +======================+===========================================+==============================================================================+ + // | uint16 | variationDataSize | The size in bytes of the serialized data for this tuple variation table. | + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | uint16 | tupleIndex | A packed field. The high 4 bits are flags. | + // | | | The low 12 bits are an index into a shared tuple records array. | + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | Tuple | peakTuple | Peak tuple record for this tuple variation table — | + // | | | optional, determined by flags in the tupleIndex value. | + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | Tuple | intermediateStartTuple | Intermediate start tuple record for this tuple variation table — | + // | | | optional, determined by flags in the tupleIndex value. | + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | Tuple | intermediateEndTuple | Intermediate end tuple record for this tuple variation table — | + // | | | optional, determined by flags in the tupleIndex value. | + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + ushort variationDataSize = reader.ReadUInt16(); + ushort tupleIndex = reader.ReadUInt16(); + + int sharedTupleRecordsIndex = tupleIndex & TupleIndexMask; + bool privatePointNumbers = (tupleIndex & PrivatePointNumbersMask) == PrivatePointNumbersMask; + bool embeddedPeakTuple = (tupleIndex & EmbeddedPeakTupleMask) == EmbeddedPeakTupleMask; + bool intermediateRegion = (tupleIndex & IntermediateRegionMask) == IntermediateRegionMask; + + // TODO: read tuple data. Skipping data for now. + reader.Seek(variationDataSize - 2, SeekOrigin.Current); + + return new TupleVariationHeader(); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxisRecord.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxisRecord.cs new file mode 100644 index 000000000..d576385a4 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxisRecord.cs @@ -0,0 +1,67 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System.IO; + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + /// + /// Defines a VariationAxisRecord. + /// + /// + internal class VariationAxisRecord + { + internal VariationAxisRecord(string tag, float minValue, float defaultValue, float maxValue, ushort flags, ushort axisNameId) + { + this.Tag = tag; + this.MinValue = minValue; + this.DefaultValue = defaultValue; + this.MaxValue = maxValue; + this.Flags = flags; + this.AxisNameId = axisNameId; + } + + public string Tag { get; } + + public float MinValue { get; } + + public float DefaultValue { get; } + + public float MaxValue { get; } + + public ushort Flags { get; } + + public ushort AxisNameId { get; } + + public static VariationAxisRecord Load(BigEndianBinaryReader reader, long offset) + { + // VariationAxisRecord + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+================================================================+ + // | Tag | axisTag | Tag identifying the design variation for the axis. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Fixed | minValue | The minimum coordinate value for the axis. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Fixed | defaultValue | The default coordinate value for the axis. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Fixed | maxValue | The maximum coordinate value for the axis. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | flags | Axis qualifiers — see details below. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | axisNameID | The name ID for entries in the 'name' table that provide | + // | | | a display name for this axis. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + + string tag = reader.ReadTag(); + float minValue = reader.ReadFixed(); + float defaultValue = reader.ReadFixed(); + float maxValue = reader.ReadFixed(); + ushort flags = reader.ReadUInt16(); + ushort axisNameID = reader.ReadUInt16(); + + return new VariationAxisRecord(tag, minValue, defaultValue, maxValue, flags, axisNameID); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationRegionList.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationRegionList.cs new file mode 100644 index 000000000..1e3f01396 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationRegionList.cs @@ -0,0 +1,89 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System; +using System.Diagnostics; +using System.IO; + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + /// + /// Variation data is comprised of delta adjustment values that have effect over particular regions within the font’s variation space. + /// In a tuple variation store (described earlier in this chapter), the deltas are organized into groupings by region of applicability, with each grouping associated with a given region. + /// In contrast, the item variation store format organizes deltas into groupings by the target items to which they apply, with each grouping having deltas for several regions. + /// Accordingly, the item variation store uses different formats for describing the regions in which a set of deltas apply. + /// + /// + [DebuggerDisplay("AxisCount: {AxisCount}, RegionCount: {RegionCount}")] + internal class VariationRegionList + { + public static readonly VariationRegionList EmptyVariationRegionList = new(0, 0, new[] { Array.Empty() }); + + private VariationRegionList(ushort axisCount, ushort regionCount, RegionAxisCoordinates[][] variationRegions) + { + this.AxisCount = axisCount; + this.RegionCount = regionCount; + this.VariationRegions = variationRegions; + } + + public ushort AxisCount { get; } + + public ushort RegionCount { get; } + + public RegionAxisCoordinates[][] VariationRegions { get; } + + public static VariationRegionList Load(BigEndianBinaryReader reader, long offset) + { + // VariationRegionList + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+================================================================+ + // | uint16 | axisCount | The number of variation axes for this font. | + // | | | This must be the same number as axisCount in the 'fvar' table. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | regionCount | The number of variation region tables in the variation region | + // | | | list. Must be less than 32,768. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // + VariationRegion | variationRegions[regionCount] | Array of variation regions. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + ushort axisCount = reader.ReadUInt16(); + ushort regionCount = reader.ReadUInt16(); + var variationRegions = new RegionAxisCoordinates[regionCount][]; + for (int i = 0; i < regionCount; i++) + { + variationRegions[i] = new RegionAxisCoordinates[axisCount]; + for (int j = 0; j < axisCount; j++) + { + float startCoord = reader.ReadF2dot14(); + float peakCoord = reader.ReadF2dot14(); + float endCoord = reader.ReadF2dot14(); + + if (startCoord > peakCoord || peakCoord > endCoord) + { + throw new InvalidFontFileException("Region axis coordinates out of order"); + } + + if (startCoord < -0x4000 || endCoord > 0x4000) + { + throw new InvalidFontFileException("Region axis coordinate out of range"); + } + + if ((peakCoord < 0 && endCoord > 0) || (peakCoord > 0 && startCoord < 0)) + { + throw new InvalidFontFileException("Invalid region axis coordinates"); + } + + variationRegions[i][j] = new RegionAxisCoordinates() + { + StartCoord = startCoord, + PeakCoord = peakCoord, + EndCoord = endCoord + }; + } + } + + return new VariationRegionList(axisCount, regionCount, variationRegions); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/Cff/CffParser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs similarity index 83% rename from src/SixLabors.Fonts/Tables/Cff/CffParser.cs rename to src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs index c21dbfb11..a08ee4ce2 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffParser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs @@ -4,7 +4,6 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using System.Globalization; using System.Text; namespace SixLabors.Fonts.Tables.Cff @@ -13,14 +12,13 @@ namespace SixLabors.Fonts.Tables.Cff /// Parses a Compact Font Format (CFF) font program as described in The Compact Font Format specification (Adobe Technical Note #5176). /// A CFF font may contain multiple fonts and achieves compression by sharing details between fonts in the set. /// - internal class CffParser + internal class Cff1Parser : CffParserBase { /// /// Latin 1 Encoding: ISO 8859-1 is a single-byte encoding that can represent the first 256 Unicode characters. /// private static readonly Encoding Iso88591 = Encoding.GetEncoding("ISO-8859-1"); - private readonly StringBuilder pooledStringBuilder = new(); private long offset; private int charStringsOffset; private int charsetOffset; @@ -595,7 +593,8 @@ private CffGlyphData[] ReadCharStringsIndex( globalSubrBuffers, localSubBuffer ?? Array.Empty(), privateDictionary?.NominalWidthX ?? 0, - charstringsBuffer); + charstringsBuffer, + 1); } return glyphs; @@ -744,196 +743,6 @@ private List ReadDICTData(BigEndianBinaryReader reader, int len return dicData; } - - private CffDataDicEntry ReadEntry(BigEndianBinaryReader reader) - { - List operands = new(); - - //----------------------------- - // An operator is preceded by the operand(s) that - // specify its value. - //-------------------------------- - - //----------------------------- - // Operators and operands may be distinguished by inspection of - // their first byte: - // 0–21 specify operators and - // 28, 29, 30, and 32–254 specify operands(numbers). - // Byte values 22–27, 31, and 255 are reserved. - - // An operator may be preceded by up to a maximum of 48 operands - CFFOperator? @operator; - while (true) - { - byte b0 = reader.ReadByte(); - - if (b0 is >= 0 and <= 21) - { - // operators - @operator = this.ReadOperator(reader, b0); - break; // **break after found operator - } - else if (b0 is 28 or 29) - { - int num = this.ReadIntegerNumber(reader, b0); - operands.Add(new CffOperand(num, OperandKind.IntNumber)); - } - else if (b0 == 30) - { - double num = this.ReadRealNumber(reader); - operands.Add(new CffOperand(num, OperandKind.RealNumber)); - } - else if (b0 is >= 32 and <= 254) - { - int num = this.ReadIntegerNumber(reader, b0); - operands.Add(new CffOperand(num, OperandKind.IntNumber)); - } - else - { - throw new NotSupportedException("invalid DICT data b0 byte: " + b0); - } - } - - // I'm fairly confident that the operator can never be null. - return new CffDataDicEntry(@operator!, operands.ToArray()); - } - - private CFFOperator ReadOperator(BigEndianBinaryReader reader, byte b0) - { - // read operator key - byte b1 = 0; - if (b0 == 12) - { - // 2 bytes - b1 = reader.ReadByte(); - } - - // get registered operator by its key - return CFFOperator.GetOperatorByKey(b0, b1); - } - - private double ReadRealNumber(BigEndianBinaryReader reader) - { - // from https://typekit.files.wordpress.com/2013/05/5176.cff.pdf - // A real number operand is provided in addition to integer - // operands.This operand begins with a byte value of 30 followed - // by a variable-length sequence of bytes.Each byte is composed - // of two 4 - bit nibbles asdefined in Table 5. - - // The first nibble of a - // pair is stored in the most significant 4 bits of a byte and the - // second nibble of a pair is stored in the least significant 4 bits of a byte - StringBuilder sb = this.pooledStringBuilder; - sb.Clear(); // reset - - bool done = false; - bool exponentMissing = false; - while (!done) - { - int b = reader.ReadByte(); - - int nb_0 = (b >> 4) & 0xf; - int nb_1 = b & 0xf; - - for (int i = 0; !done && i < 2; ++i) - { - int nibble = (i == 0) ? nb_0 : nb_1; - - switch (nibble) - { - case 0x0: - case 0x1: - case 0x2: - case 0x3: - case 0x4: - case 0x5: - case 0x6: - case 0x7: - case 0x8: - case 0x9: - sb.Append(nibble); - exponentMissing = false; - break; - case 0xa: - sb.Append("."); - break; - case 0xb: - sb.Append("E"); - exponentMissing = true; - break; - case 0xc: - sb.Append("E-"); - exponentMissing = true; - break; - case 0xd: - break; - case 0xe: - sb.Append("-"); - break; - case 0xf: - done = true; - break; - default: - throw new Exception("IllegalArgumentException"); - } - } - } - - if (exponentMissing) - { - // the exponent is missing, just append "0" to avoid an exception - // not sure if 0 is the correct value, but it seems to fit - // see PDFBOX-1522 - sb.Append("0"); - } - - if (sb.Length == 0) - { - return 0d; - } - - if (!double.TryParse( - sb.ToString(), - NumberStyles.Number | NumberStyles.AllowExponent, - CultureInfo.InvariantCulture, - out double value)) - { - throw new NotSupportedException(); - } - - return value; - } - - private int ReadIntegerNumber(BigEndianBinaryReader reader, byte b0) - { - if (b0 == 28) - { - return reader.ReadInt16(); - } - else if (b0 == 29) - { - return reader.ReadInt32(); - } - else if (b0 is >= 32 and <= 246) - { - return b0 - 139; - } - else if (b0 is >= 247 and <= 250) - { - int b1 = reader.ReadByte(); - return ((b0 - 247) * 256) + b1 + 108; - } - else if (b0 is >= 251 and <= 254) - { - int b1 = reader.ReadByte(); - return (-(b0 - 251) * 256) - b1 - 108; - } - else - { - throw new InvalidFontFileException("Invalid DICT data b0 byte: " + b0); - } - } - private bool TryReadIndexDataOffsets(BigEndianBinaryReader reader, [NotNullWhen(true)] out CffIndexOffset[]? value) { // INDEX Data diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs b/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs index 97a5e5749..5afa72d87 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs @@ -55,7 +55,7 @@ public static Cff1Table Load(BigEndianBinaryReader reader) switch (major) { case 1: - CffParser parser = new(); + Cff1Parser parser = new(); return new(parser.Load(reader, position)); default: diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs new file mode 100644 index 000000000..0c1cd2c34 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs @@ -0,0 +1,390 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.IO; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +namespace SixLabors.Fonts.Tables.Cff +{ + /// + /// Parses a Compact Font Format (CFF) version 2 described in https://docs.microsoft.com/de-de/typography/opentype/spec/cff2 + /// + internal class Cff2Parser : CffParserBase + { + private long offset; + + private int fontMatrixOffset; + private int charStringIndexOffset; + private int variationStoreOffset; + private int fdArrayOffset; + + private ItemVariationStore? itemVariationStore; + + public CffFont Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictLength, long offset) + { + this.offset = offset; + reader.Seek(hdrSize, SeekOrigin.Begin); + + // TODO: spec states: font name can be copied from the name ID 6 value in the 'name' table. + string fontName = "placeHolder"; + + long startPos = reader.BaseStream.Position; + this.ReadTopDictData(reader, topDictLength); + reader.Seek(hdrSize + topDictLength, SeekOrigin.Begin); + + byte[][] globalSubrRawBuffers = this.ReadGlobalSubrIndex(reader); + + this.itemVariationStore = ItemVariationStore.Load(reader, this.variationStoreOffset); + + // TODO: FDSelect? + CffIndexOffset[] charStringOffsets = this.ReadCharStringIndex(reader); + byte[][] charStringBuffers = this.ReadCharStringBuffers(reader, charStringOffsets); + + FontDict[] fontDicts = this.ReadFdArray(reader); + var topDictionary = new CffTopDictionary + { + CidFontInfo = new CidFontInfo() + { + FDArray = this.fdArrayOffset + } + }; + + var privateDictionary = new CffPrivateDictionary(fontDicts[0].LocalSubr, 0, 0); + int glyphCount = charStringOffsets.Length; + CffGlyphData[] glyphs = this.ReadCharStringsIndex(topDictionary, globalSubrRawBuffers, fontDicts, privateDictionary, charStringBuffers, glyphCount); + + return new(fontName, topDictionary, glyphs); + } + + private void ReadTopDictData(BigEndianBinaryReader reader, ushort topDictLength) + { + long startPosition = reader.BaseStream.Position; + long maxPosition = startPosition + topDictLength; + while (reader.BaseStream.Position < maxPosition) + { + CffDataDicEntry dataDicEntry = this.ReadEntry(reader); + switch (dataDicEntry.Operator.Name) + { + case "FontMatrix": + this.fontMatrixOffset = (int)dataDicEntry.Operands[0].RealNumValue; + break; + case "CharStrings": + this.charStringIndexOffset = (int)dataDicEntry.Operands[0].RealNumValue; + break; + case "FDArray": + this.fdArrayOffset = (int)dataDicEntry.Operands[0].RealNumValue; + break; + case "FDSelect": + this.fdArrayOffset = (int)dataDicEntry.Operands[0].RealNumValue; + break; + case "vstore": + this.variationStoreOffset = (int)dataDicEntry.Operands[0].RealNumValue; + break; + default: + throw new InvalidFontFileException("Error parsing TopDictData."); + } + } + } + + private FontDict[] ReadFdArray(BigEndianBinaryReader reader) + { + reader.BaseStream.Position = this.offset + this.fdArrayOffset; + + if (!this.TryReadIndexDataOffsets(reader, true, out CffIndexOffset[]? offsets)) + { + return Array.Empty(); + } + + var fontDicts = new FontDict[offsets.Length]; + for (int i = 0; i < fontDicts.Length; ++i) + { + // read DICT data + List dic = this.ReadDICTData(reader, offsets[i].Length); + + // translate + int offset = 0; + int size = 0; + int name = 0; + + foreach (CffDataDicEntry entry in dic) + { + switch (entry.Operator.Name) + { + default: + throw new NotSupportedException(); + case "FontName": + name = (int)entry.Operands[0].RealNumValue; + break; + case "Private": // private dic + size = (int)entry.Operands[0].RealNumValue; + offset = (int)entry.Operands[1].RealNumValue; + break; + } + } + + fontDicts[i] = new FontDict(name, size, offset); + } + + foreach (FontDict fdict in fontDicts) + { + reader.BaseStream.Position = this.offset + fdict.PrivateDicOffset; + + List dicData = this.ReadDICTData(reader, fdict.PrivateDicSize); + + if (dicData.Count > 0) + { + // Interpret the values of private dict + foreach (CffDataDicEntry dicEntry in dicData) + { + switch (dicEntry.Operator.Name) + { + case "Subrs": + int localSubrsOffset = (int)dicEntry.Operands[0].RealNumValue; + reader.BaseStream.Position = this.offset + fdict.PrivateDicOffset + localSubrsOffset; + fdict.LocalSubr = this.ReadSubrBuffer(reader); + break; + + case "defaultWidthX": + case "nominalWidthX": + break; + } + } + } + } + + return fontDicts; + } + + private byte[][] ReadGlobalSubrIndex(BigEndianBinaryReader reader, bool cff2 = true) + + // 16. Local / Global Subrs INDEXes + // Both Type 1 and Type 2 charstrings support the notion of + // subroutines or subrs. + + // A subr is typically a sequence of charstring + // bytes representing a sub - program that occurs in more than one + // place in a font’s charstring data. + + // This subr may be stored once + // but referenced many times from within one or more charstrings + // by the use of the call subr operator whose operand is the + // number of the subr to be called. + + // The subrs are local to a particular font and + // cannot be shared between fonts. + + // Type 2 charstrings also permit global subrs which function in the same + // way but are called by the call gsubr operator and may be shared + // across fonts. + + // Local subrs are stored in an INDEX structure which is located via + // the offset operand of the Subrs operator in the Private DICT. + // A font without local subrs has no Subrs operator in the Private DICT. + + // Global subrs are stored in an INDEX structure which follows the + // String INDEX. A FontSet without any global subrs is represented + // by an empty Global Subrs INDEX. + => this.ReadSubrBuffer(reader, cff2); + + private byte[][] ReadSubrBuffer(BigEndianBinaryReader reader, bool cff2 = true) + { + if (!this.TryReadIndexDataOffsets(reader, cff2, out CffIndexOffset[]? offsets)) + { + return Array.Empty(); + } + + byte[][] rawBufferList = new byte[offsets.Length][]; + + for (int i = 0; i < rawBufferList.Length; ++i) + { + CffIndexOffset offset = offsets[i]; + rawBufferList[i] = reader.ReadBytes(offset.Length); + } + + return rawBufferList; + } + + private CffIndexOffset[] ReadCharStringIndex(BigEndianBinaryReader reader) + { + reader.BaseStream.Position = this.offset + this.charStringIndexOffset; + if (!this.TryReadIndexDataOffsets(reader, true, out CffIndexOffset[]? offsets)) + { + throw new InvalidFontFileException("No glyph data found."); + } + + return offsets; + } + + private byte[][] ReadCharStringBuffers(BigEndianBinaryReader reader, CffIndexOffset[] offsets) + { + int glyphCount = offsets.Length; + byte[][] charStringBuffers = new byte[offsets.Length][]; + for (int i = 0; i < glyphCount; ++i) + { + CffIndexOffset cffIndexOffset = offsets[i]; + byte[] charStringsBuffer = reader.ReadBytes(cffIndexOffset.Length); + charStringBuffers[i] = charStringsBuffer; + } + + return charStringBuffers; + } + + private CffGlyphData[] ReadCharStringsIndex( + CffTopDictionary topDictionary, + byte[][] globalSubrBuffers, + FontDict[] fontDicts, + CffPrivateDictionary? privateDictionary, + byte[][] charStringBuffers, + int glyphCount) + { + // 14. CharStrings INDEX + + // This contains the charstrings of all the glyphs in a font stored in + // an INDEX structure. + + // Charstring objects contained within this + // INDEX are accessed by GID. + + // The first charstring(GID 0) must be + // the.notdef glyph. + + // The number of glyphs available in a font may + // be determined from the count field in the INDEX. + + // + + // The format of the charstring data, and therefore the method of + // interpretation, is specified by the + // CharstringType operator in the Top DICT. + + // The CharstringType operator has a default value + // of 2 indicating the Type 2 charstring format which was designed + // in conjunction with CFF. + + // Type 1 charstrings are documented in + // the “Adobe Type 1 Font Format” published by Addison - Wesley. + + // Type 2 charstrings are described in Adobe Technical Note #5177: + // “Type 2 Charstring Format.” Other charstring types may also be + // supported by this method. + var glyphs = new CffGlyphData[glyphCount]; + byte[][]? localSubBuffer = privateDictionary?.LocalSubrRawBuffers; + + // Is the font a CID font? + FDRangeProvider fdRangeProvider = new(topDictionary.CidFontInfo.FdRanges); + bool isCidFont = topDictionary.CidFontInfo.FdRanges.Length > 0; + for (int i = 0; i < glyphCount; ++i) + { + byte[] charstringsBuffer = charStringBuffers[i]; + + // Now we can parse the raw glyph instructions + // Select proper local private dict. + if (isCidFont) + { + fdRangeProvider.SetCurrentGlyphIndex((ushort)i); + localSubBuffer = fontDicts[fdRangeProvider.SelectedFDArray].LocalSubr; + } + + glyphs[i] = new CffGlyphData( + (ushort)i, + globalSubrBuffers, + localSubBuffer ?? Array.Empty(), + privateDictionary?.NominalWidthX ?? 0, + charstringsBuffer, + 2, + this.itemVariationStore); + } + + return glyphs; + } + + private bool TryReadIndexDataOffsets(BigEndianBinaryReader reader, bool cff2, [NotNullWhen(true)] out CffIndexOffset[]? value) + { + // INDEX Data + // An INDEX is an array of variable-sized objects.It comprises a + // header, an offset array, and object data. + // The offset array specifies offsets within the object data. + // An object is retrieved by + // indexing the offset array and fetching the object at the + // specified offset. + // The object’s length can be determined by subtracting its offset + // from the next offset in the offset array. + // An additional offset is added at the end of the offset array so the + // length of the last object may be determined. + // The INDEX format is shown in Table 7 + + // Table 7 INDEX Format + // Type Name Description + // Card16 count Number of objects stored in INDEX + // OffSize offSize Offset array element size + // Offset offset[count + 1] Offset array(from byte preceding object data) + // Card8 data[] Object data + + // Offsets in the offset array are relative to the byte that precedes + // the object data. Therefore the first element of the offset array + // is always 1. (This ensures that every object has a corresponding + // offset which is always nonzero and permits the efficient + // implementation of dynamic object loading.) + + // An empty INDEX is represented by a count field with a 0 value + // and no additional fields.Thus, the total size of an empty INDEX + // is 2 bytes. + + // Note 2 + // An INDEX may be skipped by jumping to the offset specified by the last + // element of the offset array + uint count = cff2 ? reader.ReadUInt32() : reader.ReadUInt16(); + + if (count == 0) + { + value = null; + return false; + } + + int offSize = reader.ReadByte(); + int[] offsets = new int[count + 1]; + var indexElems = new CffIndexOffset[count]; + for (int i = 0; i <= count; ++i) + { + offsets[i] = reader.ReadOffset(offSize); + } + + for (int i = 0; i < count; ++i) + { + indexElems[i] = new CffIndexOffset(offsets[i], offsets[i + 1] - offsets[i]); + } + + value = indexElems; + return true; + } + + private List ReadDICTData(BigEndianBinaryReader reader, int length) + { + // 4. DICT Data + + // Font dictionary data comprising key-value pairs is represented + // in a compact tokenized format that is similar to that used to + // represent Type 1 charstrings. + + // Dictionary keys are encoded as 1- or 2-byte operators and dictionary values are encoded as + // variable-size numeric operands that represent either integer or + // real values. + + //----------------------------- + // A DICT is simply a sequence of + // operand(s)/operator bytes concatenated together. + int maxIndex = (int)(reader.BaseStream.Position + length); + List dicData = new(); + while (reader.BaseStream.Position < maxIndex) + { + CffDataDicEntry dicEntry = this.ReadEntry(reader); + dicData.Add(dicEntry); + } + + return dicData; + } + } +} diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs index 9022acee5..9970900bd 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs @@ -32,6 +32,24 @@ public CffGlyphData GetGlyph(int index) } } - public static Cff2Table Load(BigEndianBinaryReader reader) => throw new NotSupportedException("CFF2 Fonts are not currently supported."); + public static Cff2Table Load(BigEndianBinaryReader reader) + { + long position = reader.BaseStream.Position; + byte major = reader.ReadUInt8(); + byte minor = reader.ReadUInt8(); + byte hdrSize = reader.ReadUInt8(); + ushort topDictLength = reader.ReadUInt16(); + + switch (major) + { + case 2: + Cff2Parser parser = new(); + parser.Load(reader, hdrSize, topDictLength, position); + return new(parser.Load(reader, hdrSize, topDictLength, position)); + + default: + throw new NotSupportedException("CFF version 2 is expected"); + } + } } } diff --git a/src/SixLabors.Fonts/Tables/Cff/CffEvaluationEngine.cs b/src/SixLabors.Fonts/Tables/Cff/CffEvaluationEngine.cs index 8fe5bb0b3..59a19c04d 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffEvaluationEngine.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffEvaluationEngine.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Numerics; using System.Runtime.CompilerServices; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; namespace SixLabors.Fonts.Tables.Cff { @@ -15,7 +16,7 @@ namespace SixLabors.Fonts.Tables.Cff /// /// /// A Type 2 charstring program is a sequence of unsigned 8-bit bytes that encode numbers and operators. - /// The byte value specifies a operator, a number, or subsequent bytes that are to be interpreted in a specific manner + /// The byte value specifies a operator, a number, or subsequent bytes that are to be interpreted in a specific manner. /// internal ref struct CffEvaluationEngine { @@ -34,12 +35,19 @@ internal ref struct CffEvaluationEngine private readonly int localBias; private readonly Dictionary trans; private bool isDisposed; + private readonly int version; + private readonly GlyphVariationProcessor? glyphVariationProcessor; + private int vsIndex; public CffEvaluationEngine( ReadOnlySpan charStrings, ReadOnlySpan globalSubrBuffers, ReadOnlySpan localSubrBuffers, - int nominalWidthX) + int nominalWidthX, + int version, + ItemVariationStore? itemVariationStore = null, + FVarTable? fVar = null, + AVarTable? aVar = null) { this.transforming = default; this.charStrings = charStrings; @@ -57,6 +65,21 @@ public CffEvaluationEngine( this.nStems = 0; this.stack = new(50); this.isDisposed = false; + this.version = version; + this.glyphVariationProcessor = null; + + if (itemVariationStore != null) + { + if (fVar is null) + { + throw new InvalidFontFileException("missing fVar table required for glyph variations processing"); + } + + this.glyphVariationProcessor = new GlyphVariationProcessor(itemVariationStore, fVar, aVar); + } + + // TODO: always 0 for now. Should be privateDict.vsindex + this.vsIndex = 0; } public Bounds GetBounds() @@ -196,12 +219,20 @@ private void Parse(ReadOnlySpan buffer) case Type2Operator1.Return: - // TODO: CFF2 + if (this.version >= 2) + { + break; + } + return; case Type2Operator1.Endchar: - // TODO: CFF2 + if (this.version >= 2) + { + break; + } + if (this.stack.Length > 0) { this.CheckWidth(); @@ -210,14 +241,49 @@ private void Parse(ReadOnlySpan buffer) endCharEncountered = true; break; - case Type2Operator1.Reserved15_: + case Type2Operator1.VsIndex: + if (this.version < 2) + { + throw new NotSupportedException("blend operator is not supported in CFF v1"); + } - // TODO: CFF2 + this.vsIndex = (int)this.stack.Pop(); break; - case Type2Operator1.Reserved16_: + case Type2Operator1.Blend: + if (this.version < 2) + { + throw new NotSupportedException("blend operator is not supported in CFF v1"); + } + + if (this.glyphVariationProcessor is null) + { + throw new NotSupportedException("blend operator in non-variation font"); + } + + float[] blendVector = this.glyphVariationProcessor.BlendVector(this.vsIndex); + float numBlends = this.stack.Pop(); + float numOperands = numBlends * blendVector.Length; + int delta = this.stack.Length - (int)numOperands; + int basis = delta - (int)numBlends; + + for (int i = 0; i < numBlends; i++) + { + float sum = this.stack[basis + i]; + for (int j = 0; j < blendVector.Length; j++) + { + sum += blendVector[j] * this.stack[delta++]; + } + + this.stack[basis + i] = sum; + } + + while (numOperands-- > 0) + { + this.stack.Pop(); + } - // TODO: CFF2 break; + case Type2Operator1.Hintmask: case Type2Operator1.Cntrmask: diff --git a/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs b/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs index 2ce6af302..5158878ba 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. using System.Numerics; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; namespace SixLabors.Fonts.Tables.Cff { @@ -11,34 +12,44 @@ internal struct CffGlyphData private readonly byte[][] localSubrBuffers; private readonly byte[] charStrings; private readonly int nominalWidthX; + private readonly int version; + private readonly ItemVariationStore? itemVariationStore; public CffGlyphData( ushort glyphIndex, byte[][] globalSubrBuffers, byte[][] localSubrBuffers, int nominalWidthX, - byte[] charStrings) + byte[] charStrings, + int version, + ItemVariationStore? itemVariationStore = null) { this.GlyphIndex = glyphIndex; this.globalSubrBuffers = globalSubrBuffers; this.localSubrBuffers = localSubrBuffers; this.nominalWidthX = nominalWidthX; this.charStrings = charStrings; + this.version = version; + this.itemVariationStore = itemVariationStore; this.GlyphName = null; } - public readonly ushort GlyphIndex { get; } + public ushort GlyphIndex { get; } public string? GlyphName { get; set; } - public Bounds GetBounds() + public Bounds GetBounds(FVarTable? fVar = null, AVarTable? aVar = null) { using var engine = new CffEvaluationEngine( this.charStrings, this.globalSubrBuffers, this.localSubrBuffers, - this.nominalWidthX); + this.nominalWidthX, + this.version, + this.itemVariationStore, + fVar, + aVar); return engine.GetBounds(); } @@ -49,7 +60,9 @@ public void RenderTo(IGlyphRenderer renderer, Vector2 scale, Vector2 offset) this.charStrings, this.globalSubrBuffers, this.localSubrBuffers, - this.nominalWidthX); + this.nominalWidthX, + this.version, + this.itemVariationStore); engine.RenderTo(renderer, scale, offset); } diff --git a/src/SixLabors.Fonts/Tables/Cff/CffOperator.cs b/src/SixLabors.Fonts/Tables/Cff/CffOperator.cs index 9931edc71..2a3443ce2 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffOperator.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffOperator.cs @@ -97,6 +97,10 @@ private static Dictionary CreateDictionary() Register(dictionary, 20, "defaultWidthX", OperatorOperandKind.Number); Register(dictionary, 21, "nominalWidthX", OperatorOperandKind.Number); + Register(dictionary, 22, "vsindex", OperatorOperandKind.Number); + Register(dictionary, 23, "blend", OperatorOperandKind.Number); + Register(dictionary, 24, "vstore", OperatorOperandKind.Number); + return dictionary; } diff --git a/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs b/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs new file mode 100644 index 000000000..b761b57f6 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs @@ -0,0 +1,206 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; + +namespace SixLabors.Fonts.Tables.Cff +{ + internal abstract class CffParserBase + { + private readonly StringBuilder pooledStringBuilder = new(); + + public CffDataDicEntry ReadEntry(BigEndianBinaryReader reader) + { + List operands = new(); + + //----------------------------- + // An operator is preceded by the operand(s) that + // specify its value. + //-------------------------------- + + //----------------------------- + // Operators and operands may be distinguished by inspection of + // their first byte: + // 0–21 specify operators and + // 28, 29, 30, and 32–254 specify operands(numbers). + // Byte values 22–27, 31, and 255 are reserved. + + // An operator may be preceded by up to a maximum of 48 operands + CFFOperator? @operator; + while (true) + { + byte b0 = reader.ReadUInt8(); + + if (b0 is >= 0 and <= 24) + { + // operators + @operator = this.ReadOperator(reader, b0); + break; // **break after found operator + } + else if (b0 is 28 or 29) + { + int num = this.ReadIntegerNumber(reader, b0); + operands.Add(new CffOperand(num, OperandKind.IntNumber)); + } + else if (b0 == 30) + { + double num = this.ReadRealNumber(reader); + operands.Add(new CffOperand(num, OperandKind.RealNumber)); + } + else if (b0 is >= 32 and <= 254) + { + int num = this.ReadIntegerNumber(reader, b0); + operands.Add(new CffOperand(num, OperandKind.IntNumber)); + } + else + { + throw new NotSupportedException("invalid DICT data b0 byte: " + b0); + } + } + + // I'm fairly confident that the operator can never be null. + return new CffDataDicEntry(@operator!, operands.ToArray()); + } + + private CFFOperator ReadOperator(BigEndianBinaryReader reader, byte b0) + { + // read operator key + byte b1 = 0; + if (b0 == 12) + { + // 2 bytes + b1 = reader.ReadUInt8(); + } + + // get registered operator by its key + return CFFOperator.GetOperatorByKey(b0, b1); + } + + private double ReadRealNumber(BigEndianBinaryReader reader) + { + // from https://typekit.files.wordpress.com/2013/05/5176.cff.pdf + // A real number operand is provided in addition to integer + // operands.This operand begins with a byte value of 30 followed + // by a variable-length sequence of bytes.Each byte is composed + // of two 4 - bit nibbles asdefined in Table 5. + + // The first nibble of a + // pair is stored in the most significant 4 bits of a byte and the + // second nibble of a pair is stored in the least significant 4 bits of a byte + StringBuilder sb = this.pooledStringBuilder; + sb.Clear(); // reset + + bool done = false; + bool exponentMissing = false; + while (!done) + { + int b = reader.ReadByte(); + + int nb_0 = (b >> 4) & 0xf; + int nb_1 = b & 0xf; + + for (int i = 0; !done && i < 2; ++i) + { + int nibble = (i == 0) ? nb_0 : nb_1; + + switch (nibble) + { + case 0x0: + case 0x1: + case 0x2: + case 0x3: + case 0x4: + case 0x5: + case 0x6: + case 0x7: + case 0x8: + case 0x9: + sb.Append(nibble); + exponentMissing = false; + break; + case 0xa: + sb.Append("."); + break; + case 0xb: + sb.Append("E"); + exponentMissing = true; + break; + case 0xc: + sb.Append("E-"); + exponentMissing = true; + break; + case 0xd: + break; + case 0xe: + sb.Append("-"); + break; + case 0xf: + done = true; + break; + default: + throw new Exception("IllegalArgumentException"); + } + } + } + + if (exponentMissing) + { + // the exponent is missing, just append "0" to avoid an exception + // not sure if 0 is the correct value, but it seems to fit + // see PDFBOX-1522 + sb.Append("0"); + } + + if (sb.Length == 0) + { + return 0d; + } + + if (!double.TryParse( + sb.ToString(), + NumberStyles.Number | NumberStyles.AllowExponent, + CultureInfo.InvariantCulture, + out double value)) + { + throw new NotSupportedException(); + } + + return value; + } + + private int ReadIntegerNumber(BigEndianBinaryReader reader, byte b0) + { + if (b0 == 28) + { + return reader.ReadInt16(); + } + + if (b0 == 29) + { + return reader.ReadInt32(); + } + + if (b0 is >= 32 and <= 246) + { + return b0 - 139; + } + + if (b0 is >= 247 and <= 250) + { + int b1 = reader.ReadByte(); + return ((b0 - 247) * 256) + b1 + 108; + } + + if (b0 is >= 251 and <= 254) + { + int b1 = reader.ReadByte(); + return (-(b0 - 251) * 256) - b1 - 108; + } + + throw new InvalidFontFileException("Invalid DICT data b0 byte: " + b0); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs b/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs index 40bf0cb93..4128a8649 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. using SixLabors.Fonts.Tables.AdvancedTypographic; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Tables.General; using SixLabors.Fonts.Tables.General.Colr; using SixLabors.Fonts.Tables.General.Kern; @@ -66,6 +67,10 @@ public CompactFontTables( public VerticalMetricsTable? Vmtx { get; set; } + public FVarTable? FVar { get; set; } + + public AVarTable? AVar { get; set; } + // Tables Related to CFF Outlines // +------+----------------------------------+ // | Tag | Name | diff --git a/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs b/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs index 5bdbcee04..01f63dc68 100644 --- a/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs +++ b/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs @@ -20,7 +20,7 @@ public FDRangeProvider(FDRange3[] ranges) this.currentGlyphIndex = 0; this.currentSelectedRangeIndex = 0; - if (ranges != null) + if (ranges?.Length > 0) { this.currentRange = ranges[0]; this.endGlyphIndexMax = ranges[1].First; diff --git a/src/SixLabors.Fonts/Tables/Cff/Type2Operator1.cs b/src/SixLabors.Fonts/Tables/Cff/Type2Operator1.cs index dc36b1130..b27b47c9c 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Type2Operator1.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Type2Operator1.cs @@ -21,8 +21,8 @@ internal enum Type2Operator1 : byte Escape, // 12 Reserved13_, Endchar, // 14 - Reserved15_, - Reserved16_, + VsIndex, + Blend, Reserved17_, Hstemhm, // 18 Hintmask, // 19 diff --git a/src/SixLabors.Fonts/Tables/TableLoader.cs b/src/SixLabors.Fonts/Tables/TableLoader.cs index 4a36381d2..031cdb8c1 100644 --- a/src/SixLabors.Fonts/Tables/TableLoader.cs +++ b/src/SixLabors.Fonts/Tables/TableLoader.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Reflection; using SixLabors.Fonts.Tables.AdvancedTypographic; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Tables.Cff; using SixLabors.Fonts.Tables.General; using SixLabors.Fonts.Tables.General.Colr; @@ -50,6 +51,9 @@ public TableLoader() this.Register(PostTable.Load); this.Register(Cff1Table.Load); this.Register(Cff2Table.Load); + this.Register(FVarTable.Load); + this.Register(AVarTable.Load); + this.Register(GVarTable.Load); } public static TableLoader Default { get; } = new(); From a1917ff33348e5898bd877323878180f38d2df84 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Mon, 27 Jun 2022 17:18:31 +0200 Subject: [PATCH 02/56] Fix mistake loading VariationAxisRecord --- .../Tables/AdvancedTypographic/Variations/FVarTable.cs | 2 +- .../AdvancedTypographic/Variations/GlyphVariationProcessor.cs | 3 +-- .../AdvancedTypographic/Variations/VariationAxisRecord.cs | 4 +++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs index a432b2726..3cbf7e7e7 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs @@ -79,7 +79,7 @@ public static FVarTable Load(BigEndianBinaryReader reader) var axesArray = new VariationAxisRecord[axisCount]; for (int i = 0; i < axisCount; i++) { - axesArray[i] = VariationAxisRecord.Load(reader, axesArrayOffset + axisSize); + axesArray[i] = VariationAxisRecord.Load(reader, axesArrayOffset + (axisSize * i)); } var instances = new InstanceRecord[instanceCount]; diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index 0f6d85125..7c04b9409 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -70,8 +70,7 @@ private float[] NormalizeDefaultCoords() { AxisValueMapRecord prev = segment.AxisValueMap[j - 1]; normalized[i] = ((((normalized[i] - prev.FromCoordinate) * (pair.ToCoordinate - prev.ToCoordinate)) + float.Epsilon) / - (pair.FromCoordinate - prev.FromCoordinate + float.Epsilon)) + - prev.ToCoordinate; + (pair.FromCoordinate - prev.FromCoordinate + float.Epsilon)) + prev.ToCoordinate; } } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxisRecord.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxisRecord.cs index d576385a4..340be61ed 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxisRecord.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxisRecord.cs @@ -1,6 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Apache License, Version 2.0. +using System.Diagnostics; using System.IO; namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations @@ -9,14 +10,15 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations /// Defines a VariationAxisRecord. /// /// + [DebuggerDisplay("Tag: {Tag}, MinValue: {MinValue}, MaxValue: {MaxValue}, DefaultValue: {DefaultValue}, AxisNameId: {AxisNameId}")] internal class VariationAxisRecord { internal VariationAxisRecord(string tag, float minValue, float defaultValue, float maxValue, ushort flags, ushort axisNameId) { this.Tag = tag; this.MinValue = minValue; - this.DefaultValue = defaultValue; this.MaxValue = maxValue; + this.DefaultValue = defaultValue; this.Flags = flags; this.AxisNameId = axisNameId; } From 29317e4550b846d7052966fce3ec9fc56b5d8e97 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Mon, 27 Jun 2022 17:52:46 +0200 Subject: [PATCH 03/56] - Use Epsilon defined in fontkit rather the float.Epsilon - Add missing break --- .../Variations/GlyphVariationProcessor.cs | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index 7c04b9409..3a1817a2f 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -21,6 +21,11 @@ internal class GlyphVariationProcessor private readonly float[] normalizedCoords; + /// + /// Epsilon as used in fontkit reference implementation. + /// + private const float Epsilon = 2.2204460492503130808472633361816E-16F; + public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVarTable? aVar = null) { DebugGuard.NotNull(itemStore, nameof(itemStore)); @@ -48,11 +53,11 @@ private float[] NormalizeDefaultCoords() VariationAxisRecord axis = this.fvar.Axes[i]; if (coords[i] < axis.DefaultValue) { - normalized[i] = (coords[i] - axis.DefaultValue + float.Epsilon) / (axis.DefaultValue - axis.MinValue + float.Epsilon); + normalized[i] = (coords[i] - axis.DefaultValue + Epsilon) / (axis.DefaultValue - axis.MinValue + Epsilon); } else { - normalized[i] = (coords[i] - axis.DefaultValue + float.Epsilon) / (axis.MaxValue - axis.DefaultValue + float.Epsilon); + normalized[i] = (coords[i] - axis.DefaultValue + Epsilon) / (axis.MaxValue - axis.DefaultValue + Epsilon); } } @@ -69,8 +74,9 @@ private float[] NormalizeDefaultCoords() if (j >= 1 && normalized[i] < pair.FromCoordinate) { AxisValueMapRecord prev = segment.AxisValueMap[j - 1]; - normalized[i] = ((((normalized[i] - prev.FromCoordinate) * (pair.ToCoordinate - prev.ToCoordinate)) + float.Epsilon) / - (pair.FromCoordinate - prev.FromCoordinate + float.Epsilon)) + prev.ToCoordinate; + normalized[i] = ((((normalized[i] - prev.FromCoordinate) * (pair.ToCoordinate - prev.ToCoordinate)) + Epsilon) / + (pair.FromCoordinate - prev.FromCoordinate + Epsilon)) + prev.ToCoordinate; + break; } } } @@ -126,13 +132,13 @@ public float[] BlendVector(int outerIndex) } else if (this.normalizedCoords[j] < axis.PeakCoord) { - axisScalar = (this.normalizedCoords[j] - axis.StartCoord + float.Epsilon) / - (axis.PeakCoord - axis.StartCoord + float.Epsilon); + axisScalar = (this.normalizedCoords[j] - axis.StartCoord + Epsilon) / + (axis.PeakCoord - axis.StartCoord + Epsilon); } else { - axisScalar = (axis.EndCoord - this.normalizedCoords[j] + float.Epsilon) / - (axis.EndCoord - axis.PeakCoord + float.Epsilon); + axisScalar = (axis.EndCoord - this.normalizedCoords[j] + Epsilon) / + (axis.EndCoord - axis.PeakCoord + Epsilon); } } From c541f5257c9bd050b7fd5603c13085b4d838cbb4 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Mon, 27 Jun 2022 18:20:12 +0200 Subject: [PATCH 04/56] Cache calculated blend vectors --- .../Variations/GlyphVariationProcessor.cs | 11 +++++++++++ .../Variations/ItemVariationData.cs | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index 3a1817a2f..e9fc09250 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -1,6 +1,8 @@ // Copyright (c) Six Labors. // Licensed under the Apache License, Version 2.0. +using System.Collections.Generic; + namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations { /// @@ -21,6 +23,8 @@ internal class GlyphVariationProcessor private readonly float[] normalizedCoords; + private readonly Dictionary blendVectors; + /// /// Epsilon as used in fontkit reference implementation. /// @@ -35,6 +39,7 @@ public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVa this.fvar = fVar; this.avar = aVar; this.normalizedCoords = this.NormalizeDefaultCoords(); + this.blendVectors = new Dictionary(); } private float[] NormalizeDefaultCoords() @@ -88,6 +93,10 @@ private float[] NormalizeDefaultCoords() public float[] BlendVector(int outerIndex) { ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; + if (this.blendVectors.ContainsKey(variationData)) + { + return this.blendVectors[variationData]; + } float[] blendVector = new float[variationData.RegionIndexes.Length]; @@ -149,6 +158,8 @@ public float[] BlendVector(int outerIndex) blendVector[i] = scalar; } + this.blendVectors[variationData] = blendVector; + return blendVector; } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs index cca6500a0..97ff0da94 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs @@ -1,6 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Apache License, Version 2.0. +using System; using System.Diagnostics; using System.IO; @@ -56,5 +57,8 @@ public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) return new ItemVariationData(itemCount, wordDeltaCount, regionIndexes); } + + /// + public override int GetHashCode() => HashCode.Combine(this.ItemCount, this.WordDeltaCount, this.RegionIndexes); } } From dfc08fcb6e6e94245adc56d2c84d2e74aafa6e4c Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Tue, 28 Jun 2022 13:04:22 +0200 Subject: [PATCH 05/56] Make ItemVariationStore a property of ICffTable --- src/SixLabors.Fonts/StreamFontMetrics.Cff.cs | 18 +++++++++++++++--- src/SixLabors.Fonts/StreamFontMetrics.cs | 7 ++++++- src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs | 3 +++ src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs | 15 +++++++++++++++ src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs | 5 ++--- src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs | 13 ++++++++++--- src/SixLabors.Fonts/Tables/Cff/CffFont.cs | 2 ++ src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs | 18 ++++++++++++++---- src/SixLabors.Fonts/Tables/Cff/ICffTable.cs | 11 +++++++++++ 9 files changed, 78 insertions(+), 14 deletions(-) create mode 100644 src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs diff --git a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs index 18019ccfe..cbd4cdcca 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs @@ -22,7 +22,7 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) { // Load using recommended order for best performance. // https://www.microsoft.com/typography/otspec/recom.htm#TableOrdering - // 'head', 'hhea', 'maxp', OS/2, 'name', 'cmap', 'post', 'CFF ' + // 'head', 'hhea', 'maxp', OS/2, 'name', 'cmap', 'post', 'CFF ' / 'CFF2' HeadTable head = reader.GetTable(); HorizontalHeadTable hhea = reader.GetTable(); MaximumProfileTable maxp = reader.GetTable(); @@ -54,6 +54,16 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) FVarTable? fVar = reader.TryGetTable(); AVarTable? aVar = reader.TryGetTable(); // GVarTable? gVar = reader.TryGetTable(); + GlyphVariationProcessor glyphVariationProcessor = null; + if (cff?.ItemVariationStore != null) + { + if (fVar is null) + { + throw new InvalidFontFileException("missing fvar table required for glyph variations processing"); + } + + glyphVariationProcessor = new GlyphVariationProcessor(cff.ItemVariationStore, fVar, aVar); + } CompactFontTables tables = new(cmap, head, hhea, htmx, maxp, name, os2, post, cff!) { @@ -69,7 +79,7 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) AVar = aVar }; - return new StreamFontMetrics(tables); + return new StreamFontMetrics(tables, glyphVariationProcessor); } private GlyphMetrics CreateCffGlyphMetrics( @@ -86,7 +96,9 @@ private GlyphMetrics CreateCffGlyphMetrics( AVarTable? aVar = tables.AVar; CffGlyphData vector = cff.GetGlyph(glyphId); - Bounds bounds = vector.GetBounds(fVar, aVar); + vector.FVar = fVar; + vector.AVar = aVar; + Bounds bounds = vector.GetBounds(); ushort advanceWidth = htmx.GetAdvancedWidth(glyphId); short lsb = htmx.GetLeftSideBearing(glyphId); diff --git a/src/SixLabors.Fonts/StreamFontMetrics.cs b/src/SixLabors.Fonts/StreamFontMetrics.cs index 660053305..0cfc2a5d9 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.cs @@ -7,6 +7,7 @@ using System.IO; using SixLabors.Fonts.Tables; using SixLabors.Fonts.Tables.AdvancedTypographic; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Tables.Cff; using SixLabors.Fonts.Tables.General; using SixLabors.Fonts.Tables.General.Colr; @@ -77,12 +78,14 @@ internal StreamFontMetrics(TrueTypeFontTables tables) /// Initializes a new instance of the class. /// /// The Compact Font tables. - internal StreamFontMetrics(CompactFontTables tables) + /// Processor which handles glyph variations. + internal StreamFontMetrics(CompactFontTables tables, GlyphVariationProcessor? glyphVariationProcessor = null) { this.compactFontTables = tables; this.outlineType = OutlineType.CFF; this.description = new FontDescription(tables.Name, tables.Os2, tables.Head); this.glyphCache = new GlyphMetrics[tables.Cff.GlyphCount][]; + this.GlyphVariationProcessor = glyphVariationProcessor; if (tables.Colr is not null) { this.colorGlyphCache = new GlyphMetrics[tables.Cff.GlyphCount][]; @@ -93,6 +96,8 @@ internal StreamFontMetrics(CompactFontTables tables) public HeadTable.HeadFlags HeadFlags { get; private set; } + public GlyphVariationProcessor? GlyphVariationProcessor { get; private set; } + /// public override FontDescription Description => this.description; diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs b/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs index 5afa72d87..88d52e1e7 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. using System; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; namespace SixLabors.Fonts.Tables.Cff { @@ -16,6 +17,8 @@ internal sealed class Cff1Table : Table, ICffTable public int GlyphCount => this.glyphs.Length; + public ItemVariationStore ItemVariationStore => throw new InvalidFontFileException("CFF1 does not support variations"); + public CffGlyphData GetGlyph(int index) => this.glyphs[index]; diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs new file mode 100644 index 000000000..d8b002513 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs @@ -0,0 +1,15 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +namespace SixLabors.Fonts.Tables.Cff +{ + internal class Cff2Font : CffFont + { + public Cff2Font(string name, CffTopDictionary metrics, CffGlyphData[] glyphs, ItemVariationStore itemVariationStore) + : base(name, metrics, glyphs) => this.ItemVariationStore = itemVariationStore; + + public ItemVariationStore? ItemVariationStore { get; set; } + } +} diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs index 0c1cd2c34..1917bb0fc 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs @@ -20,10 +20,9 @@ internal class Cff2Parser : CffParserBase private int charStringIndexOffset; private int variationStoreOffset; private int fdArrayOffset; - private ItemVariationStore? itemVariationStore; - public CffFont Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictLength, long offset) + public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictLength, long offset) { this.offset = offset; reader.Seek(hdrSize, SeekOrigin.Begin); @@ -56,7 +55,7 @@ public CffFont Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictLe int glyphCount = charStringOffsets.Length; CffGlyphData[] glyphs = this.ReadCharStringsIndex(topDictionary, globalSubrRawBuffers, fontDicts, privateDictionary, charStringBuffers, glyphCount); - return new(fontName, topDictionary, glyphs); + return new(fontName, topDictionary, glyphs, itemVariationStore); } private void ReadTopDictData(BigEndianBinaryReader reader, ushort topDictLength) diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs index 9970900bd..abf85fb23 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. using System; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; namespace SixLabors.Fonts.Tables.Cff { @@ -12,10 +13,16 @@ internal sealed class Cff2Table : Table, ICffTable private readonly CffGlyphData[] glyphs; - public Cff2Table(CffFont cff1Font) => this.glyphs = cff1Font.Glyphs; + public Cff2Table(CffFont cffFont, ItemVariationStore itemVariationStore) + { + this.glyphs = cffFont.Glyphs; + this.ItemVariationStore = itemVariationStore; + } public int GlyphCount => this.glyphs.Length; + public ItemVariationStore ItemVariationStore { get; } + public CffGlyphData GetGlyph(int index) => this.glyphs[index]; @@ -44,8 +51,8 @@ public static Cff2Table Load(BigEndianBinaryReader reader) { case 2: Cff2Parser parser = new(); - parser.Load(reader, hdrSize, topDictLength, position); - return new(parser.Load(reader, hdrSize, topDictLength, position)); + Cff2Font cffFont = parser.Load(reader, hdrSize, topDictLength, position); + return new(parser.Load(reader, hdrSize, topDictLength, position), cffFont.ItemVariationStore); default: throw new NotSupportedException("CFF version 2 is expected"); diff --git a/src/SixLabors.Fonts/Tables/Cff/CffFont.cs b/src/SixLabors.Fonts/Tables/Cff/CffFont.cs index 963be3033..9dcd430aa 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffFont.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffFont.cs @@ -1,6 +1,8 @@ // Copyright (c) Six Labors. // Licensed under the Apache License, Version 2.0. +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + namespace SixLabors.Fonts.Tables.Cff { internal class CffFont diff --git a/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs b/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs index 5158878ba..6e0f34f1b 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs @@ -33,13 +33,21 @@ public CffGlyphData( this.itemVariationStore = itemVariationStore; this.GlyphName = null; + + // Variations tables are only present for CFF2 format. + this.FVar = null; + this.AVar = null; } public ushort GlyphIndex { get; } public string? GlyphName { get; set; } - public Bounds GetBounds(FVarTable? fVar = null, AVarTable? aVar = null) + public FVarTable? FVar { get; set; } + + public AVarTable? AVar { get; set; } + + public Bounds GetBounds() { using var engine = new CffEvaluationEngine( this.charStrings, @@ -48,8 +56,8 @@ public Bounds GetBounds(FVarTable? fVar = null, AVarTable? aVar = null) this.nominalWidthX, this.version, this.itemVariationStore, - fVar, - aVar); + this.FVar, + this.AVar); return engine.GetBounds(); } @@ -62,7 +70,9 @@ public void RenderTo(IGlyphRenderer renderer, Vector2 scale, Vector2 offset) this.localSubrBuffers, this.nominalWidthX, this.version, - this.itemVariationStore); + this.itemVariationStore, + this.FVar, + this.AVar); engine.RenderTo(renderer, scale, offset); } diff --git a/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs b/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs index 6d675395b..015d5f481 100644 --- a/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs +++ b/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs @@ -1,6 +1,8 @@ // Copyright (c) Six Labors. // Licensed under the Apache License, Version 2.0. +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + namespace SixLabors.Fonts.Tables.Cff { /// @@ -16,6 +18,15 @@ int GlyphCount get; } + /// + /// Gets the item variation store. + /// + /// The item variation store. If CFF1, there is no variations and null will be returned instead. + ItemVariationStore ItemVariationStore + { + get; + } + /// /// Gets the glyph data at the given index. /// From 359d270773dcd75171aa8dd28b38c24fed7cc040 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Tue, 28 Jun 2022 14:06:01 +0200 Subject: [PATCH 06/56] Make gvar, avar and fvar optional --- src/SixLabors.Fonts/StreamFontMetrics.Cff.cs | 4 ++-- .../AdvancedTypographic/Variations/AVarTable.cs | 13 ++++++++++--- .../AdvancedTypographic/Variations/FVarTable.cs | 13 ++++++++++--- .../AdvancedTypographic/Variations/GVarTable.cs | 13 ++++++++++--- .../Variations/GlyphVariationProcessor.cs | 5 ++++- 5 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs index cbd4cdcca..6efd5ce84 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs @@ -53,7 +53,7 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) // Variations related tables. FVarTable? fVar = reader.TryGetTable(); AVarTable? aVar = reader.TryGetTable(); - // GVarTable? gVar = reader.TryGetTable(); + GVarTable? gVar = reader.TryGetTable(); GlyphVariationProcessor glyphVariationProcessor = null; if (cff?.ItemVariationStore != null) { @@ -62,7 +62,7 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) throw new InvalidFontFileException("missing fvar table required for glyph variations processing"); } - glyphVariationProcessor = new GlyphVariationProcessor(cff.ItemVariationStore, fVar, aVar); + glyphVariationProcessor = new GlyphVariationProcessor(cff.ItemVariationStore, fVar, aVar, gVar); } CompactFontTables tables = new(cmap, head, hhea, htmx, maxp, name, os2, post, cff!) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs index 2ff826044..9313b32da 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs @@ -24,10 +24,17 @@ public AVarTable(uint axixCount, SegmentMapRecord[] segmentMaps) public SegmentMapRecord[] SegmentMaps { get; } - public static AVarTable Load(FontReader reader) + public static AVarTable? Load(FontReader reader) { - using BigEndianBinaryReader binaryReader = reader.GetReaderAtTablePosition(TableName); - return Load(binaryReader); + if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) + { + return null; + } + + using (binaryReader) + { + return Load(binaryReader); + } } public static AVarTable Load(BigEndianBinaryReader reader) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs index 3cbf7e7e7..1501c0384 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs @@ -27,10 +27,17 @@ public FVarTable(ushort axisCount, VariationAxisRecord[] axes, InstanceRecord[] public InstanceRecord[] Instances { get; } - public static FVarTable Load(FontReader reader) + public static FVarTable? Load(FontReader reader) { - using BigEndianBinaryReader binaryReader = reader.GetReaderAtTablePosition(TableName); - return Load(binaryReader); + if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) + { + return null; + } + + using (binaryReader) + { + return Load(binaryReader); + } } public static FVarTable Load(BigEndianBinaryReader reader) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs index ce429f414..9b7fc0629 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs @@ -14,10 +14,17 @@ internal class GVarTable : Table { internal const string TableName = "gvar"; - public static GVarTable Load(FontReader reader) + public static GVarTable? Load(FontReader reader) { - using BigEndianBinaryReader binaryReader = reader.GetReaderAtTablePosition(TableName); - return Load(binaryReader); + if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) + { + return null; + } + + using (binaryReader) + { + return Load(binaryReader); + } } public static GVarTable Load(BigEndianBinaryReader reader) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index e9fc09250..2cbb1b7f0 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -21,6 +21,8 @@ internal class GlyphVariationProcessor private readonly AVarTable? avar; + private readonly GVarTable? gVar; + private readonly float[] normalizedCoords; private readonly Dictionary blendVectors; @@ -30,7 +32,7 @@ internal class GlyphVariationProcessor /// private const float Epsilon = 2.2204460492503130808472633361816E-16F; - public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVarTable? aVar = null) + public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVarTable? aVar = null, GVarTable? gVar = null) { DebugGuard.NotNull(itemStore, nameof(itemStore)); DebugGuard.NotNull(fVar, nameof(fVar)); @@ -38,6 +40,7 @@ public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVa this.itemStore = itemStore; this.fvar = fVar; this.avar = aVar; + this.gVar = gVar; this.normalizedCoords = this.NormalizeDefaultCoords(); this.blendVectors = new Dictionary(); } From 646ddbaee25a6ad481f8f409b0a8036f4c7a560d Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Wed, 29 Jun 2022 18:03:33 +0200 Subject: [PATCH 07/56] Start parsing gvar table --- src/SixLabors.Fonts/StreamFontMetrics.Cff.cs | 5 +- .../StreamFontMetrics.TrueType.cs | 6 ++ src/SixLabors.Fonts/StreamFontMetrics.cs | 6 +- .../Variations/AVarTable.cs | 6 +- .../Variations/GVarTable.cs | 33 ++++++++- .../Variations/GlyphVariationData.cs | 19 ++++-- ...leVariationHeader.cs => TupleVariation.cs} | 67 +++++++++++++++---- .../Tables/Cff/CffGlyphData.cs | 3 + .../Tables/Cff/CompactFontTables.cs | 2 + 9 files changed, 119 insertions(+), 28 deletions(-) rename src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/{TupleVariationHeader.cs => TupleVariation.cs} (65%) diff --git a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs index 6efd5ce84..4269dc7ee 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs @@ -76,7 +76,8 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) Colr = colr, Cpal = cpal, FVar = fVar, - AVar = aVar + AVar = aVar, + GVar = gVar, }; return new StreamFontMetrics(tables, glyphVariationProcessor); @@ -94,10 +95,12 @@ private GlyphMetrics CreateCffGlyphMetrics( VerticalMetricsTable? vtmx = tables.Vmtx; FVarTable? fVar = tables.FVar; AVarTable? aVar = tables.AVar; + GVarTable? gVar = tables.GVar; CffGlyphData vector = cff.GetGlyph(glyphId); vector.FVar = fVar; vector.AVar = aVar; + vector.GVar = gVar; Bounds bounds = vector.GetBounds(); ushort advanceWidth = htmx.GetAdvancedWidth(glyphId); short lsb = htmx.GetLeftSideBearing(glyphId); diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index 1f6a5b903..0375339ef 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -4,6 +4,7 @@ using System; using System.Numerics; using SixLabors.Fonts.Tables.AdvancedTypographic; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Tables.General; using SixLabors.Fonts.Tables.General.Colr; using SixLabors.Fonts.Tables.General.Kern; @@ -66,6 +67,11 @@ internal void ApplyTrueTypeHinting(HintingMode hintingMode, GlyphMetrics metrics private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) { + // Load glyph variations related tables first, because glyph table needs them. + FVarTable? fvar = reader.TryGetTable(); + AVarTable? avar = reader.TryGetTable(); + GVarTable? gvar = reader.TryGetTable(); + // Load using recommended order for best performance. // https://www.microsoft.com/typography/otspec/recom.htm#TableOrdering // 'head', 'hhea', 'maxp', OS/2, 'hmtx', LTSH, VDMX, 'hdmx', 'cmap', 'fpgm', 'prep', 'cvt ', 'loca', 'glyf', 'kern', 'name', 'post', 'gasp', PCLT, DSIG diff --git a/src/SixLabors.Fonts/StreamFontMetrics.cs b/src/SixLabors.Fonts/StreamFontMetrics.cs index 0cfc2a5d9..87b5b8bd0 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.cs @@ -320,10 +320,8 @@ internal static StreamFontMetrics LoadFont(FontReader reader) { return LoadTrueTypeFont(reader); } - else - { - return LoadCompactFont(reader); - } + + return LoadCompactFont(reader); } private void Initialize(T tables) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs index 9313b32da..6a0d17651 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs @@ -14,13 +14,13 @@ internal class AVarTable : Table { internal const string TableName = "avar"; - public AVarTable(uint axixCount, SegmentMapRecord[] segmentMaps) + public AVarTable(uint axisCount, SegmentMapRecord[] segmentMaps) { - this.AxixCount = axixCount; + this.AxisCount = axisCount; this.SegmentMaps = segmentMaps; } - public uint AxixCount { get; } + public uint AxisCount { get; } public SegmentMapRecord[] SegmentMaps { get; } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs index 9b7fc0629..bba9cc026 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. using System; +using System.IO; namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations { @@ -14,6 +15,19 @@ internal class GVarTable : Table { internal const string TableName = "gvar"; + public GVarTable(int axisCount, float[,] sharedTuples, GlyphVariationData[] glyphVariations) + { + this.AxisCount = axisCount; + this.SharedTuples = sharedTuples; + this.GlyphVariations = glyphVariations; + } + + public int AxisCount { get; } + + public float[,] SharedTuples { get; } + + public GlyphVariationData[] GlyphVariations { get; } + public static GVarTable? Load(FontReader reader) { if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) @@ -60,6 +74,7 @@ public static GVarTable Load(BigEndianBinaryReader reader) // | Offset16 or | glyphVariationDataOffsets[glyphCount+1]| Offsets from the start of the GlyphVariationData array to each | // | Offset32 | | GlyphVariationData table. | // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + long startOffset = reader.BaseStream.Position; ushort major = reader.ReadUInt16(); ushort minor = reader.ReadUInt16(); ushort axisCount = reader.ReadUInt16(); @@ -67,6 +82,7 @@ public static GVarTable Load(BigEndianBinaryReader reader) ushort sharedTuplesOffset = reader.ReadOffset16(); ushort glyphCount = reader.ReadUInt16(); ushort flags = reader.ReadUInt16(); + bool is32BitOffset = (flags & 1) == 1; ushort glyphVariationDataArrayOffset = reader.ReadOffset16(); if (major != 1) @@ -74,14 +90,25 @@ public static GVarTable Load(BigEndianBinaryReader reader) throw new NotSupportedException("Only version 1 of gvar table is supported"); } + reader.Seek(startOffset + sharedTuplesOffset, SeekOrigin.Begin); + float[,] sharedTuples = new float[sharedTupleCount, axisCount]; for (int i = 0; i < sharedTupleCount; i++) { - // TODO: parse shared tuples. + for (int j = 0; j < axisCount; j++) + { + sharedTuples[i, j] = reader.ReadF2dot14(); + } } - var glyphVariations = GlyphVariationData.Load(reader, glyphVariationDataArrayOffset); + int glyphVariationsCount = glyphCount + 1; + var glyphVariations = new GlyphVariationData[glyphVariationsCount]; + for (int i = 0; i < glyphVariationsCount; i++) + { + var glyphVariation = GlyphVariationData.Load(reader, glyphVariationDataArrayOffset, is32BitOffset, axisCount); + glyphVariations[i] = glyphVariation; + } - return new GVarTable(); + return new GVarTable(axisCount, sharedTuples, glyphVariations); } } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs index 60bf81d08..a1314c4be 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs @@ -16,7 +16,13 @@ internal class GlyphVariationData /// internal const int CountMask = 0x0FFF; - public static GlyphVariationData Load(BigEndianBinaryReader reader, long offset) + /// + /// Flag indicating that some or all tuple variation tables reference a shared set of “point” numbers. + /// These shared numbers are represented as packed point number data at the start of the serialized data. + /// + internal const int SharedPointNumbersMask = 0x8000; + + public static GlyphVariationData Load(BigEndianBinaryReader reader, long offset, bool is32BitOffset, int axisCount) { // GlyphVariationData // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ @@ -28,19 +34,22 @@ public static GlyphVariationData Load(BigEndianBinaryReader reader, long offset) // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ // | Offset16 | dataOffset | Offset from the start of the GlyphVariationData table to the serialized data.| // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ - // | TupleVariationHeader |tupleVariationHeaders[tupleVariationCount] | Array of tuple variation headers. | + // | TupleVariation |tupleVariationHeaders[tupleVariationCount] | Array of tuple variation headers. | // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ reader.Seek(offset, SeekOrigin.Begin); ushort tupleVariationCount = reader.ReadUInt16(); - ushort dataOffset = reader.ReadOffset16(); + bool sharedPointNumbers = (tupleVariationCount & SharedPointNumbersMask) == SharedPointNumbersMask; int tupleVariationTables = tupleVariationCount & CountMask; - var variationHeaders = new TupleVariationHeader[tupleVariationTables]; + var variationHeaders = new TupleVariation[tupleVariationTables]; for (int i = 0; i < tupleVariationTables; i++) { - variationHeaders[i] = TupleVariationHeader.Load(reader); + variationHeaders[i] = TupleVariation.Load(reader, axisCount); } + // TODO: parse serialized data + int serializedDataOffset = is32BitOffset ? reader.ReadInt32() : reader.ReadOffset16(); + reader.Seek(offset + serializedDataOffset, SeekOrigin.Begin); return new GlyphVariationData(); } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariationHeader.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs similarity index 65% rename from src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariationHeader.cs rename to src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs index 8cf5bbafe..10bab45be 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariationHeader.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs @@ -1,11 +1,9 @@ // Copyright (c) Six Labors. // Licensed under the Apache License, Version 2.0. -using System.IO; - namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations { - internal class TupleVariationHeader + internal class TupleVariation { /// /// Flag indicating that this tuple variation header includes an embedded peak tuple record, immediately after the tupleIndex field. @@ -32,9 +30,25 @@ internal class TupleVariationHeader /// internal const int TupleIndexMask = 0x0FFF; - public static TupleVariationHeader Load(BigEndianBinaryReader reader) + public TupleVariation(int axisCount, float[]? embeddedPeak, float[]? intermediateStartRegion, float[]? intermediateEndRegion) + { + this.AxisCount = axisCount; + this.EmbeddedPeak = embeddedPeak; + this.IntermediateStartRegion = intermediateStartRegion; + this.IntermediateEndRegion = intermediateEndRegion; + } + + public int AxisCount { get; } + + public float[]? EmbeddedPeak { get; } + + public float[]? IntermediateStartRegion { get; } + + public float[]? IntermediateEndRegion { get; } + + public static TupleVariation Load(BigEndianBinaryReader reader, int axisCount) { - // TupleVariationHeader + // TupleVariation // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ // | Type | Name | Description | // +======================+===========================================+==============================================================================+ @@ -53,17 +67,46 @@ public static TupleVariationHeader Load(BigEndianBinaryReader reader) // | | | optional, determined by flags in the tupleIndex value. | // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ ushort variationDataSize = reader.ReadUInt16(); + int bytesRead = 0; ushort tupleIndex = reader.ReadUInt16(); + bytesRead += 2; + + int sharedTupleRecords = tupleIndex & TupleIndexMask; + bool hasPrivatePointNumbers = (tupleIndex & PrivatePointNumbersMask) == PrivatePointNumbersMask; + bool hasEmbeddedPeakTuple = (tupleIndex & EmbeddedPeakTupleMask) == EmbeddedPeakTupleMask; + bool hasIntermediateRegion = (tupleIndex & IntermediateRegionMask) == IntermediateRegionMask; + + float[]? embeddedPeak = null; + if (hasEmbeddedPeakTuple) + { + embeddedPeak = new float[axisCount]; + for (int i = 0; i < axisCount; i++) + { + embeddedPeak[i] = reader.ReadF2dot14(); + bytesRead += 2; + } + } - int sharedTupleRecordsIndex = tupleIndex & TupleIndexMask; - bool privatePointNumbers = (tupleIndex & PrivatePointNumbersMask) == PrivatePointNumbersMask; - bool embeddedPeakTuple = (tupleIndex & EmbeddedPeakTupleMask) == EmbeddedPeakTupleMask; - bool intermediateRegion = (tupleIndex & IntermediateRegionMask) == IntermediateRegionMask; + float[]? intermediateStartRegion = null; + float[]? intermediateEndRegion = null; + if (hasIntermediateRegion) + { + intermediateStartRegion = new float[axisCount]; + for (int i = 0; i < axisCount; i++) + { + intermediateStartRegion[i] = reader.ReadF2dot14(); + bytesRead += 2; + } - // TODO: read tuple data. Skipping data for now. - reader.Seek(variationDataSize - 2, SeekOrigin.Current); + intermediateEndRegion = new float[axisCount]; + for (int i = 0; i < axisCount; i++) + { + intermediateEndRegion[i] = reader.ReadF2dot14(); + bytesRead += 2; + } + } - return new TupleVariationHeader(); + return new TupleVariation(axisCount, embeddedPeak, intermediateStartRegion, intermediateEndRegion); } } } diff --git a/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs b/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs index 6e0f34f1b..0483d7c9c 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs @@ -37,6 +37,7 @@ public CffGlyphData( // Variations tables are only present for CFF2 format. this.FVar = null; this.AVar = null; + this.GVar = null; } public ushort GlyphIndex { get; } @@ -47,6 +48,8 @@ public CffGlyphData( public AVarTable? AVar { get; set; } + public GVarTable? GVar { get; set; } + public Bounds GetBounds() { using var engine = new CffEvaluationEngine( diff --git a/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs b/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs index 4128a8649..09fa40766 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs @@ -71,6 +71,8 @@ public CompactFontTables( public AVarTable? AVar { get; set; } + public GVarTable? GVar { get; set; } + // Tables Related to CFF Outlines // +------+----------------------------------+ // | Tag | Name | From 0d7e743586136bb97b240cf2d6c531cf7a152116 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sun, 3 Jul 2022 14:53:06 +0200 Subject: [PATCH 08/56] Add FDSelect format 4 --- src/SixLabors.Fonts/StreamFontMetrics.Cff.cs | 2 +- src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs | 27 ++++++++++++++++--- src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs | 2 +- src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs | 2 +- src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs | 2 +- .../Tables/Cff/{FDRange3.cs => FDRange.cs} | 18 ++++++++----- .../Tables/Cff/FDRangeProvider.cs | 11 ++++---- src/SixLabors.Fonts/Tables/Cff/ICffTable.cs | 2 +- .../Tables/TrueType/Glyphs/GlyphLoader.cs | 6 ++--- .../Tables/TrueType/Glyphs/GlyphTable.cs | 8 ++++++ .../TrueType/Glyphs/SimpleGlyphLoader.cs | 2 +- 11 files changed, 58 insertions(+), 24 deletions(-) rename src/SixLabors.Fonts/Tables/Cff/{FDRange3.cs => FDRange.cs} (60%) diff --git a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs index 4269dc7ee..37a9f64f6 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs @@ -54,7 +54,7 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) FVarTable? fVar = reader.TryGetTable(); AVarTable? aVar = reader.TryGetTable(); GVarTable? gVar = reader.TryGetTable(); - GlyphVariationProcessor glyphVariationProcessor = null; + GlyphVariationProcessor? glyphVariationProcessor = null; if (cff?.ItemVariationStore != null) { if (fVar is null) diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs index 616527ffa..b4f55a200 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs @@ -432,6 +432,7 @@ private void ReadFDSelect(BigEndianBinaryReader reader, CidFontInfo cidFontInfo) switch (reader.ReadByte()) { case 0: + { cidFontInfo.FdSelectFormat = 0; for (int i = 0; i < cidFontInfo.CIDFountCount; i++) { @@ -439,21 +440,41 @@ private void ReadFDSelect(BigEndianBinaryReader reader, CidFontInfo cidFontInfo) } break; + } case 3: + { cidFontInfo.FdSelectFormat = 3; ushort nRanges = reader.ReadUInt16(); - var ranges = new FDRange3[nRanges + 1]; + var ranges = new FDRange[nRanges + 1]; cidFontInfo.FdSelectFormat = 3; cidFontInfo.FdRanges = ranges; for (int i = 0; i < nRanges; ++i) { - ranges[i] = new FDRange3(reader.ReadUInt16(), reader.ReadByte()); + ranges[i] = new FDRange(reader.ReadUInt16(), reader.ReadByte()); } - ranges[nRanges] = new FDRange3(reader.ReadUInt16(), 0); // sentinel + ranges[nRanges] = new FDRange(reader.ReadUInt16(), 0); // sentinel break; + } + + case 4: + { + cidFontInfo.FdSelectFormat = 4; + uint nRanges = reader.ReadUInt32(); + var ranges = new FDRange[nRanges + 1]; + + cidFontInfo.FdSelectFormat = 3; + cidFontInfo.FdRanges = ranges; + for (int i = 0; i < nRanges; ++i) + { + ranges[i] = new FDRange(reader.ReadUInt32(), reader.ReadUInt16()); + } + + ranges[nRanges] = new FDRange(reader.ReadUInt32(), 0); // sentinel + break; + } default: throw new NotSupportedException("Only FD Select format 0 and 3 are supported"); diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs b/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs index a013b8b3b..a56b7eeb8 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs @@ -16,7 +16,7 @@ internal sealed class Cff1Table : Table, ICffTable public int GlyphCount => this.glyphs.Length; - public ItemVariationStore ItemVariationStore => throw new InvalidFontFileException("CFF1 does not support variations"); + public ItemVariationStore? ItemVariationStore => null; public CffGlyphData GetGlyph(int index) => this.glyphs[index]; diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs index fdad8733e..78d1ac42a 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs @@ -55,7 +55,7 @@ public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictL int glyphCount = charStringOffsets.Length; CffGlyphData[] glyphs = this.ReadCharStringsIndex(topDictionary, globalSubrRawBuffers, fontDicts, privateDictionary, charStringBuffers, glyphCount); - return new(fontName, topDictionary, glyphs, itemVariationStore); + return new(fontName, topDictionary, glyphs, this.itemVariationStore); } private void ReadTopDictData(BigEndianBinaryReader reader, ushort topDictLength) diff --git a/src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs b/src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs index 320342146..c55492391 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs @@ -24,7 +24,7 @@ internal class CidFontInfo public int FdSelectFormat { get; set; } - public FDRange3[] FdRanges { get; set; } = Array.Empty(); + public FDRange[] FdRanges { get; set; } = Array.Empty(); /// /// Gets or sets the fd select map, which maps glyph # to font #. diff --git a/src/SixLabors.Fonts/Tables/Cff/FDRange3.cs b/src/SixLabors.Fonts/Tables/Cff/FDRange.cs similarity index 60% rename from src/SixLabors.Fonts/Tables/Cff/FDRange3.cs rename to src/SixLabors.Fonts/Tables/Cff/FDRange.cs index 49836bea5..e2aa6a83a 100644 --- a/src/SixLabors.Fonts/Tables/Cff/FDRange3.cs +++ b/src/SixLabors.Fonts/Tables/Cff/FDRange.cs @@ -6,23 +6,29 @@ namespace SixLabors.Fonts.Tables.Cff /// /// Represents an element in an font dictionary array. /// - internal readonly struct FDRange3 + internal readonly struct FDRange { - public FDRange3(ushort first, byte fontDictionary) + public FDRange(ushort first, byte fontDictionary) + { + this.First = first; + this.FontDictionary = fontDictionary; + } + + public FDRange(uint first, ushort fontDictionary) { this.First = first; this.FontDictionary = fontDictionary; } /// - /// Gets the first glyph index in range + /// Gets the first glyph index in range. /// - public ushort First { get; } + public uint First { get; } /// - /// Gets the font dictionary index for all glyphs in range + /// Gets the font dictionary index for all glyphs in range. /// - public byte FontDictionary { get; } + public ushort FontDictionary { get; } public override string ToString() => $"First {this.First}, Dictionary {this.FontDictionary}."; } diff --git a/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs b/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs index 22390e9f5..2cb603573 100644 --- a/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs +++ b/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs @@ -10,11 +10,11 @@ internal struct FDRangeProvider { // helper class private readonly int format; - private readonly FDRange3[] ranges; + private readonly FDRange[] ranges; private readonly Dictionary fdSelectMap; - private ushort currentGlyphIndex; - private ushort endGlyphIndexMax; - private FDRange3 currentRange; + private uint currentGlyphIndex; + private uint endGlyphIndexMax; + private FDRange currentRange; private int currentSelectedRangeIndex; public FDRangeProvider(CidFontInfo cidFontInfo) @@ -40,7 +40,7 @@ public FDRangeProvider(CidFontInfo cidFontInfo) this.SelectedFDArray = 0; } - public byte SelectedFDArray { get; private set; } + public ushort SelectedFDArray { get; private set; } public void SetCurrentGlyphIndex(ushort index) { @@ -51,6 +51,7 @@ public void SetCurrentGlyphIndex(ushort index) break; case 3: + case 4: // Find proper range for selected index. if (index >= this.currentRange.First && index < this.endGlyphIndexMax) { diff --git a/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs b/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs index 015d5f481..c59b6d366 100644 --- a/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs +++ b/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs @@ -22,7 +22,7 @@ int GlyphCount /// Gets the item variation store. /// /// The item variation store. If CFF1, there is no variations and null will be returned instead. - ItemVariationStore ItemVariationStore + ItemVariationStore? ItemVariationStore { get; } diff --git a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphLoader.cs b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphLoader.cs index f8a18976a..246575717 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphLoader.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphLoader.cs @@ -16,10 +16,8 @@ public static GlyphLoader Load(BigEndianBinaryReader reader) { return SimpleGlyphLoader.LoadSimpleGlyph(reader, contoursCount, bounds); } - else - { - return CompositeGlyphLoader.LoadCompositeGlyph(reader, bounds); - } + + return CompositeGlyphLoader.LoadCompositeGlyph(reader, bounds); } } } diff --git a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs index 185bd5349..7ee3261a9 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. using System.IO; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Tables.General; using SixLabors.Fonts.Tables.Woff; @@ -26,6 +27,13 @@ public static GlyphTable Load(FontReader reader) uint[] locations = reader.GetTable().GlyphOffsets; Bounds fallbackEmptyBounds = reader.GetTable().Bounds; + FVarTable? fvar = reader.TryGetTable(); + AVarTable? avar = reader.TryGetTable(); + GVarTable? gvar = reader.TryGetTable(); + + + //GlyphVariationProcessor? glyphVariationProcessor = fvar is null ? null : new GlyphVariationProcessor(itemStore, fvar, avar, gvar); + using (BigEndianBinaryReader binaryReader = reader.GetReaderAtTablePosition(TableName)) { return Load(binaryReader, reader.TableFormat, locations, fallbackEmptyBounds); diff --git a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs index 81e55d9da..db0bb2403 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs @@ -71,7 +71,7 @@ public static GlyphLoader LoadSimpleGlyph(BigEndianBinaryReader reader, short co // uint16 | instructionLength | Total number of bytes for instructions. // uint8 | instructions[n] | Array of instructions for each glyph; n is the number of instructions. // uint8 | flags[n] | Array of flags for each coordinate in outline; n is the number of flags. - // uint8 or int16 | xCoordinates[ ] | First coordinates relative to(0, 0); others are relative to previous point. + // uint8 or int16 | xCoordinates[] | First coordinates relative to(0, 0); others are relative to previous point. // uint8 or int16 | yCoordinates[] | First coordinates relative to (0, 0); others are relative to previous point. ushort[] endPoints = reader.ReadUInt16Array(count); From 71cc71a7325c616d146c55459e06ed2e5d01f1df Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sun, 3 Jul 2022 16:37:36 +0200 Subject: [PATCH 09/56] Move ReadFdArray to base class --- src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs | 187 +----------------- src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs | 79 +------- .../Tables/Cff/CffParserBase.cs | 184 ++++++++++++++++- 3 files changed, 192 insertions(+), 258 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs index b4f55a200..c7e387af5 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs @@ -3,7 +3,6 @@ using System; using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; using System.Text; namespace SixLabors.Fonts.Tables.Cff @@ -32,7 +31,7 @@ public CffFont Load(BigEndianBinaryReader reader, long offset) string fontName = this.ReadNameIndex(reader); - List? dataDicEntries = this.ReadTopDICTIndex(reader); + List? dataDicEntries = this.ReadTopDictIndex(reader); string[] stringIndex = this.ReadStringIndex(reader); CffTopDictionary topDictionary = this.ResolveTopDictInfo(dataDicEntries, stringIndex); @@ -40,7 +39,7 @@ public CffFont Load(BigEndianBinaryReader reader, long offset) byte[][] globalSubrRawBuffers = this.ReadGlobalSubrIndex(reader); this.ReadFDSelect(reader, topDictionary.CidFontInfo); - FontDict[] fontDicts = this.ReadFDArray(reader, topDictionary.CidFontInfo); + FontDict[] fontDicts = this.ReadFdArray(reader, this.offset, topDictionary.CidFontInfo.FDArray); CffPrivateDictionary? privateDictionary = this.ReadPrivateDict(reader); CffGlyphData[] glyphs = this.ReadCharStringsIndex(reader, topDictionary, globalSubrRawBuffers, fontDicts, privateDictionary); @@ -64,7 +63,7 @@ private string ReadNameIndex(BigEndianBinaryReader reader) return reader.ReadString(offset.Length, Iso88591); } - private List ReadTopDICTIndex(BigEndianBinaryReader reader) + private List ReadTopDictIndex(BigEndianBinaryReader reader) { // 8. Top DICT INDEX // This contains the top - level DICTs of all the fonts in the FontSet @@ -88,7 +87,7 @@ private List ReadTopDICTIndex(BigEndianBinaryReader reader) // been grouped together with the Top DICT operators for // simplicity.The keys from the FontInfo dict are indicated in the // Default, notes column of Table 9) - return this.ReadDICTData(reader, offsets[0].Length); + return this.ReadDictData(reader, offsets[0].Length); } private string[] ReadStringIndex(BigEndianBinaryReader reader) @@ -481,80 +480,6 @@ private void ReadFDSelect(BigEndianBinaryReader reader, CidFontInfo cidFontInfo) } } - private FontDict[] ReadFDArray(BigEndianBinaryReader reader, CidFontInfo cidFontInfo) - { - if (cidFontInfo.FDArray == 0) - { - return Array.Empty(); - } - - reader.BaseStream.Position = this.offset + cidFontInfo.FDArray; - - if (!this.TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) - { - return Array.Empty(); - } - - var fontDicts = new FontDict[offsets.Length]; - for (int i = 0; i < fontDicts.Length; ++i) - { - // read DICT data - List dic = this.ReadDICTData(reader, offsets[i].Length); - - // translate - int offset = 0; - int size = 0; - int name = 0; - - foreach (CffDataDicEntry entry in dic) - { - switch (entry.Operator.Name) - { - default: - throw new NotSupportedException(); - case "FontName": - name = (int)entry.Operands[0].RealNumValue; - break; - case "Private": // private dic - size = (int)entry.Operands[0].RealNumValue; - offset = (int)entry.Operands[1].RealNumValue; - break; - } - } - - fontDicts[i] = new FontDict(name, size, offset); - } - - foreach (FontDict fdict in fontDicts) - { - reader.BaseStream.Position = this.offset + fdict.PrivateDicOffset; - - List dicData = this.ReadDICTData(reader, fdict.PrivateDicSize); - - if (dicData.Count > 0) - { - // Interpret the values of private dict - foreach (CffDataDicEntry dicEntry in dicData) - { - switch (dicEntry.Operator.Name) - { - case "Subrs": - int localSubrsOffset = (int)dicEntry.Operands[0].RealNumValue; - reader.BaseStream.Position = this.offset + fdict.PrivateDicOffset + localSubrsOffset; - fdict.LocalSubr = this.ReadSubrBuffer(reader); - break; - - case "defaultWidthX": - case "nominalWidthX": - break; - } - } - } - } - - return fontDicts; - } - private CffGlyphData[] ReadCharStringsIndex( BigEndianBinaryReader reader, CffTopDictionary topDictionary, @@ -699,7 +624,7 @@ private void ReadFormat1Encoding(BigEndianBinaryReader reader) } reader.BaseStream.Position = this.offset + this.privateDICTOffset; - List dicData = this.ReadDICTData(reader, this.privateDICTLength); + List dicData = this.ReadDictData(reader, this.privateDICTLength); byte[][] localSubrRawBuffers = Array.Empty(); int defaultWidthX = 0; int nominalWidthX = 0; @@ -730,107 +655,5 @@ private void ReadFormat1Encoding(BigEndianBinaryReader reader) return new CffPrivateDictionary(localSubrRawBuffers, defaultWidthX, nominalWidthX); } - - private byte[][] ReadSubrBuffer(BigEndianBinaryReader reader) - { - if (!this.TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) - { - return Array.Empty(); - } - - byte[][] rawBufferList = new byte[offsets.Length][]; - - for (int i = 0; i < rawBufferList.Length; ++i) - { - CffIndexOffset offset = offsets[i]; - rawBufferList[i] = reader.ReadBytes(offset.Length); - } - - return rawBufferList; - } - - private List ReadDICTData(BigEndianBinaryReader reader, int length) - { - // 4. DICT Data - - // Font dictionary data comprising key-value pairs is represented - // in a compact tokenized format that is similar to that used to - // represent Type 1 charstrings. - - // Dictionary keys are encoded as 1- or 2-byte operators and dictionary values are encoded as - // variable-size numeric operands that represent either integer or - // real values. - - //----------------------------- - // A DICT is simply a sequence of - // operand(s)/operator bytes concatenated together. - int maxIndex = (int)(reader.BaseStream.Position + length); - List dicData = new(); - while (reader.BaseStream.Position < maxIndex) - { - CffDataDicEntry dicEntry = this.ReadEntry(reader); - dicData.Add(dicEntry); - } - - return dicData; - } - private bool TryReadIndexDataOffsets(BigEndianBinaryReader reader, [NotNullWhen(true)] out CffIndexOffset[]? value) - { - // INDEX Data - // An INDEX is an array of variable-sized objects.It comprises a - // header, an offset array, and object data. - // The offset array specifies offsets within the object data. - // An object is retrieved by - // indexing the offset array and fetching the object at the - // specified offset. - // The object’s length can be determined by subtracting its offset - // from the next offset in the offset array. - // An additional offset is added at the end of the offset array so the - // length of the last object may be determined. - // The INDEX format is shown in Table 7 - - // Table 7 INDEX Format - // Type Name Description - // Card16 count Number of objects stored in INDEX - // OffSize offSize Offset array element size - // Offset offset[count + 1] Offset array(from byte preceding object data) - // Card8 data[] Object data - - // Offsets in the offset array are relative to the byte that precedes - // the object data. Therefore the first element of the offset array - // is always 1. (This ensures that every object has a corresponding - // offset which is always nonzero and permits the efficient - // implementation of dynamic object loading.) - - // An empty INDEX is represented by a count field with a 0 value - // and no additional fields.Thus, the total size of an empty INDEX - // is 2 bytes. - - // Note 2 - // An INDEX may be skipped by jumping to the offset specified by the last - // element of the offset array - ushort count = reader.ReadUInt16(); - if (count == 0) - { - value = null; - return false; - } - - int offSize = reader.ReadByte(); - int[] offsets = new int[count + 1]; - var indexElems = new CffIndexOffset[count]; - for (int i = 0; i <= count; ++i) - { - offsets[i] = reader.ReadOffset(offSize); - } - - for (int i = 0; i < count; ++i) - { - indexElems[i] = new CffIndexOffset(offsets[i], offsets[i + 1] - offsets[i]); - } - - value = indexElems; - return true; - } } } diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs index 78d1ac42a..2657dfc30 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs @@ -19,7 +19,8 @@ internal class Cff2Parser : CffParserBase private int fontMatrixOffset; private int charStringIndexOffset; private int variationStoreOffset; - private int fdArrayOffset; + private int? fdArrayOffset; + private int? fdSelectOffset; private ItemVariationStore? itemVariationStore; public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictLength, long offset) @@ -42,12 +43,13 @@ public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictL CffIndexOffset[] charStringOffsets = this.ReadCharStringIndex(reader); byte[][] charStringBuffers = this.ReadCharStringBuffers(reader, charStringOffsets); - FontDict[] fontDicts = this.ReadFdArray(reader); + int fdArrayOffset = this.fdArrayOffset.GetValueOrDefault(); + FontDict[] fontDicts = this.ReadFdArray(reader, this.offset, fdArrayOffset); var topDictionary = new CffTopDictionary { CidFontInfo = new CidFontInfo() { - FDArray = this.fdArrayOffset + FDArray = fdArrayOffset, } }; @@ -77,7 +79,7 @@ private void ReadTopDictData(BigEndianBinaryReader reader, ushort topDictLength) this.fdArrayOffset = (int)dataDicEntry.Operands[0].RealNumValue; break; case "FDSelect": - this.fdArrayOffset = (int)dataDicEntry.Operands[0].RealNumValue; + this.fdSelectOffset = (int)dataDicEntry.Operands[0].RealNumValue; break; case "vstore": this.variationStoreOffset = (int)dataDicEntry.Operands[0].RealNumValue; @@ -88,75 +90,6 @@ private void ReadTopDictData(BigEndianBinaryReader reader, ushort topDictLength) } } - private FontDict[] ReadFdArray(BigEndianBinaryReader reader) - { - reader.BaseStream.Position = this.offset + this.fdArrayOffset; - - if (!this.TryReadIndexDataOffsets(reader, true, out CffIndexOffset[]? offsets)) - { - return Array.Empty(); - } - - var fontDicts = new FontDict[offsets.Length]; - for (int i = 0; i < fontDicts.Length; ++i) - { - // read DICT data - List dic = this.ReadDICTData(reader, offsets[i].Length); - - // translate - int offset = 0; - int size = 0; - int name = 0; - - foreach (CffDataDicEntry entry in dic) - { - switch (entry.Operator.Name) - { - default: - throw new NotSupportedException(); - case "FontName": - name = (int)entry.Operands[0].RealNumValue; - break; - case "Private": // private dic - size = (int)entry.Operands[0].RealNumValue; - offset = (int)entry.Operands[1].RealNumValue; - break; - } - } - - fontDicts[i] = new FontDict(name, size, offset); - } - - foreach (FontDict fdict in fontDicts) - { - reader.BaseStream.Position = this.offset + fdict.PrivateDicOffset; - - List dicData = this.ReadDICTData(reader, fdict.PrivateDicSize); - - if (dicData.Count > 0) - { - // Interpret the values of private dict - foreach (CffDataDicEntry dicEntry in dicData) - { - switch (dicEntry.Operator.Name) - { - case "Subrs": - int localSubrsOffset = (int)dicEntry.Operands[0].RealNumValue; - reader.BaseStream.Position = this.offset + fdict.PrivateDicOffset + localSubrsOffset; - fdict.LocalSubr = this.ReadSubrBuffer(reader); - break; - - case "defaultWidthX": - case "nominalWidthX": - break; - } - } - } - } - - return fontDicts; - } - private byte[][] ReadGlobalSubrIndex(BigEndianBinaryReader reader, bool cff2 = true) // 16. Local / Global Subrs INDEXes diff --git a/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs b/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs index b761b57f6..58d34c223 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Text; @@ -12,7 +13,81 @@ internal abstract class CffParserBase { private readonly StringBuilder pooledStringBuilder = new(); - public CffDataDicEntry ReadEntry(BigEndianBinaryReader reader) + protected FontDict[] ReadFdArray(BigEndianBinaryReader reader, long offset, long fdArrayOffset) + { + if (fdArrayOffset is 0) + { + return Array.Empty(); + } + + reader.BaseStream.Position = offset + fdArrayOffset; + + if (!this.TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) + { + return Array.Empty(); + } + + var fontDicts = new FontDict[offsets.Length]; + for (int i = 0; i < fontDicts.Length; ++i) + { + // Read DICT data. + List dic = this.ReadDictData(reader, offsets[i].Length); + + // translate + int fontDictsOffset = 0; + int size = 0; + int name = 0; + + foreach (CffDataDicEntry entry in dic) + { + switch (entry.Operator.Name) + { + default: + throw new NotSupportedException(); + case "FontName": + name = (int)entry.Operands[0].RealNumValue; + break; + case "Private": // private dic + size = (int)entry.Operands[0].RealNumValue; + fontDictsOffset = (int)entry.Operands[1].RealNumValue; + break; + } + } + + fontDicts[i] = new FontDict(name, size, fontDictsOffset); + } + + foreach (FontDict fdict in fontDicts) + { + reader.BaseStream.Position = offset + fdict.PrivateDicOffset; + + List dicData = this.ReadDictData(reader, fdict.PrivateDicSize); + + if (dicData.Count > 0) + { + // Interpret the values of private dict. + foreach (CffDataDicEntry dicEntry in dicData) + { + switch (dicEntry.Operator.Name) + { + case "Subrs": + int localSubrsOffset = (int)dicEntry.Operands[0].RealNumValue; + reader.BaseStream.Position = offset + fdict.PrivateDicOffset + localSubrsOffset; + fdict.LocalSubr = this.ReadSubrBuffer(reader); + break; + + case "defaultWidthX": + case "nominalWidthX": + break; + } + } + } + } + + return fontDicts; + } + + protected CffDataDicEntry ReadEntry(BigEndianBinaryReader reader) { List operands = new(); @@ -65,9 +140,112 @@ public CffDataDicEntry ReadEntry(BigEndianBinaryReader reader) return new CffDataDicEntry(@operator!, operands.ToArray()); } + protected bool TryReadIndexDataOffsets(BigEndianBinaryReader reader, [NotNullWhen(true)] out CffIndexOffset[]? value) + { + // INDEX Data + // An INDEX is an array of variable-sized objects.It comprises a + // header, an offset array, and object data. + // The offset array specifies offsets within the object data. + // An object is retrieved by + // indexing the offset array and fetching the object at the + // specified offset. + // The object’s length can be determined by subtracting its offset + // from the next offset in the offset array. + // An additional offset is added at the end of the offset array so the + // length of the last object may be determined. + // The INDEX format is shown in Table 7 + + // Table 7 INDEX Format + // Type Name Description + // Card16 count Number of objects stored in INDEX + // OffSize offSize Offset array element size + // Offset offset[count + 1] Offset array(from byte preceding object data) + // Card8 data[] Object data + + // Offsets in the offset array are relative to the byte that precedes + // the object data. Therefore the first element of the offset array + // is always 1. (This ensures that every object has a corresponding + // offset which is always nonzero and permits the efficient + // implementation of dynamic object loading.) + + // An empty INDEX is represented by a count field with a 0 value + // and no additional fields.Thus, the total size of an empty INDEX + // is 2 bytes. + + // Note 2 + // An INDEX may be skipped by jumping to the offset specified by the last + // element of the offset array + ushort count = reader.ReadUInt16(); + if (count == 0) + { + value = null; + return false; + } + + int offSize = reader.ReadByte(); + int[] offsets = new int[count + 1]; + var indexElems = new CffIndexOffset[count]; + for (int i = 0; i <= count; ++i) + { + offsets[i] = reader.ReadOffset(offSize); + } + + for (int i = 0; i < count; ++i) + { + indexElems[i] = new CffIndexOffset(offsets[i], offsets[i + 1] - offsets[i]); + } + + value = indexElems; + return true; + } + + protected byte[][] ReadSubrBuffer(BigEndianBinaryReader reader) + { + if (!this.TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) + { + return Array.Empty(); + } + + byte[][] rawBufferList = new byte[offsets.Length][]; + + for (int i = 0; i < rawBufferList.Length; ++i) + { + CffIndexOffset offset = offsets[i]; + rawBufferList[i] = reader.ReadBytes(offset.Length); + } + + return rawBufferList; + } + + protected List ReadDictData(BigEndianBinaryReader reader, int length) + { + // 4. DICT Data + + // Font dictionary data comprising key-value pairs is represented + // in a compact tokenized format that is similar to that used to + // represent Type 1 charstrings. + + // Dictionary keys are encoded as 1- or 2-byte operators and dictionary values are encoded as + // variable-size numeric operands that represent either integer or + // real values. + + //----------------------------- + // A DICT is simply a sequence of + // operand(s)/operator bytes concatenated together. + int maxIndex = (int)(reader.BaseStream.Position + length); + List dicData = new(); + while (reader.BaseStream.Position < maxIndex) + { + CffDataDicEntry dicEntry = this.ReadEntry(reader); + dicData.Add(dicEntry); + } + + return dicData; + } + private CFFOperator ReadOperator(BigEndianBinaryReader reader, byte b0) { - // read operator key + // Read operator key. byte b1 = 0; if (b0 == 12) { @@ -75,7 +253,7 @@ private CFFOperator ReadOperator(BigEndianBinaryReader reader, byte b0) b1 = reader.ReadUInt8(); } - // get registered operator by its key + // Get registered operator by its key. return CFFOperator.GetOperatorByKey(b0, b1); } From a06eeef74dc1ac84a501b84f4955cd424d0d37be Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sun, 3 Jul 2022 16:46:19 +0200 Subject: [PATCH 10/56] Move ReadFdSelect to base class --- src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs | 64 +------------------ src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs | 17 +++-- .../Tables/Cff/CffParserBase.cs | 60 +++++++++++++++++ 3 files changed, 74 insertions(+), 67 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs index c7e387af5..e7efce979 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs @@ -31,14 +31,14 @@ public CffFont Load(BigEndianBinaryReader reader, long offset) string fontName = this.ReadNameIndex(reader); - List? dataDicEntries = this.ReadTopDictIndex(reader); + List dataDicEntries = this.ReadTopDictIndex(reader); string[] stringIndex = this.ReadStringIndex(reader); CffTopDictionary topDictionary = this.ResolveTopDictInfo(dataDicEntries, stringIndex); byte[][] globalSubrRawBuffers = this.ReadGlobalSubrIndex(reader); - this.ReadFDSelect(reader, topDictionary.CidFontInfo); + this.ReadFdSelect(reader, this.offset, topDictionary.CidFontInfo); FontDict[] fontDicts = this.ReadFdArray(reader, this.offset, topDictionary.CidFontInfo.FDArray); CffPrivateDictionary? privateDictionary = this.ReadPrivateDict(reader); @@ -420,66 +420,6 @@ private void ReadCharsetsFormat2(BigEndianBinaryReader reader, string[] stringIn } } - private void ReadFDSelect(BigEndianBinaryReader reader, CidFontInfo cidFontInfo) - { - if (cidFontInfo.FDSelect == 0) - { - return; - } - - reader.BaseStream.Position = this.offset + cidFontInfo.FDSelect; - switch (reader.ReadByte()) - { - case 0: - { - cidFontInfo.FdSelectFormat = 0; - for (int i = 0; i < cidFontInfo.CIDFountCount; i++) - { - cidFontInfo.FdSelectMap[i] = reader.ReadByte(); - } - - break; - } - - case 3: - { - cidFontInfo.FdSelectFormat = 3; - ushort nRanges = reader.ReadUInt16(); - var ranges = new FDRange[nRanges + 1]; - - cidFontInfo.FdSelectFormat = 3; - cidFontInfo.FdRanges = ranges; - for (int i = 0; i < nRanges; ++i) - { - ranges[i] = new FDRange(reader.ReadUInt16(), reader.ReadByte()); - } - - ranges[nRanges] = new FDRange(reader.ReadUInt16(), 0); // sentinel - break; - } - - case 4: - { - cidFontInfo.FdSelectFormat = 4; - uint nRanges = reader.ReadUInt32(); - var ranges = new FDRange[nRanges + 1]; - - cidFontInfo.FdSelectFormat = 3; - cidFontInfo.FdRanges = ranges; - for (int i = 0; i < nRanges; ++i) - { - ranges[i] = new FDRange(reader.ReadUInt32(), reader.ReadUInt16()); - } - - ranges[nRanges] = new FDRange(reader.ReadUInt32(), 0); // sentinel - break; - } - - default: - throw new NotSupportedException("Only FD Select format 0 and 3 are supported"); - } - } - private CffGlyphData[] ReadCharStringsIndex( BigEndianBinaryReader reader, CffTopDictionary topDictionary, diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs index 2657dfc30..70d05ebbc 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs @@ -35,11 +35,21 @@ public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictL this.ReadTopDictData(reader, topDictLength); reader.Seek(hdrSize + topDictLength, SeekOrigin.Begin); + var cidFontInfo = new CidFontInfo() + { + FDArray = this.fdArrayOffset.GetValueOrDefault(), + FDSelect = this.fdSelectOffset.GetValueOrDefault(), + }; + byte[][] globalSubrRawBuffers = this.ReadGlobalSubrIndex(reader); this.itemVariationStore = ItemVariationStore.Load(reader, this.variationStoreOffset); - // TODO: FDSelect? + if (this.fdSelectOffset.HasValue) + { + this.ReadFdSelect(reader, this.offset, cidFontInfo); + } + CffIndexOffset[] charStringOffsets = this.ReadCharStringIndex(reader); byte[][] charStringBuffers = this.ReadCharStringBuffers(reader, charStringOffsets); @@ -47,10 +57,7 @@ public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictL FontDict[] fontDicts = this.ReadFdArray(reader, this.offset, fdArrayOffset); var topDictionary = new CffTopDictionary { - CidFontInfo = new CidFontInfo() - { - FDArray = fdArrayOffset, - } + CidFontInfo = cidFontInfo }; var privateDictionary = new CffPrivateDictionary(fontDicts[0].LocalSubr, 0, 0); diff --git a/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs b/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs index 58d34c223..6cbb2f347 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs @@ -13,6 +13,66 @@ internal abstract class CffParserBase { private readonly StringBuilder pooledStringBuilder = new(); + protected void ReadFdSelect(BigEndianBinaryReader reader, long offset, CidFontInfo cidFontInfo) + { + if (cidFontInfo.FDSelect is 0) + { + return; + } + + reader.BaseStream.Position = offset + cidFontInfo.FDSelect; + switch (reader.ReadByte()) + { + case 0: + { + cidFontInfo.FdSelectFormat = 0; + for (int i = 0; i < cidFontInfo.CIDFountCount; i++) + { + cidFontInfo.FdSelectMap[i] = reader.ReadByte(); + } + + break; + } + + case 3: + { + cidFontInfo.FdSelectFormat = 3; + ushort nRanges = reader.ReadUInt16(); + var ranges = new FDRange[nRanges + 1]; + + cidFontInfo.FdSelectFormat = 3; + cidFontInfo.FdRanges = ranges; + for (int i = 0; i < nRanges; ++i) + { + ranges[i] = new FDRange(reader.ReadUInt16(), reader.ReadByte()); + } + + ranges[nRanges] = new FDRange(reader.ReadUInt16(), 0); // sentinel + break; + } + + case 4: + { + cidFontInfo.FdSelectFormat = 4; + uint nRanges = reader.ReadUInt32(); + var ranges = new FDRange[nRanges + 1]; + + cidFontInfo.FdSelectFormat = 3; + cidFontInfo.FdRanges = ranges; + for (int i = 0; i < nRanges; ++i) + { + ranges[i] = new FDRange(reader.ReadUInt32(), reader.ReadUInt16()); + } + + ranges[nRanges] = new FDRange(reader.ReadUInt32(), 0); // sentinel + break; + } + + default: + throw new NotSupportedException("Only FD Select format 0, 3 and 4 are supported"); + } + } + protected FontDict[] ReadFdArray(BigEndianBinaryReader reader, long offset, long fdArrayOffset) { if (fdArrayOffset is 0) From 7c408d6ae092dd8f2e1b51facb72e3efe6eb3106 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Mon, 4 Jul 2022 10:35:11 +0200 Subject: [PATCH 11/56] Better ascii art --- .../TrueType/Glyphs/SimpleGlyphLoader.cs | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs index db0bb2403..a314445e9 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs @@ -6,6 +6,10 @@ namespace SixLabors.Fonts.Tables.TrueType.Glyphs { + /// + /// Implements loading Simple Glyph Description which is part of the `glyph`table. + /// + /// internal class SimpleGlyphLoader : GlyphLoader { private readonly short[] xs; @@ -67,12 +71,25 @@ public static GlyphLoader LoadSimpleGlyph(BigEndianBinaryReader reader, short co return new SimpleGlyphLoader(bounds); } - // uint16 | endPtsOfContours[n] | Array of last points of each contour; n is the number of contours. - // uint16 | instructionLength | Total number of bytes for instructions. - // uint8 | instructions[n] | Array of instructions for each glyph; n is the number of instructions. - // uint8 | flags[n] | Array of flags for each coordinate in outline; n is the number of flags. - // uint8 or int16 | xCoordinates[] | First coordinates relative to(0, 0); others are relative to previous point. - // uint8 or int16 | yCoordinates[] | First coordinates relative to (0, 0); others are relative to previous point. + // +-----------------+----------------------------------------+--------------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+====================================================================+ + // | uint16 | endPtsOfContours[n] | Array of last points of each contour; n is the number of contours. | + // +-----------------+----------------------------------------+--------------------------------------------------------------------+ + // | uint16 | instructionLength | Total number of bytes for instructions. | + // +-----------------+----------------------------------------+--------------------------------------------------------------------+ + // | uint8 | instructions[n] | Array of instructions for each glyph; | + // | | | n is the number of instructions. | + // +-----------------+----------------------------------------+--------------------------------------------------------------------+ + // | uint8 | flags[n] | Array of flags for each coordinate in outline; | + // | | | n is the number of flags. | + // +-----------------+----------------------------------------+--------------------------------------------------------------------+ + // | uint8 or int16 | xCoordinates[] | First coordinates relative to(0, 0); | + // | | | others are relative to previous point. | + // +-----------------+----------------------------------------+--------------------------------------------------------------------+ + // | uint8 or int16 | yCoordinates[] | First coordinates relative to (0, 0); | + // | | | others are relative to previous point. | + // +-----------------+----------------------------------------+--------------------------------------------------------------------+ ushort[] endPoints = reader.ReadUInt16Array(count); ushort instructionSize = reader.ReadUInt16(); From d2fa25d24df32d16e447cabcac3bd9c5e31a60b3 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Mon, 4 Jul 2022 10:53:06 +0200 Subject: [PATCH 12/56] Add flag descriptions --- .../Tables/TrueType/Glyphs/GlyphTable.cs | 4 +-- .../TrueType/Glyphs/SimpleGlyphLoader.cs | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs index 7ee3261a9..86a4a7ae7 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs @@ -31,9 +31,7 @@ public static GlyphTable Load(FontReader reader) AVarTable? avar = reader.TryGetTable(); GVarTable? gvar = reader.TryGetTable(); - - //GlyphVariationProcessor? glyphVariationProcessor = fvar is null ? null : new GlyphVariationProcessor(itemStore, fvar, avar, gvar); - + // GlyphVariationProcessor? glyphVariationProcessor = fvar is null ? null : new GlyphVariationProcessor(itemStore, fvar, avar, gvar); using (BigEndianBinaryReader binaryReader = reader.GetReaderAtTablePosition(TableName)) { return Load(binaryReader, reader.TableFormat, locations, fallbackEmptyBounds); diff --git a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs index a314445e9..7956b5187 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs @@ -41,12 +41,46 @@ public SimpleGlyphLoader(Bounds bounds) [Flags] private enum Flags : byte { + /// + /// The point is is off the curve. + /// ControlPoint = 0, + + /// + /// The point is on the curve. + /// OnCurve = 1, + + /// + /// If set, the corresponding x-coordinate is 1 byte long. If not set, 2 bytes. + /// XByte = 2, + + /// + /// If set, the corresponding y-coordinate is 1 byte long. If not set, 2 bytes. + /// YByte = 4, + + /// + /// f set, the next byte specifies the number of additional times this set of flags is to be repeated. + /// In this way, the number of flags listed can be smaller than the number of points in a character. + /// Repeat = 8, + + /// + /// This flag has two meanings, depending on how the x-Short Vector flag is set. + /// If x-Short Vector is set, this bit describes the sign of the value, with 1 equalling positive and 0 negative. + /// If the x-Short Vector bit is not set and this bit is set, then the current x-coordinate is the same as the previous x-coordinate. + /// If the x-Short Vector bit is not set and this bit is also not set, the current x-coordinate is a signed 16-bit delta vector. + /// XSignOrSame = 16, + + /// + /// This flag has two meanings, depending on how the y-Short Vector flag is set. + /// If y-Short Vector is set, this bit describes the sign of the value, with 1 equalling positive and 0 negative. + /// If the y-Short Vector bit is not set and this bit is set, then the current y-coordinate is the same as the previous y-coordinate. + /// If the y-Short Vector bit is not set and this bit is also not set, the current y-coordinate is a signed 16-bit delta vector. + /// YSignOrSame = 32 } From 3064aa4d54816af6fb8cf3ff51cb5f94760ab763 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Tue, 5 Jul 2022 05:54:40 +0200 Subject: [PATCH 13/56] Parse hvar table --- .../StreamFontMetrics.TrueType.cs | 1 + .../Variations/DeltaSetIndexMap.cs | 59 ++++++++++++++ .../Variations/HVarTable.cs | 76 +++++++++++++++++++ .../Variations/ItemVariationStore.cs | 4 + src/SixLabors.Fonts/Tables/TableLoader.cs | 1 + 5 files changed, 141 insertions(+) create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index 0375339ef..06081e2f0 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -71,6 +71,7 @@ private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) FVarTable? fvar = reader.TryGetTable(); AVarTable? avar = reader.TryGetTable(); GVarTable? gvar = reader.TryGetTable(); + HVarTable? hvar = reader.TryGetTable(); // Load using recommended order for best performance. // https://www.microsoft.com/typography/otspec/recom.htm#TableOrdering diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs new file mode 100644 index 000000000..973a6af0c --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs @@ -0,0 +1,59 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System; +using System.IO; + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + internal class DeltaSetIndexMap + { + private const int InnerIndexBitCountMask = 0x0F; + + private const int MapEntrySizeMask = 0x30; + + public DeltaSetIndexMap(int entry, int outerIndex, int innerIndex) + { + this.Entry = entry; + this.OuterIndex = outerIndex; + this.InnerIndex = innerIndex; + } + + public int Entry { get; } + + public int OuterIndex { get; } + + public int InnerIndex { get; } + + public static DeltaSetIndexMap Load(BigEndianBinaryReader reader, long offset) + { + // DeltaSetIndexMap format 0. + // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+===================================================================================+ + // | uint8 | format | DeltaSetIndexMap format. Either 0 or 1 | + // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ + // | uint8 | entryFormat | A packed field that describes the compressed representation of delta-set indices. | + // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ + // | uint16 or uin32 | mapCount | The number of mapping entries. uint16 for format0, uint32 for format 1 | + // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ + // | uint8 | mapData[variable] | The delta-set index mapping data. | + // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + byte format = reader.ReadUInt8(); + byte entryFormat = reader.ReadUInt8(); + ushort mapCount = reader.ReadUInt16(); + + if (format is not 0 or 1) + { + throw new NotSupportedException("Only format 0 or 1 of DeltaSetIndexMap is supported"); + } + + int entry = (entryFormat & MapEntrySizeMask) >> (4 + 1); + int outerIndex = entry >> ((entryFormat & InnerIndexBitCountMask) + 1); + int innerIndex = entry & ((1 << ((entryFormat & InnerIndexBitCountMask) + 1)) - 1); + + return new DeltaSetIndexMap(entry, outerIndex, innerIndex); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs new file mode 100644 index 000000000..95d5bbbc7 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs @@ -0,0 +1,76 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System; + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + /// + /// Implements reading the font variations table `hvar`. + /// + /// + internal class HVarTable : Table + { + internal const string TableName = "hvar"; + + public HVarTable(ItemVariationStore itemVariationStore) => this.ItemVariationStore = itemVariationStore; + + public ItemVariationStore ItemVariationStore { get; } + + public static HVarTable? Load(FontReader reader) + { + if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) + { + return null; + } + + using (binaryReader) + { + return Load(binaryReader); + } + } + + public static HVarTable Load(BigEndianBinaryReader reader) + { + // Horizontal metrics variations table + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Type | Name | Description | + // +==========================+========================================+=========================================================================+ + // | uint16 | majorVersion | Major version number of the font variations table — set to 1. | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | minorVersion | Minor version number of the font variations table — set to 0. | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | itemVariationStoreOffset | Offset in bytes from the start of this table to the | + // | | | item variation store table. | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | advanceWidthMappingOffset | Offset in bytes from the start of this table to the delta-set index | + // | | | mapping for advance widths (may be NULL). | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | lsbMappingOffset | Offset in bytes from the start of this table to the delta-set index | + // | | | mapping for left side bearings (may be NULL). | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | rsbMappingOffset | Offset in bytes from the start of this table to the delta-set index | + // | | | mapping for right side bearings (may be NULL). | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + ushort major = reader.ReadUInt16(); + ushort minor = reader.ReadUInt16(); + uint itemVariationStoreOffset = reader.ReadOffset32(); + uint advanceWidthMappingOffset = reader.ReadOffset32(); + uint lsbMappingOffset = reader.ReadOffset32(); + uint rsbMappingOffset = reader.ReadOffset32(); + + if (major != 1) + { + throw new NotSupportedException("Only version 1 of hvar table is supported"); + } + + var itemVariationStore = ItemVariationStore.Load(reader, itemVariationStoreOffset); + + var advanceWidthMapping = DeltaSetIndexMap.Load(reader, advanceWidthMappingOffset); + var lsbMapping = DeltaSetIndexMap.Load(reader, lsbMappingOffset); + var rsbMapping = DeltaSetIndexMap.Load(reader, rsbMappingOffset); + + return new HVarTable(itemVariationStore); + } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs index 42a0a735b..8e8a41c56 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs @@ -6,6 +6,10 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations { + /// + /// Implements reading the item variation store, which is used in most glyph variation data. + /// + /// internal class ItemVariationStore { private static readonly ItemVariationStore EmptyItemVariationStoreTable = new(VariationRegionList.EmptyVariationRegionList, Array.Empty()); diff --git a/src/SixLabors.Fonts/Tables/TableLoader.cs b/src/SixLabors.Fonts/Tables/TableLoader.cs index 6537b31bc..3d20aeb9d 100644 --- a/src/SixLabors.Fonts/Tables/TableLoader.cs +++ b/src/SixLabors.Fonts/Tables/TableLoader.cs @@ -54,6 +54,7 @@ public TableLoader() this.Register(AVarTable.TableName, AVarTable.Load); this.Register(GVarTable.TableName, GVarTable.Load); this.Register(FVarTable.TableName, FVarTable.Load); + this.Register(HVarTable.TableName, HVarTable.Load); } public static TableLoader Default { get; } = new(); From 6840b84f9f49cb3b3e18dbede595aa9f16982c99 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Tue, 5 Jul 2022 14:39:01 +0200 Subject: [PATCH 14/56] Fix issues parsing ItemvariationStore --- .../Variations/HVarTable.cs | 4 +- .../Variations/ItemVariationStore.cs | 45 ++++++++++--------- src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs | 10 ++++- .../Tables/General/HeadTable.cs | 2 +- 4 files changed, 36 insertions(+), 25 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs index 95d5bbbc7..53d53b13f 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs @@ -6,12 +6,12 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations { /// - /// Implements reading the font variations table `hvar`. + /// Implements reading the font variations table `HVAR`. /// /// internal class HVarTable : Table { - internal const string TableName = "hvar"; + internal const string TableName = "HVAR"; public HVarTable(ItemVariationStore itemVariationStore) => this.ItemVariationStore = itemVariationStore; diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs index 8e8a41c56..33587d5f0 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs @@ -1,7 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Apache License, Version 2.0. -using System; using System.IO; namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations @@ -12,8 +11,6 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations /// internal class ItemVariationStore { - private static readonly ItemVariationStore EmptyItemVariationStoreTable = new(VariationRegionList.EmptyVariationRegionList, Array.Empty()); - public ItemVariationStore(VariationRegionList variationRegionList, ItemVariationData[] itemVariations) { this.VariationRegionList = variationRegionList; @@ -24,50 +21,56 @@ public ItemVariationStore(VariationRegionList variationRegionList, ItemVariation public ItemVariationData[] ItemVariations { get; } - public static ItemVariationStore Load(BigEndianBinaryReader reader, long offset) + public static ItemVariationStore Load(BigEndianBinaryReader reader, long offset, long? length = null) { + // ItemVariationStore + // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ + // | Type | Name | Description | + // +==========================+==================================================+=========================================================================+ + // | uint16 | format | Format — set to 1 | + // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | variationRegionListOffset | Offset in bytes from the start of the item variation store | + // | | | to the variation region list. | + // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | itemVariationDataCount | The number of item variation data subtables. | + // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | itemVariationDataOffsets[itemVariationDataCount] | Offsets in bytes from the start of the item variation store | + // | | | to each item variation data subtable. | + // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ reader.Seek(offset, SeekOrigin.Begin); - // Length in bytes of the Item Variation Store structure that follows. - ushort length = reader.ReadUInt16(); - if (length == 0) - { - return EmptyItemVariationStoreTable; - } - - long variationDataStoreStart = offset + 2; - ushort format = reader.ReadUInt16(); if (format != 1) { throw new InvalidFontFileException($"Invalid value for variation Store Format {format}. Should be '1'."); } - uint variationRegionListOffset = reader.ReadUInt32(); + uint variationRegionListOffset = reader.ReadOffset32(); ushort itemVariationDataCount = reader.ReadUInt16(); - if (variationRegionListOffset > length) + if (length.HasValue && variationRegionListOffset > length) { throw new InvalidFontFileException("Invalid variation region list offset"); } var itemVariations = new ItemVariationData[itemVariationDataCount]; + long itemVariationsOffset = reader.BaseStream.Position; for (int i = 0; i < itemVariationDataCount; i++) { uint variationDataOffset = reader.ReadOffset32(); - if (offset >= length) + itemVariationsOffset += 4; + if (length.HasValue && offset + variationDataOffset >= length) { throw new InvalidFontFileException("Bad offset to variation data subtable"); } - var itemVariationData = ItemVariationData.Load(reader, variationDataStoreStart + variationDataOffset); + var itemVariationData = ItemVariationData.Load(reader, offset + variationDataOffset); itemVariations[i] = itemVariationData; - } - var variationRegionList = VariationRegionList.Load(reader, variationDataStoreStart + variationRegionListOffset); + reader.BaseStream.Position = itemVariationsOffset; + } - // Make sure we point to the stream to the end of the variation store data. - reader.Seek(offset + length, SeekOrigin.Begin); + var variationRegionList = VariationRegionList.Load(reader, offset + variationRegionListOffset); return new ItemVariationStore(variationRegionList, itemVariations); } diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs index 70d05ebbc..424afd4dd 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs @@ -14,6 +14,8 @@ namespace SixLabors.Fonts.Tables.Cff /// internal class Cff2Parser : CffParserBase { + private static readonly ItemVariationStore EmptyItemVariationStoreTable = new(VariationRegionList.EmptyVariationRegionList, Array.Empty()); + private long offset; private int fontMatrixOffset; @@ -43,7 +45,13 @@ public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictL byte[][] globalSubrRawBuffers = this.ReadGlobalSubrIndex(reader); - this.itemVariationStore = ItemVariationStore.Load(reader, this.variationStoreOffset); + // Length in bytes of the Item Variation Store structure that follows. + reader.Seek(this.variationStoreOffset, SeekOrigin.Begin); + ushort variationStoreLength = reader.ReadUInt16(); + this.itemVariationStore = variationStoreLength == 0 ? EmptyItemVariationStoreTable : ItemVariationStore.Load(reader, this.variationStoreOffset + 2); + + // Make sure we point to the stream to the end of the variation store data. + reader.Seek(offset + variationStoreLength, SeekOrigin.Begin); if (this.fdSelectOffset.HasValue) { diff --git a/src/SixLabors.Fonts/Tables/General/HeadTable.cs b/src/SixLabors.Fonts/Tables/General/HeadTable.cs index d9d660118..fc7e46772 100644 --- a/src/SixLabors.Fonts/Tables/General/HeadTable.cs +++ b/src/SixLabors.Fonts/Tables/General/HeadTable.cs @@ -151,7 +151,7 @@ public static HeadTable Load(BigEndianBinaryReader reader) // Bit 5: Condensed(if set to 1) // Bit 6: Extended(if set to 1) // Bits 7–15: Reserved(set to 0). - // uint16 |lowestRecPPEM | Smallest readable size in pixels. + // uint16 | lowestRecPPEM | Smallest readable size in pixels. // int16 | fontDirectionHint | Deprecated(Set to 2). // 0: Fully mixed directional glyphs; // 1: Only strongly left to right; From f43a240d10cf2c0b91c4758a14a243d0ebffa6f5 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Tue, 5 Jul 2022 15:17:54 +0200 Subject: [PATCH 15/56] Use font name from NameTable for CFF2 font --- src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs | 2 +- src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs | 5 +---- src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs | 14 ++++++++++---- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs index d8b002513..9daa104ba 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs @@ -10,6 +10,6 @@ internal class Cff2Font : CffFont public Cff2Font(string name, CffTopDictionary metrics, CffGlyphData[] glyphs, ItemVariationStore itemVariationStore) : base(name, metrics, glyphs) => this.ItemVariationStore = itemVariationStore; - public ItemVariationStore? ItemVariationStore { get; set; } + public ItemVariationStore ItemVariationStore { get; set; } } } diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs index 424afd4dd..cb2aa4bbf 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs @@ -25,14 +25,11 @@ internal class Cff2Parser : CffParserBase private int? fdSelectOffset; private ItemVariationStore? itemVariationStore; - public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictLength, long offset) + public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictLength, string fontName, long offset) { this.offset = offset; reader.Seek(hdrSize, SeekOrigin.Begin); - // TODO: spec states: font name can be copied from the name ID 6 value in the 'name' table. - string fontName = "placeHolder"; - long startPos = reader.BaseStream.Position; this.ReadTopDictData(reader, topDictLength); reader.Seek(hdrSize + topDictLength, SeekOrigin.Begin); diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs index 6911654cb..b6499c929 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs @@ -2,7 +2,10 @@ // Licensed under the Apache License, Version 2.0. using System; +using System.Globalization; using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; +using SixLabors.Fonts.Tables.General.Name; +using SixLabors.Fonts.WellKnownIds; namespace SixLabors.Fonts.Tables.Cff { @@ -32,13 +35,16 @@ public CffGlyphData GetGlyph(int index) return null; } + NameTable nameTable = fontReader.GetTable(); + string fontName = nameTable.GetNameById(CultureInfo.InvariantCulture, KnownNameIds.PostscriptName); + using (binaryReader) { - return Load(binaryReader); + return Load(binaryReader, fontName); } } - public static Cff2Table Load(BigEndianBinaryReader reader) + public static Cff2Table Load(BigEndianBinaryReader reader, string fontName) { long position = reader.BaseStream.Position; byte major = reader.ReadUInt8(); @@ -50,8 +56,8 @@ public static Cff2Table Load(BigEndianBinaryReader reader) { case 2: Cff2Parser parser = new(); - Cff2Font cffFont = parser.Load(reader, hdrSize, topDictLength, position); - return new(parser.Load(reader, hdrSize, topDictLength, position), cffFont.ItemVariationStore); + Cff2Font cffFont = parser.Load(reader, hdrSize, topDictLength, fontName, position); + return new(cffFont, cffFont.ItemVariationStore); default: throw new NotSupportedException("CFF version 2 is expected"); From 3d7b12cca4df068a2110cc1ce9be2be7e2d9dc6c Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Wed, 6 Jul 2022 12:56:18 +0200 Subject: [PATCH 16/56] Implement loading DeltaSetIndexMap --- .../Variations/DeltaSetIndexMap.cs | 42 ++++++++++++++----- .../Variations/HVarTable.cs | 24 ++++++++--- 2 files changed, 51 insertions(+), 15 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs index 973a6af0c..df3ad4afc 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs @@ -12,22 +12,19 @@ internal class DeltaSetIndexMap private const int MapEntrySizeMask = 0x30; - public DeltaSetIndexMap(int entry, int outerIndex, int innerIndex) + public DeltaSetIndexMap(int outerIndex, int innerIndex) { - this.Entry = entry; this.OuterIndex = outerIndex; this.InnerIndex = innerIndex; } - public int Entry { get; } - public int OuterIndex { get; } public int InnerIndex { get; } - public static DeltaSetIndexMap Load(BigEndianBinaryReader reader, long offset) + public static DeltaSetIndexMap[] Load(BigEndianBinaryReader reader, long offset) { - // DeltaSetIndexMap format 0. + // DeltaSetIndexMap. // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ // | Type | Name | Description | // +=================+========================================+===================================================================================+ @@ -49,11 +46,36 @@ public static DeltaSetIndexMap Load(BigEndianBinaryReader reader, long offset) throw new NotSupportedException("Only format 0 or 1 of DeltaSetIndexMap is supported"); } - int entry = (entryFormat & MapEntrySizeMask) >> (4 + 1); - int outerIndex = entry >> ((entryFormat & InnerIndexBitCountMask) + 1); - int innerIndex = entry & ((1 << ((entryFormat & InnerIndexBitCountMask) + 1)) - 1); + int entrySize = ((entryFormat & MapEntrySizeMask) >> 4) + 1; + int outerIndex = entrySize >> ((entryFormat & InnerIndexBitCountMask) + 1); + int innerIndex = entrySize & ((1 << ((entryFormat & InnerIndexBitCountMask) + 1)) - 1); + + var deltaSetIndexMaps = new DeltaSetIndexMap[mapCount]; + for (int i = 0; i < mapCount; i++) + { + int entry; + switch (entrySize) + { + case 1: + entry = reader.ReadByte(); + break; + case 2: + entry = (reader.ReadByte() << 8) | reader.ReadByte(); + break; + case 3: + entry = (reader.ReadByte() << 16) | (reader.ReadByte() << 8) | reader.ReadByte(); + break; + case 4: + entry = (reader.ReadByte() << 24) | (reader.ReadByte() << 16) | (reader.ReadByte() << 8) | reader.ReadByte(); + break; + default: + throw new NotSupportedException("unsupported delta set index map"); + } + + deltaSetIndexMaps[i] = new DeltaSetIndexMap((ushort)(entry & innerIndex), (ushort)(entry >> outerIndex)); + } - return new DeltaSetIndexMap(entry, outerIndex, innerIndex); + return deltaSetIndexMaps; } } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs index 53d53b13f..044525b79 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs @@ -7,16 +7,30 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations { /// /// Implements reading the font variations table `HVAR`. + /// The HVAR table is used in variable fonts to provide variations for horizontal glyph metrics values. + /// This can be used to provide variation data for advance widths in the 'hmtx' table. /// /// internal class HVarTable : Table { internal const string TableName = "HVAR"; - public HVarTable(ItemVariationStore itemVariationStore) => this.ItemVariationStore = itemVariationStore; + public HVarTable(ItemVariationStore itemVariationStore, DeltaSetIndexMap[] advanceWidthMapping, DeltaSetIndexMap[] lsbMapping, DeltaSetIndexMap[] rsbMapping) + { + this.ItemVariationStore = itemVariationStore; + this.AdvanceWidthMapping = advanceWidthMapping; + this.LsbMapping = lsbMapping; + this.RsbMapping = rsbMapping; + } public ItemVariationStore ItemVariationStore { get; } + public DeltaSetIndexMap[] AdvanceWidthMapping { get; } + + public DeltaSetIndexMap[] LsbMapping { get; } + + public DeltaSetIndexMap[] RsbMapping { get; } + public static HVarTable? Load(FontReader reader) { if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) @@ -66,11 +80,11 @@ public static HVarTable Load(BigEndianBinaryReader reader) var itemVariationStore = ItemVariationStore.Load(reader, itemVariationStoreOffset); - var advanceWidthMapping = DeltaSetIndexMap.Load(reader, advanceWidthMappingOffset); - var lsbMapping = DeltaSetIndexMap.Load(reader, lsbMappingOffset); - var rsbMapping = DeltaSetIndexMap.Load(reader, rsbMappingOffset); + DeltaSetIndexMap[] advanceWidthMapping = DeltaSetIndexMap.Load(reader, advanceWidthMappingOffset); + DeltaSetIndexMap[] lsbMapping = DeltaSetIndexMap.Load(reader, lsbMappingOffset); + DeltaSetIndexMap[] rsbMapping = DeltaSetIndexMap.Load(reader, rsbMappingOffset); - return new HVarTable(itemVariationStore); + return new HVarTable(itemVariationStore, advanceWidthMapping, lsbMapping, rsbMapping); } } } From fad1a0b64e34b26787f241c17aac1bf4918d26b9 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sat, 9 Jul 2022 14:41:24 +0200 Subject: [PATCH 17/56] Parse deltaSets --- .../Variations/GlyphVariationData.cs | 2 +- .../Variations/ItemVariationData.cs | 51 +++++++++++++++++-- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs index a1314c4be..464d892d6 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs @@ -34,7 +34,7 @@ public static GlyphVariationData Load(BigEndianBinaryReader reader, long offset, // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ // | Offset16 | dataOffset | Offset from the start of the GlyphVariationData table to the serialized data.| // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ - // | TupleVariation |tupleVariationHeaders[tupleVariationCount] | Array of tuple variation headers. | + // | TupleVariation | tupleVariationHeaders[tupleVariationCount]| Array of tuple variation headers. | // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ reader.Seek(offset, SeekOrigin.Begin); ushort tupleVariationCount = reader.ReadUInt16(); diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs index 97ff0da94..742636f3b 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs @@ -10,11 +10,35 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations [DebuggerDisplay("ItemCount: {ItemCount}, WordDeltaCount: {WordDeltaCount}, RegionIndexCount: {RegionIndexes.Length}")] internal class ItemVariationData { - private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regionIndices) + /// + /// Count of “word” deltas. + /// + private const int WordDeltaCountMask = 0x7FFF; + + /// + /// Flag indicating that “word” deltas are long (int32). + /// + private const int LongWordsMask = 0x8000; + + private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regionIndices, uint[] longDeltas, ushort[] shortDeltas) { this.ItemCount = itemCount; this.WordDeltaCount = wordDeltaCount; this.RegionIndexes = regionIndices; + this.LongDeltas = longDeltas; + this.ShortDeltas = shortDeltas; + + this.Deltas = new uint[longDeltas.Length + shortDeltas.Length]; + int offset = 0; + for (int i = 0; i < longDeltas.Length; i++) + { + this.Deltas[offset++] = longDeltas[i]; + } + + for (int i = 0; i < shortDeltas.Length; i++) + { + this.Deltas[offset++] = shortDeltas[i]; + } } public ushort ItemCount { get; } @@ -23,6 +47,12 @@ private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regi public ushort[] RegionIndexes { get; } + public uint[] LongDeltas { get; } + + public ushort[] ShortDeltas { get; } + + public uint[] Deltas { get; } + public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) { // ItemVariationData @@ -50,12 +80,25 @@ public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) regionIndexes[i] = reader.ReadUInt16(); } - // TODO: how to deal with delta sets? - for (int i = 0; i < itemCount; i++) + // Logically, each DeltaSet record has regionIndexCount number of elements. The elements are represented using long and short types. + // These are either int16 and int8, or int32 and int16, according to whether the LONG_WORDS flag is set. + // The delta array has a sequence of deltas using the long type followed by a sequence of deltas using the short type. + bool longWords = (wordDeltaCount & LongWordsMask) == LongWordsMask; + int wordDeltas = wordDeltaCount & WordDeltaCountMask; + uint[] longDeltas = new uint[wordDeltas]; + for (int i = 0; i < wordDeltas; i++) + { + longDeltas[i] = longWords ? reader.ReadUInt32() : reader.ReadUInt16(); + } + + int remaining = regionIndexCount - wordDeltas; + ushort[] shortDeltas = new ushort[remaining]; + for (int i = 0; i < remaining; i++) { + shortDeltas[i] = longWords ? reader.ReadUInt16() : reader.ReadUInt8(); } - return new ItemVariationData(itemCount, wordDeltaCount, regionIndexes); + return new ItemVariationData(itemCount, wordDeltaCount, regionIndexes, longDeltas, shortDeltas); } /// From dedd968bff8ca02ad121802b55ba7b414971a6da Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Wed, 12 Jul 2023 11:45:16 +0200 Subject: [PATCH 18/56] Add AdvanceAdjustment() to VariationProcessor --- .../Variations/GlyphVariationProcessor.cs | 60 ++++++++++++++++++- .../Variations/ItemVariationData.cs | 1 + 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index 2cbb1b7f0..8185c8866 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -23,6 +23,8 @@ internal class GlyphVariationProcessor private readonly GVarTable? gVar; + private readonly HVarTable? hVar; + private readonly float[] normalizedCoords; private readonly Dictionary blendVectors; @@ -32,7 +34,7 @@ internal class GlyphVariationProcessor /// private const float Epsilon = 2.2204460492503130808472633361816E-16F; - public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVarTable? aVar = null, GVarTable? gVar = null) + public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVarTable? aVar = null, GVarTable? gVar = null, HVarTable? hVar = null) { DebugGuard.NotNull(itemStore, nameof(itemStore)); DebugGuard.NotNull(fVar, nameof(fVar)); @@ -41,6 +43,7 @@ public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVa this.fvar = fVar; this.avar = aVar; this.gVar = gVar; + this.hVar = hVar; this.normalizedCoords = this.NormalizeDefaultCoords(); this.blendVectors = new Dictionary(); } @@ -93,6 +96,36 @@ private float[] NormalizeDefaultCoords() return normalized; } + public int AdvanceAdjustment(int glyphId) + { + if (this.hVar is null) + { + throw new InvalidFontFileException("Missing HVAR table"); + } + + int outerIndex; + int innerIndex; + if (this.hVar?.AdvanceWidthMapping.Length > 0) + { + DeltaSetIndexMap[] advanceWidthMapping = this.hVar?.AdvanceWidthMapping; + int idx = glyphId; + if (idx >= advanceWidthMapping?.Length) + { + idx = advanceWidthMapping.Length - 1; + } + + outerIndex = advanceWidthMapping[idx].OuterIndex; + innerIndex = advanceWidthMapping[idx].InnerIndex; + } + else + { + outerIndex = 0; + innerIndex = glyphId; + } + + return this.Delta(outerIndex, innerIndex); + } + public float[] BlendVector(int outerIndex) { ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; @@ -165,5 +198,30 @@ public float[] BlendVector(int outerIndex) return blendVector; } + + private int Delta(int outerIndex, int innerIndex) + { + if (outerIndex >= this.itemStore.ItemVariations.Length) + { + return 0; + } + + ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; + if (innerIndex >= variationData.Deltas.Length) + { + return 0; + } + + uint deltaSet = variationData.Deltas[innerIndex]; + float[] blendVector = this.BlendVector(outerIndex); + int netAdjustment = 0; + for (int master = 0; master < variationData.RegionIndexes.Length; master++) + { + // TODO: disabled, no deltaSet does not have Deltas field. + // netAdjustment += deltaSet.Deltas[master] * blendVector[master]; + } + + return netAdjustment; + } } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs index 742636f3b..e2000ce8d 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs @@ -80,6 +80,7 @@ public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) regionIndexes[i] = reader.ReadUInt16(); } + // The deltaSets array represents a logical two-dimensional table of delta values with itemCount rows and regionIndexCount columns. // Logically, each DeltaSet record has regionIndexCount number of elements. The elements are represented using long and short types. // These are either int16 and int8, or int32 and int16, according to whether the LONG_WORDS flag is set. // The delta array has a sequence of deltas using the long type followed by a sequence of deltas using the short type. From e2d1416c83d34d9ac9915a782a113d45037aa80c Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Thu, 13 Jul 2023 12:43:52 +0200 Subject: [PATCH 19/56] Add Variations table properties to TrueTypeFontTables --- src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs | 4 ++++ .../Tables/TrueType/TrueTypeFontTables.cs | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index ab78f569a..cdc3df935 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -118,6 +118,10 @@ private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) GPos = gPos, Colr = colr, Cpal = cpal, + Fvar = fvar, + Gvar = gvar, + Hvar = hvar, + Avar = avar }; return new StreamFontMetrics(tables); diff --git a/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs b/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs index d15f97775..fc78daff1 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. using SixLabors.Fonts.Tables.AdvancedTypographic; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Tables.General; using SixLabors.Fonts.Tables.General.Colr; using SixLabors.Fonts.Tables.General.Kern; @@ -95,5 +96,13 @@ public TrueTypeFontTables( public IndexLocationTable Loca { get; set; } public PrepTable? Prep { get; set; } + + public FVarTable? Fvar { get; set; } + + public AVarTable? Avar { get; set; } + + public GVarTable? Gvar { get; set; } + + public HVarTable? Hvar { get; set; } } } From 9b6a92c0f3472a0d43917d76aaa8fff9f5e982e8 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Thu, 13 Jul 2023 14:36:47 +0200 Subject: [PATCH 20/56] Add TryGetVariationAxes method to FontMetrics --- src/SixLabors.Fonts/FileFontMetrics.cs | 4 +++ src/SixLabors.Fonts/FontMetrics.cs | 9 ++++++ src/SixLabors.Fonts/StreamFontMetrics.cs | 30 +++++++++++++++++++ .../Variations/VariationAxis.cs | 21 +++++++++++++ 4 files changed, 64 insertions(+) create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxis.cs diff --git a/src/SixLabors.Fonts/FileFontMetrics.cs b/src/SixLabors.Fonts/FileFontMetrics.cs index 21db7adab..6bbf2923f 100644 --- a/src/SixLabors.Fonts/FileFontMetrics.cs +++ b/src/SixLabors.Fonts/FileFontMetrics.cs @@ -8,6 +8,7 @@ using System.Numerics; using SixLabors.Fonts.Tables; using SixLabors.Fonts.Tables.AdvancedTypographic; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Unicode; namespace SixLabors.Fonts @@ -118,6 +119,9 @@ internal override bool TryGetGlyphClass(ushort glyphId, [NotNullWhen(true)] out internal override bool TryGetMarkAttachmentClass(ushort glyphId, [NotNullWhen(true)] out GlyphClassDef? markAttachmentClass) => this.fontMetrics.Value.TryGetMarkAttachmentClass(glyphId, out markAttachmentClass); + /// + public override bool TryGetVariationAxes(out VariationAxis[]? variationAxes) => this.fontMetrics.Value.TryGetVariationAxes(out variationAxes); + /// public override bool TryGetGlyphMetrics( CodePoint codePoint, diff --git a/src/SixLabors.Fonts/FontMetrics.cs b/src/SixLabors.Fonts/FontMetrics.cs index de94d1137..d3f7a6e30 100644 --- a/src/SixLabors.Fonts/FontMetrics.cs +++ b/src/SixLabors.Fonts/FontMetrics.cs @@ -5,6 +5,7 @@ using System.Diagnostics.CodeAnalysis; using System.Numerics; using SixLabors.Fonts.Tables.AdvancedTypographic; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Unicode; namespace SixLabors.Fonts @@ -160,6 +161,14 @@ internal FontMetrics() /// true, if the mark attachment class could be retrieved. internal abstract bool TryGetMarkAttachmentClass(ushort glyphId, [NotNullWhen(true)] out GlyphClassDef? markAttachmentClass); + /// + /// Tries to get the variation axes that this font supports. + /// The font needs to have a fvar table. + /// + /// An array with Variation axes. + /// True, if fvar table is present. + public abstract bool TryGetVariationAxes(out VariationAxis[]? variationAxes); + /// /// Gets the glyph metrics for a given code point. /// diff --git a/src/SixLabors.Fonts/StreamFontMetrics.cs b/src/SixLabors.Fonts/StreamFontMetrics.cs index 026bce2e9..380e0bfa0 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.cs @@ -5,6 +5,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; +using System.Globalization; using System.IO; using System.Linq; using System.Numerics; @@ -191,6 +192,35 @@ internal override bool TryGetMarkAttachmentClass(ushort glyphId, [NotNullWhen(tr return gdef is not null && gdef.TryGetMarkAttachmentClass(glyphId, out markAttachmentClass); } + /// + public override bool TryGetVariationAxes(out VariationAxis[]? variationAxes) + { + if (this.trueTypeFontTables?.Fvar == null) + { + variationAxes = Array.Empty(); + return false; + } + + var fvar = this.trueTypeFontTables?.Fvar; + var names = this.trueTypeFontTables?.Name; + variationAxes = new VariationAxis[fvar.Axes.Length]; + for (int i = 0; i < fvar.Axes.Length; i++) + { + var axis = fvar.Axes[i]; + var name = names != null ? names.GetNameById(CultureInfo.InvariantCulture, axis.AxisNameId) : string.Empty; + variationAxes[i] = new VariationAxis() + { + Tag = axis.Tag, + Min = axis.MinValue, + Max = axis.MaxValue, + Default = axis.DefaultValue, + Name = name + }; + } + + return true; + } + /// public override bool TryGetGlyphMetrics( CodePoint codePoint, diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxis.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxis.cs new file mode 100644 index 000000000..165685b5c --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxis.cs @@ -0,0 +1,21 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +using System.Diagnostics; + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + [DebuggerDisplay("Name: {Name}, Tag: {Tag}, Min: {Min}, Max: {Max}, Default: {Default}")] + public struct VariationAxis + { + public string Name; + + public string Tag; + + public float Min; + + public float Max; + + public float Default; + } +} From 31870b37a0dff64dcebada049ff2f43e3bed4ef3 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sun, 16 Jul 2023 18:06:48 +0200 Subject: [PATCH 21/56] Fix stylecop warnings --- src/SixLabors.Fonts/StreamFontMetrics.cs | 20 +++++++++---------- .../Variations/GlyphVariationProcessor.cs | 6 +++--- .../Variations/RegionAxisCoordinates.cs | 16 +++++++++++++++ .../Variations/VariationAxis.cs | 18 +++++++++++++++++ src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs | 1 - .../Tables/Cff/CffPrivateDictionary.cs | 4 ++-- .../Tables/TrueType/Glyphs/GlyphTable.cs | 6 +++--- 7 files changed, 52 insertions(+), 19 deletions(-) diff --git a/src/SixLabors.Fonts/StreamFontMetrics.cs b/src/SixLabors.Fonts/StreamFontMetrics.cs index 380e0bfa0..9baec149f 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.cs @@ -201,20 +201,20 @@ public override bool TryGetVariationAxes(out VariationAxis[]? variationAxes) return false; } - var fvar = this.trueTypeFontTables?.Fvar; - var names = this.trueTypeFontTables?.Name; - variationAxes = new VariationAxis[fvar.Axes.Length]; + FVarTable? fvar = this.trueTypeFontTables?.Fvar; + Tables.General.Name.NameTable? names = this.trueTypeFontTables?.Name; + variationAxes = new VariationAxis[fvar!.Axes.Length]; for (int i = 0; i < fvar.Axes.Length; i++) { - var axis = fvar.Axes[i]; - var name = names != null ? names.GetNameById(CultureInfo.InvariantCulture, axis.AxisNameId) : string.Empty; + VariationAxisRecord axis = fvar.Axes[i]; + string name = names != null ? names.GetNameById(CultureInfo.InvariantCulture, axis.AxisNameId) : string.Empty; variationAxes[i] = new VariationAxis() { - Tag = axis.Tag, - Min = axis.MinValue, - Max = axis.MaxValue, - Default = axis.DefaultValue, - Name = name + Tag = axis.Tag, + Min = axis.MinValue, + Max = axis.MaxValue, + Default = axis.DefaultValue, + Name = name }; } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index 8185c8866..3cb23a078 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -105,16 +105,16 @@ public int AdvanceAdjustment(int glyphId) int outerIndex; int innerIndex; - if (this.hVar?.AdvanceWidthMapping.Length > 0) + if (this.hVar?.AdvanceWidthMapping != null && this.hVar?.AdvanceWidthMapping.Length > 0) { - DeltaSetIndexMap[] advanceWidthMapping = this.hVar?.AdvanceWidthMapping; + DeltaSetIndexMap[]? advanceWidthMapping = this.hVar?.AdvanceWidthMapping; int idx = glyphId; if (idx >= advanceWidthMapping?.Length) { idx = advanceWidthMapping.Length - 1; } - outerIndex = advanceWidthMapping[idx].OuterIndex; + outerIndex = advanceWidthMapping![idx].OuterIndex; innerIndex = advanceWidthMapping[idx].InnerIndex; } else diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/RegionAxisCoordinates.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/RegionAxisCoordinates.cs index 350f1b639..27bc7ce53 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/RegionAxisCoordinates.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/RegionAxisCoordinates.cs @@ -5,13 +5,29 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations { + /// + /// Each RegionAxisCoordinates record provides coordinate values for a region along a single axis. + /// The three values must all be within the range -1.0 to +1.0. startCoord must be less than or equal to peakCoord, + /// and peakCoord must be less than or equal to endCoord. The three values must be either all non-positive or all non-negative with one possible exception: + /// if peakCoord is zero, then startCoord can be negative or 0 while endCoord can be positive or zero. + /// + /// [DebuggerDisplay("StartCoord: {StartCoord}, PeakCoord: {PeakCoord}, EndCoord: {EndCoord}")] public struct RegionAxisCoordinates { + /// + /// The region start coordinate value for the current axis. + /// public float StartCoord; + /// + /// The region peak coordinate value for the current axis. + /// public float PeakCoord; + /// + /// The region end coordinate value for the current axis. + /// public float EndCoord; } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxis.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxis.cs index 165685b5c..7d49dec84 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxis.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxis.cs @@ -5,17 +5,35 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations { + /// + /// + /// [DebuggerDisplay("Name: {Name}, Tag: {Tag}, Min: {Min}, Max: {Max}, Default: {Default}")] public struct VariationAxis { + /// + /// The name of the axes. + /// public string Name; + /// + /// Tag identifying the design variation for the axis. + /// public string Tag; + /// + /// The minimum coordinate value for the axis. + /// public float Min; + /// + /// The maximum coordinate value for the axis. + /// public float Max; + /// + /// The default coordinate value for the axis. + /// public float Default; } } diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs index cb2aa4bbf..f8f9f0255 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs @@ -30,7 +30,6 @@ public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictL this.offset = offset; reader.Seek(hdrSize, SeekOrigin.Begin); - long startPos = reader.BaseStream.Position; this.ReadTopDictData(reader, topDictLength); reader.Seek(hdrSize + topDictLength, SeekOrigin.Begin); diff --git a/src/SixLabors.Fonts/Tables/Cff/CffPrivateDictionary.cs b/src/SixLabors.Fonts/Tables/Cff/CffPrivateDictionary.cs index 1c65b8317..b9e1e747c 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffPrivateDictionary.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffPrivateDictionary.cs @@ -5,14 +5,14 @@ namespace SixLabors.Fonts.Tables.Cff { internal class CffPrivateDictionary { - public CffPrivateDictionary(byte[][] localSubrRawBuffers, int defaultWidthX, int nominalWidthX) + public CffPrivateDictionary(byte[][]? localSubrRawBuffers, int defaultWidthX, int nominalWidthX) { this.LocalSubrRawBuffers = localSubrRawBuffers; this.DefaultWidthX = defaultWidthX; this.NominalWidthX = nominalWidthX; } - public byte[][] LocalSubrRawBuffers { get; set; } + public byte[][]? LocalSubrRawBuffers { get; set; } public int DefaultWidthX { get; set; } diff --git a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs index a5770aeb3..08d4e3ace 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs @@ -3,7 +3,6 @@ using System.IO; using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; -using SixLabors.Fonts.Tables.General; using SixLabors.Fonts.Tables.Woff; namespace SixLabors.Fonts.Tables.TrueType.Glyphs @@ -29,8 +28,9 @@ public static GlyphTable Load(FontReader reader) FVarTable? fvar = reader.TryGetTable(); AVarTable? avar = reader.TryGetTable(); GVarTable? gvar = reader.TryGetTable(); - // GlyphVariationProcessor? glyphVariationProcessor = fvar is null ? null : new GlyphVariationProcessor(itemStore, fvar, avar, gvar); - + HVarTable? hvar = reader.TryGetTable(); + GlyphVariationProcessor? glyphVariationProcessor = fvar is null || hvar is null ? null : new GlyphVariationProcessor(hvar!.ItemVariationStore, fvar, avar, gvar); + // Use an empty bounds instance as the fallback. // We will substitute this with the advance width/height to determine bounds instead when rendering/measuring. Bounds fallbackEmptyBounds = Bounds.Empty; From b361fc6d93cf80c0ab8cbc917d0dec854217dc81 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 9 Aug 2023 20:57:30 +1000 Subject: [PATCH 22/56] Fix longwords mask check. --- .../Variations/GlyphVariationProcessor.cs | 5 +++-- .../AdvancedTypographic/Variations/ItemVariationData.cs | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index 3cb23a078..bcbc506fb 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -6,12 +6,13 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations { /// + /// /// This class is transforms TrueType glyphs according to the data from /// the Apple Advanced Typography variation tables(fvar, gvar, and avar). /// These tables allow infinite adjustments to glyph weight, width, slant, /// and optical size without the designer needing to specify every exact style. - /// - /// Implementation is based on fontkit: https://github.com/foliojs/fontkit/blob/master/src/glyph/GlyphVariationProcessor.js + /// + /// Implementation is based on fontkit: /// internal class GlyphVariationProcessor { diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs index e2000ce8d..4422dad50 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs @@ -8,15 +8,15 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations { [DebuggerDisplay("ItemCount: {ItemCount}, WordDeltaCount: {WordDeltaCount}, RegionIndexCount: {RegionIndexes.Length}")] - internal class ItemVariationData + internal sealed class ItemVariationData { /// - /// Count of “word” deltas. + /// Count of "word" deltas. /// private const int WordDeltaCountMask = 0x7FFF; /// - /// Flag indicating that “word” deltas are long (int32). + /// Flag indicating that "word" deltas are long (int32). /// private const int LongWordsMask = 0x8000; @@ -84,7 +84,7 @@ public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) // Logically, each DeltaSet record has regionIndexCount number of elements. The elements are represented using long and short types. // These are either int16 and int8, or int32 and int16, according to whether the LONG_WORDS flag is set. // The delta array has a sequence of deltas using the long type followed by a sequence of deltas using the short type. - bool longWords = (wordDeltaCount & LongWordsMask) == LongWordsMask; + bool longWords = (wordDeltaCount & LongWordsMask) != 0; int wordDeltas = wordDeltaCount & WordDeltaCountMask; uint[] longDeltas = new uint[wordDeltas]; for (int i = 0; i < wordDeltas; i++) From 8a609223cf958e836b4bbb5f0ce89b46acbe5143 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Thu, 10 Aug 2023 12:53:24 +0200 Subject: [PATCH 23/56] Make long delta int instead of uint and short delta short instead of ushort --- .../Variations/GlyphVariationProcessor.cs | 3 ++- .../Variations/ItemVariationData.cs | 21 +++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index bcbc506fb..8c73a5819 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -13,6 +13,7 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations /// and optical size without the designer needing to specify every exact style. /// /// Implementation is based on fontkit: + /// Docs for the item variations: /// internal class GlyphVariationProcessor { @@ -213,7 +214,7 @@ private int Delta(int outerIndex, int innerIndex) return 0; } - uint deltaSet = variationData.Deltas[innerIndex]; + int deltaSet = variationData.Deltas[innerIndex]; float[] blendVector = this.BlendVector(outerIndex); int netAdjustment = 0; for (int master = 0; master < variationData.RegionIndexes.Length; master++) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs index 4422dad50..0a129dd0d 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs @@ -7,6 +7,9 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations { + /// + /// Item variation data, docs: + /// [DebuggerDisplay("ItemCount: {ItemCount}, WordDeltaCount: {WordDeltaCount}, RegionIndexCount: {RegionIndexes.Length}")] internal sealed class ItemVariationData { @@ -20,7 +23,7 @@ internal sealed class ItemVariationData /// private const int LongWordsMask = 0x8000; - private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regionIndices, uint[] longDeltas, ushort[] shortDeltas) + private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regionIndices, int[] longDeltas, short[] shortDeltas) { this.ItemCount = itemCount; this.WordDeltaCount = wordDeltaCount; @@ -28,7 +31,7 @@ private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regi this.LongDeltas = longDeltas; this.ShortDeltas = shortDeltas; - this.Deltas = new uint[longDeltas.Length + shortDeltas.Length]; + this.Deltas = new int[longDeltas.Length + shortDeltas.Length]; int offset = 0; for (int i = 0; i < longDeltas.Length; i++) { @@ -47,11 +50,11 @@ private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regi public ushort[] RegionIndexes { get; } - public uint[] LongDeltas { get; } + public int[] LongDeltas { get; } - public ushort[] ShortDeltas { get; } + public short[] ShortDeltas { get; } - public uint[] Deltas { get; } + public int[] Deltas { get; } public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) { @@ -86,17 +89,17 @@ public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) // The delta array has a sequence of deltas using the long type followed by a sequence of deltas using the short type. bool longWords = (wordDeltaCount & LongWordsMask) != 0; int wordDeltas = wordDeltaCount & WordDeltaCountMask; - uint[] longDeltas = new uint[wordDeltas]; + int[] longDeltas = new int[wordDeltas]; for (int i = 0; i < wordDeltas; i++) { - longDeltas[i] = longWords ? reader.ReadUInt32() : reader.ReadUInt16(); + longDeltas[i] = longWords ? reader.ReadInt32() : reader.ReadInt16(); } int remaining = regionIndexCount - wordDeltas; - ushort[] shortDeltas = new ushort[remaining]; + short[] shortDeltas = new short[remaining]; for (int i = 0; i < remaining; i++) { - shortDeltas[i] = longWords ? reader.ReadUInt16() : reader.ReadUInt8(); + shortDeltas[i] = longWords ? reader.ReadInt16() : reader.ReadByte(); } return new ItemVariationData(itemCount, wordDeltaCount, regionIndexes, longDeltas, shortDeltas); From 5c4e888e16cb037f286cf61442a802f1f8b59c0a Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Thu, 10 Aug 2023 15:46:04 +0200 Subject: [PATCH 24/56] Use ReadSByte() instead of ReadByte() --- .../Tables/AdvancedTypographic/Variations/ItemVariationData.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs index 0a129dd0d..772614b43 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs @@ -99,7 +99,7 @@ public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) short[] shortDeltas = new short[remaining]; for (int i = 0; i < remaining; i++) { - shortDeltas[i] = longWords ? reader.ReadInt16() : reader.ReadByte(); + shortDeltas[i] = longWords ? reader.ReadInt16() : reader.ReadSByte(); } return new ItemVariationData(itemCount, wordDeltaCount, regionIndexes, longDeltas, shortDeltas); From 34e2c4a8f6a10451e378458a7d5141b0f3dedba9 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Thu, 10 Aug 2023 15:51:11 +0200 Subject: [PATCH 25/56] Rename longDeltas to regionDeltas --- .../Variations/ItemVariationData.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs index 772614b43..e3f77836b 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs @@ -23,19 +23,19 @@ internal sealed class ItemVariationData /// private const int LongWordsMask = 0x8000; - private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regionIndices, int[] longDeltas, short[] shortDeltas) + private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regionIndices, int[] regionDeltas, short[] shortDeltas) { this.ItemCount = itemCount; this.WordDeltaCount = wordDeltaCount; this.RegionIndexes = regionIndices; - this.LongDeltas = longDeltas; + this.RegionDeltas = regionDeltas; this.ShortDeltas = shortDeltas; - this.Deltas = new int[longDeltas.Length + shortDeltas.Length]; + this.Deltas = new int[regionDeltas.Length + shortDeltas.Length]; int offset = 0; - for (int i = 0; i < longDeltas.Length; i++) + for (int i = 0; i < regionDeltas.Length; i++) { - this.Deltas[offset++] = longDeltas[i]; + this.Deltas[offset++] = regionDeltas[i]; } for (int i = 0; i < shortDeltas.Length; i++) @@ -50,7 +50,7 @@ private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regi public ushort[] RegionIndexes { get; } - public int[] LongDeltas { get; } + public int[] RegionDeltas { get; } public short[] ShortDeltas { get; } @@ -89,10 +89,10 @@ public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) // The delta array has a sequence of deltas using the long type followed by a sequence of deltas using the short type. bool longWords = (wordDeltaCount & LongWordsMask) != 0; int wordDeltas = wordDeltaCount & WordDeltaCountMask; - int[] longDeltas = new int[wordDeltas]; + int[] regionDeltas = new int[wordDeltas]; for (int i = 0; i < wordDeltas; i++) { - longDeltas[i] = longWords ? reader.ReadInt32() : reader.ReadInt16(); + regionDeltas[i] = longWords ? reader.ReadInt32() : reader.ReadInt16(); } int remaining = regionIndexCount - wordDeltas; @@ -102,7 +102,7 @@ public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) shortDeltas[i] = longWords ? reader.ReadInt16() : reader.ReadSByte(); } - return new ItemVariationData(itemCount, wordDeltaCount, regionIndexes, longDeltas, shortDeltas); + return new ItemVariationData(itemCount, wordDeltaCount, regionIndexes, regionDeltas, shortDeltas); } /// From 5e2b1e3c774eb386f6923056466fcad5312462ed Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Thu, 10 Aug 2023 16:45:22 +0200 Subject: [PATCH 26/56] ItemVariationData has now a DeltaSet array with longDeltas and regionDeltas --- .../Variations/DeltaSet.cs | 42 +++++++++++++++++++ .../Variations/GlyphVariationProcessor.cs | 4 +- .../Variations/ItemVariationData.cs | 39 ++++------------- 3 files changed, 52 insertions(+), 33 deletions(-) create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSet.cs diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSet.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSet.cs new file mode 100644 index 000000000..3473908da --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSet.cs @@ -0,0 +1,42 @@ +// Copyright (c) Six Labors. +// Licensed under the Apache License, Version 2.0. + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +{ + internal class DeltaSet + { + public DeltaSet(BigEndianBinaryReader reader, int wordDeltas, bool longWords, ushort regionIndexCount) + { + this.ShortDeltas = new int[wordDeltas]; + for (int i = 0; i < wordDeltas; i++) + { + this.ShortDeltas[i] = longWords ? reader.ReadInt32() : reader.ReadInt16(); + } + + int remaining = regionIndexCount - wordDeltas; + this.RegionDeltas = new short[remaining]; + for (int i = 0; i < remaining; i++) + { + this.RegionDeltas[i] = longWords ? reader.ReadInt16() : reader.ReadSByte(); + } + + this.Deltas = new int[this.RegionDeltas.Length + this.ShortDeltas.Length]; + int offset = 0; + for (int i = 0; i < this.RegionDeltas.Length; i++) + { + this.Deltas[offset++] = this.RegionDeltas[i]; + } + + for (int i = 0; i < this.ShortDeltas.Length; i++) + { + this.Deltas[offset++] = this.ShortDeltas[i]; + } + } + + public short[] RegionDeltas { get; } + + public int[] ShortDeltas { get; } + + public int[] Deltas { get; } + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index 8c73a5819..2e2d2fe69 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -209,12 +209,12 @@ private int Delta(int outerIndex, int innerIndex) } ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; - if (innerIndex >= variationData.Deltas.Length) + if (innerIndex >= variationData.DeltaSets.Length) { return 0; } - int deltaSet = variationData.Deltas[innerIndex]; + DeltaSet deltaSet = variationData.DeltaSets[innerIndex]; float[] blendVector = this.BlendVector(outerIndex); int netAdjustment = 0; for (int master = 0; master < variationData.RegionIndexes.Length; master++) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs index e3f77836b..e43bf4243 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs @@ -23,25 +23,12 @@ internal sealed class ItemVariationData /// private const int LongWordsMask = 0x8000; - private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regionIndices, int[] regionDeltas, short[] shortDeltas) + private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regionIndices, DeltaSet[] deltaSets) { this.ItemCount = itemCount; this.WordDeltaCount = wordDeltaCount; this.RegionIndexes = regionIndices; - this.RegionDeltas = regionDeltas; - this.ShortDeltas = shortDeltas; - - this.Deltas = new int[regionDeltas.Length + shortDeltas.Length]; - int offset = 0; - for (int i = 0; i < regionDeltas.Length; i++) - { - this.Deltas[offset++] = regionDeltas[i]; - } - - for (int i = 0; i < shortDeltas.Length; i++) - { - this.Deltas[offset++] = shortDeltas[i]; - } + this.DeltaSets = deltaSets; } public ushort ItemCount { get; } @@ -50,11 +37,7 @@ private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regi public ushort[] RegionIndexes { get; } - public int[] RegionDeltas { get; } - - public short[] ShortDeltas { get; } - - public int[] Deltas { get; } + public DeltaSet[] DeltaSets { get; } public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) { @@ -89,20 +72,14 @@ public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) // The delta array has a sequence of deltas using the long type followed by a sequence of deltas using the short type. bool longWords = (wordDeltaCount & LongWordsMask) != 0; int wordDeltas = wordDeltaCount & WordDeltaCountMask; - int[] regionDeltas = new int[wordDeltas]; - for (int i = 0; i < wordDeltas; i++) - { - regionDeltas[i] = longWords ? reader.ReadInt32() : reader.ReadInt16(); - } - - int remaining = regionIndexCount - wordDeltas; - short[] shortDeltas = new short[remaining]; - for (int i = 0; i < remaining; i++) + var deltaSets = new DeltaSet[itemCount]; + for (int i = 0; i < itemCount; i++) { - shortDeltas[i] = longWords ? reader.ReadInt16() : reader.ReadSByte(); + var deltaSet = new DeltaSet(reader, wordDeltas, longWords, regionIndexCount); + deltaSets[i] = deltaSet; } - return new ItemVariationData(itemCount, wordDeltaCount, regionIndexes, regionDeltas, shortDeltas); + return new ItemVariationData(itemCount, wordDeltaCount, regionIndexes, deltaSets); } /// From 7f0e2c55206fa9661c64aedb18830094754155ed Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 11 Aug 2023 18:47:05 +1000 Subject: [PATCH 27/56] Fix delta concat order --- .../Variations/DeltaSet.cs | 9 ++++--- .../Fonts/RobotoFlex.ttf | Bin 0 -> 1755856 bytes .../Tables/Variations/VariationsTests.cs | 24 ++++++++++++++++++ tests/SixLabors.Fonts.Tests/TestFonts.cs | 2 ++ 4 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 tests/SixLabors.Fonts.Tests/Fonts/RobotoFlex.ttf create mode 100644 tests/SixLabors.Fonts.Tests/Tables/Variations/VariationsTests.cs diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSet.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSet.cs index 3473908da..9b6381699 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSet.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSet.cs @@ -22,15 +22,16 @@ public DeltaSet(BigEndianBinaryReader reader, int wordDeltas, bool longWords, us this.Deltas = new int[this.RegionDeltas.Length + this.ShortDeltas.Length]; int offset = 0; - for (int i = 0; i < this.RegionDeltas.Length; i++) - { - this.Deltas[offset++] = this.RegionDeltas[i]; - } for (int i = 0; i < this.ShortDeltas.Length; i++) { this.Deltas[offset++] = this.ShortDeltas[i]; } + + for (int i = 0; i < this.RegionDeltas.Length; i++) + { + this.Deltas[offset++] = this.RegionDeltas[i]; + } } public short[] RegionDeltas { get; } diff --git a/tests/SixLabors.Fonts.Tests/Fonts/RobotoFlex.ttf b/tests/SixLabors.Fonts.Tests/Fonts/RobotoFlex.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f7cda47832c2c31ef20f3e39e67881102226b490 GIT binary patch literal 1755856 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�}dmU z4j3??!@xrbr2`SH_EmO!1GYg-vqEeF>9^W!{wZ(ur&9f?Oindhtx0s(VK26THX!A+ z7n`j}17vps%`GE#t>3k)e8h;@DM+2!rRzST!JpD0g-|qNM9&d6h-`&U8wFn~9Vt8J zip_}>INu?g&1{A|;wao=u{qu2H*fxB^XcoyUq3yi;G2SiqLh@o?n)^@I0-+Kl#~K{ zK|ym$3Q;Vi3`k|B<|8=3EmJw=@~7OXsVM}r=bNmlR;29t`MXk6t=6NXnmd(KyZot>TFR7{SD2RO(rBBVh#ONm0K6%;HlTrKN+f?Ju+iZF0keq3oCHP>6uC$;23y2@P6CC^Vu>GvL~cq!RzU$q$|_d! zxM8$X2wLDMXttzS#FEtfy!`y0si`4gxA_Ro^xnB?dCt7Nsa+_Ri}h{bj^)n?XHdfYh75guDKyx zr!zFE2DMqQi>)^_RGVno#zZ6{;S z?!(_?UZqzENxgl7SxGNMy-=qQ3Nki^`LFBs3K|%=Zqh@0ZiMvW&9B$j1~oNGpf3gx z=jDB$z`~pNNfIxvwCHsBOK^8^i$1hk!AQs;RfR}oYzp!;M707$H>sYQC>@OzIxI+0 zA{+FL&X{%pcWXclKIzsFgYmz-HIcvtY72>C-qy6VG%M0W-+OD+g{VQn)j>f9spwl& zj~b#j>ROtju2@q5r)XlZtm_|@Tyw?4p_R=&TMvVa$AK&bSMDKgBxpiFYHq>M1~uw~ zo7Ia^O-e+(lM%2*2~s6`Od3LK8N-5Pi%vn0Da{QLux7YDVa@d+I&*oLQdQC?I3&8V zDYCKFsK53?ge*CJJ!aki{cwJC01c$9Gblk}ZliCUrE~)k!s^2VfJl95P&K9lkcQ@i zqJ-cxYE5AfZ+(E!W&n(F0gR7o&^Oe^$^gnI)CAX6bXNR09Ml&$eD+!eFHl7<5FRw( zLPW{Q>y(ht*owyJhUy6Yu(OdD{urzH`Zv-r`ecmrz+@#nvg^6JPBo?RVfWY*4*&2Z ziPu+t=QiCPcxOyeRT6IdUO;E?=#&;u2vO%Crh~*}$o64?znrF4`TDI;m~e*zh$8;x zSUQjd$b@V9H&;+eq%{BxF+!x_Ba|bhD)8SJB3ZXDTpX1*i+v(T*rvI%#%77Fh4`~t zbskM9uLgzp35TNPQvwp1;q?JR0|{jozMGjUGG&$=B=b}31+qY-NGHw$kax57kR6W{ zvKPfbvJ_Ub0hq&p4kF!yf5AoohoUfFqzU*&`h#={i!lnyjxWgR(h=>h5=QB!1C1i> z1a6cjWED8MH(+gm{_3OyjihR;L@Umgspzv4Gtiwn&}bifi}bU%zG$Qk?B+%>hBzC_ z?|Xg!1+4`dK#{LArvQurU<0p1ts?FKR)H^gqABxnYRV@ZK-qb>HHD&KB>v!|3p|{} z-}Cdq;3wcrP2Kd?qV|ydMI_v@#4wr!yp$aUOTpI>ATthS$#E}4uXd0Pmq7~iNa)

Tp6Fq@0> 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

-@jYcFhIL)Cq3eN4m0oOTrC7yNc+ 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뷃u%kq(pDE2B{QIlJSe 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%0DE>!~6{rj6kr&W0 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⁢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

!f&1fyQHHgvWEoMEXA;vYL{6)GX|zrx64p_U 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

JYy7^5qArh738XEfCJ# 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%0DP(smB{1^0DA0?fmK;&dE)M~0q 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

RJ=?mTm!vy5M^tB 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

HN+UIg+o>s{z4=($ z^&%AZ2VP2kh2PF#OYO>)bxQlS2eLYE8tn2$ipSYQHg9o&5X#S+ZV5M?)6pT^bUl!5 z2xncb@<%X$vpYOvx)kZuN${kJ7Gh2bRs_9@qXdGByDprhl(5I8O$CDX^=5!J;u zq8fgTsWclh_BOdJIX559&WH7O{f*R28C3J+TGk9`wKm7ohL-cmheDIQ#Ad1-?75L>#gZyqsw{z-#j%E1jGy zmK;vY{-|e@UtkUo)l;Ts! z!lzJxPr-vv!4n#-0-+L)8$`Sx5#5ZdbMPgU;!DWKmyi}JWS_~DLrxXO&;iEK0hP_V zB91FyF5`dUBTr?{;s2p*8^%0<<57^@e&TdS>Mub-%g+ z>)va6!@6&SO#SWIP3kEj%l@I>t)3!326-FK*>q(k$F0)+YB8}Ob!SR*kE))YstT(K zHf3iKO+J-kFW2kpS5#UTo5u{bj^zkR;Z5MXj&vR1)reM!f)!gXZc4_8 zzX;n48iO|^nipwV6xmpQrVw{baO@7!E;yrb6pH)LfPLB}Kn&gG%q|FKmxomg>HYfe z=P~!?ZxqcKXs8FyUTl?GW!<4()7Gu6RQISQ+|hlcQ&q0az`j8pEruE!aUD86WOr&2 zq2cE)swfTA@|*Z6EL`4yu}&D~;%!`K|D8-UB#vnJJy>OKFxMx3X`l{kC5i`)dPCz< zM$k!F74<(`$0{g=F4MlGUAd%E9n_w#qkPM=V(m*%YP-~vlP4u}P{&GrM>#;2@Rjq&{lh4EcF_d(sWC8zMM-WG z5nr*s!|Z}ip0s}`tAB$m+C|$r{Uj5I#N~gScmS8GM0=jcEZMz2J|~34<-64RoMQ^V zvpF`&3E@U-{zq~7I=cP8k`vJ@^qX;aZd^jc;caME<2^2lr-l;-ccxz zr)Oi7%ai)wNum!)^z=!hM>#oP24!o?6Z&9=2tPfcM5g%Z3B`V-V`b8@0qIzo^olvy zpg!bN!FriL;Nzzk^@oy?DIRP_9t9jKq*E6U(?6C(Plym~dRLuD0$mj_moa~Ec1fMy zwm-Y1j>SsHVx?oT((xhdSgdp`Ryy9=u-*ePL~U5Rl3H((g*(tGX3K&kuy~LKeW03a z)XI3R()w>?Q&aX-%O|;VAwpVP8bMcEhmmB`bh#vGANz%PyMR)OKN`)bvVisP$1_TM4fE?U`tB-;{oMHKD-iER5Q zRidu?Wg7#!N(uctWjpp^vVCd4Y?qyt?H`?yZBw3SQqm@WQrQ*&NF!P5`UL#$_X{}IhF%rchEn9G<;Ak)+f4q<75NTp zzg87Uw_Sw#76PuhdEGxk!q3#Bzdj%K8=j-3t5N7B^UzBs(|S)qFByhjaz3s1sF07* zLJ(_xo+_jDc5$o4?w^fbGD6MALZ8e@D&vDOw8{f$mCKRbakR?gXqBsZ<;SQ1v#_xw zZU1?cHV(;MfaH#(RhHngw62pmTQNGy2wK<4w661!z;VdqI9k^< zH4`l*Y5PwB^E8J4zWll{`LYczabAPBJ@P;Yl56^XX z-*SuUe)jitw!eR_TitC$Jg1z*OA!cS2=YIb9P11c2_xF7$Z)F4w8BTd$X_1Kdz!;T(Enuk*V_+S>Ut;>El^F?GAcbb)AaNaBf9?&mk50|*O-Krg9X&gG zCrs#tbpns`c?2>A_r8*IYSgfS0|%Cm8Z)M_@YI-5-9YVoMvaM*G&@+v2JH4;?5B?4 z06TL+SRhCzfll<PYtWrG{RQTO zIf5uU7gZGQ0~6KugNmYQ1ru#NksyjDoR@#PZYhKN2q<5At<471iDIl+Dq3Fjx2#wZ z&V6wY#)Q3VE$he;Wxd$2fB*i5wU&B^xGR58qW~PmvVNoo)FS!#+zpLbwxzyoC*+s>cR^3TDU^BaE-;o^C9`Dv_@N_4KDq>`_d8 zkeuv`5v~{8S6)6~KzaE-i8@sK%GEJ$vDa+H$`=)fb(`s{Q%kC`uFujwXHTh`*zO2x?TrP!cP49f5|Idqq_C7SL{I5o@^*xZ(J zTWk-PTqW1%5aXN{T~Q;vBqUy_<3&UAS47=5wjBer7ho>L@c59TE2RCk4ImtYG($VJ zVZ#QP$JejlvSt1HMPN}J#JI&_&5fyG``TL~k;oknCK4-Fv?rduyRRK}-tpIjdY-!! zvi4!s!-y_y`7fG-IFLFgopr*2K#CnEzkhKU9C1{0U-%rxg1?T@kA8_^-LL$w;Vip`|bKceZx~vJ+;Acknr7z=eTDOmn&BXOgUe?on28i zWuAHjw3?twx2fOgKU<5@W~-yVVBkNEbuaYv7~j9c7BWLMi_dR_K!^$!6*MZOp>{M&ASx`Z@@-AA?&V!XD= z&^B*2-1YL$Hmq_c`+H)k1P{vV&d;e%F#L`vHVXT*6r)w$3K?~1Ht%b6g;*~H(vH1~ z_yfW;SAe)c1mF$PR5S-;Imd&#hqp8C(_-KRV?gjD04XttI`J4oRdOb>K<}2UW<4O$ z<8i&G8>qWW>+Xpn7p(5ZC@z-_U|rn0pKeYb^Z(SK{rZmI$MRR|wm@Nre+oa+uh?&3Gi!2`2|gYFr0m zw&zAm@gPkspzfw!lMd6yLKe^&d~8Tkq?g^q@Ft{v*%%MZEEw&>g|-+jCkzhYTc$_lb&^qFs1-j_5M znWy{LeXwPxhJ%}>1ioZ>mMlA@G{Vf@a|mVHRFASp1$ij{ZleWZsuW;zk{-18!CnQo zoqRp{-o4**=s)}?Je}<9K5S1Z=h&Wn*q#XISE*<(fl!d&JapIdnBVVJ3E)*p2~AP% z&}_;X$i7K?5+h)i@vMaKtc1>bR{VHYQqf%ecve!;O_H9Ksr-&+E>US{E}}d8kc_lY zKEDq36Yf$E%i>{~MY(ubLb?3nVF@KYEFL^89-=c+(Nt1Hcv#R>#IxcF4Q4KP+Fhn& z^=8!=R@FR!*YxU!%CKOD9No95)nVm=eg50(+hH&~j?_8ot6?I%Rb7?YWYwGd!)m6H z1byx3$qsAhDYVV=&#$vFG0Jfk0<)Y^Fv>)wm2Ra+0N3d*mVapdIHHyt_%&+f=ayS+ zEz}6(-;l-?f5K()f(2eNi8>TrdUEj&s~(1h_%a=4R(-o>^Ee@TdVG?GQVLx zXnqQ766HvnT0VDfL|s{>U8a_3Ukod1Wze$O$8vxa0aihNaPBWx5p5S4(Hkhu;iz>a zHnzVBtPyGrzyFj3e6U@d>Z!@IIU4rrd%}_=^zACOnKtQg7~hCK{+1S?Sz+~8TKrCR z0-HhqIg?lK)8k?7v|L$dCs&5kH@W`o6?b>D9)B&h!aXaM+qKL7k%}jGrbh{DCc2vR z9DV;#qWFI07!FBKw-3>E`$w+zj3vvDo-bOoA3fjIXQdT+b*ZG4)~7z4$JeE*kY&-t ztC>HVL)y<Czf0He1Z1#cI3QqoyS7 zQQCz?Y?7T+VFg2mMis^x$#!qwmlPP*hx3wg@<~{;KGj#%?74jhR;oXdRn~3lrWraNmQ(47>7%kyAtA8ViwDl zK6?9hBlF&SNB3xY`pMrs_~4p*%gZ;A9*tJG&-~ax}r|zt-u2cBa!3Y_Z z>WDhxzGL%|WBc#Fu*#oE64}!AO0`Pe zA9lgi$ft_)$iL*U0S^+3eRAItHP=<(w=^L*`d}BhkEEQ58S)zmRsz#^juR60({o3BgDXW>#x?n`s&NS zxqjBHx}37s*7WoP2g>qG^8<$;*?6Gw=-|PPjZs5;`Q;klCHr3b!yjJQRY^~*ZwLkr zlC*E=={nt6Up#io^r>6727~N4dp7lWlf*LW9rLA^>TGBNNQ2~W82gD4Xy1CziWPTn zX}{(g`~T<)fD7(`?yRs1iHRc)vSzuqFd zef!%t(6QIKoWd!KrJ{v9p!2f-;>;S|h^i$^1KCA|ZcAkh7)UbM+GQ20-gVW?{QQ|e zt00RwLjb*@p&{yQ$j;7l8@^QH;`qOTE)~ul58bvqLSJ5!H*w@hvR9v;Sf1uN5-e^H z1I->$m0mA-nG*i7W7A?*8qw`uHHe~7ZG7g$JOc8^AQ*Kz=AmeM zZdNeZ1%IvE9~eOPW))(`mX;ddr86A`1>QMd&&;gLo49jlXXhPvOw3R8IA&YV-1peq z!-vD20wPs=;DH+7-5dYf-2Bor_g#K@U4JUlbA(o#8UqJmUF^L1=3o7;e!gm*z%{s%O0`El>wvxJXH`Uv?t?Zar!f#{Z_m$fY-wug&Yo4CpOty|FzHUg zWsR-zy;3-K;lc^UTefYh(?@|dOMmUPQErdl8*1A1_O`c%4uxn%bbYRPXg5Hpf%=3A zAAd(duGRRUMQv$0efnfdO5F+rj7W_yBNc3UN?OX{!*wh2GK0a4jI=bedBxikDc#PL zT+y-ZJIzB3Trzk_R#xtuAH?I;)iqU#pC^8j_=y8rniG|YpIhJe)God0Pj}t4v~I5T z-NbRG#zbSdBJo`Vwi{h9DT(+N4<@;*clNh17xBpKv{}Jns@>xc=%@8^`&2<50LVLt zZ3{Fl4e+T}SEWtVhBF~971~7KsAN|HJa`pICxNcXQw+fFeFV51H@(ez%k{9o}M#sS?(`yz8Pei_RCb5t^lOQyLw-F z<;552(tk>w2m%51pNQy zRuWI}Gsn`Us@8BdG!Tc|z@T7+YZZhwuSY5Xyg3|oIlP2|=*~VGkHHsmSjCU#uny_q zDe0fe!hjrieM*=jYINfKqUq(G%}0Awtn=9MF8(J9*jVPd|8dencC7ugEmFBptX_SR z0M94hRlcdgV*}b7H*DIp7IPH|osut4%8ZdtXJvb1W~Qx4)O^5eQK9YB3O3Hwhk^9{ z1uVaJyS|q2RoX7?dhIQ};Rx34dj`!>zmxY`J*vBY@2;?}F!bLOZkKtul3{bFcwc-mHC65A)C(5W1j;8C<>&XfhCcmtLqkp81(#k*rmfBkG7|C7f{LtI zPp=mfu$pWvtFQ)Z_gqn_)~dDI;=3xW;k1+&S{K$V^9;)XP3g}avy8{i!$)u7=|>om z*Vr;q6EI_4PG=`Ni&aumvtpT+;*GeW*VVL8sAfeDDU9OeU+;l?}R5UH#be91?zMlw%hdfcH*BQWF?PmSC{0WWyg+=TCW!&p+^q{>OOumz|lrJ zrO<$Du6QqYPd8R13he5th2Vn%8Rq*Cb>z$!3}`Nwo|5TwBF&~*UQWc2Z&(?^k{cSf zYZoiA#j#7oljgy6rv);T_oGG+raBF$BakL9$%^IpM3p7q=^A$nG#e-9BOD8ynMe$u z4HwmEea*U$xtq?dHPT}-r+A?pWRZ@?2`YnF4GpIj0~nxJjCXZQQ#y~6qu$-qdbEqj zBYc;?5H+p$7eH)D4;+hlcC~cJkmR?d?jXN?@DDz7w5DN2_9p!Fim_8JtsNiD5Vz24Ts}NiE-rw&F!6^5FINp%eY9uvkuXqJAyk ziB2R~EZD+0ht%l9u~<%YBOToc+XTNKPs{(fSS);f>TgD^8Y@y)3;V8(BvDnig zh3pXk@jtfs)v9=nt+c8eY!PIcjvN%#nU8uhxx<+i$pzIZs|j+gW#Eb^)?#%NEnm)q zIM$M_?936WoxNhVP}Zt(2DzeYE7V);ch@=Rv5z1TEz()5JVGg4s|IjfmdGgey+*{; zKFc!(Iqmp6Q@$)H&92WmXMNA+5BTT3=s}TKKN2ezTtT+VGyGRctP?F>M|Tz+t4OT7 zPhxHKAQJmQ`K3f+1!3hwVgvs|iFG5fVp$TqRKLWE4E`gD#d5`7xy=6u5_>o)vExNz z74gW=_sQ(1ZJ9+xMaE`;RjyIQe$i_7Jx+D=hY4+;RG<6URR9T5JvFvuN>R=l1u$Ji zR};}C-6^(e5#DoU*M31N%&tD^9U#)Hyfqc-Ra<^3Piww_1hDRgAi;%K0JXMLCo{1f0 zCavy3Rl$}@=6Oie7-q32&1J6Qdp^I_%oj5+X8siOLgovYFJjMWNaFdFGKKGCob`Al zsFGH95i%@TtNu7^VV|CeC2ABhya*W{#gU6R+fXb~L$O2+qlUw@ncM+0_FNCWo88pCWVY7u5f#7_n+T@USPLcgd+44I~(~g7zRfjU%&3Uug}59e~_d!cWU4H&K%NYy{mSr zr^CL~*%Q7~?l~R$4kB^T01pJL0ShO?W*O>63x-XbHtbWM8CnL{?-#F_;0(^1GH$fb z8a+;ZmYqHD0w_;Z7%zwzj9zLj!grkD`wer6xdF2eA6}~PRW2l2X>*uKJ`FFqdpU&{4X&G}W*?NO^ephs<@VGIY zCn-g*xMZRiLG<`3riJG1=I_jX<^c&VHxIG=NAnnbe@{MBVO2RE>QsN>m&^Oz*{9%< zu;XsE?o~s*Zn)o6?rF2651d*fS>x^JRI9DqEP+D6u^ba-0TolTYTj3akG0d;bEUk# zc|!7BLpM*Tq`1xFXZ&7SpCnI^^toVQtNgZDf?9OAyqiIToq-j0*JE&&1TFOiD44# zx_W%%v-p_T@_$}N!LcJpjvYPx;${poM-Q!UZF1xu^&dZ!brf?0qpqa0ji4O}UJCNE zvhrq5T)!zN=ef^+{+0IDtCr+^ZOhId<*4DjWWe3B>D$ufJ&?#k>@SXoSFL)u%35rV zw0`J_-gD2RRq)GRXZ_q?puM@_o;P>M=V-wkI z;SU?5zk7D{jZtdoq=2c5ca9ljsGWxA;^{kgS{6_~HNDb?4o-Jo0?MWx3n>hN`fO#Y z49%myp?y`|XnlosSA$J6ta;D`R%oB6sIm!5YHJO(#PCcUv}6fx&)R6-(X6bahX(ZQ zFwOSRvF0QBrJ5Pc*zK0)sZiw|BRViIq8ADc&9P(P92*;p#vgASNW%G+;l9xJcL(de zyR*}9I{{v5EG#te-8oolG_Z(%(%ow^E#-{4Jy1OZKkCFwywE#kSWd!|o>rLei47}Mlh|L=u%y&r0g1|dk-3t{{$HCb6C)C(=3=JXm@Y}2 zm#8-9X}Rt><^d>=Z!?>;qbDlO9p-HqW+zk1pwrko1T*G1JqS~i6jgw+t!UizLFJrw z>|l4?ot9BBCOvanfttnvz3q5nYP5D*aHQxW$bn8U#k6;|Hubh@fPJxDZPL26Cc57) z&m3TN*{WTGxU;KLD^sLY(3&U(BbL)?pH|FS^3L%rW=+tnnTCI2KyBWlZBf?C*86W` zZN}!!y0ycv-t1BnhU=4*Z^j4gRg>wPH^E^}>`{|@)aK_MTa~`fe1BmznU3k>;;tDz zYD}7XDuAA1bm;BS*?@#pFX z+F>i4*zSI;xx?K17_WlJZwB@=En1~Fsgd;ma)%wau3B~L9DRr}OrXvI76@94)QPo)p5HYqXR-c8FlX+x7Kt|N3`Lhj#4fxcTN&g@qe7?pRxr z`M?hKXZ8hx4R#o(tb?Uf0wj+5w`||O<&QUBe(~0=U#x_^TyqY@1s7Udts!TD?L2m@|7ezyM;EjnIM7<$zNV?M@!qXX%_kl^Jh$=ip+kX2wTlB0c8ivKFGwaGLv%XNFRyjWhj=30Wz|{03poIF5X=ei*+?&8hop%%U>FtMzt*@QZ=N=rY`_P?kqSGX8GxQj_Va zo~=1%bgT2+>Tj=W>s8mYj`#281VcUP=Ujn*y?b8egFU&!dYiAVP@5d{zH&)bg?d1* zRG*_771~vmm4>=1qR+nSDnkR}>5~Kh`@28<&ZJot>c+Ix+^?p!wii#*FR6HQmVL;1 z8j$;1H7lx(9v#i=ak+ZBz2<2^oW7pkZjTQR8CQqS)i??A>FHr;8IdehhSt+VL~ShQ zCJfdCFKFDWd%AkP%Ia~V=7Sf6!$1 zO4(2t*gXqN^emXsxr@3+OuvJud!+%&RSD0B-NpZ|P}lpjUGs+}RBle7^_mKGvuFN~ zFPT1Yn0-HTcDhE7mTWSP`fN@kcZJfoyL~PeX@VV=I~wrX9m2u_A~xt`>gB-E3BE07ytOs`U>j{`dYh}JUVRk+O-Dl zm7~0A^=d;~yOsx>z5R7lf4E7#F+h#EoO^MsT&LFLg=5GQmFFT&lh5veZ+&#trgfYp zt@YT-uAsMbll9PZqt@9)A0MW+Z?DnHo1@bCp0#16gpv`kDWS6wu;*f{1ciuOow<_v zy|LJ?k70H7p#OW&wgs`65}J+nowT~9ggzKsFz!J9&zM z#&%$Fuh2dIB)L*T=MKtB9j@)Z{YVo~0miBySkxaZ_*wIJn)4h?6Lz4m+WtPwQCL4L z%0O5zk%7LPSgmH*t`S`<%V?sPfIK<_y<)&@umAs;I}bQ3s`KxknOpa^?Y*$DOYcR% zh_bsNU~JeUYOr9UzKJpF-1l&@zY8^N4#P5D4)VkBif> z*h0a?S??5k5Kc_?wEXd(U*4h}V*jL^Dk!c4!cJJ1Xa(>FLHcca{h+>Fx^L?S$G1@q z@iY496T0@bA-7^+CaLPDVh#4Db=zRP)9KpCgSzr+Ww?7K8MZp7lR5eFUe`OFe7TFY z*?c)S)bnNE@t!rO+jsn{YL5Od)Ex00mzpD1i9P*mzi5>xHAifHMfxlHihrl?xUVp7 zBiz#}QRLkJ-_)F=$i9Nwhw*w7)NZ!KQ+!?#JjJOB(b88{nyJWKzWmX9rUdo<@%oY` z^(Cl1%R?CCS|sf6*XnKG|O^^mN^FOlc0FM z%b+Ew=g3ebek~QHNA9dgzD7mSJe;4)LnK4`ws=Lc_+0CTN48lfBq@viw33G3ss-Y; z|0{Qayq0y_l!A7{A}_uMdGS1@ zajlnYQ&`0Fwim5vKF3CZv!=l29El`u5NX6CKvFxHGe#mWc7IEG@eTABvuXXOA}_w0 z{^DBX#ScLBKcs%$guGZ{E+!)79oA*J=%By2lD^`*g&E}2gMV@wImko)o6WX2cZpjs zj=^Hyq0U!h3jOMoLW$ZqkP_<0@&4RvI7=@73(0>m%K)XlG`q~aLFPe(2Y%(H=O2Ff z;rl8p?`8A;(w#V)qE-F<2itJ2+xF(0Z{E9|o%N_VTyMPL#S`*qekkGC(MItGbb4Du z>EezPO(i9p}jUb0({2)jQU_K)e0+$#~|zY0Zz= zXXbE%n2<9Eetou+$bFsTZ@MY#=*G`Bpm}-JDCJYlQ)h=QV@Tq77`CXhZ(~U1h1F|i z#3*F;zEVZ7!3l)!F|$ixd&8awUfZ#0Q&m;fpB9A9>I#nZE9!vV+xY-lWG z1FyJ4LPO%Az_5-Ah&hV`=9ApwWSlX z52oRmryV#>Cfbq<4p2;5`~Ll{UeHPl`othB95dD7>XqT4oxAbA!>zTovyE&X-o1MV z&b&TP4$hT?eBAF&C+2h}&}}=@1`i$#1ly7&fiA*3exwl=wauFr>mt0w($dmlY0jFO z8bCbt+E15+?Fqv!yzs(MzCFPQRBJ|7R!(MCc3P$fN3QeFKYv8}F&=RU|E<<)c8-Q! zrDc7j{OnSG0vp%f*?csV-YMm`amkV;8=8p=m_}(ds;rW*>!F8UTep7wI@~OODRaWp zEBBy(@DDiSx-$GQnA0yKkiwYhH{N*Tg=Y*R8YPuy*UHx(3NOY449gpj4GO_E!=e=Z z(

?p>0D{tt;hr7wPwZbhqHdUI>X^c<+2${k!k(nWtj++b~ysG2%L|93ZHx!btL@ z>p<0=)f+cnz*fhP+Dq(-#rn-R7yLeH_5JtX|NdT$LSM0BIY9O|hv(byR?WQ+O@(MH zB8FoPwffEFA-#U_16Lq&{T^Vu=bOG*UF@ycY-?Tt@}*$tx5YNZBG&wItPa0FqD(PQ zms!8}<*M>TOrUHIpyjN0qVKso=ua(BS57?Z%I{7XIB-x=Y8*SthU(XjDKzvq)b5b3XPy!Q-;r~$snwF)qlVx#K8jd!hPd$fLc>$CeJLq?%>sV| z4$ucvQtAo0SliN!TPYE!do>;e6}2@XBjdErZQFOma2j{j*MI1lIMK5|)Tblb!A;GU z-Il+m2SU353ACq^@Rc6wM_W^KeYk(wc*3a@wrXNo={e_|Go`HTOg5uO6p#unjvX7N{CI*MJ7=DK_Suuw6^uX4-C$>$M?wjva{2A{_Vx~UDE%Z$v50^!-TTI+`m_^UT2(nF;Via!s5_m3|=_q_AJi$LD<`s>?hOKkZ(z;Lz4 z5Q%3V>j`)Mcp_U%`HVAtzmbU_?{lA%Q(awMba{V-Nnyv}6)RWugROd!)}6q%DW!mSri+bS z|3STRsLkzsm+%C&(t>?h29z?h_vybz0gQg|!3RIhzNkdq6&`BK!aS2qU`mQ>esWe; zF6GhER!iNbHArhePNQ=SFU=ezbGsYDu8|{~DW|~UP=YTBjC9S>TCauDk?CrB6RyHl z^_@7m5;W3GEE*ZMw`~VwGn5}~lW?1LM~@zlPHax z-(Q@S%ImucnXNaCB2_xHX5s+*=WQz!K3Z(oM)!TUW{E}&2O2h1Ui~vj*C4V8)3~K(lKR-b6F`$m;o3=mzo33nTbHzzSlY? zC&3l{xb_Mp4?R(z%*KsZ^^`oCBq=ZV%5(exJ+0TmAiB_O{%lG9*C&0+Fgz#y}09Pl_hG4>oRHq zj^<~bi{WjK_Csr)s!g_L2^n|^;@4MQ7jp_Ho_ijMvTncxuR?oYtepmq#PdJ`muR2Wjzb)qU0Jav1Z{*bLzwQE1A}4` zSbv5uT8!Qd!6S%`)}b(xy>z-HCV>hTyKb~M zf-iC6#P-~H~z=bwLm*^V0S?r^lM*zpm6OU(bVRn*kX#Rbg4NlS2|#U)~h3{C>_ zt~ibxc{aBjZA53{frAGR9OgN?TfDZ(k6n*;Ky-IFE7vYxPOywAC?xJMPqBz-0`TpN z7M+Q?z*uX(%KWwS!4E(DaLt-EQ&CU;ir`wKtocfF7Erur(t}R|9+n5B;tdNOchn(CLl(L+O%+SG;Kkq6t(; z{v@UP_3-d@D*+z|7o~P%H4S3b(@(FjJ#u*G;eNCx`}c2KZFW#4R=&1zV`z19QsNHm z@B%K^q_(9?+c2@VyB$t~DYr$14U2l4)6<)tpl@h$br1_EJw46o)?8tLP+d9CJpMTE z;6G12t)kj2YtB%AWZt1&V9goCNt^AY8Gqr07c0zodS=rM(Gg zb_%tl(jcHtsd^k4Q%y~YiX{Jx=ej%py0NjjX~>AzdBIn~oWepzf@q$VNbCQnq9OFz zL>XV6aE&`${I}zD&+wO9)^8&+%X9PR|8CXF74NLyN;6rEE7SUC?z!ildC1qaH{JlJ z(^)Y)Qu!d%n0ET;hhECWrC^Ic1`}FYeQP~BF zp4@`(j34#Al9G}kt5$iZO`USp*wLq?cs;2_eW#XWWM<{RI(hPQo!nrcDlznw6nx2o zNY+AuUq}mU9@L5Ev(J}0Fr-!g!3z7DJa;jiKQ2v}!b2wRI$KJZhy}=aO(F}K^Y}1! zI}yT7?e4`8O>Dl><|_SeX#}vPZ^Fx1L&YkU9{_}Q`bwe@MfF4)ZZ2WsTT1&8Ui>H( z4{<(cmSX|A_>aoGYw=LcMX$_ZMnv))mrLLw2+{)W(-1pi1W9SZOx<*MO1%#=lIi3G zMlWzI^bAC-MDk&VlC@5_fTqqEoeb|`Iy`}JR;DnNV9QEd&93ZG^<{wA)?lQfEfJe} zZa`N^HB_u@P3;;XKH-`KRoU%z>!_Y_8~l$l5gF<6eCjUB05+MY3m>d$?M+59<7OtU zDGKa|l3)ZjTZ;rJ4QNC(vLz${2;}(%}VwWb{1v)H-$Yx_0Hy@^EX!cm6M53kww>lED!;6b_eeYIX-@2DPHN_Ih zoY~Zw#7D~-s_O%LvlHm-sIYlrbu{U;Gg>%VzOtgknJ8vimlO4l2A6b;D(qkxE`Ai7 zT&3N$m|z@EI{+aLhQ#8{sB2>8s2Re4aUaR1yaFAM0m;dKrT_8UUP$~ADJWJD1IkHy zD_e53167&yc`0h0v(=UmvpV&;Ynl!n&kB)rle*t_LlC9e0!48 zGcpo8J-)VNOk4ttx#yEvi2t#Ce8GrwPH&^@5^S4zJE)4pV=CtN>uvO$)*r*Jb+lW( zr>1qtYq!H7P!yaB)UmKZ03h2Ked@T;K+c>JUMxi_leEq@yOa?7wvZ4#y(^CP;LFHF zRpHCH8XIFoM^g3>r}I2T?Fpy1DhSKw_4+7$T0Po2742x`Y)#86Y;Vs_5B1ShV;lKM z@HB9*6V*;&y*~X5`M_LMzIvFlOYe|eLw!;K`GoBAu6%ZSZa++P zI`1HQOW4Cs-R=%~+UpJ;tUbZ4HNaFf;{Jpe2gM_~6q(+1WO}7YsKz1F8;MMBGR@_1 zWO_pj6OqsF+VVKx~4&ZLxSbgUp*DLLk z>t!L8lOvhvfd&aN;lcM~ghtm9 z#`D_v47bD$T|-Cbrlw{M92|DlRPR4}^w9pAa>NEu8fIHUZ`5INkG{)+S1aCxXEI#8 zSKY&W7v{~j+M`%;IMUJyP^=I&jY&%Mf{o2s#qin&4;eam*ib^H5OX8s>QyMFXV_M` z4(z8PWGX+C_AQ1u<5px`zj22uDw(!yshmb0uR$(y5zf_?w8NavcmgOo*CP)3cIen za>f-hb-kMPa@M=~lU9!y&gsX;tosznl41YVFYdVQHp3pSoI8KM3L+42U;g2HuP$2j z+WQ}sB91mZ!RIDUKL4VN&MQ4F7=9QOL@6VfKv~;LiRN-bt2q#!3{Ih2{s04Nn{nBU z8HW9pS6_KWQF-SobFRDzG9@P7y?Od<%=jVw2P z@x+dDKp83Pv1?^46p=_G46s|7V&(dy8Y;T!PQoBpQYVC}nsP zd_IrQqBRROumKNIdegmO7#(;Hrt<7TgG#F#oXP393KO@q^YU|s4emQwGI0i(cw$L= zZfb$%)H~!$}n-C@5c%vFCRe3N2k8>f) z3kaJs(i})t-lSHk_W@LU1+I9V+ERYDgdj23U}?P=S^E-8-u|9?PyJO}wyZ?G;90eN z$(!%K_x9Uwsh>$*UZy<c}y5N?j2a7M_z<-?CY zUb%Al(xv4OdkO#JanTi75#PMgefy6!oPZJ<)iFxi@7Q-z6Ihd*D6yT6; zG9U4V?t1u%Cm((6vBzF~@%?GBezDwGV$2&$i236)mVXPmLGj2wr=Q+uTz1&C=DnRu zm+oA$yF7d3$gzWqhtRrMR8ll(IAjEojzk9*ah+_Wa2Q_K zhOHacf3}W5ag0ktuAGcB^78r(9UFGF*wG|y{mY_qYarsAH@1InViL#%p2o&K(+K=| z5pC=bXijFul?(I*KjQktHi8Lxs)&LR=-2A^H#ql{XA_jYu^oFS`T;z^eeH1bM3Y6n z;^KnpgWI=l+krK)tHte30l)JIEktX33~R1fIio~JyQ!PB5QB;XwY4qz1H!KDTWg6G zw_{~_HnCe?rGwS-5m8&*v-GN+ro7!Q7oTDb3bN1QOZ^!N}>|DEQ@w@N7jq}&f z_=uM>ANCF!;IlgbZFGzs`_we;TJ0w7*V-IywiebZnIn9}yNr<5_Z&o>^sXhUT$?dD z>^fBQ@S;V3SiiI!5Q-9Wn0N5_(W9nLIrGdj>*}tWh9KcG<|~MNH<>U=%t1BR2+7#> zQQQCg^rt^BRnMqJVX>0F(fnWi?z<`48RmuM-sa{%*gZ+atLxRP!0=w#ais3}md)F? zZNb=(He(bv#~}+`SHdk#rOnun|HU&5mY+f+_lep7UDY==0&@xqVaQDkDc~X!d|siG zdP;^E7mUW-0Xj-VJCrKvwXM>vw=_3~+*pozXz&u;LOrof~rJy!yuLufF={w_lg^7N;A1g41IUxt-081fgtiYPZgB6B(FlZ{d8W zQ%u*K3FQypi^KTCKq2Zx$#MtnSjcHe-o$k6D-+%D>pE6{3}OkEK~zq$)oKlCZg_)w zhs(h*FGkJx5!eV7L~BcV*x^hlD9CVEINA@?)EsKBFkFlvuus%G%3XHpKp6^2_G(&N z85R=vC*&?*$Urr)^T7a#Ww;DyCZ?{&rI}(-0jiMqbE+(wOHqaJP?JhPBcIe2_7c{3XezblfSL{D3YYTyJ>$0 z^v)_M$S>|&{_sgFvTj=#u_ALYB9J%=VhiJ9M9?#if)0QEZLG*7qK9}w3PP8shb@dC zbV(cqv4wFldT=p%==R)_L$hh2$EvA6`5eodwN)r>5LxqFIbVe7)1y|my1!v zH;JR*Vl?qh5xPD!ETa*vW(G#-aWj<}@gy|>NgatH*lO#XQjB3XVU&X97No2iRAWU~ z`mbR>D|$}EaQ~788E~_55*)0qC8lV#!qMuQCyk0DR%Je;Lg2UX*0s|6jnxjv&-m5P zIM=dUlczE?=-SBhg8FIn{1rj%AZ9QNyDpt|dDqQLwG3@F`zLc|-TJMO+B#mc(l97+!rmx1h-BiFo}&}f@wDMN!!XV){1WbV5t@VZjbh$zMBy>bTNg2a79pi2|BTMW-IAgmY{veT~vCFa&)OxtflMl71HesZ;Jxx&@vls2_wWAw3`N;^ck0_N=^oDfJ&D1Se^ep&;>iPvwh_K#DRN$wpt~ z9Zt3hEQz#-nJlMcoh8u|26N6-m4r=KCM|dlEqFe(ngy-qBmc=q{!;|44uMvQ$i|Yw zlBE2|e{wjQ1g#E0{*!~GrXTVjFY+Hh@*jzYOk@P*_?GgYES}nznjoIWV#SqDZI>7| zeWBDMQoPu8`H}zR(1PdCg6Cq>m5W3t7aEnw3x4E3ImmzfsyE9R_5&<_juB%H*^i&Q z`H}tjk^Q8TnxhJN|6;ZSlyCa3Lpkf#?N~X=qY(b6Lj;^$orV>bp>{@8UYS-#A+OeM zyKRcvqDjDt1!j#1c(fW-q9qxInv5DuKl{~J4Rv-z85ls>JJ8Q*(yZNSYanheA_wC> z5x_iS@7o7vPj(-)A-e)#NXC9B>N@(P>5e!}q8mz)J1ypPaUNGYCy~oNdK7w>siq z-#g{g^mKQ@XYI!kmT(Av+TFYHtc^H-8)Sej%3QLlrv!u6PWZl3>>4Rc}eVUpv9+UYk+6>G48Ew53Y&M-vReL+!YNgaiik^mT3D-1i=1@-q=Sn) zgj$ZGVJE_Dq{n(i&~C*#wsoi$)1a=1W(8KR*(hgFG1vC$n}=X+(~fOAQm$U&O^XgP z&@xnN#P|N)?aQmH?SKAcr}!AE#T-0>b_E{Lj3}^~u6ETNtf^Uh|NS-PCFTW&q1CzO z`^J?F9<6DE$Bi3mT?AU3U8}bwt!5{$E3B8Q)m zKZm-V2EXo5!U@&V*zWS!RD0yUgri%kH+YY%L7pdaCBu#iYttq})khL?dOI*8=;+hi zS+05;_f3iw$8r&cOwnF=VUl@K?3CCP^Gv&VhC*2*4MWFaFRWsb#H@m{k^uvz_e&dN z33T$gDXw|Io0V!)wJYpbTrqRz?WNjn+9i&wXE844eJ|t`*lOXlV-dpU@k3=j=RPp+ zoJV0cJhew7_o+t1)`-kO$p5~CM%8`-S0EK_joeqEw#>axOuBA#{dH+a$F9oRtND&I zAq!ofJBfks&lr*Y4?_7#)U$c$o`2&&OW&yO;j!C&eBHT;y)p_LJ)WjRdVvSFSqb=wX-XpgCa1!G&U7LsOi1X2tY8ByAFYVr)gE=BhwK1Fo}nU#@WYb#?f6k>1)1b%mK$Oj1pXQVvkp=1s{HBs0EP(A4*_TZ^el(V&HAcgfng=q4A*Bs@gXN z4jqbLfV!4&0IDVOImVKB`v{Wqe{!5Ak(Fee*3)OfLoeTrq}+3yCVlXKYMdtCJ}!EB z;YclS9}3<=Qs!SzZyyJ}yraiBO*qmoA}KrQ?R9$lf8_1+bx6t%dVihX-$Cy$>>(EY zan3HJC283ty+wy@B}tsvXGjXs7st;rZ>Pikd`x1hnr^;yG9BaJv1wlgrW_KMFGNRX z-ApT5+y#HE66vC}6+F5a1XFm!{`5X<{4{5pwkIsvQy0^RaK6P2Qy-YKx;DbEI^_H< zwCNQ=EyrrSspx|5D*^1Ms)0@V9C3x4pk5e>(`u z9|gS)g7OE$-wuZIPlW~tL-_;YLX+Tcz3{h!xSR^*!tgSoI*ck=3A)#=aTL&a=!}h9e2wL}d^C-C1Fq;GLE!@RZdH z;zq0E%pG!8SMO=*=rj#qM}5=r+QWyElM4z!J2L{Jh#WM?&#nB~3j9mwYws=DTwB*h zAF^jRcoBD^g#59kIdz+Ev}wDIVB-EwC>1wu^arq{iQ?c;>CDQ>@j3{P;_0k!*}iAb z-u(RCyTd`Z$A&fg&RsSP4Q-jgDLeKZIIy>a@I-dI-oIbb`t?ak#K6hUzf`7jVxEAc zjBe4n@12Jpdg%8LPX-Og7iysls+fu{OBV~ zb680{gi83;IVwits8MJ%X3VJ6o_)45sM$N`Xs!0yq6$>V#WfWNSmA&8E)sO2g3YnP zI?n>CB8=qJtw$3GK%+6t^@&w^g%S7&0pXz|4JS@Cw7v&JROy6uD^B;>4WGl7)}KE$ zOcJYr@o$1I#%&IloR{uJpew=R(0%Ah2|fUO(I7-AOnZw6nU6F!VqmtLzPeI1lmq7A z>1>S*$$RG9L$8GxD?z~>bKYK0 zow?bW$w_`rZEJ3-Uj502v19k|M*Nt)u{qf>Y`bE|08w^i@Y;4qSZs!?Yq0ljXn3s;hITBQ4lSA3sj+8yebGdpi&yclhVr`_iXd_t(}Qtls&`-Lof~cSPHno1@L> z=AJTwzImItc}ytj29Dn`h{R(!*M=;V^hNk z9?{$Y3~J&XKe*=Hvrj87C@3C1VcI1#Zk&X5!)e+`ZDg=Sdw?r!Q9eauBRXjqML6k7 zBOt0M)EU-9D^j_@a7fd^9*iFU0%G-#4UL@R5WM6CL2suRLJ;CfCK*dqF0h??$|-q~ zg!Dm!htrSeH4EvBTypR z#Xx3OR%XgH<#tylZr-r*1ayqyX4CN_n?Kt;Nt~iER{a%}4$`}fb!%}7tW zk<3@7Kl|*nFE0Ib{o1uFR=xegbI(0@6hjI+cwR08`KFF)>SLZ!TzJ}q3FAgP z#TKBi|IIfm({sE&SJjcG+S=pM?bU6X^VqTadV)U${TB=+qF5l%E_QXNpE?`+0MU(F z!KY#ka~5C;9bzm`OSK@Fh?SeDSH)B$hTSaRH|Q1}D_T}vqq)Vnt#X00qrC&|7~Wjy zz9pDjd%Md;EsL6rVZa_13(5`}eM|R^=m1*Lbq`(w3CB7J&CoOARR9V z`j1$8AbL-x+C#IUU<~H)0FwVq)*Cu>Edhd-cwU&O1^JpW!}(Q-37`k-QaEG_n>JfC zW;1nEQ{uT7Of-=xwYIl$a{_!>cMkeu4ob}JblA~ur%IW3N_8W^mYmdt#YN=;Ow}>G zkYb}Z(PmSjIvTMZK2|3g1?+)FmFtR9s27O=u>iDX_L1uhP~xa}gbEAU+KHziX9dI) zK}^iKosVdcq=^?c9({0T-wdbNp-SO^&SV*8aY8y)Yq~09nac9@v0-FH(;dUh0bhsl zC(r$VAH&N5UnhDs!72V?3@;~qoep28!`J;I8T)?%gVRtS8Rdu(7RlO_i0vhCd*y~Y zS9W6?yTO6k|B38dapKwj!>KEPmqe3Cu*b@Z;k82UW?n99?GN4ejNij3iT0NBrprP7 zlAZ?*HQTz*!YL*zhUzP;TP0B=Aef=%SsTHh&=}0JtsGFF7pHh#+UE zr+c2<<7wY;_x~N;b?X@gt6kz_b+>{44XpN_ZQvK_&hcMs1Gmffyiz``X%QPT7ZT2q zgxG=Z&&>Xd77>)h4tJ-0)wf257(Wa@BeyYSRouN2|N6hX3JQdhy2xIq1wJ{&Zy=c6 z9A7O*4C1^B0lq3Jzn2wv|Mt^K8uZW)ccZsEkeLX2drvIvuZz+4P5R+(8tm?eMc3`1 z9~Q}?SABKc_n$&<7cHT*_99sn8uTce)$(H3LF#{}9}cPQMui$CR2amDK|O7eVuiYl zMi2pD2x7z@?skhFyX0Rb<|P(M@|Vynhd-C2bsg@x2|<$bU&L!6sImfGH`>CdOi`sfOX%~$+zIOquI0c-l|$i z)_SFt7TsFAuL$wNU6L7c@$DxSoB*Puhp(9g{RWVX2heGIpx*%Wn^>5@lE@O5`K1(= zDp%n!mcc5aaH?__PEr2C@thyGO7a)>VLwijNzi0sp_e6vrAIVQ`r`ooabn>}wqK6M z>4CNc9mE4|30*O?WE;0EautG0RXBlbeJmL)9+t0;#+it$&Q&;&r9X>A(2ZT={z-t1WvRw2nF{+mGzTrttr_2sB?D+5Pt- z(7Y$Cf?6nC!d=$x-LhLEyC9Ps)*|7OIQ3r~-~IPm zLgWSAH2DMh(&`aOD3e`tNcTsEAiCrV<{jN>|LpT)@gX?ZcQA6){?>Xbn(8TNt;ZvMJcIMcqS>CvejoPjEXm;JX&m)(eF{qw=l8-YGM{rs z@hru5BtF1{NIw;w`Z%^jnF~lSA|GO#F$Ae*7SdXqx)`dM06#pLah9Bs&yn8TRdRj` zdh9W1=EuP?k0C{{_lBa!7VN#DqzqL77C&!zA=`B8O~qGtDEjO^yvXQ@`__Q!kvth%Dj2+ASTPMoq!xl@_*>?O)FR?y5Kd#V3R(_>I1PrK2M_MqvgWaQlhOT-$MGm^{w6VW z*Zc>6|KK6DV8LT=Zdg;JO3d+wGg&lL9xdb=SB!^Da-VUAvsbU&WF{O)WxC(;5u}h8YWK-p>rz{69YO z_~VcKalYZ)H>?0%`hwQIls2sL}c&zg?Z?ATFL+XObR;asxhIaKn02tQV?*F1lJ z8R1BVnZFK%=iYz+@1K0OS>1pClglvZB6=sI+Lo|nuMY%(>()U>Yr+*Cw2W`R{qg!8JN6zA=^Hj|h^Sd}9C@dH_q*c@ zL(Z8qXUcaAR}er*Z&qz#-K|{nDzp`EPqM6Fe{TNDChp*q7*70LQgo2TA{B(fq zEV2fm83JpMq1-tX&O3N;U+qD=ul3D0>QUM@)Ezw*^PJclZ9Ujnr(QFhP3_<=0Mzcv z%9KD1S=oj&@e>>R+J-Qy?u^v*!I_x@(j0k(dAa$%e!ZJBy+o%RoJ+th*WQ*^6xA^R z`S;{b89ux;yUK9hbMHI*_U)?)SKx8k`f^H&9dL`Ps;L-$&T(CTtrW^Nv+go-%+xG* zV3<26;7Ur#$jVD=RejPr_cr@9I&;^?qep6w*6$c-xEl8Ggw{O`hO=hlYZUTl;XGaM zNGx+~F}>P-aAB+HYM?#y*EQgm&{bGf;_4P^h6y4ca9=CKsR8C|)2^XAQ4 zq_%jY$98`5>7O-6GJaJ42Gx*u$pyuFXVi!K)AeR^3xRk)+Ge;u*uMYJq5WIlHJne3 z_z0&OYm`v!`5YIMb>QiyE0qWOoLd8v+MY?bIRE z$j!U5@>AQJTL`W9cDZ(Zq~Tik{_4N|ZS@E1@az2RvjBX){p~KwAzU$yBA}U`T4Fcg zNq86xe=j5a=H~EYs#iJjWs*I^hZGbS56>@710^LB;GbUM#~`fyf`Q)~bxK-t(U4)q zMLE5S{i?V)zp!Xv0b+RPez`+)TgbHn@WCD1*Do=gfBox+;=C-a)a!rw^OI+rmzbkt z1+jsEWckc2B2(p=h2|i0Jb_coh)OlYyvRQL$yZ-jC9zb)wZBP#UYu7Mu1kJ!-gm!y z-VKP=%;}ET-amfqSZz3O-@g6zC+ZVAcJH=nEsc%Gs(035%hGt{MBM>(m>OZ_#u0K2 z>)$&+zjxnZ1_57D2%{2qOrJjehd;dTY`TIun8RgYKk}IR6U$@jK8&P(tL?2XC($@Sld4glFFMhjDHjp6$2le)u)>z1!IoZAWxw6?S~h0*(qI7Oq}(vn59pPc4V z_{5@owS^y>ozQp$tK_=6+9L=sD0)o`Kb8Zq2s_R;`drcGYBm++60f++a}+ZgCP$|V zG~!;0PiiBl*+gU98lL0A0M(idz*0LSltg`F{o@;Vt=+hF(~hdD>fL*E-XYbmyKLM4Xq19l@eA8)fBoxAr2vBclxlIerejuAd@pu_6~rKq`8^)+0*=tDA7V_OW@!Gn9{cffG&&a(CH-McVsY;}p> zIW?2O%OVB{4I`>SfI z_8zKwzWI^g{q5NCm7CRQ!v&Bc%tE6VXN>Qe)2KHXHL`159|O> z)9Jn3lWUqA zn!v7TXf~X&2ApWI2MJ|Es*>GRf3iPBa4CYO`TP#G+zlFOva;l4;IXS_R+QCGuM)n<3Wraya}ios2~2;RmpX4-1Bq7Sk(T zCT`F?%dAlC<(f(O8?Y3F&^jqX!m2Ydj?#Xsw93aQN+GUeE`_OCE4D*TxG%J}9-+kB zc!%TlN9ya396x?n4h<;nXZvxLbnp-cX~z#9Xjd@t(7TKCthSC-yt#8)_*!PWkz5C6 zEmK3QQ#C2UP3a8(PRq)Q` z@`(NL^lUoe&*f^}3q#GO1>TrV9c-@U7Er35hDF8fRUYK&TFE1VdM|O8l}c4=`eCMm z`c{~tcxK^ddSt_5T(%w3HmYEW_5(64PsmYyWs@0qV^~FR+V#B0=?ASVcJI(qD3VTk zrXDxr$sn4svb=DuY_WH8vJS{eR%+Mg`2R#C5TW>EEeel|G9VBux?fP6(@pW6^6kY(1WJ1_PVqt29H#(l=i9ExiB&Q7 z#w$jHRE#*uGbXp{Mnk-A)SRpvk63lXBFB@Vbfj)%O5F%TzcS3=f2~vvtFEYde^)sy zO5bxxb3*Ai#cM`dyk_LaYsPk|89|MLp4@9G8gf4LXvsuQQj>%^1Y zb>i0UUZAT^%=^1Kks7ZPUA@4+w@w_EI$@EjGfyi(s3|=G&UkXNWl#NEccJBU zX|}uji=H;iPW8`imfiFh;>G6c;*i{`5C84_PllQpb|H&TfI~{?!6CVk#e0y&`;f(p zUCO^ppMz%^_Z3PXLLRc%#%)@B)C@ObtuNXvOAH;SrE&1F&0vwz`7&CLU~Wp?kT^R3 za^0{2GgoU=230|cS{tN-1htPp4hJRX>1{#jJ1T?vopE+4egtq|Wu-1%YE_rYpoTo0 zbz2KAhgx|h7uq&zuUm!JF_-wWDmYUm~^gSM?(sS|8RjG&_kYTx-zm^;}# z=TRrv9z9B>VC%HpCFE#OuPlVj;ias95^|kPIB{G6z4!ASc}mdMrw`o+`MPwcRZ&RU zQ9@0LU#b7_hup{3{mkwhV%_s8qL`ot5MHoE{fXEB$0Y|N7g2G7jI6>z+Z9((dr14+ z-{@50#iKu5!`)8l`e)M?Awvji0|#<;&2%bJ_w6eU7%DPs#@D9o1CGl&{vr(edYsDP zO0KXrveV<>=Vw(4H#nXMQ*L#8VJf`R2z4D^n`amHRX0F47eV6_vEUko)=E%m&w}$R zfb+Tuj%y;;TSE%Rt3HKiz;}&RmrzTtrIuVmE%`OIKOKZdpFiwe}Bt0!^fA50~r%kmY|)zpw*LdT_rL!kRC@@=DS)YTQ#kV~i` zy}LAAz0h!7MEx0q<<~{jiZU#}BnN{SH{@|vF&eI-!T^h34aE9uD4MN7XtoBS+3JsG zYY>{PLF81TO7&x$03yHVv(FB!U9n=tCkH`hgHDVLc++A0Y?;1NYE8oH!Ii3a9*yo zv(}_{?;ubF_>eSPiCXV&ZeF)!$&z)=%~LJcxE3uzX2oDazomehx?XGk-X!teWL_R5 zJb9Ye5yh2=p>@=WA6AL^8*Q1pOwA)!@jP3p?LAe7Zt3Ud&z1hR8h06|3$z}i&Uw|`hTZ6KYrm_ggR@fKlR4KTpBBK3c+@5WJhKh54-QYc|y8M zpK$Y?XOX*4f$aO#%I7C)2atU)IPaWr^Mp)KW{KJ#%;t22BPh;dT#2hAF-U+e5V>k* z2IXP>xT*Chxjn=B^i%tJ`ki|I%wNtt|NKj@zx4cb#+^EDc;WC8RS``0bVw062pkb# zAxk8s#JtJ_uEtB~k6r>`<81RP=F5RAEVbs#*q8sm(C5vYHwjUx{JqM8;+R*)UuI1> z1BX$rH)??hex*&JTej~>msNx4UdGr&Bv zN?8gzUdF(&Yqs>Fs;Y*jhN`NfqJS?@RJ8AJ2dlEblZ||@0#8iW+i%;aOqo*ncBv{? z__1>8YolDitWj9CkM8!%3Vrtw`Vf-h1y&n>LMgwXJwscwsV<6TYj%Dsj78 z3fwV!g<3J2uxnGzBy*}Z8-$l6+w7fcC)<0$-#0^;yoJeKhzn_%*rTPA#)_ZeCicV{ z#Vd_Aa%8RKziiRFtz|144u>Cr^yhH1$OFlbKDtc}xbC{^9)08y)Q{X?z51*>hUA7MX^Q12m>%$ zuc@gilfSV=vO9^AnTq}9B1&A|nTeI`P}s67QXrb$3cz83#^B}BXW<}=ZXQofag`l9 zbey%Dn!*ROz@J$Ok}Ush$yZ!)`jpeJxZ>xx{QPG>`PmgESC&jGQE%Lz7*GOt3f8+# zbIDT)X@M7HnkOkO$zxacw7Uo94jbm}O*n@>zF|<$8U2XC)BlXzGfp2eWXS1fWMz3r zj`aHS^YeY`ETi1vGFy>~8IG9pw<&ihIVIhzBt`|Q%(}WG9m<;$9*79}cni%%%W;t= zPZ*0zVeEvA31f0|bH_~J7{4||?QLoZ&6&dyONgF8ByHq$bm%9d2?+N*9%44pgiy6u zcPNJ^?4L1n=J>N9xM|~O&YUp=MX>#+x7~KzEoF%1XYl8epa1;lmyzn7F@qDv&nhV? zxt1Q_EuO%m0#TedYmFRHYjyfbKt^Y{+*q=uW-j$=*|O3ho$TO2EPb>atFCj0zj*S2?EiFr%7e_CyARU`7x zhN{}yw6r2WW$Pb@xbInIepl$RJNpY*?KO-#T3W+aPs)^+0i{*JAV9l*88=*@$r_8#vHM&k;6*Y zM4aq)Bi}|Ak7qG!q9nM(3k`8(Bwzq-zmX%td+VY@hnh7%M2Y`AYoBU56kcc_GJJS} zJ=EJ?FnsusArrrM)m2x0Z{m>CFQYIoJH21O!c$J^CCI`~b(Qge=JbW!U>4J;vJNR{ zcyjEy*lWxS%?l*5)D`9hv4vK`a~yaD0-qWEe)K9(lV9Qgi_y;LtmyU8A4EHe&?INP zY@PeEIa8-N!0fQ-BLV8HL+-XWdOb|Pp6 zN(!Os!jeEqK91b^C4m5`+hdePOyxp5^6pBS9P2~txTaDf;-x(s%+*-=BrtRdoTMJN zUxP~bn#;TYTH6BvlQ63TastZ;Kmds?b49l%ibkDp$CVl|#ogb|%76EJklJ-Pys%u4 z0WhWOV(Wnd#;+q(hs0QO&xG(otG(1D+65~p!0K^QYHFH0JDR}|Tefm-&9a(C)wt|_ ze<%`pZ#Tv(yWWdLLZS1_bI?K$v*v;9hiKI^%+swo!#vA7d-nUm;0FyWSFSuk-|aNQ zHWwpMEzX=oiCaKl7+Y-nx<=Fs6Y z>|l0uG>UoBz&(5Rd~yh_^Px}J+tad>h;Tbw_Oz^LyS{~E{0L{z(uhc*909OBq7&ka zVnAaiQBWub)=|Q(gy9@L_uaR6^{!pJR=slHebdd~Fkgjv)o^Q`%>Hl8nIJr0YRyy3 znH2TQvuD4u66=N)6m@`}r~%CgN-c-38vM9NBsU)=zDT^s!1yCZbg}Sc^?{bd{IFV} zZ{50ehI&$)FA3@c=JT`((&k8<8?K+GvHZT3b3U74uXK!=lc}nK#$mXUsY}YjH*zwl-^>0;kxLR=a z+|;*y8gaMcoZwJx9|!v47Z6R3#rLroH5&m+~|4lFbZ zz@{ki&PZ({9*fsT8_yxD;f}Z5qQBO#w;?hb$9XY13-xPQDmUK{b*3NM}20S|82R_GTy9P(dx#MS5>HkZv2ZH-dQ zv~gZm*wL6!h$F!eKoy%Qaha?xI4VJ7Y?ytR&Gct%S+^*+tE*RIG(hKLO{p zf#!}FJPL6;SeufCTdhKH4zN=D2B!r4HV5(>zKeVwUH7vi0f&Tl zjdjKU4ajo4mx88IZB~D<^y59+9@~MxEqlK@x@+Ix_U-zhs#Dqa z;_@Ev+Zn|%89A~RMwcj2v^Gp|I#wEhEu1M|Kt`J;wrM=rv_6SVM_X-mBNmba!jOew zNX{Zz1Co`9eDa-uw&8lKWDry6R@cNw>NG`#F8v$rv-}5W$!v>LChIoS>6J$_K0Bgi z^ZAS%m&=~59U&osXm2Upkb1|OYDp*6-|3`YP^R1zM!37{L({F=X;pY1)_f`6r<_(= zUP&^kxo{Forb1aM+<~M7)fo#fJZaC~joIM-C!Rez?Vw;b*pb=@dXk`;X*~hpdO( zE^F<)?t95)77_#xh*%e301t(i;3(STA%=QbZt*;4nBqCl`Wi_{k-MpFR>IBJ`i7pD z^|-?~+KqdG2KeroNak}3N3e`Ww%k`06gpLUVFF7cX_?B83^Bd16dnICmXltf$;c4{ zP+LIt;kcb`GIB+YeJ@K2OOo;y_F~EB*eLF+NE?X_I;h5lr?QM=8LE7R1xOo*{hXvr(!aT0cX6eoT7?oNWVDWP-owRTj#JL+V)x1AiCZpg<1a83ZR=mXH&=zK3Ji$8X7~D}mY<*%-{}Al%&l6W9CVo2Xcu=2+>{*o(Q|DZK zLrWQJi;rl08w`f;vFT3Tfol+~=x3kbQG8i#<{d$>se%c4_6YA2-0d#d!hruhcH6yGMNL6{xEg-) z?T0ir_S^0c>T9V4pBG8bM2exYQI^O(?B?Xi61m6O*?#a~O!Wy;H}M4cy!fMc;HJ7? zd+x>3=r5wT+6r{ceYvgmfgQtgas~{zIw<^rF-iMhyh|^}b9Kh75)EB~0Os)k`Yjgg zSzQGrkEQcrA(b07HA#@$$UTlw`3o=T5X&t=9Z_(iFq@=pbk6c<+hqBgipXEEKuSohlOF+!p zqFTJxDO(3t$6xgsdOYXYF+)3cOdd~P-C=p@%Hsuo35VT#;vPQ(Y4^s`?)67^GLRlw z5HG(&-z12a{n1GFqE#GByBDC%3()4d3(Hhu;Z)j@DQFYMbIn+lMlU;vwr>!9^&r~5 zF)EID*`Jn6a3WK=ODg)4!L)r7(Sh`%mp#oo^HkE~h?l9NL!s>(L?4+-+b5Cv2GRZr z4~bJL{e36o<4?u0Tw^!UdVIP zNgv44kEK7$aB`c=HjZGK%3abIE@ad;wlk?0+)K1>@4~gihDpW4YfwwA3Aqw{fBS$z zO;tqPXV!Ze=;qqn3x^IJe(9BE>S@xR(B6K#L_I;h4jHQ0@YStBa<_Etj4Od#oE$My zx%;5nPoAl)eDsrD4i%a^HzX&HGqf>L3}Z1r?CkVK0GtaY&(-b%K*0irFQSVlcYIjPN5MzEHCOy?Lcgkp1g4rW4WeC z>Y6n?<6L{rV6WHXYId!u9XJqCS_;sP5{llNxPBF(c55Qq8E1q78NNVPef>VSYs?u* zz*vUSZ2BCBkfH6~SDcPeC^MqQS}nG3Y+(QXeTR-F2-}$Xc_Y364&F|RX006HU{AKN z@seb%?V;7qM;(*%t3;=rrt|4Yi+Y5%_p*S$4UD_EOWlk@QbKK~n$F<1a2+ zy7c!Cz4ZJiA1+-g-I99BaBpjbX?JF(wTIM^NV)FvXyw|WeY0`M(_9U67{;XI8q(Zc zv-#6yhYs!Ay8AG;%7+i5fJOZ1>+m26@p+s+O4$)fudnCKB|B@jB_-*Nhql)TQc~a~ z43%#9(oaDW-fvK5HiF2^i2I|DxKQsHoC*r&v3;99+B$IHRvIWU@_ffKK#3dLcNfCZ zZCfGEb!wdtEzLq=`ivNHKp*fEN&1WS+G{21FG2N7Lp^Euo?Sd|?%V~7fBBQ!Z@;}T zlG?8yqqmQvM|U%{>u`7UORTO=466pi*C}prtxZJ(kiln0w6$wPfx70Vqds3od;6xf z4PZ}(c{5*U3R%d>*mDf6S=~214L1(W-ocni*Rg>Gw=uFnXg7*?OmkC zXSUh!HA~Fzgw%k@V(k{rx(5dfiEXvBx#0EqC|}$Rc6|L{UV6n1m$+!V<`S@16O6XKqkztzX~1{qD)+&di-TGjryg=RD8< z+5EIkb=n8dFJAn@rlSS^J8Ej~5FuTBT~D~?IG!Nd$#yLBeW&VR6PT>v3&8^v#fLYv zksp@}alfa><2b$KLS0 zOJ^h$S5y>30mZlUgkU26d(lH5_0qNS>&PvA!wolFq$Dc$C|gt)xqY^&gOuMWS>j3I zR+cN>l;t$vc7%p)?R`^E7$61OPBCHZ`RAWMtl{xq>Sv{b%^MLW_29{OKEq28ZENllEPZp{#&}7ge^*sDWM0Fj)e*6zFa2HRgiY2 zHj-BZh`e-p8bN?#u@hErr;O*Qnh8#T6+=V_I4kcfMvh|gqPyy3)RH8ECq{X@rq$JH zy4~bKkcZJwZl?p>2#NY%AD`Xb;Uw8_c#D?R(~XM@)kUdJqum^ujGIXUdO>Jj%}b&- zm)piE96W^V=cij+j~zdaFJ4B5lU?uY+Rjrj6(Cp=^E$~cOZQ8;9_EE!f(id}Ho|~# zAm+ABe+@cWh^YOk`>NlTbKt!ge}t2$hAQDYW8fGXYE(1qm-+w@8Gf<|F9J<)GC(~p z8L5?4;XVR-LP|`A)Qpj{Tv21}BJgw+4Y~xqq&OkRjj4O68;*qkI_CCu%fkuXvK9|1 z#_5jo<&D)7N;3Tki3zF;*AZVXyIf&EvGs|TN*-|D3wxN$14Ok{&7NL)Pf6?wO;wP# z;GnYkFXIQL!9fLrrSKV_OOE+Sj%jdEUN|W4IZ|U9+*2ynCsJ}u2~Oo)Om^U)r1Y4@ z{r)rQF#`_j%cMs?(qq!UX@!yo=OwMF(!nWGgW0UdB~O`2D&_wndHRt&{lU28c{UHS zlsx^xFG`+h9pjRx{c2P-R4MAjVKx1xM=L~~F2zrD+f|AKM({AdZ54+ZmA3q;hnyem zJA9)11H2dL$o%-e*sA_$fe)(?-4->O)`2oZ>h}}BuPX#t+9P?JSCLe=5|em}uF4qX zeUh5$Om7|3Sn!dqF_(+acAiRpzp!z*t|4LyL|9!3aT%TOvjQe5Acbz+g#(f7Sykp6 z=svE6V|t?o&fVdHhg*4eWudBgRHl~SgzOb%fe2Mv^Zp80zRe^9aw#|&go_?ZRMkTvhImWy?wj0Uv@&d=MTEzp>Cw2<5+ zu)?3UMdF##=A6B{2H*STJIRk37dUI~Vl^&s*4!0xKK<+myUnL{DJJXU+3AsOk)5%% zv31syk=t|?`9_LT2xhA0EE_*^WZAVK`^t80j!f-A*EPrGH}lIPzy-Pv3D?E17mpt){~o?pFFK?6t_ zd)#rO@=|AOV)dL?bI$7N)4Fo{w0#3-pPFN(6iN!*yKK6d1KpHzp+ww@K-^NHn|aX9 zJP^0MU_kW$Cv>w2v`x~@ROn_ZbTbFKSq$oyDp5D+W*(?pUXWa3!DJB#7P9mcIl)m# zfr5SIwjEpm)GYw&765fi`Crh@Oz5UW>oSp8CEZMgZssGg=0Z2KgSpf{k!1|mC5IS@ zU0#qJV!?Fw<#XK}mLk?ivoDE-9AeN-UyvLN(9QseT>!)`1-cms_V-E_IsOS%i(~iz zpF=$zP*3Qm(o|5bIL;xVr_Pd4#L?gC9^5sU8ySBg*BdrPeObqOR~Gq`1S9yV3hKJ= zEPdUlqYbeOvKHa4L)v$K_WkR0H3>`NJ65Y?q?w8_waq@eg)8Umh|2_Ft&yrucvOrZ5&XQkN zAiw84col&&J|o5Bb*JPE6mS>2T1kvouZ|OA_fwDB3?5C4R`J9$2^TuYY~|>1Ut);Dg<}nS>62(mNb?h-YU;7DTQ+hr09TC5#Ax|NP0_ zWfzQ>ME+N3_N49#GCxx(R4K}0JZ8$brzY!>^I`|#PMZ1xQ9Gl_H>Y~yCm*N`Rvv9O%2*r z^SnP_bhcA4Cw%8S_MG5RcfDcH3d?lI2}qSo7h`8?E3~=i%nfrwPKip&BxC@R)0Jg% zj!>B+WcEqNEQr=v`%TJu5GDw;+;Q6vs>UXO8P$DxJMfnZYk`A=WbYg7qi%E`njCzErg6NzTpZGINcl#r&q<1D86*-JY2 z6`pfdsl2zR8K>Pv&b^_p_(_p)r<`*72o%)G;RAur0WSLt{QPI#MIxVlGmz{qXW>tY zd)mEAwrJm6bYG}a@rYqT4<2`EVk&ddROX^G=AtP<7yG?pICD`R9J!2plqJY(2@gL+ z%mhQ6!TdFzJ@IT;!-K`(nhx;H6ttEK=lVG}l_eSZppc~>zmLKSU2smhklBW^iFuUG z8QB8gS{UD9%qP+#u$1{^ID1AipUh-nl{24|i(KJ52LbhifDU6`84mh6jCo}^+fAOCt5fbN8e&uVmYp>Jq-;# zVspvVshb}YR;TFSL{{_lnlERh>w(E$}nWCVd6>0e9V96SBh22 zFr@el!ZO@ITv2D*;EC9;=}rvik_S($5_ijDB;)l06Jbki@|zh*XkjhnS{h>L|{>hCP$tZ|I$KY!8GPCC^luE@}nP3XX~(C zF1&ESJYr;e)Pzjob$JrwmpOZv zTuW2h-@5?HUTL`~k_(qcLksPc@C$+SCxv~{riKQQmuJ<#d2Z8kF-CntfdeB4w}YIL zlP5dG`C)IAtSFe)Chyy1zXuMILacnUP=XUHx_;Hw{f>V4;n99#14%0emXng`w69?5 zRNumdp-||V9jCFAt&{>w*m-cr8Z!PED^PQ-oMGjfr_Fl1oVIecl`F;H??V|@Vb<#_ zRuFd8aMVk*NB5A5CA;xySq*%lZM{%YQEdLXO>NVysRuCa3kg`Ef9c@cXe zd&7DE{rA84cEh5utCbYtxhEXHSp7REK=-U0sKJG7-uR ziSPP-A@xsx`iqg2hzU;Im|3=@mWcm9wxqTJ10*3)h7;}Rz6X?PUU4q>l%7HQ_ahanSs{8ursIP+FNhERd)cnMWbYh~fY|flHW#BBQef~jJ zRaJwq0Usa$2djHHAH$s_BP0w$o_N~u1k%(&bwgU$aY+KzV zf;yce>~xXwq?hTBe-YEWNKL4$oPl&SRGDU%p~BL}jY}9O_mwFZ*`sNG(kGv6+O%fPnoXPb?@!vlX%n4o#*OO6-%P{nE$$TZeRc6hSl_wv_9%?)Jv+2si)|ZIIFWCcw+g~YDD$bcxVKh zRx3tU@_+$;|LWDNeTiOgvNydMOYr7&FIcRSlw>%P2~CludrC@5`X|dQQ-(;KC3trr z?n{A=W%-4YqW${UiNBVZ`wHc#UG8Q5*Swe2x{{I-c3ztOE;gvThfbHAeEj{LJ0U3p z2i|Z4*y|17|K9h^g_AlUc^wlMiuZKo)mOt#Pksq5F1m*+=I6UBD=X7%{LmQa7Z14z=y=5 zYHEvC@ZxL8G)jt`74b1G2_H>NGl$e33tM&5!shPG8B3fAdu7*vUPV2Lp>zxLc&ds< zAYmO54clrhLLMQ%-*Cia?kd}W&y4YN$N!96$f{+{)ZGOu7?r587VR=HW~S;0oyqQ< z;Mb5{1A)MBVAsglk!IZzTBfh8Q1u{*d^wieALja1yy)-PmR_nFv;Z7mJ2)!w#y zm=*1%DePMp(QZPr@cgP8b_SeXj6dCjf`w2*vb9zKPRB=P+?-st7ds_EfTyqz<{v%4 ze*VvG=6u04aDkC5=fMf$GYoGkqpC=6Vim5>2fnN_Z>S<}Gk31funI@{|H^Z8Hot<5 zG2uoOcY~z3;blR8sT=uN5ZeQELq^I!8&$;zrXr)Nc;QTa!GE-wb5~Tu>Hd>X1^eal zB_A0B)))Ldb1O!lY{%o^|EK-w9dN%Y{*)?K0V*853U92!>8tR@D!j1@Z!Dv#gvBFz zEkjeSM86OCD%Y&bpq24`zs2}1q)x^qDSnW3g}H`+Cw`+=IUK<|SH=;Ep987Y@dp2j zPZ(^NpF`@+;(DDgnUavNzW5P&VuD_)MGp${J;blwtSshI-CQce!KF~!^?l20#1FX> z?8ja+hsA!Wt7YfY^!N6iuZ&WTe0E1NL2Z+~+TY+Z`|kKU>r!1~hL)i$)N(OWuN968 zvjgON|Jhr3U3@?wWO$&EATMo5eL#dhtI~c_+i4zPN;>k(J0*34z5k2U;y%2I#Q6d%u5ZU422+#Ft(ws%pQR(8r68ZBAfFWn zQ9^QLDo>HoXPJ`06*B09X1KEU1_RTlzE$n;JKl-TGHtO${ zYdHuWIfVamB66MTjD|hKP$uu|OddAONINxrc)x7SGP3*0H3TjsE{-fOA2l#t342cC zOjnTZBh;HMYXuOxPVaaI0Zbq&t=Vy~c6oRPtmze2wOy{T{`>E@LlsuFzI?gv*s){F zjt0XsYURp@R({GI!J+xd2dmzFeT3OaLl3XkqC#@~mc+PkOX2C<#UP3==M2p8hsCI{ z!;>?Z3PQ{ybu7QJ2RrI&gJ#ke+xal|gk2v=ZEbHtSWA%L6z~v?1O8&3F6Nrdp2N&e z_oGr>E^Cn$C}F!Qd02<=hCRqVrRGkUFd-+I013Ji?)qrE zNtMV)ogJsCG9!Q6wvS&!R(bN{47Hd9CJ9&N)!GP5co)JYGbgZj-1H2AM{YfP5YY?T7s1_aNOG%O!_(%sXVr z5brTw$uS>hGrm^g=D`{oKHb;m3VZg!1@yEX*|*P7pMCo28J5d@!o0#Re>Ts=cL{Tq zInOSSkls-yPSBl*JR^HHhCRei6@Tu%2F@=7m(o@*iHyCitQ}7pG-y!LaZ$~&aBPaH zg|VM>I7|g`MO|?9)iacAWsdS)yUbCt&+eLu-b8g55|18# zV(3uM`Uf6(V7*uTkz*Nw`T72^=L{lBLVhOlQP{QlFPr(iANFjv9fmiHzi=SJNmd}h zP(w8FC#1%3=&Il-lLGd|`{^KQf8ZiP2z~VJux7nn@5tV>xonUCYy=UKynl z0fM!HyHDn&;E@9)K4#_&in1cNQhlzod@e^CA9gTzfgQ#j zzPt)aS@E7k=#Uw>u`Hws75h$mVsu#P(j;Og0{QY9wcBE-v%^BbGihl2*ySzLn$km& z7lI_kPPvZnu`O{x)oa+*)z#S>m4gKeModU~pD5~_jxJ|%*poqa=OIdEEY;BDr>Y4wNGDuvU! z08Xn0?*Afc{T{qgDV$azoK^{()<8I|(tlHWm`e@cheMkMPj(3$+68cEwQy(`!J%CZ zhn5S6Rt$$$iVd;M8sO(hX-7N(I+DzkJ}x@#9Ahhqc7ceQMa}O-@To z9tVn%@QEQN+02|{(pzsOe7%|s1IJ_utHZDSRkiqYyr{qY+K{l+6w7kAK6I~(>v-4)DS z+YW}c?&f0|VV}>6PE97Dl`zT{$_mrhf4m|IgF=wcP0`~$=BFeSeS7D0K6>%UK$H)neFwYVmlop?!3k<(7n$n z@%Hq1TUz#}jhR(lC6t8Jv;=1V!M>!_WS4X1tcwOGooHz>k_rnO8a%n2GQ^*spNRQh zS~Fq4eT~Ns9z6Cg7uditsoZ7PHnJP6eeeDE-+QhKl?+8&8%vm8B^JrzyP|x=i1OLj zUw{3iL}QiI0vQX+OpLZ z&zm>zJJYAlxoY0LtEOEv9aYl2d0(G(QT4p5uby|o)w34NnUmKYXEHKn;79k~SsW6Mg@;23jqin9kZf9DP_$b%8$Gon8exX96y^79>z zZa2N;W5OWC0%2`HPR9FTpNn`UiFsIWdb1EIgri7CaR`^D@7&2OSe}~cPD@WqHPccv zk#f@d2hzF|5>b@o1`5dHkwzkMSe$Oj3mjk~?WK#EIT=dWmrk&bL^%T$Wf{&}a&vFF zodoZ9dat`;(xge%)z$N9Bt4Cnb<PlD39(kv`HH_OsbR=Ox->F zXI0`wS)5HxO~vDXRE;;iU7QyWO(wKL6=5Tu5|67l=Du#95fcBcYcpp2=}*(F?=lVj zMwWz2+O}QB}q5Y~ z3kG?u5t#BoepvJ5WE>0oI(x|6kOCVMJz>l=v#m?5OU-OEhqA#M>VD9llEO&&(@bla zx!TO^D}S)E-OJ#9Iyz21Ty5o<%jNMXidrzcOZ59I%}G|Visq`4Nh@8!zT8UD?qa*z zDmBNbia038Po=m^$x}9Ou2fRQA5?hXN^weI8Xi$8XQ|>5!-tR0EeZ}BK73eKNp1mB z=J0_zMHxee4joc3IH!2{a4|DJ?z@TM6qV!N6W07W^d-e72R_LhQ?iVi1gb>`s^+Nu z)P71x9C7_Ts49s`!P#O7BJlz>BVLq+XtN)74h|%$TK+V2zK4`w%2PrzRhdz!mcd~s zWt(O&hv{%oiFOzkJ&H(p@(hoK$99rrGJECNk#Sed2)5hytFp4{HPU9?{zQ1)2^d#P<`K3R(X2*;&t>|ENrqcGO7ujGRV6(=I4h7AqVo*wY@~-{ zQAgkwXJSfjsZ#jTdW}^fW$@s8m867PErwNDEl^`5vPik)k~%nD?fK_{{Drfo^zC88 z-rln1nYUZ5nv*r_Rr9hs;^cBMgo(Yp}Ks;%ars5}`dg_lGUfuHCv#XwZ=ZSUCtm3n2)9>F{^{1zwee?Ov4?Xpi zSfyvkx_p<@*a{wkJ(97TbRxGa?Cd#%`okSo8ip99>n2WI_u`9nPd>MG<0c}zZ+`7J zEBM^=UcECh=~zqsOK&{);){|K{q$2j`j69Vh5{ET&0%fRu@hBcpCA2VcRl35*=kfM zwD1-&2o2j&61MObmKkm0S8sws^@sj_$K=-R5Amcu~1n9*@v_x2`od zPMun*JS~o>MEj`}kBD`oy{c5^iKnGp2Y0L7YRSM3 z8#1tTXlDP(-yD?x7;0YIVPZ$bORxdk}K9l zA|!eq5;qcg51uSMNPGL4o*3>*24)xV>N2NIw;73$q$}po44+IBqA^q8ne-o=J^hd` z97vq89(oQ*EMhT>F&U8(xkX%)jtGLeW+cj}PnJ~3^%5$>&By5StIT-`38zjSax&*7QCWmp7zHgEJUkAs*MElj%q)Nm zG7^>N_i)OQ-G2Xv$7#!t|2)5pE|D_|xGs;C!Iv4UY6`HxBL<0OIbB>0aYT||?5TL; zoQveni?n!=)}3TDF(gPU*)bSV^vn=od!4-!YLh*HGi-QgiOg970{5Ui?tgJU0ni>< zh3k(;Mvt<{qY>5pTt`OS0rB8&+_ZB{Ue`#J4J1{s(t8bDLuI0XTi_=I0|^%yc(Ddfdspq2~>F6xQ#xC+T* zm@AwP4SWU_G8Kdsm&aI@A(>g+J*i3#Gd7gOn8QS0Z4WV}7nTID#OqCQF{LweML=14 zfwaOtBDXj-2ffoe%`3zuH(~A|ZoOZz$1|mXTga<^aX|m+*30TZ*u$W0;F=N1D`hmq{2eJD@2!fgP64`;@4m?vq3T@fyGP$iwT0blz_#|0nu0l7E=ip^AoU`BCwcZu$cZq znH#Y{Tox=5*MWFQEB8t;mCL|XehsE_Ihe|&AS&t9CNnV>a#zV2<0+YFzhngGOf+BvgBhX}ETxny7J;A?gQZ9d#R1%9e@Y2hN~r&% zkG}TWqmPpCr|rOQ!2P|u50D#-8G7phfgmzT9N2mXno(UVDcQeYR|2%J8E8|(0ktjA zHW=t+a9dzEz{+kzG)=d44et@D6|I=sgxMdg{^R1Wf<$e0`72w$QRdB?rp%UwO!1F9 zFO&WEvMPRQS7wJQ$k3>3YuC=2r6(&bywn!O%HkzvS#OVx_8}-*bnM$_u@-U;guLC| zAAHc=E%xkrdM4uZ1y;Yla)I>=*VB9UFm0`pKU`v!_LWPlU#P3z#WJUWi%H=zEL!=) z`6nDm7fpplbk(B5rUrUpgAsyXwt;MytMZ!LtMRC@i|_VpDkO}aJpGzm&IZwa+HuP@ z(~|`T$kZ!`EDhEZ)_MYM?r^|OgGor<*%q*a{SdHCl9bODDJ!$Z1t& ze59{@Yz1)Yl;)H&z}zreAz=2JZGEMeUrR0QN=<{?4hFHw%X9Bz*4pRp=?|~jzsKD( z0||6Sk9#c~;##8wm0xr7M<1m##hJYlRUw+BQyQTjF*8wz49YZ{w=y#q7B)8ON}@Zg zxf9RygabWi63^sSR#xVnNjwA~a>yt_BbY!?QhJ;c>p_@K?}?$7!$G?sR{sH?`dGm* zDr#sbEWF3j$T^L=qmUX34QD9S*_oPJX*-m4zkU`;dA-{+tq(~FO!IVm#sZ{_^>n`j z4nQ$Mqds@7o%; zyCxW#Ru^*Z7$vscIqBvwJ@c_u@n5LWT^FjtZvl_^P^I~j`BEssZ@*SK|1kqD4f!z6 z93jRmoN#@v0CM3va(0n;2p$lMBNVWFmJbrpNyJv4qf_g+JJerJ1Q1meS=j^d@=qC% zjaG{&tlsPa61^CZ?ZqL77uMYkb(M%ox*qSv9)x{`#olK)G*7bIrKNk*3k+FlAV8&o zfaXt=_m<|@0s;Dv;+Hv>oT+{#NjRuf&Uj&Tlrm9$SC~J*diLoKdnPnW(NenIfj~O? zox~i@Ps&Nerj80@iTTq1w_ifc!42tJ67qwtB*R;&$tcFW_zt8-88y*VT?1)Xj8c@C zhYxStmJf&5Nlw3phDhfbkLQ(FUfI#v58iWRzs?=62p3hAmhRc3=k<|;KH@O$ZwCP= z4*qRiJ^)6(AvR4HZ&8j=_*OT4^P96#3Vlq{#|!&PfQ*fQRKEGm>BKydC7tb+8Vc75 z)nX+_rYkqXL!)}t>gsN}MNhPfAU{Qx@+r^%se*yBc+lDqkJxQ(V11z&-=~frZodw-{Z&uoygH0&0rVJ z|C>{Fg3)1g25U_2w3;MSGu=QDZd2<)FhN4q3G<%_q88;(Cu~o^A-a4PK!oM%k}w5K zMyS8XgGvqak|6^}PP9KG2eLkJVCjhQa&!EM(t%uSpD|TD+#bY+e*Uu);duC`C${ zKc9bBUw!da*ImKqx~ncG?8wzuUwGBG<>t4qA~?v8^~E9(M%7O|owI+sy~mLH-bzs~ z>eZ{SUNGM_wY*7bR4-DS`pQL0qjIy{FFuh)`LS|9y+S?KSH7+sP;L~TfI~FVW^$_1 z^YW|V1FQ49H!|Edc4zmzg*5qAcV-pLca@>jO>6qzkQNSTLYh7(iqjR5=mg+^!4~`+ zoHfoMN;rVV+Jv`4Qqt@pE4fkztV_Oc-LBLwnN8~A zTbZMNK>0Od-mTUW>jxpc&=>n801}ZFkul+GkHubkDHdyg{`m)Ia`rc@$$jMl>t@$O z&p%IO<~wGh0Q!z~USIi+b&I;}Ri=CN+}ym8cS@=|tyA6hbliQq@B2g&m_ver=Ms;t zBn4bv;vMq|k^RmHE5*g(e#ONF!Quiw#le!|;$SdXRFI2=U6@~3K*j>SPT74ptQ~sa z9}N40u9GKoXxDxxPaX=3!-k(=%g;am$tUWgk3RF;>GotSCuBBST8s2fccVBwx?%m_&&z~*c zR{ANwQa%DLpnkK(YNb%QQympA%AHC9d&u^pv~UenrEa}ac~-2$1FWMO zq~KZeCTqURiPNmB%^Q_v<`1p8M5O4hw&t2YRF)CTnhsYX{$k{vC@*hnDlb3r!V51x za>u=V?s(+I7hd39z4pXC)e=gS#c|IQubDj1ja;m$si;WLiyos79E&;%X`VvI=1IAz za&jkaJ~U>`m_tS>zd2-gdF!oLpZYzj`3HXg)T?j31#|J#bI;4o7oS_TRV<}489w~; z)=|n}q~EhfIX1?+&upx;Mv0w{NtVMqi6LQG7#xIAF(AV;bz4hT$$d3a*Fcx9kuKBr zep_u{!;d&MLEo4OLAo39u>U-o9&NC*UN2Lo}o~qKjo9W(7om zTZ~((+krfEVzxp#U}dBjOH*n`k7i_mH}Xe#lW?F{9L(!Lj_=4j=w-_AGON&tM&2{^ zJaqjtSC-OyO0RtB!eYLQFMP?~8*g&>UVk{#?=&$_Q94YADO2TknGQck`i)gf$W;j* zgW$djipNi>ZYKvqlVmP?hF15-EMP1Ql`%oU`Bl|j)8E1 zf5MLR3tZ0pBJY6lAf2IaKIx5>_euHweK5{AQUx$>3+8I4J2I;GHDuCnS1CA+vAZ)ryv=RrIx8ktHrE2SW=K; z73%Pd(Lth)1(UHPC`8)rM@?~$zmdq+=i4@*6R;r|$M3`Vy+AlC{yi({@!Vx4((?#p z@=-|2mGoliDL4U{d>k@)0y4P^nLG=bTw0<^nOxdAjN})YLk3%NQI1@mi(H;V$>Qmx zMXJoK)W1(I?~hzA?Hu|eo2T=%DM;hedoUH*Jd2jdLpGNZeE``!_tmVd_gaoKjt=f) zb>G_G|Ni%D_x(W`x=p;Q>#mZLg51PFA|`m#r%xXiXsfTUBO6NCb?7u5WF!d`4(l`F zOxM|ddWZSGgUHw;&%=8VDSNAq_V`!UuN+T2{_-2mu=#zt1sto^f8h1jRmqr?)-CSU zoA)u3@7>V1?ccDMOb{Qx)+^qB2a5h9?gC0>wkhe@{J^|<6ejArD%&(Q46g+)TR6FI z(?2<%xio*WPmG_8gp9c>PNYIvB~Qj^D+{HDQa>F zhO1{zw|C>D7gK7g=&ejGu2oAPVq&;^4jhBMgYTQB$%e9iA{@d|9CD@L}m5Wn>e0?PxNrs2WpQRlS5=Yf#@$&)RM1u3)erGbM?04grJ= zP3k>#s4klbZ0;SOz{+=+teP@IdX_o#VB0v3-?Zs(?|<5KD(rC}sqShz1-uN@Xm~=Q zmX>2Dv&LLmC8brNdmRfGE}S!_$l(Z)Ge|ksX{@XwOfp5?y!qp>(zLm6Q`wA(YUiGs z3Nxy&>~l~n)S<;DPx8#Qam2)xiD!RRo>6= z?7#%zd)d+v5&tsjfv75OMXL=tw!9_A{w^;2qQ-ZrN(kq{8l|Z*CM0>M;|Nd6#CKx%& z+R=#RJ+NOy^ctc5_AdFNbuBq*{}FqVuG5%!V_|mIsaxNEyAo@ryECR>&(l!P=7#qr zBCzGPE$dgy?hB;*;om-roHiut*$KUp)5!fAX+Vw}D?>04i9Ox5&_aNJF#j$qdfG4m z*1Z2>LAbY`)n|XVWXY1>J^TB8>uT(gIcd_sA^i&6*fw8u(M4s2S<-Ks z6w(#SeC0~|z#qj)@sNYTaQ?jbuG!?CZ&0#i5e=+=V6C%$t^5=Qt&n?o_SuI*PaFiF z8d7C_i*l_a{95;rA$8dVlS^smsV&uF)#@R#TDDcvc9QJst|Lc|o;o89vD0a@PdhQ! ztLyU$W@JeVQrYx@Go`&{1x&)FCz?;}&rJ9r9QksjK^XP0;Wvcq`oI}2Eto)dD z!k%83NU{?3_SUV`T`esqPo3$A5`_wh@l*$j9{eL~R#xG*i9vw-;>rDKlG3St+y1E% z>lirAC5DfIT--}T0DP+fs}rKp=`K4-pQz5p$_*|7#L3Z-I2->&J7#}S(! z$NNrcRV&GsJ`sTHY8`*8_5;=>VGmtRTw(z++5;k&JT}&Gh5z|Q{3|TrUqL}is*|*T zoa0Lkz_NK{V|QZ*sMJ+q(|eh6nY-*87a-J@7xZoW3nn4IPb^3eUO1E2M`V7QB1Wzf zCnvjHZd158xmLPQ;h)4SU@T#*Kr=8ETWA;H97v0@(l(_8QkULsQneh0j&O`@S;CE} zVZYQWxiKb{hKe;SR}dzGG-5Xaa{hu2oC$!I>F(S1yR$Kd&UOzfY;1;R--IG${ca^8F%B^Fc6CINjzk7Ai(k3@D( zoxlifCkR#$7(;BcPzJ` z*IP`?E8T$SwQ6i*O{YNn1uGsixNGI1hbqaJ(d+yTviR{W>`8p+p##TYR9fo$O?Jp9 z`x$qbo<4rYki-FDkL0B@6W~_u@hYW!=}N!B`l;h>ED07?Gs^5;p4*dNd+oKP8{1}9 z;D%JrJ5#A9Ep6n?s>r)x531kjp`?zC3|+z4M6G}5A%a3>)^0e6&+BTo4r$oXYlofN z+@r-dPTaY3|GWFJ`tqpgJ&zu3kq9vK0vnZnWIh(f6=}3K7uT zaP*oE_$+C;YWl<(dI2FJjapkUSqhh3v+@B(W6es#+0)q#cSUkkv&KL%f^@$Qv)hfELJU(#&BD{XoNICGNBE`m|Ju)UOJ=n%CnRKnZp+OC1o(( zmPbbImpR_Momy9j{zg!HIb@yOoTB_ssgE60fL;Rek+x=vk_28rBtFGOvYcLr+7t2; zK+feLTY_p|Kxd@LGz4Zi0fi{^T-tcK+={_4Xlpy!aw-BTaigz3dIkxW940j@YaC{; zNVFTrlO&MDL?otiJOfr*V^g2bY=B{YjchDsiHuYLA|YuNzu~2!Fss0}({8v&N;%G| z`PUCb`nXRD5)wK=J4KDQEJX4EtSXgg2qhS?{2Vp*gDDOXSwz4w)V~P{^3JU&;$j`f z@yJ>+`HWP9_6^Mhfu18{dbTodC7qTp~yqL7r7k{<9l40HhjqWOiDAw$^h z)-+FIg4IoMRQW7eiSRme(t4>|J}?y;36k$&g@(m6-&n~L$co8bf&ST88IR)bgD;oy zhEs!*zdetoRAdERA`m3IYA_&Df>~(A&WBI06mB$UZZv0JxO)#;Ge250AH2K^tyv&g zEE0pj+wi*#9FtMFZkxAA%>W%LEae-4t5KQC#%gH z%pY0Lniqkv9h2xLQ(M`zX<=o-)m3(o^lL)G6{Z5_Oj!>DM1JvHd|}mOnzhtx{q<$; zMmu}gj@UczwC@ZlS~@pmKP@2MDcmLPO-&0Smn7oUdGem@wRWj6n3eg8KXzZuAQ)B%m;W!{BZNJcE%3>r?4`VEiQ8SYD^H@rS%$ST{AnS4eXD_m~3g@LVu2nIeWjMK+_1fB6#;GB{6w*Lg z$#TyZK9VLG95hNE^w}q*?h&>RvVDP|pfcxy z(3Fa6=tJY_PsAmpUuKC}%u=QF=u&!gDLr~5J$fWPx|AMWN{^mHj~+{pE~Q78(xXf1 z(WUH_XjUmbdL*@t;|kIzrwXiUqA2FN4vtI_-x3PH`ngsrOEUeekl*`pAEUSr!FM_N zhX-@D2`uCIeHd3KH_5+=RaMfX=g^m@Qqy#L^dx%pHS|H|VElw~L6jzeC{5&P$MAnL z_m;qt$pZdDPaaB7uB0aqrza1kCyx^BJF zZ-`&cRK5XZ_)8I0(^Ri=rP!_hx_(C$67e6z7UkVbE?|wKd|x?@&UPZBqf{xyG7P>d zByDkPlg2C-b?1p0GZba@>KUt7>tcpciMP&g4Q=VTKdK<$wg~6 zZrr$S7P_Dtt=IX<&Y#Kun;15?>UROY!gVc@$+ETUZ@u;UYD`xearOCw-#vAd_{kvm zncz=;@{`%(6>$J9@vHoLfO4GjUZ{dzyOfDc`lA7u!dV)?{zl=z@#6#X&hm zZr*J43pO_gOZR!lee#i2q8)E3?}q(L-d&J~SlH1~N*>PouvU*8p_3A~QKrLfG?a}S zjokf(h5I+<7VaL^f7c$pZZNmQ7fmHbnA^G{Gz(>*+kA`tnz=^) z9_v^tMe14~jIP-&Hg5rY)I~YDA;M57WoNfR?1a8vaL50rgS7G;qsE0Df7>xCez~Pc zcDkdyd`CI=vBQ9aGrn+TZTjRL^7v7kU$bv-DNvg3ShHr-nl(C9UPcuA!twu!$60MR zj5ggT=7t?Fi_Z9!bvyDHkYb9J##>6`|6CbDOXf(n22cjd|Mu3vC0}_@l3mqPa7nWN z7A(N`zq}l{@T<@I|NLV96Aky(J*p53=$0dg-q>+c%WOO3J$5h+#n-Dx4sJODesJ)J zDA6$i4Wm6oz7<3PEzH83XX2}2|=wpV2?RM zfI0AiBL)p4r|F~nX@AW_a@sF!#ffwE?$DtGZxaCcKQX@#R*G$wmI8Y9es6oD`xS8+*Iy) zqQbh~{kXyBapaZSq|^@41!IMPiD4DAP&k(qx>ePkk}+V2XgJj6IHf5ksXjN+o1KF3 z$M_UfNsDCOA<50_0Fj)Ccp|NXjlz=L+>*J|izfCu3nK-dLoG=t+DBY|)#$n3;4@cz zo5#=g3x76N)w&}Phz2mYz>(s_2}3+H!;WV7j5WmEgS_?Agyx6e8EhBOLxR#0E1-5S>nL{ zXdA)df0=WpKI5+6#P&S)+{Tyxvga@L=Fx;jd>(m(c*?cz&CI!P+OKfet|+;#(ft(W zkm{>!bU{I4a#AcO+h-0yHS8HXFnuz?L8eZY0eT#Y0y0w*|5_xw>V@V*=6#fhVuNFa z<|XDOBEf7h4~b0kx8@P$$ngu!k64rC(%AX28Rqm@b@UjeIocen#x5wzy_C>gCAjS9 z)QhFDOeLcg6rj;A%+JowA333N%ZB0uvN@weHE~uI)P$NZ{ev#5t36ah|R5_{Y~!o3dlOt9)=b zVUB#0$dU1pPwWIXQoiJk)uj4nQ0=;2?Oma6j%l%xonnjuQ}dR)Zz4Xc}FG=R?hNQY>r}j7YywrL+Qjg8v zJ+n|X{tPpiA6r-Tl^;W*uBClZoLk9#Z~PAJfkz*Gpc*VZ1wuB|Kf>MF@8Qm(9N)ta zKRlZOUu30QQ_W^`e_v^ib48AQ2_j)1xS$NcP=omiWG4H=J$pWU;CC$t)Bm`9Lql7^=~XTN=kTLSo@~8J(T8kWxg9nR%W@?k#PKpyJiKZ#>#16?1br|FxGcHsn(#;~uMD=xb zsp3^Gwr&)S%0%lWr9kXb{_^~VY!%pLxVk|7Z{<7ceOjWHsII5n2M_%URsZap;+mU8 zZZ4hPBx|}Za;0g`;lqX_ZQi`JZ&Zkflje>0jmq0SaqQe37fzfop z%omKDq?ex-Pi_#wprY*A6T~i41Px{OY(xBX21wIl@l(;p{oE(+(A4XH_-2I&X-5_| z4!l5w?6O<&qK!@?h!Qh_U7m-ZCc;(H<;*76f^-6Nl41~iMO#vv(uswc=#)krSV5{0 zppYg1$SWGzif3kJ@7r%Xm90wGT0*u@=(5fSJMZeOsg>RTi>##so5|6?t{}|KX4l~b z6=IvCclviPt*8)BCRI(ZdZs(G^yhqj@e4tyF!xkw&lK^^Z|aW9%5PRyk_cx>nmqsK zKe_qG$GY+pN4qYqeDD0x=cCs4dGZ&?Gk^Yb`^?FlIT0B{cMQYudKgpPl72k|qUrXS zXFOhk7R%WoS=6YvM`ljZG-7!PX)rCMkbtpJPme7m5P2dQgF6=>zPr1Zkl<#ILkqji zs7LiBB#?gr3SoD0fN-5GD-kHOB-9Mfe|NG;c1EL4Pb})h;s|ROSaPlxb1TFo#Tw+Z z>&dy;>5Mv^_FRmcQ%x!yK(Dl-!Of8%9}Wv+Ac<)~CcgA7{2VQamg+e6U9xT``)2<4 zrQ?ESGs~h@X4=nxe%o!8;xX|UKrF8z{bTVlIHf~2CV%iOOSstk+k4BWM6B~f&sciL z#+cZy;|OKbyT89&O=@Js=-!>XG;@cDzN4Dz;4U$;kBt8Pv9{k6kATVwoR9uU{vBSF z?33Ulpz?tE%os3Gl9Q272HE_#PD)0zp+cfG8RG=IDOCx(EK^fxR>_vtqUfOq*>eJ7 zjO3S?6A)Qzaywqw);scwM01qT=J3lKPO%MQ+luLTlm3s5U6b64x<@&!5p>v%{?7EM z1~wQ>T>nVFjU21xy%W7knLp~b+__fNI_*(T%Y4ROo?dE7G_UxAtY&0e(bv|w#?srz zTk6!P72V=dHpw%5j6ZyqzQ`;XX^|t|CTmOp*ruM?A-fcG9NkgF_vd1WSk|d$EmZaIN z%mXhymf`B|-X3{w&7e)&H=%U&bsc-TDy6Ow&a(|OpCbEoSnanbaWiHFVkFPpGslF<{WJrBm+@sfq z;M|$dwf`ZwZX}dIz|L# zjYzig>kQeJ`5~l^6!Ycwbjc@%)BytAR$fSquMm$aAK6H&9l5bDXk$pdm{?^Xt7ayU zX+fHp)^}s#ugbV{?jxku5XYJulvwa|4sH4kF1TDFCeGsv;VdM&`Y!bj`DK+sLTh?n zJQ&}lbl=Pl`^NvJe>P(L#Un%2$}|u_X{ndSyB;ad3!VomSjszf@!tz-7@#j?v3@?N z=y1@`A#BeS$-x;Qi{nKRJ+_P(G*%tfBUD^fVe&-pT5V=@S3A;MN#}Lar9%N*OzM z?)%#)-zA^683eik209%TQ2gIDw=+q z)g*oEw5I%F!zz_DN?Qn^VAP@fEeG=k*`t+ZI!TaVy<{J369`{r!XX_YT0_EPc?(k-F3(5UvM+QWy1$ zB}SQs8&clh&fTS>KgE^o)b2Om^!s-kDv@{qBW1#hItfUsMBS0dqwY$*FO-r2Im3$3GL*ORSk@-f1qko-iLX?^M=qHm1v!zVaCNc&ENRtn3(duS#egfV-si|sqMJ8X>o;ho!WHdzDlst8*7x~p0J)a zc#8LL^Xf{B;tFQ9t^qn`v5YIQ=GjG zlxLnXltF`LD7(Z4YYVPaJH>kC&&max?Lb`GX5vp&if6^M%1+3`I$gcCrbZXn>dMi6 zwVxp=#Ea0f4s|!?IuGJ|)z-LgpMC#itzbbj~~~?ar>#26UK6|J9>xOu8VdU_;ilPN>15JtP@+fCoOANixTXgS<)qgQRZMDbRdVcBkD;hy_3Uc zf95ixu8e3Yn0@Jh`R5t#ncwC!6Y)Yle&Pg=rz^XYmyvgMRbs}8^M^iRsSOS4+9OA{ zZe1&$AVr;I$$J?S_3^%5Qj$H5xEnW%D+!ft7*u^)aocDizpvY&Dn)~PqF%C=nV;u_w;%1A0 z{9EqT)Q&UhS!ri71{flZx0`A#7UnWM-P`RVjwLCcG2w6<#O0t>BRX`iP7195+L)%Qm=h6nh^0fb6G@CDQ`wr<2KHpHNl?ZB0Y0Dw`yqB`|m}E_?Q~O1nFE%y1GA z-l@1b!vd~MPfKX;Og!6WGN-oW=;RB*@=^EF4W$erE!GsvKpYh6zi0-zh^R z$iKxxUFMCMPIqfddrn8g*?}u}tIf`zpo2{4ylM4^{i$^U_r6%bYl1~i^g(C({G zTeIfV3hP(yL)xKb%MM8y$FVIv&O_FTCVLW9ny#FS!u?()L8{0JO#cJ%h}e&b7)+$H z0M>CZDyU0I0^Y|!)`e2x5qH0R!JL+sufMr{%87#qPr#8rAdRL3gy#Pe_a5+ZROjCR znVIccY1L&FODoHkHhi2it}ZWc*r?;tPX`A-WphJA0eSdDK?r5Eh4vf|1X6tG zaG)*qjW@2i!gz#mKiI#i_Oe(ffV(2rX}%lltX}Cf_m_HPSOb!d#L-@8r8B?ul>;?Q ztSgaxXGuur#-KeamRefYZhLRD=oNK{>Q(x@^YNcK(;0UvwW-Skc2HmGveE$V2UM6Z zj_bAq>Df(#GDmB#zJgA0mEoOQ8tc?F=k3c#iRa*2lt&7n3zIfJ($ftYfLs_dnEbEI zo0UU{D$QTOt>0z-i`~6{zgs-Q{zttM3EIr&X7)FHCy$&Vz(P&K7oDUDDgi-P+m1=E zGaw!>jk9^vb0^sCel6n97(P6MxP{fW@!4?<7)p?c?~Wggo=s4;UqRG5$|g;iFiHG? zeXI+F17FlHRZWF~x%@yJ^vr$Bq zwOF(4Qr;5#%neAu9`Ukro1q;^2k~j&Y#k+1B)B`A8YL>lU{*s%e@;$6FPZ#O7S0Q$ zWSl&iQQCQISW{C=U5+}*W}C$3jEqK)2MyRi+H5!?q~{|ZAEG_XMOiX3wS;rAff{jb%Uh*V58|`|jnp&tnqb;bNom5Fo2G zyvCO;Qog6$NohPJ+phQ%vf!tftv}B1hs5LHid)$o=M_r3y zK{&+2PLufSvzkpuoX+=Od}UuRc>%;h_Bph<3x%ew%W7YS_r#_P%A(Pd70;DQI#C>E zkJD$#iKpB6parI>wYBQiS?;-`M|+E|8hh5~JB!+>+IH$giN$OK>FMmGN!V4cd|OGd zwcqV_FDS>A=0^Ju#=QUj7`msw>eXf9UFFvWhOMBfiMUkW_wZ1Dwe|f6-+JpevCmL! z+gGh!yGphR@d4H3kJYx6?(nl}y*x%0gq(#U-Ph8PzTalQRnW>9eA;Yb8+b~`u&#vRqmN_I%rMSs=j_4Tye*ChaPd#Wmr%M_ZE5;#v!O~1^?>g zWcqJ6CRsE%^f&b?hNY;*ebYO~^|F*)k{F#&Qn~b$461UXOX>H}fr5iji#WKA#AsiR zO(wgK=g5+4>~60cm4&C5u><-C9_@5ZS!TEWn!4Vzger+blZVt!iF-PE+h>|PcMT3M ztnclV@xcV?l@J=CkM>1q7pcr{~@{Uu$I|ZPe z0*)#K??^vb$(%{6#cc47^nxAE6Xb$-hJ$y!KXW9PCnRVcU!O9ImZ=hFOV_`II)*ZD z9;2%YWv((8z53mE&m)M-1jNas=1H+xY$njiNq|n89w*0!fR14$(ByNxIn4I_zpr2a zQaOQTinKqzxNe=UyhwjGUVi{IYgCE>#Z9o#C_YytLMf*25c19yE)cntKPk7)2ea;WnSf6-~Puxc6Yaf zdA{J8&S4%ynKjGsmNsaUMvSmGO-L`7qndIcqtTcw;k7adMt!0$fG_x*FcNxmV4;xm@EK*UXuhi$q0gwE&Ou|O$ zmGWE8ad%UKAyo%#Kp(Np+i+Hp!VrrRJSuw`9f-3!F=w><-JflZmYC*f?QCp021dHA z=rmq{x=3A_;@USCo$Hm6tdfP7UmlAs6#Z;In-QnGct2&hu+=rz)qU~cgD3fMt*$Gr zuHSl>e&@;?l9R7ox^ywoco^kjMWowEPGFH+md-8(ud;&9&QS?zMcwV~*x?}7^)GRa zL8?kayj^BqXIs7blTTX8%w_J~jVT|0OjHIDWXF>4#3?O<5m0$3}x3Y z!#n&~T`@6s8m1)X$hA4_(A9O$xCcMmf4GCYQ}lJmc`HMD|E_ko?5o`iX_YDx4XwVO zP786{5htuxrWB1!O0nB*nG3Nc6EY(XG)VP`VY; zriyW0nOOnK*`(_h%8@EcNJH$9e+$zdyUC>d$}1>d8~}#B(pb_+n@0 zOALq@Tn`&E81YU@n4J+0r{QmiF@mo4K?UiyeW`fTlh4|^eXKkm?vhlK zRR-ejGI7{eoHTiIClOU$x70U{A0LY~Q43$-%!k&**(HPgjK&qpY_Rtt@tk;r`CkYl z<4`n|4$Pc%O`uHqxjg$?Ef3%zmH)_dLmN||BofETm7uI#?eq0z;5!xWPS2qjcYL!D}hir zY}$Gwof12AQt8nq4p~Exm&NM{_Y)se40u!-h)6itffzwjDr5FQlA(XxuIvMY4jgC) zNo^$Ux9!#$;slbFnbGYuZTNkdGL)$#YFE3xV@pzCk6N`1Lpyxfx?_43i#S>t=ZxsY zRrfBGA+Za)dZOZ7=wmz?}WkSLgyfn)k^-sW-k&3DJEhz=>rLp=Xg#e@ffX4 za{T=bwhU8{(l`%uQeKc#U+q3t7Y3B6;m*O8s}mEW$J=9Lykjjyts~z zI6<`1Eoq@RPLl3N+$v7Xat!NO>F#cT*&NuPc;>8ioa}XI5t6d+TS*ae$dbW&u$y1{9FAt& zB+ik`Z$IB7`Ca06G1RgqE#Q25V(EeH6QAB5z)VE>)gBOI^CwJUD29i$^oc}4lJ>muF zQKs6d4FPB3g_kUzcVXh}0CJTC3{KrmFr1-DEGH5aXLKr-R}utXo#8*O_-m9v$2<_=kbk!I6UpVsB#A{EoUt-K#wU<6`Jn zi9gz3(UQd^+nR3T$90M&fAuFxOjYb zck$tXH1yjp8vomEyap#aAjCBmbJeT)Nq4JYON>UhdNq%%X?83p;*YGn^rv~zrs%!V zd!h}|Ci73xy8{F_$X9`UR15aBmyDiWGWyP-)Fdt=8QS-tF@CMwqI^#*ML9y%gZ83N z)1}CeWxHC0_*ee4E=`9-HPl(GpL8Ua#i@+lQoTChR9*?Kc;yx4VTyTq{CV+gCXsw} zF2QYnME=5i&8T^AfKg&yEGRiR88ujSxDz}HZqEr>{ka3H>2MscvbOcpms@Mq2Lm=c z?`H7)7a{h{QR>t@WxEnk>Xbdx%al(7b_}f=w(h;*hQ` z5Tm$Vhs~+ZCVU&uNR^T0DIdyu)cC*haj_DQZ;>jy>ec7HyND;;Z?lIzvSDh{(fPb> zYQNKs2Bkj$g42313q5b!e^(#W0YXv490Rh_YJGGL+!X3W2KAIb3f3kWp0T7vCmzPo zZN*LMtha+Ww(il1J(E>x6oV9P(q|s_TM_?wgF}f*MMpGXw|XWas%+#g+-a3VP_*ju zCMXrlIBlqG?mJgRvYsd)4t6230v53{3Ym46@go2OY#&-7#j9+8LqBEJ;$O=~%Ym$M zSP}=ncK=l2@{h9CIFL0CWQ~TbaWE=(_{-Q{&i7pU?TLI78QMRG1s_;sj|17`@L$cc znB_{A%UOtjuZ@w5cr zQ}`asx(iumuuNdd7mjaMvh}~1%2+R#|73C@(_D<;9gN@|jNo02;E^}{?_|m0-1rb8 z*EHmshFsJ93s@F%Z(f#677t50>+)E#SqfP$V7Y?zNqk?$cOu`{@SVZ;wJaDQA@4Ng zorb*AkarsLPD9>l{t|Gas=VCAhn=7l8 zq#CML%C4ZcTfYje`@3FJ<>iF1`GqoED7Vd5WFUm!k{wp=B_>+ep7!NuwY+WRM-h2O zvn<*qkGXOp&s?rtqh=^$1e^c<7ZeWp?AM#`%ToCOLmA3IdH9IZC6qs|$B?WX8F-H@ zxrcGe#ZN_f`1kk~D9gtxyS{p+_*nyt_hj*qMfuBnLz(jT3!d9ejjyDCKKBoHsQ+=d z^X@coDfi%`KIQt;L=NaJT}EgAHd zN()Kz+c-8w6!{g7P2hJbOEUYz7|}v9L2m_q0dkrG!!(w47qZM?L7ztp$@9Zdf!@;m z<3Ux!_^q*@$~m2Emr)`vVu_=-Ouv`?GC8M*?{v4ruSr6Z44v6A!6UCjMyqTI}t&Z@@Im{5}BV z`)raD2e|f^GQ@@Q)*txNB6fOm_1c@SEfY@!#O3l+vt#YAJN%`iD@1NZKuf}9MUShK zI9di~yVIPhc7OOLl$Fg>GYfSa7Dm>o?ZaD6s=^JPq`+7nOQdaH%Mv|Dct1dQJjse~Q1a`Ud(X#g6ZRdySvbZAI7Gu8YV4{&#tAPDRe zPe|~zY+1GZv259c59-Q;4`S-5Idm`?5h>(9s2hWHysN(KjD?!&@r2Y=#IKBfaG!N@ zZqDsg2&NIE<&t0xD#<_1Uqy%?I3GEH$hV4HM69Qd*r8e(EtzKwX^sBni$=DbzJm+0=supYXk`nUYZ z$*Hf`31qQm~ zFgPQQgBhGB-V?8h-zl)0;z{L#fHsKV4={+cNjQL*l2=s_dY1f?KVZV+vh244Y}M0) zZVP6k`nT~Yf_Gp)h*H4|6tjZ?8Cw!bO#oINf$Q-lFDw78{_U6bbbtgMqCa3ul)h0zZ-Yv& z*qyc>9R9?YJN{>HQre!`$kXW-gpR;&JPKJ#t)c)4o>fu;W2_uL%rDC+K;FiAWgM@0 z7>NMl0#+c*|7?xbZg`7Wdf@jYc$cUrkfVA~SPM5yWN?e~-tZ(m15OxC$2ezZs9i4i=%OV~)q;uv1y((@G0+ zJ6PoZg}t~c{(F0IUF^`Sbn!Jl7&FUH@vK}?VXc^=SH&m2EcPe)KYr}zRt;_W%9k!a zmIrT>A9Ll$68SM&ejJk@HGIe@^ItuvEM~XPU8Z=>-=d3+@))=LXq6w+<;RnJlqp{M z?>hPM!uf}M<-GrcA5v45jIE7JR8SA6QV%cSa{~2nCU0gu^^k~5LR#fa7ZeobJHF?0~px_ct^tCae6xllMhfhCnCnKxV@q;+>LTP2zuPW`Gx zk|&|9$`bKNu2~|VjW|tbEq9enc|2XbVsxJyohU0W0}ofUNH`7KAx_s z1ZgfKu@;JWB-W8UQ7+Ov7im5YX`aJf=7?ghC+~C;|L3x=AEYpn87u9vW8Zo!>#eu8 zjqmMhJzal%@1CdBEU{hJM*j4tBXu!ScYgfwt1rFusuw!YjXaW0`nc`>=*eB~F(Urr=V-qwqJMkcYn$zYz~G|AyZ5VOAPSOAC3^%&)8K zpL(hs#(7D?Q_np6+`4Cn=T^)F(uBhI-u{9o>>Tj2am!_~GZ4lvGR`J7#q8h{F8gWRakf z2N>)JMOY`%7EuLJKI?==AW7|9?1XPJKei%gO!2NFNcp3WJ^I9x&xnt?rzyHN?uS1d zr=uZolAGY*K|c6lqzxO^);0oX_d;(X!N!#Sf!h2Lh8Di$k}#*$oiD$}*OW z8Or3+ESOdg*cvGokIeWCE6l=3IKV|jWRN}Z?BWn#?OwOICk=6!|5}TSRFkK5wY*jc>ej!%!bpa zx9)6eI@!>8=H#h9t$|v+!bwa(Yg&#w!c8}g967RR+}Mdy6Ek7LxDg}iv;qiG=>p>P zxYM(;$n>G(0+Vt4_>v{##*JGrD{r_J_&(2(G>*=#8rI4A!3Jp{^}z?aR7H}RG(9bC z+?WiqqGo30p0xP;>424@_9Jc5bHr5pqh!8FqJ4BJ!Pgw!+~b%4To`X z=+>Rr-hTZZcU*t_wbK4uVjNPUt1{UpDH5x-aCdhY!w-B@Ju8%=qASVAa+)!+B>IY! z$s)*nA6oTQytaqL!^-i-GO;Qk#U6SUX?=58cfR!c-rCxIufN0(BjnDs+h`|>-L6)z z0l)#D(69{lbdv|6tGkEnV8$BB%?4TP4$BOg+$RzHjWwDpEzPATx}qp#1CoSYgR zRfuu8t*hP98u{@$*R zo?bhhNi&U)(3?yhoy#+Bxuvl&H#>X!)Cpq~Gc)oD7$3{UV0MLbMrl`HU)Piw%W_2MqyQuo5T7ykXve|eQb<4?6$j{yQS>{x8lE5zwekb?l}oqMUFOr2VRq32OF zf(sT@5Pe{=sCNDQt~>8ocH=e6O%#O`wpZ7l&&qmUNB+!@RmXl93&noU9E$x*Y`HF8 zH!}YE*F%Ti2#2%3_-x~WqsLC3I<_Eg6{s{6@|;L1 zk+OI1-naj}?enc$H*MOot*&z~z$Abba}a+F=bNvu`@uXcL=Tnq)4VmX;1QUn`vHnKVbH<<(UDV&dWya7)X6E1ny0SvGl@}%lubdYmu z++b8sj7HnByK=ddUIstWc(HI%t9cJp%(?u^D=(i@k!3aSFP~DQvBvbom^hn}Lz>pi z>E!s2xDSn(~SK9o(o4GMt?O5j`*H@uoV8X?0>zh)0x^?-|66P9d-79B?D>O?HT zM~xwV@#vAGFj3-^vHP_So2^4nY!TD9ZQ1(SXInRIvm?;xBAbS~$N(n^Qp-jak1iQK zx}>;xif~heJQOw3E+(|MwKg@iwzZQoox@s&CV9~~dY%M&E(blAfu5&;p8aAJey$D> zu^X%@Bl>5FDezyz*-J)V%LYA90zFILNNLwT7W6EABXdE|B^D;NfrV2zhr&4$I7cc= zGUqMeOv6R0zf{ZzJxjaxOF23X^qj^KY3x0WwbJwQLdH|2;Nh{X83%fv4|<*kdL9ej zEdV|HLC+bikvRq@fS$*Ie&~$I2&Fi}0=#D*q7RPbWHt?NRFj%skJSq56 zPM)mN-gx6rf0_pv{*Cz&0^vvE9r3E8BY(@^>h`=LgR)^#AwCZfrGZh|?+q5|h@jhs z4;ROd=}K{N)m#z{-)xSJ&jGc0{W?i)eap7)xyW<;d$W0&_U!YGz`yTV?+eNRt&$82 zB9%*o2AM0KWM0oqP@jOBapQN&#hYTS?Up6BC0{FN(>vOCzUAlDzA6m`gnf0^)Tx@5 zks%U`#?QNOWS)|jSGr*QxJ;0+NHRpy>V-h~dFDiOB9gShJW7C*>&&ZSZRR3X*N@Bt zkKSd@BQ)$~=Cu|g1)JC4Pvfc474$Bs#YLfCrgo{y7&$U8uemw@L`Q3VQ92ZA`pCxC zjygkp%%83d8>ZV%pB8*6r%zXbk2Y@fdXJ9wWu_eJZ9RPU#GWY`{)q+xL0no*?o9%b z=mhSsQlAJAHx2I3e8T*>iXs*at^UH{kY8wJ@sm~^j$as$$)pSto61f=eyHWKw_^_m zMEB+9;@C^Ew~5#iHorz{@MnpI(iD5}H{!xFvEFjvT%pWfjOlkk+5WBs-3ZIas-5{O zUu&sZI&I)S5HyHdnRubD?Ad%@wP*jVi%UwkZ#@u;g>^NI<&ap$AMunSu)e&0z@yr* zs*rzhJaf(KEJL#?faUA-a+7ZdgpsP)RP4-_&0HpCX8C+FVnJ_jM@LgrM@Mf*Uwc!> z*>;hlKb9qh`@Vf0C--lEfBTjlXAjhFeP!?N9U@N;(NXI3YQl{Mw9j6ZB{Q0h99gLK z*B>0{&noUrICEyWtr*oiou{y^uvAQhXD3ai?9R-ywfo=NcD(20*1elI?Ax**9r zt!d9-H!-m#lx66T{!+Jfwu(fkzm~2lx6jwq^oKuO^yyC>d!>g#2sKIQ1qDs94qY10;vd|eKB+r{5RJLuqF#Twg>N6)){ zLZwoO>a$iEMRTjCxzWC4^*BZee;?Y~cJIAn?bEvQv!7LE)YqTI9=mB+LQ;A|N89PP zj{3Buge+3H^M_8fRkx+43cgV5SAn-CPVDW?tL<*>%y%W_r{okJY->1d5CTtZua*@a z5ll4s|M`wej}lDoP7rQIk;w*=la;P;xYPIz{j~*0F_cTrX~Gy-G}X5u00lLm$#_h1 ziHhcO+sT*E+?*+FRdcN@nG*Wk6}yY<@mH9$%-K|}hZsvgTazx9rC(AjC*ZQqOBc5gWwk85|`e423x!>mC=lAp~kjL43Qbj;pPGHQe}bQvn? z(G86cm+=_5NKtwXnZ?c^7Z#tS0YFkIluR zV=0Di)@;ij`Nd{Dga6I8WoP#G&xnU${+qUC$8hS>q#e-?BIjLFQf8dR$w$z;7 zxZ#Pv?l{1Bbt$!1S8>18mAP}VY}+R$PtdVktWs93s)SxV5 zruenv$A9+i1xl(io_xE@ai@P$d_ahZcIAh2%gozA#Q~kfIXq2+>?n2DyYGskBGY{M z!7BIP{?^qsWy%L*t}QAP&pR%2Wv(q7|IIS7*;ah9CWh%^fgu*e52DrAzf$?cA0hv@4vvl5bq{e3&N!KGvZghZx4)6g4?7VN8*Rbl9?N`wcF zhUEkI#d>iURWe-e%<~?&L{Ej^&lU|0BKyKgqODEjPo0`C+XZONjt?_^%Al1QKw7R; zJw_9<3J~rdos4FR1kkAQSbQ+az*o1@dq`BQ09x_i$Gy+XM^4I~Tx^-l$Nj)E7C=K;gk4WyVQ#({s+{qg+TE`J5scfRm~fBhWg0RNVP zf2FTODfqW^h&?U?|H?dIlfb`|K&sMiMHnr;a|xfXMs{Bdt3_sl`%dt z{Nq8}!#J~s8I>w3z`xRGL1yhvV2^Zu`M|$2kJlv5F7q5r@~3l-JeD|noC*FN1$#US z_IM)bHy8Yy1^!LrsnR$~uF2vlBzv3&{>^^zMKWegk0cl1%o1%q^)I6{%&C@9O!Z*ks%nXrAj*CM8rv%@wt%Tj9>;3rSkaEc-!PLCmVL9#X zr&BX$UxNK17Kl4H8?-L3{miaiyK3u4W|CMrOD9N3NK7x6^ptmcQbR+-nHIO5myz{V z>qKAaU0`yv_Oi7e%5Ovp_DYfTlQPmVebS=hXf-45KSC4cdEhAmc zJMofbq)?MhOftHBCE>nDabeXT&;H^Iyf{`p_0pd|`Q))jpLy|%J=?Z@{P8EB?1525 zWv{zzDZFM!RytJwL7mnZq3xyPTSuBt>I} z?#-A+R-)puS=qU{xs-ToYsmHKr<|lGGA2z=8f-pw@YAUWnZ}Hnii$w2*S*01 z+-AZ}zW@G)4Lc#d#b&|=X@$qI#`*2NF;P}l zMhT5C1HsXywCmn>nVuJMGQjYsM@qDiy`-eHbo?#zL04NLd>1m0z!~dtWogNL_#4$WMYGKsrT{*4(w+JDKo<8kuy$y!d`>=6iZVj}u%rKRa{Sn=E^O}Pmb7SnsTcK`iV zRkW;tsM5t{dh)f@ltf#5r-PoVRR$ypVS$0+fkV~gFhD7zxDfv`58w7Zhd(I^yFVy0Y>_IgBm$^)u8CU&*t?`nL=@|Nc-tEi>6P%OQvX!lWg?GC3iQommYk(_9?E}PT&{qKMO8YNpq$~I*i)~l;dLv=zrFv-gN(;dl>kd4#I z(jZ5KgPuqf#y1+4mbl&sV9H?|lvf}U6ly?7PR0!mkUGOingfa29!GVY+}DR#ZRyNR zqu4MADk)+09zA(yJEZ`0maU=<^efwhsVBtviA<;R$sBUB0TGnM5?z+%E>UCvj$m8R zFnMypp_Cw~_kXmLXtEoq+Mo`ICp|RDZ4sb3!XyhXQl}{P;hB+fq zpn7E0=k2t$@#wSl(U5lpb$QDBK=r(nsg$HjQv>vC|iSpR^$ z-xRJBKxG2X!x{oSI{`#E6SO%AJd52gzvI>rGS1yJtRWtdMmc+6fva&Xu!?XD`D~V^pvfIJ3#KZY2m<^?1KE$h}QdocV!&(LTtQL!1 z#87TtblCz>)*mo{STFt}o>G!Hf4iQLZo%0Pw=ZQ1YBk%p*XU`yH{k5E)zwc(I17qJ zX~^|vd`NCfUP>NtrFiKaY+4`Z+<^Ys@JO^QBPXm4l!>)^C_#295#p-y z>La1-Y2(ICizC@N*Zu3Y*IvC~=C~|S>{0{(5s>^vvSX5iiUgzf|oo&YFN+Q_(+@Hhq`Nj`F z{P1|lo&c-^!6pq$NgmeTUhnnJxP*kW$?SU$zMiNbi8V(`R>)Ra`O-`ODSVZPR*|q( zTftO4pMLvZ;5QhRSorsvzXGvVTE8S}mFa~rY?MaFgtryx$Sz)`gs{ZDtI};2hLyIV z0N5(qJkaYr2R<{JlB8D8;Vj>jz?Dp~c1+|{pIT+}6-G~tb4b?NT7us2!k{`L)rvKRRZ zl=X(PN%gIsgR)0bQ*9QMl`wV$yZ=WV8_KR99IUUYK@V5oI}#0ZXU8XJYW5Wu?<3}z z^p1{$*hz5^yEjxO-orz^0^?7BtO}5Y8dn@6DrgCA#jRE(XIBVA>`?AuuQKHx#PT(| zZOM{Dhh8POCC5Uv8>20?z?(tWU@@6sebf;NXA5YD zk^bWG+6D(%IFLn3&nyyJvgXs8L<)dk)LyWS(r3SoWXTw}m(PA5d)Q zak=U%5Y`iV+;!sEu@f6NGGyh6eeWGSsVGecH?P|`FgSSb?Sfx%(Mf`s?eFgnRT4Ma z!)%MA*elJn*miUe566DR{M*=vgdUkwqGH6WHagiZJ}qQ;XmOvWF6 zI%H`etCG7IhY0n)OHK-^DTP4f8QmK=N92 zdB6BG?n&2_R4VCKg!Ob@(9b!ENB4SCC~Z$>ik*`rQ7Y#{*U;l3nSzl?n)E72VW8kw z0V~qoDz>knRgh|JV`FVjPJaIIg^3>%XyvJW(ZZbdFT8-Fipxre{2g=HieTRW2Qn?W0msfUXr{A9CY8 zb;d^@RiG1mK>S(#cFGOqyn;WgHxR*B%gV~jD^moxahvCcnKNgOYD&J2Fgk>)4`rV^ zaNv~FNp-W^|MK*fEuSCydb9JylTV(oL>8~h*NDG+Q_GZz!-o$aA95Xg^UY%xKAlUv zohQU~=IyZqu>-a@oC~MJ!qgZ)fT%HR*RNvKf39l)D5_>S98BW!z%XvLKOA#7BM0-fDft?`bXQXCjgEnNh=7Bk#H0! zDxI1C0~X~0knMH?8@Qbo4t2V?Q-)5FMBSSl0kc55%6qdKB#l zmcK3q>yPp27n1 z5(*zXDxvU3tx{6ml#-JWJxr{Vpxr(}_l`>DLavC0DT{Yl{AjNe2TDzb0XbN>GIqmfAc>+8zQUu&4gLP~MSS9z9D>M~-% z+80C4k`!HPIa|A6YQAm$+7^2GSU@`BrxPRNnGIp|oqS`x{MRsg|?vb-?ZEa^lDO&@9EuHXn!_vbHP|c=5pj;wKW6j)i zppoxP83~!CoRH4RkRi!*?M*8M5Ee%XsYtRxdT%e~R~$ILDf08*jB}poR%lyEszKKZ z*ojk~J`^wWbg>LYEhANzf>-HWQOxLcD;?s&)UGbLvWtr{GfZB-6IpasIWc+YO#y?gheePK_ z+BNWbQ+Ic-Ehm3+-nMOd@|?8&lqM`0_Z})NW*RMn9nT}PpqzK$9*8rYvTz}6i|rTJ zdS9%uYNc8uwZ*p})UW#K-FM%9RrN#n-+%v!P}-qGjBhW}()@hc`|XEhEIdq104}Gf zV6KE?2lnjQb0$QdxL{JMCxK|kO%BJ{QW@&l5Si@O%8fKM4NpOgr2bELlU_AZ2jVB@ zN$@5nIznq;S|BB)0hhbIy{)~yJG6%3Kf%ftOe!2^vn6Jw50_bXbSSC+I7pjs`Efxt zFu#pKX{GkNzy6hUJEgJS*n{N0c=NT_-V|lgXP}@omc)b`!GMvDUX}0=-wI`1C#NMh zT~Rt_%mr6{G=saA&2m|F!mZTy5ug(2$3bhi+%g9v(^|y` z*BG?PxO$LH{|>PTW|O>SUrQ$s!H5uHt@KHqx}qZnVmvTpdsIp-#G|ZaCacUZ1)?BY ztEO0cd805Fq%lXJxLj&zjq8IC-g)PP;OCu~`X-(}{MrYcL??c?sMEc5eW*ejPc*cU z@Mi#9@jIA*Y|R%tLoaV>ZT;-SwdEL--eGI%>?BwVtUadH-s6)nT#cr9<;Z9J5UEJ# z;z$6tVIwI`QC#fN)zZ-2C8Iuebe`_20-qu66t^cxlonSkD7>MJq@*)vS|9q$&M(^9 zYCb=5FiAaiN)@AY6a?NsHDHLT=8chbN>6C6@*eZonzmyN^kwlo85Uy&Bt^V;#i{$BkQ@zwwpTty8A7if484 zjP5EwsuEPCQxnzW6ci)iEI#id=o) z8rAg%A*pyB{S>@He;`dgcxU9hUc;lRDK@$kbC7YSPPn->!p<-G@+97tD^>~RzBM!u z&X=ko3dlsi}~8VKQC7fgaF0%-vZ+#VUS7}GD^t6+_Z?%cuA zV1oZ~`*gX2NgCs2sY+9v(qoa+0jHEWac%j7Y9Smpyb+9-!viSk1_uTsJO=DQauTv3 zH3?hAvu6ibHBt9YO6JK>`$C7sQdkv_Ld?1dwbrVxlnXQ|wNGlB72*;DU#fPyd-;oeJ7f zfddXv&i7oFujaY_pZe9QU@e)C*ACl<GTPw2Ue-3#*@zVLn z$2Z44`NVgu?SK91c2yqPckXa{e}0~pAIb8=CO`I{f5d;hqkr@}FkiV24D1r$r3T(i z4g5Maa3Og8cHa4AAo$C`%u_({bNtdKIBpN@5EY^f1V0HLISJO;4Ua7IO{Y?`7E-eo zQnRk4X5A?ij!$4oWl08`7l4z8v%OS=s96g+^Y_5!BjJ(r!R@2qkw^32|2F>PT&{34 z^{CiC9^QEv_oRVgWX^Y|xDNE62l`I}{f`3uXMz4*SS`;5{VxFhUk3VL0QxUtuTh}? z(V+ig(7%hbT)~CJ$d^SzIuKQ%X)uxNb+f3l%~qch zKhhnGo0}IG9PX-sD`56{wZ)4CY5J7f(@j#bR3$b_tj;Xm`XZ6JSovON8QU&0Z?~;G zN>>?FKUxQ8D)XSo`EJjHpLN*D=GO4?gHX+jfW!0jBzne}t7#Lei{k(-pP@B3o=p$B zvyu2N@~zpE4bb&m@jmn0*8G6&ThrJWR7$@!S3D*@9-3FHH_yVlz~f1{^kx~F;%)eF zyi*;`CpbwMzPBp~G7-r^4CQSEQycUcUZ-=)6x_T#c@tq~f*J0-i4ZI^3o=qTe^#c~ zmythC%+!6+wzlZ0#CCwCYg#m#o)y%z=7!#&TS~NW15&hBrv08r5Iq@2PtMnvKX(59 zp@$widGh3A^T9ofEtXF*eI$akKfSy0^kZx0KwbTtWxjGFgMt>lXt&R|yUzFY=FOYm znX!9!W;-`=r1jKruuwtLz<_t=j2SZ~8%4dn>FMxJn$3>Q2+|VqCDDaL_m8R?Qv2XRO);LAx9 zN(JQSU(Gc2Y2}%U*z4rLyu$fxZBH*1=Kcx_t|a#QDrq;al#DT+RAQ$?aeqYT6LMnk z^;`SgtClet>k|pySt=5zlh*vAjMCEI+U>g^c;JE044td3TaWI>fqul!GIVuJP(pSR zLn!7Mdgu#PT|C5B;BtumGeGx!#5!nXJ{|j%Ux$)?*6~uo$XE~7M5zLJ44Sr}Bvxz} z77G7`x+`buRkzQ(`n%s;3y1m;Asc64m?T^c6N5R zG#r+zPPFy+o^5*PZ(9e#CkSh;`P|M5C=nlGbFgEs&W1!+N z9VXFEtVEZ#3r0NX<+^1o#-~ zxU<5!?4#{)yF0prnkzd)3A&vgyB)xfaS*YbwJWbgh5fbhW^fq%kAK26dX~$ts92oX zA8zYNyt?ADt1*i56;7R6I3|pNOozI?u&}Qc)&7`_fuK9Kx20u&ue`c3s=huY1%6;m z;$DmqFtp1gh9FZLx)w!Qzy9U@V%TDEVA1a0-rdKF3(1`7we8-mCUJiS>1ko^$3|CG zm%nJyqKM&MvczsjThKNgUBgZ}%dV|(+PpcUYG__z8{PEz=bw`_gn7OF#*zD0iCYOA z_RvF<=8KojYteK{C%vE;XO2sogn=6u8Z#_&4;MPyaO~L0=PGcJWhP;Ak;~Q5!4NYR zjle?ll;Au$hKP{7w4pvVePo(AbJ*}rFwF_M?c=9RnUb?>!i2M3l!7}aAxJO`yV{Qv zu4xptwx*^s@*bxiWJJpu+-d|g81^KoSaj~#d8{p|aJ=CQj~yFM9Y{cX5W)WcZs zOM>vX_eU`*QAJV`k3&p|h!V2(qT!Ah>qi|smM96_l#ZQ@iC8z#gCmj+qyDaw`}b}9 z?4S}mL-Zs)36BdkoOvOzxv*7LI}9y7JEJ-1K8-a(%*#llT}FeQAFX3PCFj^ZL}Hz3 z#|VhRy3D*fb|iLl^mu%Z{TNr1h4xQg{>yXgKdCgo6>E!qBYFxOpV!bpfRihf&q+6Q zJq{xJ zk&g4#Oy(RpEB~S-i5D?@2?s9||Bj*jH?e=SX608(s#x!sWJWr=M&46_Z|?nSPM}Op z(Q~mXn{ejBn-QvW({NqBj8?pK+?lPEa8J8#Z#oG9yUhrA=zo-m93u>9Fg{qvV81xzIs~nL5{xjkF7%C6yn3youj8oLcdc5|cVvx}ylUt{cWbA~We2`>9jE?Zy zj13y=i^3#u9Z=gSxNbMuT;ZaXfyf}nlQBEAx-4Cf+gOh&^8M>a<>l4XY}&M`p+1eO z11xE&Jxhc9yrtG&l$%>vSe(+_wFz!h`c5tvyA07DWauNJK}MgteE^lJGHB>?ECS&+ zlR4qhH+p$$p8xn?AFs3=_HoBdc=*+qFt^Ca@V)lxYRkgi{DEF1J@mq@DQq~=$t}Y6 zJ8bP?sPDlBXr#1G{?YJ;6b`SG>&QvfydLuPcpY{R(esF?Ymd}5H#ZChy$YExse~Q% z2YJk3#=(X@7_!~Rj(4PZ6H`;u3r}v}DR%32Xpg#%R>N*$7j;+-y40PXCW@{jO}A%D z1zfu^YSt`=0~LarctJ%)#n`bW*=f1(kZs8+Ii-uP`st5v%1Im5jAql9Ixvu0n^{i> zF)%YVHCh|gcARbX2i+YppRa2-4ah0OqRvxf5~efOe3>}t{L#^)M@veIf4M+3DYq)` z4$ULQ8Sy*EjEc&c)BSf;h$G4!%9%i!vRBtqOG;8JVwWpF5dplp+smsaz!< zm&8;hDU9!lEi`Y6x1y!7THII4Np*L#%A=N<B6kGyOLb41V?E7qx=x&^7TdNqa$)G zZ%VZ+6_sn!krFU6LO*Y}C)h=Qx8XykCAr8d0;udtN*ajJ(lnuX z!n_3893}q&5h>vYW?bQ@irJPg=61(0fCvAf^n`JtMrejxl_l+x6z2a$sU>fSmgH1m zh5BV%p@(JS#<-zycrdEkorceJI&rX<702wS$KZyDj>`=pOQc;CdpM+V6loafXz*7y z@#AsXOarHjXuo7A>7sn@=4Q9Q&YP8$rHc(J=*lqnmH$>6EU^~L4U-ne6Lf5>0 zl9D<0lAiIxA^FcMH;$qdGRE}w77v4j8OgaU5uK32YOjs|y+N1H6_ErO=@{)1sk`Vi zcy+Q)EMG63beKr$U_IR`#yRpqd4ZBz!&b$#G<9@%ylQ17v`?(+|I4vZTOb-KCZp67 zc`4m;T9&=FPSj?SOJix~!#n_fj~)^#NZy}8ksEG$D_p$f(T0!5z}Cyhwpfp<4h{x2 zo5vXm+KCOoDMITr<+&xlCwpoXa8elHgl`62gLv*xH5t#X_sJ6~cDg!6ql9GTM^hdN zay1=xEVSMy?HHmFsp=IGm?>V2+NZEXOw;X_2muNBpqmG~eF@#&Jr394V2l^cwxAm# zD-tG(cVZL?f^(PlT6qTLmpfn6X613?*%hzXa^kw}(ddzrk-@=3oQgUfjwq-tBU&GU z4tOkCk%F%Nu6|NfP+7QXc~56DA@78iiM7L^CDdG8ucxoC7h7GB%=);c+Z@K=UxTGs z0!wi{EX5T6DDiDriV9c?qAJ53;7LopMEg4lj=69q!X{Fwto@oN~0au|wl!B7;!P!z&Y6mpd!i>oLSH^4Mx z!!*onu0rnS z0+HcQV!>;}A7>ZxVHf-s2NCyLF5*`q?1I#QYCCo$BUZx_|Tfo z^0jPRD-P>+GHf07#UK=X9cs|0cKABR0{X{x`1Zjz>@z^|UT!OrX*J_4}Y2kF9T8DJ}wksx0-Ey+1oOuyoa>F7MCTzYBl6-oV0 zqJI(C&_38XXipN51Tq!Jc=hDTwe!hjH6QDr_{=Z++LI??3@+oLe}b9u^+WUb_;s)H z5US8dz2KDJf67UAD9;gR|4881$bM)4JVx*H`kn7Glz-PKAUzH0Rn0*cN+;^j($S6X zKjRpQ;&jYN$Lalsozxn&iO!(rOzi3p`ue*PyK))a=XNF5Gn%hA3fyjKeA^f0P)-!( ze>8h3(I(sz4mCwniVcn28wC#}_IesPpuy9d!{IrGoeUhQ;rG8B`-fd~hQ|KBIj*p4 zIz#{IuJBe#5*X{O$j>O22;c(s@qVD(%#D4dtQY06n%GAxYz)UUoQ8H__D=}=M;JvU zBRVK&NlnfDHM8%Uts{A!T8FW*G}4n}c)CGe!f(pWY3AaQ6(&0-_v8uQ_S50;X=z@Vj&?lgYv$$mgFE}}gDwX9 zE<>joR9U>kD(e%sIQ@4r*djS~o13e6G}*ITvXw7OAR(M=$RO^_XYWr zC`OUKd$cOWNYS(rBOH!|G)$@T^K;U?4oA@KP8*H~$Ef^Njv0x_OG=6)%Z@vltf%e) z5lf9QGLNL{8beyeC~Rd^#<)B^T?)?h^vt|G0Oer%#Q97U(+7`oj)KR|zD>m#WJhMfc>S-psj!CsF&=(BrzJ{mHz>?oocEqzf`re&d|s}()d84E1bbdIV0>k3p73Zzdp`J`n3VAicFYQNii+v zL>f9{TE8538|&J$(v8C&gHY?90mfO68MQ-{(zODciv$ z>iN|#zji+rcz>bZ2~yeIvHhtg!9bgG{*0T*#&+ z(QWZLc0HRGDu+>CKdT400u43WoPBN>olV5CZPG!T%-u?J>`LWL@tPbH)B_t z^He}?nK|Dm%+9{$mh9|_ms&L4RhLf8#>*~iLfJLnWxA$pLYDY713{_P^ab%979GKJ zfAKYzbWkU#6ZFf(3uFcVm0A*?891kjeGe%-pwC<`yDGJr_yfXjB+4h0J`#$OZsLh$ zDD~c;mQb5BE0{1Em^Yj=l1VR(ZqX==ME360wBx%sKFzdo_i;^{IR9P*QFWbB;>MRnpp*bfbVsnItMyDve9-GoN=v4~ViX|9qSA;jK1poP0Ck<*q*Dh` zJeyoam>7*9E2N=7)jB&|4)H}WA(CVZ1|U@9pp$ycK}Zto;NNgY=|;dRhOUvSb(mUX z01{y!D)}&U-VtmH-1e9pqV|PjcDG?Cca1YDVPjO2uu=Oz?7atk9M!q^e`dDtYPD*s zZdtNy%a(gL#zn;qFs6py+aQx*Imw;9hW(WlNUT z%StP0ci-=`vhza94Y~Kt`~Uwxpa0Cx?(EbvbDnd~Q-4py(k)&FmWZ7`z-}gbr5V`Z znD}Awl2lNOAW}w=Eoo73RdmK4Pn3%JpLg#m$=m{oMuvO&h{Tl4BOw5xRzmqBkD>Kw z*4|1N8Zj4bIMNvr#z0wu63d2sZ+I*sXuzHe?g=l>)6n2iHhk{!X$$zeRdtT2Ktnmz zPWmz@Z!VA5_0j>J@4!nJi#R&y;+1FTb8i0GD7FEV~- z)SAEv3FdPG-(hjv9ep87Qf;)jzq?W1D9!ie^I0^nun62uD$Wv%kW0tl*>o%NBl^4e zohiM=Mnb`WuO~)!APUffij#V`na_FTbo3tdUcJ$v1$;^A%3{5`XbJlYj-A7ToGets zIgx;aAKtP?-&O%9ta=Dqvvl)#J_LJBBx+KG2(x8j2owFl{obVJZfq0X%}I8K2|Ima z%;$@pRlu_kIBQiE1+Q8)_ifw~d-uORcOXur1L;?(GEzUoxX3+y5%MZd?u3Rc2i;divhFOs<7S^+fO&k6Kn9$G3|K}VKkRG1rh}0IC33$2 z8L$KyP>`!mM+Qtm2J|BXN~~2nTgP)p$u>9y&r*qY8VQk2M+TgX3^b}ljP=5cEEk*H`#t@Q#&Rb?#ozx?viqit26ZFqm%uHB9M8ozjT`-Uy*IV%5~ zU{wC$!}shdupE7FUpQmNV3pNz+!xBGAQlnxzz$) z9Y?kt+4RBI)jNn?xK9Q^ogTpSMX$ziM5-TyHjjk=u>a$aySnm{ z+B^2twu46Htl!zwXhoA?VVL7?`Zv(1wBf@`B}~FHf0WMm=sP>NnT50N}5XQPZ;WnR@?j0IC&t*x#TaVV;0vPN4~U2E-eFi6+0Ckh8MO1<#2vapVl{ysbp1$8T^eg3%! z{%hi(R5MP3Qq4IDN_F;0P^y_mNpvB@VSFt7CM1$ z2@5YODpmW`z6!njnje&^1M0Zthu@9dT!w|XT^+LAddYEmlU*>>j4yu$M`ePHs1rni zjz~HAm~n4Rt;^KWM#{#{a8swbRHSbW*UBD~O);&r$6V^`CD_7l_27_ZBNmj`xG$Z=#wFrc9i;e0jaT zZTIU>Zvl;J%@ePEvE5M1hzmk^GX4sR%J1{-+Lb$Tf6Y^Yx|)Kj-4DF9XYVw%k@odX z04o2SIRynrk53wX)8!*Z)s1jm`s18wn!3^;e<$gw{|bZ3uj@56o3!#lm*gCCtu7t^ z-MQ;`JcW_og3wI!kR;XspsigiZJ*vgHMLajf|L&)EXPOd9xX{5q2F{>mAD(dp!du)H&R^gETV&6|NWi^ZP%PtJaFVJR?(f3~ceGC!|GJ!?PRlKjln*;kdQ zjn@3E9`!@RQnY4GksvpbDbWG=k)adVW%}C=-gJ{b@7x)`7-3KCcg6S#-ydg7Q6#;K z`s`|qc2xDGyK}St=BSDkO=GY{e-FZnvUaQVr0fj3T{YO$iv|xiY#~)Nc=Ql+X&jz4 zjA6_!;8Hyi0I4)P5NBOoPUEitsZzzbX%FM1f&68+INaU9vziuEjy+$8qxx6+0vQW! zJ*dKgcO~%62@Y#Fwqb4*$7ebTMU^UTtFyN?9O*cIOb;LHNwue^|IH((I-^l%W-kfB zvPOvL$v zEf%Q+Zn+PNO5_Y)KKq1=ltZY8f8kIdrqO*w2#%1U3(H6pKG=*88S%%Inw4G(c2UPp zfLc}(S@$RngjG`{VA`JWAQ-0j!3#J@RgmVCXUdle}>f;AfH zifX-@uDWrc2G4eBe6w9ojA&MGuCnDjYP${{{hO0hyIig=D^IInz*TQ6YJvnC^wREd zwAWgZ+G-9RQhJiLYWt^$*(_B=+%bN)loEQ=APY8QF6ljFO|YngJNK$svUT^)^}DE( ziZiq;;63}Y9Y}Q5IA+OqK<+L$#6G-M;RhwYUwGesY|U45;86QGUdePI(N%?TydzF> zyn@wwE*vkp9og51)hf|de$JNo{`qjcLs^qd2g32D!11PVwjYi+^O|z@{)4H6?Xvux zX$&Qp38y?1PI)Mt@@df1MR3Za;gkjADiKcE52u{MKZ(i`zsy9uLyO>;1?#m4j#;o? z{cy~uuwMOe%;KBbAIpjOX7)hN37?mx^ujN5j?K2%o?1L*N>Pp;)JM#iVUUe_#96~q+wB=y`2_<86b+fG zNW3ffa?&0h4b9|EBy$i2ng)P+2d+S`zb@_G7Q^GFEL2Of{u%3^m90}PdguK|E}enb8NPm>V!HG`z}V@-)n1o zOEl%a^t_Upv(A`0=C=e+!CDHtcYt4`M6<$7oyoT~dMjA~vZ5~L^yt~qpK4aqUoDn| ze*LObyzPw{PP-yENVu~ani@4~kz>_La+N&)>Kj2d*-YB7VRGZaf|MPh?jD8-yL$o$ z@rr~WaZD+jJa+8F=@Y(rAfvs~9e?M*X%nCku&`WOYI<(}{<*ltnvV+%RuH|L^7q8V zRW8=!he%bm%w{Ry`#s;k!;x^^jW_@BM?b&gmjEfzhO19jYGdQks;VP(HNmpTzR0e~ zE=)QN4ds!2QAhNPXjuDb)!gV|=Kb;SYHVcH(FDBZFsusvRbE~IKMqK9QS|9(B<73x zqCFrH7{LrQoT6vW^Z5OFnf|ooq@=`@L~_q?TeOdkj^-0bjx-)`3ziXC)Sxw3@I|$i zv%VfSFjt#2VlFB-8%YYIijh%uf)M*9at>*-VSR#fPe+Dt$JVWTR61`2P#hN_HiWz| zssZ*WY`{VnI(WC&>p~eXTd>=?db)VCFjHX*?yrJ)Man5xG%GVZGc!9Yn-j@8f}1ac zJ<3Mc5S2#vpO!Xc$l@|m7cj@|o29arxN=vTZ|mouZrHH?gZCGx2jk_E%n>rRw$RIw z(s@Y&)olWVRaF%bc5aULV@;Ali0$iu zHc$Ieyjh5ne(cyndq`!aNwY{z9uj|t(jF&|8;mpD*vY|+JMX+x+RvRAT#{8VC^fNU z;>1x`Uw)>#m1HiYt8whz4lG&87rQCdo#adSo}ryMQOfFt-lt#fs(pFo>bF+C`Tp8P z$f4ge3}<5_Zx2rnT4?(4GfAT}Hal3R&qe3igZBBo_sUscuO+H(ZH#@c>f}hD=GHt! zuBB=DI>e#dxTEt#eui3QowKJK&gJP{2Cy$KutF8)#rcY1*@o9}8 zrP`D7`{niDohR{l^tGxlNDBw@b`;~T&!L1g$ zP8>gaWdHsnM~_#VkKgMOv4&8#ZoK`Zn_YsVmMpBJ)m(7$$Bzb9JbF8Ac&*t{0gL-m zq?7jT^)7Ops5^S($kE!mph_^4$e9-jJ1lX~EwSr(I0z7P?o1@47h6t3f+zTGI~A7+ z+LbHPW3!OvgoaNYxVTT#6tLxx}{@Q&29 zktx4>?16jkd0^@9QrLlFn@%YpU5WnT$J=-9+Wyf8J<@jQNfTTRJ)J#WO^uDsok#+Y zFTuhr3oS;NW7uaqkB|I}zY`XO3I$sbjWAZn7JSRY9>*r+!k9!>c@S=~6X7AjLkV+2 z$pr1o8k8z{oF<8)qP{*Y&DT=j5{F;V9X6kNpCdabJ3a-mO5t6P3nnHe=d7}kMMcAB zl!FZ2SJT~AXQJ1el9Wo_+H5Hq87cNk*%M3%r6P{&WF5(|IehVokHcoUZ2mMdFr}oW zMR-lp)M&73tKr_-ID6j3mt1o3*|R(3;=owAs_0J{UaPD3#%XJzx4Sbn79CV1-rGY4 z_QW@;ic-x9f7q85p$wjMI$ZW}xNOla7sF*2qgyV9zb=EzPKV2ud_KqY!_g^^gol+}Vq|P*Nnz>BC6*0`UB=ln;gAQwVVAK-c;Rd~Y{_RJ*%0#K zTSvja4rd<2mNGcyayaGjaLSVXD+5kB2TnQrq)u5ln5^z<2-LJC6-)b6020e)yNvp|9qA{owDc7l&kUG|gBJgUp~wuRhg84Ok{PBXGD@P?b6NpfVX(?D0=kYzHK^I@ zNc>Z6`v2puE6&dtp07=wJ^S_>XV0EIIm=Lw9F}hy))Sd3^922vq5cs6Sk2VWiqfjb=K}WMzrTMc?mmZ$>kf0I zpRUv|P=ab+{DaDhk?R-MR9l73&1-^1-aSW<51^M*-}kCL<`UFkv!hd@gW(*iVy&^W zVrTKL(`Am%j9%Nf20+5b6D6^9%0HO$H*Qzk8{$qdLk!6lkzw8gyp|~tTZ`4$IGP23 z7Gq5Y!zASn)dp3F=$J|*o;+Y-O931k7*G$9Aq=#wtN-`6ddOUASjUpibZo#igmm@s z&k$2G1pmUha<#s8eQfpW)$zX$R#xlL)eMEdFbs&0ET<3ppSbsnFFIGRj;&j_?w+N5 ztvjl(16oo7#{jj6hlm|D6rU>7edS!sw8@wKbke+;GfM%iTIifPbKbnf!SmFwIX>!C z?nr>k3PEKXs-Nk9;AepXFQ(*QAy97xIH$fo|Pe^VTL?Gr=s zL8<+%kF2nFx8YCcN|I1m)q=;8vN)hl-K?-z0gT?%bpqH?LlvPURB2K6c+GP~|A-j= zNBXr&6<{=6BG`H0TxoF(y(OgO8kUIhiZ(u+cWtNL*#kt#O5^2o)I2vbDKa5?UG)2^ zDB8vlR2+RxWW~sg$n3c6_*(QeEi=0$`Wl?{)m&jdm}m0?fM}GcH{uK7k$xAdruq)J zc{mZWllAm8I(uk{_noZ$Zpyh)TLbguh_zxHSP|<|M}+gy4ru%19MBPUL_2t*L>-}= ztGP>CBALGWoMhxxkd37R11(k?iRtBIL8oNn4a9gi_;o1_V~M<*9@5RLlt{cyS7@Qm z0FhUs`-U3jgWgKa+L{hLwL5+S=Xf|;GyO0AcG>d@4(EVFyLSEd#a+7&9kLf5;t>t& z%H3+yI}hqFeexhOTk@#$XJys4wjNm1+FDziuGeBzG_1QXP;(B%yR(Ic;xn1f^NulN zQfAH4@j1Qid*XST8#`Uy#<8Igc>w|nlU7drlV@TcOa1lGsn+>dxo6Fqbdg4Zgfdu#ty$TL=(TUOX#AY1JkL7C{ zc9q2P=&g#mC6v@;4XAYNeHEmuXMOTMKF4w4II; zvMrZrw{ZS>jjI0qfU2a$4QDB4xzp6|+k>QfxuYpNb>)+X4lUz$u(eM=edXaN)%~2* zN#Zh!Jq;pxjOB4!j_G;7`Gblzy$4?Y=%bHbE{T;p`Tc0du8(k!Gpt*tsp(q+YL0L# z@;TG2&}>cvfA6s9t5FvA#;B?YRqjio%8xe->`q^m*LRr@;b_3FqQUG+f*MZINyy4c z(uN8Pc}W(_Vy#QsPOq8T>Bei(+7rTo(G|jnG3*M3X~R}jr`Af)E94V1Q=Q?6t*gi4 zfSHPb^hKl;3RU!|4&|VOWMJwW1hs#q`*8F`tl?e&q;P_#$K;;4B5_UHf8RARO!Cnv zc4C_3Y^EFSIN2$5v{8I{)FCrERL7)zNp%5GxuqXwLiQYIk1M@Pb@?H3I^cZ6lCL_u z+0)6M1Q)}69W7s%27z}MU@1#5?TG4CiCUUp*kagdK9opQ*cvh7oUq_q9Yb~ml+>U? zK!<>2Aavk4fuAQXCIl78Xt01J)9v-`bq9dkX=-b4Zs*h6OrInjT7|u>K2arf(k^l6 zJYiT)s03-C3G7KEGg`Ez&al|h2u#CiC2FPCV-|LGv~_FYYz8X|N`tp459+A6L(sjF zamBx8RZBRn=5QgwPTQ+C*Vk_jIjXVI8P z|7_~Z{0yOSfgSP{2eHs(?G?G6Hva3^=-XWqohSQ?;``6}=KlDZ56bQl@- zUseTZ14Y9>E7gCozhah_iTve6W=d6sNMwb`a0P6c0A&^+!}Ujo^CLZtK!!_&_D)$! z((`BYe=?HLbdKwb56MJ2D?pALfgCqUY3%cGzSu~Tkf!?czaQ5hi{#dq6M77im*j*_ zt~mxvrUfFp)Nu{lUt1;}xQ%EA#k|N7)Ov3Lj)MHVF#oManglwi^2AkXzjp39+2 z6wKvB_#UxaBy*KyM2Xxb5t&Xhd@MV+?Fx9bY@xUjIy)Z7@a>bB;PVw zLtVIZkBMv1#>5I^E{4To&r=Vmwr8Jy;*sAz_`tm-k_v)hGw5)|v+%k&M7`*_X{K^d zo;Lr2^Dn;nMP8KX}M^RnG0iJki?WB&e>V z6$5}Bw1o#kPcI6PI!}@#--`J4^Vn4k`@I|-w?zB_`@@S$uuxyb7V(Fmx4kLJ^La~q z4_WhE31iKmcJoild1SKosi5}Ln}gmVMLTxq;^!OgXzOVGfB zqZ?1otOer$$7qA_ijHZj!ghla^Mbw`%e}i^@;SwWX`|!2ZK* zT438w;I*a&eGk1B9Wtox=>7xy5A0a~C}t{&*fku*jueL@#a>L6&hxBTk(RdVHSz0T z4!1LpDm~ArBnhSpRT9(y0uq6VpkkRpM{8U4!GqOptwCSY)&U@wXEC5gj~(cOC$8W? z!_iUu+*40IcQ70*jkd+EbFCe{^$(Bz=7Hb*W`XEBzr&Ra4Xj&#q)rU&mRrh@SMO7Q zgb=G#wdSzR){3ahhpDwi%=cRE{&5fFSi`kZq0Wi^Dtbk<5bb|D-xoxG74*8i?OlUC z#7V1IxN{%nd+pCpKluD*XLx{RnI5znpBXQB@U z3BSZak`PQ?PcXf3FB(bMs}3HlYG}~RGLqswsMg6h|;GY_0}&mBie2g`?&}rVC$QNq=nBZSoILF>-Hpb#%aZn65~6rl{YtvLhyV z8b9=`*qZ0xz2oyWYu|hQRUF_dkh_D9-X2kK_VfmQOSZkIoMb0lzwU##NT0ccTjQEA zN4pEjwT-+QpQ__z)wnI_E6Pn2SkXkEGjTv+e{|>zY{N&58jfbuS2WO}+QOkspUW|9 z1W-C$1NEq*wt70S7x%Y!5#2%rlQHVGX943XU85uDbDi*I$42_22KS@Lheyoujtl zv2Fy@uc5Ar1#e68>?&z211NJc4hXpCEfZf(BXQHat9VgFpx+Hkm<)l>MXfL_Kn-PGeO=z0xc=m~he)F4$ z9)I@G*NYi%E|!ni?b^F{*V>PJ;bigladq@|H#RghhI>2Ahj@@!C2Z_MUT9EawhFAzyI1U>;%PBlJD?E!1m!QM5=x`D`Jc|y`Vuxq>M|f`kUDPcd?uL|G%)_}y zCchT`|8qPy@||!Lxh>&!hVOck0p`i92PIj`7C~x3s{D-3}z`}8O4&r zlFu@bWeDR*wGo8BT*9|9;;R6!A#=-WEZYd8Wr*{W{2L(Kv~k~-|1?N#z?IVCXC-r` zaNm{s*i#tn%Vl?o>;??>FHEb5qx|81H=R74KjhJo!)jy;U{?a%`-ak2DKpbH9g=l?AQ+ObbK^2>OOb694xoX2u5 z%X}8e=5Yqg*({S;rgObM3ba9i4(ieYAL`C0xgQj0g92?|qd<|!Tu`6`K3(i8dYmVo z#P0}}Jmn}UXYW6lO4u&T-vn<`+oO-*SK{w=4ref_rr5ug7R=sdW` zNQjl6X2|vA#Xi)M4J|A?;q3aptunrz~4^s>;CO# zRWVN+uP%eqgHZa6bz2zl72+rT#C4(#0?Cy!>hE2NWlbzBUcrLoxDSF`jZW zna5#aOM}wWp!75-Jq=1vgVNKW^fV|v4N5PC(k1Kpd?Mo%>f+8n|DJnmMgeg?gr!InFr)~lda1Dd)H zTD=@<9S*goL#;(nYc|yS9jNpYwplncdpt;%xPEkM=vibm3T|t zl!kYuVOZQfJuLyJ72PHFWqgozpHD0#CirUy>hp%-SeiPZuCCYAF1`Cg^#`7DIlT9? z@Zf6+slj;0_XgHKR`15=*9fzDO}(i9^3u_!YxEW4h`V!*zUUlQH&dQ1sGGrN+ zq_ni;pq$~AG_vjz)fvo|qy(4hSM0s_i&Q&OEEfhDG- zrW5#<37}k}XqJ~S8d#geed0u zUV7=B_tvc4Xb!h0rKY7MbT=G5#B{W(8q}cd-2Q29EduORYES(RkPvq5Y!2o1>zCDK z8ie~sOec z*}t%`u=?n+YJ&C5M7MR+bf#iQYeP-Vi8e0Fi`S&$r%eY+a(F6e&B@7u6bI1-s=VA5 zv(&%$-g}?z7&f-tj5{A$7B5}8SfC(fzB~5ol*b=ix^(G(zH-`W1qCBWE9X447g_0- z-la?5-+QPR0DYhS)=Nvx6`2`IxLKKmt+i=R2c5le-1EWYB#{h=F}C=OwpzmYm_5ws zyaTgvZ_JD(#IkX11ii&(yB`bhC1^mJk!a>(^_Z_+r`^naYaC_#4*p%vEcvDT=K0!i zM3bl0MW(t4qzrYTsV^+9^O#Fi9fH#BkPh!Ek7z@;+qOWjs){^lsjtdQA*39h zJo3ofYbKs?lc?I|-jBx3`DmzP+Ct2bsNL_K3tq%G=b!11|L59(zUCRSgWqy;-=x^& z1^5!k^bp+`myvvOiYEzj4G%es;?qTwr{)Emc~d7}#NWGb;gtX0BY)dh^FKY#o`%&e z6tXN5DhgP<{yee*`YJ8GuC|_qptRQ3cF_EtDClGgs*X4a#qmmsy2MhbBgN?XnLbX| z@RZQ?hjbdkqJX!xHH1d#)buF37Z@26Cr%uG?$oi;N%@k=aFdaqo<1jVn3LNNPD2P)wb*AXm4}r|l@K&M0|ySwE~1^wgf&dp?-OT& z&U=E1vGA!IV+_%>`{bn1y*!k1SPb+`xT9K4I^{&Ioqz!3R!6Lx&ax4uA6f&urcl;2 zgGh*_2V0l#xH^8kPDL|_L?1Y4$ByIX$jrf|)20=TP4{~f$Y0}aB%Hit`ix0M!`wVT zdR9s;7-XAjy+dbBn+Cc;hGE!I#zeZ%a24#>0ia>1&F|MV3C-&gUGK`3zJ7;smtu!5zCyn-}+DorG69@9IaLe-m37Dz%(*|l|WcExPH*W5zNfGYa;h%%PYc)Y+ zee)`{#QxLilO~n?T$O0L!Sl2mJoatBEEDCV3Rr$}9$HJm#MKO6ue$yAv(t~hWEjR{ zugtjWc5`@dduvNur!7%(gJz~>h?iEwiQ_Hdm`*fztJRk;l5Kv16FkHQJDncr2v)%E z^pPV+jT$w2w4pm3dVI7SKHR5zn|JKkv47tnGRkJf@RN7g^q!8I)<>D{s!tiAm$hTJ`nLjFRX-oICiCP7HW0}kxo z`0u;0;iE^FnE6;#G7q%1wM%B4*g|hd2jLfXAOoDP&QOQB!pMZ;EszSBsY1{GG_qDW z>Gw4o2*N5m+uCD`z`Qhv5|gsc70TM73GOL5LW8)OfjtMJPyYR!|H>9!8xYcVFI?3FOA4%bI@vw+or}cbrm4xmF(IHef!)VDmf;tS8>ZffLExso*xlW0lUHa3 z3@x|*MB=W=&`U*#)2|jRkdSkne~GEH+hF~OeIg7AU6zc{ zOcEEq!YJlMB@d+HAO;=yEP(n+H8qi{nD8=yH`;OJA+=sdr@6ujV*rL^vY_>lXs*)I zb)qU{>Mg3BIHMk|laU1bs#lU7$BXI>Dm%GtaeoR}hNkZA3|L$mU<}STo_}D`;s@_t z9GHha0?ZB)@yOtRcOPU2|M`~^eD38&DQMM}Iswl;{{D+7zrmul-1{ngZj#MbG{jd(YFX82}-wKpWKYA;<{Z8)6cGAlfB$OhGmDuc{AU}1N}O=@~M~CRWYr7bM--{RnI+D&LiH&{38Lhiv8RG$~f19wjb9F$x0gw zP_;4)oiKbE%Hu)hbc7dg_at_B%#rP1-1q3CFFf?j<1epT_0Bu1w!i;AsF4S%j~+}C zT$GN_H-h=G^Q+H3S$Ftw%^pnCMl#UH&PZEZM@&jlRSix7#_vE%K@UFYq*hElT!2^m zFjuF>aB=2Ebc^p2656RrMwLc{i|q<00k#}b`&oZqX1s}#v_#??mnEKmkyP>M>z#tk zo^iu0^?MbdOwAWUP(I!1xm!20)eCnXIX+Mnp1LT_5Lnm)awYfL($Orp=$f4VtR^VkOt8b9Sb zWj`z}J#AoC0_6&Yds!uTe>j*1T{~B;kJS(OO-f_h>x=f+Lb^P z0b>-^1<)$N*Vg1P1Bp1bK~jDF0k)ht%1D65U=#F9TD72TYBD0M2vA-DilIX>Padf~ zz9Ik|rlNC^YcSa@as}i>Vrr$g*Lo{8os%mi02p@*JQrfId!(^N10Z9@Dpw4Tf^|zu z6dOUb(&S~5<|PZ8fboRFxXjR-Sj_k{n?Oc}LIQ_E55|M?$c7IM zcZayvQ1ebgK0E$> zs*jN}7O4aUDJ?D0+S3BN(AexrPBT}~1BC%Cr$MB*gv5k9$ms~d(9v|R1TqP%EBYjoif}4 zmEy2;V?Ky3SdoNVJy|QclCH(aCTqY>E@v(Uz*7RW@38cQ`A2T|_|POb0Z=vwN-Zib z{@Hjjfw;qwG$Z`zc>!_b(gNu=Il33onU35>J@G6QI;u0o(L@BEDXLl}r&u?Z5F?#3 z;{&8w6oLA#4)A_cy!LRY*<6v0M-qkP6%#HTuWX*EtBY#^yx?=t$Zfqg!F>U^-WtC; zbr1^{#KBl1y;!Im3`wGY&@s``R;_4d zWK4uB_xT2$(nP!di6+{G^2df|$A*5+hNjAfcFURHr-`k{^|o6^!0j%F1lEY-dGJLQ%y3$Jn7* zQD2H;wz^Ljy#$?buk5W-q7-09mF)e-mxeC13MN*5>(woPwfDdHn1QK#ozz^vgdkL*3S}2@?eQ;B3sls1oNyZ`G7 z=L)q*t_X9>ZvDN!qj)A5nUm+=9Xqalt}3*%ITbZ`ys7_gwe~AsVLk(@+)btmH7>5G zuE4dHKQ{S_7YiJM|2<)okH5cDKl;~qp1MW_NcF6LZdRPFO^$1`7opAmKCR^zbkmoj zJH8cd_T|vhWoWafqRsvuI_>Kz-zZwkC|b+uw3cbKmN{s%C#W*Ek(Y3j(n>`+F_G#E{%Ft+EfkyjRRKn$Gv@b)Wec4Hkb}<_5323wf zXtZZwxA_UWaM5TFMWa0wjrK@1+TTH=eJ!+hDO7(ORDT5;?Fwk{@{=0vft0ckjrK6E zl+ROKibne)G}@P=(Y^?cwjd#mqWT4AcMzo=fkt}-8tvKney%7{pJaFY813(?3$PM5|q4BY(t>PhLEw?S5*> zl7(e(=*;?KZ|yRYSFfpuFW9%zsHmuTVB-S->cdKgaR-wAE z+Zput_IB*g>nGhiKw>bVu~ z;ZP(1cSmVlcC#WSAt5zq$l3TbjU6#!5{E$nCXuR3a8bc%D{-offSHv+NvIY_&19eo`vSWPjx+0 zFpvmXo)Dj}^E~uIRn@)s|K?#1yKg2|fxF`KuU*I~_upfhrbJ<;8^fxrdkLk}nvQ&R z?BIc2TX%jyeDg<}Hg4Rw_Fxr~=8@go!0siMe8c`PHk!jS_U}J%v_nT=0;%*sRaI3@ zYezbY6W9}KY6|t{|$cJbJRXcam=2b?by3^?b@BD zk=P`q_NmT@>g@tdBao4Z27AIV+X2XOXF~*TmRR#$;WW`?Pl`>_9=+#eXszp|txYNE zsTmXI{iqBb0CUEFoW6AF3vW%m?DpGlzh>T~{QP{F^!hK~T52v2=*_EsdsgfMl4LT2 zY;X?7gR{_0%REn8^q!$Fe7PZ@t-D7uNoB?7i!6_m4 zQ4&+6T1!vQ*Y(~q?Of(F}6T)4+GUMj6Sj{s^)C=16 z=>aus7M_hCu#=haunT|ig9~Tk^nbd{apm?@gW!H572HE~%l&efN{w4Ab~r&mlUjp zf~nqx6s?+e6iK2XeD}MToVnqp2OfCfh0loYNhe3oA@AwmMH}i)54cFmiM1rs3^JCU z*4k#eL)Ba*ELUj^z=tnz)vS7N!`rXCxT~6YG$fzIN>A(VjlhLt6I`)sYY?3+$~^2k z6vOGh$0hkUu;|&<{)G!%(KJUEI^2YW&iieNZn8k61@v^lq5hA*qIhNf+bZB&UAjhWTH)zmcy6{lSjDmvN@Bu8C`_ve^>w@tv*Z4EXjT@JMuxx17)WE<<1oW|J zjO-fRE6cKS<*EaT0~rm+6_bc4<>HGkE^;4SX{vqa;$66nfch8d{@x)fO6E-%+Lxi$ zIvSs!v|g97Z{H7RqpsZ&KX{w^y;@+sWyXvd-z#V1e=^@|n~&CH8r(^Tfff(R)DluD zD0-|3fT#NJyz|1d!`qfGU;cT!Z^DELq=(5VEWOhl)5EEEG6-O%5}V(rR-QrI5R zwLnG(HiexBdULQTU}QywgR-r_-pr8vZ@V($ux2_*$N?}bn5scPMukpgV`Q~kqRBWW<3-pVSwF9!lp5RYZZP>V*+I#3v!76T7-fVL@7<6u$9zgU$n3@e> z$z;1}4JGq0Xax%;gzZ~79;7eUy2XySSlNP>S6+Bw(K)e^(N;o~OXBk)0KmT_-`(Q) zyoW^X^R-uADdpy~ERVkM!VBlbE{&xDAwqyI^8pO}7cdWqz7stoK0nQnJlt^S=I(Bw zK%3RTCM@p9R6)R+OPuWq!|sLuNLNQHErZnww>biqAiub{Sbk1TDe3tM@%32#JbtrJ zZO>O_G`FTol^D=<)f7}I3vIKfPe1>*Tgs6#2ozUOTdqIvysOF}Rpx}de{#j_*|+@Q z9PIS-apivkBL%bdmp{1nT3ArP^kmk42`R5O0@ha8KSHSF?HTkW))tg^1Yl$41OS;1PyvLjbuXciK?`- zqCn1-+C>HB!fb&hU!ffedPJod2OLI66A+Ma%+wZhIof%YmIHxrlk_WS5+VK$(KdGA zkS*Zgb$3ektPt86n@wWtY?7_XX3}}b z(`N|cXQj0nG;gvVgeaM2xX|cOiEej6)XcNea&~MF;I*;dX4@191YX>LnPT;pDBZ!~ zPhL1FIe1pSwqwU@FE3cI;6?R>;j6A5lELjf;Yg}-+Y(}ChIOLNmYks^Ymw7MifS^# zc&fV{Hgg0wvqh7|X(Q2MN$0K}XLpi)bTjO~-P@zuymJwwVw9Y1Jz9@3-5Y zhwFLi!Sa|`H<+!#-#+uqZ)XxUB9H<%#%`}DiOn$3u&*t2;zWHob^=hD6B|GJX!(9t zJnD#O%6l6E`cXn5(4ke+v1WWpgYK<$b#u$E?)_q%YHB*%8Vi}$5yy^MZl90Xcu*TI zGxmzNn3wVRGJnKcKpQclM7?Ia(b3x4cEM~~$7XGY%<3yusb75YPiCqn?Pu{htD;03 zWwL26@?VIk0XUqEdNqzuY%G(%#|2|bv!M~)m>vp+jHqG`m4vF@YqVR+#Y zRx*}FB|v@e7pHe$$E3m<*-(RbfyZhqsXi%o~gdO3dM?=-S*wKCB zQ^fVwD$MbcTOf_mJE^)_rO|Qbt47ju*xPw;WD!Wo_Z$i{Ubh|Gj+4*1=gu!Io)9GE z7wt~8ktz-_i2FvI%K5^GhzcV{leETl&0>w@fA1m*6eTYdN78MHTDfw$;S{74TC7c{ z)zglX>@;(F1ldT}z*m3+qFjx10sJ#WZO%Oie-{mUP}IN+v}jLo`LG@=#dZP57VD7E z5Y|fCy2TB{01PDWoz4N(F=IlH6qj#&R&4YZ-96DjMsK^)X;P=;0b$@PAC@4h|u$OcEwOy zdmI)VB1ksoa%ho`f9ELf1q&WipePjj3LLjEV}F4lBTDSJfSN~QHr@*{#wQCby{1Ni z3D)flcgG~r7&XNuIGh2r(-iy}u`Hvwjz$)cm8zptVdb`w!dD^#EOre;({fUt(#^_X ztj7#H{jliN4LZlf#8?+SZD&NdINqGi?(xSD5BEY1oys1;=G>#%16YPMaINfeJFDuc zw2(fF{ypFojX8!ARQu3ZERMGyCDb=2-ZnZgSW$C1K<*l#l~x-Sr|UMW__J^|N+g5| z2oIhRab}GT+P`#gIxZ$+tCtV2ld;7TCtS=Hm=3u*F&Lyn1H)2G;}-OebVA(3!01Dc z0PH&$8hQ;5Ld=VYOlzDK@K7*}J@Ho-17uz%9>)&7L$D4jBN{om(Ch0Q?A6@Z#KjIJ zT7EsiBU-vyi?G*7|+8C=Ni0attV#Y0f8@5l!PR$omLx$bW&X~F&b*I?q;en6mp2831G5Tqz4NS zF&R(?QDnFm3%Y2)Ihg2E8UGaG=TJT31xYC#^Bw}1i2 zMXx}cQ^b4+6wvq%y_ z5bbR`+S}piYRBi7aAYaVEOe#fp)07JGx;rJ+Z>kJEa$PDi=K2oy3sRPKZE6L^sR(wYZ6`I;OK0wbUJ0|L+4CHdz(+G2Jkck(B2L}dz;DLbV`y= zsZ!D2_Tvuyuu&A?k1Y72SzIZXQugC6sgx$2E2OA_taGOe!{K=)FnQw!4;ollI3VpU z61C4W44lptPBFJwjDVQce-4O{+GMJ?%kWHjR2j~VQ>M?IJ7>rp|gSUD3k;k5V za_J)v$N#C1Ond&}!;J+lTfl}l;-NIKfz)BcvHI0NJo)6~&#&f>={t~}U34teNgsqQ zI(N?j4mo5v#!VPpSU7mXIR2P|Z#Tnx&uK$ey}s^L->Ig1Q6*t7^v4^gCMz?rst_rdyxhWc(? zZFU80sdLUc>#SsO=*>!6oU*btR4R^|jx}pR&*UrqkNrWr$W2TO4X^!{TZR=60Ss{1 zuv>1i|K+Zy?*2EwrSj-~CBz_$ZFgZQ`ub;yE_5J@$0tJ#`J3xVG%{m7l*dofLOLd$ z{@-w8>SZ**_|3IQNY6!1pE_#P>2t>N$CM-YuquILSc0W{XK!C6{S5={LLY zCF0jm`n~LxC}vZ_YI{jCPB^98P4cfSw|jw)e(A#lpC9c+WJn*CIYG{F(iDDadwqX( z^?{W_zF;;aU*PeS-!ZayaN)p$%#;t)FF?5RZQgv5-~Z{_XO}H|cI_s=A2;7K=4qwO zXQ|uOQz-YBp*{FB?c+_<{73ZsGcfF3X;|y(Ztd=#gFE^rbyzef5bQ=$L3MZEYT9cv zG7@XTq@;`~M`jD4LD=OS<4&J7Z{FE6#|b`^FXzOG!+yM&QDSs<*7eWfkZi-TYbWq) zRXca_=i3}&cso^c-O&^1bWQ*X)Jdgy>-E$D0|xUc9MG%Rn-8172MKj*aj7o;(iHi3 zd}wUvA;SW11?K!Sv7yk>+}N4SXAuSP1Fgwc61xDY_CZ6ht8RP!b zPrG$nUV3`}y<6pJO;@s04Cq#yv%8YVh^S-{3K{SKevZh4MIG?P=%c{Y(;QLrVINkR z+E7EI0Mi~n{uOd6o-+3(<0`Rc3p@^m>xzt;N&-1rEiM+Fu|wOo9o9N|4W@qo6Hk;9 z)w82qe0ABGEMM}w?AI{)+cMWZd~`p{L8eKi?|x$rmMDZSiO3~j#VpvSZq!ikU zdVckzYp=QPnsZCv>G>Hw>&u2dcC6QMY<~IvK;ZtDzr_E}OkN#}9eK41Nul~^ee^((Uolws{fZnRA1yWH>y%FKM!Eu+0GF`hV z$gyJ-r>XK`JGm6B;V3DYbVo06I^Y&Ld@26)^bEgGh{%qYNto78OCgb}1Mga8BRUzz z7Dt>e{(OtJWCtF+2NLHR^fWd&WxRDr&4gG0Bh4Sv@M@~Hv5Q;uhU(LKz44AMwh$8X zN1OW>7LOWLTvX_e`eny`Y~^rwNza`<(RYa3ygq*PaYqbPBwUB>M({Dx<_3{)Q8-~`e^HF z!AHBLqdP)p2DwY{uN-=iKGAL`^O28UHt5Ks=rS$fB)dw^Oi#wIIkTTzNn~_huI%d1 z&aN(>rM0&1$kC%m>S|pUA2*SZ-^8w#x|*80hK_a$B5lg>rrA;3A{(S;WE9%db`FtOT2RDa$N) zwvqe}WB*KS+-0oKVVTWx9?Q8b^I6VhIfLbFTxut?Oy~HC>SnHZ6@1l|aCO(i)jbAR zcP(7q_3%vB!;6iE*BApYH5ab#H*j^A^Y0q?w2^Ri!{I-RvB^trq#NMsZiB14k*znv zqumTw_W)eokKpRAhN~L|S2r52ZgkwbKb31FaNl(9<>ohytLJjfEPe~P=6E#~oBUL4 z@|R(g9}QPG4z6wtT-{i%G$zht=Cf@e`-Z6E?zp2_b$jRMpMSnzrR95F$;z2fG^B_; zOqVeA>)7!e)9S6D|LO@yC8==yHrv4T&f2hl!pxa7rb{@2k|qX*b?++mCL$W6B6GTC=t5zI=tr zHf(pkNqmK9y?@c|Ms1G*DPzW zc9%$w+ux}BJtcO>vB#h6Xt5=Dx`W#Lf1F9UPTzcoa|0j?o8ElkjX#%SeZR}~;1e&b zIb3!4`6Yq!xZ5nQv+if#Ka9Sw^X->D*qtt)B~E$i8yoAJ!-340YV)MD zOE>1QTf2xPNlWVQ_xk<4!Q!I%7cfmOJDrA;oHmBR>O!9f1UT2CWF*z-@-w+49 z*>C6Ih1_SLpMbsime}1omiW26&s$>)s252nd=VLH~iNshPo1_EgkjzAk5Z zNlD27pTA#HQcgmm_^9vRzMe>lZ5_4(G;||fNlguqa7&X}k*p0!bo$eCEo}|ecpj|Z zs6_)=I9*3Nni*OOPd{y9S}1hzP-|+6BOyCGh8%EL?5@NYw(e@ppHP0ml{aIz{~2B? z3!ss>K|k}BE6y0!Ke=J|j<+9q^wGDr?dt5GKeD)M+vns&y32fBJ$Pa4hFJ2+IhB0I z3;H}tVpqXa&5cbYC@>M|l61`Z7h3PX|Nb}bnH4J~XsvI)+qr zy(Gh)ZLhOt(m7MP2 zAfqP|la8acYxfIJuXyA2ceX++)o;D@+j2UH?_&V?h2@W{Hyi@S-xn+#Cro$4p=QzB z9NJag*4~B`B{#72)m{!(2~s(5hwPl>q~vJ-++>W;U8K+qWZIK5MvkDBSsJ)OXJg~NtjpWh-G%nl+0NjdN|)Uhscs)Uqohb&i4v3DZq3LVmODBzlGz@$ z)nhdo#y}QzI@%ia&K%7g6TgXVeAD_pOrNfK^Y_pF>65JoxJxYBMKiUINNJI)J5vWV z%TFyTj#P~cI}X)KeGIVK|Z z1ZTmk8M(Q+11F?A2K7tuWV%{gTC>OY5)HkEq0Kg%bE z)MO+P#vr!`gE zw{6!;)Pi*K4mh2Wx^?0jlQ6ueVK37Po+Ty08A$AJOh0fjs_UxX@UfuYC^80U*MvHDL4B{qavP7&H59%CI`~gW7>NCFpGmh-?>HmVMP$T!sT;1@X6M zwH{qk3Zt4u-rC@(c8RdFcv{88=COrCu7sFwYs8oMM7VA@lz+69pwf(te$IwEUQR<3 ztV3J4x3e+SSaWy}t}r{cU|q;;tE>9*vmH%NXJPU15m^>XxOR8V@uRJ+jloepEmBl_ z_eKP&qwP({+uG_v9TF0iUpSKZ>4C1^WBZuGZHYcCBMHDsC&!L8DMcuyiVZ(-v z9EQasOSf8dmlq_m>MytMpvB>{)6&|FC0jH9FWkZ)ghsPtu_Q8yLVCc{3uJ2O$2=aF zigtChcZ7(Y0qx9T*DTTC>&9@*T?($Sv#mv>wc}V0B?v0q-O+*x$CI6vg|fP*u_-EH zUa{co;4_+jx4Ro^&1LDE{AvEMJN&=cdk;9P%4`4o+57Z<&h*Zi0S1N+0)l`{VE`+3 zV~J7YP2$y?0bNc&z_6$kP zP5CGP-1q&z@8{in_Bm&EefHi@S?jmf`Ym1L-wSoHW~!%MK=0uf@w>BJI8e4>>IajP zjY#S)B77`SyD&8|c|7^Op?ME{(?3!ldE}9E2$l>c_Y>OttK_4E`F4XVpKE&J@h6rq zBsJ}JcnJsRLy%VAZf<0HxPppvhIx(beNgp4A8(Wi4`0$iQ-x_n7IAm+oOEuMJRn6? zQ-!xvGrwiF*l-7SC&R*0rYRq|^vT0Zk#R?lAAgwLk9Qrh_0pAeSs*~8jt^&=KRmCL zX~L*NY$(Hr_lfx$2&ueLd#+owQ*$~=Z{l=dJNh@slcA%OiNXKV-Y>J6EF8%(-G7=)tptv;PM-ULdRUyl-DNMj|iOD3cpy z3Kd;-iM|I_z+0WG)j{H{NfR%Lrjr=_=yfHMPJkD1x0R3*qKLo=QV9@a2$gw%a8pY; zP390s62!b&n?-_g8IXp3UZE?(@@c^Yj;qznnqB&#g2*RQi$QC$6EgV-QlyN{QcMbT z%uECy*SuT)M5@x!D_5e!cpNj}FuGIh49zdX6KLH6i=$4G1# zb{~hQ+GBb6$rX&9vQTdMtXFyzhVw>&>@$r*wa~_;6`EYpNd2*sF*;~S52OjWA^b)2 zkuQ$AN9FMD93EG(qc@WD_xKxY#c!)guV%Qf@cEOpH$KA&?3LB8{$}ZYtAG9ahQmh> zuc^j^WgY#HG5hu3cgss3ioA4ybH!umRCj9FQpbnNEQzC=k4Yz?lgGNGW9EDH>pph3 zBw&VfINi-=Yo;&D>q-s`|d!`BGA5Bv%;Q@2ufa~zlF3CukmSJ~>V2SVP?lEPXOow=OQHyVQL5|O7 z&&m5Jp-+zW$U*AePoyJCJ@t*CN^7{YH{6>uWk5<7eZ42;SoP}1{z9A{x?v>O(ph2~m-)bcm&JxP)bJ%*@EwT327J9Yao!y7wu8t41Hh*r@Ev-9b0cBXkf26J& z{q)mMKmMy1How2);3qrZ0d^@p(j=SR`z?F1+MTfV*SAPfz(X95=5OffDJW5G_02I} z5r!P}(2k~~ucnHNthSb(?#`lUoO_N8*iG*4+W8kq3wV#yy(+++7aF!Rt` zOE--lH@2wRQQz|JhLfq@ob0Sus*?v{in)1k4lFxiuVPBH*S{(|!a3q++Qh!d-tMm6 zlaW)04|Y=r8jslF>2V%tNc7Jy&FDyUoH^}`yjYWI_s*lA?a3N=qf4LMwUrU)(~lY> z7hZ6FbpLz3M?QMXb{rQj$E@{@GGM#E-z@2Qb^?abItt>{7CJa@$QjL=J)?9C9hBKy zo0hU2+FID!*V8=^k427kcBR@*)DlgJ4o1%qPvW9tCpEkb9}Zb<7CQ|X(oayS6h1mh z&7#WGRTlbpCvJ2~EDra8&2Y|P|A56}$K56=ESRQJG&#HvaFA1kgFb=*2U{tau{k9> z7XD$t0Z>gU(UeN+Pz6Ag)v6*$NMHN158&IR*qmNGSEVP3guO$#P>&@0ReT}%q1pf~ zh;U5e4q!3qF9+hX1}P?dePr?RMloyoN(_WAnuy9Fdmx5~JZ^_38G9_fe>5M;ES*(s zAlysM@99qIIk8ATd>t{9N{%!yP(mVtASU~&+KJMQhJG!H$krDH3Iy;6XJ@k6q4LBX zIYnx$2>c!REyxn!85@<6pRz#Gk;dVu%a(V-q(pHw3M*M*Gpmd`~oQffp~6kirm7C$EQzQzf1hWdfYD86BlCSzO#ZxD-_$BcWCL34mN ziRNYm!C!|-#k{7;mnhx1R6Ka%F)SE(!w}xiz@xvcl`_~UY7C1527!|e$EY%?RHV20 z;I3nxk))ldXKy0bc5rVkL9s8pXpp!7;s(Pb3uWL&!Y*8UslUI}#LJpK%R)P1#_~xUKiz?EmEGfrqSumJa<@1(% zC`yfuf?zQ-o9nnO1@|aULlN!G+R@eOUCSzI{~M+ z2v2vSqByt|&T#z^#(F~ZrLiaxj`sA!wWW~ZKsDi7ZI;Gy?jP@+mw`cvidPj2-fXg6 zkcxq8@Tyf_wsf+^bxWQyNh~~dt@dRH1i3N#0g_>#iWZ)v3N;v}Qxus*_rp9fFS3fbCiYDR_=w}A&Jo{5GlmsbL{q7`B zf!f0G9+Q%9Jk}RW=r7|d1&;$EsnWsR2J5`uAkce?etJfIpNHaz8kmYJTmaFrzTwRUj>N2kI6)aa*V7a=Tj`}NDuCBsz zRf6TJ7|T@|maCEYBVB^!>il39`#Z&j!9jk+F<7q3*lQGbGZM?yNGw-lv0RN|t&Ap> zUQ^?^+p$=##^H}N2Ful0ELUTXMvomkYpP?<8yFLwU32o}nx}DseWS-aeddv)Z9Nfs z^d3?bB0e??_?Cv@V7+Pmh7J2$eaOKG{4r-vWo2b4S_*FzAQG369&@cS_r?ktDQVjC zxohq`%t(?9`(v@pbe+@r<0>N64000l_va~l_EfUt)1uCERtgNEwYxis*?9zS=mA7} z-}LF{R~nq?ONU)GS|xlBbIho|cX8(aw6ReTmWj6l1G>9_XcgtreH%iwyX1z{mF(~%&%+x5F1Ek^`k^C7j=Y6jIS+jpvSuk}_LHuf zfEmKP`WauW7_brKYfYw%u(MYDTeWxyto=2^;pz$BHDz49X!>1uO&^ASH|1+mw;+Ep zZYJx*efFbB2(+;VTurp**fS77Wmd#zX zsIszrWCrqEM#1FCh1uX8xuYgjR$h47yi&aFO;*3(6;d>QBG0Vf~w%4sD4$^|F@!!-uoell4cD4L{q`+`Q$}O`A4-)}dx( z9XcHDi1NJS0|QBJi}aQFk*Durzb|^6NRPqtYkde*1YE!J1dzMJ+%_>9=HpICv6?Yyygcmfph$jvV~p zB@(IrNM9?cSU06c4b4|8EBA+#zRwL8H)U6INZI_eYSJbcX|VaMwAXDyi)trRLr5~l zrb?kx=GC8Sjo_oi%2aGh3E=>>6iBxy>&)Z*gvxG-AX}`ri={KisQ>nB)&*nQk(wT zqmMrN!2vScj^4Lt_lcYe8U48w{~nQ8@)u8Cn?9aB%CiS}8~CodkG%vp;;y>W#iu`z5flBfsD4KbI)8g4|Jf0<5sXZe@!aJF{Bd|te*SzN1 z>tRm3`TFZ`x#NyIF28i)teLaV8e5DZ<$vhW{{QD4td3+`b2{ynh9v1{8 zCeCILx6)nr9X@;v%>$g+3~gipu{NT~7#{=X&M?mA4>{}^xSx|mRt&%}X-PPnvG{pI zmijn&UcZI_L>+SVNpt@fiu*0By9YPI)(S8N(gDllx!Bg zwYnK$iS9xPpVZ6^Fc?`wCg~-r!HZ|Jb)Gu)IrXtc*U~s&I(@2ex)`1~Q(FY*@1fHT z(D+TscF|V*OJV-m-7@yl=>)m~y|RS{qo$nBB{i_5kT;>jp2H(hb-UyOEfjXALsJJL zT$aq*COQ0oXyd7so_VUd`DCOAG#p4KEQ%pv1pBgu97KC2-8h1YhT5Xz$;O6}CCQ`P z;2+z?zpk15w*KOZ1N=4_SoCb3-o z_8C(vVMOzYcRfFug*IxMH0c<)KmlDOw-UtiGo9h2badgUQKQ~{_r2HNSkJKb{JwoH zJm72*=AI+sP;HstmY3Jjt!C!{9*!sr1j{sZFfP^C^4D@v{bhb*-T`CLsV3T9Bc4Wt?gGT~BQ}`HhzK5DpsrthVt;fv{U*Pbu z7FCYmsIc2i5lPf2q$>{&gNm1vt^e}=U z)J)VtDhL4%+!qc7sgUd{3H(%Q*J`DV7G6+OzfB^u)D2s*k0;QNpwC`}Zm_G#0;%a* zC}ohb?&H0iQI?eB_iH8`X{`kU&+1gH zkS1+SBr@nOg0VzE5s|2Mhf5!e#}A1!a^zQLn*5N?b3)04X*n~~<>zBWW~PipG>c&j zu0B~ataWN@)FvajO-^xwpb%R;OcjNRL1#dI9-pmOT|d5bB3B$c|BgH6PY$VPe&u`f zSp5p_$`rZ004og7g={_`9;44l~^^pVu~y4wT+y+#O_fcLf$?_&ynL7Rc`_}Aefxo)zz4xtvbZz2Et;}Na z6YxTeoq2%1QtGO1%W*0#;$}S!wb9bsX|i~Hsqq$lY^mMl$t!S`K$w}4nFd$*Fn(A{ zyd{NRm&hsRANRxwv-rvr3$zf=%@uOlgnT`noo$`{4etYk*ro5*ersSnPrH zKp@R@iZ)pv@p>a|A^#EQ6om4O>@=#sYJ=`1r1p#H8rnpMsWf!F=(NQoz;@(M6xS%KGnkh+R<)bI&R>`i4}lztGD1`U?B{3g*wB zfBxib`c70H`>795wwnF^6V#`VEuK~!>pjs+h|U|>xpUVGudh=kR##V#DGi55Pp+z} znv=f$w`+HAbN4Ztn#Op26BuSEh)s+)9&NZXd-m)}e#uUYliEaolyTHiR_4!0OB+@g zgjU_ns9ZbN*$~Gcx2Z=mzx1cbH`K$UN{K=!0OMYZ%0JYMDTL$`z@wGWSw*ASIQ7jM zn?(u1V0w=2MdLi|cKdk24RLz{I#hERJin61(S*2JD+zz7z*H;52)P2}EtRC15$q_5 z^PmF+%#nZ-InU@DA=(31P0`FiGi3LVyus~JGXQ|7j1pFYtq-VD4sY^IwO-jCCEx>w zBLN`%jR$v1CD@7M5;R3KB*k>ARvT)d%Wbh>I`Dd37#?H9C&*VUW7uSC2XCbC=??a@ zn-UD_+$p4sjD(OY!*7WjG$eefTG-mbx#$uIzym9zFW@$q%t}Tg!aq<*L?U6Rt|M}T zg!mFQSs=5R7KtJ=+wE2^Cs8!+@PA^o%*|m8p=h#v2AITSGzzGgvv6fMK>;XYxW5Bd zn_}`sP{f*Sn4bo)#RB%3WSs3Ux+G335i3JOO`#&J1xn=~+1s$C&L4-_o~NH8#Tl6%aMWU?Bl=U- z*ADjCywhY7w>E@1v#b%Q8^-Mz%(g`2uJz!=&VA4sTeyi?M5vnYFFMX(Tq%hc6>%*9pFuv;hWXh)-u{NyvypyO;gK5DyXThs0khO zWRm*K+1On^OkQ#bS7{0;ACNqPMFP+o&z9GwBW5JA8zGGVw{rkh8jCtDoA(3ziP^@D zQdR)v+O_yH^3-V@Zm&Z=-jEZfSVjW)D544s3c`%+kH@|*sT*(FcqxXyz|M-*j%~pL zeKBWtkn)L9kh0XSm99!S)A;0_e<@ed-(rY#2j>WP zupA7qg5{6dV`Z))i>PGX-_BL^=M0f5_@4!oQZhuM0`dF5=PHufvQ9HZTEPeZJXg^_ zn=Q)*x_O!*(gwQe3=T3xx`H;!^5tAbe~%&30?Mh1VwS(0E$eSFL|Q;SEufxOP|q4Q z4>Yr`M!B8QO6Dq3B(gP6{7vhsYa$O;*i_F#DFNbNrw$STJ<`G*ANjijo)>3Au&>3^Y@6rgJnP+VLzF5 zNOTT;44&J#VCqc7*&3DH^jcj=%87&9j0jE1MrS0iQ`_fR9_NNNZUI$bD!$-8;<&+qWhlNZSo z)QFqdtwwyL^I)zZ9>qZGWqj|Ap!L^*)_)DOej(WQRlJ?~)QWRK>!*X(pATAp4TY?x z9aJ+>A#Fd9r zCYirh+5~d=Hepd1MC)&&K1=RLiPnz*tslYFszK}L6K66Xv|i?18iviFn0j2qXFm0K z5@`J-(E4)F`V!FkBGCHbhV5V?-}$TyavnL47Q?T$z!`5AC(0V2DNAfOn*)K%7uiN4 zkX~}TOn2i5{Z>dQX?1@M@&>3ckI})nHRB{Y&VUz%(>SrT39t} z`qX0U1L1I`0is>+&bV??AiCw_-3OcK0ClCVMkalg?CIaP*FO8f?#9MO^V$l@`lx*H zfkd3YVSoAraBRc-zp6b=-?)Uv_8rQPJq)8~G}3h_vWQe$gE3HT&22C$I2;N@*Yj}_ zSOFAokmrb6+f8%J=$+lOD&+kr`}bGi^}kA)aB0Z2@S9iPQU#r*obRK0f1rh&bVu00 zg&G`|MNWfgoEy`eI!iQ#SFX5PKQ}|EhhKy0Yd5#qoA9x5M9OyW%88h;^FzEWxAMv%nO(=O5JQ({3Ps) ziz|s-ygYSz;PuxZ`sHIMKsR>2x$+)p>||$C3HZ^of7_m|pMLW3#|Q6FI5482f^sIrmULiZxo39<%xpCu0<&);-Wb({O;TuD?&dA0_MjxE@J*|iK z?A)<;$KKsXy3VsyXuhdaE05oq-W-QTGSM4W()8k^!-_yxRJFLA8gj$L^z`1|jayEh zC$%H{hOKDTjhu$)?!bgG!K{GOU8SDXOzYP-Sj)xz&eAyQyhuhP4!=GxRmHpr5}N;X zYCr$wuh+b`aaT{tZ56U2Ic~rG&Pjcrzx&MHMpEM+VO{tps{8r+8f7T~6F;@e`0Ph_ z+Cs{deMbGzD)0~bwz3`qiJrYLKDKPxvc)`?TQQ%UIt3e#=sq4&z7<^Tvh*GjU6^Z} zj#R(CKx!?b9|@IN92EyiEf*44k80!!t1hbcTG8)as3S0^Ax4^ zQ2n7vzB)_b=B@_Pxye(I0_)_C9ebrG=RiLr{+wDz>Eo-*ce##NlSytDdf=cK?Zv zzN3eCzWAU_*HLb~?EhYE{#e~BjlOiL`?l*Zt)4%(0vPP;zQMD3%EfB?*~Mp8pL^xi zw|>6@g3?F-52`v2n9`bviaqejiI7-d>s10J!_jg!yttzcBOej|9!qcA$;3ea$%w7z zRcEW_1M!-Cd2YY8GuGeR*i_%9d)vD@>8($8yw%K;-V)GFSw(>lL$;T9JIsI)VDGNf ziRL3PW$rt&_2ZxEoMDn!`q7q_y)7pO_8)7H=>Biu%LOsn;RB|Y*4C%`GBPypm`iNC z7zj^xHP3+^;tE}JmfUd8gvu+vvS@0BLZ~@Cnda;7pCz`o_;W^&8k>WQ2xq!&xPfnv0VbzpKks1 z<1Jf`zqf5$W@b*F|0>+#+d3WT+{Xm5pMftH?Qg{utl#MhTz2|_i!Qj`CXLP5h!m$rr;WjbFpJY9!?ErIhflP34}`ZQk$0v~ z&yL+&Z*urZU2CyM{$;1pJTcxLm@F!Y50ktw35KYif?h<8eV~7cKN-y6gV9g zr7fA1a+}|7O7({$QS|hbzUE<}EPvSKbvYeN7Ld7bdTM-X1hJ9B;X(eP_0cWp*ZbC0 z$Q8<{Q56UUXIkIxbO3=bzxH zp{tlv zGPP@X%M!BUDEYXP66V9aN0uVa3HV{vdG^Uje zg2L>4DvcvDffDSo=w6a^9Ri@6Hf-j2j4cjbb2s<*sqHZwCB3~bk*Wgo+xBO>{gF+;JBK}t4Ei`*##~mSGEcU60nTIE{m2jiIuR+mEkXv`| zA{KrByZ79C?`{ZmIR` z6hHKd6A5d7VieGtK76x~uB2OcA8!MUY4~XS_Fypn`LWhuFqjrg-wkE?7BNZ-6|LEP z=!< zjvedik^auFc+NTt40p`_Hke#G1}NXR=xugAecvNhMxv=7q<(B({o4aJ^9>G?1G0gRWc9qWJz`pm={662N#77_1*UPt2Zh!kR6fotJ&Q(=I0sD8< z&`oKc1!J;YJ>-1qj-ISJ@{Xo#-b~bm`_RMvLHCK{hZ@?IcuJp7TD7mBf?RCOH{0G- zrd7|I=RQ&)W6PD6mdfPL)f*sy&*lKK4PuH*(|ezm4N`8zIi=!w_feQ5QX z-@dl*WS6Mdc#ZFfN@sIlU;FXa0jn8E9F+~IOTu|-qFY55qINobmL!@S{)X{rg7)F$ z8^^?m3^au|NU@6+B;^Q*V+0pr>OYEx$4>aM*Xa_?G&cfdUC_DXCupSlu^{LGvtYuyqVOPsg z4~eJC;Ud(|+>z?me3+Z8$72>yMKm`Rc0I{ShzUl^jrL)H>BM7GRZ;e&!w{4%GG`1F zq;3#u#uATDFH&-kNE+0*qmyU__t9O50gVPw7AyV0@Bg&|JJKIue5&w?~&rp!z$x z8xV1RlId{`f!6qg$QvcjO(#;x!h^u2Jpqhdy9Pc&5_#c-g12odriOg-4d5fK0271x z#|HE@gZ-2RH&|MTlA+W(BO;SfFL_Pd;x!?6N3W#C4JVQ+Ja!uO*P8UWVO2D98vK%F z#UJQw?KpX|skyzYPYF!aK%B>ABbixZyi`TLKpR#8ykiM8B0Ge%ti!Fr;W99YH-`VO zJWI5rr?0J}y}O5Mi?z~6`UoTe9GFQ)#vL<`)l@2Our0~Vm(KSju&*=l932UoW(7fW zfP?wKrLw`v=76h}3rBDQ3tNKoggsaZ+Iu0(xu93m!M#er(99ekV2#4@E{;!Q@f%oJ zHi(<_%&h=%^Mbg|V()Yiw+ybD&0aa+VWT+HnFe+%Gm7U>CKLOqoKt2U8szJ z-0UE3ql0d6v@EXWZw-_gmdT46^$DHM7EIHS6{DNOD1Eu9P8D^zHi!Gx+g1_qiwUjN*(Wl-s9O1dMYA{6S@A_6uno# z;)6G#q-5sIni^A}q@=_IgCtYJb15tgscD6U zx>A%L;vc6ViB*C zIoeosDOr-Ojm&0DylP|RDt968!)NR7A=1NQA%lu3J&R&%%4nFy4|H|u)}ZuU$e*BR zoedT_(9+hjd)Lll*!hojdq$jnHcG$d$h2bd&LpKure>Wy=f)dvJj14o>E{e)=vB%v z?6)I2e#NPMCvwFq> zY`-pxJ2SG+QRqr_9yoxHO0p#!QY{{jZf!USl{QR@ey!6s@&pk2^^fo_vh|SL; z6J4Vz1qJ2eSJq0P)`IG4-FibgBXi|lI#CpiLLM{R@WJxhd4$Y?fHE&}efOeqb7#+) z5Apk4^pRhS$Jw@u2KtHSC@8SBfiv%g1)r>h$SiG;A0mc?D6pz47A1tE6t|#+<2aqj z+cGq)9|=q_DL

nb`oA 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 Assert.True(RobotoFlexTTF.FontMetrics.TryGetVariationAxes(out VariationAxis[] axes)); + } +} diff --git a/tests/SixLabors.Fonts.Tests/TestFonts.cs b/tests/SixLabors.Fonts.Tests/TestFonts.cs index 27dc03a3b..614d0af30 100644 --- a/tests/SixLabors.Fonts.Tests/TestFonts.cs +++ b/tests/SixLabors.Fonts.Tests/TestFonts.cs @@ -202,6 +202,8 @@ public static class TestFonts public static string RobotoRegular => GetFullPath("Roboto-Regular.ttf"); + public static string RobotoFlex => GetFullPath("RobotoFlex.ttf"); + public static string SimpleTrueTypeCollection => GetFullPath("Sample.ttc"); public static string WhitneyBookFile => GetFullPath("whitney-book.ttf"); From a18e567d45a9352d8182abb3ed2c72e4410d2b13 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Tue, 5 Sep 2023 22:30:24 +1000 Subject: [PATCH 28/56] Fix build --- src/SixLabors.Fonts/StreamFontMetrics.Cff.cs | 233 ++-- .../StreamFontMetrics.TrueType.cs | 289 ++-- src/SixLabors.Fonts/StreamFontMetrics.cs | 987 +++++++------ .../Variations/AVarTable.cs | 113 +- .../Variations/AxisValueMapRecord.cs | 47 +- .../Variations/DeltaSet.cs | 63 +- .../Variations/DeltaSetIndexMap.cs | 121 +- .../Variations/FVarTable.cs | 159 ++- .../Variations/GVarTable.cs | 177 ++- .../Variations/GlyphVariationData.cs | 85 +- .../Variations/GlyphVariationProcessor.cs | 329 +++-- .../Variations/HVarTable.cs | 137 +- .../Variations/InstanceRecord.cs | 89 +- .../Variations/ItemVariationData.cs | 131 +- .../Variations/ItemVariationStore.cs | 113 +- .../Variations/RegionAxisCoordinates.cs | 45 +- .../Variations/SegmentMapRecord.cs | 45 +- .../Variations/TupleVariation.cs | 185 ++- .../Variations/VariationAxis.cs | 53 +- .../Variations/VariationAxisRecord.cs | 101 +- .../Variations/VariationRegionList.cs | 133 +- src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs | 967 +++++++------ src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs | 93 +- src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs | 15 +- src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs | 525 ++++--- src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs | 83 +- .../Tables/Cff/CffEvaluationEngine.cs | 1223 ++++++++--------- src/SixLabors.Fonts/Tables/Cff/CffFont.cs | 25 +- .../Tables/Cff/CffGlyphData.cs | 125 +- src/SixLabors.Fonts/Tables/Cff/CffOperator.cs | 211 ++- .../Tables/Cff/CffParserBase.cs | 707 +++++----- .../Tables/Cff/CffPrivateDictionary.cs | 25 +- src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs | 35 +- .../Tables/Cff/CompactFontTables.cs | 109 +- src/SixLabors.Fonts/Tables/Cff/FDRange.cs | 51 +- .../Tables/Cff/FDRangeProvider.cs | 119 +- src/SixLabors.Fonts/Tables/Cff/ICffTable.cs | 51 +- .../Tables/Cff/Type2Operator1.cs | 75 +- .../Tables/General/HeadTable.cs | 389 +++--- src/SixLabors.Fonts/Tables/TableLoader.cs | 149 +- .../Tables/TrueType/Glyphs/GlyphLoader.cs | 27 +- .../Tables/TrueType/Glyphs/GlyphTable.cs | 97 +- .../TrueType/Glyphs/SimpleGlyphLoader.cs | 307 +++-- .../Tables/TrueType/TrueTypeFontTables.cs | 135 +- .../Tables/Variations/VariationsTests.cs | 30 +- tests/SixLabors.Fonts.Tests/TestFonts.cs | 509 ++++--- 46 files changed, 4828 insertions(+), 4889 deletions(-) diff --git a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs index 5df46e546..4adc207af 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs @@ -11,138 +11,137 @@ using SixLabors.Fonts.Tables.General.Post; using SixLabors.Fonts.Unicode; -namespace SixLabors.Fonts +namespace SixLabors.Fonts; + +/// +/// Contains CFF specific methods. +/// +internal partial class StreamFontMetrics { - /// - /// Contains CFF specific methods. - /// - internal partial class StreamFontMetrics + private static StreamFontMetrics LoadCompactFont(FontReader reader) { - private static StreamFontMetrics LoadCompactFont(FontReader reader) + // Load using recommended order for best performance. + // https://www.microsoft.com/typography/otspec/recom.htm#TableOrdering + // 'head', 'hhea', 'maxp', OS/2, 'name', 'cmap', 'post', 'CFF ' / 'CFF2' + HeadTable head = reader.GetTable(); + HorizontalHeadTable hhea = reader.GetTable(); + MaximumProfileTable maxp = reader.GetTable(); + OS2Table os2 = reader.GetTable(); + NameTable name = reader.GetTable(); + CMapTable cmap = reader.GetTable(); + PostTable post = reader.GetTable(); + ICffTable? cff = reader.TryGetTable() ?? (ICffTable?)reader.TryGetTable(); + + // TODO: VORG + HorizontalMetricsTable htmx = reader.GetTable(); + VerticalHeadTable? vhea = reader.TryGetTable(); + VerticalMetricsTable? vmtx = null; + if (vhea is not null) { - // Load using recommended order for best performance. - // https://www.microsoft.com/typography/otspec/recom.htm#TableOrdering - // 'head', 'hhea', 'maxp', OS/2, 'name', 'cmap', 'post', 'CFF ' / 'CFF2' - HeadTable head = reader.GetTable(); - HorizontalHeadTable hhea = reader.GetTable(); - MaximumProfileTable maxp = reader.GetTable(); - OS2Table os2 = reader.GetTable(); - NameTable name = reader.GetTable(); - CMapTable cmap = reader.GetTable(); - PostTable post = reader.GetTable(); - ICffTable? cff = reader.TryGetTable() ?? (ICffTable?)reader.TryGetTable(); - - // TODO: VORG - HorizontalMetricsTable htmx = reader.GetTable(); - VerticalHeadTable? vhea = reader.TryGetTable(); - VerticalMetricsTable? vmtx = null; - if (vhea is not null) - { - vmtx = reader.TryGetTable(); - } + vmtx = reader.TryGetTable(); + } - KerningTable? kern = reader.TryGetTable(); + KerningTable? kern = reader.TryGetTable(); - GlyphDefinitionTable? gdef = reader.TryGetTable(); - GSubTable? gSub = reader.TryGetTable(); - GPosTable? gPos = reader.TryGetTable(); + GlyphDefinitionTable? gdef = reader.TryGetTable(); + GSubTable? gSub = reader.TryGetTable(); + GPosTable? gPos = reader.TryGetTable(); - ColrTable? colr = reader.TryGetTable(); - CpalTable? cpal = reader.TryGetTable(); + ColrTable? colr = reader.TryGetTable(); + CpalTable? cpal = reader.TryGetTable(); - // Variations related tables. - FVarTable? fVar = reader.TryGetTable(); - AVarTable? aVar = reader.TryGetTable(); - GVarTable? gVar = reader.TryGetTable(); - GlyphVariationProcessor? glyphVariationProcessor = null; - if (cff?.ItemVariationStore != null) + // Variations related tables. + FVarTable? fVar = reader.TryGetTable(); + AVarTable? aVar = reader.TryGetTable(); + GVarTable? gVar = reader.TryGetTable(); + GlyphVariationProcessor? glyphVariationProcessor = null; + if (cff?.ItemVariationStore != null) + { + if (fVar is null) { - if (fVar is null) - { - throw new InvalidFontFileException("missing fvar table required for glyph variations processing"); - } - - glyphVariationProcessor = new GlyphVariationProcessor(cff.ItemVariationStore, fVar, aVar, gVar); + throw new InvalidFontFileException("missing fvar table required for glyph variations processing"); } - CompactFontTables tables = new(cmap, head, hhea, htmx, maxp, name, os2, post, cff!) - { - Kern = kern, - Vhea = vhea, - Vmtx = vmtx, - Gdef = gdef, - GSub = gSub, - GPos = gPos, - Colr = colr, - Cpal = cpal, - FVar = fVar, - AVar = aVar, - GVar = gVar, - }; - - return new StreamFontMetrics(tables, glyphVariationProcessor); + glyphVariationProcessor = new GlyphVariationProcessor(cff.ItemVariationStore, fVar, aVar, gVar); } - private GlyphMetrics CreateCffGlyphMetrics( - CodePoint codePoint, - ushort glyphId, - GlyphType glyphType, - TextAttributes textAttributes, - TextDecorations textDecorations, - bool isVerticalLayout, - ushort paletteIndex = 0) + CompactFontTables tables = new(cmap, head, hhea, htmx, maxp, name, os2, post, cff!) { - CompactFontTables tables = this.compactFontTables!; - ICffTable cff = tables.Cff; - HorizontalMetricsTable htmx = tables.Htmx; - VerticalMetricsTable? vtmx = tables.Vmtx; - FVarTable? fVar = tables.FVar; - AVarTable? aVar = tables.AVar; - GVarTable? gVar = tables.GVar; - - CffGlyphData vector = cff.GetGlyph(glyphId); - vector.FVar = fVar; - vector.AVar = aVar; - vector.GVar = gVar; - Bounds bounds = vector.GetBounds(); - ushort advanceWidth = htmx.GetAdvancedWidth(glyphId); - short lsb = htmx.GetLeftSideBearing(glyphId); - - IMetricsHeader metrics = isVerticalLayout ? this.VerticalMetrics : this.HorizontalMetrics; - ushort advancedHeight = (ushort)(metrics.Ascender - metrics.Descender); - short tsb = (short)(metrics.Ascender - bounds.Max.Y); - if (vtmx != null) - { - advancedHeight = vtmx.GetAdvancedHeight(glyphId); - tsb = vtmx.GetTopSideBearing(glyphId); - } + Kern = kern, + Vhea = vhea, + Vmtx = vmtx, + Gdef = gdef, + GSub = gSub, + GPos = gPos, + Colr = colr, + Cpal = cpal, + FVar = fVar, + AVar = aVar, + GVar = gVar, + }; - GlyphColor? color = null; - if (glyphType == GlyphType.ColrLayer) + return new StreamFontMetrics(tables, glyphVariationProcessor); + } + + private GlyphMetrics CreateCffGlyphMetrics( + CodePoint codePoint, + ushort glyphId, + GlyphType glyphType, + TextAttributes textAttributes, + TextDecorations textDecorations, + bool isVerticalLayout, + ushort paletteIndex = 0) + { + CompactFontTables tables = this.compactFontTables!; + ICffTable cff = tables.Cff; + HorizontalMetricsTable htmx = tables.Htmx; + VerticalMetricsTable? vtmx = tables.Vmtx; + FVarTable? fVar = tables.FVar; + AVarTable? aVar = tables.AVar; + GVarTable? gVar = tables.GVar; + + CffGlyphData vector = cff.GetGlyph(glyphId); + vector.FVar = fVar; + vector.AVar = aVar; + vector.GVar = gVar; + Bounds bounds = vector.GetBounds(); + ushort advanceWidth = htmx.GetAdvancedWidth(glyphId); + short lsb = htmx.GetLeftSideBearing(glyphId); + + IMetricsHeader metrics = isVerticalLayout ? this.VerticalMetrics : this.HorizontalMetrics; + ushort advancedHeight = (ushort)(metrics.Ascender - metrics.Descender); + short tsb = (short)(metrics.Ascender - bounds.Max.Y); + if (vtmx != null) + { + advancedHeight = vtmx.GetAdvancedHeight(glyphId); + tsb = vtmx.GetTopSideBearing(glyphId); + } + + GlyphColor? color = null; + if (glyphType == GlyphType.ColrLayer) + { + // 0xFFFF is special index meaning use foreground color and thus leave unset + if (paletteIndex != 0xFFFF) { - // 0xFFFF is special index meaning use foreground color and thus leave unset - if (paletteIndex != 0xFFFF) - { - CpalTable? cpal = tables.Cpal; - color = cpal?.GetGlyphColor(0, paletteIndex); - } + CpalTable? cpal = tables.Cpal; + color = cpal?.GetGlyphColor(0, paletteIndex); } - - return new CffGlyphMetrics( - this, - glyphId, - codePoint, - vector, - bounds, - advanceWidth, - advancedHeight, - lsb, - tsb, - this.UnitsPerEm, - textAttributes, - textDecorations, - glyphType, - color); } + + return new CffGlyphMetrics( + this, + glyphId, + codePoint, + vector, + bounds, + advanceWidth, + advancedHeight, + lsb, + tsb, + this.UnitsPerEm, + textAttributes, + textDecorations, + glyphType, + color); } -} \ No newline at end of file +} diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index df62748b3..b9e068497 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -15,171 +15,170 @@ using SixLabors.Fonts.Tables.TrueType.Hinting; using SixLabors.Fonts.Unicode; -namespace SixLabors.Fonts +namespace SixLabors.Fonts; + +/// +/// Contains TrueType specific methods. +/// +internal partial class StreamFontMetrics { - /// - /// Contains TrueType specific methods. - /// - internal partial class StreamFontMetrics + [ThreadStatic] + private TrueTypeInterpreter? interpreter; + + internal void ApplyTrueTypeHinting(HintingMode hintingMode, GlyphMetrics metrics, ref GlyphVector glyphVector, Vector2 scaleXY, float pixelSize) { - [ThreadStatic] - private TrueTypeInterpreter? interpreter; + if (hintingMode == HintingMode.None || this.outlineType != OutlineType.TrueType) + { + return; + } - internal void ApplyTrueTypeHinting(HintingMode hintingMode, GlyphMetrics metrics, ref GlyphVector glyphVector, Vector2 scaleXY, float pixelSize) + TrueTypeFontTables tables = this.trueTypeFontTables!; + if (this.interpreter == null) { - if (hintingMode == HintingMode.None || this.outlineType != OutlineType.TrueType) + MaximumProfileTable maxp = tables.Maxp; + this.interpreter = new TrueTypeInterpreter( + maxp.MaxStackElements, + maxp.MaxStorage, + maxp.MaxFunctionDefs, + maxp.MaxInstructionDefs, + maxp.MaxTwilightPoints); + + FpgmTable? fpgm = tables.Fpgm; + if (fpgm is not null) { - return; + this.interpreter.InitializeFunctionDefs(fpgm.Instructions); } + } - TrueTypeFontTables tables = this.trueTypeFontTables!; - if (this.interpreter == null) - { - MaximumProfileTable maxp = tables.Maxp; - this.interpreter = new TrueTypeInterpreter( - maxp.MaxStackElements, - maxp.MaxStorage, - maxp.MaxFunctionDefs, - maxp.MaxInstructionDefs, - maxp.MaxTwilightPoints); - - FpgmTable? fpgm = tables.Fpgm; - if (fpgm is not null) - { - this.interpreter.InitializeFunctionDefs(fpgm.Instructions); - } - } + CvtTable? cvt = tables.Cvt; + PrepTable? prep = tables.Prep; + float scaleFactor = pixelSize / this.UnitsPerEm; + this.interpreter.SetControlValueTable(cvt?.ControlValues, scaleFactor, pixelSize, prep?.Instructions); - CvtTable? cvt = tables.Cvt; - PrepTable? prep = tables.Prep; - float scaleFactor = pixelSize / this.UnitsPerEm; - this.interpreter.SetControlValueTable(cvt?.ControlValues, scaleFactor, pixelSize, prep?.Instructions); + Bounds bounds = glyphVector.Bounds; - Bounds bounds = glyphVector.Bounds; + Vector2 pp1 = new(MathF.Round(bounds.Min.X - (metrics.LeftSideBearing * scaleXY.X)), 0); + Vector2 pp2 = new(MathF.Round(pp1.X + (metrics.AdvanceWidth * scaleXY.X)), 0); + Vector2 pp3 = new(0, MathF.Round(bounds.Max.Y + (metrics.TopSideBearing * scaleXY.Y))); + Vector2 pp4 = new(0, MathF.Round(pp3.Y - (metrics.AdvanceHeight * scaleXY.Y))); - Vector2 pp1 = new(MathF.Round(bounds.Min.X - (metrics.LeftSideBearing * scaleXY.X)), 0); - Vector2 pp2 = new(MathF.Round(pp1.X + (metrics.AdvanceWidth * scaleXY.X)), 0); - Vector2 pp3 = new(0, MathF.Round(bounds.Max.Y + (metrics.TopSideBearing * scaleXY.Y))); - Vector2 pp4 = new(0, MathF.Round(pp3.Y - (metrics.AdvanceHeight * scaleXY.Y))); + GlyphVector.Hint(hintingMode, ref glyphVector, this.interpreter, pp1, pp2, pp3, pp4); + } - GlyphVector.Hint(hintingMode, ref glyphVector, this.interpreter, pp1, pp2, pp3, pp4); + private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) + { + // Load glyph variations related tables first, because glyph table needs them. + FVarTable? fvar = reader.TryGetTable(); + AVarTable? avar = reader.TryGetTable(); + GVarTable? gvar = reader.TryGetTable(); + HVarTable? hvar = reader.TryGetTable(); + + // Load using recommended order for best performance. + // https://www.microsoft.com/typography/otspec/recom.htm#TableOrdering + // 'head', 'hhea', 'maxp', OS/2, 'hmtx', LTSH, VDMX, 'hdmx', 'cmap', 'fpgm', 'prep', 'cvt ', 'loca', 'glyf', 'kern', 'name', 'post', 'gasp', PCLT, DSIG + HeadTable head = reader.GetTable(); + HorizontalHeadTable hhea = reader.GetTable(); + MaximumProfileTable maxp = reader.GetTable(); + OS2Table os2 = reader.GetTable(); + HorizontalMetricsTable htmx = reader.GetTable(); + CMapTable cmap = reader.GetTable(); + FpgmTable? fpgm = reader.TryGetTable(); + PrepTable? prep = reader.TryGetTable(); + CvtTable? cvt = reader.TryGetTable(); + IndexLocationTable loca = reader.GetTable(); + GlyphTable glyf = reader.GetTable(); + KerningTable? kern = reader.TryGetTable(); + NameTable name = reader.GetTable(); + PostTable post = reader.GetTable(); + + VerticalHeadTable? vhea = reader.TryGetTable(); + VerticalMetricsTable? vmtx = null; + if (vhea is not null) + { + vmtx = reader.TryGetTable(); } - private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) - { - // Load glyph variations related tables first, because glyph table needs them. - FVarTable? fvar = reader.TryGetTable(); - AVarTable? avar = reader.TryGetTable(); - GVarTable? gvar = reader.TryGetTable(); - HVarTable? hvar = reader.TryGetTable(); - - // Load using recommended order for best performance. - // https://www.microsoft.com/typography/otspec/recom.htm#TableOrdering - // 'head', 'hhea', 'maxp', OS/2, 'hmtx', LTSH, VDMX, 'hdmx', 'cmap', 'fpgm', 'prep', 'cvt ', 'loca', 'glyf', 'kern', 'name', 'post', 'gasp', PCLT, DSIG - HeadTable head = reader.GetTable(); - HorizontalHeadTable hhea = reader.GetTable(); - MaximumProfileTable maxp = reader.GetTable(); - OS2Table os2 = reader.GetTable(); - HorizontalMetricsTable htmx = reader.GetTable(); - CMapTable cmap = reader.GetTable(); - FpgmTable? fpgm = reader.TryGetTable(); - PrepTable? prep = reader.TryGetTable(); - CvtTable? cvt = reader.TryGetTable(); - IndexLocationTable loca = reader.GetTable(); - GlyphTable glyf = reader.GetTable(); - KerningTable? kern = reader.TryGetTable(); - NameTable name = reader.GetTable(); - PostTable post = reader.GetTable(); - - VerticalHeadTable? vhea = reader.TryGetTable(); - VerticalMetricsTable? vmtx = null; - if (vhea is not null) - { - vmtx = reader.TryGetTable(); - } + GlyphDefinitionTable? gdef = reader.TryGetTable(); + GSubTable? gSub = reader.TryGetTable(); + GPosTable? gPos = reader.TryGetTable(); - GlyphDefinitionTable? gdef = reader.TryGetTable(); - GSubTable? gSub = reader.TryGetTable(); - GPosTable? gPos = reader.TryGetTable(); + ColrTable? colr = reader.TryGetTable(); + CpalTable? cpal = reader.TryGetTable(); - ColrTable? colr = reader.TryGetTable(); - CpalTable? cpal = reader.TryGetTable(); + TrueTypeFontTables tables = new(cmap, head, hhea, htmx, maxp, name, os2, post, glyf, loca) + { + Fpgm = fpgm, + Prep = prep, + Cvt = cvt, + Kern = kern, + Vhea = vhea, + Vmtx = vmtx, + Gdef = gdef, + GSub = gSub, + GPos = gPos, + Colr = colr, + Cpal = cpal, + Fvar = fvar, + Gvar = gvar, + Hvar = hvar, + Avar = avar + }; + + return new StreamFontMetrics(tables); + } - TrueTypeFontTables tables = new(cmap, head, hhea, htmx, maxp, name, os2, post, glyf, loca) - { - Fpgm = fpgm, - Prep = prep, - Cvt = cvt, - Kern = kern, - Vhea = vhea, - Vmtx = vmtx, - Gdef = gdef, - GSub = gSub, - GPos = gPos, - Colr = colr, - Cpal = cpal, - Fvar = fvar, - Gvar = gvar, - Hvar = hvar, - Avar = avar - }; - - return new StreamFontMetrics(tables); + private GlyphMetrics CreateTrueTypeGlyphMetrics( + CodePoint codePoint, + ushort glyphId, + GlyphType glyphType, + TextAttributes textAttributes, + TextDecorations textDecorations, + bool isVerticalLayout, + ushort paletteIndex = 0) + { + TrueTypeFontTables tables = this.trueTypeFontTables!; + GlyphTable glyf = tables.Glyf; + HorizontalMetricsTable htmx = tables.Htmx; + VerticalMetricsTable? vtmx = tables.Vmtx; + + GlyphVector vector = glyf.GetGlyph(glyphId); + Bounds bounds = vector.Bounds; + ushort advanceWidth = htmx.GetAdvancedWidth(glyphId); + short lsb = htmx.GetLeftSideBearing(glyphId); + + IMetricsHeader metrics = isVerticalLayout ? this.VerticalMetrics : this.HorizontalMetrics; + ushort advancedHeight = (ushort)(metrics.Ascender - metrics.Descender); + short tsb = (short)(metrics.Ascender - bounds.Max.Y); + if (vtmx != null) + { + advancedHeight = vtmx.GetAdvancedHeight(glyphId); + tsb = vtmx.GetTopSideBearing(glyphId); } - private GlyphMetrics CreateTrueTypeGlyphMetrics( - CodePoint codePoint, - ushort glyphId, - GlyphType glyphType, - TextAttributes textAttributes, - TextDecorations textDecorations, - bool isVerticalLayout, - ushort paletteIndex = 0) + GlyphColor? color = null; + if (glyphType == GlyphType.ColrLayer) { - TrueTypeFontTables tables = this.trueTypeFontTables!; - GlyphTable glyf = tables.Glyf; - HorizontalMetricsTable htmx = tables.Htmx; - VerticalMetricsTable? vtmx = tables.Vmtx; - - GlyphVector vector = glyf.GetGlyph(glyphId); - Bounds bounds = vector.Bounds; - ushort advanceWidth = htmx.GetAdvancedWidth(glyphId); - short lsb = htmx.GetLeftSideBearing(glyphId); - - IMetricsHeader metrics = isVerticalLayout ? this.VerticalMetrics : this.HorizontalMetrics; - ushort advancedHeight = (ushort)(metrics.Ascender - metrics.Descender); - short tsb = (short)(metrics.Ascender - bounds.Max.Y); - if (vtmx != null) + // 0xFFFF is special index meaning use foreground color and thus leave unset + if (paletteIndex != 0xFFFF) { - advancedHeight = vtmx.GetAdvancedHeight(glyphId); - tsb = vtmx.GetTopSideBearing(glyphId); + CpalTable? cpal = tables.Cpal; + color = cpal?.GetGlyphColor(0, paletteIndex); } - - GlyphColor? color = null; - if (glyphType == GlyphType.ColrLayer) - { - // 0xFFFF is special index meaning use foreground color and thus leave unset - if (paletteIndex != 0xFFFF) - { - CpalTable? cpal = tables.Cpal; - color = cpal?.GetGlyphColor(0, paletteIndex); - } - } - - return new TrueTypeGlyphMetrics( - this, - glyphId, - codePoint, - vector, - advanceWidth, - advancedHeight, - lsb, - tsb, - this.UnitsPerEm, - textAttributes, - textDecorations, - glyphType, - color); } + + return new TrueTypeGlyphMetrics( + this, + glyphId, + codePoint, + vector, + advanceWidth, + advancedHeight, + lsb, + tsb, + this.UnitsPerEm, + textAttributes, + textDecorations, + glyphType, + color); } -} \ No newline at end of file +} diff --git a/src/SixLabors.Fonts/StreamFontMetrics.cs b/src/SixLabors.Fonts/StreamFontMetrics.cs index 145c57f0d..88f9205e6 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.cs @@ -1,13 +1,9 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System; using System.Collections.Concurrent; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Globalization; -using System.IO; -using System.Linq; using System.Numerics; using SixLabors.Fonts.Tables; using SixLabors.Fonts.Tables.AdvancedTypographic; @@ -20,441 +16,458 @@ using SixLabors.Fonts.Tables.TrueType; using SixLabors.Fonts.Unicode; -namespace SixLabors.Fonts +namespace SixLabors.Fonts; + +///

+/// +/// Represents a font face with metrics, which is a set of glyphs with a specific style (regular, italic, bold etc). +/// +/// The font source is a stream. +/// +internal partial class StreamFontMetrics : FontMetrics { + private readonly TrueTypeFontTables? trueTypeFontTables; + private readonly CompactFontTables? compactFontTables; + private readonly OutlineType outlineType; + + // https://docs.microsoft.com/en-us/typography/opentype/spec/otff#font-tables + private readonly ConcurrentDictionary<(ushort Id, TextAttributes Attributes, bool IsVerticalLayout), GlyphMetrics[]> glyphCache; + private readonly ConcurrentDictionary<(ushort Id, TextAttributes Attributes, bool IsVerticalLayout), GlyphMetrics[]>? colorGlyphCache; + private readonly FontDescription description; + private readonly HorizontalMetrics horizontalMetrics; + private readonly VerticalMetrics verticalMetrics; + private ushort unitsPerEm; + private float scaleFactor; + private short subscriptXSize; + private short subscriptYSize; + private short subscriptXOffset; + private short subscriptYOffset; + private short superscriptXSize; + private short superscriptYSize; + private short superscriptXOffset; + private short superscriptYOffset; + private short strikeoutSize; + private short strikeoutPosition; + private short underlinePosition; + private short underlineThickness; + private float italicAngle; + /// - /// - /// Represents a font face with metrics, which is a set of glyphs with a specific style (regular, italic, bold etc). - /// - /// The font source is a stream. + /// Initializes a new instance of the class. /// - internal partial class StreamFontMetrics : FontMetrics + /// The True Type font tables. + internal StreamFontMetrics(TrueTypeFontTables tables) { - private readonly TrueTypeFontTables? trueTypeFontTables; - private readonly CompactFontTables? compactFontTables; - private readonly OutlineType outlineType; - - // https://docs.microsoft.com/en-us/typography/opentype/spec/otff#font-tables - private readonly ConcurrentDictionary<(ushort Id, TextAttributes Attributes, bool IsVerticalLayout), GlyphMetrics[]> glyphCache; - private readonly ConcurrentDictionary<(ushort Id, TextAttributes Attributes, bool IsVerticalLayout), GlyphMetrics[]>? colorGlyphCache; - private readonly FontDescription description; - private readonly HorizontalMetrics horizontalMetrics; - private readonly VerticalMetrics verticalMetrics; - private ushort unitsPerEm; - private float scaleFactor; - private short subscriptXSize; - private short subscriptYSize; - private short subscriptXOffset; - private short subscriptYOffset; - private short superscriptXSize; - private short superscriptYSize; - private short superscriptXOffset; - private short superscriptYOffset; - private short strikeoutSize; - private short strikeoutPosition; - private short underlinePosition; - private short underlineThickness; - private float italicAngle; - - /// - /// Initializes a new instance of the class. - /// - /// The True Type font tables. - internal StreamFontMetrics(TrueTypeFontTables tables) + this.trueTypeFontTables = tables; + this.outlineType = OutlineType.TrueType; + this.description = new FontDescription(tables.Name, tables.Os2, tables.Head); + this.glyphCache = new(); + if (tables.Colr is not null) { - this.trueTypeFontTables = tables; - this.outlineType = OutlineType.TrueType; - this.description = new FontDescription(tables.Name, tables.Os2, tables.Head); - this.glyphCache = new(); - if (tables.Colr is not null) - { - this.colorGlyphCache = new(); - } - - (HorizontalMetrics HorizontalMetrics, VerticalMetrics VerticalMetrics) metrics = this.Initialize(tables); - this.horizontalMetrics = metrics.HorizontalMetrics; - this.verticalMetrics = metrics.VerticalMetrics; + this.colorGlyphCache = new(); } - /// - /// Initializes a new instance of the class. - /// - /// The Compact Font tables. - /// Processor which handles glyph variations. - internal StreamFontMetrics(CompactFontTables tables, GlyphVariationProcessor? glyphVariationProcessor = null) - { - this.compactFontTables = tables; - this.outlineType = OutlineType.CFF; - this.description = new FontDescription(tables.Name, tables.Os2, tables.Head); - this.GlyphVariationProcessor = glyphVariationProcessor; - this.glyphCache = new(); - if (tables.Colr is not null) - { - this.colorGlyphCache = new(); - } + (HorizontalMetrics HorizontalMetrics, VerticalMetrics VerticalMetrics) metrics = this.Initialize(tables); + this.horizontalMetrics = metrics.HorizontalMetrics; + this.verticalMetrics = metrics.VerticalMetrics; + } - (HorizontalMetrics HorizontalMetrics, VerticalMetrics VerticalMetrics) metrics = this.Initialize(tables); - this.horizontalMetrics = metrics.HorizontalMetrics; - this.verticalMetrics = metrics.VerticalMetrics; + /// + /// Initializes a new instance of the class. + /// + /// The Compact Font tables. + /// Processor which handles glyph variations. + internal StreamFontMetrics(CompactFontTables tables, GlyphVariationProcessor? glyphVariationProcessor = null) + { + this.compactFontTables = tables; + this.outlineType = OutlineType.CFF; + this.description = new FontDescription(tables.Name, tables.Os2, tables.Head); + this.GlyphVariationProcessor = glyphVariationProcessor; + this.glyphCache = new(); + if (tables.Colr is not null) + { + this.colorGlyphCache = new(); } - public HeadTable.HeadFlags HeadFlags { get; private set; } + (HorizontalMetrics HorizontalMetrics, VerticalMetrics VerticalMetrics) metrics = this.Initialize(tables); + this.horizontalMetrics = metrics.HorizontalMetrics; + this.verticalMetrics = metrics.VerticalMetrics; + } - public GlyphVariationProcessor? GlyphVariationProcessor { get; private set; } + public HeadTable.HeadFlags HeadFlags { get; private set; } - /// - public override FontDescription Description => this.description; + public GlyphVariationProcessor? GlyphVariationProcessor { get; private set; } - /// - public override ushort UnitsPerEm => this.unitsPerEm; + /// + public override FontDescription Description => this.description; - /// - public override float ScaleFactor => this.scaleFactor; + /// + public override ushort UnitsPerEm => this.unitsPerEm; - /// - public override HorizontalMetrics HorizontalMetrics => this.horizontalMetrics; + /// + public override float ScaleFactor => this.scaleFactor; - /// - public override VerticalMetrics VerticalMetrics => this.verticalMetrics; + /// + public override HorizontalMetrics HorizontalMetrics => this.horizontalMetrics; - /// - public override short SubscriptXSize => this.subscriptXSize; + /// + public override VerticalMetrics VerticalMetrics => this.verticalMetrics; - /// - public override short SubscriptYSize => this.subscriptYSize; + /// + public override short SubscriptXSize => this.subscriptXSize; - /// - public override short SubscriptXOffset => this.subscriptXOffset; + /// + public override short SubscriptYSize => this.subscriptYSize; - /// - public override short SubscriptYOffset => this.subscriptYOffset; + /// + public override short SubscriptXOffset => this.subscriptXOffset; - /// - public override short SuperscriptXSize => this.superscriptXSize; + /// + public override short SubscriptYOffset => this.subscriptYOffset; - /// - public override short SuperscriptYSize => this.superscriptYSize; + /// + public override short SuperscriptXSize => this.superscriptXSize; - /// - public override short SuperscriptXOffset => this.superscriptXOffset; + /// + public override short SuperscriptYSize => this.superscriptYSize; - /// - public override short SuperscriptYOffset => this.superscriptYOffset; + /// + public override short SuperscriptXOffset => this.superscriptXOffset; - /// - public override short StrikeoutSize => this.strikeoutSize; + /// + public override short SuperscriptYOffset => this.superscriptYOffset; - /// - public override short StrikeoutPosition => this.strikeoutPosition; + /// + public override short StrikeoutSize => this.strikeoutSize; - /// - public override short UnderlinePosition => this.underlinePosition; + /// + public override short StrikeoutPosition => this.strikeoutPosition; - /// - public override short UnderlineThickness => this.underlineThickness; + /// + public override short UnderlinePosition => this.underlinePosition; - /// - public override float ItalicAngle => this.italicAngle; + /// + public override short UnderlineThickness => this.underlineThickness; - /// - internal override bool TryGetGlyphId(CodePoint codePoint, out ushort glyphId) - => this.TryGetGlyphId(codePoint, null, out glyphId, out bool _); + /// + public override float ItalicAngle => this.italicAngle; - /// - internal override bool TryGetGlyphId(CodePoint codePoint, CodePoint? nextCodePoint, out ushort glyphId, out bool skipNextCodePoint) - { - CMapTable cmap = this.outlineType == OutlineType.TrueType - ? this.trueTypeFontTables!.Cmap - : this.compactFontTables!.Cmap; + /// + internal override bool TryGetGlyphId(CodePoint codePoint, out ushort glyphId) + => this.TryGetGlyphId(codePoint, null, out glyphId, out bool _); - return cmap.TryGetGlyphId(codePoint, nextCodePoint, out glyphId, out skipNextCodePoint); - } + /// + internal override bool TryGetGlyphId(CodePoint codePoint, CodePoint? nextCodePoint, out ushort glyphId, out bool skipNextCodePoint) + { + CMapTable cmap = this.outlineType == OutlineType.TrueType + ? this.trueTypeFontTables!.Cmap + : this.compactFontTables!.Cmap; - /// - internal override bool TryGetGlyphClass(ushort glyphId, [NotNullWhen(true)] out GlyphClassDef? glyphClass) - { - GlyphDefinitionTable? gdef = this.outlineType == OutlineType.TrueType - ? this.trueTypeFontTables!.Gdef - : this.compactFontTables!.Gdef; + return cmap.TryGetGlyphId(codePoint, nextCodePoint, out glyphId, out skipNextCodePoint); + } - glyphClass = null; - return gdef is not null && gdef.TryGetGlyphClass(glyphId, out glyphClass); - } + /// + internal override bool TryGetGlyphClass(ushort glyphId, [NotNullWhen(true)] out GlyphClassDef? glyphClass) + { + GlyphDefinitionTable? gdef = this.outlineType == OutlineType.TrueType + ? this.trueTypeFontTables!.Gdef + : this.compactFontTables!.Gdef; - /// - internal override bool TryGetMarkAttachmentClass(ushort glyphId, [NotNullWhen(true)] out GlyphClassDef? markAttachmentClass) - { - GlyphDefinitionTable? gdef = this.outlineType == OutlineType.TrueType - ? this.trueTypeFontTables!.Gdef - : this.compactFontTables!.Gdef; + glyphClass = null; + return gdef is not null && gdef.TryGetGlyphClass(glyphId, out glyphClass); + } + + /// + internal override bool TryGetMarkAttachmentClass(ushort glyphId, [NotNullWhen(true)] out GlyphClassDef? markAttachmentClass) + { + GlyphDefinitionTable? gdef = this.outlineType == OutlineType.TrueType + ? this.trueTypeFontTables!.Gdef + : this.compactFontTables!.Gdef; - markAttachmentClass = null; - return gdef is not null && gdef.TryGetMarkAttachmentClass(glyphId, out markAttachmentClass); + markAttachmentClass = null; + return gdef is not null && gdef.TryGetMarkAttachmentClass(glyphId, out markAttachmentClass); + } + + /// + public override bool TryGetVariationAxes(out VariationAxis[]? variationAxes) + { + if (this.trueTypeFontTables?.Fvar == null) + { + variationAxes = Array.Empty(); + return false; } - /// - public override bool TryGetVariationAxes(out VariationAxis[]? variationAxes) + FVarTable? fvar = this.trueTypeFontTables?.Fvar; + Tables.General.Name.NameTable? names = this.trueTypeFontTables?.Name; + variationAxes = new VariationAxis[fvar!.Axes.Length]; + for (int i = 0; i < fvar.Axes.Length; i++) { - if (this.trueTypeFontTables?.Fvar == null) + VariationAxisRecord axis = fvar.Axes[i]; + string name = names != null ? names.GetNameById(CultureInfo.InvariantCulture, axis.AxisNameId) : string.Empty; + variationAxes[i] = new VariationAxis() { - variationAxes = Array.Empty(); - return false; - } + Tag = axis.Tag, + Min = axis.MinValue, + Max = axis.MaxValue, + Default = axis.DefaultValue, + Name = name + }; + } - FVarTable? fvar = this.trueTypeFontTables?.Fvar; - Tables.General.Name.NameTable? names = this.trueTypeFontTables?.Name; - variationAxes = new VariationAxis[fvar!.Axes.Length]; - for (int i = 0; i < fvar.Axes.Length; i++) - { - VariationAxisRecord axis = fvar.Axes[i]; - string name = names != null ? names.GetNameById(CultureInfo.InvariantCulture, axis.AxisNameId) : string.Empty; - variationAxes[i] = new VariationAxis() - { - Tag = axis.Tag, - Min = axis.MinValue, - Max = axis.MaxValue, - Default = axis.DefaultValue, - Name = name - }; - } + return true; + } - return true; - } + /// + public override bool TryGetGlyphMetrics( + CodePoint codePoint, + TextAttributes textAttributes, + TextDecorations textDecorations, + LayoutMode layoutMode, + ColorFontSupport support, + [NotNullWhen(true)] out IReadOnlyList? metrics) + { + // We return metrics for the special glyph representing a missing character, commonly known as .notdef. + this.TryGetGlyphId(codePoint, out ushort glyphId); + metrics = this.GetGlyphMetrics(codePoint, glyphId, textAttributes, textDecorations, layoutMode, support); + return metrics.Any(); + } - /// - public override bool TryGetGlyphMetrics( - CodePoint codePoint, - TextAttributes textAttributes, - TextDecorations textDecorations, - LayoutMode layoutMode, - ColorFontSupport support, - [NotNullWhen(true)] out IReadOnlyList? metrics) + /// + internal override IReadOnlyList GetGlyphMetrics( + CodePoint codePoint, + ushort glyphId, + TextAttributes textAttributes, + TextDecorations textDecorations, + LayoutMode layoutMode, + ColorFontSupport support) + { + GlyphType glyphType = GlyphType.Standard; + if (glyphId == 0) { - // We return metrics for the special glyph representing a missing character, commonly known as .notdef. - this.TryGetGlyphId(codePoint, out ushort glyphId); - metrics = this.GetGlyphMetrics(codePoint, glyphId, textAttributes, textDecorations, layoutMode, support); - return metrics.Any(); + // A glyph was not found in this face for the previously matched + // codepoint. Set to fallback. + glyphType = GlyphType.Fallback; } - /// - internal override IReadOnlyList GetGlyphMetrics( - CodePoint codePoint, - ushort glyphId, - TextAttributes textAttributes, - TextDecorations textDecorations, - LayoutMode layoutMode, - ColorFontSupport support) + if (support == ColorFontSupport.MicrosoftColrFormat + && this.TryGetColoredMetrics(codePoint, glyphId, textAttributes, textDecorations, layoutMode, out GlyphMetrics[]? metrics)) { - GlyphType glyphType = GlyphType.Standard; - if (glyphId == 0) - { - // A glyph was not found in this face for the previously matched - // codepoint. Set to fallback. - glyphType = GlyphType.Fallback; - } - - if (support == ColorFontSupport.MicrosoftColrFormat - && this.TryGetColoredMetrics(codePoint, glyphId, textAttributes, textDecorations, layoutMode, out GlyphMetrics[]? metrics)) - { - return metrics; - } - - // We overwrite the cache entry for this type should the attributes change. - return this.glyphCache.GetOrAdd( - CreateCacheKey(codePoint, glyphId, textAttributes, layoutMode), - key => new[] - { - this.CreateGlyphMetrics( - codePoint, - key.Id, - glyphType, - key.Attributes, - textDecorations, - key.IsVerticalLayout) - }); + return metrics; } - /// - internal override IReadOnlyList GetAvailableCodePoints() - { - CMapTable cmap = this.outlineType == OutlineType.TrueType - ? this.trueTypeFontTables!.Cmap - : this.compactFontTables!.Cmap; + // We overwrite the cache entry for this type should the attributes change. + return this.glyphCache.GetOrAdd( + CreateCacheKey(codePoint, glyphId, textAttributes, layoutMode), + key => new[] + { + this.CreateGlyphMetrics( + codePoint, + key.Id, + glyphType, + key.Attributes, + textDecorations, + key.IsVerticalLayout) + }); + } - return cmap.GetAvailableCodePoints(); - } + /// + internal override IReadOnlyList GetAvailableCodePoints() + { + CMapTable cmap = this.outlineType == OutlineType.TrueType + ? this.trueTypeFontTables!.Cmap + : this.compactFontTables!.Cmap; - /// - internal override bool TryGetGSubTable([NotNullWhen(true)] out GSubTable? gSubTable) - { - gSubTable = this.outlineType == OutlineType.TrueType - ? this.trueTypeFontTables!.GSub - : this.compactFontTables!.GSub; + return cmap.GetAvailableCodePoints(); + } - return gSubTable is not null; - } + /// + internal override bool TryGetGSubTable([NotNullWhen(true)] out GSubTable? gSubTable) + { + gSubTable = this.outlineType == OutlineType.TrueType + ? this.trueTypeFontTables!.GSub + : this.compactFontTables!.GSub; + + return gSubTable is not null; + } - /// - internal override void ApplySubstitution(GlyphSubstitutionCollection collection) + /// + internal override void ApplySubstitution(GlyphSubstitutionCollection collection) + { + if (this.TryGetGSubTable(out GSubTable? gSubTable)) { - if (this.TryGetGSubTable(out GSubTable? gSubTable)) - { - gSubTable.ApplySubstitution(this, collection); - } + gSubTable.ApplySubstitution(this, collection); } + } - /// - internal override bool TryGetKerningOffset(ushort previousId, ushort currentId, out Vector2 vector) + /// + internal override bool TryGetKerningOffset(ushort previousId, ushort currentId, out Vector2 vector) + { + bool isTTF = this.outlineType == OutlineType.TrueType; + KerningTable? kern = isTTF + ? this.trueTypeFontTables!.Kern + : this.compactFontTables!.Kern; + + if (kern is null) { - bool isTTF = this.outlineType == OutlineType.TrueType; - KerningTable? kern = isTTF - ? this.trueTypeFontTables!.Kern - : this.compactFontTables!.Kern; + vector = default; + return false; + } - if (kern is null) - { - vector = default; - return false; - } + return kern.TryGetKerningOffset(previousId, currentId, out vector); + } - return kern.TryGetKerningOffset(previousId, currentId, out vector); - } + /// + internal override void UpdatePositions(GlyphPositioningCollection collection) + { + bool isTTF = this.outlineType == OutlineType.TrueType; + GPosTable? gpos = isTTF + ? this.trueTypeFontTables!.GPos + : this.compactFontTables!.GPos; - /// - internal override void UpdatePositions(GlyphPositioningCollection collection) - { - bool isTTF = this.outlineType == OutlineType.TrueType; - GPosTable? gpos = isTTF - ? this.trueTypeFontTables!.GPos - : this.compactFontTables!.GPos; + bool kerned = false; + KerningMode kerningMode = collection.TextOptions.KerningMode; - bool kerned = false; - KerningMode kerningMode = collection.TextOptions.KerningMode; + gpos?.TryUpdatePositions(this, collection, out kerned); - gpos?.TryUpdatePositions(this, collection, out kerned); + // TODO: I don't think we should disable kerning here. + if (!kerned && kerningMode != KerningMode.None) + { + KerningTable? kern = isTTF + ? this.trueTypeFontTables!.Kern + : this.compactFontTables!.Kern; - // TODO: I don't think we should disable kerning here. - if (!kerned && kerningMode != KerningMode.None) + if (kern?.Count > 0) { - KerningTable? kern = isTTF - ? this.trueTypeFontTables!.Kern - : this.compactFontTables!.Kern; - - if (kern?.Count > 0) + // Set max constraints to prevent OutOfMemoryException or infinite loops from attacks. + int maxCount = AdvancedTypographicUtils.GetMaxAllowableShapingCollectionCount(collection.Count); + for (int index = 1; index < collection.Count; index++) { - // Set max constraints to prevent OutOfMemoryException or infinite loops from attacks. - int maxCount = AdvancedTypographicUtils.GetMaxAllowableShapingCollectionCount(collection.Count); - for (int index = 1; index < collection.Count; index++) + if (index >= maxCount) { - if (index >= maxCount) - { - break; - } - - kern.UpdatePositions(this, collection, index - 1, index); + break; } + + kern.UpdatePositions(this, collection, index - 1, index); } } } + } - /// - /// Reads a from the specified stream. - /// - /// The file path. - /// a . - public static StreamFontMetrics LoadFont(string path) - { - using FileStream fs = File.OpenRead(path); - var reader = new FontReader(fs); - return LoadFont(reader); - } + /// + /// Reads a from the specified stream. + /// + /// The file path. + /// a . + public static StreamFontMetrics LoadFont(string path) + { + using FileStream fs = File.OpenRead(path); + var reader = new FontReader(fs); + return LoadFont(reader); + } - /// - /// Reads a from the specified stream. - /// - /// The file path. - /// Position in the stream to read the font from. - /// a . - public static StreamFontMetrics LoadFont(string path, long offset) - { - using FileStream fs = File.OpenRead(path); - fs.Position = offset; - return LoadFont(fs); - } + /// + /// Reads a from the specified stream. + /// + /// The file path. + /// Position in the stream to read the font from. + /// a . + public static StreamFontMetrics LoadFont(string path, long offset) + { + using FileStream fs = File.OpenRead(path); + fs.Position = offset; + return LoadFont(fs); + } + + /// + /// Reads a from the specified stream. + /// + /// The stream. + /// a . + public static StreamFontMetrics LoadFont(Stream stream) + { + var reader = new FontReader(stream); + return LoadFont(reader); + } - /// - /// Reads a from the specified stream. - /// - /// The stream. - /// a . - public static StreamFontMetrics LoadFont(Stream stream) + internal static StreamFontMetrics LoadFont(FontReader reader) + { + if (reader.OutlineType == OutlineType.TrueType) { - var reader = new FontReader(stream); - return LoadFont(reader); + return LoadTrueTypeFont(reader); } - internal static StreamFontMetrics LoadFont(FontReader reader) - { - if (reader.OutlineType == OutlineType.TrueType) - { - return LoadTrueTypeFont(reader); - } + return LoadCompactFont(reader); + } - return LoadCompactFont(reader); - } + private (HorizontalMetrics HorizontalMetrics, VerticalMetrics VerticalMetrics) Initialize(T tables) + where T : IFontTables + { + HeadTable head = tables.Head; + HorizontalHeadTable hhea = tables.Hhea; + VerticalHeadTable? vhea = tables.Vhea; + OS2Table os2 = tables.Os2; + PostTable post = tables.Post; + + this.HeadFlags = head.Flags; + this.unitsPerEm = head.UnitsPerEm; + this.scaleFactor = this.unitsPerEm * 72F; // 72 * UnitsPerEm means 1pt = 1px + this.subscriptXSize = os2.SubscriptXSize; + this.subscriptYSize = os2.SubscriptYSize; + this.subscriptXOffset = os2.SubscriptXOffset; + this.subscriptYOffset = os2.SubscriptYOffset; + this.superscriptXSize = os2.SuperscriptXSize; + this.superscriptYSize = os2.SuperscriptYSize; + this.superscriptXOffset = os2.SuperscriptXOffset; + this.superscriptYOffset = os2.SuperscriptYOffset; + this.strikeoutSize = os2.StrikeoutSize; + this.strikeoutPosition = os2.StrikeoutPosition; + this.underlinePosition = post.UnderlinePosition; + this.underlineThickness = post.UnderlineThickness; + this.italicAngle = post.ItalicAngle; + + HorizontalMetrics horizontalMetrics = InitializeHorizontalMetrics(hhea, vhea, os2); + VerticalMetrics verticalMetrics = InitializeVerticalMetrics(horizontalMetrics, vhea); + return (horizontalMetrics, verticalMetrics); + } - private (HorizontalMetrics HorizontalMetrics, VerticalMetrics VerticalMetrics) Initialize(T tables) - where T : IFontTables + private static HorizontalMetrics InitializeHorizontalMetrics(HorizontalHeadTable hhea, VerticalHeadTable? vhea, OS2Table os2) + { + short ascender; + short descender; + short lineGap; + short lineHeight; + short advanceWidthMax; + short advanceHeightMax; + + // https://www.microsoft.com/typography/otspec/recom.htm#tad + // We use the same approach as FreeType for calculating the the global ascender, descender, and + // height of OpenType fonts for consistency. + // + // 1.If the OS/ 2 table exists and the fsSelection bit 7 is set (USE_TYPO_METRICS), trust the font + // and use the Typo* metrics. + // 2.Otherwise, use the HorizontalHeadTable "hhea" table's metrics. + // 3.If they are zero and the OS/ 2 table exists, + // - Use the OS/ 2 table's sTypo* metrics if they are non-zero. + // - Otherwise, use the OS / 2 table's usWin* metrics. + bool useTypoMetrics = os2.FontStyle.HasFlag(OS2Table.FontStyleSelection.USE_TYPO_METRICS); + if (useTypoMetrics) { - HeadTable head = tables.Head; - HorizontalHeadTable hhea = tables.Hhea; - VerticalHeadTable? vhea = tables.Vhea; - OS2Table os2 = tables.Os2; - PostTable post = tables.Post; - - this.HeadFlags = head.Flags; - this.unitsPerEm = head.UnitsPerEm; - this.scaleFactor = this.unitsPerEm * 72F; // 72 * UnitsPerEm means 1pt = 1px - this.subscriptXSize = os2.SubscriptXSize; - this.subscriptYSize = os2.SubscriptYSize; - this.subscriptXOffset = os2.SubscriptXOffset; - this.subscriptYOffset = os2.SubscriptYOffset; - this.superscriptXSize = os2.SuperscriptXSize; - this.superscriptYSize = os2.SuperscriptYSize; - this.superscriptXOffset = os2.SuperscriptXOffset; - this.superscriptYOffset = os2.SuperscriptYOffset; - this.strikeoutSize = os2.StrikeoutSize; - this.strikeoutPosition = os2.StrikeoutPosition; - this.underlinePosition = post.UnderlinePosition; - this.underlineThickness = post.UnderlineThickness; - this.italicAngle = post.ItalicAngle; - - HorizontalMetrics horizontalMetrics = InitializeHorizontalMetrics(hhea, vhea, os2); - VerticalMetrics verticalMetrics = InitializeVerticalMetrics(horizontalMetrics, vhea); - return (horizontalMetrics, verticalMetrics); + ascender = os2.TypoAscender; + descender = os2.TypoDescender; + lineGap = os2.TypoLineGap; + lineHeight = (short)(ascender - descender + lineGap); + } + else + { + ascender = hhea.Ascender; + descender = hhea.Descender; + lineGap = hhea.LineGap; + lineHeight = (short)(ascender - descender + lineGap); } - private static HorizontalMetrics InitializeHorizontalMetrics(HorizontalHeadTable hhea, VerticalHeadTable? vhea, OS2Table os2) + if (ascender == 0 || descender == 0) { - short ascender; - short descender; - short lineGap; - short lineHeight; - short advanceWidthMax; - short advanceHeightMax; - - // https://www.microsoft.com/typography/otspec/recom.htm#tad - // We use the same approach as FreeType for calculating the the global ascender, descender, and - // height of OpenType fonts for consistency. - // - // 1.If the OS/ 2 table exists and the fsSelection bit 7 is set (USE_TYPO_METRICS), trust the font - // and use the Typo* metrics. - // 2.Otherwise, use the HorizontalHeadTable "hhea" table's metrics. - // 3.If they are zero and the OS/ 2 table exists, - // - Use the OS/ 2 table's sTypo* metrics if they are non-zero. - // - Otherwise, use the OS / 2 table's usWin* metrics. - bool useTypoMetrics = os2.FontStyle.HasFlag(OS2Table.FontStyleSelection.USE_TYPO_METRICS); - if (useTypoMetrics) + if (os2.TypoAscender != 0 || os2.TypoDescender != 0) { ascender = os2.TypoAscender; descender = os2.TypoDescender; @@ -463,168 +476,150 @@ private static HorizontalMetrics InitializeHorizontalMetrics(HorizontalHeadTable } else { - ascender = hhea.Ascender; - descender = hhea.Descender; - lineGap = hhea.LineGap; - lineHeight = (short)(ascender - descender + lineGap); + ascender = (short)os2.WinAscent; + descender = (short)-os2.WinDescent; + lineHeight = (short)(ascender - descender); } + } - if (ascender == 0 || descender == 0) - { - if (os2.TypoAscender != 0 || os2.TypoDescender != 0) - { - ascender = os2.TypoAscender; - descender = os2.TypoDescender; - lineGap = os2.TypoLineGap; - lineHeight = (short)(ascender - descender + lineGap); - } - else - { - ascender = (short)os2.WinAscent; - descender = (short)-os2.WinDescent; - lineHeight = (short)(ascender - descender); - } - } + advanceWidthMax = (short)hhea.AdvanceWidthMax; + advanceHeightMax = vhea == null ? lineHeight : vhea.AdvanceHeightMax; - advanceWidthMax = (short)hhea.AdvanceWidthMax; - advanceHeightMax = vhea == null ? lineHeight : vhea.AdvanceHeightMax; + return new() + { + Ascender = ascender, + Descender = descender, + LineGap = lineGap, + LineHeight = lineHeight, + AdvanceWidthMax = advanceWidthMax, + AdvanceHeightMax = advanceHeightMax + }; + } - return new() - { - Ascender = ascender, - Descender = descender, - LineGap = lineGap, - LineHeight = lineHeight, - AdvanceWidthMax = advanceWidthMax, - AdvanceHeightMax = advanceHeightMax - }; + private static VerticalMetrics InitializeVerticalMetrics(HorizontalMetrics metrics, VerticalHeadTable? vhea) + { + VerticalMetrics verticalMetrics = new() + { + Ascender = metrics.Ascender, + Descender = metrics.Descender, + LineGap = metrics.LineGap, + LineHeight = metrics.LineHeight, + AdvanceWidthMax = metrics.AdvanceWidthMax, + AdvanceHeightMax = metrics.AdvanceHeightMax, + Synthesized = true + }; + + if (vhea is null) + { + return verticalMetrics; } - private static VerticalMetrics InitializeVerticalMetrics(HorizontalMetrics metrics, VerticalHeadTable? vhea) - { - VerticalMetrics verticalMetrics = new() - { - Ascender = metrics.Ascender, - Descender = metrics.Descender, - LineGap = metrics.LineGap, - LineHeight = metrics.LineHeight, - AdvanceWidthMax = metrics.AdvanceWidthMax, - AdvanceHeightMax = metrics.AdvanceHeightMax, - Synthesized = true - }; + short ascender = vhea.Ascender; - if (vhea is null) - { - return verticalMetrics; - } + // Always negative due to the grid orientation. + short descender = (short)(vhea.Descender > 0 ? -vhea.Descender : vhea.Descender); + short lineGap = vhea.LineGap; + short lineHeight = (short)(ascender - descender + lineGap); - short ascender = vhea.Ascender; + verticalMetrics.Ascender = ascender; + verticalMetrics.Descender = descender; + verticalMetrics.LineGap = lineGap; + verticalMetrics.LineHeight = lineHeight; + verticalMetrics.Synthesized = false; - // Always negative due to the grid orientation. - short descender = (short)(vhea.Descender > 0 ? -vhea.Descender : vhea.Descender); - short lineGap = vhea.LineGap; - short lineHeight = (short)(ascender - descender + lineGap); + return verticalMetrics; + } - verticalMetrics.Ascender = ascender; - verticalMetrics.Descender = descender; - verticalMetrics.LineGap = lineGap; - verticalMetrics.LineHeight = lineHeight; - verticalMetrics.Synthesized = false; + /// + /// Reads a from the specified stream. + /// + /// The file path. + /// a . + public static StreamFontMetrics[] LoadFontCollection(string path) + { + using FileStream fs = File.OpenRead(path); + return LoadFontCollection(fs); + } - return verticalMetrics; - } + /// + /// Reads a from the specified stream. + /// + /// The stream. + /// a . + public static StreamFontMetrics[] LoadFontCollection(Stream stream) + { + long startPos = stream.Position; + var reader = new BigEndianBinaryReader(stream, true); + var ttcHeader = TtcHeader.Read(reader); + var fonts = new StreamFontMetrics[(int)ttcHeader.NumFonts]; - /// - /// Reads a from the specified stream. - /// - /// The file path. - /// a . - public static StreamFontMetrics[] LoadFontCollection(string path) + for (int i = 0; i < ttcHeader.NumFonts; ++i) { - using FileStream fs = File.OpenRead(path); - return LoadFontCollection(fs); + stream.Position = startPos + ttcHeader.OffsetTable[i]; + fonts[i] = LoadFont(stream); } - /// - /// Reads a from the specified stream. - /// - /// The stream. - /// a . - public static StreamFontMetrics[] LoadFontCollection(Stream stream) - { - long startPos = stream.Position; - var reader = new BigEndianBinaryReader(stream, true); - var ttcHeader = TtcHeader.Read(reader); - var fonts = new StreamFontMetrics[(int)ttcHeader.NumFonts]; + return fonts; + } - for (int i = 0; i < ttcHeader.NumFonts; ++i) - { - stream.Position = startPos + ttcHeader.OffsetTable[i]; - fonts[i] = LoadFont(stream); - } + private static (ushort Id, TextAttributes Attributes, bool IsVerticalLayout) CreateCacheKey( + CodePoint codePoint, + ushort glyphId, + TextAttributes textAttributes, + LayoutMode layoutMode) + => (glyphId, textAttributes, AdvancedTypographicUtils.IsVerticalGlyph(codePoint, layoutMode)); + + private bool TryGetColoredMetrics( + CodePoint codePoint, + ushort glyphId, + TextAttributes textAttributes, + TextDecorations textDecorations, + LayoutMode layoutMode, + [NotNullWhen(true)] out GlyphMetrics[]? metrics) + { + ColrTable? colr = this.outlineType == OutlineType.TrueType + ? this.trueTypeFontTables!.Colr + : this.compactFontTables!.Colr; - return fonts; + if (colr == null || this.colorGlyphCache == null) + { + metrics = null; + return false; } - private static (ushort Id, TextAttributes Attributes, bool IsVerticalLayout) CreateCacheKey( - CodePoint codePoint, - ushort glyphId, - TextAttributes textAttributes, - LayoutMode layoutMode) - => (glyphId, textAttributes, AdvancedTypographicUtils.IsVerticalGlyph(codePoint, layoutMode)); - - private bool TryGetColoredMetrics( - CodePoint codePoint, - ushort glyphId, - TextAttributes textAttributes, - TextDecorations textDecorations, - LayoutMode layoutMode, - [NotNullWhen(true)] out GlyphMetrics[]? metrics) + // We overwrite the cache entry for this type should the attributes change. + metrics = this.colorGlyphCache.GetOrAdd(CreateCacheKey(codePoint, glyphId, textAttributes, layoutMode), key => { - ColrTable? colr = this.outlineType == OutlineType.TrueType - ? this.trueTypeFontTables!.Colr - : this.compactFontTables!.Colr; - - if (colr == null || this.colorGlyphCache == null) - { - metrics = null; - return false; - } - - // We overwrite the cache entry for this type should the attributes change. - metrics = this.colorGlyphCache.GetOrAdd(CreateCacheKey(codePoint, glyphId, textAttributes, layoutMode), key => + GlyphMetrics[] m = Array.Empty(); + Span indexes = colr.GetLayers(key.Id); + if (indexes.Length > 0) { - GlyphMetrics[] m = Array.Empty(); - Span indexes = colr.GetLayers(key.Id); - if (indexes.Length > 0) + m = new GlyphMetrics[indexes.Length]; + for (int i = 0; i < indexes.Length; i++) { - m = new GlyphMetrics[indexes.Length]; - for (int i = 0; i < indexes.Length; i++) - { - LayerRecord layer = indexes[i]; - m[i] = this.CreateGlyphMetrics(codePoint, layer.GlyphId, GlyphType.ColrLayer, key.Attributes, textDecorations, key.IsVerticalLayout, layer.PaletteIndex); - } + LayerRecord layer = indexes[i]; + m[i] = this.CreateGlyphMetrics(codePoint, layer.GlyphId, GlyphType.ColrLayer, key.Attributes, textDecorations, key.IsVerticalLayout, layer.PaletteIndex); } + } - return m; - }); - - return metrics.Length > 0; - } + return m; + }); - private GlyphMetrics CreateGlyphMetrics( - CodePoint codePoint, - ushort glyphId, - GlyphType glyphType, - TextAttributes textAttributes, - TextDecorations textDecorations, - bool isVerticalLayout, - ushort paletteIndex = 0) - => this.outlineType switch - { - OutlineType.TrueType => this.CreateTrueTypeGlyphMetrics(codePoint, glyphId, glyphType, textAttributes, textDecorations, isVerticalLayout, paletteIndex), - OutlineType.CFF => this.CreateCffGlyphMetrics(codePoint, glyphId, glyphType, textAttributes, textDecorations, isVerticalLayout, paletteIndex), - _ => throw new NotSupportedException(), - }; + return metrics.Length > 0; } -} \ No newline at end of file + + private GlyphMetrics CreateGlyphMetrics( + CodePoint codePoint, + ushort glyphId, + GlyphType glyphType, + TextAttributes textAttributes, + TextDecorations textDecorations, + bool isVerticalLayout, + ushort paletteIndex = 0) + => this.outlineType switch + { + OutlineType.TrueType => this.CreateTrueTypeGlyphMetrics(codePoint, glyphId, glyphType, textAttributes, textDecorations, isVerticalLayout, paletteIndex), + OutlineType.CFF => this.CreateCffGlyphMetrics(codePoint, glyphId, glyphType, textAttributes, textDecorations, isVerticalLayout, paletteIndex), + _ => throw new NotSupportedException(), + }; +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs index db7cf984a..6d08fd70a 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AVarTable.cs @@ -1,76 +1,73 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. -using System; +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +/// +/// Implements reading the Font Variations Table `avar`. +/// +/// +internal class AVarTable : Table { - /// - /// Implements reading the Font Variations Table `avar`. - /// - /// - internal class AVarTable : Table - { - internal const string TableName = "avar"; + internal const string TableName = "avar"; - public AVarTable(uint axisCount, SegmentMapRecord[] segmentMaps) - { - this.AxisCount = axisCount; - this.SegmentMaps = segmentMaps; - } + public AVarTable(uint axisCount, SegmentMapRecord[] segmentMaps) + { + this.AxisCount = axisCount; + this.SegmentMaps = segmentMaps; + } - public uint AxisCount { get; } + public uint AxisCount { get; } - public SegmentMapRecord[] SegmentMaps { get; } + public SegmentMapRecord[] SegmentMaps { get; } - public static AVarTable? Load(FontReader reader) + public static AVarTable? Load(FontReader reader) + { + if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) { - if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) - { - return null; - } - - using (binaryReader) - { - return Load(binaryReader); - } + return null; } - public static AVarTable Load(BigEndianBinaryReader reader) + using (binaryReader) { - // VariationsTable `avar` - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | Type | Name | Description | - // +=================+========================================+=========================================================================+ - // | uint16 | majorVersion | Major version number of the font variations table — set to 1. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | uint16 | minorVersion | Minor version number of the font variations table — set to 0. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | uint16 | (reserved) | This field is permanently reserved. Set to zero. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | uint16 | axisCount | The number of variation axes in the font | - // | | | (the number of records in the axes array). | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | SegmentMaps | axisSegmentMaps[axisCount] | The segment maps array — one segment map for each axis, in the order of | - // | | | axes specified in the 'fvar' table. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - ushort major = reader.ReadUInt16(); - ushort minor = reader.ReadUInt16(); - ushort reserved = reader.ReadUInt16(); - ushort axisCount = reader.ReadUInt16(); + return Load(binaryReader); + } + } - if (major != 1) - { - throw new NotSupportedException("Only version 1 of avar table is supported"); - } + public static AVarTable Load(BigEndianBinaryReader reader) + { + // VariationsTable `avar` + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+=========================================================================+ + // | uint16 | majorVersion | Major version number of the font variations table — set to 1. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | minorVersion | Minor version number of the font variations table — set to 0. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | (reserved) | This field is permanently reserved. Set to zero. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | axisCount | The number of variation axes in the font | + // | | | (the number of records in the axes array). | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | SegmentMaps | axisSegmentMaps[axisCount] | The segment maps array — one segment map for each axis, in the order of | + // | | | axes specified in the 'fvar' table. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + ushort major = reader.ReadUInt16(); + ushort minor = reader.ReadUInt16(); + ushort reserved = reader.ReadUInt16(); + ushort axisCount = reader.ReadUInt16(); - var segmentMaps = new SegmentMapRecord[axisCount]; - for (int i = 0; i < axisCount; i++) - { - segmentMaps[i] = SegmentMapRecord.Load(reader); - } + if (major != 1) + { + throw new NotSupportedException("Only version 1 of avar table is supported"); + } - return new AVarTable(axisCount, segmentMaps); + var segmentMaps = new SegmentMapRecord[axisCount]; + for (int i = 0; i < axisCount; i++) + { + segmentMaps[i] = SegmentMapRecord.Load(reader); } + + return new AVarTable(axisCount, segmentMaps); } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AxisValueMapRecord.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AxisValueMapRecord.cs index 980461c64..32c0706e9 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AxisValueMapRecord.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AxisValueMapRecord.cs @@ -1,34 +1,33 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +internal class AxisValueMapRecord { - internal class AxisValueMapRecord + public AxisValueMapRecord(float fromCoordinate, float toCoordinate) { - public AxisValueMapRecord(float fromCoordinate, float toCoordinate) - { - this.FromCoordinate = fromCoordinate; - this.ToCoordinate = toCoordinate; - } + this.FromCoordinate = fromCoordinate; + this.ToCoordinate = toCoordinate; + } - public float FromCoordinate { get; } + public float FromCoordinate { get; } - public float ToCoordinate { get; } + public float ToCoordinate { get; } - public static AxisValueMapRecord Load(BigEndianBinaryReader reader) - { - // AxisValueMapRecord - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | Type | Name | Description | - // +=================+========================================+=========================================================================+ - // | F2DOT14 | fromCoordinate | A normalized coordinate value obtained using default normalization. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | F2DOT14 | toCoordinate | The modified, normalized coordinate value. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - float fromCoordinate = reader.ReadF2dot14(); - float toCoordinate = reader.ReadF2dot14(); + public static AxisValueMapRecord Load(BigEndianBinaryReader reader) + { + // AxisValueMapRecord + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+=========================================================================+ + // | F2DOT14 | fromCoordinate | A normalized coordinate value obtained using default normalization. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | F2DOT14 | toCoordinate | The modified, normalized coordinate value. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + float fromCoordinate = reader.ReadF2dot14(); + float toCoordinate = reader.ReadF2dot14(); - return new AxisValueMapRecord(fromCoordinate, toCoordinate); - } + return new AxisValueMapRecord(fromCoordinate, toCoordinate); } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSet.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSet.cs index 9b6381699..6529b3d89 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSet.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSet.cs @@ -1,43 +1,42 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +internal class DeltaSet { - internal class DeltaSet + public DeltaSet(BigEndianBinaryReader reader, int wordDeltas, bool longWords, ushort regionIndexCount) { - public DeltaSet(BigEndianBinaryReader reader, int wordDeltas, bool longWords, ushort regionIndexCount) + this.ShortDeltas = new int[wordDeltas]; + for (int i = 0; i < wordDeltas; i++) + { + this.ShortDeltas[i] = longWords ? reader.ReadInt32() : reader.ReadInt16(); + } + + int remaining = regionIndexCount - wordDeltas; + this.RegionDeltas = new short[remaining]; + for (int i = 0; i < remaining; i++) { - this.ShortDeltas = new int[wordDeltas]; - for (int i = 0; i < wordDeltas; i++) - { - this.ShortDeltas[i] = longWords ? reader.ReadInt32() : reader.ReadInt16(); - } - - int remaining = regionIndexCount - wordDeltas; - this.RegionDeltas = new short[remaining]; - for (int i = 0; i < remaining; i++) - { - this.RegionDeltas[i] = longWords ? reader.ReadInt16() : reader.ReadSByte(); - } - - this.Deltas = new int[this.RegionDeltas.Length + this.ShortDeltas.Length]; - int offset = 0; - - for (int i = 0; i < this.ShortDeltas.Length; i++) - { - this.Deltas[offset++] = this.ShortDeltas[i]; - } - - for (int i = 0; i < this.RegionDeltas.Length; i++) - { - this.Deltas[offset++] = this.RegionDeltas[i]; - } + this.RegionDeltas[i] = longWords ? reader.ReadInt16() : reader.ReadSByte(); } - public short[] RegionDeltas { get; } + this.Deltas = new int[this.RegionDeltas.Length + this.ShortDeltas.Length]; + int offset = 0; - public int[] ShortDeltas { get; } + for (int i = 0; i < this.ShortDeltas.Length; i++) + { + this.Deltas[offset++] = this.ShortDeltas[i]; + } - public int[] Deltas { get; } + for (int i = 0; i < this.RegionDeltas.Length; i++) + { + this.Deltas[offset++] = this.RegionDeltas[i]; + } } + + public short[] RegionDeltas { get; } + + public int[] ShortDeltas { get; } + + public int[] Deltas { get; } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs index df3ad4afc..6d42157ff 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs @@ -1,81 +1,80 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using System; using System.IO; -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +internal class DeltaSetIndexMap { - internal class DeltaSetIndexMap - { - private const int InnerIndexBitCountMask = 0x0F; + private const int InnerIndexBitCountMask = 0x0F; - private const int MapEntrySizeMask = 0x30; + private const int MapEntrySizeMask = 0x30; - public DeltaSetIndexMap(int outerIndex, int innerIndex) - { - this.OuterIndex = outerIndex; - this.InnerIndex = innerIndex; - } + public DeltaSetIndexMap(int outerIndex, int innerIndex) + { + this.OuterIndex = outerIndex; + this.InnerIndex = innerIndex; + } - public int OuterIndex { get; } + public int OuterIndex { get; } - public int InnerIndex { get; } + public int InnerIndex { get; } - public static DeltaSetIndexMap[] Load(BigEndianBinaryReader reader, long offset) - { - // DeltaSetIndexMap. - // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ - // | Type | Name | Description | - // +=================+========================================+===================================================================================+ - // | uint8 | format | DeltaSetIndexMap format. Either 0 or 1 | - // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ - // | uint8 | entryFormat | A packed field that describes the compressed representation of delta-set indices. | - // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ - // | uint16 or uin32 | mapCount | The number of mapping entries. uint16 for format0, uint32 for format 1 | - // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ - // | uint8 | mapData[variable] | The delta-set index mapping data. | - // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ - reader.Seek(offset, SeekOrigin.Begin); - byte format = reader.ReadUInt8(); - byte entryFormat = reader.ReadUInt8(); - ushort mapCount = reader.ReadUInt16(); + public static DeltaSetIndexMap[] Load(BigEndianBinaryReader reader, long offset) + { + // DeltaSetIndexMap. + // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+===================================================================================+ + // | uint8 | format | DeltaSetIndexMap format. Either 0 or 1 | + // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ + // | uint8 | entryFormat | A packed field that describes the compressed representation of delta-set indices. | + // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ + // | uint16 or uin32 | mapCount | The number of mapping entries. uint16 for format0, uint32 for format 1 | + // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ + // | uint8 | mapData[variable] | The delta-set index mapping data. | + // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + byte format = reader.ReadUInt8(); + byte entryFormat = reader.ReadUInt8(); + ushort mapCount = reader.ReadUInt16(); - if (format is not 0 or 1) - { - throw new NotSupportedException("Only format 0 or 1 of DeltaSetIndexMap is supported"); - } + if (format is not 0 or 1) + { + throw new NotSupportedException("Only format 0 or 1 of DeltaSetIndexMap is supported"); + } - int entrySize = ((entryFormat & MapEntrySizeMask) >> 4) + 1; - int outerIndex = entrySize >> ((entryFormat & InnerIndexBitCountMask) + 1); - int innerIndex = entrySize & ((1 << ((entryFormat & InnerIndexBitCountMask) + 1)) - 1); + int entrySize = ((entryFormat & MapEntrySizeMask) >> 4) + 1; + int outerIndex = entrySize >> ((entryFormat & InnerIndexBitCountMask) + 1); + int innerIndex = entrySize & ((1 << ((entryFormat & InnerIndexBitCountMask) + 1)) - 1); - var deltaSetIndexMaps = new DeltaSetIndexMap[mapCount]; - for (int i = 0; i < mapCount; i++) + var deltaSetIndexMaps = new DeltaSetIndexMap[mapCount]; + for (int i = 0; i < mapCount; i++) + { + int entry; + switch (entrySize) { - int entry; - switch (entrySize) - { - case 1: - entry = reader.ReadByte(); - break; - case 2: - entry = (reader.ReadByte() << 8) | reader.ReadByte(); - break; - case 3: - entry = (reader.ReadByte() << 16) | (reader.ReadByte() << 8) | reader.ReadByte(); - break; - case 4: - entry = (reader.ReadByte() << 24) | (reader.ReadByte() << 16) | (reader.ReadByte() << 8) | reader.ReadByte(); - break; - default: - throw new NotSupportedException("unsupported delta set index map"); - } - - deltaSetIndexMaps[i] = new DeltaSetIndexMap((ushort)(entry & innerIndex), (ushort)(entry >> outerIndex)); + case 1: + entry = reader.ReadByte(); + break; + case 2: + entry = (reader.ReadByte() << 8) | reader.ReadByte(); + break; + case 3: + entry = (reader.ReadByte() << 16) | (reader.ReadByte() << 8) | reader.ReadByte(); + break; + case 4: + entry = (reader.ReadByte() << 24) | (reader.ReadByte() << 16) | (reader.ReadByte() << 8) | reader.ReadByte(); + break; + default: + throw new NotSupportedException("unsupported delta set index map"); } - return deltaSetIndexMaps; + deltaSetIndexMaps[i] = new DeltaSetIndexMap((ushort)(entry & innerIndex), (ushort)(entry >> outerIndex)); } + + return deltaSetIndexMaps; } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs index 4c1e7479a..7352768e2 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs @@ -1,101 +1,100 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using System; -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// Implements reading the Font Variations Table `fvar`. +/// +/// +internal class FVarTable : Table { - /// - /// Implements reading the Font Variations Table `fvar`. - /// - /// - internal class FVarTable : Table - { - internal const string TableName = "fvar"; + internal const string TableName = "fvar"; - public FVarTable(ushort axisCount, VariationAxisRecord[] axes, InstanceRecord[] instances) - { - this.AxisCount = axisCount; - this.Axes = axes; - this.Instances = instances; - } + public FVarTable(ushort axisCount, VariationAxisRecord[] axes, InstanceRecord[] instances) + { + this.AxisCount = axisCount; + this.Axes = axes; + this.Instances = instances; + } - public ushort AxisCount { get; } + public ushort AxisCount { get; } - public VariationAxisRecord[] Axes { get; } + public VariationAxisRecord[] Axes { get; } - public InstanceRecord[] Instances { get; } + public InstanceRecord[] Instances { get; } - public static FVarTable? Load(FontReader reader) + public static FVarTable? Load(FontReader reader) + { + if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) { - if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) - { - return null; - } - - using (binaryReader) - { - return Load(binaryReader); - } + return null; } - public static FVarTable Load(BigEndianBinaryReader reader) + using (binaryReader) { - // VariationsTable `fvar` - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | Type | Name | Description | - // +=================+========================================+================================================================+ - // | uint16 | majorVersion | Major version number of the font variations table — set to 1. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | uint16 | minorVersion | Minor version number of the font variations table — set to 0. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | Offset16 | axesArrayOffset | Offset in bytes from the beginning of the table to the start | - // | | | of the VariationAxisRecord array. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | uint16 | (reserved) | This field is permanently reserved. Set to 2. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | uint16 | axisCount | The number of variation axes in the font | - // | | | (the number of records in the axes array). | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | uint16 | axisSize | The size in bytes of each VariationAxisRecord | - // | | | — set to 20 (0x0014) for this version. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | uint16 | instanceCount | The number of named instances defined in the font | - // | | | (the number of records in the instances array). | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | uint16 | instanceSize | The size in bytes of each InstanceRecord | - // | | | — set to either axisCount * sizeof(Fixed) + 4, | - // | | | or to axisCount * sizeof(Fixed) + 6. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - long startOffset = reader.BaseStream.Position; - ushort major = reader.ReadUInt16(); - ushort minor = reader.ReadUInt16(); - ushort axesArrayOffset = reader.ReadOffset16(); - ushort reserved = reader.ReadUInt16(); - ushort axisCount = reader.ReadUInt16(); - ushort axisSize = reader.ReadUInt16(); - ushort instanceCount = reader.ReadUInt16(); - ushort instanceSize = reader.ReadUInt16(); + return Load(binaryReader); + } + } - if (major != 1) - { - throw new NotSupportedException("Only version 1 of fvar table is supported"); - } + public static FVarTable Load(BigEndianBinaryReader reader) + { + // VariationsTable `fvar` + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+================================================================+ + // | uint16 | majorVersion | Major version number of the font variations table — set to 1. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | minorVersion | Minor version number of the font variations table — set to 0. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Offset16 | axesArrayOffset | Offset in bytes from the beginning of the table to the start | + // | | | of the VariationAxisRecord array. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | (reserved) | This field is permanently reserved. Set to 2. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | axisCount | The number of variation axes in the font | + // | | | (the number of records in the axes array). | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | axisSize | The size in bytes of each VariationAxisRecord | + // | | | — set to 20 (0x0014) for this version. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | instanceCount | The number of named instances defined in the font | + // | | | (the number of records in the instances array). | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | instanceSize | The size in bytes of each InstanceRecord | + // | | | — set to either axisCount * sizeof(Fixed) + 4, | + // | | | or to axisCount * sizeof(Fixed) + 6. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + long startOffset = reader.BaseStream.Position; + ushort major = reader.ReadUInt16(); + ushort minor = reader.ReadUInt16(); + ushort axesArrayOffset = reader.ReadOffset16(); + ushort reserved = reader.ReadUInt16(); + ushort axisCount = reader.ReadUInt16(); + ushort axisSize = reader.ReadUInt16(); + ushort instanceCount = reader.ReadUInt16(); + ushort instanceSize = reader.ReadUInt16(); - var axesArray = new VariationAxisRecord[axisCount]; - for (int i = 0; i < axisCount; i++) - { - axesArray[i] = VariationAxisRecord.Load(reader, axesArrayOffset + (axisSize * i)); - } + if (major != 1) + { + throw new NotSupportedException("Only version 1 of fvar table is supported"); + } - var instances = new InstanceRecord[instanceCount]; - long instancesOffset = reader.BaseStream.Position - startOffset; - for (int i = 0; i < instanceCount; i++) - { - instances[i] = InstanceRecord.Load(reader, instancesOffset + (i * instanceSize), axisCount); - } + var axesArray = new VariationAxisRecord[axisCount]; + for (int i = 0; i < axisCount; i++) + { + axesArray[i] = VariationAxisRecord.Load(reader, axesArrayOffset + (axisSize * i)); + } - return new FVarTable(axisCount, axesArray, instances); + var instances = new InstanceRecord[instanceCount]; + long instancesOffset = reader.BaseStream.Position - startOffset; + for (int i = 0; i < instanceCount; i++) + { + instances[i] = InstanceRecord.Load(reader, instancesOffset + (i * instanceSize), axisCount); } + + return new FVarTable(axisCount, axesArray, instances); } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs index 07b6279ab..10bc414d8 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs @@ -1,113 +1,112 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using System; using System.IO; -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// Implements reading the Font Variations Table `gvar`. +/// +/// +internal class GVarTable : Table { - /// - /// Implements reading the Font Variations Table `gvar`. - /// - /// - internal class GVarTable : Table - { - internal const string TableName = "gvar"; + internal const string TableName = "gvar"; - public GVarTable(int axisCount, float[,] sharedTuples, GlyphVariationData[] glyphVariations) - { - this.AxisCount = axisCount; - this.SharedTuples = sharedTuples; - this.GlyphVariations = glyphVariations; - } + public GVarTable(int axisCount, float[,] sharedTuples, GlyphVariationData[] glyphVariations) + { + this.AxisCount = axisCount; + this.SharedTuples = sharedTuples; + this.GlyphVariations = glyphVariations; + } - public int AxisCount { get; } + public int AxisCount { get; } - public float[,] SharedTuples { get; } + public float[,] SharedTuples { get; } - public GlyphVariationData[] GlyphVariations { get; } + public GlyphVariationData[] GlyphVariations { get; } - public static GVarTable? Load(FontReader reader) + public static GVarTable? Load(FontReader reader) + { + if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) { - if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) - { - return null; - } - - using (binaryReader) - { - return Load(binaryReader); - } + return null; } - public static GVarTable Load(BigEndianBinaryReader reader) + using (binaryReader) { - // VariationsTable `gvar` - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | Type | Name | Description | - // +=================+========================================+=========================================================================+ - // | uint16 | majorVersion | Major version number of the font variations table — set to 1. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | uint16 | minorVersion | Minor version number of the font variations table — set to 0. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | uint16 | axisCount | The number of variation axes in the font | - // | | | (the number of records in the axes array). | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | uint16 | sharedTupleCount | The number of shared tuple records. Shared tuple records can | - // | | | be referenced within glyph variation data tables for multiple glyphs, | - // | | | as opposed to other tuple records stored directly within a glyph | - // | | | variation data table. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | Offset32 | sharedTuplesOffset | Offset from the start of this table to the shared tuple records. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | uint16 | glyphCount | The number of glyphs in this font. This must match the number of glyphs | - // | | | stored elsewhere in the font. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | uint16 | flags | Bit-field that gives the format of the offset array that follows. | - // | | | If bit 0 is clear, the offsets are uint16; if bit 0 is set, | - // | | | the offsets are uint32. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | Offset32 | glyphVariationDataArrayOffset | Offset from the start of this table to the array of GlyphVariationData | - // | | | tables. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | Offset16 or | glyphVariationDataOffsets[glyphCount+1]| Offsets from the start of the GlyphVariationData array to each | - // | Offset32 | | GlyphVariationData table. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - long startOffset = reader.BaseStream.Position; - ushort major = reader.ReadUInt16(); - ushort minor = reader.ReadUInt16(); - ushort axisCount = reader.ReadUInt16(); - ushort sharedTupleCount = reader.ReadUInt16(); - ushort sharedTuplesOffset = reader.ReadOffset16(); - ushort glyphCount = reader.ReadUInt16(); - ushort flags = reader.ReadUInt16(); - bool is32BitOffset = (flags & 1) == 1; - ushort glyphVariationDataArrayOffset = reader.ReadOffset16(); + return Load(binaryReader); + } + } - if (major != 1) - { - throw new NotSupportedException("Only version 1 of gvar table is supported"); - } + public static GVarTable Load(BigEndianBinaryReader reader) + { + // VariationsTable `gvar` + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+=========================================================================+ + // | uint16 | majorVersion | Major version number of the font variations table — set to 1. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | minorVersion | Minor version number of the font variations table — set to 0. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | axisCount | The number of variation axes in the font | + // | | | (the number of records in the axes array). | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | sharedTupleCount | The number of shared tuple records. Shared tuple records can | + // | | | be referenced within glyph variation data tables for multiple glyphs, | + // | | | as opposed to other tuple records stored directly within a glyph | + // | | | variation data table. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | sharedTuplesOffset | Offset from the start of this table to the shared tuple records. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | glyphCount | The number of glyphs in this font. This must match the number of glyphs | + // | | | stored elsewhere in the font. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | flags | Bit-field that gives the format of the offset array that follows. | + // | | | If bit 0 is clear, the offsets are uint16; if bit 0 is set, | + // | | | the offsets are uint32. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | glyphVariationDataArrayOffset | Offset from the start of this table to the array of GlyphVariationData | + // | | | tables. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset16 or | glyphVariationDataOffsets[glyphCount+1]| Offsets from the start of the GlyphVariationData array to each | + // | Offset32 | | GlyphVariationData table. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + long startOffset = reader.BaseStream.Position; + ushort major = reader.ReadUInt16(); + ushort minor = reader.ReadUInt16(); + ushort axisCount = reader.ReadUInt16(); + ushort sharedTupleCount = reader.ReadUInt16(); + ushort sharedTuplesOffset = reader.ReadOffset16(); + ushort glyphCount = reader.ReadUInt16(); + ushort flags = reader.ReadUInt16(); + bool is32BitOffset = (flags & 1) == 1; + ushort glyphVariationDataArrayOffset = reader.ReadOffset16(); - reader.Seek(startOffset + sharedTuplesOffset, SeekOrigin.Begin); - float[,] sharedTuples = new float[sharedTupleCount, axisCount]; - for (int i = 0; i < sharedTupleCount; i++) - { - for (int j = 0; j < axisCount; j++) - { - sharedTuples[i, j] = reader.ReadF2dot14(); - } - } + if (major != 1) + { + throw new NotSupportedException("Only version 1 of gvar table is supported"); + } - int glyphVariationsCount = glyphCount + 1; - var glyphVariations = new GlyphVariationData[glyphVariationsCount]; - for (int i = 0; i < glyphVariationsCount; i++) + reader.Seek(startOffset + sharedTuplesOffset, SeekOrigin.Begin); + float[,] sharedTuples = new float[sharedTupleCount, axisCount]; + for (int i = 0; i < sharedTupleCount; i++) + { + for (int j = 0; j < axisCount; j++) { - var glyphVariation = GlyphVariationData.Load(reader, glyphVariationDataArrayOffset, is32BitOffset, axisCount); - glyphVariations[i] = glyphVariation; + sharedTuples[i, j] = reader.ReadF2dot14(); } + } - return new GVarTable(axisCount, sharedTuples, glyphVariations); + int glyphVariationsCount = glyphCount + 1; + var glyphVariations = new GlyphVariationData[glyphVariationsCount]; + for (int i = 0; i < glyphVariationsCount; i++) + { + var glyphVariation = GlyphVariationData.Load(reader, glyphVariationDataArrayOffset, is32BitOffset, axisCount); + glyphVariations[i] = glyphVariation; } + + return new GVarTable(axisCount, sharedTuples, glyphVariations); } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs index 464d892d6..446d7dda7 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs @@ -1,56 +1,55 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using System.IO; -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// Implements loading glyph variation data structure. +/// +/// +internal class GlyphVariationData { /// - /// Implements loading glyph variation data structure. + /// Mask for the low bits to give the number of tuple variation tables. /// - /// - internal class GlyphVariationData - { - /// - /// Mask for the low bits to give the number of tuple variation tables. - /// - internal const int CountMask = 0x0FFF; - - /// - /// Flag indicating that some or all tuple variation tables reference a shared set of “point” numbers. - /// These shared numbers are represented as packed point number data at the start of the serialized data. - /// - internal const int SharedPointNumbersMask = 0x8000; + internal const int CountMask = 0x0FFF; - public static GlyphVariationData Load(BigEndianBinaryReader reader, long offset, bool is32BitOffset, int axisCount) - { - // GlyphVariationData - // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ - // | Type | Name | Description | - // +======================+===========================================+==============================================================================+ - // | uint16 | tupleVariationCount | A packed field. The high 4 bits are flags, | - // | | | and the low 12 bits are the number of tuple variation tables for this glyph. | - // | | | The count can be any number between 1 and 4095. | - // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ - // | Offset16 | dataOffset | Offset from the start of the GlyphVariationData table to the serialized data.| - // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ - // | TupleVariation | tupleVariationHeaders[tupleVariationCount]| Array of tuple variation headers. | - // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ - reader.Seek(offset, SeekOrigin.Begin); - ushort tupleVariationCount = reader.ReadUInt16(); - bool sharedPointNumbers = (tupleVariationCount & SharedPointNumbersMask) == SharedPointNumbersMask; + /// + /// Flag indicating that some or all tuple variation tables reference a shared set of “point” numbers. + /// These shared numbers are represented as packed point number data at the start of the serialized data. + /// + internal const int SharedPointNumbersMask = 0x8000; - int tupleVariationTables = tupleVariationCount & CountMask; - var variationHeaders = new TupleVariation[tupleVariationTables]; - for (int i = 0; i < tupleVariationTables; i++) - { - variationHeaders[i] = TupleVariation.Load(reader, axisCount); - } + public static GlyphVariationData Load(BigEndianBinaryReader reader, long offset, bool is32BitOffset, int axisCount) + { + // GlyphVariationData + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | Type | Name | Description | + // +======================+===========================================+==============================================================================+ + // | uint16 | tupleVariationCount | A packed field. The high 4 bits are flags, | + // | | | and the low 12 bits are the number of tuple variation tables for this glyph. | + // | | | The count can be any number between 1 and 4095. | + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | Offset16 | dataOffset | Offset from the start of the GlyphVariationData table to the serialized data.| + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | TupleVariation | tupleVariationHeaders[tupleVariationCount]| Array of tuple variation headers. | + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + ushort tupleVariationCount = reader.ReadUInt16(); + bool sharedPointNumbers = (tupleVariationCount & SharedPointNumbersMask) == SharedPointNumbersMask; - // TODO: parse serialized data - int serializedDataOffset = is32BitOffset ? reader.ReadInt32() : reader.ReadOffset16(); - reader.Seek(offset + serializedDataOffset, SeekOrigin.Begin); - return new GlyphVariationData(); + int tupleVariationTables = tupleVariationCount & CountMask; + var variationHeaders = new TupleVariation[tupleVariationTables]; + for (int i = 0; i < tupleVariationTables; i++) + { + variationHeaders[i] = TupleVariation.Load(reader, axisCount); } + + // TODO: parse serialized data + int serializedDataOffset = is32BitOffset ? reader.ReadInt32() : reader.ReadOffset16(); + reader.Seek(offset + serializedDataOffset, SeekOrigin.Begin); + return new GlyphVariationData(); } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index 2e2d2fe69..bd79099c5 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -1,229 +1,228 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using System.Collections.Generic; -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// +/// This class is transforms TrueType glyphs according to the data from +/// the Apple Advanced Typography variation tables(fvar, gvar, and avar). +/// These tables allow infinite adjustments to glyph weight, width, slant, +/// and optical size without the designer needing to specify every exact style. +/// +/// Implementation is based on fontkit: +/// Docs for the item variations: +/// +internal class GlyphVariationProcessor { - /// - /// - /// This class is transforms TrueType glyphs according to the data from - /// the Apple Advanced Typography variation tables(fvar, gvar, and avar). - /// These tables allow infinite adjustments to glyph weight, width, slant, - /// and optical size without the designer needing to specify every exact style. - /// - /// Implementation is based on fontkit: - /// Docs for the item variations: - /// - internal class GlyphVariationProcessor - { - private readonly ItemVariationStore itemStore; + private readonly ItemVariationStore itemStore; - private readonly FVarTable fvar; + private readonly FVarTable fvar; - private readonly AVarTable? avar; + private readonly AVarTable? avar; - private readonly GVarTable? gVar; + private readonly GVarTable? gVar; - private readonly HVarTable? hVar; + private readonly HVarTable? hVar; - private readonly float[] normalizedCoords; + private readonly float[] normalizedCoords; - private readonly Dictionary blendVectors; + private readonly Dictionary blendVectors; + + /// + /// Epsilon as used in fontkit reference implementation. + /// + private const float Epsilon = 2.2204460492503130808472633361816E-16F; - /// - /// Epsilon as used in fontkit reference implementation. - /// - private const float Epsilon = 2.2204460492503130808472633361816E-16F; + public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVarTable? aVar = null, GVarTable? gVar = null, HVarTable? hVar = null) + { + DebugGuard.NotNull(itemStore, nameof(itemStore)); + DebugGuard.NotNull(fVar, nameof(fVar)); + + this.itemStore = itemStore; + this.fvar = fVar; + this.avar = aVar; + this.gVar = gVar; + this.hVar = hVar; + this.normalizedCoords = this.NormalizeDefaultCoords(); + this.blendVectors = new Dictionary(); + } - public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVarTable? aVar = null, GVarTable? gVar = null, HVarTable? hVar = null) + private float[] NormalizeDefaultCoords() + { + float[] coords = new float[this.fvar.AxisCount]; + for (int i = 0; i < this.fvar.AxisCount; i++) { - DebugGuard.NotNull(itemStore, nameof(itemStore)); - DebugGuard.NotNull(fVar, nameof(fVar)); - - this.itemStore = itemStore; - this.fvar = fVar; - this.avar = aVar; - this.gVar = gVar; - this.hVar = hVar; - this.normalizedCoords = this.NormalizeDefaultCoords(); - this.blendVectors = new Dictionary(); + coords[i] = this.fvar.Axes[i].DefaultValue; } - private float[] NormalizeDefaultCoords() + // The default mapping is linear along each axis, in two segments: + // from the minValue to defaultValue, and from defaultValue to maxValue. + float[] normalized = new float[this.fvar.AxisCount]; + for (int i = 0; i < this.fvar.AxisCount; i++) { - float[] coords = new float[this.fvar.AxisCount]; - for (int i = 0; i < this.fvar.AxisCount; i++) + VariationAxisRecord axis = this.fvar.Axes[i]; + if (coords[i] < axis.DefaultValue) { - coords[i] = this.fvar.Axes[i].DefaultValue; + normalized[i] = (coords[i] - axis.DefaultValue + Epsilon) / (axis.DefaultValue - axis.MinValue + Epsilon); } - - // The default mapping is linear along each axis, in two segments: - // from the minValue to defaultValue, and from defaultValue to maxValue. - float[] normalized = new float[this.fvar.AxisCount]; - for (int i = 0; i < this.fvar.AxisCount; i++) + else { - VariationAxisRecord axis = this.fvar.Axes[i]; - if (coords[i] < axis.DefaultValue) - { - normalized[i] = (coords[i] - axis.DefaultValue + Epsilon) / (axis.DefaultValue - axis.MinValue + Epsilon); - } - else - { - normalized[i] = (coords[i] - axis.DefaultValue + Epsilon) / (axis.MaxValue - axis.DefaultValue + Epsilon); - } + normalized[i] = (coords[i] - axis.DefaultValue + Epsilon) / (axis.MaxValue - axis.DefaultValue + Epsilon); } + } - // If there is an avar table, the normalized value is calculated - // by interpolating between the two nearest mapped values. - if (this.avar is not null) + // If there is an avar table, the normalized value is calculated + // by interpolating between the two nearest mapped values. + if (this.avar is not null) + { + for (int i = 0; i < this.avar.SegmentMaps.Length; i++) { - for (int i = 0; i < this.avar.SegmentMaps.Length; i++) + SegmentMapRecord segment = this.avar.SegmentMaps[i]; + for (int j = 0; j < segment.AxisValueMap.Length; j++) { - SegmentMapRecord segment = this.avar.SegmentMaps[i]; - for (int j = 0; j < segment.AxisValueMap.Length; j++) + AxisValueMapRecord pair = segment.AxisValueMap[j]; + if (j >= 1 && normalized[i] < pair.FromCoordinate) { - AxisValueMapRecord pair = segment.AxisValueMap[j]; - if (j >= 1 && normalized[i] < pair.FromCoordinate) - { - AxisValueMapRecord prev = segment.AxisValueMap[j - 1]; - normalized[i] = ((((normalized[i] - prev.FromCoordinate) * (pair.ToCoordinate - prev.ToCoordinate)) + Epsilon) / - (pair.FromCoordinate - prev.FromCoordinate + Epsilon)) + prev.ToCoordinate; - break; - } + AxisValueMapRecord prev = segment.AxisValueMap[j - 1]; + normalized[i] = ((((normalized[i] - prev.FromCoordinate) * (pair.ToCoordinate - prev.ToCoordinate)) + Epsilon) / + (pair.FromCoordinate - prev.FromCoordinate + Epsilon)) + prev.ToCoordinate; + break; } } } + } - return normalized; + return normalized; + } + + public int AdvanceAdjustment(int glyphId) + { + if (this.hVar is null) + { + throw new InvalidFontFileException("Missing HVAR table"); } - public int AdvanceAdjustment(int glyphId) + int outerIndex; + int innerIndex; + if (this.hVar?.AdvanceWidthMapping != null && this.hVar?.AdvanceWidthMapping.Length > 0) { - if (this.hVar is null) + DeltaSetIndexMap[]? advanceWidthMapping = this.hVar?.AdvanceWidthMapping; + int idx = glyphId; + if (idx >= advanceWidthMapping?.Length) { - throw new InvalidFontFileException("Missing HVAR table"); + idx = advanceWidthMapping.Length - 1; } - int outerIndex; - int innerIndex; - if (this.hVar?.AdvanceWidthMapping != null && this.hVar?.AdvanceWidthMapping.Length > 0) - { - DeltaSetIndexMap[]? advanceWidthMapping = this.hVar?.AdvanceWidthMapping; - int idx = glyphId; - if (idx >= advanceWidthMapping?.Length) - { - idx = advanceWidthMapping.Length - 1; - } + outerIndex = advanceWidthMapping![idx].OuterIndex; + innerIndex = advanceWidthMapping[idx].InnerIndex; + } + else + { + outerIndex = 0; + innerIndex = glyphId; + } - outerIndex = advanceWidthMapping![idx].OuterIndex; - innerIndex = advanceWidthMapping[idx].InnerIndex; - } - else - { - outerIndex = 0; - innerIndex = glyphId; - } + return this.Delta(outerIndex, innerIndex); + } - return this.Delta(outerIndex, innerIndex); + public float[] BlendVector(int outerIndex) + { + ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; + if (this.blendVectors.ContainsKey(variationData)) + { + return this.blendVectors[variationData]; } - public float[] BlendVector(int outerIndex) - { - ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; - if (this.blendVectors.ContainsKey(variationData)) - { - return this.blendVectors[variationData]; - } + float[] blendVector = new float[variationData.RegionIndexes.Length]; - float[] blendVector = new float[variationData.RegionIndexes.Length]; + // Outer loop steps through master designs to be blended. + for (int i = 0; i < variationData.RegionIndexes.Length; i++) + { + float scalar = 1.0f; + ushort regionIndex = variationData.RegionIndexes[i]; + RegionAxisCoordinates[] axes = this.itemStore.VariationRegionList.VariationRegions[regionIndex]; - // Outer loop steps through master designs to be blended. - for (int i = 0; i < variationData.RegionIndexes.Length; i++) + // Inner loop steps through axes in this region. + for (int j = 0; j < axes.Length; j++) { - float scalar = 1.0f; - ushort regionIndex = variationData.RegionIndexes[i]; - RegionAxisCoordinates[] axes = this.itemStore.VariationRegionList.VariationRegions[regionIndex]; + RegionAxisCoordinates axis = axes[j]; - // Inner loop steps through axes in this region. - for (int j = 0; j < axes.Length; j++) + // Compute the scalar contribution of this axis, ignore invalid ranges. + float axisScalar; + if (axis.StartCoord > axis.PeakCoord || axis.PeakCoord > axis.EndCoord) { - RegionAxisCoordinates axis = axes[j]; - - // Compute the scalar contribution of this axis, ignore invalid ranges. - float axisScalar; - if (axis.StartCoord > axis.PeakCoord || axis.PeakCoord > axis.EndCoord) - { - axisScalar = 1; - } - else if (axis.StartCoord < 0 && axis.EndCoord > 0 && axis.PeakCoord != 0) - { - axisScalar = 1; - } - else if (axis.PeakCoord == 0) + axisScalar = 1; + } + else if (axis.StartCoord < 0 && axis.EndCoord > 0 && axis.PeakCoord != 0) + { + axisScalar = 1; + } + else if (axis.PeakCoord == 0) + { + // Peak of 0 means ignore this axis. + axisScalar = 1; + } + else if (this.normalizedCoords[j] < axis.StartCoord || this.normalizedCoords[j] > axis.EndCoord) + { + // Ignore this region if coords are out of range + axisScalar = 0; + } + else + { + // Calculate a proportional factor. + if (this.normalizedCoords[j] == axis.PeakCoord) { - // Peak of 0 means ignore this axis. axisScalar = 1; } - else if (this.normalizedCoords[j] < axis.StartCoord || this.normalizedCoords[j] > axis.EndCoord) + else if (this.normalizedCoords[j] < axis.PeakCoord) { - // Ignore this region if coords are out of range - axisScalar = 0; + axisScalar = (this.normalizedCoords[j] - axis.StartCoord + Epsilon) / + (axis.PeakCoord - axis.StartCoord + Epsilon); } else { - // Calculate a proportional factor. - if (this.normalizedCoords[j] == axis.PeakCoord) - { - axisScalar = 1; - } - else if (this.normalizedCoords[j] < axis.PeakCoord) - { - axisScalar = (this.normalizedCoords[j] - axis.StartCoord + Epsilon) / - (axis.PeakCoord - axis.StartCoord + Epsilon); - } - else - { - axisScalar = (axis.EndCoord - this.normalizedCoords[j] + Epsilon) / - (axis.EndCoord - axis.PeakCoord + Epsilon); - } + axisScalar = (axis.EndCoord - this.normalizedCoords[j] + Epsilon) / + (axis.EndCoord - axis.PeakCoord + Epsilon); } - - // Take product of all the axis scalars. - scalar *= axisScalar; } - blendVector[i] = scalar; + // Take product of all the axis scalars. + scalar *= axisScalar; } - this.blendVectors[variationData] = blendVector; - - return blendVector; + blendVector[i] = scalar; } - private int Delta(int outerIndex, int innerIndex) - { - if (outerIndex >= this.itemStore.ItemVariations.Length) - { - return 0; - } + this.blendVectors[variationData] = blendVector; - ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; - if (innerIndex >= variationData.DeltaSets.Length) - { - return 0; - } + return blendVector; + } - DeltaSet deltaSet = variationData.DeltaSets[innerIndex]; - float[] blendVector = this.BlendVector(outerIndex); - int netAdjustment = 0; - for (int master = 0; master < variationData.RegionIndexes.Length; master++) - { - // TODO: disabled, no deltaSet does not have Deltas field. - // netAdjustment += deltaSet.Deltas[master] * blendVector[master]; - } + private int Delta(int outerIndex, int innerIndex) + { + if (outerIndex >= this.itemStore.ItemVariations.Length) + { + return 0; + } - return netAdjustment; + ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; + if (innerIndex >= variationData.DeltaSets.Length) + { + return 0; } + + DeltaSet deltaSet = variationData.DeltaSets[innerIndex]; + float[] blendVector = this.BlendVector(outerIndex); + int netAdjustment = 0; + for (int master = 0; master < variationData.RegionIndexes.Length; master++) + { + // TODO: disabled, no deltaSet does not have Deltas field. + // netAdjustment += deltaSet.Deltas[master] * blendVector[master]; + } + + return netAdjustment; } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs index 044525b79..9c795bd3f 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs @@ -1,90 +1,89 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using System; -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// Implements reading the font variations table `HVAR`. +/// The HVAR table is used in variable fonts to provide variations for horizontal glyph metrics values. +/// This can be used to provide variation data for advance widths in the 'hmtx' table. +/// +/// +internal class HVarTable : Table { - /// - /// Implements reading the font variations table `HVAR`. - /// The HVAR table is used in variable fonts to provide variations for horizontal glyph metrics values. - /// This can be used to provide variation data for advance widths in the 'hmtx' table. - /// - /// - internal class HVarTable : Table - { - internal const string TableName = "HVAR"; + internal const string TableName = "HVAR"; - public HVarTable(ItemVariationStore itemVariationStore, DeltaSetIndexMap[] advanceWidthMapping, DeltaSetIndexMap[] lsbMapping, DeltaSetIndexMap[] rsbMapping) - { - this.ItemVariationStore = itemVariationStore; - this.AdvanceWidthMapping = advanceWidthMapping; - this.LsbMapping = lsbMapping; - this.RsbMapping = rsbMapping; - } + public HVarTable(ItemVariationStore itemVariationStore, DeltaSetIndexMap[] advanceWidthMapping, DeltaSetIndexMap[] lsbMapping, DeltaSetIndexMap[] rsbMapping) + { + this.ItemVariationStore = itemVariationStore; + this.AdvanceWidthMapping = advanceWidthMapping; + this.LsbMapping = lsbMapping; + this.RsbMapping = rsbMapping; + } - public ItemVariationStore ItemVariationStore { get; } + public ItemVariationStore ItemVariationStore { get; } - public DeltaSetIndexMap[] AdvanceWidthMapping { get; } + public DeltaSetIndexMap[] AdvanceWidthMapping { get; } - public DeltaSetIndexMap[] LsbMapping { get; } + public DeltaSetIndexMap[] LsbMapping { get; } - public DeltaSetIndexMap[] RsbMapping { get; } + public DeltaSetIndexMap[] RsbMapping { get; } - public static HVarTable? Load(FontReader reader) + public static HVarTable? Load(FontReader reader) + { + if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) { - if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) - { - return null; - } - - using (binaryReader) - { - return Load(binaryReader); - } + return null; } - public static HVarTable Load(BigEndianBinaryReader reader) + using (binaryReader) { - // Horizontal metrics variations table - // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ - // | Type | Name | Description | - // +==========================+========================================+=========================================================================+ - // | uint16 | majorVersion | Major version number of the font variations table — set to 1. | - // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ - // | uint16 | minorVersion | Minor version number of the font variations table — set to 0. | - // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ - // | Offset32 | itemVariationStoreOffset | Offset in bytes from the start of this table to the | - // | | | item variation store table. | - // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ - // | Offset32 | advanceWidthMappingOffset | Offset in bytes from the start of this table to the delta-set index | - // | | | mapping for advance widths (may be NULL). | - // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ - // | Offset32 | lsbMappingOffset | Offset in bytes from the start of this table to the delta-set index | - // | | | mapping for left side bearings (may be NULL). | - // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ - // | Offset32 | rsbMappingOffset | Offset in bytes from the start of this table to the delta-set index | - // | | | mapping for right side bearings (may be NULL). | - // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ - ushort major = reader.ReadUInt16(); - ushort minor = reader.ReadUInt16(); - uint itemVariationStoreOffset = reader.ReadOffset32(); - uint advanceWidthMappingOffset = reader.ReadOffset32(); - uint lsbMappingOffset = reader.ReadOffset32(); - uint rsbMappingOffset = reader.ReadOffset32(); + return Load(binaryReader); + } + } - if (major != 1) - { - throw new NotSupportedException("Only version 1 of hvar table is supported"); - } + public static HVarTable Load(BigEndianBinaryReader reader) + { + // Horizontal metrics variations table + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Type | Name | Description | + // +==========================+========================================+=========================================================================+ + // | uint16 | majorVersion | Major version number of the font variations table — set to 1. | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | minorVersion | Minor version number of the font variations table — set to 0. | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | itemVariationStoreOffset | Offset in bytes from the start of this table to the | + // | | | item variation store table. | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | advanceWidthMappingOffset | Offset in bytes from the start of this table to the delta-set index | + // | | | mapping for advance widths (may be NULL). | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | lsbMappingOffset | Offset in bytes from the start of this table to the delta-set index | + // | | | mapping for left side bearings (may be NULL). | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | rsbMappingOffset | Offset in bytes from the start of this table to the delta-set index | + // | | | mapping for right side bearings (may be NULL). | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + ushort major = reader.ReadUInt16(); + ushort minor = reader.ReadUInt16(); + uint itemVariationStoreOffset = reader.ReadOffset32(); + uint advanceWidthMappingOffset = reader.ReadOffset32(); + uint lsbMappingOffset = reader.ReadOffset32(); + uint rsbMappingOffset = reader.ReadOffset32(); - var itemVariationStore = ItemVariationStore.Load(reader, itemVariationStoreOffset); + if (major != 1) + { + throw new NotSupportedException("Only version 1 of hvar table is supported"); + } - DeltaSetIndexMap[] advanceWidthMapping = DeltaSetIndexMap.Load(reader, advanceWidthMappingOffset); - DeltaSetIndexMap[] lsbMapping = DeltaSetIndexMap.Load(reader, lsbMappingOffset); - DeltaSetIndexMap[] rsbMapping = DeltaSetIndexMap.Load(reader, rsbMappingOffset); + var itemVariationStore = ItemVariationStore.Load(reader, itemVariationStoreOffset); - return new HVarTable(itemVariationStore, advanceWidthMapping, lsbMapping, rsbMapping); - } + DeltaSetIndexMap[] advanceWidthMapping = DeltaSetIndexMap.Load(reader, advanceWidthMappingOffset); + DeltaSetIndexMap[] lsbMapping = DeltaSetIndexMap.Load(reader, lsbMappingOffset); + DeltaSetIndexMap[] rsbMapping = DeltaSetIndexMap.Load(reader, rsbMappingOffset); + + return new HVarTable(itemVariationStore, advanceWidthMapping, lsbMapping, rsbMapping); } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/InstanceRecord.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/InstanceRecord.cs index 4545dbb88..0dd241ca5 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/InstanceRecord.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/InstanceRecord.cs @@ -1,59 +1,58 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using System.IO; -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// Defines a InstanceRecord. +/// +/// +internal class InstanceRecord { - /// - /// Defines a InstanceRecord. - /// - /// - internal class InstanceRecord + public InstanceRecord(ushort subfamilyNameId, ushort postScriptNameId, float[] coordinates) { - public InstanceRecord(ushort subfamilyNameId, ushort postScriptNameId, float[] coordinates) - { - this.SubfamilyNameId = subfamilyNameId; - this.PostScriptNameId = postScriptNameId; - this.Coordinates = coordinates; - } + this.SubfamilyNameId = subfamilyNameId; + this.PostScriptNameId = postScriptNameId; + this.Coordinates = coordinates; + } - public ushort SubfamilyNameId { get; } + public ushort SubfamilyNameId { get; } - public ushort PostScriptNameId { get; } + public ushort PostScriptNameId { get; } - public float[] Coordinates { get; } + public float[] Coordinates { get; } - public static InstanceRecord Load(BigEndianBinaryReader reader, long offset, ushort axisCount) + public static InstanceRecord Load(BigEndianBinaryReader reader, long offset, ushort axisCount) + { + // InstanceRecord + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+================================================================+ + // | uint16 | subfamilyNameID | The name ID for entries in the 'name' table that provide | + // | | | subfamily names for this instance. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | flags | Reserved for future use — set to 0. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | UserTuple | coordinates | The coordinates array for this instance. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | postScriptNameID | Optional. The name ID for entries in the 'name' table that | + // | | | provide PostScript names for this instance. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + + ushort subfamilyNameId = reader.ReadUInt16(); + ushort flags = reader.ReadUInt16(); + + float[] coordinates = new float[axisCount]; + for (int i = 0; i < axisCount; i++) { - // InstanceRecord - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | Type | Name | Description | - // +=================+========================================+================================================================+ - // | uint16 | subfamilyNameID | The name ID for entries in the 'name' table that provide | - // | | | subfamily names for this instance. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | uint16 | flags | Reserved for future use — set to 0. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | UserTuple | coordinates | The coordinates array for this instance. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | uint16 | postScriptNameID | Optional. The name ID for entries in the 'name' table that | - // | | | provide PostScript names for this instance. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - reader.Seek(offset, SeekOrigin.Begin); - - ushort subfamilyNameId = reader.ReadUInt16(); - ushort flags = reader.ReadUInt16(); - - float[] coordinates = new float[axisCount]; - for (int i = 0; i < axisCount; i++) - { - coordinates[i] = reader.ReadFixed(); - } - - ushort postScriptNameId = reader.ReadUInt16(); - - return new InstanceRecord(subfamilyNameId, postScriptNameId, coordinates); + coordinates[i] = reader.ReadFixed(); } + + ushort postScriptNameId = reader.ReadUInt16(); + + return new InstanceRecord(subfamilyNameId, postScriptNameId, coordinates); } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs index e43bf4243..9e0d85cf7 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationData.cs @@ -1,88 +1,87 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using System; using System.Diagnostics; using System.IO; -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// Item variation data, docs: +/// +[DebuggerDisplay("ItemCount: {ItemCount}, WordDeltaCount: {WordDeltaCount}, RegionIndexCount: {RegionIndexes.Length}")] +internal sealed class ItemVariationData { /// - /// Item variation data, docs: + /// Count of "word" deltas. /// - [DebuggerDisplay("ItemCount: {ItemCount}, WordDeltaCount: {WordDeltaCount}, RegionIndexCount: {RegionIndexes.Length}")] - internal sealed class ItemVariationData - { - /// - /// Count of "word" deltas. - /// - private const int WordDeltaCountMask = 0x7FFF; + private const int WordDeltaCountMask = 0x7FFF; - /// - /// Flag indicating that "word" deltas are long (int32). - /// - private const int LongWordsMask = 0x8000; + /// + /// Flag indicating that "word" deltas are long (int32). + /// + private const int LongWordsMask = 0x8000; - private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regionIndices, DeltaSet[] deltaSets) - { - this.ItemCount = itemCount; - this.WordDeltaCount = wordDeltaCount; - this.RegionIndexes = regionIndices; - this.DeltaSets = deltaSets; - } + private ItemVariationData(ushort itemCount, ushort wordDeltaCount, ushort[] regionIndices, DeltaSet[] deltaSets) + { + this.ItemCount = itemCount; + this.WordDeltaCount = wordDeltaCount; + this.RegionIndexes = regionIndices; + this.DeltaSets = deltaSets; + } - public ushort ItemCount { get; } + public ushort ItemCount { get; } - public ushort WordDeltaCount { get; } + public ushort WordDeltaCount { get; } - public ushort[] RegionIndexes { get; } + public ushort[] RegionIndexes { get; } - public DeltaSet[] DeltaSets { get; } + public DeltaSet[] DeltaSets { get; } - public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) + public static ItemVariationData Load(BigEndianBinaryReader reader, long offset) + { + // ItemVariationData + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+================================================================+ + // | uint16 | itemCount | The number of delta sets for distinct items. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | wordDeltaCount | A packed field: the high bit is a flag. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // + uint16 | regionIndexCount | The number of variation regions referenced. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // + uint16 | regionIndexes[regionIndexCount] | Array of indices into the variation region list for | + // + | | the regions referenced by this item variation data table. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // + DeltaSet | deltaSets[itemCount] | Delta-set rows. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + ushort itemCount = reader.ReadUInt16(); + ushort wordDeltaCount = reader.ReadUInt16(); + ushort regionIndexCount = reader.ReadUInt16(); + ushort[] regionIndexes = new ushort[regionIndexCount]; + for (int i = 0; i < regionIndexCount; i++) { - // ItemVariationData - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | Type | Name | Description | - // +=================+========================================+================================================================+ - // | uint16 | itemCount | The number of delta sets for distinct items. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | uint16 | wordDeltaCount | A packed field: the high bit is a flag. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // + uint16 | regionIndexCount | The number of variation regions referenced. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // + uint16 | regionIndexes[regionIndexCount] | Array of indices into the variation region list for | - // + | | the regions referenced by this item variation data table. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // + DeltaSet | deltaSets[itemCount] | Delta-set rows. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - reader.Seek(offset, SeekOrigin.Begin); - ushort itemCount = reader.ReadUInt16(); - ushort wordDeltaCount = reader.ReadUInt16(); - ushort regionIndexCount = reader.ReadUInt16(); - ushort[] regionIndexes = new ushort[regionIndexCount]; - for (int i = 0; i < regionIndexCount; i++) - { - regionIndexes[i] = reader.ReadUInt16(); - } - - // The deltaSets array represents a logical two-dimensional table of delta values with itemCount rows and regionIndexCount columns. - // Logically, each DeltaSet record has regionIndexCount number of elements. The elements are represented using long and short types. - // These are either int16 and int8, or int32 and int16, according to whether the LONG_WORDS flag is set. - // The delta array has a sequence of deltas using the long type followed by a sequence of deltas using the short type. - bool longWords = (wordDeltaCount & LongWordsMask) != 0; - int wordDeltas = wordDeltaCount & WordDeltaCountMask; - var deltaSets = new DeltaSet[itemCount]; - for (int i = 0; i < itemCount; i++) - { - var deltaSet = new DeltaSet(reader, wordDeltas, longWords, regionIndexCount); - deltaSets[i] = deltaSet; - } + regionIndexes[i] = reader.ReadUInt16(); + } - return new ItemVariationData(itemCount, wordDeltaCount, regionIndexes, deltaSets); + // The deltaSets array represents a logical two-dimensional table of delta values with itemCount rows and regionIndexCount columns. + // Logically, each DeltaSet record has regionIndexCount number of elements. The elements are represented using long and short types. + // These are either int16 and int8, or int32 and int16, according to whether the LONG_WORDS flag is set. + // The delta array has a sequence of deltas using the long type followed by a sequence of deltas using the short type. + bool longWords = (wordDeltaCount & LongWordsMask) != 0; + int wordDeltas = wordDeltaCount & WordDeltaCountMask; + var deltaSets = new DeltaSet[itemCount]; + for (int i = 0; i < itemCount; i++) + { + var deltaSet = new DeltaSet(reader, wordDeltas, longWords, regionIndexCount); + deltaSets[i] = deltaSet; } - /// - public override int GetHashCode() => HashCode.Combine(this.ItemCount, this.WordDeltaCount, this.RegionIndexes); + return new ItemVariationData(itemCount, wordDeltaCount, regionIndexes, deltaSets); } + + /// + public override int GetHashCode() => HashCode.Combine(this.ItemCount, this.WordDeltaCount, this.RegionIndexes); } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs index 33587d5f0..fd105bbec 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs @@ -1,78 +1,77 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using System.IO; -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// Implements reading the item variation store, which is used in most glyph variation data. +/// +/// +internal class ItemVariationStore { - /// - /// Implements reading the item variation store, which is used in most glyph variation data. - /// - /// - internal class ItemVariationStore + public ItemVariationStore(VariationRegionList variationRegionList, ItemVariationData[] itemVariations) { - public ItemVariationStore(VariationRegionList variationRegionList, ItemVariationData[] itemVariations) - { - this.VariationRegionList = variationRegionList; - this.ItemVariations = itemVariations; - } + this.VariationRegionList = variationRegionList; + this.ItemVariations = itemVariations; + } - public VariationRegionList VariationRegionList { get; } + public VariationRegionList VariationRegionList { get; } - public ItemVariationData[] ItemVariations { get; } + public ItemVariationData[] ItemVariations { get; } - public static ItemVariationStore Load(BigEndianBinaryReader reader, long offset, long? length = null) + public static ItemVariationStore Load(BigEndianBinaryReader reader, long offset, long? length = null) + { + // ItemVariationStore + // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ + // | Type | Name | Description | + // +==========================+==================================================+=========================================================================+ + // | uint16 | format | Format — set to 1 | + // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | variationRegionListOffset | Offset in bytes from the start of the item variation store | + // | | | to the variation region list. | + // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | itemVariationDataCount | The number of item variation data subtables. | + // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | itemVariationDataOffsets[itemVariationDataCount] | Offsets in bytes from the start of the item variation store | + // | | | to each item variation data subtable. | + // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + + ushort format = reader.ReadUInt16(); + if (format != 1) { - // ItemVariationStore - // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ - // | Type | Name | Description | - // +==========================+==================================================+=========================================================================+ - // | uint16 | format | Format — set to 1 | - // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ - // | Offset32 | variationRegionListOffset | Offset in bytes from the start of the item variation store | - // | | | to the variation region list. | - // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ - // | uint16 | itemVariationDataCount | The number of item variation data subtables. | - // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ - // | Offset32 | itemVariationDataOffsets[itemVariationDataCount] | Offsets in bytes from the start of the item variation store | - // | | | to each item variation data subtable. | - // +--------------------------+--------------------------------------------------+-------------------------------------------------------------------------+ - reader.Seek(offset, SeekOrigin.Begin); + throw new InvalidFontFileException($"Invalid value for variation Store Format {format}. Should be '1'."); + } - ushort format = reader.ReadUInt16(); - if (format != 1) - { - throw new InvalidFontFileException($"Invalid value for variation Store Format {format}. Should be '1'."); - } + uint variationRegionListOffset = reader.ReadOffset32(); + ushort itemVariationDataCount = reader.ReadUInt16(); - uint variationRegionListOffset = reader.ReadOffset32(); - ushort itemVariationDataCount = reader.ReadUInt16(); + if (length.HasValue && variationRegionListOffset > length) + { + throw new InvalidFontFileException("Invalid variation region list offset"); + } - if (length.HasValue && variationRegionListOffset > length) + var itemVariations = new ItemVariationData[itemVariationDataCount]; + long itemVariationsOffset = reader.BaseStream.Position; + for (int i = 0; i < itemVariationDataCount; i++) + { + uint variationDataOffset = reader.ReadOffset32(); + itemVariationsOffset += 4; + if (length.HasValue && offset + variationDataOffset >= length) { - throw new InvalidFontFileException("Invalid variation region list offset"); + throw new InvalidFontFileException("Bad offset to variation data subtable"); } - var itemVariations = new ItemVariationData[itemVariationDataCount]; - long itemVariationsOffset = reader.BaseStream.Position; - for (int i = 0; i < itemVariationDataCount; i++) - { - uint variationDataOffset = reader.ReadOffset32(); - itemVariationsOffset += 4; - if (length.HasValue && offset + variationDataOffset >= length) - { - throw new InvalidFontFileException("Bad offset to variation data subtable"); - } - - var itemVariationData = ItemVariationData.Load(reader, offset + variationDataOffset); - itemVariations[i] = itemVariationData; + var itemVariationData = ItemVariationData.Load(reader, offset + variationDataOffset); + itemVariations[i] = itemVariationData; - reader.BaseStream.Position = itemVariationsOffset; - } + reader.BaseStream.Position = itemVariationsOffset; + } - var variationRegionList = VariationRegionList.Load(reader, offset + variationRegionListOffset); + var variationRegionList = VariationRegionList.Load(reader, offset + variationRegionListOffset); - return new ItemVariationStore(variationRegionList, itemVariations); - } + return new ItemVariationStore(variationRegionList, itemVariations); } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/RegionAxisCoordinates.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/RegionAxisCoordinates.cs index 27bc7ce53..6bcd5eaf1 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/RegionAxisCoordinates.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/RegionAxisCoordinates.cs @@ -1,33 +1,32 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using System.Diagnostics; -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// Each RegionAxisCoordinates record provides coordinate values for a region along a single axis. +/// The three values must all be within the range -1.0 to +1.0. startCoord must be less than or equal to peakCoord, +/// and peakCoord must be less than or equal to endCoord. The three values must be either all non-positive or all non-negative with one possible exception: +/// if peakCoord is zero, then startCoord can be negative or 0 while endCoord can be positive or zero. +/// +/// +[DebuggerDisplay("StartCoord: {StartCoord}, PeakCoord: {PeakCoord}, EndCoord: {EndCoord}")] +public readonly struct RegionAxisCoordinates { /// - /// Each RegionAxisCoordinates record provides coordinate values for a region along a single axis. - /// The three values must all be within the range -1.0 to +1.0. startCoord must be less than or equal to peakCoord, - /// and peakCoord must be less than or equal to endCoord. The three values must be either all non-positive or all non-negative with one possible exception: - /// if peakCoord is zero, then startCoord can be negative or 0 while endCoord can be positive or zero. - /// + /// Gets the region start coordinate value for the current axis. /// - [DebuggerDisplay("StartCoord: {StartCoord}, PeakCoord: {PeakCoord}, EndCoord: {EndCoord}")] - public struct RegionAxisCoordinates - { - /// - /// The region start coordinate value for the current axis. - /// - public float StartCoord; + public float StartCoord { get; init; } - /// - /// The region peak coordinate value for the current axis. - /// - public float PeakCoord; + /// + /// Gets the region peak coordinate value for the current axis. + /// + public float PeakCoord { get; init; } - /// - /// The region end coordinate value for the current axis. - /// - public float EndCoord; - } + /// + /// Gets the region end coordinate value for the current axis. + /// + public float EndCoord { get; init; } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/SegmentMapRecord.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/SegmentMapRecord.cs index 71b94e57c..a29d1144c 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/SegmentMapRecord.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/SegmentMapRecord.cs @@ -1,32 +1,31 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +internal class SegmentMapRecord { - internal class SegmentMapRecord - { - public SegmentMapRecord(AxisValueMapRecord[] axisValueMap) => this.AxisValueMap = axisValueMap; + public SegmentMapRecord(AxisValueMapRecord[] axisValueMap) => this.AxisValueMap = axisValueMap; - public AxisValueMapRecord[] AxisValueMap { get; } + public AxisValueMapRecord[] AxisValueMap { get; } - public static SegmentMapRecord Load(BigEndianBinaryReader reader) + public static SegmentMapRecord Load(BigEndianBinaryReader reader) + { + // SegmentMapRecord + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+=========================================================================+ + // | uint16 | positionMapCount | The number of correspondence pairs for this axis. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + // | AxisValueMap | axisValueMaps[positionMapCount] | The array of axis value map records for this axis. | + // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ + ushort positionMapCount = reader.ReadUInt16(); + var axisValueMap = new AxisValueMapRecord[positionMapCount]; + for (int i = 0; i < positionMapCount; i++) { - // SegmentMapRecord - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | Type | Name | Description | - // +=================+========================================+=========================================================================+ - // | uint16 | positionMapCount | The number of correspondence pairs for this axis. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - // | AxisValueMap | axisValueMaps[positionMapCount] | The array of axis value map records for this axis. | - // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - ushort positionMapCount = reader.ReadUInt16(); - var axisValueMap = new AxisValueMapRecord[positionMapCount]; - for (int i = 0; i < positionMapCount; i++) - { - axisValueMap[i] = AxisValueMapRecord.Load(reader); - } - - return new SegmentMapRecord(axisValueMap); + axisValueMap[i] = AxisValueMapRecord.Load(reader); } + + return new SegmentMapRecord(axisValueMap); } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs index 10bab45be..7581d6af1 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs @@ -1,112 +1,111 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +internal class TupleVariation { - internal class TupleVariation + /// + /// Flag indicating that this tuple variation header includes an embedded peak tuple record, immediately after the tupleIndex field. + /// If set, the low 12 bits of the tupleIndex value are ignored. + /// Note that this must always be set within the 'cvar' table. + /// + internal const int EmbeddedPeakTupleMask = 0x8000; + + /// + /// Flag indicating that this tuple variation table applies to an intermediate region within the variation space. + /// If set, the header includes the two intermediate-region, start and end tuple records, immediately after the peak tuple record (if present). + /// + internal const int IntermediateRegionMask = 0x4000; + + /// + /// Flag indicating that the serialized data for this tuple variation table includes packed “point” number data. + /// If set, this tuple variation table uses that number data; if clear, this tuple variation table uses shared number + /// data found at the start of the serialized data for this glyph variation data or 'cvar' table. + /// + internal const int PrivatePointNumbersMask = 0x2000; + + /// + /// Mask for the low 12 bits to give the shared tuple records index. + /// + internal const int TupleIndexMask = 0x0FFF; + + public TupleVariation(int axisCount, float[]? embeddedPeak, float[]? intermediateStartRegion, float[]? intermediateEndRegion) { - /// - /// Flag indicating that this tuple variation header includes an embedded peak tuple record, immediately after the tupleIndex field. - /// If set, the low 12 bits of the tupleIndex value are ignored. - /// Note that this must always be set within the 'cvar' table. - /// - internal const int EmbeddedPeakTupleMask = 0x8000; - - /// - /// Flag indicating that this tuple variation table applies to an intermediate region within the variation space. - /// If set, the header includes the two intermediate-region, start and end tuple records, immediately after the peak tuple record (if present). - /// - internal const int IntermediateRegionMask = 0x4000; - - /// - /// Flag indicating that the serialized data for this tuple variation table includes packed “point” number data. - /// If set, this tuple variation table uses that number data; if clear, this tuple variation table uses shared number - /// data found at the start of the serialized data for this glyph variation data or 'cvar' table. - /// - internal const int PrivatePointNumbersMask = 0x2000; - - /// - /// Mask for the low 12 bits to give the shared tuple records index. - /// - internal const int TupleIndexMask = 0x0FFF; - - public TupleVariation(int axisCount, float[]? embeddedPeak, float[]? intermediateStartRegion, float[]? intermediateEndRegion) - { - this.AxisCount = axisCount; - this.EmbeddedPeak = embeddedPeak; - this.IntermediateStartRegion = intermediateStartRegion; - this.IntermediateEndRegion = intermediateEndRegion; - } + this.AxisCount = axisCount; + this.EmbeddedPeak = embeddedPeak; + this.IntermediateStartRegion = intermediateStartRegion; + this.IntermediateEndRegion = intermediateEndRegion; + } - public int AxisCount { get; } + public int AxisCount { get; } - public float[]? EmbeddedPeak { get; } + public float[]? EmbeddedPeak { get; } - public float[]? IntermediateStartRegion { get; } + public float[]? IntermediateStartRegion { get; } - public float[]? IntermediateEndRegion { get; } + public float[]? IntermediateEndRegion { get; } - public static TupleVariation Load(BigEndianBinaryReader reader, int axisCount) + public static TupleVariation Load(BigEndianBinaryReader reader, int axisCount) + { + // TupleVariation + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | Type | Name | Description | + // +======================+===========================================+==============================================================================+ + // | uint16 | variationDataSize | The size in bytes of the serialized data for this tuple variation table. | + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | uint16 | tupleIndex | A packed field. The high 4 bits are flags. | + // | | | The low 12 bits are an index into a shared tuple records array. | + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | Tuple | peakTuple | Peak tuple record for this tuple variation table — | + // | | | optional, determined by flags in the tupleIndex value. | + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | Tuple | intermediateStartTuple | Intermediate start tuple record for this tuple variation table — | + // | | | optional, determined by flags in the tupleIndex value. | + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // | Tuple | intermediateEndTuple | Intermediate end tuple record for this tuple variation table — | + // | | | optional, determined by flags in the tupleIndex value. | + // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + ushort variationDataSize = reader.ReadUInt16(); + int bytesRead = 0; + ushort tupleIndex = reader.ReadUInt16(); + bytesRead += 2; + + int sharedTupleRecords = tupleIndex & TupleIndexMask; + bool hasPrivatePointNumbers = (tupleIndex & PrivatePointNumbersMask) == PrivatePointNumbersMask; + bool hasEmbeddedPeakTuple = (tupleIndex & EmbeddedPeakTupleMask) == EmbeddedPeakTupleMask; + bool hasIntermediateRegion = (tupleIndex & IntermediateRegionMask) == IntermediateRegionMask; + + float[]? embeddedPeak = null; + if (hasEmbeddedPeakTuple) { - // TupleVariation - // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ - // | Type | Name | Description | - // +======================+===========================================+==============================================================================+ - // | uint16 | variationDataSize | The size in bytes of the serialized data for this tuple variation table. | - // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ - // | uint16 | tupleIndex | A packed field. The high 4 bits are flags. | - // | | | The low 12 bits are an index into a shared tuple records array. | - // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ - // | Tuple | peakTuple | Peak tuple record for this tuple variation table — | - // | | | optional, determined by flags in the tupleIndex value. | - // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ - // | Tuple | intermediateStartTuple | Intermediate start tuple record for this tuple variation table — | - // | | | optional, determined by flags in the tupleIndex value. | - // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ - // | Tuple | intermediateEndTuple | Intermediate end tuple record for this tuple variation table — | - // | | | optional, determined by flags in the tupleIndex value. | - // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ - ushort variationDataSize = reader.ReadUInt16(); - int bytesRead = 0; - ushort tupleIndex = reader.ReadUInt16(); - bytesRead += 2; - - int sharedTupleRecords = tupleIndex & TupleIndexMask; - bool hasPrivatePointNumbers = (tupleIndex & PrivatePointNumbersMask) == PrivatePointNumbersMask; - bool hasEmbeddedPeakTuple = (tupleIndex & EmbeddedPeakTupleMask) == EmbeddedPeakTupleMask; - bool hasIntermediateRegion = (tupleIndex & IntermediateRegionMask) == IntermediateRegionMask; - - float[]? embeddedPeak = null; - if (hasEmbeddedPeakTuple) + embeddedPeak = new float[axisCount]; + for (int i = 0; i < axisCount; i++) { - embeddedPeak = new float[axisCount]; - for (int i = 0; i < axisCount; i++) - { - embeddedPeak[i] = reader.ReadF2dot14(); - bytesRead += 2; - } + embeddedPeak[i] = reader.ReadF2dot14(); + bytesRead += 2; } + } - float[]? intermediateStartRegion = null; - float[]? intermediateEndRegion = null; - if (hasIntermediateRegion) + float[]? intermediateStartRegion = null; + float[]? intermediateEndRegion = null; + if (hasIntermediateRegion) + { + intermediateStartRegion = new float[axisCount]; + for (int i = 0; i < axisCount; i++) { - intermediateStartRegion = new float[axisCount]; - for (int i = 0; i < axisCount; i++) - { - intermediateStartRegion[i] = reader.ReadF2dot14(); - bytesRead += 2; - } - - intermediateEndRegion = new float[axisCount]; - for (int i = 0; i < axisCount; i++) - { - intermediateEndRegion[i] = reader.ReadF2dot14(); - bytesRead += 2; - } + intermediateStartRegion[i] = reader.ReadF2dot14(); + bytesRead += 2; } - return new TupleVariation(axisCount, embeddedPeak, intermediateStartRegion, intermediateEndRegion); + intermediateEndRegion = new float[axisCount]; + for (int i = 0; i < axisCount; i++) + { + intermediateEndRegion[i] = reader.ReadF2dot14(); + bytesRead += 2; + } } + + return new TupleVariation(axisCount, embeddedPeak, intermediateStartRegion, intermediateEndRegion); } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxis.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxis.cs index 7d49dec84..44aa8a576 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxis.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxis.cs @@ -1,39 +1,38 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using System.Diagnostics; -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// +/// +[DebuggerDisplay("Name: {Name}, Tag: {Tag}, Min: {Min}, Max: {Max}, Default: {Default}")] +public readonly struct VariationAxis { /// - /// + /// Gets the name of the axes. /// - [DebuggerDisplay("Name: {Name}, Tag: {Tag}, Min: {Min}, Max: {Max}, Default: {Default}")] - public struct VariationAxis - { - /// - /// The name of the axes. - /// - public string Name; + public string Name { get; init; } - /// - /// Tag identifying the design variation for the axis. - /// - public string Tag; + /// + /// Gets tag identifying the design variation for the axis. + /// + public string Tag { get; init; } - /// - /// The minimum coordinate value for the axis. - /// - public float Min; + /// + /// Gets the minimum coordinate value for the axis. + /// + public float Min { get; init; } - /// - /// The maximum coordinate value for the axis. - /// - public float Max; + /// + /// Gets the maximum coordinate value for the axis. + /// + public float Max { get; init; } - /// - /// The default coordinate value for the axis. - /// - public float Default; - } + /// + /// Gets the default coordinate value for the axis. + /// + public float Default { get; init; } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxisRecord.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxisRecord.cs index 340be61ed..1d9c62957 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxisRecord.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationAxisRecord.cs @@ -1,69 +1,68 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using System.Diagnostics; using System.IO; -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// Defines a VariationAxisRecord. +/// +/// +[DebuggerDisplay("Tag: {Tag}, MinValue: {MinValue}, MaxValue: {MaxValue}, DefaultValue: {DefaultValue}, AxisNameId: {AxisNameId}")] +internal class VariationAxisRecord { - /// - /// Defines a VariationAxisRecord. - /// - /// - [DebuggerDisplay("Tag: {Tag}, MinValue: {MinValue}, MaxValue: {MaxValue}, DefaultValue: {DefaultValue}, AxisNameId: {AxisNameId}")] - internal class VariationAxisRecord + internal VariationAxisRecord(string tag, float minValue, float defaultValue, float maxValue, ushort flags, ushort axisNameId) { - internal VariationAxisRecord(string tag, float minValue, float defaultValue, float maxValue, ushort flags, ushort axisNameId) - { - this.Tag = tag; - this.MinValue = minValue; - this.MaxValue = maxValue; - this.DefaultValue = defaultValue; - this.Flags = flags; - this.AxisNameId = axisNameId; - } + this.Tag = tag; + this.MinValue = minValue; + this.MaxValue = maxValue; + this.DefaultValue = defaultValue; + this.Flags = flags; + this.AxisNameId = axisNameId; + } - public string Tag { get; } + public string Tag { get; } - public float MinValue { get; } + public float MinValue { get; } - public float DefaultValue { get; } + public float DefaultValue { get; } - public float MaxValue { get; } + public float MaxValue { get; } - public ushort Flags { get; } + public ushort Flags { get; } - public ushort AxisNameId { get; } + public ushort AxisNameId { get; } - public static VariationAxisRecord Load(BigEndianBinaryReader reader, long offset) - { - // VariationAxisRecord - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | Type | Name | Description | - // +=================+========================================+================================================================+ - // | Tag | axisTag | Tag identifying the design variation for the axis. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | Fixed | minValue | The minimum coordinate value for the axis. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | Fixed | defaultValue | The default coordinate value for the axis. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | Fixed | maxValue | The maximum coordinate value for the axis. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | uint16 | flags | Axis qualifiers — see details below. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | uint16 | axisNameID | The name ID for entries in the 'name' table that provide | - // | | | a display name for this axis. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - reader.Seek(offset, SeekOrigin.Begin); + public static VariationAxisRecord Load(BigEndianBinaryReader reader, long offset) + { + // VariationAxisRecord + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+================================================================+ + // | Tag | axisTag | Tag identifying the design variation for the axis. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Fixed | minValue | The minimum coordinate value for the axis. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Fixed | defaultValue | The default coordinate value for the axis. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Fixed | maxValue | The maximum coordinate value for the axis. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | flags | Axis qualifiers — see details below. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | axisNameID | The name ID for entries in the 'name' table that provide | + // | | | a display name for this axis. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); - string tag = reader.ReadTag(); - float minValue = reader.ReadFixed(); - float defaultValue = reader.ReadFixed(); - float maxValue = reader.ReadFixed(); - ushort flags = reader.ReadUInt16(); - ushort axisNameID = reader.ReadUInt16(); + string tag = reader.ReadTag(); + float minValue = reader.ReadFixed(); + float defaultValue = reader.ReadFixed(); + float maxValue = reader.ReadFixed(); + ushort flags = reader.ReadUInt16(); + ushort axisNameID = reader.ReadUInt16(); - return new VariationAxisRecord(tag, minValue, defaultValue, maxValue, flags, axisNameID); - } + return new VariationAxisRecord(tag, minValue, defaultValue, maxValue, flags, axisNameID); } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationRegionList.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationRegionList.cs index 1e3f01396..4d86f53a6 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationRegionList.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationRegionList.cs @@ -1,89 +1,88 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using System; using System.Diagnostics; using System.IO; -namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// Variation data is comprised of delta adjustment values that have effect over particular regions within the font’s variation space. +/// In a tuple variation store (described earlier in this chapter), the deltas are organized into groupings by region of applicability, with each grouping associated with a given region. +/// In contrast, the item variation store format organizes deltas into groupings by the target items to which they apply, with each grouping having deltas for several regions. +/// Accordingly, the item variation store uses different formats for describing the regions in which a set of deltas apply. +/// +/// +[DebuggerDisplay("AxisCount: {AxisCount}, RegionCount: {RegionCount}")] +internal class VariationRegionList { - /// - /// Variation data is comprised of delta adjustment values that have effect over particular regions within the font’s variation space. - /// In a tuple variation store (described earlier in this chapter), the deltas are organized into groupings by region of applicability, with each grouping associated with a given region. - /// In contrast, the item variation store format organizes deltas into groupings by the target items to which they apply, with each grouping having deltas for several regions. - /// Accordingly, the item variation store uses different formats for describing the regions in which a set of deltas apply. - /// - /// - [DebuggerDisplay("AxisCount: {AxisCount}, RegionCount: {RegionCount}")] - internal class VariationRegionList - { - public static readonly VariationRegionList EmptyVariationRegionList = new(0, 0, new[] { Array.Empty() }); + public static readonly VariationRegionList EmptyVariationRegionList = new(0, 0, new[] { Array.Empty() }); - private VariationRegionList(ushort axisCount, ushort regionCount, RegionAxisCoordinates[][] variationRegions) - { - this.AxisCount = axisCount; - this.RegionCount = regionCount; - this.VariationRegions = variationRegions; - } + private VariationRegionList(ushort axisCount, ushort regionCount, RegionAxisCoordinates[][] variationRegions) + { + this.AxisCount = axisCount; + this.RegionCount = regionCount; + this.VariationRegions = variationRegions; + } - public ushort AxisCount { get; } + public ushort AxisCount { get; } - public ushort RegionCount { get; } + public ushort RegionCount { get; } - public RegionAxisCoordinates[][] VariationRegions { get; } + public RegionAxisCoordinates[][] VariationRegions { get; } - public static VariationRegionList Load(BigEndianBinaryReader reader, long offset) + public static VariationRegionList Load(BigEndianBinaryReader reader, long offset) + { + // VariationRegionList + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+================================================================+ + // | uint16 | axisCount | The number of variation axes for this font. | + // | | | This must be the same number as axisCount in the 'fvar' table. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // | uint16 | regionCount | The number of variation region tables in the variation region | + // | | | list. Must be less than 32,768. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + // + VariationRegion | variationRegions[regionCount] | Array of variation regions. | + // +-----------------+----------------------------------------+----------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + ushort axisCount = reader.ReadUInt16(); + ushort regionCount = reader.ReadUInt16(); + var variationRegions = new RegionAxisCoordinates[regionCount][]; + for (int i = 0; i < regionCount; i++) { - // VariationRegionList - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | Type | Name | Description | - // +=================+========================================+================================================================+ - // | uint16 | axisCount | The number of variation axes for this font. | - // | | | This must be the same number as axisCount in the 'fvar' table. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // | uint16 | regionCount | The number of variation region tables in the variation region | - // | | | list. Must be less than 32,768. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - // + VariationRegion | variationRegions[regionCount] | Array of variation regions. | - // +-----------------+----------------------------------------+----------------------------------------------------------------+ - reader.Seek(offset, SeekOrigin.Begin); - ushort axisCount = reader.ReadUInt16(); - ushort regionCount = reader.ReadUInt16(); - var variationRegions = new RegionAxisCoordinates[regionCount][]; - for (int i = 0; i < regionCount; i++) + variationRegions[i] = new RegionAxisCoordinates[axisCount]; + for (int j = 0; j < axisCount; j++) { - variationRegions[i] = new RegionAxisCoordinates[axisCount]; - for (int j = 0; j < axisCount; j++) - { - float startCoord = reader.ReadF2dot14(); - float peakCoord = reader.ReadF2dot14(); - float endCoord = reader.ReadF2dot14(); - - if (startCoord > peakCoord || peakCoord > endCoord) - { - throw new InvalidFontFileException("Region axis coordinates out of order"); - } + float startCoord = reader.ReadF2dot14(); + float peakCoord = reader.ReadF2dot14(); + float endCoord = reader.ReadF2dot14(); - if (startCoord < -0x4000 || endCoord > 0x4000) - { - throw new InvalidFontFileException("Region axis coordinate out of range"); - } + if (startCoord > peakCoord || peakCoord > endCoord) + { + throw new InvalidFontFileException("Region axis coordinates out of order"); + } - if ((peakCoord < 0 && endCoord > 0) || (peakCoord > 0 && startCoord < 0)) - { - throw new InvalidFontFileException("Invalid region axis coordinates"); - } + if (startCoord < -0x4000 || endCoord > 0x4000) + { + throw new InvalidFontFileException("Region axis coordinate out of range"); + } - variationRegions[i][j] = new RegionAxisCoordinates() - { - StartCoord = startCoord, - PeakCoord = peakCoord, - EndCoord = endCoord - }; + if ((peakCoord < 0 && endCoord > 0) || (peakCoord > 0 && startCoord < 0)) + { + throw new InvalidFontFileException("Invalid region axis coordinates"); } - } - return new VariationRegionList(axisCount, regionCount, variationRegions); + variationRegions[i][j] = new RegionAxisCoordinates() + { + StartCoord = startCoord, + PeakCoord = peakCoord, + EndCoord = endCoord + }; + } } + + return new VariationRegionList(axisCount, regionCount, variationRegions); } } diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs index 1f42d2d8a..eaa1923a5 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs @@ -5,595 +5,594 @@ using System.Collections.Generic; using System.Text; -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +/// +/// Parses a Compact Font Format (CFF) font program as described in The Compact Font Format specification (Adobe Technical Note #5176). +/// A CFF font may contain multiple fonts and achieves compression by sharing details between fonts in the set. +/// +internal class Cff1Parser : CffParserBase { /// - /// Parses a Compact Font Format (CFF) font program as described in The Compact Font Format specification (Adobe Technical Note #5176). - /// A CFF font may contain multiple fonts and achieves compression by sharing details between fonts in the set. + /// Latin 1 Encoding: ISO 8859-1 is a single-byte encoding that can represent the first 256 Unicode characters. /// - internal class Cff1Parser : CffParserBase + private static readonly Encoding Iso88591 = Encoding.GetEncoding("ISO-8859-1"); + + private long offset; + private int charStringsOffset; + private int charsetOffset; + private int encodingOffset = -1; + private int privateDICTOffset; + private int privateDICTLength; + + public CffFont Load(BigEndianBinaryReader reader, long offset) { - /// - /// Latin 1 Encoding: ISO 8859-1 is a single-byte encoding that can represent the first 256 Unicode characters. - /// - private static readonly Encoding Iso88591 = Encoding.GetEncoding("ISO-8859-1"); - - private long offset; - private int charStringsOffset; - private int charsetOffset; - private int encodingOffset = -1; - private int privateDICTOffset; - private int privateDICTLength; - - public CffFont Load(BigEndianBinaryReader reader, long offset) - { - this.offset = offset; + this.offset = offset; - string fontName = this.ReadNameIndex(reader); + string fontName = ReadNameIndex(reader); - List dataDicEntries = this.ReadTopDictIndex(reader); - string[] stringIndex = this.ReadStringIndex(reader); + List dataDicEntries = this.ReadTopDictIndex(reader); + string[] stringIndex = ReadStringIndex(reader); - CffTopDictionary topDictionary = this.ResolveTopDictInfo(dataDicEntries, stringIndex); + CffTopDictionary topDictionary = this.ResolveTopDictInfo(dataDicEntries, stringIndex); - byte[][] globalSubrRawBuffers = this.ReadGlobalSubrIndex(reader); + byte[][] globalSubrRawBuffers = ReadGlobalSubrIndex(reader); - this.ReadFdSelect(reader, this.offset, topDictionary.CidFontInfo); - FontDict[] fontDicts = this.ReadFdArray(reader, this.offset, topDictionary.CidFontInfo.FDArray); + ReadFdSelect(reader, this.offset, topDictionary.CidFontInfo); + FontDict[] fontDicts = this.ReadFdArray(reader, this.offset, topDictionary.CidFontInfo.FDArray); - CffPrivateDictionary? privateDictionary = this.ReadPrivateDict(reader); - CffGlyphData[] glyphs = this.ReadCharStringsIndex(reader, topDictionary, globalSubrRawBuffers, fontDicts, privateDictionary); + CffPrivateDictionary? privateDictionary = this.ReadPrivateDict(reader); + CffGlyphData[] glyphs = this.ReadCharStringsIndex(reader, topDictionary, globalSubrRawBuffers, fontDicts, privateDictionary); - this.ReadCharsets(reader, stringIndex, glyphs); - this.ReadEncodings(reader); + this.ReadCharsets(reader, stringIndex, glyphs); + this.ReadEncodings(reader); - return new(fontName, topDictionary, glyphs); - } + return new(fontName, topDictionary, glyphs); + } - private string ReadNameIndex(BigEndianBinaryReader reader) + private static string ReadNameIndex(BigEndianBinaryReader reader) + { + if (!TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) { - if (!this.TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) - { - throw new InvalidFontFileException("No name index found."); - } - - // For Open Type the Name INDEX in the CFF data must contain only one entry; - // that is, there must be only one font in the CFF FontSet. - CffIndexOffset offset = offsets[0]; - return reader.ReadString(offset.Length, Iso88591); + throw new InvalidFontFileException("No name index found."); } - private List ReadTopDictIndex(BigEndianBinaryReader reader) - { - // 8. Top DICT INDEX - // This contains the top - level DICTs of all the fonts in the FontSet - // stored in an INDEX structure.Objects contained within this - // INDEX correspond to those in the Name INDEX in both order - // and number. Each object is a DICT structure that corresponds to - // the top-level dictionary of a PostScript font. - // A font is identified by an entry in the Name INDEX and its data - // is accessed via the corresponding Top DICT - if (!this.TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) - { - throw new InvalidFontFileException("No Top DICT index found."); - } + // For Open Type the Name INDEX in the CFF data must contain only one entry; + // that is, there must be only one font in the CFF FontSet. + CffIndexOffset offset = offsets[0]; + return reader.ReadString(offset.Length, Iso88591); + } - // 9. Top DICT Data - // The names of the Top DICT operators shown in - // Table 9 are, where possible, the same as the corresponding Type 1 dict key. - // Operators that have no corresponding Type1 dict key are noted - // in the table below along with a default value, if any. (Several - // operators have been derived from FontInfo dict keys but have - // been grouped together with the Top DICT operators for - // simplicity.The keys from the FontInfo dict are indicated in the - // Default, notes column of Table 9) - return this.ReadDictData(reader, offsets[0].Length); + private List ReadTopDictIndex(BigEndianBinaryReader reader) + { + // 8. Top DICT INDEX + // This contains the top - level DICTs of all the fonts in the FontSet + // stored in an INDEX structure.Objects contained within this + // INDEX correspond to those in the Name INDEX in both order + // and number. Each object is a DICT structure that corresponds to + // the top-level dictionary of a PostScript font. + // A font is identified by an entry in the Name INDEX and its data + // is accessed via the corresponding Top DICT + if (!TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) + { + throw new InvalidFontFileException("No Top DICT index found."); } - private string[] ReadStringIndex(BigEndianBinaryReader reader) + // 9. Top DICT Data + // The names of the Top DICT operators shown in + // Table 9 are, where possible, the same as the corresponding Type 1 dict key. + // Operators that have no corresponding Type1 dict key are noted + // in the table below along with a default value, if any. (Several + // operators have been derived from FontInfo dict keys but have + // been grouped together with the Top DICT operators for + // simplicity.The keys from the FontInfo dict are indicated in the + // Default, notes column of Table 9) + return this.ReadDictData(reader, offsets[0].Length); + } + + private static string[] ReadStringIndex(BigEndianBinaryReader reader) + { + if (!TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) { - if (!this.TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) - { - return Array.Empty(); - } + return Array.Empty(); + } - string[] stringIndex = new string[offsets.Length]; + string[] stringIndex = new string[offsets.Length]; - // Allow reusing the same buffer for shorter reads. - using var buffer = new Buffer(512); - Span bufferSpan = buffer.GetSpan(); + // Allow reusing the same buffer for shorter reads. + using Buffer buffer = new Buffer(512); + Span bufferSpan = buffer.GetSpan(); - for (int i = 0; i < offsets.Length; ++i) + for (int i = 0; i < offsets.Length; ++i) + { + int length = offsets[i].Length; + if (length < bufferSpan.Length) { - int length = offsets[i].Length; - if (length < bufferSpan.Length) - { - Span slice = bufferSpan.Slice(0, length); - int actualRead = reader.BaseStream.Read(slice); - if (actualRead != length) - { - throw new InvalidFontFileException("Invalid string length."); - } - - stringIndex[i] = Iso88591.GetString(slice); - } - else + Span slice = bufferSpan[..length]; + int actualRead = reader.BaseStream.Read(slice); + if (actualRead != length) { - stringIndex[i] = reader.ReadString(length, Iso88591); + throw new InvalidFontFileException("Invalid string length."); } - } - - return stringIndex; - } - private string GetSid(int index, string[] stringIndex) - { - if (index >= 0 && index <= CffStandardStrings.Count - 1) - { - // Use standard name - return CffStandardStrings.GetName(index); + stringIndex[i] = Iso88591.GetString(slice); } - - if (index - CffStandardStrings.Count < stringIndex.Length) + else { - return stringIndex[index - CffStandardStrings.Count]; + stringIndex[i] = reader.ReadString(length, Iso88591); } + } + + return stringIndex; + } + + private static string GetSid(int index, string[] stringIndex) + { + if (index >= 0 && index <= CffStandardStrings.Count - 1) + { + // Use standard name + return CffStandardStrings.GetName(index); + } - // Technically this maps to .notdef, but PDFBox uses this - return "SID" + index; + if (index - CffStandardStrings.Count < stringIndex.Length) + { + return stringIndex[index - CffStandardStrings.Count]; } - private CffTopDictionary ResolveTopDictInfo(List entries, string[] stringIndex) + // Technically this maps to .notdef, but PDFBox uses this + return "SID" + index; + } + + private CffTopDictionary ResolveTopDictInfo(List entries, string[] stringIndex) + { + // TODO: Is CID mandatory? + CffTopDictionary metrics = new(); + foreach (CffDataDicEntry entry in entries) { - // TODO: Is CID mandatory? - CffTopDictionary metrics = new(); - foreach (CffDataDicEntry entry in entries) + switch (entry.Operator.Name) { - switch (entry.Operator.Name) - { - default: + default: #if DEBUG - System.Diagnostics.Debug.WriteLine("topdic:" + entry.Operator.Name); + System.Diagnostics.Debug.WriteLine("topdic:" + entry.Operator.Name); #endif - break; - case "XUID": - break; // nothing - case "version": - metrics.Version = this.GetSid((int)entry.Operands[0].RealNumValue, stringIndex); - break; - case "Notice": - metrics.Notice = this.GetSid((int)entry.Operands[0].RealNumValue, stringIndex); - break; - case "Copyright": - metrics.CopyRight = this.GetSid((int)entry.Operands[0].RealNumValue, stringIndex); - break; - case "FullName": - metrics.FullName = this.GetSid((int)entry.Operands[0].RealNumValue, stringIndex); - break; - case "FamilyName": - metrics.FamilyName = this.GetSid((int)entry.Operands[0].RealNumValue, stringIndex); - break; - case "Weight": - metrics.Weight = this.GetSid((int)entry.Operands[0].RealNumValue, stringIndex); - break; - case "UnderlinePosition": - metrics.UnderlinePosition = entry.Operands[0].RealNumValue; - break; - case "UnderlineThickness": - metrics.UnderlineThickness = entry.Operands[0].RealNumValue; - break; - case "FontBBox": - metrics.FontBBox = new double[] - { - entry.Operands[0].RealNumValue, - entry.Operands[1].RealNumValue, - entry.Operands[2].RealNumValue, - entry.Operands[3].RealNumValue - }; - break; - case "CharStrings": - this.charStringsOffset = (int)entry.Operands[0].RealNumValue; - break; - case "charset": - this.charsetOffset = (int)entry.Operands[0].RealNumValue; - break; - case "Encoding": - this.encodingOffset = (int)entry.Operands[0].RealNumValue; - break; - case "Private": - // private DICT size and offset - this.privateDICTLength = (int)entry.Operands[0].RealNumValue; - this.privateDICTOffset = (int)entry.Operands[1].RealNumValue; - break; - case "ROS": - // http://wwwimages.adobe.com/www.adobe.com/content/dam/acom/en/devnet/font/pdfs/5176.CFF.pdf - // A CFF CIDFont has the CIDFontName in the Name INDEX and a corresponding Top DICT. - // The Top DICT begins with ROS operator which specifies the Registry-Ordering - Supplement for the font. - // This will indicate to a CFF parser that special CID processing should be applied to this font. Specifically: - - // ROS operator combines the Registry, Ordering, and Supplement keys together. - // see Adobe Cmap resource , https://github.com/adobe-type-tools/cmap-resources - metrics.CidFontInfo.ROS_Register = this.GetSid((int)entry.Operands[0].RealNumValue, stringIndex); - metrics.CidFontInfo.ROS_Ordering = this.GetSid((int)entry.Operands[1].RealNumValue, stringIndex); - metrics.CidFontInfo.ROS_Supplement = this.GetSid((int)entry.Operands[2].RealNumValue, stringIndex); + break; + case "XUID": + break; // nothing + case "version": + metrics.Version = GetSid((int)entry.Operands[0].RealNumValue, stringIndex); + break; + case "Notice": + metrics.Notice = GetSid((int)entry.Operands[0].RealNumValue, stringIndex); + break; + case "Copyright": + metrics.CopyRight = GetSid((int)entry.Operands[0].RealNumValue, stringIndex); + break; + case "FullName": + metrics.FullName = GetSid((int)entry.Operands[0].RealNumValue, stringIndex); + break; + case "FamilyName": + metrics.FamilyName = GetSid((int)entry.Operands[0].RealNumValue, stringIndex); + break; + case "Weight": + metrics.Weight = GetSid((int)entry.Operands[0].RealNumValue, stringIndex); + break; + case "UnderlinePosition": + metrics.UnderlinePosition = entry.Operands[0].RealNumValue; + break; + case "UnderlineThickness": + metrics.UnderlineThickness = entry.Operands[0].RealNumValue; + break; + case "FontBBox": + metrics.FontBBox = new double[] + { + entry.Operands[0].RealNumValue, + entry.Operands[1].RealNumValue, + entry.Operands[2].RealNumValue, + entry.Operands[3].RealNumValue + }; + break; + case "CharStrings": + this.charStringsOffset = (int)entry.Operands[0].RealNumValue; + break; + case "charset": + this.charsetOffset = (int)entry.Operands[0].RealNumValue; + break; + case "Encoding": + this.encodingOffset = (int)entry.Operands[0].RealNumValue; + break; + case "Private": + // private DICT size and offset + this.privateDICTLength = (int)entry.Operands[0].RealNumValue; + this.privateDICTOffset = (int)entry.Operands[1].RealNumValue; + break; + case "ROS": + // http://wwwimages.adobe.com/www.adobe.com/content/dam/acom/en/devnet/font/pdfs/5176.CFF.pdf + // A CFF CIDFont has the CIDFontName in the Name INDEX and a corresponding Top DICT. + // The Top DICT begins with ROS operator which specifies the Registry-Ordering - Supplement for the font. + // This will indicate to a CFF parser that special CID processing should be applied to this font. Specifically: + + // ROS operator combines the Registry, Ordering, and Supplement keys together. + // see Adobe Cmap resource , https://github.com/adobe-type-tools/cmap-resources + metrics.CidFontInfo.ROS_Register = GetSid((int)entry.Operands[0].RealNumValue, stringIndex); + metrics.CidFontInfo.ROS_Ordering = GetSid((int)entry.Operands[1].RealNumValue, stringIndex); + metrics.CidFontInfo.ROS_Supplement = GetSid((int)entry.Operands[2].RealNumValue, stringIndex); - break; - case "CIDFontVersion": - metrics.CidFontInfo.CIDFontVersion = entry.Operands[0].RealNumValue; - break; - case "CIDCount": - metrics.CidFontInfo.CIDFountCount = (int)entry.Operands[0].RealNumValue; - break; - case "FDSelect": - metrics.CidFontInfo.FDSelect = (int)entry.Operands[0].RealNumValue; - break; - case "FDArray": - metrics.CidFontInfo.FDArray = (int)entry.Operands[0].RealNumValue; - break; - } + break; + case "CIDFontVersion": + metrics.CidFontInfo.CIDFontVersion = entry.Operands[0].RealNumValue; + break; + case "CIDCount": + metrics.CidFontInfo.CIDFountCount = (int)entry.Operands[0].RealNumValue; + break; + case "FDSelect": + metrics.CidFontInfo.FDSelect = (int)entry.Operands[0].RealNumValue; + break; + case "FDArray": + metrics.CidFontInfo.FDArray = (int)entry.Operands[0].RealNumValue; + break; } - - return metrics; } - private byte[][] ReadGlobalSubrIndex(BigEndianBinaryReader reader) + return metrics; + } - // 16. Local / Global Subrs INDEXes - // Both Type 1 and Type 2 charstrings support the notion of - // subroutines or subrs. + private static byte[][] ReadGlobalSubrIndex(BigEndianBinaryReader reader) - // A subr is typically a sequence of charstring - // bytes representing a sub - program that occurs in more than one - // place in a font’s charstring data. + // 16. Local / Global Subrs INDEXes + // Both Type 1 and Type 2 charstrings support the notion of + // subroutines or subrs. - // This subr may be stored once - // but referenced many times from within one or more charstrings - // by the use of the call subr operator whose operand is the - // number of the subr to be called. + // A subr is typically a sequence of charstring + // bytes representing a sub - program that occurs in more than one + // place in a font’s charstring data. - // The subrs are local to a particular font and - // cannot be shared between fonts. + // This subr may be stored once + // but referenced many times from within one or more charstrings + // by the use of the call subr operator whose operand is the + // number of the subr to be called. - // Type 2 charstrings also permit global subrs which function in the same - // way but are called by the call gsubr operator and may be shared - // across fonts. + // The subrs are local to a particular font and + // cannot be shared between fonts. - // Local subrs are stored in an INDEX structure which is located via - // the offset operand of the Subrs operator in the Private DICT. - // A font without local subrs has no Subrs operator in the Private DICT. + // Type 2 charstrings also permit global subrs which function in the same + // way but are called by the call gsubr operator and may be shared + // across fonts. - // Global subrs are stored in an INDEX structure which follows the - // String INDEX. A FontSet without any global subrs is represented - // by an empty Global Subrs INDEX. - => this.ReadSubrBuffer(reader); + // Local subrs are stored in an INDEX structure which is located via + // the offset operand of the Subrs operator in the Private DICT. + // A font without local subrs has no Subrs operator in the Private DICT. - private byte[][] ReadLocalSubrs(BigEndianBinaryReader reader) => this.ReadSubrBuffer(reader); + // Global subrs are stored in an INDEX structure which follows the + // String INDEX. A FontSet without any global subrs is represented + // by an empty Global Subrs INDEX. + => ReadSubrBuffer(reader); - // TODO: We don't actually need this right now. Will be important though if we ever introduce subsetting. - private void ReadEncodings(BigEndianBinaryReader reader) - { - // Encoding data is located via the offset operand to the - // Encoding operator in the Top DICT. + private static byte[][] ReadLocalSubrs(BigEndianBinaryReader reader) => ReadSubrBuffer(reader); - // Only one Encoding operator can be - // specified per font except for CIDFonts which specify no - // encoding. + // TODO: We don't actually need this right now. Will be important though if we ever introduce subsetting. + private void ReadEncodings(BigEndianBinaryReader reader) + { + // Encoding data is located via the offset operand to the + // Encoding operator in the Top DICT. - // A glyph’s encoding is specified by a 1 - byte code that - // permits values in the range 0 - 255. + // Only one Encoding operator can be + // specified per font except for CIDFonts which specify no + // encoding. - // Each encoding is described by a format-type identifier byte - // followed by format-specific data.Two formats are currently - // defined as specified in Tables 11(Format 0) and 12(Format 1). - if (this.encodingOffset != -1) - { - byte encoding = reader.ReadByte(); - switch (encoding) - { - case 0: - this.ReadFormat0Encoding(reader); - break; - case 1: - this.ReadFormat1Encoding(reader); - break; - default: + // A glyph’s encoding is specified by a 1 - byte code that + // permits values in the range 0 - 255. - // TODO: Seek. - break; - } - } - } - - private void ReadCharsets(BigEndianBinaryReader reader, string[] stringIndex, CffGlyphData[] glyphs) + // Each encoding is described by a format-type identifier byte + // followed by format-specific data.Two formats are currently + // defined as specified in Tables 11(Format 0) and 12(Format 1). + if (this.encodingOffset != -1) { - // Charset data is located via the offset operand to the - // charset operator in the Top DICT. - - // Each charset is described by a format- - // type identifier byte followed by format-specific data. - // Three formats are currently defined as shown in Tables - // 17, 18, and 20. - reader.BaseStream.Position = this.offset + this.charsetOffset; - switch (reader.ReadByte()) + byte encoding = reader.ReadByte(); + switch (encoding) { - default: - throw new NotSupportedException(); case 0: - this.ReadCharsetsFormat0(reader, stringIndex, glyphs); + ReadFormat0Encoding(reader); break; case 1: - this.ReadCharsetsFormat1(reader, stringIndex, glyphs); + ReadFormat1Encoding(reader); break; - case 2: - this.ReadCharsetsFormat2(reader, stringIndex, glyphs); + default: + + // TODO: Seek. break; } } + } - private void ReadCharsetsFormat0(BigEndianBinaryReader reader, string[] stringIndex, CffGlyphData[] glyphs) + private void ReadCharsets(BigEndianBinaryReader reader, string[] stringIndex, CffGlyphData[] glyphs) + { + // Charset data is located via the offset operand to the + // charset operator in the Top DICT. + + // Each charset is described by a format- + // type identifier byte followed by format-specific data. + // Three formats are currently defined as shown in Tables + // 17, 18, and 20. + reader.BaseStream.Position = this.offset + this.charsetOffset; + switch (reader.ReadByte()) { - // Table 17: Format 0 - // Type Name Description - // Card8 format =0 - // SID glyph[nGlyphs-1] Glyph name array - - // Each element of the glyph array represents the name of the - // corresponding glyph. This format should be used when the SIDs - // are in a fairly random order. The number of glyphs (nGlyphs) is - // the value of the count field in the - // CharStrings INDEX. (There is - // one less element in the glyph name array than nGlyphs because - // the .notdef glyph name is omitted.) - for (int i = 1; i < glyphs.Length; ++i) - { - ref CffGlyphData data = ref glyphs[i]; - data.GlyphName = this.GetSid(reader.ReadUInt16(), stringIndex); - } + default: + throw new NotSupportedException(); + case 0: + ReadCharsetsFormat0(reader, stringIndex, glyphs); + break; + case 1: + ReadCharsetsFormat1(reader, stringIndex, glyphs); + break; + case 2: + ReadCharsetsFormat2(reader, stringIndex, glyphs); + break; } + } - private void ReadCharsetsFormat1(BigEndianBinaryReader reader, string[] stringIndex, CffGlyphData[] glyphs) + private static void ReadCharsetsFormat0(BigEndianBinaryReader reader, string[] stringIndex, CffGlyphData[] glyphs) + { + // Table 17: Format 0 + // Type Name Description + // Card8 format =0 + // SID glyph[nGlyphs-1] Glyph name array + + // Each element of the glyph array represents the name of the + // corresponding glyph. This format should be used when the SIDs + // are in a fairly random order. The number of glyphs (nGlyphs) is + // the value of the count field in the + // CharStrings INDEX. (There is + // one less element in the glyph name array than nGlyphs because + // the .notdef glyph name is omitted.) + for (int i = 1; i < glyphs.Length; ++i) { - // Table 18 Format 1 - // Type Name Description - // Card8 format =1 - // struct Range1[] Range1 array (see Table 19) - - // Table 19 Range1 Format (Charset) - // Type Name Description - // SID first First glyph in range - // Card8 nLeft Glyphs left in range(excluding first) - - // Each Range1 describes a group of sequential SIDs. The number - // of ranges is not explicitly specified in the font. Instead, software - // utilizing this data simply processes ranges until all glyphs in the - // font are covered. This format is particularly suited to charsets - // that are well ordered - for (int i = 1; i < glyphs.Length;) + ref CffGlyphData data = ref glyphs[i]; + data.GlyphName = GetSid(reader.ReadUInt16(), stringIndex); + } + } + + private static void ReadCharsetsFormat1(BigEndianBinaryReader reader, string[] stringIndex, CffGlyphData[] glyphs) + { + // Table 18 Format 1 + // Type Name Description + // Card8 format =1 + // struct Range1[] Range1 array (see Table 19) + + // Table 19 Range1 Format (Charset) + // Type Name Description + // SID first First glyph in range + // Card8 nLeft Glyphs left in range(excluding first) + + // Each Range1 describes a group of sequential SIDs. The number + // of ranges is not explicitly specified in the font. Instead, software + // utilizing this data simply processes ranges until all glyphs in the + // font are covered. This format is particularly suited to charsets + // that are well ordered + for (int i = 1; i < glyphs.Length;) + { + int sid = reader.ReadUInt16(); // First glyph in range + int count = reader.ReadByte() + 1; // since it does not include first element. + do { - int sid = reader.ReadUInt16(); // First glyph in range - int count = reader.ReadByte() + 1; // since it does not include first element. - do - { - ref CffGlyphData data = ref glyphs[i]; - data.GlyphName = this.GetSid(sid, stringIndex); + ref CffGlyphData data = ref glyphs[i]; + data.GlyphName = GetSid(sid, stringIndex); - count--; - i++; - sid++; - } - while (count > 0); + count--; + i++; + sid++; } + while (count > 0); } + } - private void ReadCharsetsFormat2(BigEndianBinaryReader reader, string[] stringIndex, CffGlyphData[] glyphs) + private static void ReadCharsetsFormat2(BigEndianBinaryReader reader, string[] stringIndex, CffGlyphData[] glyphs) + { + // note:eg, Adobe's source-code-pro font + + // Table 20 Format 2 + // Type Name Description + // Card8 format 2 + // struct Range2[] Range2 array (see Table 21) + // + //----------------------------------------------- + // Table 21 Range2 Format + // Type Name Description + // SID first First glyph in range + // Card16 nLeft Glyphs left in range (excluding first) + //----------------------------------------------- + + // Format 2 differs from format 1 only in the size of the nLeft field in each range. + // This format is most suitable for fonts with a large well - ordered charset — for example, for Asian CIDFonts. + for (int i = 1; i < glyphs.Length;) { - // note:eg, Adobe's source-code-pro font - - // Table 20 Format 2 - // Type Name Description - // Card8 format 2 - // struct Range2[] Range2 array (see Table 21) - // - //----------------------------------------------- - // Table 21 Range2 Format - // Type Name Description - // SID first First glyph in range - // Card16 nLeft Glyphs left in range (excluding first) - //----------------------------------------------- - - // Format 2 differs from format 1 only in the size of the nLeft field in each range. - // This format is most suitable for fonts with a large well - ordered charset — for example, for Asian CIDFonts. - for (int i = 1; i < glyphs.Length;) + int sid = reader.ReadUInt16(); // First glyph in range + int count = reader.ReadUInt16() + 1; // since it does not include first element. + do { - int sid = reader.ReadUInt16(); // First glyph in range - int count = reader.ReadUInt16() + 1; // since it does not include first element. - do - { - ref CffGlyphData data = ref glyphs[i]; - data.GlyphName = this.GetSid(sid, stringIndex); + ref CffGlyphData data = ref glyphs[i]; + data.GlyphName = GetSid(sid, stringIndex); - count--; - i++; - sid++; - } - while (count > 0); + count--; + i++; + sid++; } + while (count > 0); } + } - private CffGlyphData[] ReadCharStringsIndex( - BigEndianBinaryReader reader, - CffTopDictionary topDictionary, - byte[][] globalSubrBuffers, - FontDict[] fontDicts, - CffPrivateDictionary? privateDictionary) - { - // 14. CharStrings INDEX - - // This contains the charstrings of all the glyphs in a font stored in - // an INDEX structure. + private CffGlyphData[] ReadCharStringsIndex( + BigEndianBinaryReader reader, + CffTopDictionary topDictionary, + byte[][] globalSubrBuffers, + FontDict[] fontDicts, + CffPrivateDictionary? privateDictionary) + { + // 14. CharStrings INDEX - // Charstring objects contained within this - // INDEX are accessed by GID. + // This contains the charstrings of all the glyphs in a font stored in + // an INDEX structure. - // The first charstring(GID 0) must be - // the.notdef glyph. + // Charstring objects contained within this + // INDEX are accessed by GID. - // The number of glyphs available in a font may - // be determined from the count field in the INDEX. + // The first charstring(GID 0) must be + // the.notdef glyph. - // + // The number of glyphs available in a font may + // be determined from the count field in the INDEX. - // The format of the charstring data, and therefore the method of - // interpretation, is specified by the - // CharstringType operator in the Top DICT. + // - // The CharstringType operator has a default value - // of 2 indicating the Type 2 charstring format which was designed - // in conjunction with CFF. + // The format of the charstring data, and therefore the method of + // interpretation, is specified by the + // CharstringType operator in the Top DICT. - // Type 1 charstrings are documented in - // the “Adobe Type 1 Font Format” published by Addison - Wesley. + // The CharstringType operator has a default value + // of 2 indicating the Type 2 charstring format which was designed + // in conjunction with CFF. - // Type 2 charstrings are described in Adobe Technical Note #5177: - // “Type 2 Charstring Format.” Other charstring types may also be - // supported by this method. - reader.BaseStream.Position = this.offset + this.charStringsOffset; - if (!this.TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) - { - throw new InvalidFontFileException("No glyph data found."); - } + // Type 1 charstrings are documented in + // the “Adobe Type 1 Font Format” published by Addison - Wesley. - int glyphCount = offsets.Length; - var glyphs = new CffGlyphData[glyphCount]; - byte[][]? localSubBuffer = privateDictionary?.LocalSubrRawBuffers; + // Type 2 charstrings are described in Adobe Technical Note #5177: + // “Type 2 Charstring Format.” Other charstring types may also be + // supported by this method. + reader.BaseStream.Position = this.offset + this.charStringsOffset; + if (!TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) + { + throw new InvalidFontFileException("No glyph data found."); + } - // Is the font a CID font? - FDRangeProvider fdRangeProvider = new(topDictionary.CidFontInfo); - bool isCidFont = topDictionary.CidFontInfo.FdRanges.Length > 0; + int glyphCount = offsets.Length; + CffGlyphData[] glyphs = new CffGlyphData[glyphCount]; + byte[][]? localSubBuffer = privateDictionary?.LocalSubrRawBuffers; - for (int i = 0; i < glyphCount; ++i) - { - CffIndexOffset offset = offsets[i]; - byte[] charstringsBuffer = reader.ReadBytes(offset.Length); + // Is the font a CID font? + FDRangeProvider fdRangeProvider = new(topDictionary.CidFontInfo); + bool isCidFont = topDictionary.CidFontInfo.FdRanges.Length > 0; - // Now we can parse the raw glyph instructions - if (isCidFont) - { - // Select proper local private dict - fdRangeProvider.SetCurrentGlyphIndex((ushort)i); - localSubBuffer = fontDicts[fdRangeProvider.SelectedFDArray].LocalSubr; - } + for (int i = 0; i < glyphCount; ++i) + { + CffIndexOffset offset = offsets[i]; + byte[] charstringsBuffer = reader.ReadBytes(offset.Length); - glyphs[i] = new CffGlyphData( - (ushort)i, - globalSubrBuffers, - localSubBuffer ?? Array.Empty(), - privateDictionary?.NominalWidthX ?? 0, - charstringsBuffer, - 1); + // Now we can parse the raw glyph instructions + if (isCidFont) + { + // Select proper local private dict + fdRangeProvider.SetCurrentGlyphIndex((ushort)i); + localSubBuffer = fontDicts[fdRangeProvider.SelectedFDArray].LocalSubr; } - return glyphs; + glyphs[i] = new CffGlyphData( + (ushort)i, + globalSubrBuffers, + localSubBuffer ?? Array.Empty(), + privateDictionary?.NominalWidthX ?? 0, + charstringsBuffer, + 1); } - private void ReadFormat0Encoding(BigEndianBinaryReader reader) - { - // Table 11: Format 0 - // Type Name Description - // Card8 format = 0 - // Card8 nCodes Number of encoded glyphs - // Card8 code[nCodes] Code array - //------- - // Each element of the code array represents the encoding for the - // corresponding glyph. This format should be used when the - // codes are in a fairly random order - - // we have read format field( 1st field) .. - // so start with 2nd field - int nCodes = reader.ReadByte(); - byte[] codes = reader.ReadBytes(nCodes); - - // TODO: Implement based on PDFPig - } + return glyphs; + } + + private static void ReadFormat0Encoding(BigEndianBinaryReader reader) + { + // Table 11: Format 0 + // Type Name Description + // Card8 format = 0 + // Card8 nCodes Number of encoded glyphs + // Card8 code[nCodes] Code array + //------- + // Each element of the code array represents the encoding for the + // corresponding glyph. This format should be used when the + // codes are in a fairly random order + + // we have read format field( 1st field) .. + // so start with 2nd field + int nCodes = reader.ReadByte(); + byte[] codes = reader.ReadBytes(nCodes); + + // TODO: Implement based on PDFPig + } + + private static void ReadFormat1Encoding(BigEndianBinaryReader reader) + { + // Table 12 Format 1 + // Type Name Description + // Card8 format = 1 + // Card8 nRanges Number of code ranges + // struct Range1[nRanges] Range1 array(see Table 13) + //-------------- + int nRanges = reader.ReadByte(); + + // Table 13 Range1 Format(Encoding) + // Type Name Description + // Card8 first First code in range + // Card8 nLeft Codes left in range(excluding first) + //-------------- + // Each Range1 describes a group of sequential codes. For + // example, the codes 51 52 53 54 55 could be represented by the + // Range1: 51 4, and a perfectly ordered encoding of 256 codes can + // be described with the Range1: 0 255. + + // This format is particularly suited to encodings that are well ordered. + + // A few fonts have multiply - encoded glyphs which are not + // supported directly by any of the above formats. This situation is + // indicated by setting the high - order bit in the format byte and + // supplementing the encoding, regardless of format type, as + // shown in Table 14. + + // Table 14 Supplemental Encoding Data + // Type Name Description + // Card8 nSups Number of supplementary mappings + // struct Supplement[nSups] Supplementary encoding array(see Table 15 below) + + // Table 15 Supplement Format + // Type Name Description + // Card8 code Encoding + // SID glyph Name + } - private void ReadFormat1Encoding(BigEndianBinaryReader reader) + private CffPrivateDictionary? ReadPrivateDict(BigEndianBinaryReader reader) + { + // per-font + if (this.privateDICTLength == 0) { - // Table 12 Format 1 - // Type Name Description - // Card8 format = 1 - // Card8 nRanges Number of code ranges - // struct Range1[nRanges] Range1 array(see Table 13) - //-------------- - int nRanges = reader.ReadByte(); - - // Table 13 Range1 Format(Encoding) - // Type Name Description - // Card8 first First code in range - // Card8 nLeft Codes left in range(excluding first) - //-------------- - // Each Range1 describes a group of sequential codes. For - // example, the codes 51 52 53 54 55 could be represented by the - // Range1: 51 4, and a perfectly ordered encoding of 256 codes can - // be described with the Range1: 0 255. - - // This format is particularly suited to encodings that are well ordered. - - // A few fonts have multiply - encoded glyphs which are not - // supported directly by any of the above formats. This situation is - // indicated by setting the high - order bit in the format byte and - // supplementing the encoding, regardless of format type, as - // shown in Table 14. - - // Table 14 Supplemental Encoding Data - // Type Name Description - // Card8 nSups Number of supplementary mappings - // struct Supplement[nSups] Supplementary encoding array(see Table 15 below) - - // Table 15 Supplement Format - // Type Name Description - // Card8 code Encoding - // SID glyph Name + return null; } - private CffPrivateDictionary? ReadPrivateDict(BigEndianBinaryReader reader) + reader.BaseStream.Position = this.offset + this.privateDICTOffset; + List dicData = this.ReadDictData(reader, this.privateDICTLength); + byte[][] localSubrRawBuffers = Array.Empty(); + int defaultWidthX = 0; + int nominalWidthX = 0; + + if (dicData.Count > 0) { - // per-font - if (this.privateDICTLength == 0) + // Interpret the values of private dict + foreach (CffDataDicEntry dicEntry in dicData) { - return null; - } + switch (dicEntry.Operator.Name) + { + case "Subrs": + int localSubrsOffset = (int)dicEntry.Operands[0].RealNumValue; + reader.BaseStream.Position = this.offset + this.privateDICTOffset + localSubrsOffset; + localSubrRawBuffers = ReadLocalSubrs(reader); + break; - reader.BaseStream.Position = this.offset + this.privateDICTOffset; - List dicData = this.ReadDictData(reader, this.privateDICTLength); - byte[][] localSubrRawBuffers = Array.Empty(); - int defaultWidthX = 0; - int nominalWidthX = 0; + case "defaultWidthX": + defaultWidthX = (int)dicEntry.Operands[0].RealNumValue; + break; - if (dicData.Count > 0) - { - // Interpret the values of private dict - foreach (CffDataDicEntry dicEntry in dicData) - { - switch (dicEntry.Operator.Name) - { - case "Subrs": - int localSubrsOffset = (int)dicEntry.Operands[0].RealNumValue; - reader.BaseStream.Position = this.offset + this.privateDICTOffset + localSubrsOffset; - localSubrRawBuffers = this.ReadLocalSubrs(reader); - break; - - case "defaultWidthX": - defaultWidthX = (int)dicEntry.Operands[0].RealNumValue; - break; - - case "nominalWidthX": - nominalWidthX = (int)dicEntry.Operands[0].RealNumValue; - break; - } + case "nominalWidthX": + nominalWidthX = (int)dicEntry.Operands[0].RealNumValue; + break; } } - - return new CffPrivateDictionary(localSubrRawBuffers, defaultWidthX, nominalWidthX); } + + return new CffPrivateDictionary(localSubrRawBuffers, defaultWidthX, nominalWidthX); } -} \ No newline at end of file +} diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs b/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs index 405284f3e..e43f2edb1 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs @@ -4,65 +4,64 @@ using System; using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +internal sealed class Cff1Table : Table, ICffTable { - internal sealed class Cff1Table : Table, ICffTable - { - internal const string TableName = "CFF "; // 4 chars + internal const string TableName = "CFF "; // 4 chars - private readonly CffGlyphData[] glyphs; + private readonly CffGlyphData[] glyphs; - public Cff1Table(CffFont cff1Font) => this.glyphs = cff1Font.Glyphs; + public Cff1Table(CffFont cff1Font) => this.glyphs = cff1Font.Glyphs; - public int GlyphCount => this.glyphs.Length; + public int GlyphCount => this.glyphs.Length; - public ItemVariationStore? ItemVariationStore => null; + public ItemVariationStore? ItemVariationStore => null; - public CffGlyphData GetGlyph(int index) - => this.glyphs[index]; + public CffGlyphData GetGlyph(int index) + => this.glyphs[index]; - public static Cff1Table? Load(FontReader fontReader) + public static Cff1Table? Load(FontReader fontReader) + { + if (!fontReader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) { - if (!fontReader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) - { - return null; - } - - using (binaryReader) - { - return Load(binaryReader); - } + return null; } - public static Cff1Table Load(BigEndianBinaryReader reader) + using (binaryReader) { - // +------+---------------+----------------------------------------+ - // | Type | Name | Description | - // +======+===============+========================================+ - // | byte | majorVersion | Format major version. Set to 1. | - // +------+---------------+----------------------------------------+ - // | byte | minorVersion | Format minor version. Set to zero. | - // +------+---------------+----------------------------------------+ - // | byte | headerSize | Header size (bytes). | - // +------+---------------+----------------------------------------+ - // | byte | topDictLength | Length of Top DICT structure in bytes. | - // +------+---------------+----------------------------------------+ - long position = reader.BaseStream.Position; - byte[] header = reader.ReadBytes(4); - byte major = header[0]; - byte minor = header[1]; - byte hdrSize = header[2]; - byte offSize = header[3]; + return Load(binaryReader); + } + } + + public static Cff1Table Load(BigEndianBinaryReader reader) + { + // +------+---------------+----------------------------------------+ + // | Type | Name | Description | + // +======+===============+========================================+ + // | byte | majorVersion | Format major version. Set to 1. | + // +------+---------------+----------------------------------------+ + // | byte | minorVersion | Format minor version. Set to zero. | + // +------+---------------+----------------------------------------+ + // | byte | headerSize | Header size (bytes). | + // +------+---------------+----------------------------------------+ + // | byte | topDictLength | Length of Top DICT structure in bytes. | + // +------+---------------+----------------------------------------+ + long position = reader.BaseStream.Position; + byte[] header = reader.ReadBytes(4); + byte major = header[0]; + byte minor = header[1]; + byte hdrSize = header[2]; + byte offSize = header[3]; - switch (major) - { - case 1: - Cff1Parser parser = new(); - return new(parser.Load(reader, position)); + switch (major) + { + case 1: + Cff1Parser parser = new(); + return new(parser.Load(reader, position)); - default: - throw new NotSupportedException(); - } + default: + throw new NotSupportedException(); } } -} \ No newline at end of file +} diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs index 9daa104ba..706c76fa2 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs @@ -1,15 +1,14 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +internal class Cff2Font : CffFont { - internal class Cff2Font : CffFont - { - public Cff2Font(string name, CffTopDictionary metrics, CffGlyphData[] glyphs, ItemVariationStore itemVariationStore) - : base(name, metrics, glyphs) => this.ItemVariationStore = itemVariationStore; + public Cff2Font(string name, CffTopDictionary metrics, CffGlyphData[] glyphs, ItemVariationStore itemVariationStore) + : base(name, metrics, glyphs) => this.ItemVariationStore = itemVariationStore; - public ItemVariationStore ItemVariationStore { get; set; } - } + public ItemVariationStore ItemVariationStore { get; set; } } diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs index f8f9f0255..e12886850 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs @@ -1,333 +1,328 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. -using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using System.IO; using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +/// +/// Parses a Compact Font Format (CFF) version 2 described in https://docs.microsoft.com/de-de/typography/opentype/spec/cff2 +/// +internal class Cff2Parser : CffParserBase { - /// - /// Parses a Compact Font Format (CFF) version 2 described in https://docs.microsoft.com/de-de/typography/opentype/spec/cff2 - /// - internal class Cff2Parser : CffParserBase - { - private static readonly ItemVariationStore EmptyItemVariationStoreTable = new(VariationRegionList.EmptyVariationRegionList, Array.Empty()); + private static readonly ItemVariationStore EmptyItemVariationStoreTable = new(VariationRegionList.EmptyVariationRegionList, Array.Empty()); - private long offset; + private long offset; - private int fontMatrixOffset; - private int charStringIndexOffset; - private int variationStoreOffset; - private int? fdArrayOffset; - private int? fdSelectOffset; - private ItemVariationStore? itemVariationStore; + private int fontMatrixOffset; + private int charStringIndexOffset; + private int variationStoreOffset; + private int? fdArrayOffset; + private int? fdSelectOffset; + private ItemVariationStore? itemVariationStore; - public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictLength, string fontName, long offset) - { - this.offset = offset; - reader.Seek(hdrSize, SeekOrigin.Begin); + public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictLength, string fontName, long offset) + { + this.offset = offset; + reader.Seek(hdrSize, SeekOrigin.Begin); - this.ReadTopDictData(reader, topDictLength); - reader.Seek(hdrSize + topDictLength, SeekOrigin.Begin); + this.ReadTopDictData(reader, topDictLength); + reader.Seek(hdrSize + topDictLength, SeekOrigin.Begin); - var cidFontInfo = new CidFontInfo() - { - FDArray = this.fdArrayOffset.GetValueOrDefault(), - FDSelect = this.fdSelectOffset.GetValueOrDefault(), - }; + CidFontInfo cidFontInfo = new() + { + FDArray = this.fdArrayOffset.GetValueOrDefault(), + FDSelect = this.fdSelectOffset.GetValueOrDefault(), + }; - byte[][] globalSubrRawBuffers = this.ReadGlobalSubrIndex(reader); + byte[][] globalSubrRawBuffers = ReadGlobalSubrIndex(reader); - // Length in bytes of the Item Variation Store structure that follows. - reader.Seek(this.variationStoreOffset, SeekOrigin.Begin); - ushort variationStoreLength = reader.ReadUInt16(); - this.itemVariationStore = variationStoreLength == 0 ? EmptyItemVariationStoreTable : ItemVariationStore.Load(reader, this.variationStoreOffset + 2); + // Length in bytes of the Item Variation Store structure that follows. + reader.Seek(this.variationStoreOffset, SeekOrigin.Begin); + ushort variationStoreLength = reader.ReadUInt16(); + this.itemVariationStore = variationStoreLength == 0 ? EmptyItemVariationStoreTable : ItemVariationStore.Load(reader, this.variationStoreOffset + 2); - // Make sure we point to the stream to the end of the variation store data. - reader.Seek(offset + variationStoreLength, SeekOrigin.Begin); + // Make sure we point to the stream to the end of the variation store data. + reader.Seek(offset + variationStoreLength, SeekOrigin.Begin); - if (this.fdSelectOffset.HasValue) - { - this.ReadFdSelect(reader, this.offset, cidFontInfo); - } + if (this.fdSelectOffset.HasValue) + { + ReadFdSelect(reader, this.offset, cidFontInfo); + } - CffIndexOffset[] charStringOffsets = this.ReadCharStringIndex(reader); - byte[][] charStringBuffers = this.ReadCharStringBuffers(reader, charStringOffsets); + CffIndexOffset[] charStringOffsets = this.ReadCharStringIndex(reader); + byte[][] charStringBuffers = ReadCharStringBuffers(reader, charStringOffsets); - int fdArrayOffset = this.fdArrayOffset.GetValueOrDefault(); - FontDict[] fontDicts = this.ReadFdArray(reader, this.offset, fdArrayOffset); - var topDictionary = new CffTopDictionary - { - CidFontInfo = cidFontInfo - }; + int fdArrayOffset = this.fdArrayOffset.GetValueOrDefault(); + FontDict[] fontDicts = this.ReadFdArray(reader, this.offset, fdArrayOffset); + CffTopDictionary topDictionary = new() + { + CidFontInfo = cidFontInfo + }; - var privateDictionary = new CffPrivateDictionary(fontDicts[0].LocalSubr, 0, 0); - int glyphCount = charStringOffsets.Length; - CffGlyphData[] glyphs = this.ReadCharStringsIndex(topDictionary, globalSubrRawBuffers, fontDicts, privateDictionary, charStringBuffers, glyphCount); + CffPrivateDictionary privateDictionary = new(fontDicts[0].LocalSubr, 0, 0); + int glyphCount = charStringOffsets.Length; + CffGlyphData[] glyphs = this.ReadCharStringsIndex(topDictionary, globalSubrRawBuffers, fontDicts, privateDictionary, charStringBuffers, glyphCount); - return new(fontName, topDictionary, glyphs, this.itemVariationStore); - } + return new(fontName, topDictionary, glyphs, this.itemVariationStore); + } - private void ReadTopDictData(BigEndianBinaryReader reader, ushort topDictLength) + private void ReadTopDictData(BigEndianBinaryReader reader, ushort topDictLength) + { + long startPosition = reader.BaseStream.Position; + long maxPosition = startPosition + topDictLength; + while (reader.BaseStream.Position < maxPosition) { - long startPosition = reader.BaseStream.Position; - long maxPosition = startPosition + topDictLength; - while (reader.BaseStream.Position < maxPosition) + CffDataDicEntry dataDicEntry = this.ReadEntry(reader); + switch (dataDicEntry.Operator.Name) { - CffDataDicEntry dataDicEntry = this.ReadEntry(reader); - switch (dataDicEntry.Operator.Name) - { - case "FontMatrix": - this.fontMatrixOffset = (int)dataDicEntry.Operands[0].RealNumValue; - break; - case "CharStrings": - this.charStringIndexOffset = (int)dataDicEntry.Operands[0].RealNumValue; - break; - case "FDArray": - this.fdArrayOffset = (int)dataDicEntry.Operands[0].RealNumValue; - break; - case "FDSelect": - this.fdSelectOffset = (int)dataDicEntry.Operands[0].RealNumValue; - break; - case "vstore": - this.variationStoreOffset = (int)dataDicEntry.Operands[0].RealNumValue; - break; - default: - throw new InvalidFontFileException("Error parsing TopDictData."); - } + case "FontMatrix": + this.fontMatrixOffset = (int)dataDicEntry.Operands[0].RealNumValue; + break; + case "CharStrings": + this.charStringIndexOffset = (int)dataDicEntry.Operands[0].RealNumValue; + break; + case "FDArray": + this.fdArrayOffset = (int)dataDicEntry.Operands[0].RealNumValue; + break; + case "FDSelect": + this.fdSelectOffset = (int)dataDicEntry.Operands[0].RealNumValue; + break; + case "vstore": + this.variationStoreOffset = (int)dataDicEntry.Operands[0].RealNumValue; + break; + default: + throw new InvalidFontFileException("Error parsing TopDictData."); } } + } - private byte[][] ReadGlobalSubrIndex(BigEndianBinaryReader reader, bool cff2 = true) + private static byte[][] ReadGlobalSubrIndex(BigEndianBinaryReader reader, bool cff2 = true) - // 16. Local / Global Subrs INDEXes - // Both Type 1 and Type 2 charstrings support the notion of - // subroutines or subrs. + // 16. Local / Global Subrs INDEXes + // Both Type 1 and Type 2 charstrings support the notion of + // subroutines or subrs. - // A subr is typically a sequence of charstring - // bytes representing a sub - program that occurs in more than one - // place in a font’s charstring data. + // A subr is typically a sequence of charstring + // bytes representing a sub - program that occurs in more than one + // place in a font’s charstring data. - // This subr may be stored once - // but referenced many times from within one or more charstrings - // by the use of the call subr operator whose operand is the - // number of the subr to be called. + // This subr may be stored once + // but referenced many times from within one or more charstrings + // by the use of the call subr operator whose operand is the + // number of the subr to be called. - // The subrs are local to a particular font and - // cannot be shared between fonts. + // The subrs are local to a particular font and + // cannot be shared between fonts. - // Type 2 charstrings also permit global subrs which function in the same - // way but are called by the call gsubr operator and may be shared - // across fonts. + // Type 2 charstrings also permit global subrs which function in the same + // way but are called by the call gsubr operator and may be shared + // across fonts. - // Local subrs are stored in an INDEX structure which is located via - // the offset operand of the Subrs operator in the Private DICT. - // A font without local subrs has no Subrs operator in the Private DICT. + // Local subrs are stored in an INDEX structure which is located via + // the offset operand of the Subrs operator in the Private DICT. + // A font without local subrs has no Subrs operator in the Private DICT. - // Global subrs are stored in an INDEX structure which follows the - // String INDEX. A FontSet without any global subrs is represented - // by an empty Global Subrs INDEX. - => this.ReadSubrBuffer(reader, cff2); + // Global subrs are stored in an INDEX structure which follows the + // String INDEX. A FontSet without any global subrs is represented + // by an empty Global Subrs INDEX. + => ReadSubrBuffer(reader, cff2); - private byte[][] ReadSubrBuffer(BigEndianBinaryReader reader, bool cff2 = true) + private static byte[][] ReadSubrBuffer(BigEndianBinaryReader reader, bool cff2 = true) + { + if (!TryReadIndexDataOffsets(reader, cff2, out CffIndexOffset[]? offsets)) { - if (!this.TryReadIndexDataOffsets(reader, cff2, out CffIndexOffset[]? offsets)) - { - return Array.Empty(); - } - - byte[][] rawBufferList = new byte[offsets.Length][]; - - for (int i = 0; i < rawBufferList.Length; ++i) - { - CffIndexOffset offset = offsets[i]; - rawBufferList[i] = reader.ReadBytes(offset.Length); - } - - return rawBufferList; + return Array.Empty(); } - private CffIndexOffset[] ReadCharStringIndex(BigEndianBinaryReader reader) - { - reader.BaseStream.Position = this.offset + this.charStringIndexOffset; - if (!this.TryReadIndexDataOffsets(reader, true, out CffIndexOffset[]? offsets)) - { - throw new InvalidFontFileException("No glyph data found."); - } + byte[][] rawBufferList = new byte[offsets.Length][]; - return offsets; + for (int i = 0; i < rawBufferList.Length; ++i) + { + CffIndexOffset offset = offsets[i]; + rawBufferList[i] = reader.ReadBytes(offset.Length); } - private byte[][] ReadCharStringBuffers(BigEndianBinaryReader reader, CffIndexOffset[] offsets) - { - int glyphCount = offsets.Length; - byte[][] charStringBuffers = new byte[offsets.Length][]; - for (int i = 0; i < glyphCount; ++i) - { - CffIndexOffset cffIndexOffset = offsets[i]; - byte[] charStringsBuffer = reader.ReadBytes(cffIndexOffset.Length); - charStringBuffers[i] = charStringsBuffer; - } + return rawBufferList; + } - return charStringBuffers; + private CffIndexOffset[] ReadCharStringIndex(BigEndianBinaryReader reader) + { + reader.BaseStream.Position = this.offset + this.charStringIndexOffset; + if (!TryReadIndexDataOffsets(reader, true, out CffIndexOffset[]? offsets)) + { + throw new InvalidFontFileException("No glyph data found."); } - private CffGlyphData[] ReadCharStringsIndex( - CffTopDictionary topDictionary, - byte[][] globalSubrBuffers, - FontDict[] fontDicts, - CffPrivateDictionary? privateDictionary, - byte[][] charStringBuffers, - int glyphCount) + return offsets; + } + + private static byte[][] ReadCharStringBuffers(BigEndianBinaryReader reader, CffIndexOffset[] offsets) + { + int glyphCount = offsets.Length; + byte[][] charStringBuffers = new byte[offsets.Length][]; + for (int i = 0; i < glyphCount; ++i) { - // 14. CharStrings INDEX + CffIndexOffset cffIndexOffset = offsets[i]; + charStringBuffers[i] = reader.ReadBytes(cffIndexOffset.Length); + } - // This contains the charstrings of all the glyphs in a font stored in - // an INDEX structure. + return charStringBuffers; + } - // Charstring objects contained within this - // INDEX are accessed by GID. + private CffGlyphData[] ReadCharStringsIndex( + CffTopDictionary topDictionary, + byte[][] globalSubrBuffers, + FontDict[] fontDicts, + CffPrivateDictionary? privateDictionary, + byte[][] charStringBuffers, + int glyphCount) + { + // 14. CharStrings INDEX - // The first charstring(GID 0) must be - // the.notdef glyph. + // This contains the charstrings of all the glyphs in a font stored in + // an INDEX structure. - // The number of glyphs available in a font may - // be determined from the count field in the INDEX. + // Charstring objects contained within this + // INDEX are accessed by GID. - // + // The first charstring(GID 0) must be + // the.notdef glyph. - // The format of the charstring data, and therefore the method of - // interpretation, is specified by the - // CharstringType operator in the Top DICT. + // The number of glyphs available in a font may + // be determined from the count field in the INDEX. - // The CharstringType operator has a default value - // of 2 indicating the Type 2 charstring format which was designed - // in conjunction with CFF. + // - // Type 1 charstrings are documented in - // the “Adobe Type 1 Font Format” published by Addison - Wesley. + // The format of the charstring data, and therefore the method of + // interpretation, is specified by the + // CharstringType operator in the Top DICT. - // Type 2 charstrings are described in Adobe Technical Note #5177: - // “Type 2 Charstring Format.” Other charstring types may also be - // supported by this method. - var glyphs = new CffGlyphData[glyphCount]; - byte[][]? localSubBuffer = privateDictionary?.LocalSubrRawBuffers; + // The CharstringType operator has a default value + // of 2 indicating the Type 2 charstring format which was designed + // in conjunction with CFF. - // Is the font a CID font? - FDRangeProvider fdRangeProvider = new(topDictionary.CidFontInfo); - bool isCidFont = topDictionary.CidFontInfo.FdRanges.Length > 0; - for (int i = 0; i < glyphCount; ++i) - { - byte[] charstringsBuffer = charStringBuffers[i]; - - // Now we can parse the raw glyph instructions - // Select proper local private dict. - if (isCidFont) - { - fdRangeProvider.SetCurrentGlyphIndex((ushort)i); - localSubBuffer = fontDicts[fdRangeProvider.SelectedFDArray].LocalSubr; - } - - glyphs[i] = new CffGlyphData( - (ushort)i, - globalSubrBuffers, - localSubBuffer ?? Array.Empty(), - privateDictionary?.NominalWidthX ?? 0, - charstringsBuffer, - 2, - this.itemVariationStore); - } + // Type 1 charstrings are documented in + // the “Adobe Type 1 Font Format” published by Addison - Wesley. - return glyphs; - } + // Type 2 charstrings are described in Adobe Technical Note #5177: + // “Type 2 Charstring Format.” Other charstring types may also be + // supported by this method. + CffGlyphData[] glyphs = new CffGlyphData[glyphCount]; + byte[][]? localSubBuffer = privateDictionary?.LocalSubrRawBuffers; - private bool TryReadIndexDataOffsets(BigEndianBinaryReader reader, bool cff2, [NotNullWhen(true)] out CffIndexOffset[]? value) + // Is the font a CID font? + FDRangeProvider fdRangeProvider = new(topDictionary.CidFontInfo); + bool isCidFont = topDictionary.CidFontInfo.FdRanges.Length > 0; + for (int i = 0; i < glyphCount; ++i) { - // INDEX Data - // An INDEX is an array of variable-sized objects.It comprises a - // header, an offset array, and object data. - // The offset array specifies offsets within the object data. - // An object is retrieved by - // indexing the offset array and fetching the object at the - // specified offset. - // The object’s length can be determined by subtracting its offset - // from the next offset in the offset array. - // An additional offset is added at the end of the offset array so the - // length of the last object may be determined. - // The INDEX format is shown in Table 7 - - // Table 7 INDEX Format - // Type Name Description - // Card16 count Number of objects stored in INDEX - // OffSize offSize Offset array element size - // Offset offset[count + 1] Offset array(from byte preceding object data) - // Card8 data[] Object data - - // Offsets in the offset array are relative to the byte that precedes - // the object data. Therefore the first element of the offset array - // is always 1. (This ensures that every object has a corresponding - // offset which is always nonzero and permits the efficient - // implementation of dynamic object loading.) - - // An empty INDEX is represented by a count field with a 0 value - // and no additional fields.Thus, the total size of an empty INDEX - // is 2 bytes. - - // Note 2 - // An INDEX may be skipped by jumping to the offset specified by the last - // element of the offset array - uint count = cff2 ? reader.ReadUInt32() : reader.ReadUInt16(); - - if (count == 0) - { - value = null; - return false; - } + byte[] charstringsBuffer = charStringBuffers[i]; - int offSize = reader.ReadByte(); - int[] offsets = new int[count + 1]; - var indexElems = new CffIndexOffset[count]; - for (int i = 0; i <= count; ++i) + // Now we can parse the raw glyph instructions + // Select proper local private dict. + if (isCidFont) { - offsets[i] = reader.ReadOffset(offSize); + fdRangeProvider.SetCurrentGlyphIndex((ushort)i); + localSubBuffer = fontDicts[fdRangeProvider.SelectedFDArray].LocalSubr; } - for (int i = 0; i < count; ++i) - { - indexElems[i] = new CffIndexOffset(offsets[i], offsets[i + 1] - offsets[i]); - } + glyphs[i] = new CffGlyphData( + (ushort)i, + globalSubrBuffers, + localSubBuffer ?? Array.Empty(), + privateDictionary?.NominalWidthX ?? 0, + charstringsBuffer, + 2, + this.itemVariationStore); + } - value = indexElems; - return true; + return glyphs; + } + + private static bool TryReadIndexDataOffsets(BigEndianBinaryReader reader, bool cff2, [NotNullWhen(true)] out CffIndexOffset[]? value) + { + // INDEX Data + // An INDEX is an array of variable-sized objects.It comprises a + // header, an offset array, and object data. + // The offset array specifies offsets within the object data. + // An object is retrieved by + // indexing the offset array and fetching the object at the + // specified offset. + // The object’s length can be determined by subtracting its offset + // from the next offset in the offset array. + // An additional offset is added at the end of the offset array so the + // length of the last object may be determined. + // The INDEX format is shown in Table 7 + + // Table 7 INDEX Format + // Type Name Description + // Card16 count Number of objects stored in INDEX + // OffSize offSize Offset array element size + // Offset offset[count + 1] Offset array(from byte preceding object data) + // Card8 data[] Object data + + // Offsets in the offset array are relative to the byte that precedes + // the object data. Therefore the first element of the offset array + // is always 1. (This ensures that every object has a corresponding + // offset which is always nonzero and permits the efficient + // implementation of dynamic object loading.) + + // An empty INDEX is represented by a count field with a 0 value + // and no additional fields.Thus, the total size of an empty INDEX + // is 2 bytes. + + // Note 2 + // An INDEX may be skipped by jumping to the offset specified by the last + // element of the offset array + uint count = cff2 ? reader.ReadUInt32() : reader.ReadUInt16(); + + if (count == 0) + { + value = null; + return false; } - private List ReadDICTData(BigEndianBinaryReader reader, int length) + int offSize = reader.ReadByte(); + int[] offsets = new int[count + 1]; + CffIndexOffset[] indexElems = new CffIndexOffset[count]; + for (int i = 0; i <= count; ++i) { - // 4. DICT Data - - // Font dictionary data comprising key-value pairs is represented - // in a compact tokenized format that is similar to that used to - // represent Type 1 charstrings. - - // Dictionary keys are encoded as 1- or 2-byte operators and dictionary values are encoded as - // variable-size numeric operands that represent either integer or - // real values. - - //----------------------------- - // A DICT is simply a sequence of - // operand(s)/operator bytes concatenated together. - int maxIndex = (int)(reader.BaseStream.Position + length); - List dicData = new(); - while (reader.BaseStream.Position < maxIndex) - { - CffDataDicEntry dicEntry = this.ReadEntry(reader); - dicData.Add(dicEntry); - } + offsets[i] = reader.ReadOffset(offSize); + } - return dicData; + for (int i = 0; i < count; ++i) + { + indexElems[i] = new CffIndexOffset(offsets[i], offsets[i + 1] - offsets[i]); } + + value = indexElems; + return true; + } + + private List ReadDICTData(BigEndianBinaryReader reader, int length) + { + // 4. DICT Data + + // Font dictionary data comprising key-value pairs is represented + // in a compact tokenized format that is similar to that used to + // represent Type 1 charstrings. + + // Dictionary keys are encoded as 1- or 2-byte operators and dictionary values are encoded as + // variable-size numeric operands that represent either integer or + // real values. + + //----------------------------- + // A DICT is simply a sequence of + // operand(s)/operator bytes concatenated together. + int maxIndex = (int)(reader.BaseStream.Position + length); + List dicData = new(); + while (reader.BaseStream.Position < maxIndex) + { + CffDataDicEntry dicEntry = this.ReadEntry(reader); + dicData.Add(dicEntry); + } + + return dicData; } } diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs index 272a80d67..505debab8 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs @@ -7,61 +7,60 @@ using SixLabors.Fonts.Tables.General.Name; using SixLabors.Fonts.WellKnownIds; -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +internal sealed class Cff2Table : Table, ICffTable { - internal sealed class Cff2Table : Table, ICffTable - { - internal const string TableName = "CFF2"; + internal const string TableName = "CFF2"; - private readonly CffGlyphData[] glyphs; + private readonly CffGlyphData[] glyphs; - public Cff2Table(CffFont cffFont, ItemVariationStore itemVariationStore) - { - this.glyphs = cffFont.Glyphs; - this.ItemVariationStore = itemVariationStore; - } + public Cff2Table(CffFont cffFont, ItemVariationStore itemVariationStore) + { + this.glyphs = cffFont.Glyphs; + this.ItemVariationStore = itemVariationStore; + } - public int GlyphCount => this.glyphs.Length; + public int GlyphCount => this.glyphs.Length; - public ItemVariationStore ItemVariationStore { get; } + public ItemVariationStore ItemVariationStore { get; } - public CffGlyphData GetGlyph(int index) - => this.glyphs[index]; + public CffGlyphData GetGlyph(int index) + => this.glyphs[index]; - public static Cff2Table? Load(FontReader fontReader) + public static Cff2Table? Load(FontReader fontReader) + { + if (!fontReader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) { - if (!fontReader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) - { - return null; - } + return null; + } - NameTable nameTable = fontReader.GetTable(); - string fontName = nameTable.GetNameById(CultureInfo.InvariantCulture, KnownNameIds.PostscriptName); + NameTable nameTable = fontReader.GetTable(); + string fontName = nameTable.GetNameById(CultureInfo.InvariantCulture, KnownNameIds.PostscriptName); - using (binaryReader) - { - return Load(binaryReader, fontName); - } + using (binaryReader) + { + return Load(binaryReader, fontName); } + } - public static Cff2Table Load(BigEndianBinaryReader reader, string fontName) - { - long position = reader.BaseStream.Position; - byte major = reader.ReadUInt8(); - byte minor = reader.ReadUInt8(); - byte hdrSize = reader.ReadUInt8(); - ushort topDictLength = reader.ReadUInt16(); + public static Cff2Table Load(BigEndianBinaryReader reader, string fontName) + { + long position = reader.BaseStream.Position; + byte major = reader.ReadUInt8(); + byte minor = reader.ReadUInt8(); + byte hdrSize = reader.ReadUInt8(); + ushort topDictLength = reader.ReadUInt16(); - switch (major) - { - case 2: - Cff2Parser parser = new(); - Cff2Font cffFont = parser.Load(reader, hdrSize, topDictLength, fontName, position); - return new(cffFont, cffFont.ItemVariationStore); + switch (major) + { + case 2: + Cff2Parser parser = new(); + Cff2Font cffFont = parser.Load(reader, hdrSize, topDictLength, fontName, position); + return new(cffFont, cffFont.ItemVariationStore); - default: - throw new NotSupportedException("CFF version 2 is expected"); - } + default: + throw new NotSupportedException("CFF version 2 is expected"); } } -} \ No newline at end of file +} diff --git a/src/SixLabors.Fonts/Tables/Cff/CffEvaluationEngine.cs b/src/SixLabors.Fonts/Tables/Cff/CffEvaluationEngine.cs index fca53bd76..da6a97f26 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffEvaluationEngine.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffEvaluationEngine.cs @@ -7,810 +7,809 @@ using System.Runtime.CompilerServices; using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +/// +/// Decodes the commands and numbers making up a Type 2 CharString. A Type 2 CharString extends on the Type 1 CharString format. +/// Compared to the Type 1 format, the Type 2 encoding offers smaller size and an opportunity for better rendering quality and +/// performance. The Type 2 charstring operators are (with one exception) a superset of the Type 1 operators. +/// +/// +/// A Type 2 charstring program is a sequence of unsigned 8-bit bytes that encode numbers and operators. +/// The byte value specifies a operator, a number, or subsequent bytes that are to be interpreted in a specific manner. +/// +internal ref struct CffEvaluationEngine { - /// - /// Decodes the commands and numbers making up a Type 2 CharString. A Type 2 CharString extends on the Type 1 CharString format. - /// Compared to the Type 1 format, the Type 2 encoding offers smaller size and an opportunity for better rendering quality and - /// performance. The Type 2 charstring operators are (with one exception) a superset of the Type 1 operators. - /// - /// - /// A Type 2 charstring program is a sequence of unsigned 8-bit bytes that encode numbers and operators. - /// The byte value specifies a operator, a number, or subsequent bytes that are to be interpreted in a specific manner. - /// - internal ref struct CffEvaluationEngine + private static readonly Random Random = new(); + private float? width; + private int nStems; + private float x; + private float y; + private RefStack stack; + private readonly ReadOnlySpan charStrings; + private readonly ReadOnlySpan globalSubrBuffers; + private readonly ReadOnlySpan localSubrBuffers; + private TransformingGlyphRenderer transforming; + private readonly int nominalWidthX; + private readonly int globalBias; + private readonly int localBias; + private readonly Dictionary trans; + private bool isDisposed; + private readonly int version; + private readonly GlyphVariationProcessor? glyphVariationProcessor; + private int vsIndex; + + public CffEvaluationEngine( + ReadOnlySpan charStrings, + ReadOnlySpan globalSubrBuffers, + ReadOnlySpan localSubrBuffers, + int nominalWidthX, + int version, + ItemVariationStore? itemVariationStore = null, + FVarTable? fVar = null, + AVarTable? aVar = null) { - private static readonly Random Random = new(); - private float? width; - private int nStems; - private float x; - private float y; - private RefStack stack; - private readonly ReadOnlySpan charStrings; - private readonly ReadOnlySpan globalSubrBuffers; - private readonly ReadOnlySpan localSubrBuffers; - private TransformingGlyphRenderer transforming; - private readonly int nominalWidthX; - private readonly int globalBias; - private readonly int localBias; - private readonly Dictionary trans; - private bool isDisposed; - private readonly int version; - private readonly GlyphVariationProcessor? glyphVariationProcessor; - private int vsIndex; - - public CffEvaluationEngine( - ReadOnlySpan charStrings, - ReadOnlySpan globalSubrBuffers, - ReadOnlySpan localSubrBuffers, - int nominalWidthX, - int version, - ItemVariationStore? itemVariationStore = null, - FVarTable? fVar = null, - AVarTable? aVar = null) + this.transforming = default; + this.charStrings = charStrings; + this.globalSubrBuffers = globalSubrBuffers; + this.localSubrBuffers = localSubrBuffers; + this.nominalWidthX = nominalWidthX; + + this.globalBias = CalculateBias(this.globalSubrBuffers.Length); + this.localBias = CalculateBias(this.localSubrBuffers.Length); + this.trans = new(); + + this.x = 0; + this.y = 0; + this.width = null; + this.nStems = 0; + this.stack = new(50); + this.isDisposed = false; + this.version = version; + this.glyphVariationProcessor = null; + + if (itemVariationStore != null) { - this.transforming = default; - this.charStrings = charStrings; - this.globalSubrBuffers = globalSubrBuffers; - this.localSubrBuffers = localSubrBuffers; - this.nominalWidthX = nominalWidthX; - - this.globalBias = CalculateBias(this.globalSubrBuffers.Length); - this.localBias = CalculateBias(this.localSubrBuffers.Length); - this.trans = new(); - - this.x = 0; - this.y = 0; - this.width = null; - this.nStems = 0; - this.stack = new(50); - this.isDisposed = false; - this.version = version; - this.glyphVariationProcessor = null; - - if (itemVariationStore != null) + if (fVar is null) { - if (fVar is null) - { - throw new InvalidFontFileException("missing fVar table required for glyph variations processing"); - } - - this.glyphVariationProcessor = new GlyphVariationProcessor(itemVariationStore, fVar, aVar); + throw new InvalidFontFileException("missing fVar table required for glyph variations processing"); } - // TODO: always 0 for now. Should be privateDict.vsindex - this.vsIndex = 0; + this.glyphVariationProcessor = new GlyphVariationProcessor(itemVariationStore, fVar, aVar); } - public Bounds GetBounds() - { - this.Reset(); + // TODO: always 0 for now. Should be privateDict.vsindex + this.vsIndex = 0; + } - // TODO: It would be nice to avoid the allocation here. - CffBoundsFinder finder = new(); + public Bounds GetBounds() + { + this.Reset(); - // Note: scale is passed with negative Y to flip the Y axis. - this.transforming = new(finder, Vector2.Zero, new Vector2(1, -1), Vector2.Zero, Matrix3x2.Identity); + // TODO: It would be nice to avoid the allocation here. + CffBoundsFinder finder = new(); - // Boolean IGlyphRenderer.BeginGlyph(..) is handled by the caller. - this.Parse(this.charStrings); + // Note: scale is passed with negative Y to flip the Y axis. + this.transforming = new(finder, Vector2.Zero, new Vector2(1, -1), Vector2.Zero, Matrix3x2.Identity); - // Some CFF end without closing the latest contour. - if (this.transforming.IsOpen) - { - this.transforming.EndFigure(); - } + // Boolean IGlyphRenderer.BeginGlyph(..) is handled by the caller. + this.Parse(this.charStrings); - return finder.GetBounds(); + // Some CFF end without closing the latest contour. + if (this.transforming.IsOpen) + { + this.transforming.EndFigure(); } - public void RenderTo(IGlyphRenderer renderer, Vector2 origin, Vector2 scale, Vector2 offset, Matrix3x2 transform) - { - this.Reset(); + return finder.GetBounds(); + } + + public void RenderTo(IGlyphRenderer renderer, Vector2 origin, Vector2 scale, Vector2 offset, Matrix3x2 transform) + { + this.Reset(); - this.transforming = new(renderer, origin, scale, offset, transform); + this.transforming = new(renderer, origin, scale, offset, transform); - // Boolean IGlyphRenderer.BeginGlyph(..) is handled by the caller. - this.Parse(this.charStrings); + // Boolean IGlyphRenderer.BeginGlyph(..) is handled by the caller. + this.Parse(this.charStrings); - // Some CFF end without closing the latest contour. - if (this.transforming.IsOpen) - { - this.transforming.EndFigure(); - } + // Some CFF end without closing the latest contour. + if (this.transforming.IsOpen) + { + this.transforming.EndFigure(); } + } - private void Parse(ReadOnlySpan buffer) + private void Parse(ReadOnlySpan buffer) + { + SimpleBinaryReader reader = new(buffer); + bool endCharEncountered = false; + while (!endCharEncountered && reader.CanRead()) { - SimpleBinaryReader reader = new(buffer); - bool endCharEncountered = false; - while (!endCharEncountered && reader.CanRead()) + byte b0 = reader.ReadByte(); + if (b0 < 32) { - byte b0 = reader.ReadByte(); - if (b0 < 32) + int index; + ReadOnlySpan subr; + bool phase; + float c1x; + float c1y; + float c2x; + float c2y; + + var oneByteOperator = (Type2Operator1)b0; + switch (oneByteOperator) { - int index; - ReadOnlySpan subr; - bool phase; - float c1x; - float c1y; - float c2x; - float c2y; - - var oneByteOperator = (Type2Operator1)b0; - switch (oneByteOperator) - { - case Type2Operator1.Hstem: - case Type2Operator1.Vstem: - case Type2Operator1.Hstemhm: - case Type2Operator1.Vstemhm: - - this.ParseStems(); - break; + case Type2Operator1.Hstem: + case Type2Operator1.Vstem: + case Type2Operator1.Hstemhm: + case Type2Operator1.Vstemhm: - case Type2Operator1.Vmoveto: + this.ParseStems(); + break; - if (this.stack.Length > 1) - { - this.CheckWidth(); - } + case Type2Operator1.Vmoveto: + + if (this.stack.Length > 1) + { + this.CheckWidth(); + } + + this.y += this.stack.Shift(); + this.transforming.MoveTo(new Vector2(this.x, this.y)); + + this.stack.Clear(); + break; + case Type2Operator1.Rlineto: + + while (this.stack.Length >= 2) + { + this.x += this.stack.Shift(); this.y += this.stack.Shift(); - this.transforming.MoveTo(new Vector2(this.x, this.y)); + this.transforming.LineTo(new Vector2(this.x, this.y)); + } - this.stack.Clear(); - break; + this.stack.Clear(); + break; - case Type2Operator1.Rlineto: + case Type2Operator1.Hlineto: + case Type2Operator1.Vlineto: + phase = oneByteOperator == Type2Operator1.Hlineto; - while (this.stack.Length >= 2) + while (this.stack.Length >= 1) + { + if (phase) { this.x += this.stack.Shift(); + } + else + { this.y += this.stack.Shift(); - this.transforming.LineTo(new Vector2(this.x, this.y)); } - this.stack.Clear(); - break; - - case Type2Operator1.Hlineto: - case Type2Operator1.Vlineto: - phase = oneByteOperator == Type2Operator1.Hlineto; + this.transforming.LineTo(new Vector2(this.x, this.y)); + phase = !phase; + } - while (this.stack.Length >= 1) - { - if (phase) - { - this.x += this.stack.Shift(); - } - else - { - this.y += this.stack.Shift(); - } + this.stack.Clear(); + break; - this.transforming.LineTo(new Vector2(this.x, this.y)); - phase = !phase; - } + case Type2Operator1.Rrcurveto: - this.stack.Clear(); - break; + while (this.stack.Length > 0) + { + this.transforming.CubicBezierTo( + new Vector2(this.x += this.stack.Shift(), this.y += this.stack.Shift()), + new Vector2(this.x += this.stack.Shift(), this.y += this.stack.Shift()), + new Vector2(this.x += this.stack.Shift(), this.y += this.stack.Shift())); + } - case Type2Operator1.Rrcurveto: + this.stack.Clear(); + break; - while (this.stack.Length > 0) - { - this.transforming.CubicBezierTo( - new Vector2(this.x += this.stack.Shift(), this.y += this.stack.Shift()), - new Vector2(this.x += this.stack.Shift(), this.y += this.stack.Shift()), - new Vector2(this.x += this.stack.Shift(), this.y += this.stack.Shift())); - } + case Type2Operator1.Callsubr: + index = (int)this.stack.Pop() + this.localBias; + subr = this.localSubrBuffers[index]; - this.stack.Clear(); - break; + if (subr.Length > 0) + { + this.Parse(subr); + } - case Type2Operator1.Callsubr: - index = (int)this.stack.Pop() + this.localBias; - subr = this.localSubrBuffers[index]; + break; - if (subr.Length > 0) - { - this.Parse(subr); - } + case Type2Operator1.Return: + if (this.version >= 2) + { break; + } + + return; - case Type2Operator1.Return: + case Type2Operator1.Endchar: - if (this.version >= 2) + if (this.version >= 2) + { + break; + } + + if (this.stack.Length > 0) + { + this.CheckWidth(); + } + + if (this.transforming.IsOpen) + { + this.transforming.EndFigure(); + } + + endCharEncountered = true; + break; + + case Type2Operator1.VsIndex: + if (this.version < 2) + { + throw new NotSupportedException("blend operator is not supported in CFF v1"); + } + + this.vsIndex = (int)this.stack.Pop(); + break; + case Type2Operator1.Blend: + if (this.version < 2) + { + throw new NotSupportedException("blend operator is not supported in CFF v1"); + } + + if (this.glyphVariationProcessor is null) + { + throw new NotSupportedException("blend operator in non-variation font"); + } + + float[] blendVector = this.glyphVariationProcessor.BlendVector(this.vsIndex); + float numBlends = this.stack.Pop(); + float numOperands = numBlends * blendVector.Length; + int delta = this.stack.Length - (int)numOperands; + int basis = delta - (int)numBlends; + + for (int i = 0; i < numBlends; i++) + { + float sum = this.stack[basis + i]; + for (int j = 0; j < blendVector.Length; j++) { - break; + sum += blendVector[j] * this.stack[delta++]; } - return; + this.stack[basis + i] = sum; + } - case Type2Operator1.Endchar: + while (numOperands-- > 0) + { + this.stack.Pop(); + } - if (this.version >= 2) - { - break; - } + break; - if (this.stack.Length > 0) - { - this.CheckWidth(); - } + case Type2Operator1.Hintmask: + case Type2Operator1.Cntrmask: - if (this.transforming.IsOpen) - { - this.transforming.EndFigure(); - } + this.ParseStems(); + reader.Position += (this.nStems + 7) >> 3; - endCharEncountered = true; - break; + break; - case Type2Operator1.VsIndex: - if (this.version < 2) - { - throw new NotSupportedException("blend operator is not supported in CFF v1"); - } + case Type2Operator1.Rmoveto: - this.vsIndex = (int)this.stack.Pop(); - break; - case Type2Operator1.Blend: - if (this.version < 2) - { - throw new NotSupportedException("blend operator is not supported in CFF v1"); - } + if (this.stack.Length > 2) + { + this.CheckWidth(); + } - if (this.glyphVariationProcessor is null) - { - throw new NotSupportedException("blend operator in non-variation font"); - } + this.x += this.stack.Shift(); + this.y += this.stack.Shift(); + this.transforming.MoveTo(new Vector2(this.x, this.y)); - float[] blendVector = this.glyphVariationProcessor.BlendVector(this.vsIndex); - float numBlends = this.stack.Pop(); - float numOperands = numBlends * blendVector.Length; - int delta = this.stack.Length - (int)numOperands; - int basis = delta - (int)numBlends; + this.stack.Clear(); + break; - for (int i = 0; i < numBlends; i++) - { - float sum = this.stack[basis + i]; - for (int j = 0; j < blendVector.Length; j++) - { - sum += blendVector[j] * this.stack[delta++]; - } + case Type2Operator1.Hmoveto: - this.stack[basis + i] = sum; - } + if (this.stack.Length > 1) + { + this.CheckWidth(); + } - while (numOperands-- > 0) - { - this.stack.Pop(); - } + this.x += this.stack.Shift(); + this.transforming.MoveTo(new Vector2(this.x, this.y)); - break; + this.stack.Clear(); + break; - case Type2Operator1.Hintmask: - case Type2Operator1.Cntrmask: + case Type2Operator1.Rcurveline: - this.ParseStems(); - reader.Position += (this.nStems + 7) >> 3; + while (this.stack.Length >= 8) + { + this.transforming.CubicBezierTo( + new Vector2(this.x += this.stack.Shift(), this.y += this.stack.Shift()), + new Vector2(this.x += this.stack.Shift(), this.y += this.stack.Shift()), + new Vector2(this.x += this.stack.Shift(), this.y += this.stack.Shift())); + } - break; + this.transforming.LineTo(new Vector2(this.x += this.stack.Shift(), this.y += this.stack.Shift())); - case Type2Operator1.Rmoveto: + this.stack.Clear(); + break; - if (this.stack.Length > 2) - { - this.CheckWidth(); - } + case Type2Operator1.Rlinecurve: + while (this.stack.Length >= 8) + { this.x += this.stack.Shift(); this.y += this.stack.Shift(); - this.transforming.MoveTo(new Vector2(this.x, this.y)); + this.transforming.LineTo(new Vector2(this.x, this.y)); + } - this.stack.Clear(); - break; - - case Type2Operator1.Hmoveto: + c1x = this.x + this.stack.Shift(); + c1y = this.y + this.stack.Shift(); + c2x = c1x + this.stack.Shift(); + c2y = c1y + this.stack.Shift(); + this.x = c2x + this.stack.Shift(); + this.y = c2y + this.stack.Shift(); - if (this.stack.Length > 1) - { - this.CheckWidth(); - } + this.transforming.CubicBezierTo( + new Vector2(c1x, c1y), + new Vector2(c2x, c2y), + new Vector2(this.x, this.y)); - this.x += this.stack.Shift(); - this.transforming.MoveTo(new Vector2(this.x, this.y)); + this.stack.Clear(); + break; - this.stack.Clear(); - break; + case Type2Operator1.Vvcurveto: - case Type2Operator1.Rcurveline: + if (this.stack.Length % 2 != 0) + { + this.x += this.stack.Shift(); + } - while (this.stack.Length >= 8) - { - this.transforming.CubicBezierTo( - new Vector2(this.x += this.stack.Shift(), this.y += this.stack.Shift()), - new Vector2(this.x += this.stack.Shift(), this.y += this.stack.Shift()), - new Vector2(this.x += this.stack.Shift(), this.y += this.stack.Shift())); - } + while (this.stack.Length >= 4) + { + c1x = this.x; + c1y = this.y + this.stack.Shift(); + c2x = c1x + this.stack.Shift(); + c2y = c1y + this.stack.Shift(); + this.x = c2x; + this.y = c2y + this.stack.Shift(); - this.transforming.LineTo(new Vector2(this.x += this.stack.Shift(), this.y += this.stack.Shift())); + this.transforming.CubicBezierTo( + new Vector2(c1x, c1y), + new Vector2(c2x, c2y), + new Vector2(this.x, this.y)); + } - this.stack.Clear(); - break; + this.stack.Clear(); + break; - case Type2Operator1.Rlinecurve: + case Type2Operator1.Hhcurveto: - while (this.stack.Length >= 8) - { - this.x += this.stack.Shift(); - this.y += this.stack.Shift(); - this.transforming.LineTo(new Vector2(this.x, this.y)); - } + if (this.stack.Length % 2 != 0) + { + this.y += this.stack.Shift(); + } + while (this.stack.Length >= 4) + { c1x = this.x + this.stack.Shift(); - c1y = this.y + this.stack.Shift(); + c1y = this.y; c2x = c1x + this.stack.Shift(); c2y = c1y + this.stack.Shift(); this.x = c2x + this.stack.Shift(); - this.y = c2y + this.stack.Shift(); + this.y = c2y; this.transforming.CubicBezierTo( new Vector2(c1x, c1y), new Vector2(c2x, c2y), new Vector2(this.x, this.y)); + } - this.stack.Clear(); - break; + this.stack.Clear(); + break; - case Type2Operator1.Vvcurveto: + case Type2Operator1.Shortint: - if (this.stack.Length % 2 != 0) - { - this.x += this.stack.Shift(); - } + this.stack.Push(reader.ReadInt16BE()); + break; - while (this.stack.Length >= 4) - { - c1x = this.x; - c1y = this.y + this.stack.Shift(); - c2x = c1x + this.stack.Shift(); - c2y = c1y + this.stack.Shift(); - this.x = c2x; - this.y = c2y + this.stack.Shift(); + case Type2Operator1.Callgsubr: - this.transforming.CubicBezierTo( - new Vector2(c1x, c1y), - new Vector2(c2x, c2y), - new Vector2(this.x, this.y)); - } + index = (int)this.stack.Pop() + this.globalBias; + subr = this.globalSubrBuffers[index]; - this.stack.Clear(); - break; + if (subr.Length > 0) + { + this.Parse(subr); + } - case Type2Operator1.Hhcurveto: + break; - if (this.stack.Length % 2 != 0) - { - this.y += this.stack.Shift(); - } + case Type2Operator1.Vhcurveto: + case Type2Operator1.Hvcurveto: - while (this.stack.Length >= 4) + phase = oneByteOperator == Type2Operator1.Hvcurveto; + while (this.stack.Length >= 4) + { + if (phase) { c1x = this.x + this.stack.Shift(); c1y = this.y; c2x = c1x + this.stack.Shift(); c2y = c1y + this.stack.Shift(); - this.x = c2x + this.stack.Shift(); - this.y = c2y; - - this.transforming.CubicBezierTo( - new Vector2(c1x, c1y), - new Vector2(c2x, c2y), - new Vector2(this.x, this.y)); + this.y = c2y + this.stack.Shift(); + this.x = c2x + (this.stack.Length == 1 ? this.stack.Shift() : 0); } - - this.stack.Clear(); - break; - - case Type2Operator1.Shortint: - - this.stack.Push(reader.ReadInt16BE()); - break; - - case Type2Operator1.Callgsubr: - - index = (int)this.stack.Pop() + this.globalBias; - subr = this.globalSubrBuffers[index]; - - if (subr.Length > 0) + else { - this.Parse(subr); + c1x = this.x; + c1y = this.y + this.stack.Shift(); + c2x = c1x + this.stack.Shift(); + c2y = c1y + this.stack.Shift(); + this.x = c2x + this.stack.Shift(); + this.y = c2y + (this.stack.Length == 1 ? this.stack.Shift() : 0); } - break; - - case Type2Operator1.Vhcurveto: - case Type2Operator1.Hvcurveto: - - phase = oneByteOperator == Type2Operator1.Hvcurveto; - while (this.stack.Length >= 4) - { - if (phase) - { - c1x = this.x + this.stack.Shift(); - c1y = this.y; - c2x = c1x + this.stack.Shift(); - c2y = c1y + this.stack.Shift(); - this.y = c2y + this.stack.Shift(); - this.x = c2x + (this.stack.Length == 1 ? this.stack.Shift() : 0); - } - else - { - c1x = this.x; - c1y = this.y + this.stack.Shift(); - c2x = c1x + this.stack.Shift(); - c2y = c1y + this.stack.Shift(); - this.x = c2x + this.stack.Shift(); - this.y = c2y + (this.stack.Length == 1 ? this.stack.Shift() : 0); - } - - this.transforming.CubicBezierTo(new Vector2(c1x, c1y), new Vector2(c2x, c2y), new Vector2(this.x, this.y)); - phase = !phase; - } + this.transforming.CubicBezierTo(new Vector2(c1x, c1y), new Vector2(c2x, c2y), new Vector2(this.x, this.y)); + phase = !phase; + } - this.stack.Clear(); - break; + this.stack.Clear(); + break; - case Type2Operator1.Escape: + case Type2Operator1.Escape: - bool a; - bool b; - byte twoByteOperator = reader.ReadByte(); - if (twoByteOperator >= 38) - { - ThrowInvalidOperator(twoByteOperator); - return; - } + bool a; + bool b; + byte twoByteOperator = reader.ReadByte(); + if (twoByteOperator >= 38) + { + ThrowInvalidOperator(twoByteOperator); + return; + } - switch ((Type2Operator2)twoByteOperator) - { - case Type2Operator2.And: + switch ((Type2Operator2)twoByteOperator) + { + case Type2Operator2.And: - a = this.stack.Pop() != 0; - b = this.stack.Pop() != 0; - this.stack.Push((a && b) ? 1 : 0); - break; + a = this.stack.Pop() != 0; + b = this.stack.Pop() != 0; + this.stack.Push((a && b) ? 1 : 0); + break; - case Type2Operator2.Or: + case Type2Operator2.Or: - a = this.stack.Pop() != 0; - b = this.stack.Pop() != 0; - this.stack.Push((a || b) ? 1 : 0); - break; + a = this.stack.Pop() != 0; + b = this.stack.Pop() != 0; + this.stack.Push((a || b) ? 1 : 0); + break; - case Type2Operator2.Not: + case Type2Operator2.Not: - a = this.stack.Pop() != 0; - this.stack.Push(a ? 1 : 0); - break; + a = this.stack.Pop() != 0; + this.stack.Push(a ? 1 : 0); + break; - case Type2Operator2.Abs: + case Type2Operator2.Abs: - this.stack.Push(Math.Abs(this.stack.Pop())); - break; + this.stack.Push(Math.Abs(this.stack.Pop())); + break; - case Type2Operator2.Add: + case Type2Operator2.Add: - this.stack.Push(this.stack.Pop() + this.stack.Pop()); - break; + this.stack.Push(this.stack.Pop() + this.stack.Pop()); + break; - case Type2Operator2.Sub: + case Type2Operator2.Sub: - this.stack.Push(this.stack.Pop() - this.stack.Pop()); - break; + this.stack.Push(this.stack.Pop() - this.stack.Pop()); + break; - case Type2Operator2.Div: + case Type2Operator2.Div: - this.stack.Push(this.stack.Pop() / this.stack.Pop()); - break; + this.stack.Push(this.stack.Pop() / this.stack.Pop()); + break; - case Type2Operator2.Neg: + case Type2Operator2.Neg: - this.stack.Push(-this.stack.Pop()); - break; + this.stack.Push(-this.stack.Pop()); + break; - case Type2Operator2.Eq: + case Type2Operator2.Eq: - this.stack.Push(this.stack.Pop() == this.stack.Pop() ? 1 : 0); - break; + this.stack.Push(this.stack.Pop() == this.stack.Pop() ? 1 : 0); + break; - case Type2Operator2.Drop: + case Type2Operator2.Drop: - this.stack.Pop(); - break; + this.stack.Pop(); + break; - case Type2Operator2.Put: + case Type2Operator2.Put: - float val = this.stack.Pop(); - int idx = (int)this.stack.Pop(); + float val = this.stack.Pop(); + int idx = (int)this.stack.Pop(); - this.trans[idx] = val; - break; + this.trans[idx] = val; + break; - case Type2Operator2.Get: + case Type2Operator2.Get: - idx = (int)this.stack.Pop(); - this.trans.TryGetValue(idx, out float v); - this.stack.Push(v); - this.trans.Remove(idx); - break; + idx = (int)this.stack.Pop(); + this.trans.TryGetValue(idx, out float v); + this.stack.Push(v); + this.trans.Remove(idx); + break; - case Type2Operator2.Ifelse: + case Type2Operator2.Ifelse: - float s1 = this.stack.Pop(); - float s2 = this.stack.Pop(); - float v1 = this.stack.Pop(); - float v2 = this.stack.Pop(); + float s1 = this.stack.Pop(); + float s2 = this.stack.Pop(); + float v1 = this.stack.Pop(); + float v2 = this.stack.Pop(); - this.stack.Push(v1 <= v2 ? s1 : s2); - break; + this.stack.Push(v1 <= v2 ? s1 : s2); + break; - case Type2Operator2.Random: - this.stack.Push((float)Random.NextDouble()); - break; + case Type2Operator2.Random: + this.stack.Push((float)Random.NextDouble()); + break; - case Type2Operator2.Mul: + case Type2Operator2.Mul: - this.stack.Push(this.stack.Pop() * this.stack.Pop()); - break; + this.stack.Push(this.stack.Pop() * this.stack.Pop()); + break; - case Type2Operator2.Sqrt: + case Type2Operator2.Sqrt: - this.stack.Push(MathF.Sqrt(this.stack.Pop())); - break; + this.stack.Push(MathF.Sqrt(this.stack.Pop())); + break; - case Type2Operator2.Dup: + case Type2Operator2.Dup: - float m = this.stack.Pop(); - this.stack.Push(m); - this.stack.Push(m); - break; + float m = this.stack.Pop(); + this.stack.Push(m); + this.stack.Push(m); + break; - case Type2Operator2.Exch: + case Type2Operator2.Exch: - float ex = this.stack.Pop(); - float ch = this.stack.Pop(); - this.stack.Push(ch); - this.stack.Push(ex); - break; + float ex = this.stack.Pop(); + float ch = this.stack.Pop(); + this.stack.Push(ch); + this.stack.Push(ex); + break; - case Type2Operator2.Index: + case Type2Operator2.Index: - idx = (int)this.stack.Pop(); - if (idx < 0) - { - idx = 0; - } - else if (idx > this.stack.Length - 1) - { - idx = this.stack.Length - 1; - } + idx = (int)this.stack.Pop(); + if (idx < 0) + { + idx = 0; + } + else if (idx > this.stack.Length - 1) + { + idx = this.stack.Length - 1; + } - this.stack.Push(this.stack[idx]); - break; + this.stack.Push(this.stack[idx]); + break; - case Type2Operator2.Roll: + case Type2Operator2.Roll: - int n = (int)this.stack.Pop(); - float j = this.stack.Pop(); + int n = (int)this.stack.Pop(); + float j = this.stack.Pop(); - if (j >= 0) + if (j >= 0) + { + while (j > 0) { - while (j > 0) + float t = this.stack[n - 1]; + for (int i = n - 2; i >= 0; i--) { - float t = this.stack[n - 1]; - for (int i = n - 2; i >= 0; i--) - { - this.stack[i + 1] = this.stack[i]; - } - - this.stack[0] = t; - j--; + this.stack[i + 1] = this.stack[i]; } + + this.stack[0] = t; + j--; } - else + } + else + { + while (j < 0) { - while (j < 0) + float t = this.stack[0]; + for (int i = 0; i <= n; i++) { - float t = this.stack[0]; - for (int i = 0; i <= n; i++) - { - this.stack[i] = this.stack[i + 1]; - } - - this.stack[n - 1] = t; - j++; + this.stack[i] = this.stack[i + 1]; } + + this.stack[n - 1] = t; + j++; } + } - break; - - case Type2Operator2.Hflex: - - c1x = this.x + this.stack.Shift(); - c1y = this.y; - c2x = c1x + this.stack.Shift(); - c2y = c1y + this.stack.Shift(); - float c3x = c2x + this.stack.Shift(); - float c3y = c2y; - float c4x = c3x + this.stack.Shift(); - float c4y = c3y; - float c5x = c4x + this.stack.Shift(); - float c5y = c4y; - float c6x = c5x + this.stack.Shift(); - float c6y = c5y; - this.x = c6x; - this.y = c6y; - - this.transforming.CubicBezierTo(new Vector2(c1x, c1y), new Vector2(c2x, c2y), new Vector2(c3x, c3y)); - this.transforming.CubicBezierTo(new Vector2(c4x, c4y), new Vector2(c5x, c5y), new Vector2(c6x, c6y)); - - this.stack.Clear(); - break; - - case Type2Operator2.Flex: - - this.transforming.CubicBezierTo(new Vector2(this.stack.Shift(), this.stack.Shift()), new Vector2(this.stack.Shift(), this.stack.Shift()), new Vector2(this.stack.Shift(), this.stack.Shift())); - this.transforming.CubicBezierTo(new Vector2(this.stack.Shift(), this.stack.Shift()), new Vector2(this.stack.Shift(), this.stack.Shift()), new Vector2(this.stack.Shift(), this.stack.Shift())); - - this.stack.Shift(); - - this.stack.Clear(); - break; - - case Type2Operator2.Hflex1: - - c1x = this.x + this.stack.Shift(); - c1y = this.y + this.stack.Shift(); - c2x = c1x + this.stack.Shift(); - c2y = c1y + this.stack.Shift(); - c3x = c2x + this.stack.Shift(); - c3y = c2y; - c4x = c3x + this.stack.Shift(); - c4y = c3y; - c5x = c4x + this.stack.Shift(); - c5y = c4y + this.stack.Shift(); - c6x = c5x + this.stack.Shift(); - c6y = c5y; - this.x = c6x; - this.y = c6y; + break; - this.transforming.CubicBezierTo(new Vector2(c1x, c1y), new Vector2(c2x, c2y), new Vector2(c3x, c3y)); - this.transforming.CubicBezierTo(new Vector2(c4x, c4y), new Vector2(c5x, c5y), new Vector2(c6x, c6y)); + case Type2Operator2.Hflex: - this.stack.Clear(); - break; + c1x = this.x + this.stack.Shift(); + c1y = this.y; + c2x = c1x + this.stack.Shift(); + c2y = c1y + this.stack.Shift(); + float c3x = c2x + this.stack.Shift(); + float c3y = c2y; + float c4x = c3x + this.stack.Shift(); + float c4y = c3y; + float c5x = c4x + this.stack.Shift(); + float c5y = c4y; + float c6x = c5x + this.stack.Shift(); + float c6y = c5y; + this.x = c6x; + this.y = c6y; + + this.transforming.CubicBezierTo(new Vector2(c1x, c1y), new Vector2(c2x, c2y), new Vector2(c3x, c3y)); + this.transforming.CubicBezierTo(new Vector2(c4x, c4y), new Vector2(c5x, c5y), new Vector2(c6x, c6y)); + + this.stack.Clear(); + break; - case Type2Operator2.Flex1: + case Type2Operator2.Flex: - float startX = this.x; - float startY = this.y; + this.transforming.CubicBezierTo(new Vector2(this.stack.Shift(), this.stack.Shift()), new Vector2(this.stack.Shift(), this.stack.Shift()), new Vector2(this.stack.Shift(), this.stack.Shift())); + this.transforming.CubicBezierTo(new Vector2(this.stack.Shift(), this.stack.Shift()), new Vector2(this.stack.Shift(), this.stack.Shift()), new Vector2(this.stack.Shift(), this.stack.Shift())); - c1x = this.x + this.stack.Shift(); - c1y = this.y + this.stack.Shift(); + this.stack.Shift(); - c2x = c1x + this.stack.Shift(); - c2y = c1y + this.stack.Shift(); + this.stack.Clear(); + break; - c3x = c2x + this.stack.Shift(); - c3y = c2y + this.stack.Shift(); + case Type2Operator2.Hflex1: - c4x = c3x + this.stack.Shift(); - c4y = c3y + this.stack.Shift(); + c1x = this.x + this.stack.Shift(); + c1y = this.y + this.stack.Shift(); + c2x = c1x + this.stack.Shift(); + c2y = c1y + this.stack.Shift(); + c3x = c2x + this.stack.Shift(); + c3y = c2y; + c4x = c3x + this.stack.Shift(); + c4y = c3y; + c5x = c4x + this.stack.Shift(); + c5y = c4y + this.stack.Shift(); + c6x = c5x + this.stack.Shift(); + c6y = c5y; + this.x = c6x; + this.y = c6y; + + this.transforming.CubicBezierTo(new Vector2(c1x, c1y), new Vector2(c2x, c2y), new Vector2(c3x, c3y)); + this.transforming.CubicBezierTo(new Vector2(c4x, c4y), new Vector2(c5x, c5y), new Vector2(c6x, c6y)); + + this.stack.Clear(); + break; - c5x = c4x + this.stack.Shift(); - c5y = c4y + this.stack.Shift(); + case Type2Operator2.Flex1: - if (MathF.Abs(this.x - startX) > Math.Abs(this.y - startY)) - { - // horizontal - c6x = c5x + this.stack.Shift(); - c6y = startY; - } - else - { - c6x = startX; - c6y = c5y + this.stack.Shift(); - } + float startX = this.x; + float startY = this.y; - this.x = c6x; - this.y = c6y; + c1x = this.x + this.stack.Shift(); + c1y = this.y + this.stack.Shift(); - this.transforming.CubicBezierTo(new Vector2(c1x, c1y), new Vector2(c2x, c2y), new Vector2(c3x, c3y)); - this.transforming.CubicBezierTo(new Vector2(c4x, c4y), new Vector2(c5x, c5y), new Vector2(c6x, c6y)); + c2x = c1x + this.stack.Shift(); + c2y = c1y + this.stack.Shift(); - this.stack.Clear(); - break; - } + c3x = c2x + this.stack.Shift(); + c3y = c2y + this.stack.Shift(); - break; - } - } - else if (b0 < 247) - { - this.stack.Push(b0 - 139); - } - else if (b0 < 251) - { - byte b1 = reader.ReadByte(); - this.stack.Push(((b0 - 247) * 256) + b1 + 108); - } - else if (b0 < 255) - { - byte b1 = reader.ReadByte(); - this.stack.Push((-(b0 - 251) * 256) - b1 - 108); - } - else - { - this.stack.Push(reader.ReadFloatFixed1616()); + c4x = c3x + this.stack.Shift(); + c4y = c3y + this.stack.Shift(); + + c5x = c4x + this.stack.Shift(); + c5y = c4y + this.stack.Shift(); + + if (MathF.Abs(this.x - startX) > Math.Abs(this.y - startY)) + { + // horizontal + c6x = c5x + this.stack.Shift(); + c6y = startY; + } + else + { + c6x = startX; + c6y = c5y + this.stack.Shift(); + } + + this.x = c6x; + this.y = c6y; + + this.transforming.CubicBezierTo(new Vector2(c1x, c1y), new Vector2(c2x, c2y), new Vector2(c3x, c3y)); + this.transforming.CubicBezierTo(new Vector2(c4x, c4y), new Vector2(c5x, c5y), new Vector2(c6x, c6y)); + + this.stack.Clear(); + break; + } + + break; } } - } - - public void Dispose() - { - if (this.isDisposed) + else if (b0 < 247) { - return; + this.stack.Push(b0 - 139); } - - this.stack.Dispose(); - this.isDisposed = true; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static int CalculateBias(int count) - { - if (count == 0) + else if (b0 < 251) { - return 0; + byte b1 = reader.ReadByte(); + this.stack.Push(((b0 - 247) * 256) + b1 + 108); + } + else if (b0 < 255) + { + byte b1 = reader.ReadByte(); + this.stack.Push((-(b0 - 251) * 256) - b1 - 108); + } + else + { + this.stack.Push(reader.ReadFloatFixed1616()); } - - return (count < 1240) ? 107 : (count < 33900) ? 1131 : 32768; } + } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - private void ParseStems() + public void Dispose() + { + if (this.isDisposed) { - if (this.stack.Length % 2 != 0) - { - this.CheckWidth(); - } + return; + } - this.nStems += this.stack.Length >> 1; - this.stack.Clear(); + this.stack.Dispose(); + this.isDisposed = true; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static int CalculateBias(int count) + { + if (count == 0) + { + return 0; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - private void CheckWidth() - => this.width ??= this.stack.Shift() + this.nominalWidthX; + return (count < 1240) ? 107 : (count < 33900) ? 1131 : 32768; + } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - private void Reset() + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private void ParseStems() + { + if (this.stack.Length % 2 != 0) { - this.x = 0; - this.y = 0; - this.width = null; - this.nStems = 0; - this.stack.Clear(); - this.trans.Clear(); + this.CheckWidth(); } - [MethodImpl(MethodImplOptions.NoInlining)] - private static void ThrowInvalidOperator(byte @operator) - => throw new InvalidFontFileException($"Unknown operator:{@operator}"); + this.nStems += this.stack.Length >> 1; + this.stack.Clear(); } -} \ No newline at end of file + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private void CheckWidth() + => this.width ??= this.stack.Shift() + this.nominalWidthX; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private void Reset() + { + this.x = 0; + this.y = 0; + this.width = null; + this.nStems = 0; + this.stack.Clear(); + this.trans.Clear(); + } + + [MethodImpl(MethodImplOptions.NoInlining)] + private static void ThrowInvalidOperator(byte @operator) + => throw new InvalidFontFileException($"Unknown operator:{@operator}"); +} diff --git a/src/SixLabors.Fonts/Tables/Cff/CffFont.cs b/src/SixLabors.Fonts/Tables/Cff/CffFont.cs index 8d930830c..163a1b4bf 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffFont.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffFont.cs @@ -3,21 +3,20 @@ using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +internal class CffFont { - internal class CffFont + public CffFont(string name, CffTopDictionary metrics, CffGlyphData[] glyphs) { - public CffFont(string name, CffTopDictionary metrics, CffGlyphData[] glyphs) - { - this.FontName = name; - this.Metrics = metrics; - this.Glyphs = glyphs; - } + this.FontName = name; + this.Metrics = metrics; + this.Glyphs = glyphs; + } - public string FontName { get; set; } + public string FontName { get; set; } - public CffTopDictionary Metrics { get; set; } + public CffTopDictionary Metrics { get; set; } - public CffGlyphData[] Glyphs { get; } - } -} \ No newline at end of file + public CffGlyphData[] Glyphs { get; } +} diff --git a/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs b/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs index 15f1cdafd..98302044c 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs @@ -4,80 +4,79 @@ using System.Numerics; using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +internal struct CffGlyphData { - internal struct CffGlyphData - { - private readonly byte[][] globalSubrBuffers; - private readonly byte[][] localSubrBuffers; - private readonly byte[] charStrings; - private readonly int nominalWidthX; - private readonly int version; - private readonly ItemVariationStore? itemVariationStore; + private readonly byte[][] globalSubrBuffers; + private readonly byte[][] localSubrBuffers; + private readonly byte[] charStrings; + private readonly int nominalWidthX; + private readonly int version; + private readonly ItemVariationStore? itemVariationStore; - public CffGlyphData( - ushort glyphIndex, - byte[][] globalSubrBuffers, - byte[][] localSubrBuffers, - int nominalWidthX, - byte[] charStrings, - int version, - ItemVariationStore? itemVariationStore = null) - { - this.GlyphIndex = glyphIndex; - this.globalSubrBuffers = globalSubrBuffers; - this.localSubrBuffers = localSubrBuffers; - this.nominalWidthX = nominalWidthX; - this.charStrings = charStrings; - this.version = version; - this.itemVariationStore = itemVariationStore; + public CffGlyphData( + ushort glyphIndex, + byte[][] globalSubrBuffers, + byte[][] localSubrBuffers, + int nominalWidthX, + byte[] charStrings, + int version, + ItemVariationStore? itemVariationStore = null) + { + this.GlyphIndex = glyphIndex; + this.globalSubrBuffers = globalSubrBuffers; + this.localSubrBuffers = localSubrBuffers; + this.nominalWidthX = nominalWidthX; + this.charStrings = charStrings; + this.version = version; + this.itemVariationStore = itemVariationStore; - this.GlyphName = null; + this.GlyphName = null; - // Variations tables are only present for CFF2 format. - this.FVar = null; - this.AVar = null; - this.GVar = null; - } + // Variations tables are only present for CFF2 format. + this.FVar = null; + this.AVar = null; + this.GVar = null; + } - public ushort GlyphIndex { get; } + public ushort GlyphIndex { get; } - public string? GlyphName { get; set; } + public string? GlyphName { get; set; } - public FVarTable? FVar { get; set; } + public FVarTable? FVar { get; set; } - public AVarTable? AVar { get; set; } + public AVarTable? AVar { get; set; } - public GVarTable? GVar { get; set; } + public GVarTable? GVar { get; set; } - public Bounds GetBounds() - { - using var engine = new CffEvaluationEngine( - this.charStrings, - this.globalSubrBuffers, - this.localSubrBuffers, - this.nominalWidthX, - this.version, - this.itemVariationStore, - this.FVar, - this.AVar); + public Bounds GetBounds() + { + using var engine = new CffEvaluationEngine( + this.charStrings, + this.globalSubrBuffers, + this.localSubrBuffers, + this.nominalWidthX, + this.version, + this.itemVariationStore, + this.FVar, + this.AVar); - return engine.GetBounds(); - } + return engine.GetBounds(); + } - public void RenderTo(IGlyphRenderer renderer, Vector2 origin, Vector2 scale, Vector2 offset, Matrix3x2 transform) - { - using var engine = new CffEvaluationEngine( - this.charStrings, - this.globalSubrBuffers, - this.localSubrBuffers, - this.nominalWidthX, - this.version, - this.itemVariationStore, - this.FVar, - this.AVar); + public void RenderTo(IGlyphRenderer renderer, Vector2 origin, Vector2 scale, Vector2 offset, Matrix3x2 transform) + { + using var engine = new CffEvaluationEngine( + this.charStrings, + this.globalSubrBuffers, + this.localSubrBuffers, + this.nominalWidthX, + this.version, + this.itemVariationStore, + this.FVar, + this.AVar); - engine.RenderTo(renderer, origin, scale, offset, transform); - } + engine.RenderTo(renderer, origin, scale, offset, transform); } -} \ No newline at end of file +} diff --git a/src/SixLabors.Fonts/Tables/Cff/CffOperator.cs b/src/SixLabors.Fonts/Tables/Cff/CffOperator.cs index f74aa5f02..e207e3fa7 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffOperator.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffOperator.cs @@ -4,114 +4,113 @@ using System; using System.Collections.Generic; -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +internal sealed class CFFOperator { - internal sealed class CFFOperator + private static readonly Lazy> RegisteredOperators = new(() => CreateDictionary()); + private readonly byte b0; + private readonly byte b1; + private readonly OperatorOperandKind operatorOperandKind; + + // b0 the first byte of a two byte value + // b1 the second byte of a two byte value + private CFFOperator(string name, byte b0, byte b1, OperatorOperandKind operatorOperandKind) + { + this.b0 = b0; + this.b1 = b1; + this.Name = name; + this.operatorOperandKind = operatorOperandKind; + } + + public string Name { get; } + + public static CFFOperator GetOperatorByKey(byte b0, byte b1) + { + RegisteredOperators.Value.TryGetValue((b1 << 8) | b0, out CFFOperator? found); + return found!; + } + + private static Dictionary CreateDictionary() { - private static readonly Lazy> RegisteredOperators = new(() => CreateDictionary()); - private readonly byte b0; - private readonly byte b1; - private readonly OperatorOperandKind operatorOperandKind; - - // b0 the first byte of a two byte value - // b1 the second byte of a two byte value - private CFFOperator(string name, byte b0, byte b1, OperatorOperandKind operatorOperandKind) - { - this.b0 = b0; - this.b1 = b1; - this.Name = name; - this.operatorOperandKind = operatorOperandKind; - } - - public string Name { get; } - - public static CFFOperator GetOperatorByKey(byte b0, byte b1) - { - RegisteredOperators.Value.TryGetValue((b1 << 8) | b0, out CFFOperator? found); - return found!; - } - - private static Dictionary CreateDictionary() - { - Dictionary dictionary = new(); - - // Table 9: Top DICT Operator Entries - Register(dictionary, 0, "version", OperatorOperandKind.SID); - Register(dictionary, 1, "Notice", OperatorOperandKind.SID); - Register(dictionary, 12, 0, "Copyright", OperatorOperandKind.SID); - Register(dictionary, 2, "FullName", OperatorOperandKind.SID); - Register(dictionary, 3, "FamilyName", OperatorOperandKind.SID); - Register(dictionary, 4, "Weight", OperatorOperandKind.SID); - Register(dictionary, 12, 1, "isFixedPitch", OperatorOperandKind.Boolean); - Register(dictionary, 12, 2, "ItalicAngle", OperatorOperandKind.Number); - Register(dictionary, 12, 3, "UnderlinePosition", OperatorOperandKind.Number); - Register(dictionary, 12, 4, "UnderlineThickness", OperatorOperandKind.Number); - Register(dictionary, 12, 5, "PaintType", OperatorOperandKind.Number); - Register(dictionary, 12, 6, "CharstringType", OperatorOperandKind.Number); // default value 2 - Register(dictionary, 12, 7, "FontMatrix", OperatorOperandKind.Array); - Register(dictionary, 13, "UniqueID", OperatorOperandKind.Number); - Register(dictionary, 5, "FontBBox", OperatorOperandKind.Array); - Register(dictionary, 12, 8, "StrokeWidth", OperatorOperandKind.Number); - Register(dictionary, 14, "XUID", OperatorOperandKind.Array); - Register(dictionary, 15, "charset", OperatorOperandKind.Number); - Register(dictionary, 16, "Encoding", OperatorOperandKind.Number); - Register(dictionary, 17, "CharStrings", OperatorOperandKind.Number); - Register(dictionary, 18, "Private", OperatorOperandKind.NumberNumber); - Register(dictionary, 12, 20, "SyntheticBase", OperatorOperandKind.Number); - Register(dictionary, 12, 21, "PostScript", OperatorOperandKind.SID); - Register(dictionary, 12, 22, "BaseFontName", OperatorOperandKind.SID); - Register(dictionary, 12, 23, "BaseFontBlend", OperatorOperandKind.SID); - - // Table 10: CIDFont Operator Extensions - Register(dictionary, 12, 30, "ROS", OperatorOperandKind.SID_SID_Number); - Register(dictionary, 12, 31, "CIDFontVersion", OperatorOperandKind.Number); - Register(dictionary, 12, 32, "CIDFontRevision", OperatorOperandKind.Number); - Register(dictionary, 12, 33, "CIDFontType", OperatorOperandKind.Number); - Register(dictionary, 12, 34, "CIDCount", OperatorOperandKind.Number); - Register(dictionary, 12, 35, "UIDBase", OperatorOperandKind.Number); - Register(dictionary, 12, 36, "FDArray", OperatorOperandKind.Number); - Register(dictionary, 12, 37, "FDSelect", OperatorOperandKind.Number); - Register(dictionary, 12, 38, "FontName", OperatorOperandKind.SID); - - // Table 23: Private DICT Operators - Register(dictionary, 6, "BlueValues", OperatorOperandKind.Delta); - Register(dictionary, 7, "OtherBlues", OperatorOperandKind.Delta); - Register(dictionary, 8, "FamilyBlues", OperatorOperandKind.Delta); - Register(dictionary, 9, "FamilyOtherBlues", OperatorOperandKind.Delta); - Register(dictionary, 12, 9, "BlueScale", OperatorOperandKind.Number); - Register(dictionary, 12, 10, "BlueShift", OperatorOperandKind.Number); - Register(dictionary, 12, 11, "BlueFuzz", OperatorOperandKind.Number); - Register(dictionary, 10, "StdHW", OperatorOperandKind.Number); - Register(dictionary, 11, "StdVW", OperatorOperandKind.Number); - Register(dictionary, 12, 12, "StemSnapH", OperatorOperandKind.Delta); - Register(dictionary, 12, 13, "StemSnapV", OperatorOperandKind.Delta); - Register(dictionary, 12, 14, "ForceBold", OperatorOperandKind.Boolean); - - // reserved 12 15//https://typekit.files.wordpress.com/2013/05/5176.cff.pdf - // reserved 12 16//https://typekit.files.wordpress.com/2013/05/5176.cff.pdf - Register(dictionary, 12, 17, "LanguageGroup", OperatorOperandKind.Number); // https://typekit.files.wordpress.com/2013/05/5176.cff.pdf - Register(dictionary, 12, 18, "ExpansionFactor", OperatorOperandKind.Number); // https://typekit.files.wordpress.com/2013/05/5176.cff.pdf - Register(dictionary, 12, 19, "initialRandomSeed", OperatorOperandKind.Number); // https://typekit.files.wordpress.com/2013/05/5176.cff.pdf - - Register(dictionary, 19, "Subrs", OperatorOperandKind.Number); - Register(dictionary, 20, "defaultWidthX", OperatorOperandKind.Number); - Register(dictionary, 21, "nominalWidthX", OperatorOperandKind.Number); - - Register(dictionary, 22, "vsindex", OperatorOperandKind.Number); - Register(dictionary, 23, "blend", OperatorOperandKind.Number); - Register(dictionary, 24, "vstore", OperatorOperandKind.Number); - - return dictionary; - } - - private static void Register(Dictionary dictionary, byte b0, byte b1, string operatorName, OperatorOperandKind opopKind) - => dictionary.Add((b1 << 8) | b0, new CFFOperator(operatorName, b0, b1, opopKind)); - - private static void Register(Dictionary dictionary, byte b0, string operatorName, OperatorOperandKind opopKind) - => dictionary.Add(b0, new CFFOperator(operatorName, b0, 0, opopKind)); + Dictionary dictionary = new(); + + // Table 9: Top DICT Operator Entries + Register(dictionary, 0, "version", OperatorOperandKind.SID); + Register(dictionary, 1, "Notice", OperatorOperandKind.SID); + Register(dictionary, 12, 0, "Copyright", OperatorOperandKind.SID); + Register(dictionary, 2, "FullName", OperatorOperandKind.SID); + Register(dictionary, 3, "FamilyName", OperatorOperandKind.SID); + Register(dictionary, 4, "Weight", OperatorOperandKind.SID); + Register(dictionary, 12, 1, "isFixedPitch", OperatorOperandKind.Boolean); + Register(dictionary, 12, 2, "ItalicAngle", OperatorOperandKind.Number); + Register(dictionary, 12, 3, "UnderlinePosition", OperatorOperandKind.Number); + Register(dictionary, 12, 4, "UnderlineThickness", OperatorOperandKind.Number); + Register(dictionary, 12, 5, "PaintType", OperatorOperandKind.Number); + Register(dictionary, 12, 6, "CharstringType", OperatorOperandKind.Number); // default value 2 + Register(dictionary, 12, 7, "FontMatrix", OperatorOperandKind.Array); + Register(dictionary, 13, "UniqueID", OperatorOperandKind.Number); + Register(dictionary, 5, "FontBBox", OperatorOperandKind.Array); + Register(dictionary, 12, 8, "StrokeWidth", OperatorOperandKind.Number); + Register(dictionary, 14, "XUID", OperatorOperandKind.Array); + Register(dictionary, 15, "charset", OperatorOperandKind.Number); + Register(dictionary, 16, "Encoding", OperatorOperandKind.Number); + Register(dictionary, 17, "CharStrings", OperatorOperandKind.Number); + Register(dictionary, 18, "Private", OperatorOperandKind.NumberNumber); + Register(dictionary, 12, 20, "SyntheticBase", OperatorOperandKind.Number); + Register(dictionary, 12, 21, "PostScript", OperatorOperandKind.SID); + Register(dictionary, 12, 22, "BaseFontName", OperatorOperandKind.SID); + Register(dictionary, 12, 23, "BaseFontBlend", OperatorOperandKind.SID); + + // Table 10: CIDFont Operator Extensions + Register(dictionary, 12, 30, "ROS", OperatorOperandKind.SID_SID_Number); + Register(dictionary, 12, 31, "CIDFontVersion", OperatorOperandKind.Number); + Register(dictionary, 12, 32, "CIDFontRevision", OperatorOperandKind.Number); + Register(dictionary, 12, 33, "CIDFontType", OperatorOperandKind.Number); + Register(dictionary, 12, 34, "CIDCount", OperatorOperandKind.Number); + Register(dictionary, 12, 35, "UIDBase", OperatorOperandKind.Number); + Register(dictionary, 12, 36, "FDArray", OperatorOperandKind.Number); + Register(dictionary, 12, 37, "FDSelect", OperatorOperandKind.Number); + Register(dictionary, 12, 38, "FontName", OperatorOperandKind.SID); + + // Table 23: Private DICT Operators + Register(dictionary, 6, "BlueValues", OperatorOperandKind.Delta); + Register(dictionary, 7, "OtherBlues", OperatorOperandKind.Delta); + Register(dictionary, 8, "FamilyBlues", OperatorOperandKind.Delta); + Register(dictionary, 9, "FamilyOtherBlues", OperatorOperandKind.Delta); + Register(dictionary, 12, 9, "BlueScale", OperatorOperandKind.Number); + Register(dictionary, 12, 10, "BlueShift", OperatorOperandKind.Number); + Register(dictionary, 12, 11, "BlueFuzz", OperatorOperandKind.Number); + Register(dictionary, 10, "StdHW", OperatorOperandKind.Number); + Register(dictionary, 11, "StdVW", OperatorOperandKind.Number); + Register(dictionary, 12, 12, "StemSnapH", OperatorOperandKind.Delta); + Register(dictionary, 12, 13, "StemSnapV", OperatorOperandKind.Delta); + Register(dictionary, 12, 14, "ForceBold", OperatorOperandKind.Boolean); + + // reserved 12 15//https://typekit.files.wordpress.com/2013/05/5176.cff.pdf + // reserved 12 16//https://typekit.files.wordpress.com/2013/05/5176.cff.pdf + Register(dictionary, 12, 17, "LanguageGroup", OperatorOperandKind.Number); // https://typekit.files.wordpress.com/2013/05/5176.cff.pdf + Register(dictionary, 12, 18, "ExpansionFactor", OperatorOperandKind.Number); // https://typekit.files.wordpress.com/2013/05/5176.cff.pdf + Register(dictionary, 12, 19, "initialRandomSeed", OperatorOperandKind.Number); // https://typekit.files.wordpress.com/2013/05/5176.cff.pdf + + Register(dictionary, 19, "Subrs", OperatorOperandKind.Number); + Register(dictionary, 20, "defaultWidthX", OperatorOperandKind.Number); + Register(dictionary, 21, "nominalWidthX", OperatorOperandKind.Number); + + Register(dictionary, 22, "vsindex", OperatorOperandKind.Number); + Register(dictionary, 23, "blend", OperatorOperandKind.Number); + Register(dictionary, 24, "vstore", OperatorOperandKind.Number); + + return dictionary; + } + + private static void Register(Dictionary dictionary, byte b0, byte b1, string operatorName, OperatorOperandKind opopKind) + => dictionary.Add((b1 << 8) | b0, new CFFOperator(operatorName, b0, b1, opopKind)); + + private static void Register(Dictionary dictionary, byte b0, string operatorName, OperatorOperandKind opopKind) + => dictionary.Add(b0, new CFFOperator(operatorName, b0, 0, opopKind)); #if DEBUG - public override string ToString() => this.Name; + public override string ToString() => this.Name; #endif - } -} \ No newline at end of file +} diff --git a/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs b/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs index 6cbb2f347..25a0a3ce1 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs @@ -1,444 +1,441 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. -using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Text; -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +internal abstract class CffParserBase { - internal abstract class CffParserBase - { - private readonly StringBuilder pooledStringBuilder = new(); + private readonly StringBuilder pooledStringBuilder = new(); - protected void ReadFdSelect(BigEndianBinaryReader reader, long offset, CidFontInfo cidFontInfo) + protected static void ReadFdSelect(BigEndianBinaryReader reader, long offset, CidFontInfo cidFontInfo) + { + if (cidFontInfo.FDSelect is 0) { - if (cidFontInfo.FDSelect is 0) - { - return; - } + return; + } - reader.BaseStream.Position = offset + cidFontInfo.FDSelect; - switch (reader.ReadByte()) + reader.BaseStream.Position = offset + cidFontInfo.FDSelect; + switch (reader.ReadByte()) + { + case 0: { - case 0: + cidFontInfo.FdSelectFormat = 0; + for (int i = 0; i < cidFontInfo.CIDFountCount; i++) { - cidFontInfo.FdSelectFormat = 0; - for (int i = 0; i < cidFontInfo.CIDFountCount; i++) - { - cidFontInfo.FdSelectMap[i] = reader.ReadByte(); - } - - break; + cidFontInfo.FdSelectMap[i] = reader.ReadByte(); } - case 3: - { - cidFontInfo.FdSelectFormat = 3; - ushort nRanges = reader.ReadUInt16(); - var ranges = new FDRange[nRanges + 1]; + break; + } - cidFontInfo.FdSelectFormat = 3; - cidFontInfo.FdRanges = ranges; - for (int i = 0; i < nRanges; ++i) - { - ranges[i] = new FDRange(reader.ReadUInt16(), reader.ReadByte()); - } + case 3: + { + cidFontInfo.FdSelectFormat = 3; + ushort nRanges = reader.ReadUInt16(); + FDRange[] ranges = new FDRange[nRanges + 1]; - ranges[nRanges] = new FDRange(reader.ReadUInt16(), 0); // sentinel - break; + cidFontInfo.FdSelectFormat = 3; + cidFontInfo.FdRanges = ranges; + for (int i = 0; i < nRanges; ++i) + { + ranges[i] = new FDRange(reader.ReadUInt16(), reader.ReadByte()); } - case 4: - { - cidFontInfo.FdSelectFormat = 4; - uint nRanges = reader.ReadUInt32(); - var ranges = new FDRange[nRanges + 1]; + ranges[nRanges] = new FDRange(reader.ReadUInt16(), 0); // sentinel + break; + } - cidFontInfo.FdSelectFormat = 3; - cidFontInfo.FdRanges = ranges; - for (int i = 0; i < nRanges; ++i) - { - ranges[i] = new FDRange(reader.ReadUInt32(), reader.ReadUInt16()); - } + case 4: + { + cidFontInfo.FdSelectFormat = 4; + uint nRanges = reader.ReadUInt32(); + FDRange[] ranges = new FDRange[nRanges + 1]; - ranges[nRanges] = new FDRange(reader.ReadUInt32(), 0); // sentinel - break; + cidFontInfo.FdSelectFormat = 3; + cidFontInfo.FdRanges = ranges; + for (int i = 0; i < nRanges; ++i) + { + ranges[i] = new FDRange(reader.ReadUInt32(), reader.ReadUInt16()); } - default: - throw new NotSupportedException("Only FD Select format 0, 3 and 4 are supported"); + ranges[nRanges] = new FDRange(reader.ReadUInt32(), 0); // sentinel + break; } + + default: + throw new NotSupportedException("Only FD Select format 0, 3 and 4 are supported"); } + } - protected FontDict[] ReadFdArray(BigEndianBinaryReader reader, long offset, long fdArrayOffset) + protected FontDict[] ReadFdArray(BigEndianBinaryReader reader, long offset, long fdArrayOffset) + { + if (fdArrayOffset is 0) { - if (fdArrayOffset is 0) - { - return Array.Empty(); - } + return Array.Empty(); + } - reader.BaseStream.Position = offset + fdArrayOffset; + reader.BaseStream.Position = offset + fdArrayOffset; - if (!this.TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) - { - return Array.Empty(); - } + if (!TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) + { + return Array.Empty(); + } - var fontDicts = new FontDict[offsets.Length]; - for (int i = 0; i < fontDicts.Length; ++i) - { - // Read DICT data. - List dic = this.ReadDictData(reader, offsets[i].Length); + FontDict[] fontDicts = new FontDict[offsets.Length]; + for (int i = 0; i < fontDicts.Length; ++i) + { + // Read DICT data. + List dic = this.ReadDictData(reader, offsets[i].Length); - // translate - int fontDictsOffset = 0; - int size = 0; - int name = 0; + // translate + int fontDictsOffset = 0; + int size = 0; + int name = 0; - foreach (CffDataDicEntry entry in dic) + foreach (CffDataDicEntry entry in dic) + { + switch (entry.Operator.Name) { - switch (entry.Operator.Name) - { - default: - throw new NotSupportedException(); - case "FontName": - name = (int)entry.Operands[0].RealNumValue; - break; - case "Private": // private dic - size = (int)entry.Operands[0].RealNumValue; - fontDictsOffset = (int)entry.Operands[1].RealNumValue; - break; - } + default: + throw new NotSupportedException(); + case "FontName": + name = (int)entry.Operands[0].RealNumValue; + break; + case "Private": // private dic + size = (int)entry.Operands[0].RealNumValue; + fontDictsOffset = (int)entry.Operands[1].RealNumValue; + break; } - - fontDicts[i] = new FontDict(name, size, fontDictsOffset); } - foreach (FontDict fdict in fontDicts) - { - reader.BaseStream.Position = offset + fdict.PrivateDicOffset; + fontDicts[i] = new FontDict(name, size, fontDictsOffset); + } + + foreach (FontDict fdict in fontDicts) + { + reader.BaseStream.Position = offset + fdict.PrivateDicOffset; - List dicData = this.ReadDictData(reader, fdict.PrivateDicSize); + List dicData = this.ReadDictData(reader, fdict.PrivateDicSize); - if (dicData.Count > 0) + if (dicData.Count > 0) + { + // Interpret the values of private dict. + foreach (CffDataDicEntry dicEntry in dicData) { - // Interpret the values of private dict. - foreach (CffDataDicEntry dicEntry in dicData) + switch (dicEntry.Operator.Name) { - switch (dicEntry.Operator.Name) - { - case "Subrs": - int localSubrsOffset = (int)dicEntry.Operands[0].RealNumValue; - reader.BaseStream.Position = offset + fdict.PrivateDicOffset + localSubrsOffset; - fdict.LocalSubr = this.ReadSubrBuffer(reader); - break; - - case "defaultWidthX": - case "nominalWidthX": - break; - } + case "Subrs": + int localSubrsOffset = (int)dicEntry.Operands[0].RealNumValue; + reader.BaseStream.Position = offset + fdict.PrivateDicOffset + localSubrsOffset; + fdict.LocalSubr = ReadSubrBuffer(reader); + break; + + case "defaultWidthX": + case "nominalWidthX": + break; } } } - - return fontDicts; } - protected CffDataDicEntry ReadEntry(BigEndianBinaryReader reader) + return fontDicts; + } + + protected CffDataDicEntry ReadEntry(BigEndianBinaryReader reader) + { + List operands = new(); + + //----------------------------- + // An operator is preceded by the operand(s) that + // specify its value. + //-------------------------------- + + //----------------------------- + // Operators and operands may be distinguished by inspection of + // their first byte: + // 0–21 specify operators and + // 28, 29, 30, and 32–254 specify operands(numbers). + // Byte values 22–27, 31, and 255 are reserved. + + // An operator may be preceded by up to a maximum of 48 operands + CFFOperator? @operator; + while (true) { - List operands = new(); - - //----------------------------- - // An operator is preceded by the operand(s) that - // specify its value. - //-------------------------------- - - //----------------------------- - // Operators and operands may be distinguished by inspection of - // their first byte: - // 0–21 specify operators and - // 28, 29, 30, and 32–254 specify operands(numbers). - // Byte values 22–27, 31, and 255 are reserved. - - // An operator may be preceded by up to a maximum of 48 operands - CFFOperator? @operator; - while (true) - { - byte b0 = reader.ReadUInt8(); + byte b0 = reader.ReadUInt8(); - if (b0 is >= 0 and <= 24) - { - // operators - @operator = this.ReadOperator(reader, b0); - break; // **break after found operator - } - else if (b0 is 28 or 29) - { - int num = this.ReadIntegerNumber(reader, b0); - operands.Add(new CffOperand(num, OperandKind.IntNumber)); - } - else if (b0 == 30) - { - double num = this.ReadRealNumber(reader); - operands.Add(new CffOperand(num, OperandKind.RealNumber)); - } - else if (b0 is >= 32 and <= 254) - { - int num = this.ReadIntegerNumber(reader, b0); - operands.Add(new CffOperand(num, OperandKind.IntNumber)); - } - else - { - throw new NotSupportedException("invalid DICT data b0 byte: " + b0); - } + if (b0 is >= 0 and <= 24) + { + // operators + @operator = ReadOperator(reader, b0); + break; // **break after found operator } - - // I'm fairly confident that the operator can never be null. - return new CffDataDicEntry(@operator!, operands.ToArray()); - } - - protected bool TryReadIndexDataOffsets(BigEndianBinaryReader reader, [NotNullWhen(true)] out CffIndexOffset[]? value) - { - // INDEX Data - // An INDEX is an array of variable-sized objects.It comprises a - // header, an offset array, and object data. - // The offset array specifies offsets within the object data. - // An object is retrieved by - // indexing the offset array and fetching the object at the - // specified offset. - // The object’s length can be determined by subtracting its offset - // from the next offset in the offset array. - // An additional offset is added at the end of the offset array so the - // length of the last object may be determined. - // The INDEX format is shown in Table 7 - - // Table 7 INDEX Format - // Type Name Description - // Card16 count Number of objects stored in INDEX - // OffSize offSize Offset array element size - // Offset offset[count + 1] Offset array(from byte preceding object data) - // Card8 data[] Object data - - // Offsets in the offset array are relative to the byte that precedes - // the object data. Therefore the first element of the offset array - // is always 1. (This ensures that every object has a corresponding - // offset which is always nonzero and permits the efficient - // implementation of dynamic object loading.) - - // An empty INDEX is represented by a count field with a 0 value - // and no additional fields.Thus, the total size of an empty INDEX - // is 2 bytes. - - // Note 2 - // An INDEX may be skipped by jumping to the offset specified by the last - // element of the offset array - ushort count = reader.ReadUInt16(); - if (count == 0) + else if (b0 is 28 or 29) { - value = null; - return false; + int num = ReadIntegerNumber(reader, b0); + operands.Add(new CffOperand(num, OperandKind.IntNumber)); } - - int offSize = reader.ReadByte(); - int[] offsets = new int[count + 1]; - var indexElems = new CffIndexOffset[count]; - for (int i = 0; i <= count; ++i) + else if (b0 == 30) { - offsets[i] = reader.ReadOffset(offSize); + double num = this.ReadRealNumber(reader); + operands.Add(new CffOperand(num, OperandKind.RealNumber)); } - - for (int i = 0; i < count; ++i) + else if (b0 is >= 32 and <= 254) { - indexElems[i] = new CffIndexOffset(offsets[i], offsets[i + 1] - offsets[i]); + int num = ReadIntegerNumber(reader, b0); + operands.Add(new CffOperand(num, OperandKind.IntNumber)); } - - value = indexElems; - return true; - } - - protected byte[][] ReadSubrBuffer(BigEndianBinaryReader reader) - { - if (!this.TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) + else { - return Array.Empty(); + throw new NotSupportedException("invalid DICT data b0 byte: " + b0); } + } - byte[][] rawBufferList = new byte[offsets.Length][]; + // I'm fairly confident that the operator can never be null. + return new CffDataDicEntry(@operator!, operands.ToArray()); + } - for (int i = 0; i < rawBufferList.Length; ++i) - { - CffIndexOffset offset = offsets[i]; - rawBufferList[i] = reader.ReadBytes(offset.Length); - } + protected static bool TryReadIndexDataOffsets(BigEndianBinaryReader reader, [NotNullWhen(true)] out CffIndexOffset[]? value) + { + // INDEX Data + // An INDEX is an array of variable-sized objects.It comprises a + // header, an offset array, and object data. + // The offset array specifies offsets within the object data. + // An object is retrieved by + // indexing the offset array and fetching the object at the + // specified offset. + // The object’s length can be determined by subtracting its offset + // from the next offset in the offset array. + // An additional offset is added at the end of the offset array so the + // length of the last object may be determined. + // The INDEX format is shown in Table 7 + + // Table 7 INDEX Format + // Type Name Description + // Card16 count Number of objects stored in INDEX + // OffSize offSize Offset array element size + // Offset offset[count + 1] Offset array(from byte preceding object data) + // Card8 data[] Object data + + // Offsets in the offset array are relative to the byte that precedes + // the object data. Therefore the first element of the offset array + // is always 1. (This ensures that every object has a corresponding + // offset which is always nonzero and permits the efficient + // implementation of dynamic object loading.) + + // An empty INDEX is represented by a count field with a 0 value + // and no additional fields.Thus, the total size of an empty INDEX + // is 2 bytes. + + // Note 2 + // An INDEX may be skipped by jumping to the offset specified by the last + // element of the offset array + ushort count = reader.ReadUInt16(); + if (count == 0) + { + value = null; + return false; + } - return rawBufferList; + int offSize = reader.ReadByte(); + int[] offsets = new int[count + 1]; + CffIndexOffset[] indexElems = new CffIndexOffset[count]; + for (int i = 0; i <= count; ++i) + { + offsets[i] = reader.ReadOffset(offSize); } - protected List ReadDictData(BigEndianBinaryReader reader, int length) + for (int i = 0; i < count; ++i) { - // 4. DICT Data - - // Font dictionary data comprising key-value pairs is represented - // in a compact tokenized format that is similar to that used to - // represent Type 1 charstrings. - - // Dictionary keys are encoded as 1- or 2-byte operators and dictionary values are encoded as - // variable-size numeric operands that represent either integer or - // real values. - - //----------------------------- - // A DICT is simply a sequence of - // operand(s)/operator bytes concatenated together. - int maxIndex = (int)(reader.BaseStream.Position + length); - List dicData = new(); - while (reader.BaseStream.Position < maxIndex) - { - CffDataDicEntry dicEntry = this.ReadEntry(reader); - dicData.Add(dicEntry); - } + indexElems[i] = new CffIndexOffset(offsets[i], offsets[i + 1] - offsets[i]); + } - return dicData; + value = indexElems; + return true; + } + + protected static byte[][] ReadSubrBuffer(BigEndianBinaryReader reader) + { + if (!TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) + { + return Array.Empty(); } - private CFFOperator ReadOperator(BigEndianBinaryReader reader, byte b0) + byte[][] rawBufferList = new byte[offsets.Length][]; + + for (int i = 0; i < rawBufferList.Length; ++i) { - // Read operator key. - byte b1 = 0; - if (b0 == 12) - { - // 2 bytes - b1 = reader.ReadUInt8(); - } + CffIndexOffset offset = offsets[i]; + rawBufferList[i] = reader.ReadBytes(offset.Length); + } + + return rawBufferList; + } - // Get registered operator by its key. - return CFFOperator.GetOperatorByKey(b0, b1); + protected List ReadDictData(BigEndianBinaryReader reader, int length) + { + // 4. DICT Data + + // Font dictionary data comprising key-value pairs is represented + // in a compact tokenized format that is similar to that used to + // represent Type 1 charstrings. + + // Dictionary keys are encoded as 1- or 2-byte operators and dictionary values are encoded as + // variable-size numeric operands that represent either integer or + // real values. + + //----------------------------- + // A DICT is simply a sequence of + // operand(s)/operator bytes concatenated together. + int maxIndex = (int)(reader.BaseStream.Position + length); + List dicData = new(); + while (reader.BaseStream.Position < maxIndex) + { + CffDataDicEntry dicEntry = this.ReadEntry(reader); + dicData.Add(dicEntry); } - private double ReadRealNumber(BigEndianBinaryReader reader) + return dicData; + } + + private static CFFOperator ReadOperator(BigEndianBinaryReader reader, byte b0) + { + // Read operator key. + byte b1 = 0; + if (b0 == 12) { - // from https://typekit.files.wordpress.com/2013/05/5176.cff.pdf - // A real number operand is provided in addition to integer - // operands.This operand begins with a byte value of 30 followed - // by a variable-length sequence of bytes.Each byte is composed - // of two 4 - bit nibbles asdefined in Table 5. - - // The first nibble of a - // pair is stored in the most significant 4 bits of a byte and the - // second nibble of a pair is stored in the least significant 4 bits of a byte - StringBuilder sb = this.pooledStringBuilder; - sb.Clear(); // reset - - bool done = false; - bool exponentMissing = false; - while (!done) - { - int b = reader.ReadByte(); + // 2 bytes + b1 = reader.ReadUInt8(); + } - int nb_0 = (b >> 4) & 0xf; - int nb_1 = b & 0xf; + // Get registered operator by its key. + return CFFOperator.GetOperatorByKey(b0, b1); + } - for (int i = 0; !done && i < 2; ++i) - { - int nibble = (i == 0) ? nb_0 : nb_1; + private double ReadRealNumber(BigEndianBinaryReader reader) + { + // from https://typekit.files.wordpress.com/2013/05/5176.cff.pdf + // A real number operand is provided in addition to integer + // operands.This operand begins with a byte value of 30 followed + // by a variable-length sequence of bytes.Each byte is composed + // of two 4 - bit nibbles asdefined in Table 5. + + // The first nibble of a + // pair is stored in the most significant 4 bits of a byte and the + // second nibble of a pair is stored in the least significant 4 bits of a byte + StringBuilder sb = this.pooledStringBuilder; + sb.Clear(); // reset + + bool done = false; + bool exponentMissing = false; + while (!done) + { + int b = reader.ReadByte(); - switch (nibble) - { - case 0x0: - case 0x1: - case 0x2: - case 0x3: - case 0x4: - case 0x5: - case 0x6: - case 0x7: - case 0x8: - case 0x9: - sb.Append(nibble); - exponentMissing = false; - break; - case 0xa: - sb.Append("."); - break; - case 0xb: - sb.Append("E"); - exponentMissing = true; - break; - case 0xc: - sb.Append("E-"); - exponentMissing = true; - break; - case 0xd: - break; - case 0xe: - sb.Append("-"); - break; - case 0xf: - done = true; - break; - default: - throw new Exception("IllegalArgumentException"); - } - } - } + int nb_0 = (b >> 4) & 0xf; + int nb_1 = b & 0xf; - if (exponentMissing) + for (int i = 0; !done && i < 2; ++i) { - // the exponent is missing, just append "0" to avoid an exception - // not sure if 0 is the correct value, but it seems to fit - // see PDFBOX-1522 - sb.Append("0"); - } + int nibble = (i == 0) ? nb_0 : nb_1; - if (sb.Length == 0) - { - return 0d; + switch (nibble) + { + case 0x0: + case 0x1: + case 0x2: + case 0x3: + case 0x4: + case 0x5: + case 0x6: + case 0x7: + case 0x8: + case 0x9: + sb.Append(nibble); + exponentMissing = false; + break; + case 0xa: + sb.Append('.'); + break; + case 0xb: + sb.Append('E'); + exponentMissing = true; + break; + case 0xc: + sb.Append("E-"); + exponentMissing = true; + break; + case 0xd: + break; + case 0xe: + sb.Append('-'); + break; + case 0xf: + done = true; + break; + default: + throw new FontException("Unable to read real number."); + } } + } - if (!double.TryParse( - sb.ToString(), - NumberStyles.Number | NumberStyles.AllowExponent, - CultureInfo.InvariantCulture, - out double value)) - { - throw new NotSupportedException(); - } + if (exponentMissing) + { + // the exponent is missing, just append "0" to avoid an exception + // not sure if 0 is the correct value, but it seems to fit + // see PDFBOX-1522 + sb.Append('0'); + } - return value; + if (sb.Length == 0) + { + return 0d; } - private int ReadIntegerNumber(BigEndianBinaryReader reader, byte b0) + if (!double.TryParse( + sb.ToString(), + NumberStyles.Number | NumberStyles.AllowExponent, + CultureInfo.InvariantCulture, + out double value)) { - if (b0 == 28) - { - return reader.ReadInt16(); - } + throw new NotSupportedException(); + } - if (b0 == 29) - { - return reader.ReadInt32(); - } + return value; + } - if (b0 is >= 32 and <= 246) - { - return b0 - 139; - } + private static int ReadIntegerNumber(BigEndianBinaryReader reader, byte b0) + { + if (b0 == 28) + { + return reader.ReadInt16(); + } - if (b0 is >= 247 and <= 250) - { - int b1 = reader.ReadByte(); - return ((b0 - 247) * 256) + b1 + 108; - } + if (b0 == 29) + { + return reader.ReadInt32(); + } - if (b0 is >= 251 and <= 254) - { - int b1 = reader.ReadByte(); - return (-(b0 - 251) * 256) - b1 - 108; - } + if (b0 is >= 32 and <= 246) + { + return b0 - 139; + } - throw new InvalidFontFileException("Invalid DICT data b0 byte: " + b0); + if (b0 is >= 247 and <= 250) + { + int b1 = reader.ReadByte(); + return ((b0 - 247) * 256) + b1 + 108; } + + if (b0 is >= 251 and <= 254) + { + int b1 = reader.ReadByte(); + return (-(b0 - 251) * 256) - b1 - 108; + } + + throw new InvalidFontFileException("Invalid DICT data b0 byte: " + b0); } } diff --git a/src/SixLabors.Fonts/Tables/Cff/CffPrivateDictionary.cs b/src/SixLabors.Fonts/Tables/Cff/CffPrivateDictionary.cs index 29097d1ec..95b4152a1 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffPrivateDictionary.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffPrivateDictionary.cs @@ -1,21 +1,20 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +internal class CffPrivateDictionary { - internal class CffPrivateDictionary + public CffPrivateDictionary(byte[][]? localSubrRawBuffers, int defaultWidthX, int nominalWidthX) { - public CffPrivateDictionary(byte[][]? localSubrRawBuffers, int defaultWidthX, int nominalWidthX) - { - this.LocalSubrRawBuffers = localSubrRawBuffers; - this.DefaultWidthX = defaultWidthX; - this.NominalWidthX = nominalWidthX; - } + this.LocalSubrRawBuffers = localSubrRawBuffers; + this.DefaultWidthX = defaultWidthX; + this.NominalWidthX = nominalWidthX; + } - public byte[][]? LocalSubrRawBuffers { get; set; } + public byte[][]? LocalSubrRawBuffers { get; set; } - public int DefaultWidthX { get; set; } + public int DefaultWidthX { get; set; } - public int NominalWidthX { get; set; } - } -} \ No newline at end of file + public int NominalWidthX { get; set; } +} diff --git a/src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs b/src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs index 4785da924..92ef82fc4 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs @@ -4,31 +4,30 @@ using System; using System.Collections.Generic; -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +internal class CidFontInfo { - internal class CidFontInfo - { - public string? ROS_Register { get; set; } + public string? ROS_Register { get; set; } - public string? ROS_Ordering { get; set; } + public string? ROS_Ordering { get; set; } - public string? ROS_Supplement { get; set; } + public string? ROS_Supplement { get; set; } - public double CIDFontVersion { get; set; } + public double CIDFontVersion { get; set; } - public int CIDFountCount { get; set; } + public int CIDFountCount { get; set; } - public int FDSelect { get; set; } + public int FDSelect { get; set; } - public int FDArray { get; set; } + public int FDArray { get; set; } - public int FdSelectFormat { get; set; } + public int FdSelectFormat { get; set; } - public FDRange[] FdRanges { get; set; } = Array.Empty(); + public FDRange[] FdRanges { get; set; } = Array.Empty(); - /// - /// Gets or sets the fd select map, which maps glyph # to font #. - /// - public Dictionary FdSelectMap { get; set; } = new(); - } -} \ No newline at end of file + /// + /// Gets or sets the fd select map, which maps glyph # to font #. + /// + public Dictionary FdSelectMap { get; set; } = new(); +} diff --git a/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs b/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs index eb1169390..c8485329f 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs @@ -9,80 +9,79 @@ using SixLabors.Fonts.Tables.General.Name; using SixLabors.Fonts.Tables.General.Post; -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +internal sealed class CompactFontTables : IFontTables { - internal sealed class CompactFontTables : IFontTables + public CompactFontTables( + CMapTable cmap, + HeadTable head, + HorizontalHeadTable hhea, + HorizontalMetricsTable htmx, + MaximumProfileTable maxp, + NameTable name, + OS2Table os2, + PostTable post, + ICffTable cff) { - public CompactFontTables( - CMapTable cmap, - HeadTable head, - HorizontalHeadTable hhea, - HorizontalMetricsTable htmx, - MaximumProfileTable maxp, - NameTable name, - OS2Table os2, - PostTable post, - ICffTable cff) - { - this.Cmap = cmap; - this.Head = head; - this.Hhea = hhea; - this.Htmx = htmx; - this.Maxp = maxp; - this.Name = name; - this.Os2 = os2; - this.Post = post; - this.Cff = cff; - } + this.Cmap = cmap; + this.Head = head; + this.Hhea = hhea; + this.Htmx = htmx; + this.Maxp = maxp; + this.Name = name; + this.Os2 = os2; + this.Post = post; + this.Cff = cff; + } - public CMapTable Cmap { get; set; } + public CMapTable Cmap { get; set; } - public HeadTable Head { get; set; } + public HeadTable Head { get; set; } - public HorizontalHeadTable Hhea { get; set; } + public HorizontalHeadTable Hhea { get; set; } - public HorizontalMetricsTable Htmx { get; set; } + public HorizontalMetricsTable Htmx { get; set; } - public MaximumProfileTable Maxp { get; set; } + public MaximumProfileTable Maxp { get; set; } - public NameTable Name { get; set; } + public NameTable Name { get; set; } - public OS2Table Os2 { get; set; } + public OS2Table Os2 { get; set; } - public PostTable Post { get; set; } + public PostTable Post { get; set; } - public GlyphDefinitionTable? Gdef { get; set; } + public GlyphDefinitionTable? Gdef { get; set; } - public GSubTable? GSub { get; set; } + public GSubTable? GSub { get; set; } - public GPosTable? GPos { get; set; } + public GPosTable? GPos { get; set; } - public ColrTable? Colr { get; set; } + public ColrTable? Colr { get; set; } - public CpalTable? Cpal { get; set; } + public CpalTable? Cpal { get; set; } - public KerningTable? Kern { get; set; } + public KerningTable? Kern { get; set; } - public VerticalHeadTable? Vhea { get; set; } + public VerticalHeadTable? Vhea { get; set; } - public VerticalMetricsTable? Vmtx { get; set; } + public VerticalMetricsTable? Vmtx { get; set; } - public FVarTable? FVar { get; set; } + public FVarTable? FVar { get; set; } - public AVarTable? AVar { get; set; } + public AVarTable? AVar { get; set; } - public GVarTable? GVar { get; set; } + public GVarTable? GVar { get; set; } - // Tables Related to CFF Outlines - // +------+----------------------------------+ - // | Tag | Name | - // +======+==================================+ - // | CFF | Compact Font Format 1.0 | - // +------+----------------------------------+ - // | CFF2 | Compact Font Format 2.0 | - // +------+----------------------------------+ - // | VORG | Vertical Origin (optional table) | - // +------+----------------------------------+ - public ICffTable Cff { get; set; } - } -} \ No newline at end of file + // Tables Related to CFF Outlines + // +------+----------------------------------+ + // | Tag | Name | + // +======+==================================+ + // | CFF | Compact Font Format 1.0 | + // +------+----------------------------------+ + // | CFF2 | Compact Font Format 2.0 | + // +------+----------------------------------+ + // | VORG | Vertical Origin (optional table) | + // +------+----------------------------------+ + public ICffTable Cff { get; set; } +} diff --git a/src/SixLabors.Fonts/Tables/Cff/FDRange.cs b/src/SixLabors.Fonts/Tables/Cff/FDRange.cs index 63740a19b..b5fc1f0d7 100644 --- a/src/SixLabors.Fonts/Tables/Cff/FDRange.cs +++ b/src/SixLabors.Fonts/Tables/Cff/FDRange.cs @@ -1,35 +1,34 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +/// +/// Represents an element in an font dictionary array. +/// +internal readonly struct FDRange { - /// - /// Represents an element in an font dictionary array. - /// - internal readonly struct FDRange + public FDRange(ushort first, byte fontDictionary) { - public FDRange(ushort first, byte fontDictionary) - { - this.First = first; - this.FontDictionary = fontDictionary; - } + this.First = first; + this.FontDictionary = fontDictionary; + } - public FDRange(uint first, ushort fontDictionary) - { - this.First = first; - this.FontDictionary = fontDictionary; - } + public FDRange(uint first, ushort fontDictionary) + { + this.First = first; + this.FontDictionary = fontDictionary; + } - /// - /// Gets the first glyph index in range. - /// - public uint First { get; } + /// + /// Gets the first glyph index in range. + /// + public uint First { get; } - /// - /// Gets the font dictionary index for all glyphs in range. - /// - public ushort FontDictionary { get; } + /// + /// Gets the font dictionary index for all glyphs in range. + /// + public ushort FontDictionary { get; } - public override string ToString() => $"First {this.First}, Dictionary {this.FontDictionary}."; - } -} \ No newline at end of file + public override string ToString() => $"First {this.First}, Dictionary {this.FontDictionary}."; +} diff --git a/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs b/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs index ef4fb05bc..fde0f568c 100644 --- a/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs +++ b/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs @@ -4,84 +4,83 @@ using System; using System.Collections.Generic; -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +internal struct FDRangeProvider { - internal struct FDRangeProvider + // helper class + private readonly int format; + private readonly FDRange[] ranges; + private readonly Dictionary fdSelectMap; + private uint currentGlyphIndex; + private uint endGlyphIndexMax; + private FDRange currentRange; + private int currentSelectedRangeIndex; + + public FDRangeProvider(CidFontInfo cidFontInfo) { - // helper class - private readonly int format; - private readonly FDRange[] ranges; - private readonly Dictionary fdSelectMap; - private uint currentGlyphIndex; - private uint endGlyphIndexMax; - private FDRange currentRange; - private int currentSelectedRangeIndex; + this.format = cidFontInfo.FdSelectFormat; + this.ranges = cidFontInfo.FdRanges; + this.fdSelectMap = cidFontInfo.FdSelectMap; + this.currentGlyphIndex = 0; + this.currentSelectedRangeIndex = 0; - public FDRangeProvider(CidFontInfo cidFontInfo) + if (this.ranges.Length is not 0) { - this.format = cidFontInfo.FdSelectFormat; - this.ranges = cidFontInfo.FdRanges; - this.fdSelectMap = cidFontInfo.FdSelectMap; - this.currentGlyphIndex = 0; - this.currentSelectedRangeIndex = 0; - - if (this.ranges.Length is not 0) - { - this.currentRange = this.ranges[0]; - this.endGlyphIndexMax = this.ranges[1].First; - } - else - { - // empty - this.currentRange = default; - this.endGlyphIndexMax = 0; - } - - this.SelectedFDArray = 0; + this.currentRange = this.ranges[0]; + this.endGlyphIndexMax = this.ranges[1].First; + } + else + { + // empty + this.currentRange = default; + this.endGlyphIndexMax = 0; } - public ushort SelectedFDArray { get; private set; } + this.SelectedFDArray = 0; + } + + public ushort SelectedFDArray { get; private set; } - public void SetCurrentGlyphIndex(ushort index) + public void SetCurrentGlyphIndex(ushort index) + { + switch (this.format) { - switch (this.format) - { - case 0: - this.currentGlyphIndex = this.fdSelectMap[index]; - break; + case 0: + this.currentGlyphIndex = this.fdSelectMap[index]; + break; - case 3: - case 4: - // Find proper range for selected index. + case 3: + case 4: + // Find proper range for selected index. + if (index >= this.currentRange.First && index < this.endGlyphIndexMax) + { + // Ok, in current range. + this.SelectedFDArray = this.currentRange.FontDictionary; + } + else + { + // Move to next range. + this.currentSelectedRangeIndex++; + this.currentRange = this.ranges[this.currentSelectedRangeIndex]; + + this.endGlyphIndexMax = this.ranges[this.currentSelectedRangeIndex + 1].First; if (index >= this.currentRange.First && index < this.endGlyphIndexMax) { - // Ok, in current range. this.SelectedFDArray = this.currentRange.FontDictionary; } else { - // Move to next range. - this.currentSelectedRangeIndex++; - this.currentRange = this.ranges[this.currentSelectedRangeIndex]; - - this.endGlyphIndexMax = this.ranges[this.currentSelectedRangeIndex + 1].First; - if (index >= this.currentRange.First && index < this.endGlyphIndexMax) - { - this.SelectedFDArray = this.currentRange.FontDictionary; - } - else - { - throw new NotSupportedException(); - } + throw new NotSupportedException(); } + } - this.currentGlyphIndex = index; + this.currentGlyphIndex = index; - break; + break; - default: - throw new NotSupportedException(); - } + default: + throw new NotSupportedException(); } } -} \ No newline at end of file +} diff --git a/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs b/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs index 68f5035b9..9ff1a9b85 100644 --- a/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs +++ b/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs @@ -3,35 +3,34 @@ using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +/// +/// Defines a common interface for CFF1 and CFF2 tables. +/// +internal interface ICffTable { /// - /// Defines a common interface for CFF1 and CFF2 tables. + /// Gets the number of glyphs in the table. /// - internal interface ICffTable + int GlyphCount { - /// - /// Gets the number of glyphs in the table. - /// - int GlyphCount - { - get; - } - - /// - /// Gets the item variation store. - /// - /// The item variation store. If CFF1, there is no variations and null will be returned instead. - ItemVariationStore? ItemVariationStore - { - get; - } + get; + } - /// - /// Gets the glyph data at the given index. - /// - /// The glyph index. - /// The . - CffGlyphData GetGlyph(int index); + /// + /// Gets the item variation store. + /// + /// The item variation store. If CFF1, there is no variations and null will be returned instead. + ItemVariationStore? ItemVariationStore + { + get; } -} \ No newline at end of file + + /// + /// Gets the glyph data at the given index. + /// + /// The glyph index. + /// The . + CffGlyphData GetGlyph(int index); +} diff --git a/src/SixLabors.Fonts/Tables/Cff/Type2Operator1.cs b/src/SixLabors.Fonts/Tables/Cff/Type2Operator1.cs index 25b622ed6..3aca0b2e3 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Type2Operator1.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Type2Operator1.cs @@ -1,42 +1,41 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.Fonts.Tables.Cff +namespace SixLabors.Fonts.Tables.Cff; + +internal enum Type2Operator1 : byte { - internal enum Type2Operator1 : byte - { - // Appendix A Type 2 Charstring Command Codes - Reserved0_ = 0, - Hstem, // 1 - Reserved2_, // 2 - Vstem, // 3 - Vmoveto, // 4 - Rlineto, // 5 - Hlineto, // 6 - Vlineto, // 7, - Rrcurveto, // 8 - Reserved9_, // 9 - Callsubr, // 10 - Return, // 11 - Escape, // 12 - Reserved13_, - Endchar, // 14 - VsIndex, - Blend, - Reserved17_, - Hstemhm, // 18 - Hintmask, // 19 - Cntrmask, // 20 - Rmoveto, // 21 - Hmoveto, // 22 - Vstemhm, // 23 - Rcurveline, // 24 - Rlinecurve, // 25 - Vvcurveto, // 26 - Hhcurveto, // 27 - Shortint, // 28 - Callgsubr, // 29 - Vhcurveto, // 30 - Hvcurveto, // 31 - } -} \ No newline at end of file + // Appendix A Type 2 Charstring Command Codes + Reserved0_ = 0, + Hstem, // 1 + Reserved2_, // 2 + Vstem, // 3 + Vmoveto, // 4 + Rlineto, // 5 + Hlineto, // 6 + Vlineto, // 7, + Rrcurveto, // 8 + Reserved9_, // 9 + Callsubr, // 10 + Return, // 11 + Escape, // 12 + Reserved13_, + Endchar, // 14 + VsIndex, + Blend, + Reserved17_, + Hstemhm, // 18 + Hintmask, // 19 + Cntrmask, // 20 + Rmoveto, // 21 + Hmoveto, // 22 + Vstemhm, // 23 + Rcurveline, // 24 + Rlinecurve, // 25 + Vvcurveto, // 26 + Hhcurveto, // 27 + Shortint, // 28 + Callgsubr, // 29 + Vhcurveto, // 30 + Hvcurveto, // 31 +} diff --git a/src/SixLabors.Fonts/Tables/General/HeadTable.cs b/src/SixLabors.Fonts/Tables/General/HeadTable.cs index 333f6b94d..b87237a85 100644 --- a/src/SixLabors.Fonts/Tables/General/HeadTable.cs +++ b/src/SixLabors.Fonts/Tables/General/HeadTable.cs @@ -3,218 +3,217 @@ using System; -namespace SixLabors.Fonts.Tables.General +namespace SixLabors.Fonts.Tables.General; + +internal class HeadTable : Table { - internal class HeadTable : Table + internal const string TableName = "head"; + + public HeadTable( + HeadFlags flags, + HeadMacStyle macStyle, + ushort unitsPerEm, + DateTime created, + DateTime modified, + Bounds bounds, + ushort lowestRecPPEM, + IndexLocationFormats indexToLocFormat) { - internal const string TableName = "head"; - - public HeadTable( - HeadFlags flags, - HeadMacStyle macStyle, - ushort unitsPerEm, - DateTime created, - DateTime modified, - Bounds bounds, - ushort lowestRecPPEM, - IndexLocationFormats indexToLocFormat) - { - this.Flags = flags; - this.MacStyle = macStyle; - this.UnitsPerEm = unitsPerEm; - this.Created = created; - this.Modified = modified; - this.Bounds = bounds; - this.LowestRecPPEM = lowestRecPPEM; - this.IndexLocationFormat = indexToLocFormat; - } + this.Flags = flags; + this.MacStyle = macStyle; + this.UnitsPerEm = unitsPerEm; + this.Created = created; + this.Modified = modified; + this.Bounds = bounds; + this.LowestRecPPEM = lowestRecPPEM; + this.IndexLocationFormat = indexToLocFormat; + } - internal enum IndexLocationFormats : short - { - Offset16 = 0, - Offset32 = 1, - } + internal enum IndexLocationFormats : short + { + Offset16 = 0, + Offset32 = 1, + } - [Flags] - internal enum HeadFlags : ushort - { - // Bit 0: Baseline for font at y = 0; - // Bit 1: Left sidebearing point at x = 0(relevant only for TrueType rasterizers) — see the note below regarding variable fonts; - // Bit 2: Instructions may depend on point size; - // Bit 3: Force ppem to integer values for all internal scaler math; may use fractional ppem sizes if this bit is clear; - // Bit 4: Instructions may alter advance width(the advance widths might not scale linearly); - // Bit 5: This bit is not used in OpenType, and should not be set in order to ensure compatible behavior on all platforms.If set, it may result in different behavior for vertical layout in some platforms. (See Apple's specification for details regarding behavior in Apple platforms.) - // Bits 6–10: These bits are not used in Opentype and should always be cleared. (See Apple's specification for details regarding legacy used in Apple platforms.) - // Bit 11: Font data is ‘lossless’ as a results of having been subjected to optimizing transformation and/or compression (such as e.g.compression mechanisms defined by ISO/IEC 14496-18, MicroType Express, WOFF 2.0 or similar) where the original font functionality and features are retained but the binary compatibility between input and output font files is not guaranteed.As a result of the applied transform, the ‘DSIG’ Table may also be invalidated. - // Bit 12: Font converted (produce compatible metrics) - // Bit 13: Font optimized for ClearType™. Note, fonts that rely on embedded bitmaps (EBDT) for rendering should not be considered optimized for ClearType, and therefore should keep this bit cleared. - // Bit 14: Last Resort font.If set, indicates that the glyphs encoded in the cmap subtables are simply generic symbolic representations of code point ranges and don’t truly represent support for those code points.If unset, indicates that the glyphs encoded in the cmap subtables represent proper support for those code points. - // Bit 15: Reserved, set to 0 - None = 0, - BaselineY0 = 1 << 0, - LeftSidebearingPointAtX0 = 1 << 1, - InstructionDependOnPointSize = 1 << 2, - ForcePPEMToInt = 1 << 3, - InstructionAlterAdvancedWidth = 1 << 4, - - // 1<<5 not used - // 1<<6 - 1<<10 not used - FontDataLossLess = 1 << 11, - FontConverted = 1 << 12, - OptimizedForClearType = 1 << 13, - LastResortFont = 1 << 14, - } + [Flags] + internal enum HeadFlags : ushort + { + // Bit 0: Baseline for font at y = 0; + // Bit 1: Left sidebearing point at x = 0(relevant only for TrueType rasterizers) — see the note below regarding variable fonts; + // Bit 2: Instructions may depend on point size; + // Bit 3: Force ppem to integer values for all internal scaler math; may use fractional ppem sizes if this bit is clear; + // Bit 4: Instructions may alter advance width(the advance widths might not scale linearly); + // Bit 5: This bit is not used in OpenType, and should not be set in order to ensure compatible behavior on all platforms.If set, it may result in different behavior for vertical layout in some platforms. (See Apple's specification for details regarding behavior in Apple platforms.) + // Bits 6–10: These bits are not used in Opentype and should always be cleared. (See Apple's specification for details regarding legacy used in Apple platforms.) + // Bit 11: Font data is ‘lossless’ as a results of having been subjected to optimizing transformation and/or compression (such as e.g.compression mechanisms defined by ISO/IEC 14496-18, MicroType Express, WOFF 2.0 or similar) where the original font functionality and features are retained but the binary compatibility between input and output font files is not guaranteed.As a result of the applied transform, the ‘DSIG’ Table may also be invalidated. + // Bit 12: Font converted (produce compatible metrics) + // Bit 13: Font optimized for ClearType™. Note, fonts that rely on embedded bitmaps (EBDT) for rendering should not be considered optimized for ClearType, and therefore should keep this bit cleared. + // Bit 14: Last Resort font.If set, indicates that the glyphs encoded in the cmap subtables are simply generic symbolic representations of code point ranges and don’t truly represent support for those code points.If unset, indicates that the glyphs encoded in the cmap subtables represent proper support for those code points. + // Bit 15: Reserved, set to 0 + None = 0, + BaselineY0 = 1 << 0, + LeftSidebearingPointAtX0 = 1 << 1, + InstructionDependOnPointSize = 1 << 2, + ForcePPEMToInt = 1 << 3, + InstructionAlterAdvancedWidth = 1 << 4, + + // 1<<5 not used + // 1<<6 - 1<<10 not used + FontDataLossLess = 1 << 11, + FontConverted = 1 << 12, + OptimizedForClearType = 1 << 13, + LastResortFont = 1 << 14, + } - [Flags] - internal enum HeadMacStyle : ushort - { - // Bit 0: Bold (if set to 1); - // Bit 1: Italic(if set to 1) - // Bit 2: Underline(if set to 1) - // Bit 3: Outline(if set to 1) - // Bit 4: Shadow(if set to 1) - // Bit 5: Condensed(if set to 1) - // Bit 6: Extended(if set to 1) - // Bits 7–15: Reserved(set to 0). - None = 0, - Bold = 1 << 0, - Italic = 1 << 1, - Underline = 1 << 2, - Outline = 1 << 3, - Shadow = 1 << 4, - Condensed = 1 << 5, - Extended = 1 << 6, - } + [Flags] + internal enum HeadMacStyle : ushort + { + // Bit 0: Bold (if set to 1); + // Bit 1: Italic(if set to 1) + // Bit 2: Underline(if set to 1) + // Bit 3: Outline(if set to 1) + // Bit 4: Shadow(if set to 1) + // Bit 5: Condensed(if set to 1) + // Bit 6: Extended(if set to 1) + // Bits 7–15: Reserved(set to 0). + None = 0, + Bold = 1 << 0, + Italic = 1 << 1, + Underline = 1 << 2, + Outline = 1 << 3, + Shadow = 1 << 4, + Condensed = 1 << 5, + Extended = 1 << 6, + } - public DateTime Created { get; } + public DateTime Created { get; } - public HeadFlags Flags { get; } + public HeadFlags Flags { get; } - public IndexLocationFormats IndexLocationFormat { get; } + public IndexLocationFormats IndexLocationFormat { get; } - public ushort LowestRecPPEM { get; } + public ushort LowestRecPPEM { get; } - public HeadMacStyle MacStyle { get; } + public HeadMacStyle MacStyle { get; } - public DateTime Modified { get; } + public DateTime Modified { get; } - public Bounds Bounds { get; } + public Bounds Bounds { get; } - public ushort UnitsPerEm { get; } + public ushort UnitsPerEm { get; } - public static HeadTable? Load(FontReader fontReader) + public static HeadTable? Load(FontReader fontReader) + { + if (!fontReader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) + { + return null; + } + + using (binaryReader) + { + return Load(binaryReader); + } + } + + public static HeadTable Load(BigEndianBinaryReader reader) + { + // Type | Name | Description + // -------------|--------------------|---------------------------------------------------------------------------------------------------- + // uint16 | majorVersion | Major version number of the font header table — set to 1. + // uint16 | minorVersion | Minor version number of the font header table — set to 0. + // Fixed | fontRevision | Set by font manufacturer. + // uint32 | checkSumAdjustment | To compute: set it to 0, sum the entire font as uint32, then store 0xB1B0AFBA - sum.If the font is used as a component in a font collection file, the value of this field will be invalidated by changes to the file structure and font table directory, and must be ignored. + // uint32 | magicNumber | Set to 0x5F0F3CF5. + // uint16 | flags | Bit 0: Baseline for font at y = 0; + // Bit 1: Left sidebearing point at x = 0(relevant only for TrueType rasterizers) — see the note below regarding variable fonts; + // Bit 2: Instructions may depend on point size; + // Bit 3: Force ppem to integer values for all internal scaler math; may use fractional ppem sizes if this bit is clear; + // Bit 4: Instructions may alter advance width(the advance widths might not scale linearly); + // Bit 5: This bit is not used in OpenType, and should not be set in order to ensure compatible behavior on all platforms.If set, it may result in different behavior for vertical layout in some platforms. (See Apple's specification for details regarding behavior in Apple platforms.) + // Bits 6–10: These bits are not used in Opentype and should always be cleared. (See Apple's specification for details regarding legacy used in Apple platforms.) + // Bit 11: Font data is ‘lossless’ as a results of having been subjected to optimizing transformation and/or compression (such as e.g.compression mechanisms defined by ISO/IEC 14496-18, MicroType Express, WOFF 2.0 or similar) where the original font functionality and features are retained but the binary compatibility between input and output font files is not guaranteed.As a result of the applied transform, the ‘DSIG’ Table may also be invalidated. + // Bit 12: Font converted (produce compatible metrics) + // Bit 13: Font optimized for ClearType™. Note, fonts that rely on embedded bitmaps (EBDT) for rendering should not be considered optimized for ClearType, and therefore should keep this bit cleared. + // Bit 14: Last Resort font.If set, indicates that the glyphs encoded in the cmap subtables are simply generic symbolic representations of code point ranges and don’t truly represent support for those code points.If unset, indicates that the glyphs encoded in the cmap subtables represent proper support for those code points. + // Bit 15: Reserved, set to 0 + // uint16 | unitsPerEm | Valid range is from 16 to 16384. This value should be a power of 2 for fonts that have TrueType outlines. + // LONGDATETIME | created | Number of seconds since 12:00 midnight that started January 1st 1904 in GMT/UTC time zone. 64-bit integer + // LONGDATETIME | modified | Number of seconds since 12:00 midnight that started January 1st 1904 in GMT/UTC time zone. 64-bit integer + // int16 | xMin | For all glyph bounding boxes. + // int16 | yMin | For all glyph bounding boxes. + // int16 | xMax | For all glyph bounding boxes. + // int16 | yMax | For all glyph bounding boxes. + // uint16 | macStyle | Bit 0: Bold (if set to 1); + // Bit 1: Italic(if set to 1) + // Bit 2: Underline(if set to 1) + // Bit 3: Outline(if set to 1) + // Bit 4: Shadow(if set to 1) + // Bit 5: Condensed(if set to 1) + // Bit 6: Extended(if set to 1) + // Bits 7–15: Reserved(set to 0). + // uint16 | lowestRecPPEM | Smallest readable size in pixels. + // int16 | fontDirectionHint | Deprecated(Set to 2). + // 0: Fully mixed directional glyphs; + // 1: Only strongly left to right; + // 2: Like 1 but also contains neutrals; + // -1: Only strongly right to left; + // -2: Like -1 but also contains neutrals. 1 + // int16 | indexToLocFormat | 0 for short offsets (Offset16), 1 for long (Offset32). + // int16 | glyphDataFormat | 0 for current format. + ushort majorVersion = reader.ReadUInt16(); + ushort minorVersion = reader.ReadUInt16(); + uint fontRevision = reader.ReadUInt32(); + uint checkSumAdjustment = reader.ReadUInt32(); + uint magicNumber = reader.ReadUInt32(); + if (magicNumber != 0x5F0F3CF5) + { + throw new InvalidFontFileException("invalid magic number in 'head'"); + } + + HeadFlags flags = reader.ReadUInt16(); + ushort unitsPerEm = reader.ReadUInt16(); + if (unitsPerEm < 16 || unitsPerEm > 16384) { - if (!fontReader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) - { - return null; - } - - using (binaryReader) - { - return Load(binaryReader); - } + throw new InvalidFontFileException($"invalid units per em expected value between 16 and 16384 but found {unitsPerEm} in 'head'"); } - public static HeadTable Load(BigEndianBinaryReader reader) + var startDate = new DateTime(1904, 01, 01, 0, 0, 0, DateTimeKind.Utc); + long seconds = reader.ReadInt64(); + DateTime created = startDate; + if (seconds > 0) { - // Type | Name | Description - // -------------|--------------------|---------------------------------------------------------------------------------------------------- - // uint16 | majorVersion | Major version number of the font header table — set to 1. - // uint16 | minorVersion | Minor version number of the font header table — set to 0. - // Fixed | fontRevision | Set by font manufacturer. - // uint32 | checkSumAdjustment | To compute: set it to 0, sum the entire font as uint32, then store 0xB1B0AFBA - sum.If the font is used as a component in a font collection file, the value of this field will be invalidated by changes to the file structure and font table directory, and must be ignored. - // uint32 | magicNumber | Set to 0x5F0F3CF5. - // uint16 | flags | Bit 0: Baseline for font at y = 0; - // Bit 1: Left sidebearing point at x = 0(relevant only for TrueType rasterizers) — see the note below regarding variable fonts; - // Bit 2: Instructions may depend on point size; - // Bit 3: Force ppem to integer values for all internal scaler math; may use fractional ppem sizes if this bit is clear; - // Bit 4: Instructions may alter advance width(the advance widths might not scale linearly); - // Bit 5: This bit is not used in OpenType, and should not be set in order to ensure compatible behavior on all platforms.If set, it may result in different behavior for vertical layout in some platforms. (See Apple's specification for details regarding behavior in Apple platforms.) - // Bits 6–10: These bits are not used in Opentype and should always be cleared. (See Apple's specification for details regarding legacy used in Apple platforms.) - // Bit 11: Font data is ‘lossless’ as a results of having been subjected to optimizing transformation and/or compression (such as e.g.compression mechanisms defined by ISO/IEC 14496-18, MicroType Express, WOFF 2.0 or similar) where the original font functionality and features are retained but the binary compatibility between input and output font files is not guaranteed.As a result of the applied transform, the ‘DSIG’ Table may also be invalidated. - // Bit 12: Font converted (produce compatible metrics) - // Bit 13: Font optimized for ClearType™. Note, fonts that rely on embedded bitmaps (EBDT) for rendering should not be considered optimized for ClearType, and therefore should keep this bit cleared. - // Bit 14: Last Resort font.If set, indicates that the glyphs encoded in the cmap subtables are simply generic symbolic representations of code point ranges and don’t truly represent support for those code points.If unset, indicates that the glyphs encoded in the cmap subtables represent proper support for those code points. - // Bit 15: Reserved, set to 0 - // uint16 | unitsPerEm | Valid range is from 16 to 16384. This value should be a power of 2 for fonts that have TrueType outlines. - // LONGDATETIME | created | Number of seconds since 12:00 midnight that started January 1st 1904 in GMT/UTC time zone. 64-bit integer - // LONGDATETIME | modified | Number of seconds since 12:00 midnight that started January 1st 1904 in GMT/UTC time zone. 64-bit integer - // int16 | xMin | For all glyph bounding boxes. - // int16 | yMin | For all glyph bounding boxes. - // int16 | xMax | For all glyph bounding boxes. - // int16 | yMax | For all glyph bounding boxes. - // uint16 | macStyle | Bit 0: Bold (if set to 1); - // Bit 1: Italic(if set to 1) - // Bit 2: Underline(if set to 1) - // Bit 3: Outline(if set to 1) - // Bit 4: Shadow(if set to 1) - // Bit 5: Condensed(if set to 1) - // Bit 6: Extended(if set to 1) - // Bits 7–15: Reserved(set to 0). - // uint16 | lowestRecPPEM | Smallest readable size in pixels. - // int16 | fontDirectionHint | Deprecated(Set to 2). - // 0: Fully mixed directional glyphs; - // 1: Only strongly left to right; - // 2: Like 1 but also contains neutrals; - // -1: Only strongly right to left; - // -2: Like -1 but also contains neutrals. 1 - // int16 | indexToLocFormat | 0 for short offsets (Offset16), 1 for long (Offset32). - // int16 | glyphDataFormat | 0 for current format. - ushort majorVersion = reader.ReadUInt16(); - ushort minorVersion = reader.ReadUInt16(); - uint fontRevision = reader.ReadUInt32(); - uint checkSumAdjustment = reader.ReadUInt32(); - uint magicNumber = reader.ReadUInt32(); - if (magicNumber != 0x5F0F3CF5) - { - throw new InvalidFontFileException("invalid magic number in 'head'"); - } - - HeadFlags flags = reader.ReadUInt16(); - ushort unitsPerEm = reader.ReadUInt16(); - if (unitsPerEm < 16 || unitsPerEm > 16384) - { - throw new InvalidFontFileException($"invalid units per em expected value between 16 and 16384 but found {unitsPerEm} in 'head'"); - } - - var startDate = new DateTime(1904, 01, 01, 0, 0, 0, DateTimeKind.Utc); - long seconds = reader.ReadInt64(); - DateTime created = startDate; - if (seconds > 0) - { - // Clear upper 32 bits, some fonts seem to have a non-zero upper 32 bits, like "C:\\Windows/Fonts\\cityb___.ttf" - // The max date for UInt32.MaxValue seconds is {06/02/2040 06:28:15}, which should be plenty for the time being. - seconds &= 0x00000000ffffffff; - created = startDate.AddSeconds(seconds); - } - - seconds = reader.ReadInt64(); - DateTime modified = startDate; - if (seconds > 0) - { - // Clear upper 32 bits, some fonts seem to have a non-zero upper 32 bits, like "C:\\Windows/Fonts\\cityb___.ttf" - // The max date for UInt32.MaxValue seconds is {06/02/2040 06:28:15}, which should be plenty for the time being. - seconds &= 0x00000000ffffffff; - modified = startDate.AddSeconds(seconds); - } - - var bounds = Bounds.Load(reader); // xMin, yMin, xMax, yMax - - HeadMacStyle macStyle = reader.ReadUInt16(); - ushort lowestRecPPEM = reader.ReadUInt16(); - short fontDirectionHint = reader.ReadInt16(); - IndexLocationFormats indexToLocFormat = reader.ReadInt16(); - short glyphDataFormat = reader.ReadInt16(); - - return new HeadTable( - flags, - macStyle, - unitsPerEm, - created, - modified, - bounds, - lowestRecPPEM, - indexToLocFormat); + // Clear upper 32 bits, some fonts seem to have a non-zero upper 32 bits, like "C:\\Windows/Fonts\\cityb___.ttf" + // The max date for UInt32.MaxValue seconds is {06/02/2040 06:28:15}, which should be plenty for the time being. + seconds &= 0x00000000ffffffff; + created = startDate.AddSeconds(seconds); } + + seconds = reader.ReadInt64(); + DateTime modified = startDate; + if (seconds > 0) + { + // Clear upper 32 bits, some fonts seem to have a non-zero upper 32 bits, like "C:\\Windows/Fonts\\cityb___.ttf" + // The max date for UInt32.MaxValue seconds is {06/02/2040 06:28:15}, which should be plenty for the time being. + seconds &= 0x00000000ffffffff; + modified = startDate.AddSeconds(seconds); + } + + var bounds = Bounds.Load(reader); // xMin, yMin, xMax, yMax + + HeadMacStyle macStyle = reader.ReadUInt16(); + ushort lowestRecPPEM = reader.ReadUInt16(); + short fontDirectionHint = reader.ReadInt16(); + IndexLocationFormats indexToLocFormat = reader.ReadInt16(); + short glyphDataFormat = reader.ReadInt16(); + + return new HeadTable( + flags, + macStyle, + unitsPerEm, + created, + modified, + bounds, + lowestRecPPEM, + indexToLocFormat); } -} \ No newline at end of file +} diff --git a/src/SixLabors.Fonts/Tables/TableLoader.cs b/src/SixLabors.Fonts/Tables/TableLoader.cs index ec477e6f5..686ad340d 100644 --- a/src/SixLabors.Fonts/Tables/TableLoader.cs +++ b/src/SixLabors.Fonts/Tables/TableLoader.cs @@ -1,8 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System; -using System.Collections.Generic; using SixLabors.Fonts.Tables.AdvancedTypographic; using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Tables.Cff; @@ -15,96 +13,95 @@ using SixLabors.Fonts.Tables.TrueType.Glyphs; using SixLabors.Fonts.Tables.TrueType.Hinting; -namespace SixLabors.Fonts.Tables +namespace SixLabors.Fonts.Tables; + +internal class TableLoader { - internal class TableLoader - { - private readonly Dictionary> loaders = new(); - private readonly Dictionary types = new(); - private readonly Dictionary> typesLoaders = new(); + private readonly Dictionary> loaders = new(); + private readonly Dictionary types = new(); + private readonly Dictionary> typesLoaders = new(); - public TableLoader() - { - // We will hard code mapping registration in here for all the tables - this.Register(NameTable.TableName, NameTable.Load); - this.Register(CMapTable.TableName, CMapTable.Load); - this.Register(HeadTable.TableName, HeadTable.Load); - this.Register(HorizontalHeadTable.TableName, HorizontalHeadTable.Load); - this.Register(HorizontalMetricsTable.TableName, HorizontalMetricsTable.Load); - this.Register(VerticalHeadTable.TableName, VerticalHeadTable.Load); - this.Register(VerticalMetricsTable.TableName, VerticalMetricsTable.Load); - this.Register(MaximumProfileTable.TableName, MaximumProfileTable.Load); - this.Register(OS2Table.TableName, OS2Table.Load); - this.Register(IndexLocationTable.TableName, IndexLocationTable.Load); - this.Register(GlyphTable.TableName, GlyphTable.Load); - this.Register(KerningTable.TableName, KerningTable.Load); - this.Register(ColrTable.TableName, ColrTable.Load); - this.Register(CpalTable.TableName, CpalTable.Load); - this.Register(GPosTable.TableName, GPosTable.Load); - this.Register(GSubTable.TableName, GSubTable.Load); - this.Register(CvtTable.TableName, CvtTable.Load); - this.Register(FpgmTable.TableName, FpgmTable.Load); - this.Register(PrepTable.TableName, PrepTable.Load); - this.Register(GlyphDefinitionTable.TableName, GlyphDefinitionTable.Load); - this.Register(PostTable.TableName, PostTable.Load); - this.Register(Cff1Table.TableName, Cff1Table.Load); - this.Register(Cff2Table.TableName, Cff2Table.Load); - this.Register(AVarTable.TableName, AVarTable.Load); - this.Register(GVarTable.TableName, GVarTable.Load); - this.Register(FVarTable.TableName, FVarTable.Load); - this.Register(HVarTable.TableName, HVarTable.Load); - } + public TableLoader() + { + // We will hard code mapping registration in here for all the tables + this.Register(NameTable.TableName, NameTable.Load); + this.Register(CMapTable.TableName, CMapTable.Load); + this.Register(HeadTable.TableName, HeadTable.Load); + this.Register(HorizontalHeadTable.TableName, HorizontalHeadTable.Load); + this.Register(HorizontalMetricsTable.TableName, HorizontalMetricsTable.Load); + this.Register(VerticalHeadTable.TableName, VerticalHeadTable.Load); + this.Register(VerticalMetricsTable.TableName, VerticalMetricsTable.Load); + this.Register(MaximumProfileTable.TableName, MaximumProfileTable.Load); + this.Register(OS2Table.TableName, OS2Table.Load); + this.Register(IndexLocationTable.TableName, IndexLocationTable.Load); + this.Register(GlyphTable.TableName, GlyphTable.Load); + this.Register(KerningTable.TableName, KerningTable.Load); + this.Register(ColrTable.TableName, ColrTable.Load); + this.Register(CpalTable.TableName, CpalTable.Load); + this.Register(GPosTable.TableName, GPosTable.Load); + this.Register(GSubTable.TableName, GSubTable.Load); + this.Register(CvtTable.TableName, CvtTable.Load); + this.Register(FpgmTable.TableName, FpgmTable.Load); + this.Register(PrepTable.TableName, PrepTable.Load); + this.Register(GlyphDefinitionTable.TableName, GlyphDefinitionTable.Load); + this.Register(PostTable.TableName, PostTable.Load); + this.Register(Cff1Table.TableName, Cff1Table.Load); + this.Register(Cff2Table.TableName, Cff2Table.Load); + this.Register(AVarTable.TableName, AVarTable.Load); + this.Register(GVarTable.TableName, GVarTable.Load); + this.Register(FVarTable.TableName, FVarTable.Load); + this.Register(HVarTable.TableName, HVarTable.Load); + } - public static TableLoader Default { get; } = new(); + public static TableLoader Default { get; } = new(); - public string? GetTag(Type type) - { - this.types.TryGetValue(type, out string? value); + public string? GetTag(Type type) + { + this.types.TryGetValue(type, out string? value); - return value; - } + return value; + } - public string GetTag() - { - this.types.TryGetValue(typeof(TType), out string? value); - return value!; - } + public string GetTag() + { + this.types.TryGetValue(typeof(TType), out string? value); + return value!; + } - internal IEnumerable RegisteredTypes() => this.types.Keys; + internal IEnumerable RegisteredTypes() => this.types.Keys; - internal IEnumerable RegisteredTags() => this.types.Values; + internal IEnumerable RegisteredTags() => this.types.Values; - private void Register(string tag, Func createFunc) - where T : Table + private void Register(string tag, Func createFunc) + where T : Table + { + lock (this.loaders) { - lock (this.loaders) + if (!this.loaders.ContainsKey(tag)) { - if (!this.loaders.ContainsKey(tag)) - { - this.loaders.Add(tag, createFunc); - this.types.Add(typeof(T), tag); - this.typesLoaders.Add(typeof(T), createFunc); - } + this.loaders.Add(tag, createFunc); + this.types.Add(typeof(T), tag); + this.typesLoaders.Add(typeof(T), createFunc); } } + } - internal Table? Load(string tag, FontReader reader) + internal Table? Load(string tag, FontReader reader) - // loader missing? register an unknown type loader and carry on - => this.loaders.TryGetValue(tag, out Func? func) - ? func.Invoke(reader) - : new UnknownTable(tag); + // loader missing? register an unknown type loader and carry on + => this.loaders.TryGetValue(tag, out Func? func) + ? func.Invoke(reader) + : new UnknownTable(tag); - internal TTable? Load(FontReader reader) - where TTable : Table + internal TTable? Load(FontReader reader) + where TTable : Table + { + // loader missing register an unknown type loader and carry on + if (this.typesLoaders.TryGetValue(typeof(TTable), out Func? func)) { - // loader missing register an unknown type loader and carry on - if (this.typesLoaders.TryGetValue(typeof(TTable), out Func? func)) - { - return (TTable?)func.Invoke(reader); - } - - throw new Exception("Font table not registered."); + return (TTable?)func.Invoke(reader); } + + throw new MissingFontTableException("Font table not registered.", nameof(TTable)); } -} \ No newline at end of file +} diff --git a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphLoader.cs b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphLoader.cs index 245e4d643..001b23ad8 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphLoader.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphLoader.cs @@ -1,23 +1,22 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.Fonts.Tables.TrueType.Glyphs +namespace SixLabors.Fonts.Tables.TrueType.Glyphs; + +internal abstract class GlyphLoader { - internal abstract class GlyphLoader + public abstract GlyphVector CreateGlyph(GlyphTable table); + + public static GlyphLoader Load(BigEndianBinaryReader reader) { - public abstract GlyphVector CreateGlyph(GlyphTable table); + short contoursCount = reader.ReadInt16(); + var bounds = Bounds.Load(reader); - public static GlyphLoader Load(BigEndianBinaryReader reader) + if (contoursCount >= 0) { - short contoursCount = reader.ReadInt16(); - var bounds = Bounds.Load(reader); - - if (contoursCount >= 0) - { - return SimpleGlyphLoader.LoadSimpleGlyph(reader, contoursCount, bounds); - } - - return CompositeGlyphLoader.LoadCompositeGlyph(reader, bounds); + return SimpleGlyphLoader.LoadSimpleGlyph(reader, contoursCount, bounds); } + + return CompositeGlyphLoader.LoadCompositeGlyph(reader, bounds); } -} \ No newline at end of file +} diff --git a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs index c45584203..76572d1fc 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs @@ -5,69 +5,68 @@ using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Tables.Woff; -namespace SixLabors.Fonts.Tables.TrueType.Glyphs +namespace SixLabors.Fonts.Tables.TrueType.Glyphs; + +internal class GlyphTable : Table { - internal class GlyphTable : Table - { - internal const string TableName = "glyf"; - private readonly GlyphLoader[] loaders; + internal const string TableName = "glyf"; + private readonly GlyphLoader[] loaders; - public GlyphTable(GlyphLoader[] glyphLoaders) - => this.loaders = glyphLoaders; + public GlyphTable(GlyphLoader[] glyphLoaders) + => this.loaders = glyphLoaders; - public int GlyphCount => this.loaders.Length; + public int GlyphCount => this.loaders.Length; - // TODO: Make this non-virtual - internal virtual GlyphVector GetGlyph(int index) - => this.loaders[index].CreateGlyph(this); + // TODO: Make this non-virtual + internal virtual GlyphVector GetGlyph(int index) + => this.loaders[index].CreateGlyph(this); - public static GlyphTable Load(FontReader reader) - { - uint[] locations = reader.GetTable().GlyphOffsets; + public static GlyphTable Load(FontReader reader) + { + uint[] locations = reader.GetTable().GlyphOffsets; - FVarTable? fvar = reader.TryGetTable(); - AVarTable? avar = reader.TryGetTable(); - GVarTable? gvar = reader.TryGetTable(); - HVarTable? hvar = reader.TryGetTable(); - GlyphVariationProcessor? glyphVariationProcessor = fvar is null || hvar is null ? null : new GlyphVariationProcessor(hvar!.ItemVariationStore, fvar, avar, gvar); + FVarTable? fvar = reader.TryGetTable(); + AVarTable? avar = reader.TryGetTable(); + GVarTable? gvar = reader.TryGetTable(); + HVarTable? hvar = reader.TryGetTable(); + GlyphVariationProcessor? glyphVariationProcessor = fvar is null || hvar is null ? null : new GlyphVariationProcessor(hvar!.ItemVariationStore, fvar, avar, gvar); - // Use an empty bounds instance as the fallback. - // We will substitute this with the advance width/height to determine bounds instead when rendering/measuring. - Bounds fallbackEmptyBounds = Bounds.Empty; + // Use an empty bounds instance as the fallback. + // We will substitute this with the advance width/height to determine bounds instead when rendering/measuring. + Bounds fallbackEmptyBounds = Bounds.Empty; - using BigEndianBinaryReader binaryReader = reader.GetReaderAtTablePosition(TableName); - return Load(binaryReader, reader.TableFormat, locations, in fallbackEmptyBounds); - } + using BigEndianBinaryReader binaryReader = reader.GetReaderAtTablePosition(TableName); + return Load(binaryReader, reader.TableFormat, locations, in fallbackEmptyBounds); + } - public static GlyphTable Load(BigEndianBinaryReader reader, TableFormat format, uint[] locations, in Bounds fallbackEmptyBounds) + public static GlyphTable Load(BigEndianBinaryReader reader, TableFormat format, uint[] locations, in Bounds fallbackEmptyBounds) + { + EmptyGlyphLoader empty = new(fallbackEmptyBounds); + int entryCount = locations.Length; + int glyphCount = entryCount - 1; // last entry is a placeholder to the end of the table + var glyphs = new GlyphLoader[glyphCount]; + + // Special case for WOFF2 format where all glyphs need to be read in one go. + if (format is TableFormat.Woff2) { - EmptyGlyphLoader empty = new(fallbackEmptyBounds); - int entryCount = locations.Length; - int glyphCount = entryCount - 1; // last entry is a placeholder to the end of the table - var glyphs = new GlyphLoader[glyphCount]; + return new GlyphTable(Woff2Utils.LoadAllGlyphs(reader, empty)); + } - // Special case for WOFF2 format where all glyphs need to be read in one go. - if (format is TableFormat.Woff2) + for (int i = 0; i < glyphCount; i++) + { + if (locations[i] == locations[i + 1]) { - return new GlyphTable(Woff2Utils.LoadAllGlyphs(reader, empty)); + // This is an empty glyph; + glyphs[i] = empty; } - - for (int i = 0; i < glyphCount; i++) + else { - if (locations[i] == locations[i + 1]) - { - // This is an empty glyph; - glyphs[i] = empty; - } - else - { - // Move to start of glyph. - reader.Seek(locations[i], SeekOrigin.Begin); - glyphs[i] = GlyphLoader.Load(reader); - } + // Move to start of glyph. + reader.Seek(locations[i], SeekOrigin.Begin); + glyphs[i] = GlyphLoader.Load(reader); } - - return new GlyphTable(glyphs); } + + return new GlyphTable(glyphs); } -} \ No newline at end of file +} diff --git a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs index 079057b78..577e6b93d 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/SimpleGlyphLoader.cs @@ -4,191 +4,190 @@ using System; using System.Numerics; -namespace SixLabors.Fonts.Tables.TrueType.Glyphs +namespace SixLabors.Fonts.Tables.TrueType.Glyphs; + +/// +/// Implements loading Simple Glyph Description which is part of the `glyph`table. +/// +/// +internal class SimpleGlyphLoader : GlyphLoader { - /// - /// Implements loading Simple Glyph Description which is part of the `glyph`table. - /// - /// - internal class SimpleGlyphLoader : GlyphLoader + private readonly ControlPoint[] controlPoints; + private readonly ushort[] endPoints; + private readonly Bounds bounds; + private readonly byte[] instructions; + + public SimpleGlyphLoader(ControlPoint[] controlPoints, ushort[] endPoints, Bounds bounds, byte[] instructions) { - private readonly ControlPoint[] controlPoints; - private readonly ushort[] endPoints; - private readonly Bounds bounds; - private readonly byte[] instructions; + this.controlPoints = controlPoints; + this.endPoints = endPoints; + this.bounds = bounds; + this.instructions = instructions; + } - public SimpleGlyphLoader(ControlPoint[] controlPoints, ushort[] endPoints, Bounds bounds, byte[] instructions) - { - this.controlPoints = controlPoints; - this.endPoints = endPoints; - this.bounds = bounds; - this.instructions = instructions; - } + public SimpleGlyphLoader(Bounds bounds) + { + this.controlPoints = Array.Empty(); + this.endPoints = Array.Empty(); + this.instructions = Array.Empty(); + this.bounds = bounds; + } + + [Flags] + private enum Flags : byte + { + /// + /// The point is is off the curve. + /// + ControlPoint = 0, + + /// + /// The point is on the curve. + /// + OnCurve = 1, + + /// + /// If set, the corresponding x-coordinate is 1 byte long. If not set, 2 bytes. + /// + XByte = 2, + + /// + /// If set, the corresponding y-coordinate is 1 byte long. If not set, 2 bytes. + /// + YByte = 4, + + /// + /// f set, the next byte specifies the number of additional times this set of flags is to be repeated. + /// In this way, the number of flags listed can be smaller than the number of points in a character. + /// + Repeat = 8, + + /// + /// This flag has two meanings, depending on how the x-Short Vector flag is set. + /// If x-Short Vector is set, this bit describes the sign of the value, with 1 equalling positive and 0 negative. + /// If the x-Short Vector bit is not set and this bit is set, then the current x-coordinate is the same as the previous x-coordinate. + /// If the x-Short Vector bit is not set and this bit is also not set, the current x-coordinate is a signed 16-bit delta vector. + /// + XSignOrSame = 16, + + /// + /// This flag has two meanings, depending on how the y-Short Vector flag is set. + /// If y-Short Vector is set, this bit describes the sign of the value, with 1 equalling positive and 0 negative. + /// If the y-Short Vector bit is not set and this bit is set, then the current y-coordinate is the same as the previous y-coordinate. + /// If the y-Short Vector bit is not set and this bit is also not set, the current y-coordinate is a signed 16-bit delta vector. + /// + YSignOrSame = 32 + } + + public override GlyphVector CreateGlyph(GlyphTable table) + => new(this.controlPoints, this.endPoints, this.bounds, this.instructions, false); - public SimpleGlyphLoader(Bounds bounds) + public static GlyphLoader LoadSimpleGlyph(BigEndianBinaryReader reader, short count, in Bounds bounds) + { + if (count == 0) { - this.controlPoints = Array.Empty(); - this.endPoints = Array.Empty(); - this.instructions = Array.Empty(); - this.bounds = bounds; + return new SimpleGlyphLoader(bounds); } - [Flags] - private enum Flags : byte + // +-----------------+----------------------------------------+--------------------------------------------------------------------+ + // | Type | Name | Description | + // +=================+========================================+====================================================================+ + // | uint16 | endPtsOfContours[n] | Array of last points of each contour; n is the number of contours. | + // +-----------------+----------------------------------------+--------------------------------------------------------------------+ + // | uint16 | instructionLength | Total number of bytes for instructions. | + // +-----------------+----------------------------------------+--------------------------------------------------------------------+ + // | uint8 | instructions[n] | Array of instructions for each glyph; | + // | | | n is the number of instructions. | + // +-----------------+----------------------------------------+--------------------------------------------------------------------+ + // | uint8 | flags[n] | Array of flags for each coordinate in outline; | + // | | | n is the number of flags. | + // +-----------------+----------------------------------------+--------------------------------------------------------------------+ + // | uint8 or int16 | xCoordinates[] | First coordinates relative to(0, 0); | + // | | | others are relative to previous point. | + // +-----------------+----------------------------------------+--------------------------------------------------------------------+ + // | uint8 or int16 | yCoordinates[] | First coordinates relative to (0, 0); | + // | | | others are relative to previous point. | + // +-----------------+----------------------------------------+--------------------------------------------------------------------+ + ushort[] endPoints = reader.ReadUInt16Array(count); + + ushort instructionSize = reader.ReadUInt16(); + byte[] instructions = reader.ReadUInt8Array(instructionSize); + + // TODO: should this take the max points rather? + int pointCount = 0; + if (count > 0) { - /// - /// The point is is off the curve. - /// - ControlPoint = 0, - - /// - /// The point is on the curve. - /// - OnCurve = 1, - - /// - /// If set, the corresponding x-coordinate is 1 byte long. If not set, 2 bytes. - /// - XByte = 2, - - /// - /// If set, the corresponding y-coordinate is 1 byte long. If not set, 2 bytes. - /// - YByte = 4, - - /// - /// f set, the next byte specifies the number of additional times this set of flags is to be repeated. - /// In this way, the number of flags listed can be smaller than the number of points in a character. - /// - Repeat = 8, - - /// - /// This flag has two meanings, depending on how the x-Short Vector flag is set. - /// If x-Short Vector is set, this bit describes the sign of the value, with 1 equalling positive and 0 negative. - /// If the x-Short Vector bit is not set and this bit is set, then the current x-coordinate is the same as the previous x-coordinate. - /// If the x-Short Vector bit is not set and this bit is also not set, the current x-coordinate is a signed 16-bit delta vector. - /// - XSignOrSame = 16, - - /// - /// This flag has two meanings, depending on how the y-Short Vector flag is set. - /// If y-Short Vector is set, this bit describes the sign of the value, with 1 equalling positive and 0 negative. - /// If the y-Short Vector bit is not set and this bit is set, then the current y-coordinate is the same as the previous y-coordinate. - /// If the y-Short Vector bit is not set and this bit is also not set, the current y-coordinate is a signed 16-bit delta vector. - /// - YSignOrSame = 32 + pointCount = endPoints[count - 1] + 1; } - public override GlyphVector CreateGlyph(GlyphTable table) - => new(this.controlPoints, this.endPoints, this.bounds, this.instructions, false); + Flags[] flags = ReadFlags(reader, pointCount); + short[] xs = ReadCoordinates(reader, pointCount, flags, Flags.XByte, Flags.XSignOrSame); + short[] ys = ReadCoordinates(reader, pointCount, flags, Flags.YByte, Flags.YSignOrSame); - public static GlyphLoader LoadSimpleGlyph(BigEndianBinaryReader reader, short count, in Bounds bounds) + var controlPoints = new ControlPoint[xs.Length]; + for (int i = 0; i < flags.Length; i++) { - if (count == 0) - { - return new SimpleGlyphLoader(bounds); - } - - // +-----------------+----------------------------------------+--------------------------------------------------------------------+ - // | Type | Name | Description | - // +=================+========================================+====================================================================+ - // | uint16 | endPtsOfContours[n] | Array of last points of each contour; n is the number of contours. | - // +-----------------+----------------------------------------+--------------------------------------------------------------------+ - // | uint16 | instructionLength | Total number of bytes for instructions. | - // +-----------------+----------------------------------------+--------------------------------------------------------------------+ - // | uint8 | instructions[n] | Array of instructions for each glyph; | - // | | | n is the number of instructions. | - // +-----------------+----------------------------------------+--------------------------------------------------------------------+ - // | uint8 | flags[n] | Array of flags for each coordinate in outline; | - // | | | n is the number of flags. | - // +-----------------+----------------------------------------+--------------------------------------------------------------------+ - // | uint8 or int16 | xCoordinates[] | First coordinates relative to(0, 0); | - // | | | others are relative to previous point. | - // +-----------------+----------------------------------------+--------------------------------------------------------------------+ - // | uint8 or int16 | yCoordinates[] | First coordinates relative to (0, 0); | - // | | | others are relative to previous point. | - // +-----------------+----------------------------------------+--------------------------------------------------------------------+ - ushort[] endPoints = reader.ReadUInt16Array(count); - - ushort instructionSize = reader.ReadUInt16(); - byte[] instructions = reader.ReadUInt8Array(instructionSize); - - // TODO: should this take the max points rather? - int pointCount = 0; - if (count > 0) - { - pointCount = endPoints[count - 1] + 1; - } + controlPoints[i] = new(new Vector2(xs[i], ys[i]), flags[i].HasFlag(Flags.OnCurve)); + } - Flags[] flags = ReadFlags(reader, pointCount); - short[] xs = ReadCoordinates(reader, pointCount, flags, Flags.XByte, Flags.XSignOrSame); - short[] ys = ReadCoordinates(reader, pointCount, flags, Flags.YByte, Flags.YSignOrSame); + return new SimpleGlyphLoader(controlPoints, endPoints, bounds, instructions); + } - var controlPoints = new ControlPoint[xs.Length]; - for (int i = 0; i < flags.Length; i++) + private static Flags[] ReadFlags(BigEndianBinaryReader reader, int flagCount) + { + var result = new Flags[flagCount]; + int c = 0; + int repeatCount = 0; + Flags flag = default; + while (c < flagCount) + { + if (repeatCount > 0) { - controlPoints[i] = new(new Vector2(xs[i], ys[i]), flags[i].HasFlag(Flags.OnCurve)); + repeatCount--; } - - return new SimpleGlyphLoader(controlPoints, endPoints, bounds, instructions); - } - - private static Flags[] ReadFlags(BigEndianBinaryReader reader, int flagCount) - { - var result = new Flags[flagCount]; - int c = 0; - int repeatCount = 0; - Flags flag = default; - while (c < flagCount) + else { - if (repeatCount > 0) - { - repeatCount--; - } - else + flag = (Flags)reader.ReadUInt8(); + if (flag.HasFlag(Flags.Repeat)) { - flag = (Flags)reader.ReadUInt8(); - if (flag.HasFlag(Flags.Repeat)) - { - repeatCount = reader.ReadByte(); - } + repeatCount = reader.ReadByte(); } - - result[c++] = flag; } - return result; + result[c++] = flag; } - private static short[] ReadCoordinates(BigEndianBinaryReader reader, int pointCount, Flags[] flags, Flags isByte, Flags signOrSame) + return result; + } + + private static short[] ReadCoordinates(BigEndianBinaryReader reader, int pointCount, Flags[] flags, Flags isByte, Flags signOrSame) + { + short[] xs = new short[pointCount]; + short x = 0; + for (int i = 0; i < pointCount; i++) { - short[] xs = new short[pointCount]; - short x = 0; - for (int i = 0; i < pointCount; i++) + short dx; + if (flags[i].HasFlag(isByte)) { - short dx; - if (flags[i].HasFlag(isByte)) + byte b = reader.ReadByte(); + dx = (short)(flags[i].HasFlag(signOrSame) ? b : -b); + } + else + { + if (flags[i].HasFlag(signOrSame)) { - byte b = reader.ReadByte(); - dx = (short)(flags[i].HasFlag(signOrSame) ? b : -b); + dx = 0; } else { - if (flags[i].HasFlag(signOrSame)) - { - dx = 0; - } - else - { - dx = reader.ReadInt16(); - } + dx = reader.ReadInt16(); } - - x += dx; - xs[i] = x; } - return xs; + x += dx; + xs[i] = x; } + + return xs; } -} \ No newline at end of file +} diff --git a/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs b/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs index 66c8f2aef..fa3bca798 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs @@ -11,98 +11,97 @@ using SixLabors.Fonts.Tables.TrueType.Glyphs; using SixLabors.Fonts.Tables.TrueType.Hinting; -namespace SixLabors.Fonts.Tables.TrueType +namespace SixLabors.Fonts.Tables.TrueType; + +internal sealed class TrueTypeFontTables : IFontTables { - internal sealed class TrueTypeFontTables : IFontTables + public TrueTypeFontTables( + CMapTable cmap, + HeadTable head, + HorizontalHeadTable hhea, + HorizontalMetricsTable htmx, + MaximumProfileTable maxp, + NameTable name, + OS2Table os2, + PostTable post, + GlyphTable glyph, + IndexLocationTable loca) { - public TrueTypeFontTables( - CMapTable cmap, - HeadTable head, - HorizontalHeadTable hhea, - HorizontalMetricsTable htmx, - MaximumProfileTable maxp, - NameTable name, - OS2Table os2, - PostTable post, - GlyphTable glyph, - IndexLocationTable loca) - { - this.Cmap = cmap; - this.Head = head; - this.Hhea = hhea; - this.Htmx = htmx; - this.Maxp = maxp; - this.Name = name; - this.Os2 = os2; - this.Post = post; - this.Glyf = glyph; - this.Loca = loca; - } + this.Cmap = cmap; + this.Head = head; + this.Hhea = hhea; + this.Htmx = htmx; + this.Maxp = maxp; + this.Name = name; + this.Os2 = os2; + this.Post = post; + this.Glyf = glyph; + this.Loca = loca; + } - public CMapTable Cmap { get; set; } + public CMapTable Cmap { get; set; } - public HeadTable Head { get; set; } + public HeadTable Head { get; set; } - public HorizontalHeadTable Hhea { get; set; } + public HorizontalHeadTable Hhea { get; set; } - public HorizontalMetricsTable Htmx { get; set; } + public HorizontalMetricsTable Htmx { get; set; } - public MaximumProfileTable Maxp { get; set; } + public MaximumProfileTable Maxp { get; set; } - public NameTable Name { get; set; } + public NameTable Name { get; set; } - public OS2Table Os2 { get; set; } + public OS2Table Os2 { get; set; } - public PostTable Post { get; set; } + public PostTable Post { get; set; } - public GlyphDefinitionTable? Gdef { get; set; } + public GlyphDefinitionTable? Gdef { get; set; } - public GSubTable? GSub { get; set; } + public GSubTable? GSub { get; set; } - public GPosTable? GPos { get; set; } + public GPosTable? GPos { get; set; } - public ColrTable? Colr { get; set; } + public ColrTable? Colr { get; set; } - public CpalTable? Cpal { get; set; } + public CpalTable? Cpal { get; set; } - public KerningTable? Kern { get; set; } + public KerningTable? Kern { get; set; } - public VerticalHeadTable? Vhea { get; set; } + public VerticalHeadTable? Vhea { get; set; } - public VerticalMetricsTable? Vmtx { get; set; } + public VerticalMetricsTable? Vmtx { get; set; } - // Tables Related to TrueType Outlines - // +------+-----------------------------------------------+ - // | Tag | Name | - // +======+===============================================+ - // | cvt | Control Value Table (optional table) | - // +------+-----------------------------------------------+ - // | fpgm | Font program (optional table) | - // +------+-----------------------------------------------+ - // | glyf | Glyph data | - // +------+-----------------------------------------------+ - // | loca | Index to location | - // +------+-----------------------------------------------+ - // | prep | CVT Program (optional table) | - // +------+-----------------------------------------------+ - // | gasp | Grid-fitting/Scan-conversion (optional table) | - // +------+-----------------------------------------------+ - public CvtTable? Cvt { get; set; } + // Tables Related to TrueType Outlines + // +------+-----------------------------------------------+ + // | Tag | Name | + // +======+===============================================+ + // | cvt | Control Value Table (optional table) | + // +------+-----------------------------------------------+ + // | fpgm | Font program (optional table) | + // +------+-----------------------------------------------+ + // | glyf | Glyph data | + // +------+-----------------------------------------------+ + // | loca | Index to location | + // +------+-----------------------------------------------+ + // | prep | CVT Program (optional table) | + // +------+-----------------------------------------------+ + // | gasp | Grid-fitting/Scan-conversion (optional table) | + // +------+-----------------------------------------------+ + public CvtTable? Cvt { get; set; } - public FpgmTable? Fpgm { get; set; } + public FpgmTable? Fpgm { get; set; } - public GlyphTable Glyf { get; set; } + public GlyphTable Glyf { get; set; } - public IndexLocationTable Loca { get; set; } + public IndexLocationTable Loca { get; set; } - public PrepTable? Prep { get; set; } + public PrepTable? Prep { get; set; } - public FVarTable? Fvar { get; set; } + public FVarTable? Fvar { get; set; } - public AVarTable? Avar { get; set; } + public AVarTable? Avar { get; set; } - public GVarTable? Gvar { get; set; } + public GVarTable? Gvar { get; set; } - public HVarTable? Hvar { get; set; } - } -} \ No newline at end of file + public HVarTable? Hvar { get; set; } +} diff --git a/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationsTests.cs b/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationsTests.cs index cdeddcef1..500cee38f 100644 --- a/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationsTests.cs +++ b/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationsTests.cs @@ -1,24 +1,22 @@ // Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. +// Licensed under the Six Labors Split License. using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; -using Xunit; -namespace SixLabors.Fonts.Tests.Tables.Variations -{ - public class VariationsTests - { - private static readonly FontCollection TestFontCollection = new(); - private static readonly Font RobotoFlexTTF = CreateFont(TestFonts.RobotoFlex); +namespace SixLabors.Fonts.Tests.Tables.Variations; - private static Font CreateFont(string testFont) - { - FontFamily family = TestFontCollection.Add(testFont); - return family.CreateFont(12); - } +public class VariationsTests +{ + private static readonly FontCollection TestFontCollection = new(); + private static readonly Font RobotoFlexTTF = CreateFont(TestFonts.RobotoFlex); - [Fact] - public void CanLoadVariationTables() - => Assert.True(RobotoFlexTTF.FontMetrics.TryGetVariationAxes(out VariationAxis[] axes)); + private static Font CreateFont(string testFont) + { + FontFamily family = TestFontCollection.Add(testFont); + return family.CreateFont(12); } + + [Fact] + public void CanLoadVariationTables() + => Assert.True(RobotoFlexTTF.FontMetrics.TryGetVariationAxes(out VariationAxis[] axes)); } diff --git a/tests/SixLabors.Fonts.Tests/TestFonts.cs b/tests/SixLabors.Fonts.Tests/TestFonts.cs index db9cc81db..b4446fe49 100644 --- a/tests/SixLabors.Fonts.Tests/TestFonts.cs +++ b/tests/SixLabors.Fonts.Tests/TestFonts.cs @@ -9,314 +9,313 @@ using System.Reflection; using Xunit; -namespace SixLabors.Fonts.Tests +namespace SixLabors.Fonts.Tests; + +public static class TestFonts { - public static class TestFonts - { - private static readonly ConcurrentDictionary Cache = new(); + private static readonly ConcurrentDictionary Cache = new(); - public static string TwemojiMozillaFile => GetFullPath("Twemoji Mozilla.ttf"); - - public static string SegoeuiEmojiFile => GetFullPath("seguiemj-win11.ttf"); - - public static string CarterOneFile => GetFullPath("Carter_One/CarterOne.ttf"); - - public static string WendyOneFile => GetFullPath("Wendy_One/WendyOne-Regular.ttf"); - - // Font from: https://google-webfonts-helper.herokuapp.com/fonts/open-sans?subsets=cyrillic,cyrillic-ext,greek,greek-ext,hebrew,latin,latin-ext,vietnamese - public static string OpenSansFile => GetFullPath("OpenSans-Regular.ttf"); - - public static string OpenSansFileWoff1 => GetFullPath("OpenSans-Regular.woff"); - - public static string OpenSansFileWoff2 => GetFullPath("OpenSans-Regular.woff2"); - - public static string SimpleFontFile => GetFullPath("SixLaborsSampleAB.ttf"); - - public static string SimpleFontFileWoff => GetFullPath("SixLaborsSampleAB.woff"); - - public static string ArabicFontFile => GetFullPath("Dubai-Regular.ttf"); - - public static string Anchor2FontFile => GetFullPath("DejaVuSans.ttf"); - - public static string SegeouiFontFile => GetFullPath("Segoeui.ttf"); - - public static string TimesNewRomanFile => GetFullPath("TimesNewRoman.ttf"); - - // FdSelect format 0: https://github.com/adobe-fonts/fdarray-test/ - public static string FDArrayTest257File => GetFullPath("FDArrayTest257.otf"); - - /// - /// Gets a gsub test font file which has the following substitution for unit tests: - /// - Single Substitution: A -> B - /// - Multiple Substitution: C -> D - /// - Alternate Substitution: E -> F - /// - public static string GSubTestFontFile1 => GetFullPath("GsubTestFont1.ttf"); - - /// - /// Gets a gsub test font file which has the following substitution for unit tests: - /// - Chained Context Substitution, Format 3: x=y -> x>y - /// - Reverse Chaining Contextual Single Substitution: X89 -> XYZ - /// - public static string GSubTestFontFile2 => GetFullPath("GsubTestFont2.ttf"); - - /// - /// Gets a gsub test font file (from harfbuzz tests) which has the following substitution for unit tests: - /// - Chained Context Substitution, Format 2: - /// "\u1361\u136B\u1361" -> The character in the middle should be replaced with the final form. - /// - public static string GSubTestFontFile3 => GetFullPath("TestShapeEthi.ttf"); - - /// - /// Gets a gsub test file specifically crafted to intiate a billion laughs attack. - /// - public static string GSubLookupType2BillionLaughs => GetFullPath("TestGSUBThree.ttf"); - - /// - /// Gets a gsub test font file (from harfbuzz tests) which has the following substitution for unit tests: - /// - Context Substitution Format 1: - /// "6566" ("\u0041\u0042") -> "6576" - /// - public static string GSubLookupType5Format1 => GetFullPath("GsubLookupType5Format1.ttf"); - - /// - /// Gets a gsub test font file (from harfbuzz tests) which has the following substitution for unit tests: - /// - Context Substitution Format 3: - /// "65666768" ("\u0041\u0042\u0043\u0044") -> "657678" - /// - public static string GSubLookupType5Format3 => GetFullPath("GsubLookupType5Format3.ttf"); - - /// - /// Gets a gsub test font file (from harfbuzz tests) which has the following substitution for unit tests: - /// - Context Substitution Format 2: - /// "6566" ("\u0041\u0042") -> "6576" - /// - public static string GSubLookupType5Format2 => GetFullPath("GsubLookupType5Format2.ttf"); - - /// - /// Gets a gsub test font file (from harfbuzz tests) which has the following substitution for unit tests: - /// - Chained Contexts Substitution Subtable Format 1: - /// "20212223" ("\u0014\u0015\u0016\u0017") -> "20636423" - /// - public static string GSubLookupType6Format1 => GetFullPath("GsubLookupType6Format1.ttf"); - - /// - /// Gets a gsub test font file (from harfbuzz tests) which has the following substitution for unit tests: - /// - Chained Contexts Substitution Subtable Format 2: - /// "20212223" ("\u0014\u0015\u0016\u0017") -> "20216423" - /// - public static string GSubLookupType6Format2 => GetFullPath("GsubLookupType6Format2.ttf"); - - /// - /// Gets a gsub test font file which has the following substitution for unit tests: - /// - Chained Context Substitution, Format 3: [bovw] -> [a-z] - /// Script from FontForge example: https://fontforge.org/docs/ui/dialogs/contextchain.html - /// - public static string FormalScript => GetFullPath("FormalScript.ttf"); - - /// - /// Gets a gpos test font file which has the following substitution for unit tests: - /// - Single Adjustment Positioning, Format 1: "\u0012" and "\u0014" XPlacement minus 200. - /// - public static string GposLookupType1Format1 => GetFullPath("GposLookupType1Format1.ttf"); - - /// - /// Gets a gpos test font file which has the following substitution for unit tests: - /// - Single Adjustment Positioning, Format 2: "\u0012" XPlacement minus 200 and "\u0014" XPlacement minus 300. - /// - public static string GposLookupType1Format2 => GetFullPath("GposLookupType1Format2.ttf"); - - /// - /// Gets a gpos test font file which has the following substitution for unit tests: - /// - Pair Adjustment Positioning, Format 1: "\u0012\u0014" first XPlacement minus 300 and second YPlacement minus 400. - /// - public static string GposLookupType2Format1 => GetFullPath("GposLookupType2Format1.ttf"); - - /// - /// Gets a gpos test font file which has the following substitution for unit tests: - /// - Cursive Attachment Positioning, Format 1: "\u0012\u0012" characters should overlap. - /// - public static string GposLookupType3Format1 => GetFullPath("GposLookupType3Format1.ttf"); - - /// - /// Gets a gpos test font file which has the following substitution for unit tests: - /// - Mark-to-Base Attachment Positioning, Format 1: "\u0012\u0013" Base 100, 150; Mark 200, 230 - /// - public static string GposLookupType4Format1 => GetFullPath("GposLookupType4Format1.ttf"); - - /// - /// Gets a gpos test font file which has the following substitution for unit tests: - /// - Mark-to-Ligature Attachment Positioning, Format 1: "\u0012\u0013" Ligature 100, 150; Mark 200, 230 - /// - public static string GposLookupType5Format1 => GetFullPath("GposLookupType5Format1.ttf"); - - /// - /// Gets a gpos test font file which has the following substitution for unit tests: - /// - Mark-to-Mark Attachment Positioning, Format 1: "\u0012\u0013" FirstMark 100, 150; SecondMark 200, 230 - /// - public static string GposLookupType6Format1 => GetFullPath("GposLookupType6Format1.ttf"); + public static string TwemojiMozillaFile => GetFullPath("Twemoji Mozilla.ttf"); + + public static string SegoeuiEmojiFile => GetFullPath("seguiemj-win11.ttf"); + + public static string CarterOneFile => GetFullPath("Carter_One/CarterOne.ttf"); + + public static string WendyOneFile => GetFullPath("Wendy_One/WendyOne-Regular.ttf"); + + // Font from: https://google-webfonts-helper.herokuapp.com/fonts/open-sans?subsets=cyrillic,cyrillic-ext,greek,greek-ext,hebrew,latin,latin-ext,vietnamese + public static string OpenSansFile => GetFullPath("OpenSans-Regular.ttf"); + + public static string OpenSansFileWoff1 => GetFullPath("OpenSans-Regular.woff"); + + public static string OpenSansFileWoff2 => GetFullPath("OpenSans-Regular.woff2"); + + public static string SimpleFontFile => GetFullPath("SixLaborsSampleAB.ttf"); + + public static string SimpleFontFileWoff => GetFullPath("SixLaborsSampleAB.woff"); + + public static string ArabicFontFile => GetFullPath("Dubai-Regular.ttf"); + + public static string Anchor2FontFile => GetFullPath("DejaVuSans.ttf"); + + public static string SegeouiFontFile => GetFullPath("Segoeui.ttf"); + + public static string TimesNewRomanFile => GetFullPath("TimesNewRoman.ttf"); + + // FdSelect format 0: https://github.com/adobe-fonts/fdarray-test/ + public static string FDArrayTest257File => GetFullPath("FDArrayTest257.otf"); + + /// + /// Gets a gsub test font file which has the following substitution for unit tests: + /// - Single Substitution: A -> B + /// - Multiple Substitution: C -> D + /// - Alternate Substitution: E -> F + /// + public static string GSubTestFontFile1 => GetFullPath("GsubTestFont1.ttf"); + + /// + /// Gets a gsub test font file which has the following substitution for unit tests: + /// - Chained Context Substitution, Format 3: x=y -> x>y + /// - Reverse Chaining Contextual Single Substitution: X89 -> XYZ + /// + public static string GSubTestFontFile2 => GetFullPath("GsubTestFont2.ttf"); + + /// + /// Gets a gsub test font file (from harfbuzz tests) which has the following substitution for unit tests: + /// - Chained Context Substitution, Format 2: + /// "\u1361\u136B\u1361" -> The character in the middle should be replaced with the final form. + /// + public static string GSubTestFontFile3 => GetFullPath("TestShapeEthi.ttf"); + + /// + /// Gets a gsub test file specifically crafted to intiate a billion laughs attack. + /// + public static string GSubLookupType2BillionLaughs => GetFullPath("TestGSUBThree.ttf"); + + /// + /// Gets a gsub test font file (from harfbuzz tests) which has the following substitution for unit tests: + /// - Context Substitution Format 1: + /// "6566" ("\u0041\u0042") -> "6576" + /// + public static string GSubLookupType5Format1 => GetFullPath("GsubLookupType5Format1.ttf"); + + /// + /// Gets a gsub test font file (from harfbuzz tests) which has the following substitution for unit tests: + /// - Context Substitution Format 3: + /// "65666768" ("\u0041\u0042\u0043\u0044") -> "657678" + /// + public static string GSubLookupType5Format3 => GetFullPath("GsubLookupType5Format3.ttf"); + + /// + /// Gets a gsub test font file (from harfbuzz tests) which has the following substitution for unit tests: + /// - Context Substitution Format 2: + /// "6566" ("\u0041\u0042") -> "6576" + /// + public static string GSubLookupType5Format2 => GetFullPath("GsubLookupType5Format2.ttf"); + + /// + /// Gets a gsub test font file (from harfbuzz tests) which has the following substitution for unit tests: + /// - Chained Contexts Substitution Subtable Format 1: + /// "20212223" ("\u0014\u0015\u0016\u0017") -> "20636423" + /// + public static string GSubLookupType6Format1 => GetFullPath("GsubLookupType6Format1.ttf"); + + /// + /// Gets a gsub test font file (from harfbuzz tests) which has the following substitution for unit tests: + /// - Chained Contexts Substitution Subtable Format 2: + /// "20212223" ("\u0014\u0015\u0016\u0017") -> "20216423" + /// + public static string GSubLookupType6Format2 => GetFullPath("GsubLookupType6Format2.ttf"); + + /// + /// Gets a gsub test font file which has the following substitution for unit tests: + /// - Chained Context Substitution, Format 3: [bovw] -> [a-z] + /// Script from FontForge example: https://fontforge.org/docs/ui/dialogs/contextchain.html + /// + public static string FormalScript => GetFullPath("FormalScript.ttf"); + + /// + /// Gets a gpos test font file which has the following substitution for unit tests: + /// - Single Adjustment Positioning, Format 1: "\u0012" and "\u0014" XPlacement minus 200. + /// + public static string GposLookupType1Format1 => GetFullPath("GposLookupType1Format1.ttf"); + + /// + /// Gets a gpos test font file which has the following substitution for unit tests: + /// - Single Adjustment Positioning, Format 2: "\u0012" XPlacement minus 200 and "\u0014" XPlacement minus 300. + /// + public static string GposLookupType1Format2 => GetFullPath("GposLookupType1Format2.ttf"); + + /// + /// Gets a gpos test font file which has the following substitution for unit tests: + /// - Pair Adjustment Positioning, Format 1: "\u0012\u0014" first XPlacement minus 300 and second YPlacement minus 400. + /// + public static string GposLookupType2Format1 => GetFullPath("GposLookupType2Format1.ttf"); + + /// + /// Gets a gpos test font file which has the following substitution for unit tests: + /// - Cursive Attachment Positioning, Format 1: "\u0012\u0012" characters should overlap. + /// + public static string GposLookupType3Format1 => GetFullPath("GposLookupType3Format1.ttf"); + + /// + /// Gets a gpos test font file which has the following substitution for unit tests: + /// - Mark-to-Base Attachment Positioning, Format 1: "\u0012\u0013" Base 100, 150; Mark 200, 230 + /// + public static string GposLookupType4Format1 => GetFullPath("GposLookupType4Format1.ttf"); + + /// + /// Gets a gpos test font file which has the following substitution for unit tests: + /// - Mark-to-Ligature Attachment Positioning, Format 1: "\u0012\u0013" Ligature 100, 150; Mark 200, 230 + /// + public static string GposLookupType5Format1 => GetFullPath("GposLookupType5Format1.ttf"); + + /// + /// Gets a gpos test font file which has the following substitution for unit tests: + /// - Mark-to-Mark Attachment Positioning, Format 1: "\u0012\u0013" FirstMark 100, 150; SecondMark 200, 230 + /// + public static string GposLookupType6Format1 => GetFullPath("GposLookupType6Format1.ttf"); - /// - /// Gets a gpos test font file which has the following substitution for unit tests: - /// - Contextual Positioning Subtables, Format 1: "\u0014\u0015\u0016" XPlacement plus 20. - /// - public static string GposLookupType7Format1 => GetFullPath("GposLookupType7Format1.ttf"); + /// + /// Gets a gpos test font file which has the following substitution for unit tests: + /// - Contextual Positioning Subtables, Format 1: "\u0014\u0015\u0016" XPlacement plus 20. + /// + public static string GposLookupType7Format1 => GetFullPath("GposLookupType7Format1.ttf"); - /// - /// Gets a gpos test font file which has the following substitution for unit tests: - /// - Contextual Positioning Subtables, Format 2: "\u0014\u0015\u0016" XPlacement plus 20. - /// - public static string GposLookupType7Format2 => GetFullPath("GposLookupType7Format2.ttf"); + /// + /// Gets a gpos test font file which has the following substitution for unit tests: + /// - Contextual Positioning Subtables, Format 2: "\u0014\u0015\u0016" XPlacement plus 20. + /// + public static string GposLookupType7Format2 => GetFullPath("GposLookupType7Format2.ttf"); - /// - /// Gets a gpos test font file which has the following substitution for unit tests: - /// - Contextual Positioning Subtables, Format 3: "\u0014\u0015\u0016" XPlacement plus 20. - /// - public static string GposLookupType7Format3 => GetFullPath("GposLookupType7Format3.ttf"); + /// + /// Gets a gpos test font file which has the following substitution for unit tests: + /// - Contextual Positioning Subtables, Format 3: "\u0014\u0015\u0016" XPlacement plus 20. + /// + public static string GposLookupType7Format3 => GetFullPath("GposLookupType7Format3.ttf"); - /// - /// Gets a gpos test font file which has the following substitution for unit tests: - /// - Chained Contexts Positioning, Format 1: - /// "\u0014\u0015\u0016\u0017" backtrack:\u0014, input:\u0015\u0016, lookahead:u0017 -> XPlacement plus 200. - /// - public static string GposLookupType8Format1 => GetFullPath("GposLookupType8Format1.ttf"); + /// + /// Gets a gpos test font file which has the following substitution for unit tests: + /// - Chained Contexts Positioning, Format 1: + /// "\u0014\u0015\u0016\u0017" backtrack:\u0014, input:\u0015\u0016, lookahead:u0017 -> XPlacement plus 200. + /// + public static string GposLookupType8Format1 => GetFullPath("GposLookupType8Format1.ttf"); - /// - /// Gets a gpos test font file which has the following substitution for unit tests: - /// - Chained Contexts Positioning, Format 2: - /// "\u0014\u0015\u0016\u0017" backtrack:\u0014, input:\u0015\u0016, lookahead:u0017 -> XPlacement plus 200. - /// - public static string GposLookupType8Format2 => GetFullPath("GposLookupType8Format2.ttf"); + /// + /// Gets a gpos test font file which has the following substitution for unit tests: + /// - Chained Contexts Positioning, Format 2: + /// "\u0014\u0015\u0016\u0017" backtrack:\u0014, input:\u0015\u0016, lookahead:u0017 -> XPlacement plus 200. + /// + public static string GposLookupType8Format2 => GetFullPath("GposLookupType8Format2.ttf"); - /// - /// Gets a gpos test font file which has the following substitution for unit tests: - /// - Chained Contexts Positioning, Format 3: - /// "\u0014\u0015\u0016\u0017" backtrack:\u0014, input:\u0015\u0016, lookahead:u0017 -> XPlacement plus 200. - /// - public static string GposLookupType8Format3 => GetFullPath("GposLookupType8Format3.ttf"); + /// + /// Gets a gpos test font file which has the following substitution for unit tests: + /// - Chained Contexts Positioning, Format 3: + /// "\u0014\u0015\u0016\u0017" backtrack:\u0014, input:\u0015\u0016, lookahead:u0017 -> XPlacement plus 200. + /// + public static string GposLookupType8Format3 => GetFullPath("GposLookupType8Format3.ttf"); - /// - /// Gets the eb-garamond font, which can be used to test old style figures feature. - /// - public static string EbGaramond => GetFullPath("EBGaramond-Regular.ttf"); + /// + /// Gets the eb-garamond font, which can be used to test old style figures feature. + /// + public static string EbGaramond => GetFullPath("EBGaramond-Regular.ttf"); - public static string RobotoRegular => GetFullPath("Roboto-Regular.ttf"); + public static string RobotoRegular => GetFullPath("Roboto-Regular.ttf"); - public static string RobotoFlex => GetFullPath("RobotoFlex.ttf"); + public static string RobotoFlex => GetFullPath("RobotoFlex.ttf"); - public static string SimpleTrueTypeCollection => GetFullPath("Sample.ttc"); + public static string SimpleTrueTypeCollection => GetFullPath("Sample.ttc"); - public static string WhitneyBookFile => GetFullPath("whitney-book.ttf"); + public static string WhitneyBookFile => GetFullPath("whitney-book.ttf"); - public static string Version1Font => GetFullPath("Font-Version1.ttf"); + public static string Version1Font => GetFullPath("Font-Version1.ttf"); - public static string NotoSansSCThinFile => GetFullPath("NotoSansSC-Thin.ttf"); + public static string NotoSansSCThinFile => GetFullPath("NotoSansSC-Thin.ttf"); - public static string NotoSansKRRegular => GetFullPath("NotoSansKR-Regular.otf"); + public static string NotoSansKRRegular => GetFullPath("NotoSansKR-Regular.otf"); - public static string NotoSansBalineseRegular => GetFullPath("NotoSansBalinese-Regular.ttf"); + public static string NotoSansBalineseRegular => GetFullPath("NotoSansBalinese-Regular.ttf"); - public static string NotoSansBengaliRegular => GetFullPath("NotoSansBengali-Regular.ttf"); + public static string NotoSansBengaliRegular => GetFullPath("NotoSansBengali-Regular.ttf"); - public static string NotoSansDevanagariRegular => GetFullPath("NotoSansDevanagari-Regular.ttf"); + public static string NotoSansDevanagariRegular => GetFullPath("NotoSansDevanagari-Regular.ttf"); - public static string NotoSerifKannadaRegular => GetFullPath("NotoSerifKannada-Regular.ttf"); + public static string NotoSerifKannadaRegular => GetFullPath("NotoSerifKannada-Regular.ttf"); - public static string NotoSansTeluguRegular => GetFullPath("NotoSansTelugu-Regular.ttf"); + public static string NotoSansTeluguRegular => GetFullPath("NotoSansTelugu-Regular.ttf"); - public static string NotoSansTamilRegular => GetFullPath("NotoSansTamil-Regular.ttf"); + public static string NotoSansTamilRegular => GetFullPath("NotoSansTamil-Regular.ttf"); - public static string NotoSansKannadaRegular => GetFullPath("NotoSansKannada-Regular.ttf"); + public static string NotoSansKannadaRegular => GetFullPath("NotoSansKannada-Regular.ttf"); - public static string NotoSansGurmukhiRegular => GetFullPath("NotoSansGurmukhi-Regular.ttf"); + public static string NotoSansGurmukhiRegular => GetFullPath("NotoSansGurmukhi-Regular.ttf"); - public static string NotoSansGujaratiRegular => GetFullPath("NotoSansGujarati-Regular.ttf"); + public static string NotoSansGujaratiRegular => GetFullPath("NotoSansGujarati-Regular.ttf"); - public static string NotoSansMalayalamRegular => GetFullPath("NotoSansMalayalam-Regular.ttf"); + public static string NotoSansMalayalamRegular => GetFullPath("NotoSansMalayalam-Regular.ttf"); - public static string NotoSansOriyaRegular => GetFullPath("NotoSansOriya-Regular.ttf"); + public static string NotoSansOriyaRegular => GetFullPath("NotoSansOriya-Regular.ttf"); - public static string NotoSansKhmerRegular => GetFullPath("NotoSansKhmer-Regular.ttf"); + public static string NotoSansKhmerRegular => GetFullPath("NotoSansKhmer-Regular.ttf"); - public static string HelveticaTTCFile => GetFullPath("Helvetica.ttc"); + public static string HelveticaTTCFile => GetFullPath("Helvetica.ttc"); - public static string MeQuranFile => GetFullPath("me_quran_volt_newmet.ttf"); + public static string MeQuranFile => GetFullPath("me_quran_volt_newmet.ttf"); - public static string PMINGLIUFile => GetFullPath("PMINGLIU.ttf"); + public static string PMINGLIUFile => GetFullPath("PMINGLIU.ttf"); - public static string AliceFrancesHMKRegularFile => GetFullPath("AliceFrancesHMK-Regular.ttf"); + public static string AliceFrancesHMKRegularFile => GetFullPath("AliceFrancesHMK-Regular.ttf"); - public static string SumanaRegularFile => GetFullPath("Sumana-Regular.ttf"); + public static string SumanaRegularFile => GetFullPath("Sumana-Regular.ttf"); - public static string DFKaiSBFile => GetFullPath("kaiu.ttf"); + public static string DFKaiSBFile => GetFullPath("kaiu.ttf"); - public static Stream TwemojiMozillaData() => OpenStream(TwemojiMozillaFile); + public static Stream TwemojiMozillaData() => OpenStream(TwemojiMozillaFile); - public static Stream SegoeuiEmojiData() => OpenStream(SegoeuiEmojiFile); + public static Stream SegoeuiEmojiData() => OpenStream(SegoeuiEmojiFile); - public static Stream WendyOneFileData() => OpenStream(WendyOneFile); + public static Stream WendyOneFileData() => OpenStream(WendyOneFile); - public static Stream CarterOneFileData() => OpenStream(CarterOneFile); + public static Stream CarterOneFileData() => OpenStream(CarterOneFile); - public static Stream SimpleFontFileData() => OpenStream(SimpleFontFile); + public static Stream SimpleFontFileData() => OpenStream(SimpleFontFile); - public static Stream ArabicFontFileData() => OpenStream(ArabicFontFile); + public static Stream ArabicFontFileData() => OpenStream(ArabicFontFile); - public static Stream OpenSansTtfData() => OpenStream(OpenSansFile); + public static Stream OpenSansTtfData() => OpenStream(OpenSansFile); - public static Stream OpensSansWoff1Data() => OpenStream(OpenSansFileWoff1); + public static Stream OpensSansWoff1Data() => OpenStream(OpenSansFileWoff1); - public static Stream OpensSansWoff2Data() => OpenStream(OpenSansFileWoff2); + public static Stream OpensSansWoff2Data() => OpenStream(OpenSansFileWoff2); - public static Stream SimpleFontFileWoffData() => OpenStream(SimpleFontFileWoff); + public static Stream SimpleFontFileWoffData() => OpenStream(SimpleFontFileWoff); - public static Stream SSimpleTrueTypeCollectionData() => OpenStream(SimpleTrueTypeCollection); + public static Stream SSimpleTrueTypeCollectionData() => OpenStream(SimpleTrueTypeCollection); - public static class Issues - { - public static string Issue96File => GetFullPath("Issues/Issue96.fuzz"); + public static class Issues + { + public static string Issue96File => GetFullPath("Issues/Issue96.fuzz"); - public static string Issue97File => GetFullPath("Issues/Issue97.fuzz"); + public static string Issue97File => GetFullPath("Issues/Issue97.fuzz"); - public static string Issue298File => GetFullPath("Issues/StyleScript.ttf"); - } + public static string Issue298File => GetFullPath("Issues/StyleScript.ttf"); + } - private static Stream OpenStream(string path) => - Cache.GetOrAdd( - path, - p => - { - using FileStream fs = File.OpenRead(p); - return fs.Clone(); - }).Clone(); + private static Stream OpenStream(string path) => + Cache.GetOrAdd( + path, + p => + { + using FileStream fs = File.OpenRead(p); + return fs.Clone(); + }).Clone(); - private static Stream Clone(this Stream src) - { - var ms = new MemoryStream(); - src.Position = 0; - src.CopyTo(ms); - ms.Position = 0; - return ms; - } - - private static string GetFullPath(string path) - { - string root = Path.GetDirectoryName(new Uri(typeof(TestFonts).GetTypeInfo().Assembly.CodeBase).LocalPath); + private static Stream Clone(this Stream src) + { + var ms = new MemoryStream(); + src.Position = 0; + src.CopyTo(ms); + ms.Position = 0; + return ms; + } - string[] paths = new[] - { - "Fonts", - @"..\..\Fonts", - @"..\..\..\..\Fonts", - @"..\..\..\..\..\Fonts" - }; + private static string GetFullPath(string path) + { + string root = Path.GetDirectoryName(new Uri(typeof(TestFonts).GetTypeInfo().Assembly.CodeBase).LocalPath); + + string[] paths = new[] + { + "Fonts", + @"..\..\Fonts", + @"..\..\..\..\Fonts", + @"..\..\..\..\..\Fonts" + }; - IEnumerable fullPaths = paths.Select(x => Path.GetFullPath(Path.Combine(root, x))); - string rootPath = fullPaths.FirstOrDefault(Directory.Exists); + IEnumerable fullPaths = paths.Select(x => Path.GetFullPath(Path.Combine(root, x))); + string rootPath = fullPaths.FirstOrDefault(Directory.Exists); - Assert.True(rootPath != null, $"could not find the font folder in any of these location, \n{string.Join("\n", fullPaths)}"); + Assert.True(rootPath != null, $"could not find the font folder in any of these location, \n{string.Join("\n", fullPaths)}"); - return Path.Combine(rootPath, path); - } + return Path.Combine(rootPath, path); } } \ No newline at end of file From d3d59100b4116b0c81442b855e50e5cfe7366856 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Tue, 5 Sep 2023 22:41:15 +1000 Subject: [PATCH 29/56] Update StreamFontMetrics.TrueType.cs --- src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index b9e068497..2f8ff2d18 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -1,7 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System; using System.Numerics; using SixLabors.Fonts.Tables.AdvancedTypographic; using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; @@ -22,7 +21,6 @@ namespace SixLabors.Fonts; /// internal partial class StreamFontMetrics { - [ThreadStatic] private TrueTypeInterpreter? interpreter; internal void ApplyTrueTypeHinting(HintingMode hintingMode, GlyphMetrics metrics, ref GlyphVector glyphVector, Vector2 scaleXY, float pixelSize) From cf17d52a35e3aee4df7436229a2745f47629e460 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Tue, 5 Sep 2023 22:43:07 +1000 Subject: [PATCH 30/56] Update GlyphVariationProcessor.cs --- .../Variations/GlyphVariationProcessor.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index bd79099c5..3f4062802 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -1,8 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System.Collections.Generic; - namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; /// @@ -131,12 +129,12 @@ public int AdvanceAdjustment(int glyphId) public float[] BlendVector(int outerIndex) { ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; - if (this.blendVectors.ContainsKey(variationData)) + if (this.blendVectors.TryGetValue(variationData, out float[]? blendVector)) { - return this.blendVectors[variationData]; + return blendVector; } - float[] blendVector = new float[variationData.RegionIndexes.Length]; + blendVector = new float[variationData.RegionIndexes.Length]; // Outer loop steps through master designs to be blended. for (int i = 0; i < variationData.RegionIndexes.Length; i++) From 05eaf59fff8419595b2b0d3b34d70b3b5b43dec2 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Tue, 12 Sep 2023 22:05:35 +1000 Subject: [PATCH 31/56] Start figuring out missing implementation. --- .../Variations/GVarTable.cs | 17 ++- .../Variations/GlyphVariationData.cs | 2 +- .../Variations/GlyphVariationProcessor.cs | 107 +++++++++++------- 3 files changed, 72 insertions(+), 54 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs index 10bc414d8..4be1abc59 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs @@ -1,9 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System; -using System.IO; - namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; /// @@ -14,14 +11,17 @@ internal class GVarTable : Table { internal const string TableName = "gvar"; - public GVarTable(int axisCount, float[,] sharedTuples, GlyphVariationData[] glyphVariations) + public GVarTable(ushort axisCount, ushort glyphCount, float[,] sharedTuples, GlyphVariationData[] glyphVariations) { this.AxisCount = axisCount; + this.GlyphCount = glyphCount; this.SharedTuples = sharedTuples; this.GlyphVariations = glyphVariations; } - public int AxisCount { get; } + public ushort AxisCount { get; } + + public ushort GlyphCount { get; } public float[,] SharedTuples { get; } @@ -100,13 +100,12 @@ public static GVarTable Load(BigEndianBinaryReader reader) } int glyphVariationsCount = glyphCount + 1; - var glyphVariations = new GlyphVariationData[glyphVariationsCount]; + GlyphVariationData[] glyphVariations = new GlyphVariationData[glyphVariationsCount]; for (int i = 0; i < glyphVariationsCount; i++) { - var glyphVariation = GlyphVariationData.Load(reader, glyphVariationDataArrayOffset, is32BitOffset, axisCount); - glyphVariations[i] = glyphVariation; + glyphVariations[i] = GlyphVariationData.Load(reader, glyphVariationDataArrayOffset, is32BitOffset, axisCount); } - return new GVarTable(axisCount, sharedTuples, glyphVariations); + return new GVarTable(axisCount, glyphCount, sharedTuples, glyphVariations); } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs index 446d7dda7..955ecd5b1 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs @@ -41,7 +41,7 @@ public static GlyphVariationData Load(BigEndianBinaryReader reader, long offset, bool sharedPointNumbers = (tupleVariationCount & SharedPointNumbersMask) == SharedPointNumbersMask; int tupleVariationTables = tupleVariationCount & CountMask; - var variationHeaders = new TupleVariation[tupleVariationTables]; + TupleVariation[] variationHeaders = new TupleVariation[tupleVariationTables]; for (int i = 0; i < tupleVariationTables; i++) { variationHeaders[i] = TupleVariation.Load(reader, axisCount); diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index 3f4062802..b74e2bf2a 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -1,6 +1,8 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. +using SixLabors.Fonts.Tables.TrueType.Glyphs; + namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; /// @@ -31,6 +33,7 @@ internal class GlyphVariationProcessor /// /// Epsilon as used in fontkit reference implementation. + /// TODO: This could be float.Epsilon, but we need to check if it works. /// private const float Epsilon = 2.2204460492503130808472633361816E-16F; @@ -48,55 +51,24 @@ public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVa this.blendVectors = new Dictionary(); } - private float[] NormalizeDefaultCoords() + public void TransformPoints(ushort glyphId, ref GlyphVector glyphPoints) { - float[] coords = new float[this.fvar.AxisCount]; - for (int i = 0; i < this.fvar.AxisCount; i++) - { - coords[i] = this.fvar.Axes[i].DefaultValue; - } - - // The default mapping is linear along each axis, in two segments: - // from the minValue to defaultValue, and from defaultValue to maxValue. - float[] normalized = new float[this.fvar.AxisCount]; - for (int i = 0; i < this.fvar.AxisCount; i++) + if (this.fvar is null || this.gVar is null) { - VariationAxisRecord axis = this.fvar.Axes[i]; - if (coords[i] < axis.DefaultValue) - { - normalized[i] = (coords[i] - axis.DefaultValue + Epsilon) / (axis.DefaultValue - axis.MinValue + Epsilon); - } - else - { - normalized[i] = (coords[i] - axis.DefaultValue + Epsilon) / (axis.MaxValue - axis.DefaultValue + Epsilon); - } + return; } - // If there is an avar table, the normalized value is calculated - // by interpolating between the two nearest mapped values. - if (this.avar is not null) + if (glyphId > this.gVar.GlyphCount) { - for (int i = 0; i < this.avar.SegmentMaps.Length; i++) - { - SegmentMapRecord segment = this.avar.SegmentMaps[i]; - for (int j = 0; j < segment.AxisValueMap.Length; j++) - { - AxisValueMapRecord pair = segment.AxisValueMap[j]; - if (j >= 1 && normalized[i] < pair.FromCoordinate) - { - AxisValueMapRecord prev = segment.AxisValueMap[j - 1]; - normalized[i] = ((((normalized[i] - prev.FromCoordinate) * (pair.ToCoordinate - prev.ToCoordinate)) + Epsilon) / - (pair.FromCoordinate - prev.FromCoordinate + Epsilon)) + prev.ToCoordinate; - break; - } - } - } + return; } - return normalized; + // TODO: It looks like more work is required in TupleVariation.Load to ensure + // we have all the information we require to transform the points. + GlyphVector originPoints = GlyphVector.DeepClone(glyphPoints); } - public int AdvanceAdjustment(int glyphId) + public float AdvanceAdjustment(int glyphId) { if (this.hVar is null) { @@ -199,7 +171,55 @@ public float[] BlendVector(int outerIndex) return blendVector; } - private int Delta(int outerIndex, int innerIndex) + private float[] NormalizeDefaultCoords() + { + float[] coords = new float[this.fvar.AxisCount]; + for (int i = 0; i < this.fvar.AxisCount; i++) + { + coords[i] = this.fvar.Axes[i].DefaultValue; + } + + // The default mapping is linear along each axis, in two segments: + // from the minValue to defaultValue, and from defaultValue to maxValue. + float[] normalized = new float[this.fvar.AxisCount]; + for (int i = 0; i < this.fvar.AxisCount; i++) + { + VariationAxisRecord axis = this.fvar.Axes[i]; + if (coords[i] < axis.DefaultValue) + { + normalized[i] = (coords[i] - axis.DefaultValue + Epsilon) / (axis.DefaultValue - axis.MinValue + Epsilon); + } + else + { + normalized[i] = (coords[i] - axis.DefaultValue + Epsilon) / (axis.MaxValue - axis.DefaultValue + Epsilon); + } + } + + // If there is an avar table, the normalized value is calculated + // by interpolating between the two nearest mapped values. + if (this.avar is not null) + { + for (int i = 0; i < this.avar.SegmentMaps.Length; i++) + { + SegmentMapRecord segment = this.avar.SegmentMaps[i]; + for (int j = 0; j < segment.AxisValueMap.Length; j++) + { + AxisValueMapRecord pair = segment.AxisValueMap[j]; + if (j >= 1 && normalized[i] < pair.FromCoordinate) + { + AxisValueMapRecord prev = segment.AxisValueMap[j - 1]; + normalized[i] = ((((normalized[i] - prev.FromCoordinate) * (pair.ToCoordinate - prev.ToCoordinate)) + Epsilon) / + (pair.FromCoordinate - prev.FromCoordinate + Epsilon)) + prev.ToCoordinate; + break; + } + } + } + } + + return normalized; + } + + private float Delta(int outerIndex, int innerIndex) { if (outerIndex >= this.itemStore.ItemVariations.Length) { @@ -214,11 +234,10 @@ private int Delta(int outerIndex, int innerIndex) DeltaSet deltaSet = variationData.DeltaSets[innerIndex]; float[] blendVector = this.BlendVector(outerIndex); - int netAdjustment = 0; + float netAdjustment = 0; for (int master = 0; master < variationData.RegionIndexes.Length; master++) { - // TODO: disabled, no deltaSet does not have Deltas field. - // netAdjustment += deltaSet.Deltas[master] * blendVector[master]; + netAdjustment += deltaSet.Deltas[master] * blendVector[master]; } return netAdjustment; From 899bd45c5a8bdbedfb5f5e6650d5b817f5123543 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Mon, 17 Nov 2025 18:24:33 +1000 Subject: [PATCH 32/56] Fix build --- .../AdvancedTypographic/Variations/AxisValueMapRecord.cs | 4 ++-- .../Tables/AdvancedTypographic/Variations/GVarTable.cs | 2 +- .../Variations/GlyphVariationProcessor.cs | 2 +- .../Tables/AdvancedTypographic/Variations/HVarTable.cs | 4 +--- .../AdvancedTypographic/Variations/ItemVariationStore.cs | 9 +++------ .../AdvancedTypographic/Variations/TupleVariation.cs | 6 +++--- .../Variations/VariationRegionList.cs | 6 +++--- 7 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AxisValueMapRecord.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AxisValueMapRecord.cs index 32c0706e9..5de18f43e 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AxisValueMapRecord.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/AxisValueMapRecord.cs @@ -25,8 +25,8 @@ public static AxisValueMapRecord Load(BigEndianBinaryReader reader) // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ // | F2DOT14 | toCoordinate | The modified, normalized coordinate value. | // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - float fromCoordinate = reader.ReadF2dot14(); - float toCoordinate = reader.ReadF2dot14(); + float fromCoordinate = reader.ReadF2Dot14(); + float toCoordinate = reader.ReadF2Dot14(); return new AxisValueMapRecord(fromCoordinate, toCoordinate); } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs index 4be1abc59..cb20a72ea 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs @@ -95,7 +95,7 @@ public static GVarTable Load(BigEndianBinaryReader reader) { for (int j = 0; j < axisCount; j++) { - sharedTuples[i, j] = reader.ReadF2dot14(); + sharedTuples[i, j] = reader.ReadF2Dot14(); } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index b74e2bf2a..fc73933e0 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -48,7 +48,7 @@ public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVa this.gVar = gVar; this.hVar = hVar; this.normalizedCoords = this.NormalizeDefaultCoords(); - this.blendVectors = new Dictionary(); + this.blendVectors = []; } public void TransformPoints(ushort glyphId, ref GlyphVector glyphPoints) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs index 9c795bd3f..fcf032943 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs @@ -1,8 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System; - namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; /// @@ -78,7 +76,7 @@ public static HVarTable Load(BigEndianBinaryReader reader) throw new NotSupportedException("Only version 1 of hvar table is supported"); } - var itemVariationStore = ItemVariationStore.Load(reader, itemVariationStoreOffset); + ItemVariationStore itemVariationStore = ItemVariationStore.Load(reader, itemVariationStoreOffset); DeltaSetIndexMap[] advanceWidthMapping = DeltaSetIndexMap.Load(reader, advanceWidthMappingOffset); DeltaSetIndexMap[] lsbMapping = DeltaSetIndexMap.Load(reader, lsbMappingOffset); diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs index fd105bbec..88660cd4d 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/ItemVariationStore.cs @@ -1,8 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System.IO; - namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; /// @@ -53,7 +51,7 @@ public static ItemVariationStore Load(BigEndianBinaryReader reader, long offset, throw new InvalidFontFileException("Invalid variation region list offset"); } - var itemVariations = new ItemVariationData[itemVariationDataCount]; + ItemVariationData[] itemVariations = new ItemVariationData[itemVariationDataCount]; long itemVariationsOffset = reader.BaseStream.Position; for (int i = 0; i < itemVariationDataCount; i++) { @@ -64,13 +62,12 @@ public static ItemVariationStore Load(BigEndianBinaryReader reader, long offset, throw new InvalidFontFileException("Bad offset to variation data subtable"); } - var itemVariationData = ItemVariationData.Load(reader, offset + variationDataOffset); - itemVariations[i] = itemVariationData; + itemVariations[i] = ItemVariationData.Load(reader, offset + variationDataOffset); reader.BaseStream.Position = itemVariationsOffset; } - var variationRegionList = VariationRegionList.Load(reader, offset + variationRegionListOffset); + VariationRegionList variationRegionList = VariationRegionList.Load(reader, offset + variationRegionListOffset); return new ItemVariationStore(variationRegionList, itemVariations); } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs index 7581d6af1..768c6799e 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs @@ -82,7 +82,7 @@ public static TupleVariation Load(BigEndianBinaryReader reader, int axisCount) embeddedPeak = new float[axisCount]; for (int i = 0; i < axisCount; i++) { - embeddedPeak[i] = reader.ReadF2dot14(); + embeddedPeak[i] = reader.ReadF2Dot14(); bytesRead += 2; } } @@ -94,14 +94,14 @@ public static TupleVariation Load(BigEndianBinaryReader reader, int axisCount) intermediateStartRegion = new float[axisCount]; for (int i = 0; i < axisCount; i++) { - intermediateStartRegion[i] = reader.ReadF2dot14(); + intermediateStartRegion[i] = reader.ReadF2Dot14(); bytesRead += 2; } intermediateEndRegion = new float[axisCount]; for (int i = 0; i < axisCount; i++) { - intermediateEndRegion[i] = reader.ReadF2dot14(); + intermediateEndRegion[i] = reader.ReadF2Dot14(); bytesRead += 2; } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationRegionList.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationRegionList.cs index 4d86f53a6..18b058c5d 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationRegionList.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VariationRegionList.cs @@ -55,9 +55,9 @@ public static VariationRegionList Load(BigEndianBinaryReader reader, long offset variationRegions[i] = new RegionAxisCoordinates[axisCount]; for (int j = 0; j < axisCount; j++) { - float startCoord = reader.ReadF2dot14(); - float peakCoord = reader.ReadF2dot14(); - float endCoord = reader.ReadF2dot14(); + float startCoord = reader.ReadF2Dot14(); + float peakCoord = reader.ReadF2Dot14(); + float endCoord = reader.ReadF2Dot14(); if (startCoord > peakCoord || peakCoord > endCoord) { From a8859b280a904f8262a4304531236d907e0c15f6 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Tue, 27 Jan 2026 20:54:24 +1000 Subject: [PATCH 33/56] Fix gvar loading --- .../Variations/GVarTable.cs | 75 +++++++++++++++---- .../Variations/GlyphVariationData.cs | 24 +++--- .../Tables/Variations/VariationsTests.cs | 5 +- 3 files changed, 80 insertions(+), 24 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs index cb20a72ea..c177fe6b9 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs @@ -29,18 +29,18 @@ public GVarTable(ushort axisCount, ushort glyphCount, float[,] sharedTuples, Gly public static GVarTable? Load(FontReader reader) { - if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) + if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader, out TableHeader? header)) { return null; } using (binaryReader) { - return Load(binaryReader); + return Load(binaryReader, header); } } - public static GVarTable Load(BigEndianBinaryReader reader) + public static GVarTable Load(BigEndianBinaryReader reader, TableHeader header) { // VariationsTable `gvar` // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ @@ -73,37 +73,84 @@ public static GVarTable Load(BigEndianBinaryReader reader) // | Offset16 or | glyphVariationDataOffsets[glyphCount+1]| Offsets from the start of the GlyphVariationData array to each | // | Offset32 | | GlyphVariationData table. | // +-----------------+----------------------------------------+-------------------------------------------------------------------------+ - long startOffset = reader.BaseStream.Position; + uint gvarTableLength = header.Length; ushort major = reader.ReadUInt16(); ushort minor = reader.ReadUInt16(); ushort axisCount = reader.ReadUInt16(); ushort sharedTupleCount = reader.ReadUInt16(); - ushort sharedTuplesOffset = reader.ReadOffset16(); + uint sharedTuplesOffset = reader.ReadOffset32(); ushort glyphCount = reader.ReadUInt16(); ushort flags = reader.ReadUInt16(); bool is32BitOffset = (flags & 1) == 1; - ushort glyphVariationDataArrayOffset = reader.ReadOffset16(); + uint glyphVariationDataArrayOffset = reader.ReadOffset32(); if (major != 1) { throw new NotSupportedException("Only version 1 of gvar table is supported"); } - reader.Seek(startOffset + sharedTuplesOffset, SeekOrigin.Begin); + // Read glyphVariationDataOffsets[glyphCount + 1] immediately after the header, + // as required by the spec and as done by FreeType. + int offsetCount = glyphCount + 1; + uint[] glyphVariationOffsets = new uint[offsetCount]; + + for (int i = 0; i < offsetCount; i++) + { + // If offsets are 16-bit, values are stored in units of 2 bytes. + glyphVariationOffsets[i] = is32BitOffset + ? reader.ReadUInt32() + : (uint)(reader.ReadUInt16() * 2); + } + + // Shared tuple records float[,] sharedTuples = new float[sharedTupleCount, axisCount]; - for (int i = 0; i < sharedTupleCount; i++) + + if (sharedTupleCount > 0 && axisCount > 0) { - for (int j = 0; j < axisCount; j++) + long tuplesPos = sharedTuplesOffset; + long tuplesLimit = glyphVariationDataArrayOffset; + long bytesPerTuple = (long)axisCount * 2; + long bytesAvailable = tuplesLimit - tuplesPos; + + long maxTuples = bytesAvailable > 0 + ? bytesAvailable / bytesPerTuple + : 0; + + int tuplesToRead = (int)Math.Min(sharedTupleCount, maxTuples); + + reader.Seek(tuplesPos, SeekOrigin.Begin); + + for (int i = 0; i < tuplesToRead; i++) { - sharedTuples[i, j] = reader.ReadF2Dot14(); + for (int j = 0; j < axisCount; j++) + { + sharedTuples[i, j] = reader.ReadF2Dot14(); + } } + + // Any remaining tuples default to 0.0F. } - int glyphVariationsCount = glyphCount + 1; - GlyphVariationData[] glyphVariations = new GlyphVariationData[glyphVariationsCount]; - for (int i = 0; i < glyphVariationsCount; i++) + // GlyphVariationData tables + long glyphDataBase = glyphVariationDataArrayOffset; + GlyphVariationData[] glyphVariations = new GlyphVariationData[glyphCount]; + + // Reader is positioned at table start + long gvarEnd = gvarTableLength; + + for (int i = 0; i < glyphCount; i++) { - glyphVariations[i] = GlyphVariationData.Load(reader, glyphVariationDataArrayOffset, is32BitOffset, axisCount); + long start = glyphDataBase + glyphVariationOffsets[i]; + long end = glyphDataBase + glyphVariationOffsets[i + 1]; // spec gives glyphCount+1 offsets + + // Validate range (must be within table and non-decreasing) + if (start < glyphDataBase || end < start || end > gvarEnd || start + 2 > gvarEnd) + { + glyphVariations[i] = new GlyphVariationData(); // or null if allowed + continue; + } + + glyphVariations[i] = GlyphVariationData.Load(reader, start, is32BitOffset, axisCount); } return new GVarTable(axisCount, glyphCount, sharedTuples, glyphVariations); diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs index 955ecd5b1..2dff30c08 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs @@ -1,8 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System.IO; - namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; /// @@ -17,7 +15,7 @@ internal class GlyphVariationData internal const int CountMask = 0x0FFF; /// - /// Flag indicating that some or all tuple variation tables reference a shared set of “point” numbers. + /// Flag indicating that some or all tuple variation tables reference a shared set of "point" numbers. /// These shared numbers are represented as packed point number data at the start of the serialized data. /// internal const int SharedPointNumbersMask = 0x8000; @@ -36,20 +34,28 @@ public static GlyphVariationData Load(BigEndianBinaryReader reader, long offset, // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ // | TupleVariation | tupleVariationHeaders[tupleVariationCount]| Array of tuple variation headers. | // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ + // NOTE: 'offset' is relative to the start of the gvar table. reader.Seek(offset, SeekOrigin.Begin); ushort tupleVariationCount = reader.ReadUInt16(); bool sharedPointNumbers = (tupleVariationCount & SharedPointNumbersMask) == SharedPointNumbersMask; - int tupleVariationTables = tupleVariationCount & CountMask; - TupleVariation[] variationHeaders = new TupleVariation[tupleVariationTables]; - for (int i = 0; i < tupleVariationTables; i++) + // Spec: dataOffset is Offset16 (always 16-bit), independent of the gvar offset array format. + // This offset is relative to the start of this GlyphVariationData table. + ushort serializedDataOffset = reader.ReadOffset16(); + + TupleVariation[] variationHeaders = new TupleVariation[tupleVariationCount & CountMask]; + for (int i = 0; i < variationHeaders.Length; i++) { variationHeaders[i] = TupleVariation.Load(reader, axisCount); } - // TODO: parse serialized data - int serializedDataOffset = is32BitOffset ? reader.ReadInt32() : reader.ReadOffset16(); - reader.Seek(offset + serializedDataOffset, SeekOrigin.Begin); + long serializedDataPos = offset + serializedDataOffset; + reader.Seek(serializedDataPos, SeekOrigin.Begin); + + _ = sharedPointNumbers; + _ = is32BitOffset; + _ = axisCount; + _ = variationHeaders; return new GlyphVariationData(); } } diff --git a/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationsTests.cs b/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationsTests.cs index 500cee38f..4b5ac9caf 100644 --- a/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationsTests.cs +++ b/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationsTests.cs @@ -18,5 +18,8 @@ private static Font CreateFont(string testFont) [Fact] public void CanLoadVariationTables() - => Assert.True(RobotoFlexTTF.FontMetrics.TryGetVariationAxes(out VariationAxis[] axes)); + { + // TODO: Assert contents. + Assert.True(RobotoFlexTTF.FontMetrics.TryGetVariationAxes(out VariationAxis[] axes)); + } } From d6aeefeb968e0e8f853b77f6dabb143536a06c6d Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Tue, 27 Jan 2026 22:40:26 +1000 Subject: [PATCH 34/56] Wire up variations table loading --- src/SixLabors.Fonts/StreamFontMetrics.Cff.cs | 8 +- .../StreamFontMetrics.TrueType.cs | 24 ++++- src/SixLabors.Fonts/StreamFontMetrics.cs | 6 +- .../Variations/DeltaSetIndexMap.cs | 38 +++---- .../Variations/FVarTable.cs | 6 +- .../Variations/GlyphVariationProcessor.cs | 13 ++- .../Variations/HVarTable.cs | 20 ++-- .../Variations/VVarTable.cs | 100 ++++++++++++++++++ src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs | 2 +- src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs | 1 - .../Tables/Cff/CompactFontTables.cs | 4 + src/SixLabors.Fonts/Tables/Cff/ICffTable.cs | 6 +- src/SixLabors.Fonts/Tables/TableLoader.cs | 1 + .../Tables/TrueType/Glyphs/GlyphTable.cs | 13 +-- .../Tables/TrueType/TrueTypeFontTables.cs | 2 + 15 files changed, 187 insertions(+), 57 deletions(-) create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VVarTable.cs diff --git a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs index bc8927a98..a454383b5 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs @@ -57,6 +57,9 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) FVarTable? fVar = reader.TryGetTable(); AVarTable? aVar = reader.TryGetTable(); GVarTable? gVar = reader.TryGetTable(); + HVarTable? hVar = reader.TryGetTable(); + VVarTable? vVar = reader.TryGetTable(); + GlyphVariationProcessor? glyphVariationProcessor = null; if (cff?.ItemVariationStore != null) { @@ -65,7 +68,8 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) throw new InvalidFontFileException("missing fvar table required for glyph variations processing"); } - glyphVariationProcessor = new GlyphVariationProcessor(cff.ItemVariationStore, fVar, aVar, gVar); + // TODO: The docs say that hvar and vvar can be used for CFF fonts so how do we determine when to use them? + glyphVariationProcessor = new GlyphVariationProcessor(cff.ItemVariationStore, fVar, aVar, gVar, hVar, vVar); } CompactFontTables tables = new(cmap, head, hhea, htmx, maxp, name, os2, post, cff!) @@ -81,6 +85,8 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) FVar = fVar, AVar = aVar, GVar = gVar, + HVar = hVar, + VVar = vVar, Svg = svg }; diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index f5b6d87f9..8c9963b5a 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -87,14 +87,13 @@ internal void ApplyTrueTypeHinting(HintingMode hintingMode, GlyphMetrics metrics private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) { + // TODO: This doesn't seem correct. The glyf table should only load the raw data. + // Transformations should probably be applied later when glyphs are requested. // Load glyph variations related tables first, because glyph table needs them. - FVarTable? fvar = reader.TryGetTable(); - AVarTable? avar = reader.TryGetTable(); - GVarTable? gvar = reader.TryGetTable(); - HVarTable? hvar = reader.TryGetTable(); + // Load using recommended order for best performance. - // https://www.microsoft.com/typography/otspec/recom.htm#TableOrdering + // https://learn.microsoft.com/en-gb/typography/opentype/spec/recom#optimized-table-ordering // 'head', 'hhea', 'maxp', OS/2, 'hmtx', LTSH, VDMX, 'hdmx', 'cmap', 'fpgm', 'prep', 'cvt ', 'loca', 'glyf', 'kern', 'name', 'post', 'gasp', PCLT, DSIG HeadTable head = reader.GetTable(); HorizontalHeadTable hhea = reader.GetTable(); @@ -122,6 +121,12 @@ private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) GSubTable? gSub = reader.TryGetTable(); GPosTable? gPos = reader.TryGetTable(); + FVarTable? fvar = reader.TryGetTable(); + AVarTable? avar = reader.TryGetTable(); + GVarTable? gvar = reader.TryGetTable(); + HVarTable? hvar = reader.TryGetTable(); + VVarTable? vvar = reader.TryGetTable(); + ColrTable? colr = reader.TryGetTable(); CpalTable? cpal = reader.TryGetTable(); @@ -143,10 +148,19 @@ private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) Fvar = fvar, Gvar = gvar, Hvar = hvar, + Vvar = vvar, Avar = avar, Svg = svg }; + GlyphVariationProcessor? glyphVariationProcessor = null; + if (fvar != null && (hvar != null || vvar != null)) + { + // vvar can only be present if hvar is absent and vice versa. + ItemVariationStore itemVariationStore = hvar != null ? hvar.ItemVariationStore : vvar!.ItemVariationStore; + glyphVariationProcessor = new GlyphVariationProcessor(itemVariationStore, fvar, avar, gvar, hvar, vvar); + } + return new StreamFontMetrics(tables); } diff --git a/src/SixLabors.Fonts/StreamFontMetrics.cs b/src/SixLabors.Fonts/StreamFontMetrics.cs index bcc3f71bf..20a48e47a 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.cs @@ -57,11 +57,13 @@ internal partial class StreamFontMetrics : FontMetrics /// Initializes a new instance of the class. /// /// The True Type font tables. - internal StreamFontMetrics(TrueTypeFontTables tables) + /// An optional glyph variation processor for handling variable fonts. + internal StreamFontMetrics(TrueTypeFontTables tables, GlyphVariationProcessor? glyphVariationProcessor = null) { this.trueTypeFontTables = tables; this.outlineType = OutlineType.TrueType; this.description = new FontDescription(tables.Name, tables.Os2, tables.Head); + this.GlyphVariationProcessor = glyphVariationProcessor; this.glyphIdCache = new(); this.codePointCache = new(); this.glyphCache = new(); @@ -77,7 +79,7 @@ internal StreamFontMetrics(TrueTypeFontTables tables) /// Initializes a new instance of the class. /// /// The Compact Font tables. - /// Processor which handles glyph variations. + /// An optional glyph variation processor for handling variable fonts. internal StreamFontMetrics(CompactFontTables tables, GlyphVariationProcessor? glyphVariationProcessor = null) { this.compactFontTables = tables; diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs index 6d42157ff..a470ef988 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs @@ -1,9 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System; -using System.IO; - namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; internal class DeltaSetIndexMap @@ -22,8 +19,14 @@ public DeltaSetIndexMap(int outerIndex, int innerIndex) public int InnerIndex { get; } - public static DeltaSetIndexMap[] Load(BigEndianBinaryReader reader, long offset) + public static DeltaSetIndexMap[]? Load(BigEndianBinaryReader reader, long offset) { + // This can be null if the offset is zero. + if (offset == 0) + { + return null; + } + // DeltaSetIndexMap. // +-----------------+----------------------------------------+-----------------------------------------------------------------------------------+ // | Type | Name | Description | @@ -50,28 +53,17 @@ public static DeltaSetIndexMap[] Load(BigEndianBinaryReader reader, long offset) int outerIndex = entrySize >> ((entryFormat & InnerIndexBitCountMask) + 1); int innerIndex = entrySize & ((1 << ((entryFormat & InnerIndexBitCountMask) + 1)) - 1); - var deltaSetIndexMaps = new DeltaSetIndexMap[mapCount]; + DeltaSetIndexMap[] deltaSetIndexMaps = new DeltaSetIndexMap[mapCount]; for (int i = 0; i < mapCount; i++) { - int entry; - switch (entrySize) + int entry = entrySize switch { - case 1: - entry = reader.ReadByte(); - break; - case 2: - entry = (reader.ReadByte() << 8) | reader.ReadByte(); - break; - case 3: - entry = (reader.ReadByte() << 16) | (reader.ReadByte() << 8) | reader.ReadByte(); - break; - case 4: - entry = (reader.ReadByte() << 24) | (reader.ReadByte() << 16) | (reader.ReadByte() << 8) | reader.ReadByte(); - break; - default: - throw new NotSupportedException("unsupported delta set index map"); - } - + 1 => reader.ReadByte(), + 2 => (reader.ReadByte() << 8) | reader.ReadByte(), + 3 => (reader.ReadByte() << 16) | (reader.ReadByte() << 8) | reader.ReadByte(), + 4 => (reader.ReadByte() << 24) | (reader.ReadByte() << 16) | (reader.ReadByte() << 8) | reader.ReadByte(), + _ => throw new NotSupportedException("unsupported delta set index map"), + }; deltaSetIndexMaps[i] = new DeltaSetIndexMap((ushort)(entry & innerIndex), (ushort)(entry >> outerIndex)); } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs index 7352768e2..d52bd89f9 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/FVarTable.cs @@ -1,8 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System; - namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; /// @@ -82,13 +80,13 @@ public static FVarTable Load(BigEndianBinaryReader reader) throw new NotSupportedException("Only version 1 of fvar table is supported"); } - var axesArray = new VariationAxisRecord[axisCount]; + VariationAxisRecord[] axesArray = new VariationAxisRecord[axisCount]; for (int i = 0; i < axisCount; i++) { axesArray[i] = VariationAxisRecord.Load(reader, axesArrayOffset + (axisSize * i)); } - var instances = new InstanceRecord[instanceCount]; + InstanceRecord[] instances = new InstanceRecord[instanceCount]; long instancesOffset = reader.BaseStream.Position - startOffset; for (int i = 0; i < instanceCount; i++) { diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index fc73933e0..b19208eb5 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -27,6 +27,8 @@ internal class GlyphVariationProcessor private readonly HVarTable? hVar; + private readonly VVarTable? vVar; + private readonly float[] normalizedCoords; private readonly Dictionary blendVectors; @@ -37,7 +39,13 @@ internal class GlyphVariationProcessor /// private const float Epsilon = 2.2204460492503130808472633361816E-16F; - public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVarTable? aVar = null, GVarTable? gVar = null, HVarTable? hVar = null) + public GlyphVariationProcessor( + ItemVariationStore itemStore, + FVarTable fVar, + AVarTable? aVar = null, + GVarTable? gVar = null, + HVarTable? hVar = null, + VVarTable? vVar = null) { DebugGuard.NotNull(itemStore, nameof(itemStore)); DebugGuard.NotNull(fVar, nameof(fVar)); @@ -49,6 +57,7 @@ public GlyphVariationProcessor(ItemVariationStore itemStore, FVarTable fVar, AVa this.hVar = hVar; this.normalizedCoords = this.NormalizeDefaultCoords(); this.blendVectors = []; + this.vVar = vVar; } public void TransformPoints(ushort glyphId, ref GlyphVector glyphPoints) @@ -70,6 +79,8 @@ public void TransformPoints(ushort glyphId, ref GlyphVector glyphPoints) public float AdvanceAdjustment(int glyphId) { + // TODO: Support VVAR table for vertical adjustments. + // TOOD: Maybe return 0F if no HVAR/VVAR table is present? if (this.hVar is null) { throw new InvalidFontFileException("Missing HVAR table"); diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs index fcf032943..240fe6bcb 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/HVarTable.cs @@ -7,13 +7,17 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; /// Implements reading the font variations table `HVAR`. /// The HVAR table is used in variable fonts to provide variations for horizontal glyph metrics values. /// This can be used to provide variation data for advance widths in the 'hmtx' table. -/// +/// /// internal class HVarTable : Table { internal const string TableName = "HVAR"; - public HVarTable(ItemVariationStore itemVariationStore, DeltaSetIndexMap[] advanceWidthMapping, DeltaSetIndexMap[] lsbMapping, DeltaSetIndexMap[] rsbMapping) + public HVarTable( + ItemVariationStore itemVariationStore, + DeltaSetIndexMap[]? advanceWidthMapping, + DeltaSetIndexMap[]? lsbMapping, + DeltaSetIndexMap[]? rsbMapping) { this.ItemVariationStore = itemVariationStore; this.AdvanceWidthMapping = advanceWidthMapping; @@ -23,11 +27,11 @@ public HVarTable(ItemVariationStore itemVariationStore, DeltaSetIndexMap[] advan public ItemVariationStore ItemVariationStore { get; } - public DeltaSetIndexMap[] AdvanceWidthMapping { get; } + public DeltaSetIndexMap[]? AdvanceWidthMapping { get; } - public DeltaSetIndexMap[] LsbMapping { get; } + public DeltaSetIndexMap[]? LsbMapping { get; } - public DeltaSetIndexMap[] RsbMapping { get; } + public DeltaSetIndexMap[]? RsbMapping { get; } public static HVarTable? Load(FontReader reader) { @@ -78,9 +82,9 @@ public static HVarTable Load(BigEndianBinaryReader reader) ItemVariationStore itemVariationStore = ItemVariationStore.Load(reader, itemVariationStoreOffset); - DeltaSetIndexMap[] advanceWidthMapping = DeltaSetIndexMap.Load(reader, advanceWidthMappingOffset); - DeltaSetIndexMap[] lsbMapping = DeltaSetIndexMap.Load(reader, lsbMappingOffset); - DeltaSetIndexMap[] rsbMapping = DeltaSetIndexMap.Load(reader, rsbMappingOffset); + DeltaSetIndexMap[]? advanceWidthMapping = DeltaSetIndexMap.Load(reader, advanceWidthMappingOffset); + DeltaSetIndexMap[]? lsbMapping = DeltaSetIndexMap.Load(reader, lsbMappingOffset); + DeltaSetIndexMap[]? rsbMapping = DeltaSetIndexMap.Load(reader, rsbMappingOffset); return new HVarTable(itemVariationStore, advanceWidthMapping, lsbMapping, rsbMapping); } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VVarTable.cs new file mode 100644 index 000000000..15d896cf2 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/VVarTable.cs @@ -0,0 +1,100 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// Implements reading the font variations table `VVAR`. +/// The VVAR table is used in variable fonts to provide variations for vertical glyph metrics values. +/// This can be used to provide variation data for advance heights in the 'vmtx' table. +/// +/// +internal class VVarTable : Table +{ + internal const string TableName = "VVAR"; + + public VVarTable( + ItemVariationStore itemVariationStore, + DeltaSetIndexMap[]? advanceWidthMapping, + DeltaSetIndexMap[]? tsbMapping, + DeltaSetIndexMap[]? bsbMapping, + DeltaSetIndexMap[]? vOrgMapping) + { + this.ItemVariationStore = itemVariationStore; + this.AdvanceWidthMapping = advanceWidthMapping; + this.TsbMapping = tsbMapping; + this.BsbMapping = bsbMapping; + this.VOrgMapping = vOrgMapping; + } + + public ItemVariationStore ItemVariationStore { get; } + + public DeltaSetIndexMap[]? AdvanceWidthMapping { get; } + + public DeltaSetIndexMap[]? TsbMapping { get; } + + public DeltaSetIndexMap[]? BsbMapping { get; } + + public DeltaSetIndexMap[]? VOrgMapping { get; } + + public static VVarTable? Load(FontReader reader) + { + if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) + { + return null; + } + + using (binaryReader) + { + return Load(binaryReader); + } + } + + public static VVarTable Load(BigEndianBinaryReader reader) + { + // Horizontal metrics variations table + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Type | Name | Description | + // +==========================+========================================+=========================================================================+ + // | uint16 | majorVersion | Major version number of the font variations table — set to 1. | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | uint16 | minorVersion | Minor version number of the font variations table — set to 0. | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | itemVariationStoreOffset | Offset in bytes from the start of this table to the | + // | | | item variation store table. | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | advanceHeightMappingOffset | Offset in bytes from the start of this table to the delta-set index | + // | | | mapping for advance heights (may be NULL). | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | tsbMappingOffset | Offset in bytes from the start of this table to the delta-set index | + // | | | mapping for top side bearings (may be NULL). | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | bsbMappingOffset | Offset in bytes from the start of this table to the delta-set index | + // | | | mapping for bottom side bearings (may be NULL). | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + // | Offset32 | vOrgMappingOffset | Offset in bytes from the start of this table to the delta-set index | + // | | | mapping for Y coordinates of vertical origins (may be NULL). | + // +--------------------------+----------------------------------------+-------------------------------------------------------------------------+ + ushort major = reader.ReadUInt16(); + ushort minor = reader.ReadUInt16(); + uint itemVariationStoreOffset = reader.ReadOffset32(); + uint advanceHeightMappingOffset = reader.ReadOffset32(); + uint tsbMappingOffset = reader.ReadOffset32(); + uint bsbMappingOffset = reader.ReadOffset32(); + uint vOrgMappingOffset = reader.ReadOffset32(); + + if (major != 1) + { + throw new NotSupportedException("Only version 1 of hvar table is supported"); + } + + ItemVariationStore itemVariationStore = ItemVariationStore.Load(reader, itemVariationStoreOffset); + + DeltaSetIndexMap[]? advanceHeightMapping = DeltaSetIndexMap.Load(reader, advanceHeightMappingOffset); + DeltaSetIndexMap[]? tsbMapping = DeltaSetIndexMap.Load(reader, tsbMappingOffset); + DeltaSetIndexMap[]? bsbMapping = DeltaSetIndexMap.Load(reader, bsbMappingOffset); + DeltaSetIndexMap[]? vOrgMapping = DeltaSetIndexMap.Load(reader, vOrgMappingOffset); + + return new VVarTable(itemVariationStore, advanceHeightMapping, tsbMapping, bsbMapping, vOrgMapping); + } +} diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs index e12886850..4b3802cd2 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs @@ -11,7 +11,7 @@ namespace SixLabors.Fonts.Tables.Cff; /// internal class Cff2Parser : CffParserBase { - private static readonly ItemVariationStore EmptyItemVariationStoreTable = new(VariationRegionList.EmptyVariationRegionList, Array.Empty()); + private static readonly ItemVariationStore EmptyItemVariationStoreTable = new(VariationRegionList.EmptyVariationRegionList, []); private long offset; diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs index 505debab8..47a714688 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs @@ -1,7 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System; using System.Globalization; using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Tables.General.Name; diff --git a/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs b/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs index 066c6bc5d..e342e3c9b 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs @@ -74,6 +74,10 @@ public CompactFontTables( public GVarTable? GVar { get; set; } + public HVarTable? HVar { get; set; } + + public VVarTable? VVar { get; set; } + public SvgTable? Svg { get; set; } // Tables Related to CFF Outlines diff --git a/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs b/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs index 9ff1a9b85..0e2a7e454 100644 --- a/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs +++ b/src/SixLabors.Fonts/Tables/Cff/ICffTable.cs @@ -13,7 +13,7 @@ internal interface ICffTable /// /// Gets the number of glyphs in the table. /// - int GlyphCount + public int GlyphCount { get; } @@ -22,7 +22,7 @@ int GlyphCount /// Gets the item variation store. /// /// The item variation store. If CFF1, there is no variations and null will be returned instead. - ItemVariationStore? ItemVariationStore + public ItemVariationStore? ItemVariationStore { get; } @@ -32,5 +32,5 @@ int GlyphCount /// /// The glyph index. /// The . - CffGlyphData GetGlyph(int index); + public CffGlyphData GetGlyph(int index); } diff --git a/src/SixLabors.Fonts/Tables/TableLoader.cs b/src/SixLabors.Fonts/Tables/TableLoader.cs index 1fa682ba2..26d7d2d1d 100644 --- a/src/SixLabors.Fonts/Tables/TableLoader.cs +++ b/src/SixLabors.Fonts/Tables/TableLoader.cs @@ -52,6 +52,7 @@ public TableLoader() this.Register(GVarTable.TableName, GVarTable.Load); this.Register(FVarTable.TableName, FVarTable.Load); this.Register(HVarTable.TableName, HVarTable.Load); + this.Register(VVarTable.TableName, VVarTable.Load); this.Register(SvgTable.TableName, SvgTable.Load); } diff --git a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs index 89290c830..779d2c527 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphTable.cs @@ -2,7 +2,6 @@ // Licensed under the Six Labors Split License. using System.Collections.Concurrent; -using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Tables.Woff; namespace SixLabors.Fonts.Tables.TrueType.Glyphs; @@ -36,12 +35,6 @@ public static GlyphTable Load(FontReader reader) { uint[] locations = reader.GetTable().GlyphOffsets; - FVarTable? fvar = reader.TryGetTable(); - AVarTable? avar = reader.TryGetTable(); - GVarTable? gvar = reader.TryGetTable(); - HVarTable? hvar = reader.TryGetTable(); - GlyphVariationProcessor? glyphVariationProcessor = fvar is null || hvar is null ? null : new GlyphVariationProcessor(hvar!.ItemVariationStore, fvar, avar, gvar); - // Use an empty bounds instance as the fallback. // We will substitute this with the advance width/height to determine bounds instead when rendering/measuring. Bounds fallbackEmptyBounds = Bounds.Empty; @@ -50,7 +43,11 @@ public static GlyphTable Load(FontReader reader) return Load(binaryReader, reader.TableFormat, locations, in fallbackEmptyBounds); } - public static GlyphTable Load(BigEndianBinaryReader reader, TableFormat format, uint[] locations, in Bounds fallbackEmptyBounds) + public static GlyphTable Load( + BigEndianBinaryReader reader, + TableFormat format, + uint[] locations, + in Bounds fallbackEmptyBounds) { EmptyGlyphLoader empty = new(fallbackEmptyBounds); int entryCount = locations.Length; diff --git a/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs b/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs index a9897fc6e..35a050465 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs @@ -107,4 +107,6 @@ public TrueTypeFontTables( public GVarTable? Gvar { get; set; } public HVarTable? Hvar { get; set; } + + public VVarTable? Vvar { get; set; } } From f8ab0162155a6b12da3a2c0a7143670ee085ecfd Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Tue, 27 Jan 2026 22:43:25 +1000 Subject: [PATCH 35/56] Fix build --- src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index 8c9963b5a..66c4fdc11 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -91,7 +91,6 @@ private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) // Transformations should probably be applied later when glyphs are requested. // Load glyph variations related tables first, because glyph table needs them. - // Load using recommended order for best performance. // https://learn.microsoft.com/en-gb/typography/opentype/spec/recom#optimized-table-ordering // 'head', 'hhea', 'maxp', OS/2, 'hmtx', LTSH, VDMX, 'hdmx', 'cmap', 'fpgm', 'prep', 'cvt ', 'loca', 'glyf', 'kern', 'name', 'post', 'gasp', PCLT, DSIG From 7f066a327a2ddbfcd84cb0d2330260940372b1b8 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 13 Feb 2026 14:50:24 +1000 Subject: [PATCH 36/56] Pass varations processor to TT streamFontMetrics --- src/SixLabors.Fonts/StreamFontMetrics.Cff.cs | 2 +- src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs | 2 +- src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs index a454383b5..1f7d8bd18 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs @@ -23,7 +23,7 @@ internal partial class StreamFontMetrics private static StreamFontMetrics LoadCompactFont(FontReader reader) { // Load using recommended order for best performance. - // https://www.microsoft.com/typography/otspec/recom.htm#TableOrdering + // https://learn.microsoft.com/en-gb/typography/opentype/spec/recom#optimized-table-ordering // 'head', 'hhea', 'maxp', OS/2, 'name', 'cmap', 'post', 'CFF ' / 'CFF2' HeadTable head = reader.GetTable(); HorizontalHeadTable hhea = reader.GetTable(); diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index 66c4fdc11..e258fb4c8 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -160,7 +160,7 @@ private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) glyphVariationProcessor = new GlyphVariationProcessor(itemVariationStore, fvar, avar, gvar, hvar, vvar); } - return new StreamFontMetrics(tables); + return new StreamFontMetrics(tables, glyphVariationProcessor); } private GlyphMetrics CreateTrueTypeGlyphMetrics( diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs index 4b3802cd2..57e37d0af 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs @@ -7,7 +7,7 @@ namespace SixLabors.Fonts.Tables.Cff; /// -/// Parses a Compact Font Format (CFF) version 2 described in https://docs.microsoft.com/de-de/typography/opentype/spec/cff2 +/// Parses a Compact Font Format (CFF) version 2 described in https://docs.microsoft.com/en-gb/typography/opentype/spec/cff2 /// internal class Cff2Parser : CffParserBase { From 20d2d7f0b45104ef66bb3c915f6860dbc9528f9d Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sun, 8 Mar 2026 15:09:58 +0100 Subject: [PATCH 37/56] Assert variation table content --- .../Tables/Variations/VariationsTests.cs | 82 ++++++++++++++++++- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git a/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationsTests.cs b/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationsTests.cs index 4b5ac9caf..7213b64ec 100644 --- a/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationsTests.cs +++ b/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationsTests.cs @@ -19,7 +19,85 @@ private static Font CreateFont(string testFont) [Fact] public void CanLoadVariationTables() { - // TODO: Assert contents. - Assert.True(RobotoFlexTTF.FontMetrics.TryGetVariationAxes(out VariationAxis[] axes)); + Assert.True(RobotoFlexTTF.FontMetrics.TryGetVariationAxes(out VariationAxis[] variationAxes)); + Assert.Equal(13, variationAxes.Length); + + Assert.Equal("wght", variationAxes[0].Name); + Assert.Equal("wght", variationAxes[0].Tag); + Assert.Equal(100, variationAxes[0].Min); + Assert.Equal(1000, variationAxes[0].Max); + Assert.Equal(400, variationAxes[0].Default); + + Assert.Equal("wdth", variationAxes[1].Name); + Assert.Equal("wdth", variationAxes[1].Tag); + Assert.Equal(25, variationAxes[1].Min); + Assert.Equal(151, variationAxes[1].Max); + Assert.Equal(100, variationAxes[1].Default); + + Assert.Equal("opsz", variationAxes[2].Name); + Assert.Equal("opsz", variationAxes[2].Tag); + Assert.Equal(8, variationAxes[2].Min); + Assert.Equal(144, variationAxes[2].Max); + Assert.Equal(14, variationAxes[2].Default); + + Assert.Equal("GRAD", variationAxes[3].Name); + Assert.Equal("GRAD", variationAxes[3].Tag); + Assert.Equal(-200, variationAxes[3].Min); + Assert.Equal(150, variationAxes[3].Max); + Assert.Equal(0, variationAxes[3].Default); + + Assert.Equal("slnt", variationAxes[4].Name); + Assert.Equal("slnt", variationAxes[4].Tag); + Assert.Equal(-10, variationAxes[4].Min); + Assert.Equal(0, variationAxes[4].Max); + Assert.Equal(0, variationAxes[4].Default); + + Assert.Equal("XTRA", variationAxes[5].Name); + Assert.Equal("XTRA", variationAxes[5].Tag); + Assert.Equal(323, variationAxes[5].Min); + Assert.Equal(603, variationAxes[5].Max); + Assert.Equal(468, variationAxes[5].Default); + + Assert.Equal("XOPQ", variationAxes[6].Name); + Assert.Equal("XOPQ", variationAxes[6].Tag); + Assert.Equal(27, variationAxes[6].Min); + Assert.Equal(175, variationAxes[6].Max); + Assert.Equal(96, variationAxes[6].Default); + + Assert.Equal("YOPQ", variationAxes[7].Name); + Assert.Equal("YOPQ", variationAxes[7].Tag); + Assert.Equal(25, variationAxes[7].Min); + Assert.Equal(135, variationAxes[7].Max); + Assert.Equal(79, variationAxes[7].Default); + + Assert.Equal("YTLC", variationAxes[8].Name); + Assert.Equal("YTLC", variationAxes[8].Tag); + Assert.Equal(416, variationAxes[8].Min); + Assert.Equal(570, variationAxes[8].Max); + Assert.Equal(514, variationAxes[8].Default); + + Assert.Equal("YTUC", variationAxes[9].Name); + Assert.Equal("YTUC", variationAxes[9].Tag); + Assert.Equal(528, variationAxes[9].Min); + Assert.Equal(760, variationAxes[9].Max); + Assert.Equal(712, variationAxes[9].Default); + + Assert.Equal("YTAS", variationAxes[10].Name); + Assert.Equal("YTAS", variationAxes[10].Tag); + Assert.Equal(649, variationAxes[10].Min); + Assert.Equal(854, variationAxes[10].Max); + Assert.Equal(750, variationAxes[10].Default); + + Assert.Equal("YTDE", variationAxes[11].Name); + Assert.Equal("YTDE", variationAxes[11].Tag); + Assert.Equal(-305, variationAxes[11].Min); + Assert.Equal(-98, variationAxes[11].Max); + Assert.Equal(-203, variationAxes[11].Default); + + Assert.Equal("YTFI", variationAxes[12].Name); + Assert.Equal("YTFI", variationAxes[12].Tag); + Assert.Equal(560, variationAxes[12].Min); + Assert.Equal(788, variationAxes[12].Max); + Assert.Equal(738, variationAxes[12].Default); } } From a70b77d60796ac9238619c8d1739f8a458ab891c Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sun, 8 Mar 2026 15:34:02 +0100 Subject: [PATCH 38/56] Add test for gettings variations tables for adobe font --- .../Fonts/AdobeVFPrototype.ttf | Bin 0 -> 179988 bytes .../Tables/Variations/VariationsTests.cs | 22 +++++++++++++++++- tests/SixLabors.Fonts.Tests/TestFonts.cs | 11 ++++++++- 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 tests/SixLabors.Fonts.Tests/Fonts/AdobeVFPrototype.ttf diff --git a/tests/SixLabors.Fonts.Tests/Fonts/AdobeVFPrototype.ttf b/tests/SixLabors.Fonts.Tests/Fonts/AdobeVFPrototype.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5a1c1f599ae189b86eea39e6ec435fc4e187cd61 GIT binary patch literal 179988 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¥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 GetFullPath("Roboto-Regular.ttf"); + /// + /// Gets a CFF2 font with variations tables. + /// public static string RobotoFlex => GetFullPath("RobotoFlex.ttf"); + /// + /// Gets a CFF2 font with variations tables. + /// From https://github.com/adobe-fonts/adobe-variable-font-prototype.git + /// + public static string AdobeVFPrototype => GetFullPath("AdobeVFPrototype.ttf"); + public static string SimpleTrueTypeCollection => GetFullPath("Sample.ttc"); public static string WhitneyBookFile => GetFullPath("whitney-book.ttf"); @@ -386,4 +395,4 @@ public static string GetFullPath(string path) return Path.Combine(rootPath, path); } -} \ No newline at end of file +} From 3b107d7a0763ef58fb62c48f1376ba31aa5010cd Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 10:16:27 +1000 Subject: [PATCH 39/56] Add glyph-variation (gvar/hvar/vvar) support --- src/SixLabors.Fonts/Buffer{T}.cs | 10 + src/SixLabors.Fonts/StreamFontMetrics.Cff.cs | 12 + .../StreamFontMetrics.TrueType.cs | 22 +- .../Variations/GVarTable.cs | 10 +- .../Variations/GlyphVariationData.cs | 263 +++++++- .../Variations/GlyphVariationProcessor.cs | 612 ++++++++++++++++-- .../Variations/TupleVariation.cs | 49 +- 7 files changed, 892 insertions(+), 86 deletions(-) diff --git a/src/SixLabors.Fonts/Buffer{T}.cs b/src/SixLabors.Fonts/Buffer{T}.cs index b9a0b1af1..d2ecfcc15 100644 --- a/src/SixLabors.Fonts/Buffer{T}.cs +++ b/src/SixLabors.Fonts/Buffer{T}.cs @@ -19,6 +19,11 @@ internal ref struct Buffer private bool isDisposed; public Buffer(int length) + : this(length, clear: false) + { + } + + public Buffer(int length, bool clear) { Guard.MustBeGreaterThanOrEqualTo(length, 0, nameof(length)); int itemSizeBytes = Unsafe.SizeOf(); @@ -30,6 +35,11 @@ public Buffer(int length) this.Memory = manager.Memory[..this.length]; this.span = this.Memory.Span; + if (clear) + { + this.span.Clear(); + } + this.isDisposed = false; } diff --git a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs index 1f7d8bd18..927384a15 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs @@ -120,6 +120,12 @@ private GlyphMetrics CreateCffGlyphMetrics( ushort advanceWidth = htmx.GetAdvancedWidth(glyphId); short lsb = htmx.GetLeftSideBearing(glyphId); + // Apply HVAR advance width adjustment if available. + if (this.GlyphVariationProcessor is not null) + { + advanceWidth = (ushort)(advanceWidth + MathF.Round(this.GlyphVariationProcessor.AdvanceAdjustment(glyphId))); + } + IMetricsHeader metrics = isVerticalLayout ? this.VerticalMetrics : this.HorizontalMetrics; ushort advancedHeight = (ushort)(metrics.Ascender - metrics.Descender); short tsb = (short)(metrics.Ascender - bounds.Max.Y); @@ -129,6 +135,12 @@ private GlyphMetrics CreateCffGlyphMetrics( tsb = vtmx.GetTopSideBearing(glyphId); } + // Apply VVAR advance height adjustment if available. + if (this.GlyphVariationProcessor is not null) + { + advancedHeight = (ushort)(advancedHeight + MathF.Round(this.GlyphVariationProcessor.VerticalAdvanceAdjustment(glyphId))); + } + // TODO: Support CFF based COLR glyphs. // This requires parsing the CFF charstrings to extract the glyph vectors. SvgTable? svg = tables.Svg; diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index e258fb4c8..6a097d658 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -153,10 +153,11 @@ private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) }; GlyphVariationProcessor? glyphVariationProcessor = null; - if (fvar != null && (hvar != null || vvar != null)) + if (fvar != null) { - // vvar can only be present if hvar is absent and vice versa. - ItemVariationStore itemVariationStore = hvar != null ? hvar.ItemVariationStore : vvar!.ItemVariationStore; + // Use the item variation store from HVAR or VVAR if available (for metrics variations). + // A variable font may have gvar without HVAR/VVAR (using phantom points for metrics instead). + ItemVariationStore? itemVariationStore = hvar?.ItemVariationStore ?? vvar?.ItemVariationStore; glyphVariationProcessor = new GlyphVariationProcessor(itemVariationStore, fvar, avar, gvar, hvar, vvar); } @@ -181,11 +182,20 @@ private GlyphMetrics CreateTrueTypeGlyphMetrics( GlyphVector vector = glyf.GetGlyph(glyphId); + // Apply gvar deltas to the glyph outline if a variation processor is present. + this.GlyphVariationProcessor?.TransformPoints(glyphId, ref vector); + Bounds bounds = vector.Bounds; ushort advanceWidth = htmx.GetAdvancedWidth(glyphId); short lsb = htmx.GetLeftSideBearing(glyphId); + // Apply HVAR advance width adjustment if available. + if (this.GlyphVariationProcessor is not null) + { + advanceWidth = (ushort)(advanceWidth + MathF.Round(this.GlyphVariationProcessor.AdvanceAdjustment(glyphId))); + } + IMetricsHeader metrics = isVerticalLayout ? this.VerticalMetrics : this.HorizontalMetrics; ushort advancedHeight = (ushort)(metrics.Ascender - metrics.Descender); short tsb = (short)(metrics.Ascender - bounds.Max.Y); @@ -195,6 +205,12 @@ private GlyphMetrics CreateTrueTypeGlyphMetrics( tsb = vtmx.GetTopSideBearing(glyphId); } + // Apply VVAR advance height adjustment if available. + if (this.GlyphVariationProcessor is not null) + { + advancedHeight = (ushort)(advancedHeight + MathF.Round(this.GlyphVariationProcessor.VerticalAdvanceAdjustment(glyphId))); + } + ColrTable? colr = tables.Colr; if ((colorSupport & ColorFontSupport.ColrV1) == ColorFontSupport.ColrV1 && colr?.ContainsColorV1Glyph(glyphId) == true) { diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs index c177fe6b9..41cb615a0 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GVarTable.cs @@ -138,19 +138,21 @@ public static GVarTable Load(BigEndianBinaryReader reader, TableHeader header) // Reader is positioned at table start long gvarEnd = gvarTableLength; + GlyphVariationData empty = new([]); for (int i = 0; i < glyphCount; i++) { long start = glyphDataBase + glyphVariationOffsets[i]; long end = glyphDataBase + glyphVariationOffsets[i + 1]; // spec gives glyphCount+1 offsets - // Validate range (must be within table and non-decreasing) - if (start < glyphDataBase || end < start || end > gvarEnd || start + 2 > gvarEnd) + // Validate range (must be within table and non-decreasing). + // Equal offsets mean the glyph has no variation data. + if (start == end || start < glyphDataBase || end < start || end > gvarEnd || start + 2 > gvarEnd) { - glyphVariations[i] = new GlyphVariationData(); // or null if allowed + glyphVariations[i] = empty; continue; } - glyphVariations[i] = GlyphVariationData.Load(reader, start, is32BitOffset, axisCount); + glyphVariations[i] = GlyphVariationData.Load(reader, start, axisCount); } return new GVarTable(axisCount, glyphCount, sharedTuples, glyphVariations); diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs index 2dff30c08..13ce85d9f 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationData.cs @@ -20,7 +20,46 @@ internal class GlyphVariationData /// internal const int SharedPointNumbersMask = 0x8000; - public static GlyphVariationData Load(BigEndianBinaryReader reader, long offset, bool is32BitOffset, int axisCount) + /// + /// Flag indicating that packed deltas are zero and omitted. Lower 6 bits give run count - 1. + /// + private const int DeltasAreZero = 0x80; + + /// + /// Flag indicating that packed deltas are 16-bit (int16). Lower 6 bits give run count - 1. + /// If neither nor is set, deltas are 8-bit (int8). + /// + private const int DeltasAreWords = 0x40; + + /// + /// Mask for the lower 6 bits of a delta run header, giving run count - 1. + /// + private const int DeltaRunCountMask = 0x3F; + + /// + /// Flag in the first byte of packed point numbers indicating that point numbers are 16-bit. + /// + private const int PointsAreWords = 0x80; + + /// + /// Mask for the lower 7 bits of a point run header, giving run count - 1. + /// + private const int PointRunCountMask = 0x7F; + + public GlyphVariationData(TupleVariationHeader[] tupleHeaders) + => this.TupleHeaders = tupleHeaders; + + /// + /// Gets the tuple variation headers with their decoded point indices and deltas. + /// + public TupleVariationHeader[] TupleHeaders { get; } + + /// + /// Gets a value indicating whether this glyph has any variation data. + /// + public bool HasData => this.TupleHeaders.Length > 0; + + public static GlyphVariationData Load(BigEndianBinaryReader reader, long offset, int axisCount) { // GlyphVariationData // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ @@ -37,25 +76,229 @@ public static GlyphVariationData Load(BigEndianBinaryReader reader, long offset, // NOTE: 'offset' is relative to the start of the gvar table. reader.Seek(offset, SeekOrigin.Begin); ushort tupleVariationCount = reader.ReadUInt16(); - bool sharedPointNumbers = (tupleVariationCount & SharedPointNumbersMask) == SharedPointNumbersMask; + bool hasSharedPointNumbers = (tupleVariationCount & SharedPointNumbersMask) != 0; + int tupleCount = tupleVariationCount & CountMask; // Spec: dataOffset is Offset16 (always 16-bit), independent of the gvar offset array format. // This offset is relative to the start of this GlyphVariationData table. ushort serializedDataOffset = reader.ReadOffset16(); - TupleVariation[] variationHeaders = new TupleVariation[tupleVariationCount & CountMask]; - for (int i = 0; i < variationHeaders.Length; i++) + // Read all tuple variation headers first (they come before the serialized data). + TupleVariation[] tupleVariations = new TupleVariation[tupleCount]; + for (int i = 0; i < tupleCount; i++) { - variationHeaders[i] = TupleVariation.Load(reader, axisCount); + tupleVariations[i] = TupleVariation.Load(reader, axisCount); } + // Now read the serialized data that follows the headers. long serializedDataPos = offset + serializedDataOffset; reader.Seek(serializedDataPos, SeekOrigin.Begin); - _ = sharedPointNumbers; - _ = is32BitOffset; - _ = axisCount; - _ = variationHeaders; - return new GlyphVariationData(); + // If shared point numbers flag is set, decode them from the start of the serialized data. + ushort[]? sharedPointNumbers = null; + if (hasSharedPointNumbers) + { + sharedPointNumbers = DecodePackedPoints(reader); + } + + // Decode each tuple's serialized data (point numbers and deltas). + TupleVariationHeader[] tupleHeaders = new TupleVariationHeader[tupleCount]; + for (int i = 0; i < tupleCount; i++) + { + TupleVariation header = tupleVariations[i]; + long tupleDataStart = reader.BaseStream.Position; + + // Determine which point numbers this tuple uses. + ushort[]? pointNumbers; + if (header.HasPrivatePointNumbers) + { + pointNumbers = DecodePackedPoints(reader); + } + else + { + pointNumbers = sharedPointNumbers; + } + + // The number of deltas to decode depends on whether specific points are referenced. + // If pointNumbers is empty (length 0), deltas apply to all points and the count + // is determined by the caller (TransformPoints). We use VariationDataSize to bound reading. + int nPoints = pointNumbers is { Length: > 0 } ? pointNumbers.Length : 0; + + short[]? deltasX = null; + short[]? deltasY = null; + if (nPoints > 0) + { + deltasX = DecodePackedDeltas(reader, nPoints); + deltasY = DecodePackedDeltas(reader, nPoints); + } + else + { + // When no explicit points are specified, we need to read all remaining data + // for this tuple. The deltas apply to all glyph points + 4 phantom points. + // We cannot know the point count here, so we store the raw bytes and decode later. + // However, the simpler approach used by fontkit is to decode based on the remaining + // bytes in this tuple's data block. We'll defer full decoding to TransformPoints + // by storing the raw data range. + long bytesConsumed = reader.BaseStream.Position - tupleDataStart; + int remaining = header.VariationDataSize - (int)bytesConsumed; + if (remaining > 0) + { + // Store raw bytes for deferred decoding when we know the point count. + tupleHeaders[i] = new TupleVariationHeader(header, pointNumbers, null, null, reader.ReadBytes(remaining)); + continue; + } + } + + // Skip any remaining bytes for this tuple that we haven't consumed. + long consumed = reader.BaseStream.Position - tupleDataStart; + int skip = header.VariationDataSize - (int)consumed; + if (skip > 0) + { + reader.BaseStream.Position += skip; + } + + tupleHeaders[i] = new TupleVariationHeader(header, pointNumbers, deltasX, deltasY, null); + } + + return new GlyphVariationData(tupleHeaders); } + + /// + /// Decodes packed point numbers from the serialized data. + /// + /// The binary reader positioned at the packed point data. + /// + /// An array of absolute point indices, or an empty array if all points are referenced. + /// + /// + internal static ushort[] DecodePackedPoints(BigEndianBinaryReader reader) + { + // First byte determines the count of points. + byte firstByte = reader.ReadByte(); + int count; + if ((firstByte & PointsAreWords) != 0) + { + // High bit set: count is ((firstByte & 0x7F) << 8) | nextByte. + count = ((firstByte & PointRunCountMask) << 8) | reader.ReadByte(); + } + else + { + count = firstByte; + } + + // A count of 0 means "all points" — return empty array as sentinel. + if (count == 0) + { + return []; + } + + // Read run-length encoded point number deltas. + ushort[] points = new ushort[count]; + int i = 0; + while (i < count) + { + byte runHeader = reader.ReadByte(); + bool runPointsAreWords = (runHeader & PointsAreWords) != 0; + int runCount = (runHeader & PointRunCountMask) + 1; + + ushort accumulator = i > 0 ? points[i - 1] : (ushort)0; + for (int j = 0; j < runCount && i < count; j++, i++) + { + ushort delta = runPointsAreWords ? reader.ReadUInt16() : reader.ReadByte(); + accumulator += delta; + points[i] = accumulator; + } + } + + return points; + } + + /// + /// Decodes packed delta values from the serialized data. + /// + /// The binary reader positioned at the packed delta data. + /// The number of delta values to decode. + /// An array of decoded delta values. + /// + internal static short[] DecodePackedDeltas(BigEndianBinaryReader reader, int count) + { + short[] deltas = new short[count]; + int i = 0; + while (i < count) + { + byte runHeader = reader.ReadByte(); + bool areZero = (runHeader & DeltasAreZero) != 0; + bool areWords = (runHeader & DeltasAreWords) != 0; + int runCount = (runHeader & DeltaRunCountMask) + 1; + + for (int j = 0; j < runCount && i < count; j++, i++) + { + if (areZero) + { + deltas[i] = 0; + } + else if (areWords) + { + deltas[i] = reader.ReadInt16(); + } + else + { + deltas[i] = (short)(sbyte)reader.ReadByte(); + } + } + } + + return deltas; + } +} + +/// +/// Represents a fully decoded tuple variation header with its associated point indices and delta values. +/// +internal class TupleVariationHeader +{ + public TupleVariationHeader( + TupleVariation tupleVariation, + ushort[]? pointNumbers, + short[]? deltasX, + short[]? deltasY, + byte[]? rawDeltaData) + { + this.TupleVariation = tupleVariation; + this.PointNumbers = pointNumbers; + this.DeltasX = deltasX; + this.DeltasY = deltasY; + this.RawDeltaData = rawDeltaData; + } + + /// + /// Gets the tuple variation header containing peak coordinates and flags. + /// + public TupleVariation TupleVariation { get; } + + /// + /// Gets the point indices this tuple applies to. + /// An empty array means all points are referenced. + /// Null means no point data was available. + /// + public ushort[]? PointNumbers { get; } + + /// + /// Gets the X coordinate deltas for the referenced points. + /// Null when deltas apply to all points and were deferred (see ). + /// + public short[]? DeltasX { get; } + + /// + /// Gets the Y coordinate deltas for the referenced points. + /// Null when deltas apply to all points and were deferred (see ). + /// + public short[]? DeltasY { get; } + + /// + /// Gets the raw serialized delta data for deferred decoding. + /// This is used when point numbers indicate "all points" and the actual point count + /// is not known until is called. + /// + public byte[]? RawDeltaData { get; } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index b19208eb5..26295b07f 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -1,14 +1,15 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. +using System.Numerics; using SixLabors.Fonts.Tables.TrueType.Glyphs; namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; /// /// -/// This class is transforms TrueType glyphs according to the data from -/// the Apple Advanced Typography variation tables(fvar, gvar, and avar). +/// This class transforms TrueType glyphs according to the data from +/// the OpenType variation tables (fvar, gvar, avar, HVAR, VVAR). /// These tables allow infinite adjustments to glyph weight, width, slant, /// and optical size without the designer needing to specify every exact style. /// @@ -17,7 +18,7 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; /// internal class GlyphVariationProcessor { - private readonly ItemVariationStore itemStore; + private readonly ItemVariationStore? itemStore; private readonly FVarTable fvar; @@ -33,21 +34,15 @@ internal class GlyphVariationProcessor private readonly Dictionary blendVectors; - /// - /// Epsilon as used in fontkit reference implementation. - /// TODO: This could be float.Epsilon, but we need to check if it works. - /// - private const float Epsilon = 2.2204460492503130808472633361816E-16F; - public GlyphVariationProcessor( - ItemVariationStore itemStore, + ItemVariationStore? itemStore, FVarTable fVar, AVarTable? aVar = null, GVarTable? gVar = null, HVarTable? hVar = null, - VVarTable? vVar = null) + VVarTable? vVar = null, + float[]? userCoordinates = null) { - DebugGuard.NotNull(itemStore, nameof(itemStore)); DebugGuard.NotNull(fVar, nameof(fVar)); this.itemStore = itemStore; @@ -55,62 +50,198 @@ public GlyphVariationProcessor( this.avar = aVar; this.gVar = gVar; this.hVar = hVar; - this.normalizedCoords = this.NormalizeDefaultCoords(); - this.blendVectors = []; this.vVar = vVar; + this.normalizedCoords = this.NormalizeCoords(userCoordinates); + this.blendVectors = []; } + /// + /// Transforms glyph outline points by applying gvar variation deltas. + /// + /// The glyph identifier. + /// The glyph vector whose control points will be modified in-place. public void TransformPoints(ushort glyphId, ref GlyphVector glyphPoints) { - if (this.fvar is null || this.gVar is null) + if (this.gVar is null) + { + return; + } + + if (glyphId >= this.gVar.GlyphCount) { return; } - if (glyphId > this.gVar.GlyphCount) + GlyphVariationData variationData = this.gVar.GlyphVariations[glyphId]; + if (!variationData.HasData) { return; } - // TODO: It looks like more work is required in TupleVariation.Load to ensure - // we have all the information we require to transform the points. + IList controlPoints = glyphPoints.ControlPoints; + int pointCount = controlPoints.Count; + + // Clone the original points for IUP reference (interpolation needs unmodified originals). GlyphVector originPoints = GlyphVector.DeepClone(glyphPoints); + IList origPoints = originPoints.ControlPoints; + + foreach (TupleVariationHeader tupleHeader in variationData.TupleHeaders) + { + TupleVariation tuple = tupleHeader.TupleVariation; + + // Resolve peak coordinates: either embedded or from shared tuples. + float[]? peakCoords = tuple.EmbeddedPeak; + if (peakCoords is null) + { + int sharedIdx = tuple.SharedTupleIndex; + if (sharedIdx >= this.gVar.SharedTuples.GetLength(0)) + { + continue; + } + + peakCoords = new float[this.gVar.AxisCount]; + for (int a = 0; a < this.gVar.AxisCount; a++) + { + peakCoords[a] = this.gVar.SharedTuples[sharedIdx, a]; + } + } + + // Calculate the blending factor for this tuple. + float factor = this.TupleFactor( + tuple.IsIntermediateRegion, + peakCoords, + tuple.IntermediateStartRegion, + tuple.IntermediateEndRegion); + + if (factor == 0) + { + continue; + } + + // Resolve point numbers and deltas. + ushort[]? pointNumbers = tupleHeader.PointNumbers; + short[]? deltasX = tupleHeader.DeltasX; + short[]? deltasY = tupleHeader.DeltasY; + + // If deltas were deferred (all-points case), decode them now that we know the point count. + if (deltasX is null && tupleHeader.RawDeltaData is not null) + { + DecodeAllPointDeltas(tupleHeader.RawDeltaData, pointCount, out deltasX, out deltasY); + } + + if (deltasX is null || deltasY is null) + { + continue; + } + + bool allPoints = pointNumbers is null or { Length: 0 }; + + if (allPoints) + { + // Deltas apply to all points directly. + int deltaCount = Math.Min(deltasX.Length, pointCount); + for (int i = 0; i < deltaCount; i++) + { + ControlPoint cp = controlPoints[i]; + cp.Point.X += MathF.Round(deltasX[i] * factor); + cp.Point.Y += MathF.Round(deltasY[i] * factor); + controlPoints[i] = cp; + } + } + else + { + // Deltas apply to specific points only; interpolate the rest. + // Use Buffer to avoid per-tuple heap allocations. + using Buffer adjustXBuf = new(pointCount); + using Buffer adjustYBuf = new(pointCount); + using Buffer hasDeltaBuf = new(pointCount); + Span adjustX = adjustXBuf.GetSpan(); + Span adjustY = adjustYBuf.GetSpan(); + Span hasDelta = hasDeltaBuf.GetSpan(); + adjustX.Clear(); + adjustY.Clear(); + hasDelta.Clear(); + + for (int i = 0; i < pointNumbers!.Length && i < deltasX.Length; i++) + { + int ptIdx = pointNumbers[i]; + if (ptIdx < pointCount) + { + hasDelta[ptIdx] = 1; + adjustX[ptIdx] = deltasX[i] * factor; + adjustY[ptIdx] = deltasY[i] * factor; + } + } + + // Interpolate unreferenced points. + InterpolateMissingDeltas( + controlPoints, + origPoints, + glyphPoints.EndPoints, + adjustX, + adjustY, + hasDelta); + + // Apply the accumulated deltas. + for (int i = 0; i < pointCount; i++) + { + ControlPoint cp = controlPoints[i]; + cp.Point.X += MathF.Round(adjustX[i]); + cp.Point.Y += MathF.Round(adjustY[i]); + controlPoints[i] = cp; + } + } + } + + // Recalculate bounds from the transformed points. + glyphPoints.Bounds = CalculateBounds(controlPoints); } + /// + /// Gets the horizontal advance width adjustment for the given glyph from the HVAR table. + /// Returns 0 if no HVAR table is present. + /// + /// The glyph identifier. + /// The advance width delta value. public float AdvanceAdjustment(int glyphId) { - // TODO: Support VVAR table for vertical adjustments. - // TOOD: Maybe return 0F if no HVAR/VVAR table is present? if (this.hVar is null) { - throw new InvalidFontFileException("Missing HVAR table"); + return 0; } - int outerIndex; - int innerIndex; - if (this.hVar?.AdvanceWidthMapping != null && this.hVar?.AdvanceWidthMapping.Length > 0) - { - DeltaSetIndexMap[]? advanceWidthMapping = this.hVar?.AdvanceWidthMapping; - int idx = glyphId; - if (idx >= advanceWidthMapping?.Length) - { - idx = advanceWidthMapping.Length - 1; - } + return this.GetMetricDelta(glyphId, this.hVar.AdvanceWidthMapping, this.hVar.ItemVariationStore); + } - outerIndex = advanceWidthMapping![idx].OuterIndex; - innerIndex = advanceWidthMapping[idx].InnerIndex; - } - else + /// + /// Gets the vertical advance height adjustment for the given glyph from the VVAR table. + /// Returns 0 if no VVAR table is present. + /// + /// The glyph identifier. + /// The advance height delta value. + public float VerticalAdvanceAdjustment(int glyphId) + { + if (this.vVar is null) { - outerIndex = 0; - innerIndex = glyphId; + return 0; } - return this.Delta(outerIndex, innerIndex); + return this.GetMetricDelta(glyphId, this.vVar.AdvanceWidthMapping, this.vVar.ItemVariationStore); } + /// + /// Computes the blend vector for the given outer index in the item variation store. + /// Used by the CFF2 blend operator. + /// + /// The outer index into the item variation store. + /// An array of blend scalars, one per region. public float[] BlendVector(int outerIndex) { + if (this.itemStore is null) + { + return []; + } + ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; if (this.blendVectors.TryGetValue(variationData, out float[]? blendVector)) { @@ -148,7 +279,7 @@ public float[] BlendVector(int outerIndex) } else if (this.normalizedCoords[j] < axis.StartCoord || this.normalizedCoords[j] > axis.EndCoord) { - // Ignore this region if coords are out of range + // Ignore this region if coords are out of range. axisScalar = 0; } else @@ -160,13 +291,13 @@ public float[] BlendVector(int outerIndex) } else if (this.normalizedCoords[j] < axis.PeakCoord) { - axisScalar = (this.normalizedCoords[j] - axis.StartCoord + Epsilon) / - (axis.PeakCoord - axis.StartCoord + Epsilon); + axisScalar = (this.normalizedCoords[j] - axis.StartCoord) / + (axis.PeakCoord - axis.StartCoord); } else { - axisScalar = (axis.EndCoord - this.normalizedCoords[j] + Epsilon) / - (axis.EndCoord - axis.PeakCoord + Epsilon); + axisScalar = (axis.EndCoord - this.normalizedCoords[j]) / + (axis.EndCoord - axis.PeakCoord); } } @@ -182,35 +313,161 @@ public float[] BlendVector(int outerIndex) return blendVector; } - private float[] NormalizeDefaultCoords() + /// + /// Computes the delta adjustment for a specific item in the item variation store. + /// + /// The outer index. + /// The inner index. + /// The delta value. + internal float Delta(int outerIndex, int innerIndex) + { + if (this.itemStore is null || outerIndex >= this.itemStore.ItemVariations.Length) + { + return 0; + } + + ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; + if (innerIndex >= variationData.DeltaSets.Length) + { + return 0; + } + + DeltaSet deltaSet = variationData.DeltaSets[innerIndex]; + float[] blendVector = this.BlendVector(outerIndex); + float netAdjustment = 0; + for (int master = 0; master < variationData.RegionIndexes.Length; master++) + { + netAdjustment += deltaSet.Deltas[master] * blendVector[master]; + } + + return netAdjustment; + } + + /// + /// Calculates the blending factor for a gvar tuple variation based on normalized coordinates. + /// + /// Whether this is an intermediate tuple with explicit start/end bounds. + /// The peak coordinates for this tuple. + /// The start coordinates (only for intermediate tuples). + /// The end coordinates (only for intermediate tuples). + /// A scalar factor in the range [0, 1] indicating how much this tuple contributes. + private float TupleFactor(bool isIntermediate, float[] peakCoords, float[]? startCoords, float[]? endCoords) + { + float factor = 1.0f; + + for (int i = 0; i < this.normalizedCoords.Length && i < peakCoords.Length; i++) + { + if (peakCoords[i] == 0) + { + // This axis doesn't affect this tuple. + continue; + } + + if (this.normalizedCoords[i] == 0) + { + // Normalized coordinate is at default; this tuple has no effect. + return 0; + } + + if (!isIntermediate) + { + // Non-intermediate tuple: simple linear interpolation. + // The valid range is between 0 and the peak coordinate. + float minVal = MathF.Min(0, peakCoords[i]); + float maxVal = MathF.Max(0, peakCoords[i]); + + if (this.normalizedCoords[i] < minVal || this.normalizedCoords[i] > maxVal) + { + return 0; + } + + factor *= this.normalizedCoords[i] / peakCoords[i]; + } + else + { + // Intermediate tuple: piecewise linear between start → peak → end. + if (this.normalizedCoords[i] < startCoords![i] || this.normalizedCoords[i] > endCoords![i]) + { + return 0; + } + + if (this.normalizedCoords[i] < peakCoords[i]) + { + factor *= (this.normalizedCoords[i] - startCoords[i]) / + (peakCoords[i] - startCoords[i]); + } + else if (this.normalizedCoords[i] > peakCoords[i]) + { + factor *= (endCoords![i] - this.normalizedCoords[i]) / + (endCoords[i] - peakCoords[i]); + } + + // If exactly at peak, factor contribution is 1 (no change). + } + } + + return factor; + } + + /// + /// Normalizes axis coordinates to the [-1, 1] range and applies avar remapping if present. + /// + /// + /// Optional user-specified axis values in design space (e.g. weight=700). + /// If null, default axis values are used. + /// + /// An array of normalized coordinates for each axis. + private float[] NormalizeCoords(float[]? userCoordinates) { - float[] coords = new float[this.fvar.AxisCount]; - for (int i = 0; i < this.fvar.AxisCount; i++) + int axisCount = this.fvar.AxisCount; + + // Use Buffer for temporary coords to avoid heap allocation. + using Buffer coordsBuf = new(axisCount); + Span coords = coordsBuf.GetSpan(); + + // Use user coordinates if provided, otherwise use defaults. + for (int i = 0; i < axisCount; i++) { - coords[i] = this.fvar.Axes[i].DefaultValue; + VariationAxisRecord axis = this.fvar.Axes[i]; + if (userCoordinates is not null && i < userCoordinates.Length) + { + // Clamp to valid axis range. + coords[i] = Math.Clamp(userCoordinates[i], axis.MinValue, axis.MaxValue); + } + else + { + coords[i] = axis.DefaultValue; + } } // The default mapping is linear along each axis, in two segments: // from the minValue to defaultValue, and from defaultValue to maxValue. - float[] normalized = new float[this.fvar.AxisCount]; - for (int i = 0; i < this.fvar.AxisCount; i++) + float[] normalized = new float[axisCount]; + for (int i = 0; i < axisCount; i++) { VariationAxisRecord axis = this.fvar.Axes[i]; if (coords[i] < axis.DefaultValue) { - normalized[i] = (coords[i] - axis.DefaultValue + Epsilon) / (axis.DefaultValue - axis.MinValue + Epsilon); + float denominator = axis.DefaultValue - axis.MinValue; + normalized[i] = denominator > 0 + ? (coords[i] - axis.DefaultValue) / denominator + : 0; } else { - normalized[i] = (coords[i] - axis.DefaultValue + Epsilon) / (axis.MaxValue - axis.DefaultValue + Epsilon); + float denominator = axis.MaxValue - axis.DefaultValue; + normalized[i] = denominator > 0 + ? (coords[i] - axis.DefaultValue) / denominator + : 0; } } - // If there is an avar table, the normalized value is calculated + // If there is an avar table, the normalized value is remapped // by interpolating between the two nearest mapped values. if (this.avar is not null) { - for (int i = 0; i < this.avar.SegmentMaps.Length; i++) + int segmentCount = Math.Min(this.avar.SegmentMaps.Length, axisCount); + for (int i = 0; i < segmentCount; i++) { SegmentMapRecord segment = this.avar.SegmentMaps[i]; for (int j = 0; j < segment.AxisValueMap.Length; j++) @@ -219,8 +476,13 @@ private float[] NormalizeDefaultCoords() if (j >= 1 && normalized[i] < pair.FromCoordinate) { AxisValueMapRecord prev = segment.AxisValueMap[j - 1]; - normalized[i] = ((((normalized[i] - prev.FromCoordinate) * (pair.ToCoordinate - prev.ToCoordinate)) + Epsilon) / - (pair.FromCoordinate - prev.FromCoordinate + Epsilon)) + prev.ToCoordinate; + float fromDelta = pair.FromCoordinate - prev.FromCoordinate; + if (fromDelta > 0) + { + normalized[i] = (((normalized[i] - prev.FromCoordinate) * (pair.ToCoordinate - prev.ToCoordinate)) / + fromDelta) + prev.ToCoordinate; + } + break; } } @@ -230,14 +492,28 @@ private float[] NormalizeDefaultCoords() return normalized; } - private float Delta(int outerIndex, int innerIndex) + private float GetMetricDelta(int glyphId, DeltaSetIndexMap[]? mapping, ItemVariationStore store) { - if (outerIndex >= this.itemStore.ItemVariations.Length) + int outerIndex; + int innerIndex; + if (mapping is { Length: > 0 }) + { + int idx = Math.Min(glyphId, mapping.Length - 1); + outerIndex = mapping[idx].OuterIndex; + innerIndex = mapping[idx].InnerIndex; + } + else + { + outerIndex = 0; + innerIndex = glyphId; + } + + if (outerIndex >= store.ItemVariations.Length) { return 0; } - ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; + ItemVariationData variationData = store.ItemVariations[outerIndex]; if (innerIndex >= variationData.DeltaSets.Length) { return 0; @@ -253,4 +529,224 @@ private float Delta(int outerIndex, int innerIndex) return netAdjustment; } + + /// + /// Decodes deferred delta data for the all-points case. + /// + private static void DecodeAllPointDeltas(byte[] rawData, int pointCount, out short[]? deltasX, out short[]? deltasY) + { + using MemoryStream ms = new(rawData); + using BigEndianBinaryReader reader = new(ms, false); + deltasX = GlyphVariationData.DecodePackedDeltas(reader, pointCount); + deltasY = GlyphVariationData.DecodePackedDeltas(reader, pointCount); + } + + /// + /// Interpolates deltas for points that don't have explicit delta values. + /// Processes each contour independently. + /// + private static void InterpolateMissingDeltas( + IList points, + IList origPoints, + IReadOnlyList endPoints, + Span adjustX, + Span adjustY, + Span hasDelta) + { + if (points.Count == 0 || endPoints.Count == 0) + { + return; + } + + int contourStart = 0; + for (int c = 0; c < endPoints.Count; c++) + { + int contourEnd = endPoints[c]; + + // Find first point with a delta in this contour. + int firstDelta = -1; + for (int p = contourStart; p <= contourEnd; p++) + { + if (hasDelta[p] != 0) + { + firstDelta = p; + break; + } + } + + if (firstDelta < 0) + { + // No deltas in this contour, skip. + contourStart = contourEnd + 1; + continue; + } + + int curDelta = firstDelta; + int p2 = firstDelta + 1; + while (p2 <= contourEnd) + { + if (hasDelta[p2] != 0) + { + // Interpolate the gap between curDelta and p2. + DeltaInterpolate(curDelta + 1, p2 - 1, curDelta, p2, origPoints, adjustX, adjustY); + curDelta = p2; + } + + p2++; + } + + if (curDelta == firstDelta) + { + // Only one delta point in this contour: shift all other points by the same amount. + DeltaShift(contourStart, contourEnd, curDelta, adjustX, adjustY); + } + else + { + // Interpolate remaining points that wrap around the contour boundary. + // Points after the last delta point to end of contour, and start of contour to first delta. + DeltaInterpolate(curDelta + 1, contourEnd, curDelta, firstDelta, origPoints, adjustX, adjustY); + if (firstDelta > contourStart) + { + DeltaInterpolate(contourStart, firstDelta - 1, curDelta, firstDelta, origPoints, adjustX, adjustY); + } + } + + contourStart = contourEnd + 1; + } + } + + /// + /// Interpolates delta values for points between two reference points. + /// Handles X and Y independently using linear interpolation with clamping. + /// + private static void DeltaInterpolate( + int p1, + int p2, + int ref1, + int ref2, + IList origPoints, + Span adjustX, + Span adjustY) + { + if (p1 > p2) + { + return; + } + + // Process X axis. + InterpolateAxis(p1, p2, ref1, ref2, origPoints, adjustX, isX: true); + + // Process Y axis. + InterpolateAxis(p1, p2, ref1, ref2, origPoints, adjustY, isX: false); + } + + private static void InterpolateAxis( + int p1, + int p2, + int ref1, + int ref2, + IList origPoints, + Span adjust, + bool isX) + { + float in1 = isX ? origPoints[ref1].Point.X : origPoints[ref1].Point.Y; + float in2 = isX ? origPoints[ref2].Point.X : origPoints[ref2].Point.Y; + float out1 = in1 + adjust[ref1]; + float out2 = in2 + adjust[ref2]; + + // Ensure in1 <= in2 for interpolation. + if (in1 > in2) + { + (in1, in2) = (in2, in1); + (out1, out2) = (out2, out1); + } + + float scale = (in1 == in2 || out1 == out2) + ? 0 + : (out2 - out1) / (in2 - in1); + + for (int p = p1; p <= p2; p++) + { + float inVal = isX ? origPoints[p].Point.X : origPoints[p].Point.Y; + + float outVal; + if (inVal <= in1) + { + outVal = inVal + (out1 - in1); + } + else if (inVal >= in2) + { + outVal = inVal + (out2 - in2); + } + else + { + outVal = out1 + ((inVal - in1) * scale); + } + + adjust[p] = outVal - inVal; + } + } + + /// + /// Shifts all points in a contour range by the same delta as the reference point. + /// Used when only one point in a contour has an explicit delta. + /// + private static void DeltaShift(int p1, int p2, int refPoint, Span adjustX, Span adjustY) + { + float deltaX = adjustX[refPoint]; + float deltaY = adjustY[refPoint]; + + if (deltaX == 0 && deltaY == 0) + { + return; + } + + for (int p = p1; p <= p2; p++) + { + if (p != refPoint) + { + adjustX[p] = deltaX; + adjustY[p] = deltaY; + } + } + } + + private static Bounds CalculateBounds(IList points) + { + if (points.Count == 0) + { + return default; + } + + float minX = float.MaxValue; + float minY = float.MaxValue; + float maxX = float.MinValue; + float maxY = float.MinValue; + + for (int i = 0; i < points.Count; i++) + { + Vector2 pt = points[i].Point; + if (pt.X < minX) + { + minX = pt.X; + } + + if (pt.Y < minY) + { + minY = pt.Y; + } + + if (pt.X > maxX) + { + maxX = pt.X; + } + + if (pt.Y > maxY) + { + maxY = pt.Y; + } + } + + return new Bounds(minX, minY, maxX, maxY); + } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs index 768c6799e..58e9c9f8a 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs @@ -30,9 +30,17 @@ internal class TupleVariation /// internal const int TupleIndexMask = 0x0FFF; - public TupleVariation(int axisCount, float[]? embeddedPeak, float[]? intermediateStartRegion, float[]? intermediateEndRegion) + public TupleVariation( + int axisCount, + ushort variationDataSize, + ushort tupleIndex, + float[]? embeddedPeak, + float[]? intermediateStartRegion, + float[]? intermediateEndRegion) { this.AxisCount = axisCount; + this.VariationDataSize = variationDataSize; + this.TupleIndex = tupleIndex; this.EmbeddedPeak = embeddedPeak; this.IntermediateStartRegion = intermediateStartRegion; this.IntermediateEndRegion = intermediateEndRegion; @@ -40,6 +48,32 @@ public TupleVariation(int axisCount, float[]? embeddedPeak, float[]? intermediat public int AxisCount { get; } + /// + /// Gets the size in bytes of the serialized data for this tuple variation table. + /// + public ushort VariationDataSize { get; } + + /// + /// Gets the packed tuple index field containing flags (high 4 bits) and shared tuple records index (low 12 bits). + /// + public ushort TupleIndex { get; } + + /// + /// Gets the shared tuple records index (low 12 bits of ). + /// Used to look up peak coordinates from when no embedded peak is present. + /// + public int SharedTupleIndex => this.TupleIndex & TupleIndexMask; + + /// + /// Gets a value indicating whether this tuple has private point numbers in its serialized data. + /// + public bool HasPrivatePointNumbers => (this.TupleIndex & PrivatePointNumbersMask) != 0; + + /// + /// Gets a value indicating whether this tuple has an intermediate region (start/end coordinates). + /// + public bool IsIntermediateRegion => (this.TupleIndex & IntermediateRegionMask) != 0; + public float[]? EmbeddedPeak { get; } public float[]? IntermediateStartRegion { get; } @@ -67,14 +101,10 @@ public static TupleVariation Load(BigEndianBinaryReader reader, int axisCount) // | | | optional, determined by flags in the tupleIndex value. | // +----------------------+-------------------------------------------+------------------------------------------------------------------------------+ ushort variationDataSize = reader.ReadUInt16(); - int bytesRead = 0; ushort tupleIndex = reader.ReadUInt16(); - bytesRead += 2; - int sharedTupleRecords = tupleIndex & TupleIndexMask; - bool hasPrivatePointNumbers = (tupleIndex & PrivatePointNumbersMask) == PrivatePointNumbersMask; - bool hasEmbeddedPeakTuple = (tupleIndex & EmbeddedPeakTupleMask) == EmbeddedPeakTupleMask; - bool hasIntermediateRegion = (tupleIndex & IntermediateRegionMask) == IntermediateRegionMask; + bool hasEmbeddedPeakTuple = (tupleIndex & EmbeddedPeakTupleMask) != 0; + bool hasIntermediateRegion = (tupleIndex & IntermediateRegionMask) != 0; float[]? embeddedPeak = null; if (hasEmbeddedPeakTuple) @@ -83,7 +113,6 @@ public static TupleVariation Load(BigEndianBinaryReader reader, int axisCount) for (int i = 0; i < axisCount; i++) { embeddedPeak[i] = reader.ReadF2Dot14(); - bytesRead += 2; } } @@ -95,17 +124,15 @@ public static TupleVariation Load(BigEndianBinaryReader reader, int axisCount) for (int i = 0; i < axisCount; i++) { intermediateStartRegion[i] = reader.ReadF2Dot14(); - bytesRead += 2; } intermediateEndRegion = new float[axisCount]; for (int i = 0; i < axisCount; i++) { intermediateEndRegion[i] = reader.ReadF2Dot14(); - bytesRead += 2; } } - return new TupleVariation(axisCount, embeddedPeak, intermediateStartRegion, intermediateEndRegion); + return new TupleVariation(axisCount, variationDataSize, tupleIndex, embeddedPeak, intermediateStartRegion, intermediateEndRegion); } } From e72ef8c6a14ecbf5531e3360880b7a5ebb8de8a7 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 10:27:02 +1000 Subject: [PATCH 40/56] Apply gvar deltas to composite glyphs --- .../Variations/GlyphVariationProcessor.cs | 188 +++++++++++++++--- .../TrueType/Glyphs/CompositeComponent.cs | 35 ++++ .../TrueType/Glyphs/CompositeGlyphLoader.cs | 12 +- .../Tables/TrueType/Glyphs/GlyphVector.cs | 16 +- 4 files changed, 216 insertions(+), 35 deletions(-) create mode 100644 src/SixLabors.Fonts/Tables/TrueType/Glyphs/CompositeComponent.cs diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index 26295b07f..f45cdbd30 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -78,6 +78,18 @@ public void TransformPoints(ushort glyphId, ref GlyphVector glyphPoints) return; } + if (glyphPoints.IsComposite && glyphPoints.CompositeComponents is not null) + { + this.TransformCompositePoints(variationData, ref glyphPoints); + } + else + { + this.TransformSimplePoints(variationData, ref glyphPoints); + } + } + + private void TransformSimplePoints(GlyphVariationData variationData, ref GlyphVector glyphPoints) + { IList controlPoints = glyphPoints.ControlPoints; int pointCount = controlPoints.Count; @@ -87,32 +99,7 @@ public void TransformPoints(ushort glyphId, ref GlyphVector glyphPoints) foreach (TupleVariationHeader tupleHeader in variationData.TupleHeaders) { - TupleVariation tuple = tupleHeader.TupleVariation; - - // Resolve peak coordinates: either embedded or from shared tuples. - float[]? peakCoords = tuple.EmbeddedPeak; - if (peakCoords is null) - { - int sharedIdx = tuple.SharedTupleIndex; - if (sharedIdx >= this.gVar.SharedTuples.GetLength(0)) - { - continue; - } - - peakCoords = new float[this.gVar.AxisCount]; - for (int a = 0; a < this.gVar.AxisCount; a++) - { - peakCoords[a] = this.gVar.SharedTuples[sharedIdx, a]; - } - } - - // Calculate the blending factor for this tuple. - float factor = this.TupleFactor( - tuple.IsIntermediateRegion, - peakCoords, - tuple.IntermediateStartRegion, - tuple.IntermediateEndRegion); - + float factor = this.ResolveTupleFactor(tupleHeader); if (factor == 0) { continue; @@ -151,16 +138,12 @@ public void TransformPoints(ushort glyphId, ref GlyphVector glyphPoints) else { // Deltas apply to specific points only; interpolate the rest. - // Use Buffer to avoid per-tuple heap allocations. - using Buffer adjustXBuf = new(pointCount); - using Buffer adjustYBuf = new(pointCount); - using Buffer hasDeltaBuf = new(pointCount); + using Buffer adjustXBuf = new(pointCount, clear: true); + using Buffer adjustYBuf = new(pointCount, clear: true); + using Buffer hasDeltaBuf = new(pointCount, clear: true); Span adjustX = adjustXBuf.GetSpan(); Span adjustY = adjustYBuf.GetSpan(); Span hasDelta = hasDeltaBuf.GetSpan(); - adjustX.Clear(); - adjustY.Clear(); - hasDelta.Clear(); for (int i = 0; i < pointNumbers!.Length && i < deltasX.Length; i++) { @@ -197,6 +180,111 @@ public void TransformPoints(ushort glyphId, ref GlyphVector glyphPoints) glyphPoints.Bounds = CalculateBounds(controlPoints); } + /// + /// Transforms a composite glyph by applying gvar deltas to component offsets. + /// For composite glyphs, gvar stores deltas for a synthetic point array: + /// one point per component (at the component's offset) plus 4 phantom points. + /// After applying deltas, the offset changes are propagated to all assembled + /// outline points belonging to each component. + /// + private void TransformCompositePoints(GlyphVariationData variationData, ref GlyphVector glyphPoints) + { + CompositeComponent[] components = glyphPoints.CompositeComponents!; + int componentCount = components.Length; + + // gvar "point count" for composites = number of components + 4 phantom points. + int syntheticPointCount = componentCount + 4; + + // Build synthetic points from component offsets. + using Buffer synXBuf = new(syntheticPointCount, clear: true); + using Buffer synYBuf = new(syntheticPointCount, clear: true); + Span synX = synXBuf.GetSpan(); + Span synY = synYBuf.GetSpan(); + + for (int i = 0; i < componentCount; i++) + { + synX[i] = components[i].Dx; + synY[i] = components[i].Dy; + } + + // Phantom points (LSB, advance width, TSB, advance height) are initialized to 0 + // and will receive deltas from gvar if present. + + // Apply each tuple's deltas to the synthetic points. + foreach (TupleVariationHeader tupleHeader in variationData.TupleHeaders) + { + float factor = this.ResolveTupleFactor(tupleHeader); + if (factor == 0) + { + continue; + } + + ushort[]? pointNumbers = tupleHeader.PointNumbers; + short[]? deltasX = tupleHeader.DeltasX; + short[]? deltasY = tupleHeader.DeltasY; + + if (deltasX is null && tupleHeader.RawDeltaData is not null) + { + DecodeAllPointDeltas(tupleHeader.RawDeltaData, syntheticPointCount, out deltasX, out deltasY); + } + + if (deltasX is null || deltasY is null) + { + continue; + } + + bool allPoints = pointNumbers is null or { Length: 0 }; + + if (allPoints) + { + int deltaCount = Math.Min(deltasX.Length, syntheticPointCount); + for (int i = 0; i < deltaCount; i++) + { + synX[i] += deltasX[i] * factor; + synY[i] += deltasY[i] * factor; + } + } + else + { + for (int i = 0; i < pointNumbers!.Length && i < deltasX.Length; i++) + { + int ptIdx = pointNumbers[i]; + if (ptIdx < syntheticPointCount) + { + synX[ptIdx] += deltasX[i] * factor; + synY[ptIdx] += deltasY[i] * factor; + } + } + } + } + + // Propagate offset changes to assembled outline points. + IList controlPoints = glyphPoints.ControlPoints; + int pointOffset = 0; + for (int c = 0; c < componentCount; c++) + { + float deltaX = MathF.Round(synX[c] - components[c].Dx); + float deltaY = MathF.Round(synY[c] - components[c].Dy); + + if (deltaX != 0 || deltaY != 0) + { + int end = pointOffset + components[c].PointCount; + for (int p = pointOffset; p < end && p < controlPoints.Count; p++) + { + ControlPoint cp = controlPoints[p]; + cp.Point.X += deltaX; + cp.Point.Y += deltaY; + controlPoints[p] = cp; + } + } + + pointOffset += components[c].PointCount; + } + + // Recalculate bounds from the transformed points. + glyphPoints.Bounds = CalculateBounds(controlPoints); + } + /// /// Gets the horizontal advance width adjustment for the given glyph from the HVAR table. /// Returns 0 if no HVAR table is present. @@ -343,6 +431,40 @@ internal float Delta(int outerIndex, int innerIndex) return netAdjustment; } + /// + /// Resolves peak coordinates and computes the tuple factor for a given tuple header. + /// Shared helper used by both simple and composite glyph variation paths. + /// + /// The tuple variation header. + /// The blending factor, or 0 if the tuple should be skipped. + private float ResolveTupleFactor(TupleVariationHeader tupleHeader) + { + TupleVariation tuple = tupleHeader.TupleVariation; + + // Resolve peak coordinates: either embedded or from shared tuples. + float[]? peakCoords = tuple.EmbeddedPeak; + if (peakCoords is null) + { + int sharedIdx = tuple.SharedTupleIndex; + if (sharedIdx >= this.gVar!.SharedTuples.GetLength(0)) + { + return 0; + } + + peakCoords = new float[this.gVar.AxisCount]; + for (int a = 0; a < this.gVar.AxisCount; a++) + { + peakCoords[a] = this.gVar.SharedTuples[sharedIdx, a]; + } + } + + return this.TupleFactor( + tuple.IsIntermediateRegion, + peakCoords, + tuple.IntermediateStartRegion, + tuple.IntermediateEndRegion); + } + /// /// Calculates the blending factor for a gvar tuple variation based on normalized coordinates. /// diff --git a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/CompositeComponent.cs b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/CompositeComponent.cs new file mode 100644 index 000000000..5fe7d9c0c --- /dev/null +++ b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/CompositeComponent.cs @@ -0,0 +1,35 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +namespace SixLabors.Fonts.Tables.TrueType.Glyphs; + +/// +/// Stores the original component offset and point count for a single component +/// within a composite glyph. Used during gvar variation processing to apply +/// per-component offset deltas to the assembled outline. +/// +internal readonly struct CompositeComponent +{ + public CompositeComponent(float dx, float dy, int pointCount) + { + this.Dx = dx; + this.Dy = dy; + this.PointCount = pointCount; + } + + /// + /// Gets the original X offset of this component (before variation). + /// + public float Dx { get; } + + /// + /// Gets the original Y offset of this component (before variation). + /// + public float Dy { get; } + + /// + /// Gets the number of control points contributed by this component + /// to the assembled composite glyph. + /// + public int PointCount { get; } +} diff --git a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/CompositeGlyphLoader.cs b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/CompositeGlyphLoader.cs index 8285f5523..54e033d92 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/CompositeGlyphLoader.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/CompositeGlyphLoader.cs @@ -22,6 +22,7 @@ public override GlyphVector CreateGlyph(GlyphTable table) { List controlPoints = []; List endPoints = []; + CompositeComponent[] components = new CompositeComponent[this.composites.Length]; for (int i = 0; i < this.composites.Length; i++) { Composite composite = this.composites[i]; @@ -29,6 +30,12 @@ public override GlyphVector CreateGlyph(GlyphTable table) GlyphVector.TransformInPlace(ref clone, composite.Transformation); ushort endPointOffset = (ushort)controlPoints.Count; + // Store original component offset and point count for gvar processing. + components[i] = new CompositeComponent( + composite.Transformation.Translation.X, + composite.Transformation.Translation.Y, + clone.ControlPoints.Count); + controlPoints.AddRange(clone.ControlPoints); foreach (ushort p in clone.EndPoints) { @@ -36,7 +43,10 @@ public override GlyphVector CreateGlyph(GlyphTable table) } } - return new(controlPoints, endPoints, this.bounds, this.instructions, true); + return new(controlPoints, endPoints, this.bounds, this.instructions, true) + { + CompositeComponents = components + }; } public static CompositeGlyphLoader LoadCompositeGlyph(BigEndianBinaryReader reader, in Bounds bounds) diff --git a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphVector.cs b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphVector.cs index efca7c72e..e53316c69 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphVector.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/Glyphs/GlyphVector.cs @@ -36,6 +36,15 @@ internal GlyphVector( public Bounds Bounds { get; set; } + /// + /// Gets or sets the composite component information used for gvar variation processing. + /// Each entry stores the original component offset and the number of control points + /// contributed by that component, so that TransformPoints can apply per-component + /// offset deltas to the assembled outline. + /// Null for simple (non-composite) glyphs. + /// + public CompositeComponent[]? CompositeComponents { get; set; } + public static GlyphVector Empty(Bounds bounds = default) => new(Array.Empty(), Array.Empty(), bounds, Array.Empty(), false); @@ -111,7 +120,12 @@ public static GlyphVector DeepClone(GlyphVector src) List controlPoints = [.. src.ControlPoints]; List endPoints = [.. src.EndPoints]; - return new(controlPoints, endPoints, src.Bounds, src.Instructions, src.IsComposite); + return new(controlPoints, endPoints, src.Bounds, src.Instructions, src.IsComposite) + { + CompositeComponents = src.CompositeComponents is not null + ? [.. src.CompositeComponents] + : null + }; } /// From 890312072df755e6cf480a664acd109978c308c6 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 10:32:59 +1000 Subject: [PATCH 41/56] Support CFF2 vsindex for glyph variations --- src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs | 8 ++++++-- src/SixLabors.Fonts/Tables/Cff/CffEvaluationEngine.cs | 6 +++--- src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs | 11 ++++++++--- src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs | 4 ++++ src/SixLabors.Fonts/Tables/Cff/FontDict.cs | 2 ++ 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs index 57e37d0af..5a8bf02fb 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs @@ -215,6 +215,7 @@ private CffGlyphData[] ReadCharStringsIndex( // Is the font a CID font? FDRangeProvider fdRangeProvider = new(topDictionary.CidFontInfo); bool isCidFont = topDictionary.CidFontInfo.FdRanges.Length > 0; + int vsIndex = fontDicts.Length > 0 ? fontDicts[0].VsIndex : 0; for (int i = 0; i < glyphCount; ++i) { byte[] charstringsBuffer = charStringBuffers[i]; @@ -224,7 +225,9 @@ private CffGlyphData[] ReadCharStringsIndex( if (isCidFont) { fdRangeProvider.SetCurrentGlyphIndex((ushort)i); - localSubBuffer = fontDicts[fdRangeProvider.SelectedFDArray].LocalSubr; + int fdIndex = fdRangeProvider.SelectedFDArray; + localSubBuffer = fontDicts[fdIndex].LocalSubr; + vsIndex = fontDicts[fdIndex].VsIndex; } glyphs[i] = new CffGlyphData( @@ -234,7 +237,8 @@ private CffGlyphData[] ReadCharStringsIndex( privateDictionary?.NominalWidthX ?? 0, charstringsBuffer, 2, - this.itemVariationStore); + this.itemVariationStore, + vsIndex); } return glyphs; diff --git a/src/SixLabors.Fonts/Tables/Cff/CffEvaluationEngine.cs b/src/SixLabors.Fonts/Tables/Cff/CffEvaluationEngine.cs index 4c5f9a1ac..1fcb8ab8c 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffEvaluationEngine.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffEvaluationEngine.cs @@ -46,7 +46,8 @@ public CffEvaluationEngine( int version, ItemVariationStore? itemVariationStore = null, FVarTable? fVar = null, - AVarTable? aVar = null) + AVarTable? aVar = null, + int vsIndex = 0) { this.transforming = default; this.charStrings = charStrings; @@ -77,8 +78,7 @@ public CffEvaluationEngine( this.glyphVariationProcessor = new GlyphVariationProcessor(itemVariationStore, fVar, aVar); } - // TODO: always 0 for now. Should be privateDict.vsindex - this.vsIndex = 0; + this.vsIndex = vsIndex; } public Bounds GetBounds() diff --git a/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs b/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs index b4dbc0040..4c2b7128f 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs @@ -15,6 +15,7 @@ internal struct CffGlyphData private readonly int nominalWidthX; private readonly int version; private readonly ItemVariationStore? itemVariationStore; + private readonly int vsIndex; public CffGlyphData( ushort glyphIndex, @@ -23,7 +24,8 @@ public CffGlyphData( int nominalWidthX, byte[] charStrings, int version, - ItemVariationStore? itemVariationStore = null) + ItemVariationStore? itemVariationStore = null, + int vsIndex = 0) { this.GlyphIndex = glyphIndex; this.globalSubrBuffers = globalSubrBuffers; @@ -32,6 +34,7 @@ public CffGlyphData( this.charStrings = charStrings; this.version = version; this.itemVariationStore = itemVariationStore; + this.vsIndex = vsIndex; this.GlyphName = null; @@ -61,7 +64,8 @@ public Bounds GetBounds() this.version, this.itemVariationStore, this.FVar, - this.AVar); + this.AVar, + this.vsIndex); return engine.GetBounds(); } @@ -76,7 +80,8 @@ public void RenderTo(IGlyphRenderer renderer, Vector2 origin, Vector2 scale, Vec this.version, this.itemVariationStore, this.FVar, - this.AVar); + this.AVar, + this.vsIndex); engine.RenderTo(renderer, origin, scale, offset, transform); } diff --git a/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs b/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs index 25a0a3ce1..c561ff35f 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs @@ -134,6 +134,10 @@ protected FontDict[] ReadFdArray(BigEndianBinaryReader reader, long offset, long fdict.LocalSubr = ReadSubrBuffer(reader); break; + case "vsindex": + fdict.VsIndex = (int)dicEntry.Operands[0].RealNumValue; + break; + case "defaultWidthX": case "nominalWidthX": break; diff --git a/src/SixLabors.Fonts/Tables/Cff/FontDict.cs b/src/SixLabors.Fonts/Tables/Cff/FontDict.cs index d636349f8..1b3c747d2 100644 --- a/src/SixLabors.Fonts/Tables/Cff/FontDict.cs +++ b/src/SixLabors.Fonts/Tables/Cff/FontDict.cs @@ -19,4 +19,6 @@ public FontDict(int name, int dictSize, int dictOffset) public int PrivateDicOffset { get; } public byte[][]? LocalSubr { get; set; } + + public int VsIndex { get; set; } } From f60c8921481be34c1240e10a533ae8c03dfd602d Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 10:37:21 +1000 Subject: [PATCH 42/56] Support ItemVariationStore in GlyphDefinitionTable --- .../AdvancedTypographic/GlyphDefinitionTable.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GlyphDefinitionTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GlyphDefinitionTable.cs index c4cd4b78f..410641fe5 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GlyphDefinitionTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GlyphDefinitionTable.cs @@ -2,6 +2,7 @@ // Licensed under the Six Labors Split License. using System.Diagnostics.CodeAnalysis; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; namespace SixLabors.Fonts.Tables.AdvancedTypographic; @@ -26,6 +27,8 @@ internal sealed class GlyphDefinitionTable : Table public MarkGlyphSetsTable? MarkGlyphSetsTable { get; private set; } + public ItemVariationStore? ItemVariationStore { get; private set; } + public static GlyphDefinitionTable? Load(FontReader reader) { if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) @@ -154,14 +157,20 @@ public static GlyphDefinitionTable Load(BigEndianBinaryReader reader) ClassDefinitionTable.TryLoad(reader, markAttachClassDefOffset, out ClassDefinitionTable? markAttachmentClassDef); MarkGlyphSetsTable? markGlyphSetsTable = markGlyphSetsDefOffset is 0 ? null : MarkGlyphSetsTable.Load(reader, markGlyphSetsDefOffset); - // TODO: read itemVarStore. + ItemVariationStore? itemVariationStore = null; + if (itemVarStoreOffset != 0) + { + itemVariationStore = ItemVariationStore.Load(reader, itemVarStoreOffset); + } + return new GlyphDefinitionTable() { GlyphClassDefinition = classDefinitionTable, AttachmentListTable = attachmentListTable, LigatureCaretList = ligatureCaretList, MarkAttachmentClassDef = markAttachmentClassDef, - MarkGlyphSetsTable = markGlyphSetsTable + MarkGlyphSetsTable = markGlyphSetsTable, + ItemVariationStore = itemVariationStore }; } } From 38a48df3d6b7a8db6811ba53d13ecb13a09dde13 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 11:02:10 +1000 Subject: [PATCH 43/56] Add MVAR support and refactor variation blending --- src/SixLabors.Fonts/BigEndianBinaryReader.cs | 152 +++++++++++++----- src/SixLabors.Fonts/StreamFontMetrics.Cff.cs | 4 +- .../StreamFontMetrics.TrueType.cs | 4 +- .../Variations/GlyphVariationProcessor.cs | 142 +++++++++------- .../Variations/MVarTable.cs | 136 ++++++++++++++++ .../Variations/MetricValueRecord.cs | 32 ++++ .../Tables/Cff/CompactFontTables.cs | 2 + src/SixLabors.Fonts/Tables/TableLoader.cs | 1 + .../Tables/TrueType/TrueTypeFontTables.cs | 2 + 9 files changed, 374 insertions(+), 101 deletions(-) create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MVarTable.cs create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MetricValueRecord.cs diff --git a/src/SixLabors.Fonts/BigEndianBinaryReader.cs b/src/SixLabors.Fonts/BigEndianBinaryReader.cs index 3b2d28756..4d62a9f43 100644 --- a/src/SixLabors.Fonts/BigEndianBinaryReader.cs +++ b/src/SixLabors.Fonts/BigEndianBinaryReader.cs @@ -9,52 +9,86 @@ namespace SixLabors.Fonts; /// +/// /// A binary reader that reads in big-endian format. +/// +/// +/// This reader captures the stream position at construction time as startOfStream. +/// All offset values read from OpenType tables (via , +/// , etc.) are raw values relative to wherever the spec says +/// they originate (typically the start of the containing table). +/// +/// +/// When seeking with using , the +/// startOfStream is automatically added to the supplied offset. This means +/// table-relative offsets can be passed directly to without manually +/// adding the table's absolute position. Do not add the table start +/// yourself — that would double-count and land at the wrong position. +/// +/// +/// In contrast, . always returns the +/// absolute position within the underlying stream and is unaffected by +/// startOfStream. +/// /// [DebuggerDisplay("Start: {StartOfStream}, Position: {BaseStream.Position}")] internal sealed class BigEndianBinaryReader : IDisposable { /// - /// Buffer used for temporary storage before conversion into primitives + /// Buffer used for temporary storage before conversion into primitives. /// private readonly byte[] buffer = new byte[16]; - - private readonly long startOfStream; private readonly bool leaveOpen; /// /// Initializes a new instance of the class. - /// Constructs a new binary reader with the given bit converter, reading - /// to the given stream, using the given encoding. + /// The current position of is captured as startOfStream + /// and used as the origin for all subsequent calls with + /// . /// - /// Stream to read data from - /// if set to true [leave open]. + /// Stream to read data from. + /// If , the stream is not disposed when this reader is disposed. public BigEndianBinaryReader(Stream stream, bool leaveOpen) { this.BaseStream = stream; - this.startOfStream = stream.Position; + this.StartOfStream = stream.Position; this.leaveOpen = leaveOpen; } /// /// Gets the underlying stream of the EndianBinaryReader. + /// Note that on this stream is always the + /// absolute position and is not adjusted by + /// startOfStream. Avoid using BaseStream.Position to compute + /// offsets for — use raw offsets from , + /// , etc. instead. /// public Stream BaseStream { get; } + /// + /// Gets the absolute stream position captured at construction time. + /// This is the origin for all seeks. + /// + public long StartOfStream { get; } + /// /// Seeks within the stream. + /// When is , startOfStream + /// is automatically added to , so callers should pass + /// table-relative offsets directly (e.g. values read from + /// or ). Do not add the table's absolute + /// position — that would double-count. /// - /// Offset to seek to. - /// Origin of seek operation. If SeekOrigin.Begin, the offset will be set to the start of stream position. + /// Offset to seek to, relative to . + /// Origin of seek operation. public void Seek(long offset, SeekOrigin origin) { - // If SeekOrigin.Begin, the offset will be set to the start of stream position. if (origin == SeekOrigin.Begin) { - offset += this.startOfStream; + offset += this.StartOfStream; } - this.BaseStream.Seek(offset, origin); + _ = this.BaseStream.Seek(offset, origin); } /// @@ -67,10 +101,15 @@ public byte ReadByte() return this.buffer[0]; } + /// + /// Reads a single byte from the stream and reinterprets it as the specified enum type. + /// + /// The enum type whose underlying type must be a single byte. + /// The enum value. public TEnum ReadByte() where TEnum : struct, Enum { - TryConvert(this.ReadByte(), out TEnum value); + _ = TryConvert(this.ReadByte(), out TEnum value); return value; } @@ -84,6 +123,11 @@ public sbyte ReadSByte() return unchecked((sbyte)this.buffer[0]); } + /// + /// Reads a 2.14 fixed-point number from the stream. + /// 2 bytes are read and divided by 16384 to produce a value in the range [-2, +2). + /// + /// The fixed-point value as a . public float ReadF2Dot14() { const float f2Dot14ToFloat = 16384F; @@ -102,10 +146,15 @@ public short ReadInt16() return BinaryPrimitives.ReadInt16BigEndian(this.buffer); } + /// + /// Reads a 16-bit integer from the stream and reinterprets it as the specified enum type. + /// + /// The enum type whose underlying type must be 16 bits. + /// The enum value. public TEnum ReadInt16() where TEnum : struct, Enum { - TryConvert(this.ReadUInt16(), out TEnum value); + _ = TryConvert(this.ReadUInt16(), out TEnum value); return value; } @@ -115,6 +164,11 @@ public TEnum ReadInt16() /// A 16-bit signed integer read from the stream, interpreted as an FWORD value. public short ReadFWORD() => this.ReadInt16(); + /// + /// Reads an array of FWORD (signed 16-bit) values from the stream. + /// + /// The number of values to read. + /// An array of 16-bit signed integers. public short[] ReadFWORDArray(int length) => this.ReadInt16Array(length); /// @@ -171,25 +225,31 @@ public ushort ReadUInt16() /// /// Reads a 16-bit unsigned integer from the stream representing an offset position. - /// 2 bytes are read. + /// 2 bytes are read. The returned value is the raw offset as stored in the font file + /// (typically relative to the start of the containing table). Pass it directly to + /// with — do not add the table's + /// absolute position. /// /// The 16-bit unsigned integer read. public ushort ReadOffset16() => this.ReadUInt16(); + /// + /// Reads a 16-bit unsigned integer from the stream and reinterprets it as the specified enum type. + /// + /// The enum type whose underlying type must be 16 bits. + /// The enum value. public TEnum ReadUInt16() where TEnum : struct, Enum { - TryConvert(this.ReadUInt16(), out TEnum value); + _ = TryConvert(this.ReadUInt16(), out TEnum value); return value; } /// - /// Reads array of 16-bit unsigned integers from the stream. + /// Reads an array of 16-bit unsigned integers from the stream. /// - /// The length. - /// - /// The 16-bit unsigned integer read. - /// + /// The number of values to read. + /// An array of 16-bit unsigned integers. public ushort[] ReadUInt16Array(int length) { ushort[] data = new ushort[length]; @@ -214,12 +274,10 @@ public void ReadUInt16Array(Span buffer) } /// - /// Reads array or 32-bit unsigned integers from the stream. + /// Reads an array of 32-bit unsigned integers from the stream. /// - /// The length. - /// - /// The 32-bit unsigned integer read. - /// + /// The number of values to read. + /// An array of 32-bit unsigned integers. public uint[] ReadUInt32Array(int length) { uint[] data = new uint[length]; @@ -231,6 +289,11 @@ public uint[] ReadUInt32Array(int length) return data; } + /// + /// Reads an array of 8-bit unsigned integers (bytes) from the stream. + /// + /// The number of bytes to read. + /// A byte array of the requested length. public byte[] ReadUInt8Array(int length) { byte[] data = new byte[length]; @@ -241,12 +304,10 @@ public byte[] ReadUInt8Array(int length) } /// - /// Reads array of 16-bit unsigned integers from the stream. + /// Reads an array of 16-bit signed integers from the stream. /// - /// The length. - /// - /// The 16-bit signed integer read. - /// + /// The number of values to read. + /// An array of 16-bit signed integers. public short[] ReadInt16Array(int length) { short[] data = new short[length]; @@ -292,6 +353,14 @@ public uint ReadUInt24() return (uint)((highByte << 16) | this.ReadUInt16()); } + /// + /// Reads a 24-bit unsigned integer from the stream representing an offset position. + /// 3 bytes are read. The returned value is the raw offset as stored in the font file + /// (typically relative to the start of the containing table). Pass it directly to + /// with — do not add the table's + /// absolute position. + /// + /// The 24-bit unsigned integer read. public uint ReadOffset24() => this.ReadUInt24(); /// @@ -308,7 +377,10 @@ public uint ReadUInt32() /// /// Reads a 32-bit unsigned integer from the stream representing an offset position. - /// 4 bytes are read. + /// 4 bytes are read. The returned value is the raw offset as stored in the font file + /// (typically relative to the start of the containing table). Pass it directly to + /// with — do not add the table's + /// absolute position. /// /// The 32-bit unsigned integer read. public uint ReadOffset32() => this.ReadUInt32(); @@ -360,9 +432,9 @@ public string ReadString(int bytesToRead, Encoding encoding) } /// - /// Reads the uint32 string. + /// Reads a 4-byte OpenType tag from the stream as a UTF-8 string. /// - /// a 4 character long UTF8 encoded string. + /// A 4-character string representing the tag (e.g. "glyf", "GPOS"). public string ReadTag() { this.ReadInternal(this.buffer, 4); @@ -371,11 +443,15 @@ public string ReadTag() } /// - /// Reads an offset consuming the given number of bytes. + /// Reads an offset consuming the given number of bytes (1–4). + /// The returned value is the raw offset as stored in the font file + /// (typically relative to the start of the containing table). Pass it directly to + /// with — do not add the table's + /// absolute position. /// - /// The offset size in bytes. + /// The offset size in bytes (1, 2, 3, or 4). /// The 32-bit signed integer representing the offset. - /// Size is not in range. + /// Thrown when is not 1–4. public int ReadOffset(int size) => size switch { diff --git a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs index 927384a15..244eaceb8 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs @@ -59,6 +59,7 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) GVarTable? gVar = reader.TryGetTable(); HVarTable? hVar = reader.TryGetTable(); VVarTable? vVar = reader.TryGetTable(); + MVarTable? mVar = reader.TryGetTable(); GlyphVariationProcessor? glyphVariationProcessor = null; if (cff?.ItemVariationStore != null) @@ -69,7 +70,7 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) } // TODO: The docs say that hvar and vvar can be used for CFF fonts so how do we determine when to use them? - glyphVariationProcessor = new GlyphVariationProcessor(cff.ItemVariationStore, fVar, aVar, gVar, hVar, vVar); + glyphVariationProcessor = new GlyphVariationProcessor(cff.ItemVariationStore, fVar, aVar, gVar, hVar, vVar, mVar); } CompactFontTables tables = new(cmap, head, hhea, htmx, maxp, name, os2, post, cff!) @@ -87,6 +88,7 @@ private static StreamFontMetrics LoadCompactFont(FontReader reader) GVar = gVar, HVar = hVar, VVar = vVar, + MVar = mVar, Svg = svg }; diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index 6a097d658..1bc1c9345 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -125,6 +125,7 @@ private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) GVarTable? gvar = reader.TryGetTable(); HVarTable? hvar = reader.TryGetTable(); VVarTable? vvar = reader.TryGetTable(); + MVarTable? mvar = reader.TryGetTable(); ColrTable? colr = reader.TryGetTable(); CpalTable? cpal = reader.TryGetTable(); @@ -148,6 +149,7 @@ private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) Gvar = gvar, Hvar = hvar, Vvar = vvar, + Mvar = mvar, Avar = avar, Svg = svg }; @@ -158,7 +160,7 @@ private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) // Use the item variation store from HVAR or VVAR if available (for metrics variations). // A variable font may have gvar without HVAR/VVAR (using phantom points for metrics instead). ItemVariationStore? itemVariationStore = hvar?.ItemVariationStore ?? vvar?.ItemVariationStore; - glyphVariationProcessor = new GlyphVariationProcessor(itemVariationStore, fvar, avar, gvar, hvar, vvar); + glyphVariationProcessor = new GlyphVariationProcessor(itemVariationStore, fvar, avar, gvar, hvar, vvar, mvar); } return new StreamFontMetrics(tables, glyphVariationProcessor); diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index f45cdbd30..07edc0c53 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -30,6 +30,8 @@ internal class GlyphVariationProcessor private readonly VVarTable? vVar; + private readonly MVarTable? mVar; + private readonly float[] normalizedCoords; private readonly Dictionary blendVectors; @@ -41,6 +43,7 @@ public GlyphVariationProcessor( GVarTable? gVar = null, HVarTable? hVar = null, VVarTable? vVar = null, + MVarTable? mVar = null, float[]? userCoordinates = null) { DebugGuard.NotNull(fVar, nameof(fVar)); @@ -51,6 +54,7 @@ public GlyphVariationProcessor( this.gVar = gVar; this.hVar = hVar; this.vVar = vVar; + this.mVar = mVar; this.normalizedCoords = this.NormalizeCoords(userCoordinates); this.blendVectors = []; } @@ -317,6 +321,27 @@ public float VerticalAdvanceAdjustment(int glyphId) return this.GetMetricDelta(glyphId, this.vVar.AdvanceWidthMapping, this.vVar.ItemVariationStore); } + /// + /// Gets the delta adjustment for a global font metric from the MVAR table. + /// Returns 0 if no MVAR table is present or the tag is not found. + /// + /// The 4-byte MVAR metric tag (e.g. 'hasc', 'hdsc'). + /// The metric delta value. + public float GetMVarDelta(uint tag) + { + if (this.mVar is null) + { + return 0; + } + + if (!this.mVar.TryGetIndices(tag, out ushort outerIndex, out ushort innerIndex)) + { + return 0; + } + + return this.ComputeDelta(this.mVar.ItemVariationStore, outerIndex, innerIndex); + } + /// /// Computes the blend vector for the given outer index in the item variation store. /// Used by the CFF2 blend operator. @@ -330,27 +355,76 @@ public float[] BlendVector(int outerIndex) return []; } - ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; + return this.GetOrComputeBlendVector(this.itemStore, outerIndex); + } + + /// + /// Computes the delta adjustment for a specific item in the item variation store. + /// + /// The outer index. + /// The inner index. + /// The delta value. + internal float Delta(int outerIndex, int innerIndex) + { + if (this.itemStore is null) + { + return 0; + } + + return this.ComputeDelta(this.itemStore, outerIndex, innerIndex); + } + + /// + /// Computes a delta from a given ItemVariationStore using cached blend vectors. + /// Shared by HVAR, VVAR, MVAR, and CFF2 delta lookups. + /// + private float ComputeDelta(ItemVariationStore store, int outerIndex, int innerIndex) + { + if (outerIndex >= store.ItemVariations.Length) + { + return 0; + } + + ItemVariationData variationData = store.ItemVariations[outerIndex]; + if (innerIndex >= variationData.DeltaSets.Length) + { + return 0; + } + + DeltaSet deltaSet = variationData.DeltaSets[innerIndex]; + float[] blendVector = this.GetOrComputeBlendVector(store, outerIndex); + float netAdjustment = 0; + for (int master = 0; master < variationData.RegionIndexes.Length; master++) + { + netAdjustment += deltaSet.Deltas[master] * blendVector[master]; + } + + return netAdjustment; + } + + /// + /// Gets or computes the blend vector for a given outer index in the specified ItemVariationStore. + /// Results are cached by ItemVariationData instance. + /// + private float[] GetOrComputeBlendVector(ItemVariationStore store, int outerIndex) + { + ItemVariationData variationData = store.ItemVariations[outerIndex]; if (this.blendVectors.TryGetValue(variationData, out float[]? blendVector)) { return blendVector; } blendVector = new float[variationData.RegionIndexes.Length]; - - // Outer loop steps through master designs to be blended. for (int i = 0; i < variationData.RegionIndexes.Length; i++) { float scalar = 1.0f; ushort regionIndex = variationData.RegionIndexes[i]; - RegionAxisCoordinates[] axes = this.itemStore.VariationRegionList.VariationRegions[regionIndex]; + RegionAxisCoordinates[] axes = store.VariationRegionList.VariationRegions[regionIndex]; - // Inner loop steps through axes in this region. for (int j = 0; j < axes.Length; j++) { RegionAxisCoordinates axis = axes[j]; - // Compute the scalar contribution of this axis, ignore invalid ranges. float axisScalar; if (axis.StartCoord > axis.PeakCoord || axis.PeakCoord > axis.EndCoord) { @@ -362,17 +436,14 @@ public float[] BlendVector(int outerIndex) } else if (axis.PeakCoord == 0) { - // Peak of 0 means ignore this axis. axisScalar = 1; } else if (this.normalizedCoords[j] < axis.StartCoord || this.normalizedCoords[j] > axis.EndCoord) { - // Ignore this region if coords are out of range. axisScalar = 0; } else { - // Calculate a proportional factor. if (this.normalizedCoords[j] == axis.PeakCoord) { axisScalar = 1; @@ -389,7 +460,6 @@ public float[] BlendVector(int outerIndex) } } - // Take product of all the axis scalars. scalar *= axisScalar; } @@ -397,40 +467,9 @@ public float[] BlendVector(int outerIndex) } this.blendVectors[variationData] = blendVector; - return blendVector; } - /// - /// Computes the delta adjustment for a specific item in the item variation store. - /// - /// The outer index. - /// The inner index. - /// The delta value. - internal float Delta(int outerIndex, int innerIndex) - { - if (this.itemStore is null || outerIndex >= this.itemStore.ItemVariations.Length) - { - return 0; - } - - ItemVariationData variationData = this.itemStore.ItemVariations[outerIndex]; - if (innerIndex >= variationData.DeltaSets.Length) - { - return 0; - } - - DeltaSet deltaSet = variationData.DeltaSets[innerIndex]; - float[] blendVector = this.BlendVector(outerIndex); - float netAdjustment = 0; - for (int master = 0; master < variationData.RegionIndexes.Length; master++) - { - netAdjustment += deltaSet.Deltas[master] * blendVector[master]; - } - - return netAdjustment; - } - /// /// Resolves peak coordinates and computes the tuple factor for a given tuple header. /// Shared helper used by both simple and composite glyph variation paths. @@ -630,26 +669,7 @@ private float GetMetricDelta(int glyphId, DeltaSetIndexMap[]? mapping, ItemVaria innerIndex = glyphId; } - if (outerIndex >= store.ItemVariations.Length) - { - return 0; - } - - ItemVariationData variationData = store.ItemVariations[outerIndex]; - if (innerIndex >= variationData.DeltaSets.Length) - { - return 0; - } - - DeltaSet deltaSet = variationData.DeltaSets[innerIndex]; - float[] blendVector = this.BlendVector(outerIndex); - float netAdjustment = 0; - for (int master = 0; master < variationData.RegionIndexes.Length; master++) - { - netAdjustment += deltaSet.Deltas[master] * blendVector[master]; - } - - return netAdjustment; + return this.ComputeDelta(store, outerIndex, innerIndex); } /// diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MVarTable.cs new file mode 100644 index 000000000..92fbf6ff3 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MVarTable.cs @@ -0,0 +1,136 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// Implements reading the font variations table `MVAR`. +/// The MVAR table is used in variable fonts to provide variations for global font metric values +/// such as ascender, descender, line gap, caret metrics, and other font-wide measurements. +/// +/// +internal class MVarTable : Table +{ + internal const string TableName = "MVAR"; + + public MVarTable(ItemVariationStore itemVariationStore, MetricValueRecord[] valueRecords) + { + this.ItemVariationStore = itemVariationStore; + this.ValueRecords = valueRecords; + } + + public ItemVariationStore ItemVariationStore { get; } + + /// + /// Gets the array of metric value records, sorted by tag for binary search. + /// + public MetricValueRecord[] ValueRecords { get; } + + public static MVarTable? Load(FontReader reader) + { + if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) + { + return null; + } + + using (binaryReader) + { + return Load(binaryReader); + } + } + + public static MVarTable Load(BigEndianBinaryReader reader) + { + // MVAR — Metrics Variations Table + // +--------------------------+------------------------------------------+----------------------------------------------------+ + // | Type | Name | Description | + // +==========================+==========================================+====================================================+ + // | uint16 | majorVersion | Major version — set to 1. | + // +--------------------------+------------------------------------------+----------------------------------------------------+ + // | uint16 | minorVersion | Minor version — set to 0. | + // +--------------------------+------------------------------------------+----------------------------------------------------+ + // | uint16 | reserved | Not used; set to 0. | + // +--------------------------+------------------------------------------+----------------------------------------------------+ + // | uint16 | valueRecordSize | Size in bytes of each value record. | + // +--------------------------+------------------------------------------+----------------------------------------------------+ + // | uint16 | valueRecordCount | Number of value records. | + // +--------------------------+------------------------------------------+----------------------------------------------------+ + // | Offset16 | itemVariationStoreOffset | Offset to ItemVariationStore. | + // +--------------------------+------------------------------------------+----------------------------------------------------+ + // | ValueRecord[] | valueRecords[valueRecordCount] | Array of value records. | + // +--------------------------+------------------------------------------+----------------------------------------------------+ + ushort majorVersion = reader.ReadUInt16(); + ushort minorVersion = reader.ReadUInt16(); + ushort reserved = reader.ReadUInt16(); + ushort valueRecordSize = reader.ReadUInt16(); + ushort valueRecordCount = reader.ReadUInt16(); + ushort itemVariationStoreOffset = reader.ReadOffset16(); + + if (majorVersion != 1) + { + throw new NotSupportedException("Only version 1 of MVAR table is supported"); + } + + // Read the value records. Each is typically 8 bytes (Tag + outerIndex + innerIndex). + MetricValueRecord[] valueRecords = new MetricValueRecord[valueRecordCount]; + for (int i = 0; i < valueRecordCount; i++) + { + long recordStart = reader.BaseStream.Position; + uint tag = reader.ReadUInt32(); + ushort outerIndex = reader.ReadUInt16(); + ushort innerIndex = reader.ReadUInt16(); + valueRecords[i] = new MetricValueRecord(tag, outerIndex, innerIndex); + + // Skip any extra bytes if valueRecordSize > 8 (future compatibility). + long consumed = reader.BaseStream.Position - recordStart; + if (consumed < valueRecordSize) + { + reader.BaseStream.Position += valueRecordSize - consumed; + } + } + + // Load the ItemVariationStore. + ItemVariationStore itemVariationStore = ItemVariationStore.Load(reader, itemVariationStoreOffset); + + return new MVarTable(itemVariationStore, valueRecords); + } + + /// + /// Finds the value record for the given tag using binary search. + /// Returns true if found, with the outer and inner indices set. + /// + /// The 4-byte metric tag to look up. + /// The outer index into the ItemVariationStore. + /// The inner index into the ItemVariationStore. + /// True if the tag was found; false otherwise. + public bool TryGetIndices(uint tag, out ushort outerIndex, out ushort innerIndex) + { + // ValueRecords are sorted by tag per the spec, so binary search is valid. + int lo = 0; + int hi = this.ValueRecords.Length - 1; + while (lo <= hi) + { + int mid = lo + ((hi - lo) >> 1); + uint midTag = this.ValueRecords[mid].Tag; + if (midTag == tag) + { + outerIndex = this.ValueRecords[mid].DeltaSetOuterIndex; + innerIndex = this.ValueRecords[mid].DeltaSetInnerIndex; + return true; + } + + if (midTag < tag) + { + lo = mid + 1; + } + else + { + hi = mid - 1; + } + } + + outerIndex = 0; + innerIndex = 0; + return false; + } +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MetricValueRecord.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MetricValueRecord.cs new file mode 100644 index 000000000..6c53c5cda --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MetricValueRecord.cs @@ -0,0 +1,32 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// A single MVAR value record mapping a metric tag to a delta-set index. +/// +internal readonly struct MetricValueRecord +{ + public MetricValueRecord(uint tag, ushort deltaSetOuterIndex, ushort deltaSetInnerIndex) + { + this.Tag = tag; + this.DeltaSetOuterIndex = deltaSetOuterIndex; + this.DeltaSetInnerIndex = deltaSetInnerIndex; + } + + /// + /// Gets the four-byte tag identifying the metric (e.g. 'hasc', 'hdsc'). + /// + public uint Tag { get; } + + /// + /// Gets the outer index into the ItemVariationStore. + /// + public ushort DeltaSetOuterIndex { get; } + + /// + /// Gets the inner index into the ItemVariationStore. + /// + public ushort DeltaSetInnerIndex { get; } +} diff --git a/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs b/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs index e342e3c9b..1e59bbf4b 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs @@ -78,6 +78,8 @@ public CompactFontTables( public VVarTable? VVar { get; set; } + public MVarTable? MVar { get; set; } + public SvgTable? Svg { get; set; } // Tables Related to CFF Outlines diff --git a/src/SixLabors.Fonts/Tables/TableLoader.cs b/src/SixLabors.Fonts/Tables/TableLoader.cs index 26d7d2d1d..da3050d7a 100644 --- a/src/SixLabors.Fonts/Tables/TableLoader.cs +++ b/src/SixLabors.Fonts/Tables/TableLoader.cs @@ -53,6 +53,7 @@ public TableLoader() this.Register(FVarTable.TableName, FVarTable.Load); this.Register(HVarTable.TableName, HVarTable.Load); this.Register(VVarTable.TableName, VVarTable.Load); + this.Register(MVarTable.TableName, MVarTable.Load); this.Register(SvgTable.TableName, SvgTable.Load); } diff --git a/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs b/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs index 35a050465..3f9f372e0 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs @@ -109,4 +109,6 @@ public TrueTypeFontTables( public HVarTable? Hvar { get; set; } public VVarTable? Vvar { get; set; } + + public MVarTable? Mvar { get; set; } } From 0ea3e79ead8235c3b466e9925931f38d2f5bacde Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 11:11:13 +1000 Subject: [PATCH 44/56] Support MVAR metric deltas for variable fonts --- src/SixLabors.Fonts/StreamFontMetrics.cs | 54 ++++++++ .../Variations/GlyphVariationProcessor.cs | 4 +- .../Variations/MVarTable.cs | 6 +- .../AdvancedTypographic/Variations/MVarTag.cs | 115 ++++++++++++++++++ .../Variations/MetricValueRecord.cs | 4 +- 5 files changed, 176 insertions(+), 7 deletions(-) create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MVarTag.cs diff --git a/src/SixLabors.Fonts/StreamFontMetrics.cs b/src/SixLabors.Fonts/StreamFontMetrics.cs index 20a48e47a..2f3427ce7 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.cs @@ -455,6 +455,13 @@ internal static StreamFontMetrics LoadFont(FontReader reader) HorizontalMetrics horizontalMetrics = InitializeHorizontalMetrics(hhea, vhea, os2); VerticalMetrics verticalMetrics = InitializeVerticalMetrics(horizontalMetrics, vhea); + + // Apply MVAR deltas for the current variation coordinates. + if (this.GlyphVariationProcessor is not null) + { + this.ApplyMVarDeltas(horizontalMetrics, verticalMetrics); + } + return (horizontalMetrics, verticalMetrics); } @@ -558,6 +565,53 @@ private static VerticalMetrics InitializeVerticalMetrics(HorizontalMetrics metri return verticalMetrics; } + /// + /// Applies MVAR (Metrics Variations) deltas to all font-wide metrics. + /// MVAR adjusts global metrics (ascender, descender, line gap, strikeout, underline, etc.) + /// based on the current variation coordinates. + /// + /// + private void ApplyMVarDeltas(HorizontalMetrics horizontalMetrics, VerticalMetrics verticalMetrics) + { + GlyphVariationProcessor processor = this.GlyphVariationProcessor!; + + // MVAR tags are 4-byte big-endian ASCII values. + // Horizontal metrics from OS/2 or hhea. + horizontalMetrics.Ascender += (short)MathF.Round(processor.GetMVarDelta(MVarTag.HorizontalAscender)); + horizontalMetrics.Descender += (short)MathF.Round(processor.GetMVarDelta(MVarTag.HorizontalDescender)); + horizontalMetrics.LineGap += (short)MathF.Round(processor.GetMVarDelta(MVarTag.HorizontalLineGap)); + horizontalMetrics.LineHeight = (short)(horizontalMetrics.Ascender - horizontalMetrics.Descender + horizontalMetrics.LineGap); + + // Vertical metrics from vhea. + if (!verticalMetrics.Synthesized) + { + verticalMetrics.Ascender += (short)MathF.Round(processor.GetMVarDelta(MVarTag.VerticalAscender)); + verticalMetrics.Descender += (short)MathF.Round(processor.GetMVarDelta(MVarTag.VerticalDescender)); + verticalMetrics.LineGap += (short)MathF.Round(processor.GetMVarDelta(MVarTag.VerticalLineGap)); + verticalMetrics.LineHeight = (short)(verticalMetrics.Ascender - verticalMetrics.Descender + verticalMetrics.LineGap); + } + + // OS/2 subscript metrics. + this.subscriptXSize += (short)MathF.Round(processor.GetMVarDelta(MVarTag.SubscriptXSize)); + this.subscriptYSize += (short)MathF.Round(processor.GetMVarDelta(MVarTag.SubscriptYSize)); + this.subscriptXOffset += (short)MathF.Round(processor.GetMVarDelta(MVarTag.SubscriptXOffset)); + this.subscriptYOffset += (short)MathF.Round(processor.GetMVarDelta(MVarTag.SubscriptYOffset)); + + // OS/2 superscript metrics. + this.superscriptXSize += (short)MathF.Round(processor.GetMVarDelta(MVarTag.SuperscriptXSize)); + this.superscriptYSize += (short)MathF.Round(processor.GetMVarDelta(MVarTag.SuperscriptYSize)); + this.superscriptXOffset += (short)MathF.Round(processor.GetMVarDelta(MVarTag.SuperscriptXOffset)); + this.superscriptYOffset += (short)MathF.Round(processor.GetMVarDelta(MVarTag.SuperscriptYOffset)); + + // OS/2 strikeout metrics. + this.strikeoutSize += (short)MathF.Round(processor.GetMVarDelta(MVarTag.StrikeoutSize)); + this.strikeoutPosition += (short)MathF.Round(processor.GetMVarDelta(MVarTag.StrikeoutPosition)); + + // post underline metrics. + this.underlinePosition += (short)MathF.Round(processor.GetMVarDelta(MVarTag.UnderlinePosition)); + this.underlineThickness += (short)MathF.Round(processor.GetMVarDelta(MVarTag.UnderlineThickness)); + } + /// /// Reads a from the specified stream. /// diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index 07edc0c53..3ead951d0 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -325,9 +325,9 @@ public float VerticalAdvanceAdjustment(int glyphId) /// Gets the delta adjustment for a global font metric from the MVAR table. /// Returns 0 if no MVAR table is present or the tag is not found. /// - /// The 4-byte MVAR metric tag (e.g. 'hasc', 'hdsc'). + /// The MVAR metric tag (e.g. 'hasc', 'hdsc'). /// The metric delta value. - public float GetMVarDelta(uint tag) + public float GetMVarDelta(Tag tag) { if (this.mVar is null) { diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MVarTable.cs index 92fbf6ff3..9a0705e51 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MVarTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MVarTable.cs @@ -103,7 +103,7 @@ public static MVarTable Load(BigEndianBinaryReader reader) /// The outer index into the ItemVariationStore. /// The inner index into the ItemVariationStore. /// True if the tag was found; false otherwise. - public bool TryGetIndices(uint tag, out ushort outerIndex, out ushort innerIndex) + public bool TryGetIndices(Tag tag, out ushort outerIndex, out ushort innerIndex) { // ValueRecords are sorted by tag per the spec, so binary search is valid. int lo = 0; @@ -111,7 +111,7 @@ public bool TryGetIndices(uint tag, out ushort outerIndex, out ushort innerIndex while (lo <= hi) { int mid = lo + ((hi - lo) >> 1); - uint midTag = this.ValueRecords[mid].Tag; + Tag midTag = this.ValueRecords[mid].Tag; if (midTag == tag) { outerIndex = this.ValueRecords[mid].DeltaSetOuterIndex; @@ -119,7 +119,7 @@ public bool TryGetIndices(uint tag, out ushort outerIndex, out ushort innerIndex return true; } - if (midTag < tag) + if (midTag.Value < tag.Value) { lo = mid + 1; } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MVarTag.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MVarTag.cs new file mode 100644 index 000000000..4e09908c8 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MVarTag.cs @@ -0,0 +1,115 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// Defines the tags used by the MVAR table to identify font-wide metrics +/// that can be varied in a variable font. +/// Each tag maps to a specific field in the OS/2, hhea, vhea, or post tables. +/// +/// +internal static class MVarTag +{ + // Horizontal metrics (OS/2 typo or hhea). + + /// OS/2.sTypoAscender / hhea.ascender ('hasc'). + public static readonly Tag HorizontalAscender = Tag.Parse("hasc"); + + /// OS/2.sTypoDescender / hhea.descender ('hdsc'). + public static readonly Tag HorizontalDescender = Tag.Parse("hdsc"); + + /// OS/2.sTypoLineGap / hhea.lineGap ('hlgp'). + public static readonly Tag HorizontalLineGap = Tag.Parse("hlgp"); + + /// OS/2.usWinAscent ('hcla'). + public static readonly Tag HorizontalClippingAscent = Tag.Parse("hcla"); + + /// OS/2.usWinDescent ('hcld'). + public static readonly Tag HorizontalClippingDescent = Tag.Parse("hcld"); + + // Vertical metrics (vhea). + + /// vhea.ascent ('vasc'). + public static readonly Tag VerticalAscender = Tag.Parse("vasc"); + + /// vhea.descent ('vdsc'). + public static readonly Tag VerticalDescender = Tag.Parse("vdsc"); + + /// vhea.lineGap ('vlgp'). + public static readonly Tag VerticalLineGap = Tag.Parse("vlgp"); + + // OS/2 subscript metrics. + + /// OS/2.ySubscriptXSize ('sbxs'). + public static readonly Tag SubscriptXSize = Tag.Parse("sbxs"); + + /// OS/2.ySubscriptYSize ('sbys'). + public static readonly Tag SubscriptYSize = Tag.Parse("sbys"); + + /// OS/2.ySubscriptXOffset ('sbxo'). + public static readonly Tag SubscriptXOffset = Tag.Parse("sbxo"); + + /// OS/2.ySubscriptYOffset ('sbyo'). + public static readonly Tag SubscriptYOffset = Tag.Parse("sbyo"); + + // OS/2 superscript metrics. + + /// OS/2.ySuperscriptXSize ('spxs'). + public static readonly Tag SuperscriptXSize = Tag.Parse("spxs"); + + /// OS/2.ySuperscriptYSize ('spys'). + public static readonly Tag SuperscriptYSize = Tag.Parse("spys"); + + /// OS/2.ySuperscriptXOffset ('spxo'). + public static readonly Tag SuperscriptXOffset = Tag.Parse("spxo"); + + /// OS/2.ySuperscriptYOffset ('spyo'). + public static readonly Tag SuperscriptYOffset = Tag.Parse("spyo"); + + // OS/2 strikeout metrics. + + /// OS/2.yStrikeoutSize ('strs'). + public static readonly Tag StrikeoutSize = Tag.Parse("strs"); + + /// OS/2.yStrikeoutPosition ('stro'). + public static readonly Tag StrikeoutPosition = Tag.Parse("stro"); + + // post underline metrics. + + /// post.underlineThickness ('unds'). + public static readonly Tag UnderlineThickness = Tag.Parse("unds"); + + /// post.underlinePosition ('undo'). + public static readonly Tag UnderlinePosition = Tag.Parse("undo"); + + // OS/2 miscellaneous metrics. + + /// OS/2.sxHeight ('xhgt'). + public static readonly Tag XHeight = Tag.Parse("xhgt"); + + /// OS/2.sCapHeight ('cpht'). + public static readonly Tag CapHeight = Tag.Parse("cpht"); + + // hhea caret metrics. + + /// hhea.caretSlopeRise ('hcrn'). + public static readonly Tag HorizontalCaretRise = Tag.Parse("hcrn"); + + /// hhea.caretSlopeRun ('hcrs'). + public static readonly Tag HorizontalCaretRun = Tag.Parse("hcrs"); + + /// hhea.caretOffset ('hcof'). + public static readonly Tag HorizontalCaretOffset = Tag.Parse("hcof"); + + // vhea caret metrics. + + /// vhea.caretSlopeRise ('vcrn'). + public static readonly Tag VerticalCaretRise = Tag.Parse("vcrn"); + + /// vhea.caretSlopeRun ('vcrs'). + public static readonly Tag VerticalCaretRun = Tag.Parse("vcrs"); + + /// vhea.caretOffset ('vcof'). + public static readonly Tag VerticalCaretOffset = Tag.Parse("vcof"); +} diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MetricValueRecord.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MetricValueRecord.cs index 6c53c5cda..d228a5d49 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MetricValueRecord.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/MetricValueRecord.cs @@ -8,7 +8,7 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; /// internal readonly struct MetricValueRecord { - public MetricValueRecord(uint tag, ushort deltaSetOuterIndex, ushort deltaSetInnerIndex) + public MetricValueRecord(Tag tag, ushort deltaSetOuterIndex, ushort deltaSetInnerIndex) { this.Tag = tag; this.DeltaSetOuterIndex = deltaSetOuterIndex; @@ -18,7 +18,7 @@ public MetricValueRecord(uint tag, ushort deltaSetOuterIndex, ushort deltaSetInn /// /// Gets the four-byte tag identifying the metric (e.g. 'hasc', 'hdsc'). /// - public uint Tag { get; } + public Tag Tag { get; } /// /// Gets the outer index into the ItemVariationStore. From 50a332aebf1ebe0b8886abecab46d389a37d654e Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 11:28:52 +1000 Subject: [PATCH 45/56] Add cvar (CVT variations) table support --- .../StreamFontMetrics.TrueType.cs | 10 +- .../Variations/CVarTable.cs | 190 ++++++++++++++++++ .../Tables/TrueType/TrueTypeFontTables.cs | 2 + 3 files changed, 201 insertions(+), 1 deletion(-) create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/CVarTable.cs diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index 1bc1c9345..afc7e9f30 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -127,6 +127,13 @@ private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) VVarTable? vvar = reader.TryGetTable(); MVarTable? mvar = reader.TryGetTable(); + // cvar depends on axisCount from fvar, so it cannot be auto-loaded via TryGetTable. + CVarTable? cvar = null; + if (fvar is not null) + { + cvar = CVarTable.Load(reader, fvar.AxisCount); + } + ColrTable? colr = reader.TryGetTable(); CpalTable? cpal = reader.TryGetTable(); @@ -151,7 +158,8 @@ private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) Vvar = vvar, Mvar = mvar, Avar = avar, - Svg = svg + Svg = svg, + Cvar = cvar }; GlyphVariationProcessor? glyphVariationProcessor = null; diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/CVarTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/CVarTable.cs new file mode 100644 index 000000000..61fa39670 --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/CVarTable.cs @@ -0,0 +1,190 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +namespace SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + +/// +/// Implements reading the CVT Variations table cvar. +/// The cvar table provides variation data for the Control Value Table (CVT) +/// used by TrueType hinting instructions. It uses the same Tuple Variation Store +/// format as gvar, but with a single dimension of deltas (CVT values rather than X/Y coordinates). +/// +/// +internal class CVarTable : Table +{ + internal const string TableName = "cvar"; + + public CVarTable(CVarTupleVariation[] tupleVariations) + => this.TupleVariations = tupleVariations; + + /// + /// Gets the tuple variations containing CVT deltas. + /// + public CVarTupleVariation[] TupleVariations { get; } + + /// + /// Loads the cvar table from the font reader. + /// The axis count must be known from the fvar table before loading cvar. + /// + /// The font reader. + /// The number of variation axes from fvar. + /// The loaded cvar table, or null if not present. + public static CVarTable? Load(FontReader reader, int axisCount) + { + if (!reader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) + { + return null; + } + + using (binaryReader) + { + return Load(binaryReader, axisCount); + } + } + + public static CVarTable Load(BigEndianBinaryReader reader, int axisCount) + { + // cvar — CVT Variations Table + // The cvar table uses the Tuple Variation Store format. + // +--------------------------+-------------------------------------------+--------------------------------------------------------------+ + // | Type | Name | Description | + // +==========================+===========================================+==============================================================+ + // | uint16 | majorVersion | Major version — set to 1. | + // +--------------------------+-------------------------------------------+--------------------------------------------------------------+ + // | uint16 | minorVersion | Minor version — set to 0. | + // +--------------------------+-------------------------------------------+--------------------------------------------------------------+ + // | uint16 | tupleVariationCount | Packed field: high 4 bits are flags, | + // | | | low 12 bits are the number of tuple variation tables. | + // +--------------------------+-------------------------------------------+--------------------------------------------------------------+ + // | Offset16 | dataOffset | Offset from the start of the cvar table to the | + // | | | serialized data. | + // +--------------------------+-------------------------------------------+--------------------------------------------------------------+ + // | TupleVariation | tupleVariationHeaders[tupleVariationCount]| Array of tuple variation headers. | + // +--------------------------+-------------------------------------------+--------------------------------------------------------------+ + ushort majorVersion = reader.ReadUInt16(); + ushort minorVersion = reader.ReadUInt16(); + + if (majorVersion != 1) + { + throw new NotSupportedException("Only version 1 of cvar table is supported"); + } + + ushort tupleVariationCount = reader.ReadUInt16(); + bool hasSharedPointNumbers = (tupleVariationCount & GlyphVariationData.SharedPointNumbersMask) != 0; + int tupleCount = tupleVariationCount & GlyphVariationData.CountMask; + ushort dataOffset = reader.ReadOffset16(); + + // Read all tuple variation headers. + TupleVariation[] tupleVariations = new TupleVariation[tupleCount]; + for (int i = 0; i < tupleCount; i++) + { + tupleVariations[i] = TupleVariation.Load(reader, axisCount); + } + + // Seek to the serialized data. + reader.Seek(dataOffset, SeekOrigin.Begin); + + // If shared point numbers flag is set, decode them from the start of the serialized data. + ushort[]? sharedPointNumbers = null; + if (hasSharedPointNumbers) + { + sharedPointNumbers = GlyphVariationData.DecodePackedPoints(reader); + } + + // Decode each tuple's serialized data. + // Unlike gvar, cvar has only one set of deltas per tuple (CVT value adjustments). + CVarTupleVariation[] cvarTuples = new CVarTupleVariation[tupleCount]; + for (int i = 0; i < tupleCount; i++) + { + TupleVariation header = tupleVariations[i]; + long tupleDataStart = reader.BaseStream.Position; + + // Determine which CVT indices this tuple applies to. + ushort[]? pointNumbers; + if (header.HasPrivatePointNumbers) + { + pointNumbers = GlyphVariationData.DecodePackedPoints(reader); + } + else + { + pointNumbers = sharedPointNumbers; + } + + int nPoints = pointNumbers is { Length: > 0 } ? pointNumbers.Length : 0; + + short[]? deltas = null; + if (nPoints > 0) + { + // cvar has only one set of deltas (not X/Y pairs like gvar). + deltas = GlyphVariationData.DecodePackedDeltas(reader, nPoints); + } + else + { + // All CVT entries are referenced. Store raw bytes for deferred decoding. + long bytesConsumed = reader.BaseStream.Position - tupleDataStart; + int remaining = header.VariationDataSize - (int)bytesConsumed; + if (remaining > 0) + { + cvarTuples[i] = new CVarTupleVariation(header, pointNumbers, null, reader.ReadBytes(remaining)); + continue; + } + } + + // Skip any remaining bytes for this tuple. + long consumed = reader.BaseStream.Position - tupleDataStart; + int skip = header.VariationDataSize - (int)consumed; + if (skip > 0) + { + reader.BaseStream.Position += skip; + } + + cvarTuples[i] = new CVarTupleVariation(header, pointNumbers, deltas, null); + } + + return new CVarTable(cvarTuples); + } +} + +/// +/// Represents a single tuple variation for the cvar table with its CVT index references and deltas. +/// Unlike gvar's which has X/Y delta pairs, +/// cvar tuples have a single set of deltas for CVT values. +/// +internal class CVarTupleVariation +{ + public CVarTupleVariation( + TupleVariation tupleVariation, + ushort[]? pointNumbers, + short[]? deltas, + byte[]? rawDeltaData) + { + this.TupleVariation = tupleVariation; + this.PointNumbers = pointNumbers; + this.Deltas = deltas; + this.RawDeltaData = rawDeltaData; + } + + /// + /// Gets the tuple variation header containing peak coordinates and flags. + /// + public TupleVariation TupleVariation { get; } + + /// + /// Gets the CVT indices this tuple applies to. + /// An empty array means all CVT entries are referenced. + /// + public ushort[]? PointNumbers { get; } + + /// + /// Gets the CVT deltas for the referenced entries. + /// Null when deltas apply to all CVT entries and were deferred (see ). + /// + public short[]? Deltas { get; } + + /// + /// Gets the raw serialized delta data for deferred decoding. + /// Used when point numbers indicate "all CVT entries" and the actual count + /// is not known until the CVT table size is available. + /// + public byte[]? RawDeltaData { get; } +} diff --git a/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs b/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs index 3f9f372e0..1f55983b6 100644 --- a/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs +++ b/src/SixLabors.Fonts/Tables/TrueType/TrueTypeFontTables.cs @@ -111,4 +111,6 @@ public TrueTypeFontTables( public VVarTable? Vvar { get; set; } public MVarTable? Mvar { get; set; } + + public CVarTable? Cvar { get; set; } } From 7f992925cc5871b33b602afa6e279e2f720c5552 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 11:55:58 +1000 Subject: [PATCH 46/56] Support CVT variations (cvar) and caching --- .../StreamFontMetrics.TrueType.cs | 12 +- .../Variations/GlyphVariationProcessor.cs | 117 ++++++++++++++++-- src/SixLabors.Fonts/Tables/TableLoader.cs | 1 + 3 files changed, 120 insertions(+), 10 deletions(-) diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index afc7e9f30..a864a47b9 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -68,7 +68,15 @@ internal void ApplyTrueTypeHinting(HintingMode hintingMode, GlyphMetrics metrics CvtTable? cvt = tables.Cvt; PrepTable? prep = tables.Prep; float hintingScaleFactor = pixelSize / this.UnitsPerEm; - interpreter.SetControlValueTable(cvt?.ControlValues, hintingScaleFactor, pixelSize, prep?.Instructions); + + // Apply cvar deltas to CVT values for variable fonts before hinting. + short[]? cvtValues = cvt?.ControlValues; + if (cvtValues is not null && this.GlyphVariationProcessor is not null) + { + cvtValues = this.GlyphVariationProcessor.ApplyCvtDeltas(cvtValues) ?? cvtValues; + } + + interpreter.SetControlValueTable(cvtValues, hintingScaleFactor, pixelSize, prep?.Instructions); Bounds bounds = glyphVector.Bounds; @@ -168,7 +176,7 @@ private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) // Use the item variation store from HVAR or VVAR if available (for metrics variations). // A variable font may have gvar without HVAR/VVAR (using phantom points for metrics instead). ItemVariationStore? itemVariationStore = hvar?.ItemVariationStore ?? vvar?.ItemVariationStore; - glyphVariationProcessor = new GlyphVariationProcessor(itemVariationStore, fvar, avar, gvar, hvar, vvar, mvar); + glyphVariationProcessor = new GlyphVariationProcessor(itemVariationStore, fvar, avar, gvar, hvar, vvar, mvar, cvar); } return new StreamFontMetrics(tables, glyphVariationProcessor); diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index 3ead951d0..7bc6d0cc9 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -1,6 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. +using System.Collections.Concurrent; using System.Numerics; using SixLabors.Fonts.Tables.TrueType.Glyphs; @@ -32,9 +33,18 @@ internal class GlyphVariationProcessor private readonly MVarTable? mVar; + private readonly CVarTable? cVar; + private readonly float[] normalizedCoords; - private readonly Dictionary blendVectors; + private readonly ConcurrentDictionary blendVectors; + + /// + /// Cached CVT values with cvar deltas applied, keyed by the base CVT array. + /// Computed once per unique base CVT since the result depends only on + /// normalized coordinates and the base values, not on the glyph. + /// + private readonly ConcurrentDictionary cvtCache = new(ReferenceEqualityComparer.Instance); public GlyphVariationProcessor( ItemVariationStore? itemStore, @@ -44,6 +54,7 @@ public GlyphVariationProcessor( HVarTable? hVar = null, VVarTable? vVar = null, MVarTable? mVar = null, + CVarTable? cVar = null, float[]? userCoordinates = null) { DebugGuard.NotNull(fVar, nameof(fVar)); @@ -55,8 +66,9 @@ public GlyphVariationProcessor( this.hVar = hVar; this.vVar = vVar; this.mVar = mVar; + this.cVar = cVar; this.normalizedCoords = this.NormalizeCoords(userCoordinates); - this.blendVectors = []; + this.blendVectors = new(); } /// @@ -342,6 +354,96 @@ public float GetMVarDelta(Tag tag) return this.ComputeDelta(this.mVar.ItemVariationStore, outerIndex, innerIndex); } + /// + /// Applies cvar (CVT Variations) deltas to the base CVT values. + /// The result is computed once and cached, since cvar deltas depend only on + /// normalized axis coordinates, not on the glyph being processed. + /// Returns an adjusted copy of the CVT values with variation deltas applied, + /// or null if there is no cvar data. + /// + /// The base CVT values from the cvt table. + /// The varied CVT values, or null if no cvar table is present. + public short[]? ApplyCvtDeltas(short[] baseCvt) + { + if (this.cVar is null || this.cVar.TupleVariations.Length == 0) + { + return null; + } + + return this.cvtCache.GetOrAdd(baseCvt, this.ComputeCvtDeltas); + } + + private short[] ComputeCvtDeltas(short[] baseCvt) + { + // Work on a copy so we don't modify the original CVT values. + short[] varied = new short[baseCvt.Length]; + Array.Copy(baseCvt, varied, baseCvt.Length); + + foreach (CVarTupleVariation cvarTuple in this.cVar!.TupleVariations) + { + TupleVariation tuple = cvarTuple.TupleVariation; + + // cvar always has embedded peak coordinates (per spec). + float[]? peakCoords = tuple.EmbeddedPeak; + if (peakCoords is null) + { + continue; + } + + float factor = this.TupleFactor( + tuple.IsIntermediateRegion, + peakCoords, + tuple.IntermediateStartRegion, + tuple.IntermediateEndRegion); + + if (factor == 0) + { + continue; + } + + short[]? deltas = cvarTuple.Deltas; + ushort[]? pointNumbers = cvarTuple.PointNumbers; + + // Handle deferred decoding for "all points" case. + if (deltas is null && cvarTuple.RawDeltaData is not null) + { + using MemoryStream ms = new(cvarTuple.RawDeltaData); + using BigEndianBinaryReader deltaReader = new(ms, false); + deltas = GlyphVariationData.DecodePackedDeltas(deltaReader, baseCvt.Length); + } + + if (deltas is null) + { + continue; + } + + bool allPoints = pointNumbers is null or { Length: 0 }; + if (allPoints) + { + // Deltas apply to all CVT entries. + int count = Math.Min(deltas.Length, varied.Length); + for (int i = 0; i < count; i++) + { + varied[i] += (short)MathF.Round(deltas[i] * factor); + } + } + else + { + // Deltas apply to specific CVT indices. + for (int i = 0; i < pointNumbers!.Length && i < deltas.Length; i++) + { + int idx = pointNumbers[i]; + if (idx < varied.Length) + { + varied[idx] += (short)MathF.Round(deltas[i] * factor); + } + } + } + } + + return varied; + } + /// /// Computes the blend vector for the given outer index in the item variation store. /// Used by the CFF2 blend operator. @@ -409,12 +511,12 @@ private float ComputeDelta(ItemVariationStore store, int outerIndex, int innerIn private float[] GetOrComputeBlendVector(ItemVariationStore store, int outerIndex) { ItemVariationData variationData = store.ItemVariations[outerIndex]; - if (this.blendVectors.TryGetValue(variationData, out float[]? blendVector)) - { - return blendVector; - } + return this.blendVectors.GetOrAdd(variationData, _ => this.ComputeBlendVector(store, variationData)); + } - blendVector = new float[variationData.RegionIndexes.Length]; + private float[] ComputeBlendVector(ItemVariationStore store, ItemVariationData variationData) + { + float[] blendVector = new float[variationData.RegionIndexes.Length]; for (int i = 0; i < variationData.RegionIndexes.Length; i++) { float scalar = 1.0f; @@ -466,7 +568,6 @@ private float[] GetOrComputeBlendVector(ItemVariationStore store, int outerIndex blendVector[i] = scalar; } - this.blendVectors[variationData] = blendVector; return blendVector; } diff --git a/src/SixLabors.Fonts/Tables/TableLoader.cs b/src/SixLabors.Fonts/Tables/TableLoader.cs index da3050d7a..e7ce32bdd 100644 --- a/src/SixLabors.Fonts/Tables/TableLoader.cs +++ b/src/SixLabors.Fonts/Tables/TableLoader.cs @@ -54,6 +54,7 @@ public TableLoader() this.Register(HVarTable.TableName, HVarTable.Load); this.Register(VVarTable.TableName, VVarTable.Load); this.Register(MVarTable.TableName, MVarTable.Load); + this.Register(CVarTable.TableName, _ => null); this.Register(SvgTable.TableName, SvgTable.Load); } From 18a7439864fe47b5577236ba0cb4fb88064655e0 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 12:22:38 +1000 Subject: [PATCH 47/56] Apply GDEF VariationIndex deltas in GPOS/GSUB --- src/SixLabors.Fonts/FileFontMetrics.cs | 4 + src/SixLabors.Fonts/FontMetrics.cs | 12 ++ src/SixLabors.Fonts/StreamFontMetrics.cs | 25 +++++ .../AdvancedTypographicUtils.cs | 11 ++ .../AdvancedTypographic/GPos/AnchorTable.cs | 74 +++++++++--- .../AdvancedTypographic/GPos/Class1Record.cs | 4 +- .../AdvancedTypographic/GPos/Class2Record.cs | 7 +- .../GPos/LookupType1SubTable.cs | 8 +- .../GPos/LookupType2SubTable.cs | 15 +-- .../GPos/PairValueRecord.cs | 7 +- .../AdvancedTypographic/GPos/ValueRecord.cs | 105 ++++++++++++++++-- .../Variations/GlyphVariationProcessor.cs | 11 ++ 12 files changed, 243 insertions(+), 40 deletions(-) diff --git a/src/SixLabors.Fonts/FileFontMetrics.cs b/src/SixLabors.Fonts/FileFontMetrics.cs index 8b8b2542d..f035270d8 100644 --- a/src/SixLabors.Fonts/FileFontMetrics.cs +++ b/src/SixLabors.Fonts/FileFontMetrics.cs @@ -168,6 +168,10 @@ internal override bool TryGetKerningOffset(ushort currentId, ushort nextId, out internal override void UpdatePositions(GlyphPositioningCollection collection) => this.fontMetrics.Value.UpdatePositions(collection); + /// + internal override float GetGDefVariationDelta(uint packedVariationIndex) + => this.fontMetrics.Value.GetGDefVariationDelta(packedVariationIndex); + /// /// Reads a from the specified stream. /// diff --git a/src/SixLabors.Fonts/FontMetrics.cs b/src/SixLabors.Fonts/FontMetrics.cs index 8e077b963..c038459d0 100644 --- a/src/SixLabors.Fonts/FontMetrics.cs +++ b/src/SixLabors.Fonts/FontMetrics.cs @@ -276,4 +276,16 @@ internal abstract GlyphMetrics GetGlyphMetrics( /// /// The glyph positioning collection. internal abstract void UpdatePositions(GlyphPositioningCollection collection); + + /// + /// Computes a GPOS/GSUB variation delta for the given packed VariationIndex. + /// The delta is computed using the GDEF ItemVariationStore and the current + /// variation coordinates from the GlyphVariationProcessor. + /// + /// + /// The packed VariationIndex: (outerIndex << 16) | innerIndex. + /// A value of 0 returns 0. + /// + /// The delta value in design units, or 0 if no variation data is available. + internal abstract float GetGDefVariationDelta(uint packedVariationIndex); } diff --git a/src/SixLabors.Fonts/StreamFontMetrics.cs b/src/SixLabors.Fonts/StreamFontMetrics.cs index 2f3427ce7..2c8de7c2a 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.cs @@ -381,6 +381,31 @@ internal override void UpdatePositions(GlyphPositioningCollection collection) } } + /// + internal override float GetGDefVariationDelta(uint packedVariationIndex) + { + if (packedVariationIndex == 0 || this.GlyphVariationProcessor is null) + { + return 0; + } + + GlyphDefinitionTable? gdef = this.outlineType == OutlineType.TrueType + ? this.trueTypeFontTables!.Gdef + : this.compactFontTables!.Gdef; + + if (gdef?.ItemVariationStore is null) + { + return 0; + } + + // The packed index encodes two uint16 values: + // - Upper 16 bits: outer index (selects the ItemVariationData subtable) + // - Lower 16 bits: inner index (selects the DeltaSet within that subtable) + int outerIndex = (int)(packedVariationIndex >> 16); + int innerIndex = (int)(packedVariationIndex & 0xFFFF); + return this.GlyphVariationProcessor.Delta(gdef.ItemVariationStore, outerIndex, innerIndex); + } + /// /// Reads a from the specified stream. /// diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/AdvancedTypographicUtils.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/AdvancedTypographicUtils.cs index fdad14a3c..903999c36 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/AdvancedTypographicUtils.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/AdvancedTypographicUtils.cs @@ -319,6 +319,7 @@ public static void ApplyAnchor( } public static void ApplyPosition( + FontMetrics fontMetrics, GlyphPositioningCollection collection, int index, ValueRecord record, @@ -329,6 +330,16 @@ public static void ApplyPosition( current.Bounds.Height += record.YAdvance; current.Bounds.X += record.XPlacement; current.Bounds.Y += record.YPlacement; + + // Apply variation deltas from VariationIndex tables (variable fonts). + if (record.HasVariation) + { + current.Bounds.X += (short)MathF.Round(fontMetrics.GetGDefVariationDelta(record.XPlacementVariation)); + current.Bounds.Y += (short)MathF.Round(fontMetrics.GetGDefVariationDelta(record.YPlacementVariation)); + current.Bounds.Width += (short)MathF.Round(fontMetrics.GetGDefVariationDelta(record.XAdvanceVariation)); + current.Bounds.Height += (short)MathF.Round(fontMetrics.GetGDefVariationDelta(record.YAdvanceVariation)); + } + current.AppliedFeatures.Add(feature); } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/AnchorTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/AnchorTable.cs index a628a8eef..08c6137a8 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/AnchorTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/AnchorTable.cs @@ -49,7 +49,7 @@ public static AnchorTable Load(BigEndianBinaryReader reader, long offset) { 1 => AnchorFormat1.Load(reader), 2 => AnchorFormat2.Load(reader), - 3 => AnchorFormat3.Load(reader), + 3 => AnchorFormat3.LoadFormat3(reader, offset), // Harfbuzz (Anchor.hh) treats this as an empty table and does not throw.. // NotoSans Regular can trigger this. See https://github.com/SixLabors/Fonts/issues/417 @@ -138,20 +138,26 @@ public override AnchorXY GetAnchor(FontMetrics fontMetrics, GlyphShapingData dat internal sealed class AnchorFormat3 : AnchorTable { - // TODO: actually use the xDeviceOffset. - private readonly ushort xDeviceOffset; + private const ushort VariationIndexFormat = 0x8000; - // TODO: actually use the yDeviceOffset. - private readonly ushort yDeviceOffset; + /// + /// Packed VariationIndex for X: (outerIndex << 16) | innerIndex. 0 = none. + /// + private readonly uint xVariation; - public AnchorFormat3(short xCoordinate, short yCoordinate, ushort xDeviceOffset, ushort yDeviceOffset) + /// + /// Packed VariationIndex for Y: (outerIndex << 16) | innerIndex. 0 = none. + /// + private readonly uint yVariation; + + public AnchorFormat3(short xCoordinate, short yCoordinate, uint xVariation, uint yVariation) : base(xCoordinate, yCoordinate) { - this.xDeviceOffset = xDeviceOffset; - this.yDeviceOffset = yDeviceOffset; + this.xVariation = xVariation; + this.yVariation = yVariation; } - public static AnchorFormat3 Load(BigEndianBinaryReader reader) + public static AnchorFormat3 LoadFormat3(BigEndianBinaryReader reader, long anchorBase) { // +--------------+------------------------+-----------------------------------------------------------+ // | Type | Name | Description | @@ -162,8 +168,6 @@ public static AnchorFormat3 Load(BigEndianBinaryReader reader) // +--------------+------------------------+-----------------------------------------------------------+ // | int16 | yCoordinate | Vertical value, in design units. | // +--------------+------------------------+-----------------------------------------------------------+ - // | uint16 + anchorPoint | Index to glyph contour point. + - // +--------------+------------------------+-----------------------------------------------------------+ // | Offset16 | xDeviceOffset + Offset to Device table (non-variable font) / | // | | | VariationIndex table (variable font) for X coordinate, | // | | | from beginning of Anchor table (may be NULL) | @@ -176,11 +180,55 @@ public static AnchorFormat3 Load(BigEndianBinaryReader reader) short yCoordinate = reader.ReadInt16(); ushort xDeviceOffset = reader.ReadOffset16(); ushort yDeviceOffset = reader.ReadOffset16(); - return new AnchorFormat3(xCoordinate, yCoordinate, xDeviceOffset, yDeviceOffset); + + uint xVariation = ResolveVariationIndex(reader, anchorBase, xDeviceOffset); + uint yVariation = ResolveVariationIndex(reader, anchorBase, yDeviceOffset); + + return new AnchorFormat3(xCoordinate, yCoordinate, xVariation, yVariation); } public override AnchorXY GetAnchor(FontMetrics fontMetrics, GlyphShapingData data, GlyphPositioningCollection collection) - => new(this.XCoordinate, this.YCoordinate); + { + short x = this.XCoordinate; + short y = this.YCoordinate; + + if (this.xVariation != 0) + { + x += (short)MathF.Round(fontMetrics.GetGDefVariationDelta(this.xVariation)); + } + + if (this.yVariation != 0) + { + y += (short)MathF.Round(fontMetrics.GetGDefVariationDelta(this.yVariation)); + } + + return new(x, y); + } + + private static uint ResolveVariationIndex(BigEndianBinaryReader reader, long anchorBase, ushort deviceOffset) + { + if (deviceOffset == 0) + { + return 0; + } + + long savedPosition = reader.BaseStream.Position; + reader.BaseStream.Position = anchorBase + deviceOffset; + + ushort first = reader.ReadUInt16(); + ushort second = reader.ReadUInt16(); + ushort format = reader.ReadUInt16(); + + reader.BaseStream.Position = savedPosition; + + if (format == VariationIndexFormat) + { + return ((uint)first << 16) | second; + } + + // TODO: Device table (per-ppem adjustments) — not yet implemented. + return 0; + } } internal sealed class EmptyAnchorTable : AnchorTable diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/Class1Record.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/Class1Record.cs index 27cbd260a..19cc5ee08 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/Class1Record.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/Class1Record.cs @@ -9,7 +9,7 @@ internal sealed class Class1Record public Class2Record[] Class2Records { get; } - public static Class1Record Load(BigEndianBinaryReader reader, int class2Count, ValueFormat valueFormat1, ValueFormat valueFormat2) + public static Class1Record Load(BigEndianBinaryReader reader, int class2Count, ValueFormat valueFormat1, ValueFormat valueFormat2, long parentBase = -1) { // +--------------+----------------------------+---------------------------------------------+ // | Type | Name | Description | @@ -20,7 +20,7 @@ public static Class1Record Load(BigEndianBinaryReader reader, int class2Count, V var class2Records = new Class2Record[class2Count]; for (int i = 0; i < class2Records.Length; i++) { - class2Records[i] = new Class2Record(reader, valueFormat1, valueFormat2); + class2Records[i] = new Class2Record(reader, valueFormat1, valueFormat2, parentBase); } return new Class1Record(class2Records); diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/Class2Record.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/Class2Record.cs index c1de2e011..e28c70a17 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/Class2Record.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/Class2Record.cs @@ -17,10 +17,11 @@ internal readonly struct Class2Record /// The big endian binary reader. /// The value format for value record 1. /// The value format for value record 2. - public Class2Record(BigEndianBinaryReader reader, ValueFormat valueFormat1, ValueFormat valueFormat2) + /// The absolute stream position of the parent table for resolving device offsets. + public Class2Record(BigEndianBinaryReader reader, ValueFormat valueFormat1, ValueFormat valueFormat2, long parentBase = -1) { - this.ValueRecord1 = new ValueRecord(reader, valueFormat1); - this.ValueRecord2 = new ValueRecord(reader, valueFormat2); + this.ValueRecord1 = new ValueRecord(reader, valueFormat1, parentBase); + this.ValueRecord2 = new ValueRecord(reader, valueFormat2, parentBase); } /// diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/LookupType1SubTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/LookupType1SubTable.cs index d9f1cf861..85dc4e932 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/LookupType1SubTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/LookupType1SubTable.cs @@ -56,7 +56,7 @@ public static LookupType1Format1SubTable Load(BigEndianBinaryReader reader, long // +-------------+----------------+-----------------------------------------------+ ushort coverageOffset = reader.ReadOffset16(); ValueFormat valueFormat = reader.ReadUInt16(); - ValueRecord valueRecord = new(reader, valueFormat); + ValueRecord valueRecord = new(reader, valueFormat, offset); CoverageTable coverageTable = CoverageTable.Load(reader, offset + coverageOffset); @@ -81,7 +81,7 @@ public override bool TryUpdatePosition( if (coverage > -1) { ValueRecord record = this.valueRecord; - AdvancedTypographicUtils.ApplyPosition(collection, index, record, feature); + AdvancedTypographicUtils.ApplyPosition(fontMetrics, collection, index, record, feature); return true; } @@ -126,7 +126,7 @@ public static LookupType1Format2SubTable Load(BigEndianBinaryReader reader, long ValueRecord[] valueRecords = new ValueRecord[valueCount]; for (int i = 0; i < valueCount; i++) { - valueRecords[i] = new ValueRecord(reader, valueFormat); + valueRecords[i] = new ValueRecord(reader, valueFormat, offset); } CoverageTable coverageTable = CoverageTable.Load(reader, offset + coverageOffset); @@ -152,7 +152,7 @@ public override bool TryUpdatePosition( if (coverage > -1) { ValueRecord record = this.valueRecords[coverage]; - AdvancedTypographicUtils.ApplyPosition(collection, index, record, feature); + AdvancedTypographicUtils.ApplyPosition(fontMetrics, collection, index, record, feature); return true; } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/LookupType2SubTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/LookupType2SubTable.cs index b69522ffb..5c56d21ae 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/LookupType2SubTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/LookupType2SubTable.cs @@ -77,7 +77,8 @@ public static LookupType2Format1SubTable Load(BigEndianBinaryReader reader, long for (int i = 0; i < pairSetCount; i++) { reader.Seek(offset + pairSetOffsets[i], SeekOrigin.Begin); - pairSets[i] = PairSetTable.Load(reader, offset + pairSetOffsets[i], valueFormat1, valueFormat2); + long pairSetBase = offset + pairSetOffsets[i]; + pairSets[i] = PairSetTable.Load(reader, pairSetBase, valueFormat1, valueFormat2); } CoverageTable coverageTable = CoverageTable.Load(reader, offset + coverageOffset); @@ -117,10 +118,10 @@ public override bool TryUpdatePosition( if (pairSet.TryGetPairValueRecord(glyphId2, out PairValueRecord pairValueRecord)) { ValueRecord record1 = pairValueRecord.ValueRecord1; - AdvancedTypographicUtils.ApplyPosition(collection, index, record1, feature); + AdvancedTypographicUtils.ApplyPosition(fontMetrics, collection, index, record1, feature); ValueRecord record2 = pairValueRecord.ValueRecord2; - AdvancedTypographicUtils.ApplyPosition(collection, index + 1, record2, feature); + AdvancedTypographicUtils.ApplyPosition(fontMetrics, collection, index + 1, record2, feature); return true; } @@ -151,7 +152,7 @@ public static PairSetTable Load(BigEndianBinaryReader reader, long offset, Value PairValueRecord[] pairValueRecords = new PairValueRecord[pairValueCount]; for (int i = 0; i < pairValueRecords.Length; i++) { - pairValueRecords[i] = new PairValueRecord(reader, valueFormat1, valueFormat2); + pairValueRecords[i] = new PairValueRecord(reader, valueFormat1, valueFormat2, offset); } return new PairSetTable(pairValueRecords); @@ -241,7 +242,7 @@ public static LookupType2Format2SubTable Load(BigEndianBinaryReader reader, long Class1Record[] class1Records = new Class1Record[class1Count]; for (int i = 0; i < class1Records.Length; i++) { - class1Records[i] = Class1Record.Load(reader, class2Count, valueFormat1, valueFormat2); + class1Records[i] = Class1Record.Load(reader, class2Count, valueFormat1, valueFormat2, offset); } CoverageTable coverageTable = CoverageTable.Load(reader, offset + coverageOffset); @@ -286,10 +287,10 @@ public override bool TryUpdatePosition( Class2Record class2Record = class1Record.Class2Records[classDef2]; ValueRecord record1 = class2Record.ValueRecord1; - AdvancedTypographicUtils.ApplyPosition(collection, index, record1, feature); + AdvancedTypographicUtils.ApplyPosition(fontMetrics, collection, index, record1, feature); ValueRecord record2 = class2Record.ValueRecord2; - AdvancedTypographicUtils.ApplyPosition(collection, index + 1, record2, feature); + AdvancedTypographicUtils.ApplyPosition(fontMetrics, collection, index + 1, record2, feature); return true; } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/PairValueRecord.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/PairValueRecord.cs index 42f8ff796..be2dba593 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/PairValueRecord.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/PairValueRecord.cs @@ -15,7 +15,8 @@ internal readonly struct PairValueRecord /// The big endian binary reader. /// The types of data in valueRecord1 — for the first glyph in the pair (may be zero). /// The types of data in valueRecord2 — for the first glyph in the pair (may be zero). - public PairValueRecord(BigEndianBinaryReader reader, ValueFormat valueFormat1, ValueFormat valueFormat2) + /// The absolute stream position of the parent table for resolving device offsets. + public PairValueRecord(BigEndianBinaryReader reader, ValueFormat valueFormat1, ValueFormat valueFormat2, long parentBase = -1) { // +--------------+------------------+--------------------------------------------------------------------------------------+ // | Type | Name | Description | @@ -27,8 +28,8 @@ public PairValueRecord(BigEndianBinaryReader reader, ValueFormat valueFormat1, V // | ValueRecord | valueRecord2 | Positioning data for the second glyph in the pair. | // +--------------+------------------+--------------------------------------------------------------------------------------+ this.SecondGlyph = reader.ReadUInt16(); - this.ValueRecord1 = new ValueRecord(reader, valueFormat1); - this.ValueRecord2 = new ValueRecord(reader, valueFormat2); + this.ValueRecord1 = new ValueRecord(reader, valueFormat1, parentBase); + this.ValueRecord2 = new ValueRecord(reader, valueFormat2, parentBase); } /// diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/ValueRecord.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/ValueRecord.cs index b9244a629..8d1821d5c 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/ValueRecord.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPos/ValueRecord.cs @@ -11,12 +11,34 @@ namespace SixLabors.Fonts.Tables.AdvancedTypographic.GPos; /// internal readonly struct ValueRecord { + /// + /// The deltaFormat value used by VariationIndex tables (as opposed to Device tables). + /// + private const ushort VariationIndexFormat = 0x8000; + /// /// Initializes a new instance of the struct. /// /// The big endian binary reader. /// Defines the types of data in the ValueRecord. public ValueRecord(BigEndianBinaryReader reader, ValueFormat valueFormat) + : this(reader, valueFormat, -1) + { + } + + /// + /// Initializes a new instance of the struct. + /// When is non-negative, device offsets are resolved to + /// VariationIndex (outerIndex, innerIndex) pairs for use with variable fonts. + /// + /// The big endian binary reader. + /// Defines the types of data in the ValueRecord. + /// + /// The absolute stream position of the immediate parent table (SinglePos subtable, + /// PairPosFormat2 subtable, or PairSet table). Device offsets are relative to this position. + /// Pass -1 to skip VariationIndex resolution. + /// + public ValueRecord(BigEndianBinaryReader reader, ValueFormat valueFormat, long parentBase) { // +----------+------------------+--------------------------------------------------------------------------------------+ // | Type | Name | Description | @@ -64,10 +86,22 @@ public ValueRecord(BigEndianBinaryReader reader, ValueFormat valueFormat) this.YPlacement = (valueFormat & ValueFormat.YPlacement) != 0 ? reader.ReadInt16() : (short)0; this.XAdvance = (valueFormat & ValueFormat.XAdvance) != 0 ? reader.ReadInt16() : (short)0; this.YAdvance = (valueFormat & ValueFormat.YAdvance) != 0 ? reader.ReadInt16() : (short)0; - this.XPlacementDeviceOffset = (valueFormat & ValueFormat.XPlacementDevice) != 0 ? reader.ReadInt16() : (short)0; - this.YPlacementDeviceOffset = (valueFormat & ValueFormat.YPlacementDevice) != 0 ? reader.ReadInt16() : (short)0; - this.XAdvanceDeviceOffset = (valueFormat & ValueFormat.XAdvanceDevice) != 0 ? reader.ReadInt16() : (short)0; - this.YAdvanceDeviceOffset = (valueFormat & ValueFormat.YAdvanceDevice) != 0 ? reader.ReadInt16() : (short)0; + + short xPlaDevOff = (valueFormat & ValueFormat.XPlacementDevice) != 0 ? reader.ReadInt16() : (short)0; + short yPlaDevOff = (valueFormat & ValueFormat.YPlacementDevice) != 0 ? reader.ReadInt16() : (short)0; + short xAdvDevOff = (valueFormat & ValueFormat.XAdvanceDevice) != 0 ? reader.ReadInt16() : (short)0; + short yAdvDevOff = (valueFormat & ValueFormat.YAdvanceDevice) != 0 ? reader.ReadInt16() : (short)0; + + // Resolve device offsets to VariationIndex tables when the parent base is known. + if (parentBase >= 0 && ((ushort)xPlaDevOff | (ushort)yPlaDevOff | (ushort)xAdvDevOff | (ushort)yAdvDevOff) != 0) + { + long savedPosition = reader.BaseStream.Position; + this.XPlacementVariation = ResolveVariationIndex(reader, parentBase, xPlaDevOff); + this.YPlacementVariation = ResolveVariationIndex(reader, parentBase, yPlaDevOff); + this.XAdvanceVariation = ResolveVariationIndex(reader, parentBase, xAdvDevOff); + this.YAdvanceVariation = ResolveVariationIndex(reader, parentBase, yAdvDevOff); + reader.BaseStream.Position = savedPosition; + } } public short XPlacement { get; } @@ -78,11 +112,66 @@ public ValueRecord(BigEndianBinaryReader reader, ValueFormat valueFormat) public short YAdvance { get; } - public short XPlacementDeviceOffset { get; } + /// + /// Gets the packed VariationIndex for horizontal placement: (outerIndex << 16) | innerIndex. + /// Zero means no variation data. + /// + public uint XPlacementVariation { get; } - public short YPlacementDeviceOffset { get; } + /// + /// Gets the packed VariationIndex for vertical placement: (outerIndex << 16) | innerIndex. + /// Zero means no variation data. + /// + public uint YPlacementVariation { get; } - public short XAdvanceDeviceOffset { get; } + /// + /// Gets the packed VariationIndex for horizontal advance: (outerIndex << 16) | innerIndex. + /// Zero means no variation data. + /// + public uint XAdvanceVariation { get; } + + /// + /// Gets the packed VariationIndex for vertical advance: (outerIndex << 16) | innerIndex. + /// Zero means no variation data. + /// + public uint YAdvanceVariation { get; } + + /// + /// Gets a value indicating whether this record has any variation data. + /// + public bool HasVariation + => (this.XPlacementVariation | this.YPlacementVariation | this.XAdvanceVariation | this.YAdvanceVariation) != 0; - public short YAdvanceDeviceOffset { get; } + /// + /// Reads a Device/VariationIndex table at the given offset and returns a packed VariationIndex + /// (outerIndex << 16 | innerIndex) if it is a VariationIndex table (deltaFormat == 0x8000), + /// or 0 if null, a Device table, or invalid. + /// + private static uint ResolveVariationIndex(BigEndianBinaryReader reader, long parentBase, short deviceOffset) + { + if (deviceOffset == 0) + { + return 0; + } + + // Device offsets are relative to the parent table base. + // Use absolute positioning to avoid BigEndianBinaryReader.Seek startOfStream rebasing. + reader.BaseStream.Position = parentBase + (ushort)deviceOffset; + + // VariationIndex table (reuses the Device table format): + // uint16 deltaSetOuterIndex + // uint16 deltaSetInnerIndex + // uint16 deltaFormat (0x8000 for VariationIndex, 1/2/3 for Device) + ushort first = reader.ReadUInt16(); + ushort second = reader.ReadUInt16(); + ushort format = reader.ReadUInt16(); + + if (format == VariationIndexFormat) + { + return ((uint)first << 16) | second; + } + + // TODO: Device table (per-ppem pixel adjustments for non-variable fonts) — not yet implemented. + return 0; + } } diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index 7bc6d0cc9..1f1db255b 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -476,6 +476,17 @@ internal float Delta(int outerIndex, int innerIndex) return this.ComputeDelta(this.itemStore, outerIndex, innerIndex); } + /// + /// Computes the delta adjustment for a specific item using an external ItemVariationStore. + /// Used for GDEF-based variation deltas in GPOS/GSUB device tables. + /// + /// The external ItemVariationStore (e.g. from GDEF). + /// The outer index. + /// The inner index. + /// The delta value. + internal float Delta(ItemVariationStore store, int outerIndex, int innerIndex) + => this.ComputeDelta(store, outerIndex, innerIndex); + /// /// Computes a delta from a given ItemVariationStore using cached blend vectors. /// Shared by HVAR, VVAR, MVAR, and CFF2 delta lookups. From 4e64db218768c75cb36f752e28556134a35582ec Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 12:47:27 +1000 Subject: [PATCH 48/56] Add FeatureVariations support and normalized coords --- src/SixLabors.Fonts/FileFontMetrics.cs | 4 + src/SixLabors.Fonts/FontMetrics.cs | 7 + src/SixLabors.Fonts/StreamFontMetrics.cs | 6 + .../FeatureVariationsTable.cs | 329 ++++++++++++++++++ .../Tables/AdvancedTypographic/GPosTable.cs | 50 ++- .../Tables/AdvancedTypographic/GSubTable.cs | 50 ++- .../Shapers/IndicShaper.cs | 8 +- .../Variations/GlyphVariationProcessor.cs | 6 + .../Variations/TupleVariation.cs | 6 +- 9 files changed, 443 insertions(+), 23 deletions(-) create mode 100644 src/SixLabors.Fonts/Tables/AdvancedTypographic/FeatureVariationsTable.cs diff --git a/src/SixLabors.Fonts/FileFontMetrics.cs b/src/SixLabors.Fonts/FileFontMetrics.cs index f035270d8..5963bdfa2 100644 --- a/src/SixLabors.Fonts/FileFontMetrics.cs +++ b/src/SixLabors.Fonts/FileFontMetrics.cs @@ -172,6 +172,10 @@ internal override void UpdatePositions(GlyphPositioningCollection collection) internal override float GetGDefVariationDelta(uint packedVariationIndex) => this.fontMetrics.Value.GetGDefVariationDelta(packedVariationIndex); + /// + internal override ReadOnlySpan GetNormalizedCoordinates() + => this.fontMetrics.Value.GetNormalizedCoordinates(); + /// /// Reads a from the specified stream. /// diff --git a/src/SixLabors.Fonts/FontMetrics.cs b/src/SixLabors.Fonts/FontMetrics.cs index c038459d0..85e897fe8 100644 --- a/src/SixLabors.Fonts/FontMetrics.cs +++ b/src/SixLabors.Fonts/FontMetrics.cs @@ -288,4 +288,11 @@ internal abstract GlyphMetrics GetGlyphMetrics( /// /// The delta value in design units, or 0 if no variation data is available. internal abstract float GetGDefVariationDelta(uint packedVariationIndex); + + /// + /// Gets the normalized variation coordinates for this font instance. + /// Returns an empty span for non-variable fonts or fonts at default coordinates. + /// + /// The normalized coordinates, or an empty span. + internal abstract ReadOnlySpan GetNormalizedCoordinates(); } diff --git a/src/SixLabors.Fonts/StreamFontMetrics.cs b/src/SixLabors.Fonts/StreamFontMetrics.cs index 2c8de7c2a..50d6d35cd 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.cs @@ -406,6 +406,12 @@ internal override float GetGDefVariationDelta(uint packedVariationIndex) return this.GlyphVariationProcessor.Delta(gdef.ItemVariationStore, outerIndex, innerIndex); } + /// + internal override ReadOnlySpan GetNormalizedCoordinates() + => this.GlyphVariationProcessor is not null + ? this.GlyphVariationProcessor.NormalizedCoordinates + : []; + /// /// Reads a from the specified stream. /// diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/FeatureVariationsTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/FeatureVariationsTable.cs new file mode 100644 index 000000000..fe87670dd --- /dev/null +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/FeatureVariationsTable.cs @@ -0,0 +1,329 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +namespace SixLabors.Fonts.Tables.AdvancedTypographic; + +/// +/// The FeatureVariations table is used in variable fonts to provide alternate sets of +/// feature table lookups for different regions of the variation space. +/// Shared by both GPOS and GSUB tables (version 1.1). +/// +/// +internal sealed class FeatureVariationsTable +{ + private FeatureVariationsTable(FeatureVariationRecord[] records) + => this.Records = records; + + public FeatureVariationRecord[] Records { get; } + + /// + /// Loads the FeatureVariations table. + /// + /// The big endian binary reader. + /// Absolute offset to the beginning of the FeatureVariations table. + /// The FeatureListTable, used to resolve feature tags for substitutions. + /// The FeatureVariationsTable, or null if the offset is 0. + public static FeatureVariationsTable? Load(BigEndianBinaryReader reader, long offset, FeatureListTable featureList) + { + if (offset == 0) + { + return null; + } + + // FeatureVariations table + // +----------+------------------------------------------------------+---------------------------------------------------------------+ + // | Type | Name | Description | + // +==========+======================================================+===============================================================+ + // | uint16 | majorVersion | Major version — set to 1 | + // +----------+------------------------------------------------------+---------------------------------------------------------------+ + // | uint16 | minorVersion | Minor version — set to 0 | + // +----------+------------------------------------------------------+---------------------------------------------------------------+ + // | uint32 | featureVariationRecordCount | Number of FeatureVariationRecords | + // +----------+------------------------------------------------------+---------------------------------------------------------------+ + // | FeatureVariationRecord | featureVariationRecords[count] | Array of FeatureVariationRecords | + // +----------+------------------------------------------------------+---------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + + ushort majorVersion = reader.ReadUInt16(); + ushort minorVersion = reader.ReadUInt16(); + uint recordCount = reader.ReadUInt32(); + + // Read all record offsets first, then load data to avoid excessive seeking. + int count = (int)recordCount; + using Buffer conditionSetOffsetsBuffer = new(count); + using Buffer substitutionOffsetsBuffer = new(count); + Span conditionSetOffsets = conditionSetOffsetsBuffer.GetSpan(); + Span substitutionOffsets = substitutionOffsetsBuffer.GetSpan(); + for (int i = 0; i < count; i++) + { + conditionSetOffsets[i] = reader.ReadOffset32(); + substitutionOffsets[i] = reader.ReadOffset32(); + } + + FeatureVariationRecord[] records = new FeatureVariationRecord[count]; + for (int i = 0; i < count; i++) + { + ConditionSetTable conditionSet = ConditionSetTable.Load(reader, offset + conditionSetOffsets[i]); + FeatureTableSubstitutionRecord[] substitutions = LoadFeatureTableSubstitution(reader, offset + substitutionOffsets[i], featureList); + records[i] = new FeatureVariationRecord(conditionSet, substitutions); + } + + return new FeatureVariationsTable(records); + } + + /// + /// Finds the first matching whose conditions are satisfied + /// by the given normalized coordinates, and returns its feature substitutions. + /// Returns null if no record matches or no variation coordinates are available. + /// + /// The normalized variation coordinates. + /// The matching substitution records, or null. + public FeatureTableSubstitutionRecord[]? FindMatchingSubstitutions(ReadOnlySpan normalizedCoords) + { + if (normalizedCoords.IsEmpty) + { + return null; + } + + for (int i = 0; i < this.Records.Length; i++) + { + if (this.Records[i].ConditionSet.Evaluate(normalizedCoords)) + { + return this.Records[i].Substitutions; + } + } + + return null; + } + + private static FeatureTableSubstitutionRecord[] LoadFeatureTableSubstitution( + BigEndianBinaryReader reader, + long offset, + FeatureListTable featureList) + { + // FeatureTableSubstitution table + // +----------+------------------------------------------------------+---------------------------------------------------------------+ + // | Type | Name | Description | + // +==========+======================================================+===============================================================+ + // | uint16 | majorVersion | Major version — set to 1 | + // +----------+------------------------------------------------------+---------------------------------------------------------------+ + // | uint16 | minorVersion | Minor version — set to 0 | + // +----------+------------------------------------------------------+---------------------------------------------------------------+ + // | uint16 | substitutionCount | Number of FeatureTableSubstitutionRecords | + // +----------+------------------------------------------------------+---------------------------------------------------------------+ + // | FeatureTableSubstitutionRecord | substitutions[count] | Array of records | + // +----------+------------------------------------------------------+---------------------------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + + ushort majorVersion = reader.ReadUInt16(); + ushort minorVersion = reader.ReadUInt16(); + ushort substitutionCount = reader.ReadUInt16(); + + // Read record headers (featureIndex + offset pairs). + using Buffer featureIndicesBuffer = new(substitutionCount); + using Buffer featureTableOffsetsBuffer = new(substitutionCount); + Span featureIndices = featureIndicesBuffer.GetSpan(); + Span featureTableOffsets = featureTableOffsetsBuffer.GetSpan(); + for (int i = 0; i < substitutionCount; i++) + { + featureIndices[i] = reader.ReadUInt16(); + featureTableOffsets[i] = reader.ReadOffset32(); + } + + // Load each alternate Feature table. + FeatureTableSubstitutionRecord[] records = new FeatureTableSubstitutionRecord[substitutionCount]; + for (int i = 0; i < substitutionCount; i++) + { + ushort featureIndex = featureIndices[i]; + + // Resolve the original feature tag from the FeatureList so the substitute + // carries the same tag. + Tag featureTag = featureIndex < featureList.FeatureTables.Length + ? featureList.FeatureTables[featureIndex].FeatureTag + : default; + + FeatureTable alternateFeatureTable = FeatureTable.Load(featureTag, reader, offset + featureTableOffsets[i]); + records[i] = new FeatureTableSubstitutionRecord(featureIndex, alternateFeatureTable); + } + + return records; + } +} + +/// +/// A set of conditions that must all be true for a FeatureVariationRecord to match. +/// +internal sealed class ConditionSetTable +{ + private ConditionSetTable(ConditionTable[] conditions) + => this.Conditions = conditions; + + public ConditionTable[] Conditions { get; } + + public static ConditionSetTable Load(BigEndianBinaryReader reader, long offset) + { + // ConditionSet table + // +----------+----------------------------+------------------------------------------+ + // | Type | Name | Description | + // +==========+============================+==========================================+ + // | uint16 | conditionCount | Number of conditions | + // +----------+----------------------------+------------------------------------------+ + // | Offset32 | conditionOffsets[count] | Offsets to Condition tables, from | + // | | | beginning of ConditionSet table | + // +----------+----------------------------+------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + + ushort conditionCount = reader.ReadUInt16(); + using Buffer conditionOffsetsBuffer = new(conditionCount); + Span conditionOffsets = conditionOffsetsBuffer.GetSpan(); + for (int i = 0; i < conditionCount; i++) + { + conditionOffsets[i] = reader.ReadOffset32(); + } + + ConditionTable[] conditions = new ConditionTable[conditionCount]; + for (int i = 0; i < conditionCount; i++) + { + conditions[i] = ConditionTable.Load(reader, offset + conditionOffsets[i]); + } + + return new ConditionSetTable(conditions); + } + + /// + /// Evaluates whether all conditions in this set are satisfied by the given normalized coordinates. + /// + /// The normalized variation coordinates. + /// True if all conditions match. + public bool Evaluate(ReadOnlySpan normalizedCoords) + { + for (int i = 0; i < this.Conditions.Length; i++) + { + if (!this.Conditions[i].Evaluate(normalizedCoords)) + { + return false; + } + } + + return true; + } +} + +#pragma warning disable SA1201 // Elements should appear in the correct order + +/// +/// A single record in the FeatureVariations table, pairing a condition set with +/// a set of feature table substitutions. +/// +internal readonly struct FeatureVariationRecord +{ + public FeatureVariationRecord(ConditionSetTable conditionSet, FeatureTableSubstitutionRecord[] substitutions) + { + this.ConditionSet = conditionSet; + this.Substitutions = substitutions; + } + + public ConditionSetTable ConditionSet { get; } + + public FeatureTableSubstitutionRecord[] Substitutions { get; } +} + +/// +/// A substitution record that maps a feature index to an alternate Feature table. +/// +internal readonly struct FeatureTableSubstitutionRecord +{ + public FeatureTableSubstitutionRecord(ushort featureIndex, FeatureTable alternateFeatureTable) + { + this.FeatureIndex = featureIndex; + this.AlternateFeatureTable = alternateFeatureTable; + } + + /// + /// Gets the index into the FeatureList of the feature being substituted. + /// + public ushort FeatureIndex { get; } + + /// + /// Gets the alternate Feature table to use in place of the original. + /// + public FeatureTable AlternateFeatureTable { get; } +} + +/// +/// A condition that checks whether a normalized coordinate for a specific axis +/// falls within a given range. +/// +internal readonly struct ConditionTable +{ + public ConditionTable(ushort axisIndex, float filterRangeMinValue, float filterRangeMaxValue) + { + this.AxisIndex = axisIndex; + this.FilterRangeMinValue = filterRangeMinValue; + this.FilterRangeMaxValue = filterRangeMaxValue; + } + + /// + /// Gets the index of the variation axis (into fvar axes array). + /// + public ushort AxisIndex { get; } + + /// + /// Gets the minimum normalized coordinate value for the condition to be true. + /// + public float FilterRangeMinValue { get; } + + /// + /// Gets the maximum normalized coordinate value for the condition to be true. + /// + public float FilterRangeMaxValue { get; } + + public static ConditionTable Load(BigEndianBinaryReader reader, long offset) + { + // Condition table, Format 1 (ConditionAxisRange) + // +----------+----------------------------+------------------------------------------+ + // | Type | Name | Description | + // +==========+============================+==========================================+ + // | uint16 | format | Format = 1 | + // +----------+----------------------------+------------------------------------------+ + // | uint16 | axisIndex | Index of variation axis | + // +----------+----------------------------+------------------------------------------+ + // | F2DOT14 | filterRangeMinValue | Minimum normalized coordinate value | + // +----------+----------------------------+------------------------------------------+ + // | F2DOT14 | filterRangeMaxValue | Maximum normalized coordinate value | + // +----------+----------------------------+------------------------------------------+ + reader.Seek(offset, SeekOrigin.Begin); + + ushort format = reader.ReadUInt16(); + + // Only Format 1 is defined. + if (format != 1) + { + return default; + } + + ushort axisIndex = reader.ReadUInt16(); + float filterRangeMinValue = reader.ReadF2Dot14(); + float filterRangeMaxValue = reader.ReadF2Dot14(); + + return new ConditionTable(axisIndex, filterRangeMinValue, filterRangeMaxValue); + } + + /// + /// Evaluates whether the given normalized coordinates satisfy this condition. + /// + /// The normalized variation coordinates. + /// True if the coordinate for this axis is within the filter range. + public bool Evaluate(ReadOnlySpan normalizedCoords) + { + if (this.AxisIndex >= normalizedCoords.Length) + { + return false; + } + + float coord = normalizedCoords[this.AxisIndex]; + return coord >= this.FilterRangeMinValue && coord <= this.FilterRangeMaxValue; + } +} + +#pragma warning restore SA1201 diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPosTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPosTable.cs index fe147ec7c..852add068 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPosTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GPosTable.cs @@ -21,11 +21,12 @@ internal class GPosTable : Table internal const string TableName = "GPOS"; - public GPosTable(ScriptList? scriptList, FeatureListTable featureList, LookupListTable lookupList) + public GPosTable(ScriptList? scriptList, FeatureListTable featureList, LookupListTable lookupList, FeatureVariationsTable? featureVariations = null) { this.ScriptList = scriptList; this.FeatureList = featureList; this.LookupList = lookupList; + this.FeatureVariations = featureVariations; } public ScriptList? ScriptList { get; } @@ -34,6 +35,8 @@ public GPosTable(ScriptList? scriptList, FeatureListTable featureList, LookupLis public LookupListTable LookupList { get; } + public FeatureVariationsTable? FeatureVariations { get; } + public static GPosTable? Load(FontReader fontReader) { if (!fontReader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) @@ -95,8 +98,11 @@ internal static GPosTable Load(BigEndianBinaryReader reader) LookupListTable lookupList = LookupListTable.Load(reader, lookupListOffset); - // TODO: Feature Variations. - return new GPosTable(scriptList, featureList, lookupList); + FeatureVariationsTable? featureVariations = featureVariationsOffset != 0 + ? FeatureVariationsTable.Load(reader, featureVariationsOffset, featureList) + : null; + + return new GPosTable(scriptList, featureList, lookupList, featureVariations); } public bool TryUpdatePositions(FontMetrics fontMetrics, GlyphPositioningCollection collection, out bool kerned) @@ -171,7 +177,7 @@ current is not ScriptClass.Common and not ScriptClass.Unknown and not ScriptClas stage.PreProcessFeature(collection, index, count); Tag featureTag = stage.FeatureTag; - if (this.TryGetFeatureLookups(in featureTag, current, out List<(Tag Feature, ushort Index, LookupTable LookupTable)>? lookups)) + if (this.TryGetFeatureLookups(fontMetrics, in featureTag, current, out List<(Tag Feature, ushort Index, LookupTable LookupTable)>? lookups)) { // Apply features in order. foreach ((Tag Feature, ushort Index, LookupTable LookupTable) featureLookup in lookups) @@ -226,6 +232,7 @@ current is not ScriptClass.Common and not ScriptClass.Unknown and not ScriptClas } private bool TryGetFeatureLookups( + FontMetrics fontMetrics, in Tag stageFeature, ScriptClass script, [NotNullWhen(true)] out List<(Tag Feature, ushort Index, LookupTable LookupTable)>? value) @@ -236,6 +243,10 @@ private bool TryGetFeatureLookups( return false; } + // Resolve feature substitutions from FeatureVariations (variable fonts). + FeatureTableSubstitutionRecord[]? substitutions = this.FeatureVariations + ?.FindMatchingSubstitutions(fontMetrics.GetNormalizedCoordinates()); + ScriptListTable scriptListTable = this.ScriptList.Default(); Tag[] tags = UnicodeScriptTagMap.Instance[script]; for (int i = 0; i < tags.Length; i++) @@ -250,11 +261,11 @@ private bool TryGetFeatureLookups( LangSysTable? defaultLangSysTable = scriptListTable.DefaultLangSysTable; if (defaultLangSysTable != null) { - value = this.GetFeatureLookups(stageFeature, defaultLangSysTable); + value = this.GetFeatureLookups(stageFeature, substitutions, defaultLangSysTable); return value.Count > 0; } - value = this.GetFeatureLookups(stageFeature, scriptListTable.LangSysTables); + value = this.GetFeatureLookups(stageFeature, substitutions, scriptListTable.LangSysTables); return value.Count > 0; } @@ -277,7 +288,10 @@ private Tag GetUnicodeScriptTag(ScriptClass script) return default; } - private List<(Tag Feature, ushort Index, LookupTable LookupTable)> GetFeatureLookups(in Tag stageFeature, params LangSysTable[] langSysTables) + private List<(Tag Feature, ushort Index, LookupTable LookupTable)> GetFeatureLookups( + in Tag stageFeature, + FeatureTableSubstitutionRecord[]? substitutions, + params LangSysTable[] langSysTables) { List<(Tag Feature, ushort Index, LookupTable LookupTable)> lookups = []; for (int i = 0; i < langSysTables.Length; i++) @@ -285,7 +299,8 @@ private Tag GetUnicodeScriptTag(ScriptClass script) ushort[] featureIndices = langSysTables[i].FeatureIndices; for (int j = 0; j < featureIndices.Length; j++) { - FeatureTable featureTable = this.FeatureList.FeatureTables[featureIndices[j]]; + ushort featureIndex = featureIndices[j]; + FeatureTable featureTable = ResolveFeatureTable(this.FeatureList, featureIndex, substitutions); Tag feature = featureTable.FeatureTag; if (stageFeature != feature) @@ -307,6 +322,25 @@ private Tag GetUnicodeScriptTag(ScriptClass script) return lookups; } + private static FeatureTable ResolveFeatureTable( + FeatureListTable featureList, + ushort featureIndex, + FeatureTableSubstitutionRecord[]? substitutions) + { + if (substitutions is not null) + { + for (int i = 0; i < substitutions.Length; i++) + { + if (substitutions[i].FeatureIndex == featureIndex) + { + return substitutions[i].AlternateFeatureTable; + } + } + } + + return featureList.FeatureTables[featureIndex]; + } + private ScriptClass GetScriptClass(ScriptClass current) { if (current is ScriptClass.Common or ScriptClass.Unknown or ScriptClass.Inherited) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GSubTable.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GSubTable.cs index 11181e4a8..695962066 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/GSubTable.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/GSubTable.cs @@ -17,11 +17,12 @@ internal class GSubTable : Table { internal const string TableName = "GSUB"; - public GSubTable(ScriptList? scriptList, FeatureListTable featureList, LookupListTable lookupList) + public GSubTable(ScriptList? scriptList, FeatureListTable featureList, LookupListTable lookupList, FeatureVariationsTable? featureVariations = null) { this.ScriptList = scriptList; this.FeatureList = featureList; this.LookupList = lookupList; + this.FeatureVariations = featureVariations; } public ScriptList? ScriptList { get; } @@ -30,6 +31,8 @@ public GSubTable(ScriptList? scriptList, FeatureListTable featureList, LookupLis public LookupListTable LookupList { get; } + public FeatureVariationsTable? FeatureVariations { get; } + public static GSubTable? Load(FontReader fontReader) { if (!fontReader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) @@ -91,8 +94,11 @@ internal static GSubTable Load(BigEndianBinaryReader reader) LookupListTable lookupList = LookupListTable.Load(reader, lookupListOffset); - // TODO: Feature Variations. - return new GSubTable(scriptList, featureList, lookupList); + FeatureVariationsTable? featureVariations = featureVariationsOffset != 0 + ? FeatureVariationsTable.Load(reader, featureVariationsOffset, featureList) + : null; + + return new GSubTable(scriptList, featureList, lookupList, featureVariations); } public void ApplySubstitution(FontMetrics fontMetrics, GlyphSubstitutionCollection collection) @@ -202,7 +208,7 @@ internal void ApplyFeature( int maxOperationsCount, ref int currentOperations) { - if (this.TryGetFeatureLookups(in featureTag, current, out List<(Tag Feature, ushort Index, LookupTable LookupTable)>? lookups)) + if (this.TryGetFeatureLookups(fontMetrics, in featureTag, current, out List<(Tag Feature, ushort Index, LookupTable LookupTable)>? lookups)) { // Apply features in order. foreach ((Tag Feature, ushort Index, LookupTable LookupTable) featureLookup in lookups) @@ -239,6 +245,7 @@ internal void ApplyFeature( } internal bool TryGetFeatureLookups( + FontMetrics fontMetrics, in Tag stageFeature, ScriptClass script, [NotNullWhen(true)] out List<(Tag Feature, ushort Index, LookupTable LookupTable)>? value) @@ -249,6 +256,10 @@ internal bool TryGetFeatureLookups( return false; } + // Resolve feature substitutions from FeatureVariations (variable fonts). + FeatureTableSubstitutionRecord[]? substitutions = this.FeatureVariations + ?.FindMatchingSubstitutions(fontMetrics.GetNormalizedCoordinates()); + ScriptListTable scriptListTable = this.ScriptList.Default(); Tag[] tags = UnicodeScriptTagMap.Instance[script]; for (int i = 0; i < tags.Length; i++) @@ -263,11 +274,11 @@ internal bool TryGetFeatureLookups( LangSysTable? defaultLangSysTable = scriptListTable.DefaultLangSysTable; if (defaultLangSysTable != null) { - value = this.GetFeatureLookups(stageFeature, defaultLangSysTable); + value = this.GetFeatureLookups(stageFeature, substitutions, defaultLangSysTable); return value.Count > 0; } - value = this.GetFeatureLookups(stageFeature, scriptListTable.LangSysTables); + value = this.GetFeatureLookups(stageFeature, substitutions, scriptListTable.LangSysTables); return value.Count > 0; } @@ -290,7 +301,10 @@ private Tag GetUnicodeScriptTag(ScriptClass script) return default; } - private List<(Tag Feature, ushort Index, LookupTable LookupTable)> GetFeatureLookups(in Tag stageFeature, params LangSysTable[] langSysTables) + private List<(Tag Feature, ushort Index, LookupTable LookupTable)> GetFeatureLookups( + in Tag stageFeature, + FeatureTableSubstitutionRecord[]? substitutions, + params LangSysTable[] langSysTables) { List<(Tag Feature, ushort Index, LookupTable LookupTable)> lookups = []; for (int i = 0; i < langSysTables.Length; i++) @@ -298,7 +312,8 @@ private Tag GetUnicodeScriptTag(ScriptClass script) ushort[] featureIndices = langSysTables[i].FeatureIndices; for (int j = 0; j < featureIndices.Length; j++) { - FeatureTable featureTable = this.FeatureList.FeatureTables[featureIndices[j]]; + ushort featureIndex = featureIndices[j]; + FeatureTable featureTable = ResolveFeatureTable(this.FeatureList, featureIndex, substitutions); Tag feature = featureTable.FeatureTag; if (stageFeature != feature) @@ -320,6 +335,25 @@ private Tag GetUnicodeScriptTag(ScriptClass script) return lookups; } + private static FeatureTable ResolveFeatureTable( + FeatureListTable featureList, + ushort featureIndex, + FeatureTableSubstitutionRecord[]? substitutions) + { + if (substitutions is not null) + { + for (int i = 0; i < substitutions.Length; i++) + { + if (substitutions[i].FeatureIndex == featureIndex) + { + return substitutions[i].AlternateFeatureTable; + } + } + } + + return featureList.FeatureTables[featureIndex]; + } + private ScriptClass GetScriptClass(ScriptClass current) { if (current is ScriptClass.Common or ScriptClass.Unknown or ScriptClass.Inherited) diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Shapers/IndicShaper.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Shapers/IndicShaper.cs index 59e839f74..5a56d3c02 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Shapers/IndicShaper.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Shapers/IndicShaper.cs @@ -351,7 +351,7 @@ private void InitialReorder(IGlyphShapingCollection collection, int index, int c // base consonants. if (start + 3 <= end && indicConfiguration.RephPosition != Positions.Ra_To_Become_Reph && - gSubTable?.TryGetFeatureLookups(in RphfTag, this.ScriptClass, out _) == true && + gSubTable?.TryGetFeatureLookups(fontMetrics, in RphfTag, this.ScriptClass, out _) == true && ((indicConfiguration.RephMode == RephMode.Implicit && !IsJoiner(substitutionCollection[start + 2])) || (indicConfiguration.RephMode == RephMode.Explicit && substitutionCollection[start + 2].IndicShapingEngineInfo?.Category == Categories.ZWJ))) { @@ -740,7 +740,7 @@ private void InitialReorder(IGlyphShapingCollection collection, int index, int c const int prefLen = 2; if (basePosition + prefLen < end && - gSubTable?.TryGetFeatureLookups(in PrefTag, this.ScriptClass, out _) == true) + gSubTable?.TryGetFeatureLookups(fontMetrics, in PrefTag, this.ScriptClass, out _) == true) { // Find a Halant,Ra sequence and mark it for pre-base reordering processing. for (int i = basePosition + 1; i + prefLen - 1 < end; i++) @@ -759,7 +759,7 @@ private void InitialReorder(IGlyphShapingCollection collection, int index, int c // This allows distinguishing the following cases with MS Khmer fonts: // U+1784,U+17D2,U+179A,U+17D2,U+1782 // U+1784,U+17D2,U+1782,U+17D2,U+179A - if (gSubTable.TryGetFeatureLookups(in CfarTag, this.ScriptClass, out _)) + if (gSubTable.TryGetFeatureLookups(fontMetrics, in CfarTag, this.ScriptClass, out _)) { while (i < end) { @@ -921,7 +921,7 @@ private void FinalReorder(IGlyphShapingCollection collection, int index, int cou // applied (see below), the shaping engine performs some final glyph // reordering before applying all the remaining font features to the entire // cluster. - bool tryPref = gSubTable?.TryGetFeatureLookups(in PrefTag, this.ScriptClass, out _) == true; + bool tryPref = gSubTable?.TryGetFeatureLookups(fontMetrics, in PrefTag, this.ScriptClass, out _) == true; // Find base consonant again. int basePosition = start; diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index 1f1db255b..e915d63b8 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -71,6 +71,12 @@ public GlyphVariationProcessor( this.blendVectors = new(); } + /// + /// Gets the normalized variation coordinates for this processor instance. + /// Used by FeatureVariations condition evaluation. + /// + internal ReadOnlySpan NormalizedCoordinates => this.normalizedCoords; + /// /// Transforms glyph outline points by applying gvar variation deltas. /// diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs index 58e9c9f8a..2abf540ee 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/TupleVariation.cs @@ -19,7 +19,7 @@ internal class TupleVariation internal const int IntermediateRegionMask = 0x4000; /// - /// Flag indicating that the serialized data for this tuple variation table includes packed “point” number data. + /// Flag indicating that the serialized data for this tuple variation table includes packed "point" number data. /// If set, this tuple variation table uses that number data; if clear, this tuple variation table uses shared number /// data found at the start of the serialized data for this glyph variation data or 'cvar' table. /// @@ -59,8 +59,8 @@ public TupleVariation( public ushort TupleIndex { get; } /// - /// Gets the shared tuple records index (low 12 bits of ). - /// Used to look up peak coordinates from when no embedded peak is present. + /// Gets the shared tuple records index (low 12 bits of ). + /// Used to look up peak coordinates from when no embedded peak is present. /// public int SharedTupleIndex => this.TupleIndex & TupleIndexMask; From abf1e668264be41416f8d12ba119537185cf43c3 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 13:28:39 +1000 Subject: [PATCH 49/56] Add COLR variation delta resolution --- .../StreamFontMetrics.TrueType.cs | 2 +- .../Tables/General/Colr/ClipBox.cs | 4 +- .../Tables/General/Colr/ClipBoxFormat1.cs | 4 +- .../Tables/General/Colr/ClipBoxFormat2.cs | 12 +- .../Tables/General/Colr/ClipList.cs | 9 +- .../General/Colr/ColrGlyphSourceBase.cs | 84 ++++++-- .../Tables/General/Colr/ColrTable.cs | 179 +++++++++++------- .../Tables/General/Colr/ColrV0GlyphSource.cs | 2 +- .../Tables/General/Colr/ColrV1GlyphSource.cs | 13 +- .../Tables/General/Colr/IVariationResolver.cs | 18 -- 10 files changed, 204 insertions(+), 123 deletions(-) delete mode 100644 src/SixLabors.Fonts/Tables/General/Colr/IVariationResolver.cs diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index a864a47b9..18d7d8590 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -233,7 +233,7 @@ private GlyphMetrics CreateTrueTypeGlyphMetrics( if ((colorSupport & ColorFontSupport.ColrV1) == ColorFontSupport.ColrV1 && colr?.ContainsColorV1Glyph(glyphId) == true) { CpalTable? cpal = tables.Cpal; - ColrV1GlyphSource glyphSource = new(colr, cpal, i => glyf.GetGlyph(i)); + ColrV1GlyphSource glyphSource = new(colr, cpal, i => glyf.GetGlyph(i), this.GlyphVariationProcessor); return new PaintedGlyphMetrics( this, diff --git a/src/SixLabors.Fonts/Tables/General/Colr/ClipBox.cs b/src/SixLabors.Fonts/Tables/General/Colr/ClipBox.cs index 9cb0b60a1..df87bea11 100644 --- a/src/SixLabors.Fonts/Tables/General/Colr/ClipBox.cs +++ b/src/SixLabors.Fonts/Tables/General/Colr/ClipBox.cs @@ -1,10 +1,12 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + namespace SixLabors.Fonts.Tables.General.Colr; // Abstract ClipBox subtable (format-dispatched). internal abstract class ClipBox { - public abstract Bounds GetBounds(IVariationResolver? varResolver); + public abstract Bounds GetBounds(ColrTable colr, GlyphVariationProcessor? processor); } diff --git a/src/SixLabors.Fonts/Tables/General/Colr/ClipBoxFormat1.cs b/src/SixLabors.Fonts/Tables/General/Colr/ClipBoxFormat1.cs index 136c58ee5..6c61a765e 100644 --- a/src/SixLabors.Fonts/Tables/General/Colr/ClipBoxFormat1.cs +++ b/src/SixLabors.Fonts/Tables/General/Colr/ClipBoxFormat1.cs @@ -1,6 +1,8 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + namespace SixLabors.Fonts.Tables.General.Colr; // Format 1: int16 edges. @@ -19,6 +21,6 @@ public ClipBoxFormat1(short xMin, short yMin, short xMax, short yMax) this.yMax = yMax; } - public override Bounds GetBounds(IVariationResolver? varResolver) + public override Bounds GetBounds(ColrTable colr, GlyphVariationProcessor? processor) => new(this.xMin, this.yMin, this.xMax, this.yMax); } diff --git a/src/SixLabors.Fonts/Tables/General/Colr/ClipBoxFormat2.cs b/src/SixLabors.Fonts/Tables/General/Colr/ClipBoxFormat2.cs index 6e341819a..86a7bebac 100644 --- a/src/SixLabors.Fonts/Tables/General/Colr/ClipBoxFormat2.cs +++ b/src/SixLabors.Fonts/Tables/General/Colr/ClipBoxFormat2.cs @@ -1,6 +1,8 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; + namespace SixLabors.Fonts.Tables.General.Colr; // Format 2: int16 edges + varIndex per edge. @@ -21,12 +23,12 @@ public ClipBoxFormat2(short xMin, short yMin, short xMax, short yMax, uint varIn this.varIndexBase = varIndexBase; } - public override Bounds GetBounds(IVariationResolver? varResolver) + public override Bounds GetBounds(ColrTable colr, GlyphVariationProcessor? processor) { - float dx0 = varResolver?.ResolveDelta(this.varIndexBase + 0u) ?? 0f; - float dy0 = varResolver?.ResolveDelta(this.varIndexBase + 1u) ?? 0f; - float dx1 = varResolver?.ResolveDelta(this.varIndexBase + 2u) ?? 0f; - float dy1 = varResolver?.ResolveDelta(this.varIndexBase + 3u) ?? 0f; + float dx0 = colr.ResolveDelta(processor, this.varIndexBase + 0u); + float dy0 = colr.ResolveDelta(processor, this.varIndexBase + 1u); + float dx1 = colr.ResolveDelta(processor, this.varIndexBase + 2u); + float dy1 = colr.ResolveDelta(processor, this.varIndexBase + 3u); float xMin = this.xMin + dx0; float yMin = this.yMin + dy0; diff --git a/src/SixLabors.Fonts/Tables/General/Colr/ClipList.cs b/src/SixLabors.Fonts/Tables/General/Colr/ClipList.cs index 019444590..0bc71dbc8 100644 --- a/src/SixLabors.Fonts/Tables/General/Colr/ClipList.cs +++ b/src/SixLabors.Fonts/Tables/General/Colr/ClipList.cs @@ -2,6 +2,7 @@ // Licensed under the Six Labors Split License. using System.Diagnostics.CodeAnalysis; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; namespace SixLabors.Fonts.Tables.General.Colr; @@ -74,7 +75,11 @@ public ClipList(ClipRecord[] records, ClipBox?[] boxes) return new ClipList(records, boxes); } - public bool TryGetClipBox(ushort glyphId, IVariationResolver? varResolver, [NotNullWhen(true)] out Bounds? bounds) + public bool TryGetClipBox( + ushort glyphId, + ColrTable colr, + GlyphVariationProcessor? processor, + [NotNullWhen(true)] out Bounds? bounds) { int lo = 0; int hi = this.Records.Length - 1; @@ -103,7 +108,7 @@ public bool TryGetClipBox(ushort glyphId, IVariationResolver? varResolver, [NotN return false; } - bounds = box.GetBounds(varResolver); + bounds = box.GetBounds(colr, processor); return true; } diff --git a/src/SixLabors.Fonts/Tables/General/Colr/ColrGlyphSourceBase.cs b/src/SixLabors.Fonts/Tables/General/Colr/ColrGlyphSourceBase.cs index 299bc6748..db4794e61 100644 --- a/src/SixLabors.Fonts/Tables/General/Colr/ColrGlyphSourceBase.cs +++ b/src/SixLabors.Fonts/Tables/General/Colr/ColrGlyphSourceBase.cs @@ -4,6 +4,7 @@ using System.Numerics; using System.Runtime.CompilerServices; using SixLabors.Fonts.Rendering; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Tables.TrueType.Glyphs; namespace SixLabors.Fonts.Tables.General.Colr; @@ -56,15 +57,19 @@ public ColrGlyphSourceBase(ColrTable colr, CpalTable? cpal, FuncThe affine matrix in document space. /// The active composite mode to apply to leaf paints, or null for default. /// Optional CPAL palette for color resolution. + /// The COLR table for variation delta resolution. + /// The glyph variation processor, or null for non-variable fonts. /// Collector for emitted leaf paints. protected static void FlattenPaint( Paint node, Matrix3x2 transform, CompositeMode mode, CpalTable? cpal, + ColrTable colr, + GlyphVariationProcessor? processor, List outLeaves) { - // The input not will only be a paintable leaf here, as upstream resolution + // The input node will only be a paintable leaf here, as upstream resolution // should have eliminated glyph/colr-glyph nodes and flattened composites. switch (node) { @@ -95,6 +100,33 @@ protected static void FlattenPaint( return; } + case PaintVarSolid pvs: + { + float alpha = pvs.Alpha + colr.ResolveDelta(processor, pvs.VarIndexBase + 0u); + + if (pvs.PaletteIndex == 0xFFFF) + { + outLeaves.Add(new SolidPaint + { + Color = new GlyphColor(0, 0, 0, 0), + Opacity = 1F, + Transform = transform, + CompositeMode = mode + }); + return; + } + + GlyphColor color = ResolveColor(cpal, pvs.PaletteIndex, alpha); + outLeaves.Add(new SolidPaint + { + Color = color, + Opacity = 1F, + Transform = transform, + CompositeMode = mode + }); + return; + } + case PaintLinearGradient pl: { GradientStop[] stops = ResolveStops(pl.ColorLine, cpal); @@ -115,13 +147,14 @@ protected static void FlattenPaint( case PaintVarLinearGradient vpl: { - GradientStop[] stops = ResolveStops(vpl.ColorLine, cpal); + uint vib = vpl.VarIndexBase; + GradientStop[] stops = ResolveStops(vpl.ColorLine, cpal, colr, processor); outLeaves.Add(new LinearGradientPaint { Units = GradientUnits.UserSpaceOnUse, - P0 = new Vector2(vpl.X0, vpl.Y0), - P1 = new Vector2(vpl.X1, vpl.Y1), - P2 = new Vector2(vpl.X2, vpl.Y2), + P0 = new Vector2(vpl.X0 + colr.ResolveDelta(processor, vib + 0u), vpl.Y0 + colr.ResolveDelta(processor, vib + 1u)), + P1 = new Vector2(vpl.X1 + colr.ResolveDelta(processor, vib + 2u), vpl.Y1 + colr.ResolveDelta(processor, vib + 3u)), + P2 = new Vector2(vpl.X2 + colr.ResolveDelta(processor, vib + 4u), vpl.Y2 + colr.ResolveDelta(processor, vib + 5u)), Spread = MapSpread(vpl.ColorLine.Extend), Stops = stops, Opacity = 1F, @@ -152,14 +185,15 @@ protected static void FlattenPaint( case PaintVarRadialGradient vpr: { - GradientStop[] stops = ResolveStops(vpr.ColorLine, cpal); + uint vib = vpr.VarIndexBase; + GradientStop[] stops = ResolveStops(vpr.ColorLine, cpal, colr, processor); outLeaves.Add(new RadialGradientPaint { Units = GradientUnits.UserSpaceOnUse, - Center0 = new Vector2(vpr.X0, vpr.Y0), - Radius0 = vpr.Radius0, - Center1 = new Vector2(vpr.X1, vpr.Y1), - Radius1 = vpr.Radius1, + Center0 = new Vector2(vpr.X0 + colr.ResolveDelta(processor, vib + 0u), vpr.Y0 + colr.ResolveDelta(processor, vib + 1u)), + Radius0 = (ushort)(vpr.Radius0 + colr.ResolveDelta(processor, vib + 2u)), + Center1 = new Vector2(vpr.X1 + colr.ResolveDelta(processor, vib + 3u), vpr.Y1 + colr.ResolveDelta(processor, vib + 4u)), + Radius1 = (ushort)(vpr.Radius1 + colr.ResolveDelta(processor, vib + 5u)), Spread = MapSpread(vpr.ColorLine.Extend), Stops = stops, Opacity = 1F, @@ -177,7 +211,7 @@ protected static void FlattenPaint( Units = GradientUnits.UserSpaceOnUse, Center = new Vector2(sw.CenterX, sw.CenterY), - // Spec says: add 1.0 and multiply by 180° to retrieve counter-clockwise degrees. + // Spec says: add 1.0 and multiply by 180 to retrieve counter-clockwise degrees. StartAngle = (sw.StartAngle + 1F) * 180F, EndAngle = (sw.EndAngle + 1F) * 180F, Spread = MapSpread(sw.ColorLine.Extend), @@ -191,13 +225,16 @@ protected static void FlattenPaint( case PaintVarSweepGradient vsw: { - GradientStop[] stops = ResolveStops(vsw.ColorLine, cpal); + uint vib = vsw.VarIndexBase; + GradientStop[] stops = ResolveStops(vsw.ColorLine, cpal, colr, processor); + float startAngle = vsw.StartAngle + colr.ResolveDelta(processor, vib + 2u); + float endAngle = vsw.EndAngle + colr.ResolveDelta(processor, vib + 3u); outLeaves.Add(new SweepGradientPaint { Units = GradientUnits.UserSpaceOnUse, - Center = new Vector2(vsw.CenterX, vsw.CenterY), - StartAngle = (vsw.StartAngle + 1F) * 180F, - EndAngle = (vsw.EndAngle + 1F) * 180F, + Center = new Vector2(vsw.CenterX + colr.ResolveDelta(processor, vib + 0u), vsw.CenterY + colr.ResolveDelta(processor, vib + 1u)), + StartAngle = (startAngle + 1F) * 180F, + EndAngle = (endAngle + 1F) * 180F, Spread = MapSpread(vsw.ColorLine.Extend), Stops = stops, Opacity = 1F, @@ -344,14 +381,17 @@ private static GradientStop[] ResolveStops(ColorLine line, CpalTable? cpal) } /// - /// Resolves a color line into concrete gradient stops. Offsets are clamped to [0,1]. + /// Resolves a variable color line into concrete gradient stops with variation deltas applied. + /// Offsets are clamped to [0,1]. /// 0xFFFF palette indices are treated as transparent here (foreground color handled by text color elsewhere). /// - /// The color line. + /// The variable color line. /// The CPAL table, or null if not present. + /// The COLR table for delta resolution. + /// The glyph variation processor, or null. /// The resolved gradient stops. [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static GradientStop[] ResolveStops(VarColorLine line, CpalTable? cpal) + private static GradientStop[] ResolveStops(VarColorLine line, CpalTable? cpal, ColrTable colr, GlyphVariationProcessor? processor) { VarColorStop[] src = line.Stops; GradientStop[] stops = new GradientStop[src.Length]; @@ -360,11 +400,15 @@ private static GradientStop[] ResolveStops(VarColorLine line, CpalTable? cpal) { ref readonly VarColorStop s = ref src[i]; + // Per spec: VarColorStop has varIndexBase with offsets +0 = stopOffset, +1 = alpha. + float stopOffset = s.StopOffset + colr.ResolveDelta(processor, s.VarIndexBase + 0u); + float alpha = s.Alpha + colr.ResolveDelta(processor, s.VarIndexBase + 1u); + GlyphColor c = s.PaletteIndex == 0xFFFF ? new GlyphColor(0, 0, 0, 0) // transparent placeholder; renderer can blend with foreground - : ResolveColor(cpal, s.PaletteIndex, s.Alpha); + : ResolveColor(cpal, s.PaletteIndex, alpha); - float offset = Math.Clamp(s.StopOffset, 0F, 1F); + float offset = Math.Clamp(stopOffset, 0F, 1F); stops[i] = new GradientStop(offset, c); } diff --git a/src/SixLabors.Fonts/Tables/General/Colr/ColrTable.cs b/src/SixLabors.Fonts/Tables/General/Colr/ColrTable.cs index 3ce87216a..8cb3d2bbb 100644 --- a/src/SixLabors.Fonts/Tables/General/Colr/ColrTable.cs +++ b/src/SixLabors.Fonts/Tables/General/Colr/ColrTable.cs @@ -6,6 +6,7 @@ using System.Numerics; using System.Runtime.CompilerServices; using SixLabors.Fonts.Rendering; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; namespace SixLabors.Fonts.Tables.General.Colr; @@ -22,13 +23,17 @@ internal class ColrTable : Table private readonly LayerList? layerList; private readonly ClipList? clipList; + // Variation data (nullable if not present) + private readonly ItemVariationStore? itemVariationStore; + private readonly DeltaSetIndexMap[]? deltaSetIndexMap; + // Caches (offset -> resolved object) private readonly Dictionary? paintCache; public ColrTable( BaseGlyphRecord[] glyphRecords, LayerRecord[] layers) - : this(glyphRecords, layers, null, null, null, null, 0) + : this(glyphRecords, layers, null, null, null, null, null, null, 0) { } @@ -38,6 +43,8 @@ public ColrTable( BaseGlyphList? baseGlyphList, LayerList? layerList, ClipList? clipList, + ItemVariationStore? itemVariationStore, + DeltaSetIndexMap[]? deltaSetIndexMap, Dictionary? paintCache = null, int version = 1) { @@ -46,12 +53,46 @@ public ColrTable( this.baseGlyphList = baseGlyphList; this.layerList = layerList; this.clipList = clipList; + this.itemVariationStore = itemVariationStore; + this.deltaSetIndexMap = deltaSetIndexMap; this.paintCache = paintCache; this.Version = version; } public int Version { get; } + /// + /// Resolves a variation delta for a given variable index using the COLR table's + /// own ItemVariationStore and optional DeltaSetIndexMap. + /// + /// The glyph variation processor (null for non-variable fonts). + /// The variable index (VarIndexBase + field offset). + /// The delta value, or 0 if no variation data is available. + internal float ResolveDelta(GlyphVariationProcessor? processor, uint varIdx) + { + if (processor is null || this.itemVariationStore is null) + { + return 0; + } + + int outer; + int inner; + if (this.deltaSetIndexMap is not null && varIdx < (uint)this.deltaSetIndexMap.Length) + { + DeltaSetIndexMap mapping = this.deltaSetIndexMap[varIdx]; + outer = mapping.OuterIndex; + inner = mapping.InnerIndex; + } + else + { + // Implicit mapping: upper 16 bits = outer, lower 16 bits = inner. + outer = (int)(varIdx >> 16); + inner = (int)(varIdx & 0xFFFF); + } + + return processor.Delta(this.itemVariationStore, outer, inner); + } + public static ColrTable? Load(FontReader fontReader) { if (!fontReader.TryGetReaderAtTablePosition(TableName, out BigEndianBinaryReader? binaryReader)) @@ -148,13 +189,17 @@ internal bool TryGetColrV0Layers(ushort glyph, out Span records) /// Attempts to resolve and retrieve the list of color glyph layers for the specified glyph ID. /// /// The identifier of the glyph for which to resolve color layers. + /// The glyph variation processor, or null for non-variable fonts. /// /// When this method returns, contains a list of resolved glyph layers if the operation succeeds; otherwise, /// . This parameter is passed uninitialized. /// /// if the color glyph layers were successfully resolved; otherwise, . /// - internal bool TryGetColrV1Layers(ushort glyphId, [NotNullWhen(true)] out List? layers) + internal bool TryGetColrV1Layers( + ushort glyphId, + GlyphVariationProcessor? processor, + [NotNullWhen(true)] out List? layers) { layers = null; @@ -176,7 +221,7 @@ internal bool TryGetColrV1Layers(ushort glyphId, [NotNullWhen(true)] out List acc = []; - this.FlattenPaintToLayers(root, null, Matrix3x2.Identity, CompositeMode.SrcOver, acc); + this.FlattenPaintToLayers(root, null, Matrix3x2.Identity, CompositeMode.SrcOver, processor, acc); // 3) If nothing emitted, the graph did not bind any geometry (no PaintGlyph/ColrGlyph reached). if (acc.Count == 0) @@ -206,12 +251,14 @@ internal bool TryGetColrV1Layers(ushort glyphId, [NotNullWhen(true)] out List /// Accumulated transform. /// Accumulated composite mode. + /// The glyph variation processor, or null for non-variable fonts. /// Accumulator for resolved layers. private void FlattenPaintToLayers( Paint node, ushort? currentGlyphId, Matrix3x2 transform, CompositeMode compositeMode, + GlyphVariationProcessor? processor, List outLayers) { switch (node) @@ -237,7 +284,7 @@ private void FlattenPaintToLayers( if (this.paintCache!.TryGetValue(off, out Paint? child) && child is not null) { - this.FlattenPaintToLayers(child, currentGlyphId, transform, compositeMode, outLayers); + this.FlattenPaintToLayers(child, currentGlyphId, transform, compositeMode, processor, outLayers); } } @@ -250,7 +297,7 @@ private void FlattenPaintToLayers( if (this.TryGetRootPaintOffset(pcg.GlyphId, out uint off) && off != 0 && this.paintCache!.TryGetValue(off, out Paint? colrRoot) && colrRoot is not null) { - this.FlattenPaintToLayers(colrRoot, pcg.GlyphId, transform, compositeMode, outLayers); + this.FlattenPaintToLayers(colrRoot, pcg.GlyphId, transform, compositeMode, processor, outLayers); } return; @@ -259,7 +306,7 @@ private void FlattenPaintToLayers( case PaintGlyph pg: { // Bind geometry to the specified glyph id and recurse into its child paint. - this.FlattenPaintToLayers(pg.Child, pg.GlyphId, transform, compositeMode, outLayers); + this.FlattenPaintToLayers(pg.Child, pg.GlyphId, transform, compositeMode, processor, outLayers); return; } @@ -268,71 +315,97 @@ private void FlattenPaintToLayers( // --------------------------- case PaintTransform pt: { - transform *= ToMatrix(pt.Transform); - this.FlattenPaintToLayers(pt.Child, currentGlyphId, transform, compositeMode, outLayers); + Affine2x3 a = pt.Transform; + transform *= new Matrix3x2(a.Xx, a.Yx, a.Xy, a.Yy, a.Dx, a.Dy); + this.FlattenPaintToLayers(pt.Child, currentGlyphId, transform, compositeMode, processor, outLayers); return; } case PaintVarTransform pvt: { - transform *= ToMatrix(pvt.Transform); - this.FlattenPaintToLayers(pvt.Child, currentGlyphId, transform, compositeMode, outLayers); + VarAffine2x3 a = pvt.Transform; + uint vib = a.VarIndexBase; + float xx = a.Xx + this.ResolveDelta(processor, vib + 0u); + float yx = a.Yx + this.ResolveDelta(processor, vib + 1u); + float xy = a.Xy + this.ResolveDelta(processor, vib + 2u); + float yy = a.Yy + this.ResolveDelta(processor, vib + 3u); + float dx = a.Dx + this.ResolveDelta(processor, vib + 4u); + float dy = a.Dy + this.ResolveDelta(processor, vib + 5u); + transform *= new Matrix3x2(xx, yx, xy, yy, dx, dy); + this.FlattenPaintToLayers(pvt.Child, currentGlyphId, transform, compositeMode, processor, outLayers); return; } case PaintTranslate t: { transform *= Matrix3x2.CreateTranslation(t.Dx, t.Dy); - this.FlattenPaintToLayers(t.Child, currentGlyphId, transform, compositeMode, outLayers); + this.FlattenPaintToLayers(t.Child, currentGlyphId, transform, compositeMode, processor, outLayers); return; } case PaintVarTranslate vt: { - transform *= Matrix3x2.CreateTranslation(vt.Dx, vt.Dy); - this.FlattenPaintToLayers(vt.Child, currentGlyphId, transform, compositeMode, outLayers); + float dx = vt.Dx + this.ResolveDelta(processor, vt.VarIndexBase + 0u); + float dy = vt.Dy + this.ResolveDelta(processor, vt.VarIndexBase + 1u); + transform *= Matrix3x2.CreateTranslation(dx, dy); + this.FlattenPaintToLayers(vt.Child, currentGlyphId, transform, compositeMode, processor, outLayers); return; } case PaintScale s: { transform *= BuildScale(s.ScaleX, s.ScaleY, s.AroundCenter, s.CenterX, s.CenterY); - this.FlattenPaintToLayers(s.Child, currentGlyphId, transform, compositeMode, outLayers); + this.FlattenPaintToLayers(s.Child, currentGlyphId, transform, compositeMode, processor, outLayers); return; } case PaintVarScale vs: { - transform *= BuildScale(vs.ScaleX, vs.ScaleY, vs.AroundCenter, vs.CenterX, vs.CenterY); - this.FlattenPaintToLayers(vs.Child, currentGlyphId, transform, compositeMode, outLayers); + uint vib = vs.VarIndexBase; + float sx = vs.ScaleX + this.ResolveDelta(processor, vib + 0u); + float sy = vs.Uniform ? sx : vs.ScaleY + this.ResolveDelta(processor, vib + 1u); + int centerOffset = vs.Uniform ? 1 : 2; + float cx = vs.AroundCenter ? vs.CenterX + this.ResolveDelta(processor, vib + (uint)centerOffset) : 0; + float cy = vs.AroundCenter ? vs.CenterY + this.ResolveDelta(processor, vib + (uint)centerOffset + 1u) : 0; + transform *= BuildScale(sx, sy, vs.AroundCenter, cx, cy); + this.FlattenPaintToLayers(vs.Child, currentGlyphId, transform, compositeMode, processor, outLayers); return; } case PaintRotate r: { transform *= BuildRotate(r.Angle, r.AroundCenter, r.CenterX, r.CenterY); - this.FlattenPaintToLayers(r.Child, currentGlyphId, transform, compositeMode, outLayers); + this.FlattenPaintToLayers(r.Child, currentGlyphId, transform, compositeMode, processor, outLayers); return; } case PaintVarRotate vr: { - transform *= BuildRotate(vr.Angle, vr.AroundCenter, vr.CenterX, vr.CenterY); - this.FlattenPaintToLayers(vr.Child, currentGlyphId, transform, compositeMode, outLayers); + uint vib = vr.VarIndexBase; + float angle = vr.Angle + this.ResolveDelta(processor, vib + 0u); + float cx = vr.AroundCenter ? vr.CenterX + this.ResolveDelta(processor, vib + 1u) : 0; + float cy = vr.AroundCenter ? vr.CenterY + this.ResolveDelta(processor, vib + 2u) : 0; + transform *= BuildRotate(angle, vr.AroundCenter, cx, cy); + this.FlattenPaintToLayers(vr.Child, currentGlyphId, transform, compositeMode, processor, outLayers); return; } case PaintSkew k: { transform *= BuildSkew(k.XSkew, k.YSkew, k.AroundCenter, k.CenterX, k.CenterY); - this.FlattenPaintToLayers(k.Child, currentGlyphId, transform, compositeMode, outLayers); + this.FlattenPaintToLayers(k.Child, currentGlyphId, transform, compositeMode, processor, outLayers); return; } case PaintVarSkew vk: { - transform *= BuildSkew(vk.XSkew, vk.YSkew, vk.AroundCenter, vk.CenterX, vk.CenterY); - this.FlattenPaintToLayers(vk.Child, currentGlyphId, transform, compositeMode, outLayers); + uint vib = vk.VarIndexBase; + float xSkew = vk.XSkew + this.ResolveDelta(processor, vib + 0u); + float ySkew = vk.YSkew + this.ResolveDelta(processor, vib + 1u); + float cx = vk.AroundCenter ? vk.CenterX + this.ResolveDelta(processor, vib + 2u) : 0; + float cy = vk.AroundCenter ? vk.CenterY + this.ResolveDelta(processor, vib + 3u) : 0; + transform *= BuildSkew(xSkew, ySkew, vk.AroundCenter, cx, cy); + this.FlattenPaintToLayers(vk.Child, currentGlyphId, transform, compositeMode, processor, outLayers); return; } @@ -341,8 +414,8 @@ private void FlattenPaintToLayers( compositeMode = MapCompositeMode(comp.CompositeMode); // Backdrop first, then Source. Both inherit the current glyph id. - this.FlattenPaintToLayers(comp.Backdrop, currentGlyphId, transform, compositeMode, outLayers); - this.FlattenPaintToLayers(comp.Source, currentGlyphId, transform, compositeMode, outLayers); + this.FlattenPaintToLayers(comp.Backdrop, currentGlyphId, transform, compositeMode, processor, outLayers); + this.FlattenPaintToLayers(comp.Source, currentGlyphId, transform, compositeMode, processor, outLayers); return; } @@ -350,6 +423,7 @@ private void FlattenPaintToLayers( // Leaves: emit only if bound // --------------------------- case PaintSolid: + case PaintVarSolid: case PaintLinearGradient: case PaintVarLinearGradient: case PaintRadialGradient: @@ -360,7 +434,7 @@ private void FlattenPaintToLayers( // Only emit if we have an active glyph id (i.e., we are inside a PaintGlyph/ColrGlyph branch). if (currentGlyphId.HasValue) { - _ = this.TryGetClipBox(currentGlyphId.Value, out Bounds? clip); + _ = this.TryGetClipBox(currentGlyphId.Value, processor, out Bounds? clip); outLayers.Add(new ResolvedGlyphLayer(currentGlyphId.Value, node, transform, compositeMode, clip)); } @@ -375,42 +449,6 @@ private void FlattenPaintToLayers( } } - /// - /// Maps an optional fixed 2×3 affine to . - /// Layout: - /// [ xx xy dx ] - /// [ yx yy dy ] - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static Matrix3x2 ToMatrix(Affine2x3? affine) - { - if (affine.HasValue) - { - Affine2x3 a = affine.Value; - return new Matrix3x2(a.Xx, a.Yx, a.Xy, a.Yy, a.Dx, a.Dy); // (M11, M12, M21, M22, M31, M32) - } - - return Matrix3x2.Identity; - } - - /// - /// Maps an optional variable 2×3 affine to . - /// Layout: - /// [ xx xy dx ] - /// [ yx yy dy ] - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static Matrix3x2 ToMatrix(VarAffine2x3? varAffine) - { - if (varAffine.HasValue) - { - VarAffine2x3 v = varAffine.Value; - return new Matrix3x2(v.Xx, v.Yx, v.Xy, v.Yy, v.Dx, v.Dy); - } - - return Matrix3x2.Identity; - } - /// /// Builds a scale matrix, optionally around a center. /// @@ -571,7 +609,7 @@ private ReadOnlySpan GetLayerPaintOffsets(int first, int count) return offsets.Slice(first, len); } - private bool TryGetClipBox(ushort glyphId, out Bounds? bounds) + private bool TryGetClipBox(ushort glyphId, GlyphVariationProcessor? processor, out Bounds? bounds) { if (this.clipList is null) { @@ -579,8 +617,7 @@ private bool TryGetClipBox(ushort glyphId, out Bounds? bounds) return false; } - // TODO: support variation resolver - return this.clipList.TryGetClipBox(glyphId, null, out bounds); + return this.clipList.TryGetClipBox(glyphId, this, processor, out bounds); } public static ColrTable Load(BigEndianBinaryReader reader) @@ -669,14 +706,18 @@ public static ColrTable Load(BigEndianBinaryReader reader) layerList = LayerList.Load(reader, layerListOffset); clipList = ClipList.Load(reader, clipListOffset); - // varIndexMapOffset / itemVariationStoreOffset are parsed elsewhere if/when needed. - _ = varIndexMapOffset; - _ = itemVariationStoreOffset; - paintCache = LoadPaintRoots(reader, baseGlyphList, layerList); } - return new ColrTable(glyphs, layerRecs, baseGlyphList, layerList, clipList, paintCache, 1); + ItemVariationStore? itemVariationStore = itemVariationStoreOffset != 0 + ? ItemVariationStore.Load(reader, itemVariationStoreOffset) + : null; + + DeltaSetIndexMap[]? deltaSetIndexMap = varIndexMapOffset != 0 + ? DeltaSetIndexMap.Load(reader, varIndexMapOffset) + : null; + + return new ColrTable(glyphs, layerRecs, baseGlyphList, layerList, clipList, itemVariationStore, deltaSetIndexMap, paintCache, 1); } private static Dictionary LoadPaintRoots( diff --git a/src/SixLabors.Fonts/Tables/General/Colr/ColrV0GlyphSource.cs b/src/SixLabors.Fonts/Tables/General/Colr/ColrV0GlyphSource.cs index 3e64261c6..146a0af2d 100644 --- a/src/SixLabors.Fonts/Tables/General/Colr/ColrV0GlyphSource.cs +++ b/src/SixLabors.Fonts/Tables/General/Colr/ColrV0GlyphSource.cs @@ -50,7 +50,7 @@ public override bool TryGetPaintedGlyph(ushort glyphId, out PaintedGlyph glyph, // Flatten paint graph: attach composite mode to leaves. List leafPaints = []; PaintSolid paint = new() { PaletteIndex = rl.PaletteIndex, Alpha = 1, Format = 2 }; - FlattenPaint(paint, Matrix3x2.Identity, CompositeMode.SrcOver, this.Cpal, leafPaints); + FlattenPaint(paint, Matrix3x2.Identity, CompositeMode.SrcOver, this.Cpal, this.Colr, null, leafPaints); // Emit one layer per leaf paint. for (int p = 0; p < leafPaints.Count; p++) diff --git a/src/SixLabors.Fonts/Tables/General/Colr/ColrV1GlyphSource.cs b/src/SixLabors.Fonts/Tables/General/Colr/ColrV1GlyphSource.cs index 385c7ea20..5a47305af 100644 --- a/src/SixLabors.Fonts/Tables/General/Colr/ColrV1GlyphSource.cs +++ b/src/SixLabors.Fonts/Tables/General/Colr/ColrV1GlyphSource.cs @@ -4,6 +4,7 @@ using System.Collections.Concurrent; using System.Numerics; using SixLabors.Fonts.Rendering; +using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; using SixLabors.Fonts.Tables.TrueType.Glyphs; namespace SixLabors.Fonts.Tables.General.Colr; @@ -16,23 +17,25 @@ internal sealed class ColrV1GlyphSource : ColrGlyphSourceBase { private static readonly ConcurrentDictionary CachedGlyphs = []; + private readonly GlyphVariationProcessor? processor; + /// /// Initializes a new instance of the class. /// /// The COLR table. /// The CPAL table, or null if not present. /// Delegate that loads a glyph outline for the given glyph id. - public ColrV1GlyphSource(ColrTable colr, CpalTable? cpal, Func glyphLoader) + /// The glyph variation processor for variable fonts, or null. + public ColrV1GlyphSource(ColrTable colr, CpalTable? cpal, Func glyphLoader, GlyphVariationProcessor? processor = null) : base(colr, cpal, glyphLoader) - { - } + => this.processor = processor; /// public override bool TryGetPaintedGlyph(ushort glyphId, out PaintedGlyph glyph, out PaintedCanvasMetadata canvas) { (PaintedGlyph Glyph, PaintedCanvasMetadata Canvas) result = CachedGlyphs.GetOrAdd(glyphId, _ => { - if (this.Colr.TryGetColrV1Layers(glyphId, out List? resolved)) + if (this.Colr.TryGetColrV1Layers(glyphId, this.processor, out List? resolved)) { List layers = new(resolved.Count); for (int i = 0; i < resolved.Count; i++) @@ -49,7 +52,7 @@ public override bool TryGetPaintedGlyph(ushort glyphId, out PaintedGlyph glyph, // Flatten paint graph: accumulate wrapper transforms; attach composite mode to leaves. List leafPaints = []; - FlattenPaint(rl.Paint, rl.Transform, rl.CompositeMode, this.Cpal, leafPaints); + FlattenPaint(rl.Paint, rl.Transform, rl.CompositeMode, this.Cpal, this.Colr, this.processor, leafPaints); // Emit one layer per leaf paint. Bounds? clip = rl.ClipBox; diff --git a/src/SixLabors.Fonts/Tables/General/Colr/IVariationResolver.cs b/src/SixLabors.Fonts/Tables/General/Colr/IVariationResolver.cs deleted file mode 100644 index 7abdb679d..000000000 --- a/src/SixLabors.Fonts/Tables/General/Colr/IVariationResolver.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Six Labors. -// Licensed under the Six Labors Split License. - -#pragma warning disable SA1201 // Elements should appear in the correct order -namespace SixLabors.Fonts.Tables.General.Colr; - -/// -/// Provides a mechanism to resolve variation index deltas. -/// -internal interface IVariationResolver -{ - /// - /// Calculates the resolved delta value for the specified variable index. - /// - /// The zero-based index of the variable for which to resolve the delta value. - /// The resolved delta value as a floating-point number for the specified variable index. - public float ResolveDelta(uint varIndex); -} From ebe78b46487c22279a3b66881179ab8ed52d3445 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 15:05:50 +1000 Subject: [PATCH 50/56] Add variable font support and instance caches --- src/SixLabors.Fonts/Font.cs | 42 ++++++ src/SixLabors.Fonts/FontFamily.cs | 37 +++++ src/SixLabors.Fonts/FontVariation.cs | 45 +++++++ .../StreamFontMetrics.TrueType.cs | 7 +- src/SixLabors.Fonts/StreamFontMetrics.cs | 126 ++++++++++++++++++ .../Tables/General/Colr/ColrV0GlyphSource.cs | 4 +- .../Tables/General/Colr/ColrV1GlyphSource.cs | 4 +- .../Tables/General/Svg/SvgGlyphSource.cs | 10 +- 8 files changed, 265 insertions(+), 10 deletions(-) create mode 100644 src/SixLabors.Fonts/FontVariation.cs diff --git a/src/SixLabors.Fonts/Font.cs b/src/SixLabors.Fonts/Font.cs index 570493043..2f4fcb634 100644 --- a/src/SixLabors.Fonts/Font.cs +++ b/src/SixLabors.Fonts/Font.cs @@ -13,6 +13,7 @@ namespace SixLabors.Fonts; /// public sealed class Font { + private readonly FontVariation[] variations; private readonly Lazy metrics; private readonly Lazy fontName; @@ -42,6 +43,7 @@ public Font(FontFamily family, float size, FontStyle style) this.Family = family; this.RequestedStyle = style; this.Size = size; + this.variations = []; this.metrics = new Lazy(this.LoadInstanceInternal, true); this.fontName = new Lazy(this.LoadFontName, true); } @@ -77,6 +79,24 @@ public Font(Font prototype, float size) { } + /// + /// Initializes a new instance of the class with the specified variation axis settings. + /// + /// The prototype font providing family, size, and style. + /// The variation axis settings to apply. + public Font(Font prototype, params FontVariation[] variations) + { + Guard.NotNull(prototype, nameof(prototype)); + Guard.NotNull(variations, nameof(variations)); + + this.Family = prototype.Family; + this.RequestedStyle = prototype.RequestedStyle; + this.Size = prototype.Size; + this.variations = variations; + this.metrics = new Lazy(this.LoadInstanceInternal, true); + this.fontName = new Lazy(this.LoadFontName, true); + } + /// /// Gets the family. /// @@ -108,6 +128,11 @@ public Font(Font prototype, float size) /// public bool IsItalic => (this.FontMetrics.Description.Style & FontStyle.Italic) == FontStyle.Italic; + /// + /// Gets the variation axis settings applied to this font. + /// + public ReadOnlySpan Variations => this.variations; + /// /// Gets the requested style. /// @@ -278,6 +303,23 @@ private string LoadFontName() => this.metrics.Value?.Description.FontName(this.Family.Culture) ?? string.Empty; private FontMetrics? LoadInstanceInternal() + { + FontMetrics? metrics = this.ResolveBaseMetrics(); + if (metrics is null) + { + return null; + } + + // If variations are specified and the base metrics supports them, create a variation instance. + if (this.variations.Length > 0 && metrics is StreamFontMetrics streamMetrics) + { + return streamMetrics.CreateVariationInstance(this.variations); + } + + return metrics; + } + + private FontMetrics? ResolveBaseMetrics() { if (this.Family.TryGetMetrics(this.RequestedStyle, out FontMetrics? metrics)) { diff --git a/src/SixLabors.Fonts/FontFamily.cs b/src/SixLabors.Fonts/FontFamily.cs index 6ccf655b5..59e8db439 100644 --- a/src/SixLabors.Fonts/FontFamily.cs +++ b/src/SixLabors.Fonts/FontFamily.cs @@ -94,6 +94,43 @@ public readonly Font CreateFont(float size, FontStyle style) return new Font(this, size, style); } + /// + /// Create a new instance of the for the named font family with regular styling + /// and the specified variation axis settings. + /// + /// The size of the font in PT units. + /// The variation axis settings to apply. + /// The new . + public readonly Font CreateFont(float size, params FontVariation[] variations) + { + if (this == default) + { + FontsThrowHelper.ThrowDefaultInstance(); + } + + Font baseFont = new(this, size); + return variations.Length > 0 ? new Font(baseFont, variations) : baseFont; + } + + /// + /// Create a new instance of the for the named font family with the specified + /// style and variation axis settings. + /// + /// The size of the font in PT units. + /// The font style. + /// The variation axis settings to apply. + /// The new . + public readonly Font CreateFont(float size, FontStyle style, params FontVariation[] variations) + { + if (this == default) + { + FontsThrowHelper.ThrowDefaultInstance(); + } + + Font baseFont = new(this, size, style); + return variations.Length > 0 ? new Font(baseFont, variations) : baseFont; + } + /// /// Gets the collection of that are currently available. /// diff --git a/src/SixLabors.Fonts/FontVariation.cs b/src/SixLabors.Fonts/FontVariation.cs new file mode 100644 index 000000000..4659a09c4 --- /dev/null +++ b/src/SixLabors.Fonts/FontVariation.cs @@ -0,0 +1,45 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +using System.Diagnostics; + +namespace SixLabors.Fonts; + +/// +/// Represents a single variation axis setting for a variable font, +/// consisting of a four-character tag and a value. +/// +/// +/// Follows CSS font-variation-settings semantics. +/// Values are clamped to the axis range defined in the font's fvar table. +/// +[DebuggerDisplay("Tag: {Tag}, Value: {Value}")] +public readonly struct FontVariation +{ + /// + /// Initializes a new instance of the struct. + /// + /// The four-character axis tag (e.g. "wght", "wdth", "opsz"). + /// The axis value in design-space units. + public FontVariation(string tag, float value) + { + Guard.NotNullOrWhiteSpace(tag, nameof(tag)); + if (tag.Length != 4) + { + throw new ArgumentException("Variation axis tag must be exactly 4 characters.", nameof(tag)); + } + + this.Tag = tag; + this.Value = value; + } + + /// + /// Gets the four-character axis tag identifying the design variation. + /// + public string Tag { get; } + + /// + /// Gets the axis value in design-space units. + /// + public float Value { get; } +} diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index 18d7d8590..53e71e848 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -201,7 +201,12 @@ private GlyphMetrics CreateTrueTypeGlyphMetrics( GlyphVector vector = glyf.GetGlyph(glyphId); // Apply gvar deltas to the glyph outline if a variation processor is present. - this.GlyphVariationProcessor?.TransformPoints(glyphId, ref vector); + // Clone first so we don't mutate the shared glyph cache. + if (this.GlyphVariationProcessor is not null) + { + vector = GlyphVector.DeepClone(vector); + this.GlyphVariationProcessor.TransformPoints(glyphId, ref vector); + } Bounds bounds = vector.Bounds; diff --git a/src/SixLabors.Fonts/StreamFontMetrics.cs b/src/SixLabors.Fonts/StreamFontMetrics.cs index 50d6d35cd..9a8a95a71 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.cs @@ -95,6 +95,56 @@ internal StreamFontMetrics(CompactFontTables tables, GlyphVariationProcessor? gl this.verticalMetrics = metrics.VerticalMetrics; } + /// + /// Initializes a new instance of the class as a variation instance, + /// sharing variation-independent caches from the base instance. + /// Only the glyph cache (which depends on variation coordinates) is fresh. + /// + private StreamFontMetrics( + TrueTypeFontTables tables, + GlyphVariationProcessor processor, + ConcurrentDictionary<(int CodePoint, int NextCodePoint), (bool Success, ushort GlyphId, bool SkipNextCodePoint)> sharedGlyphIdCache, + ConcurrentDictionary sharedCodePointCache) + { + this.trueTypeFontTables = tables; + this.outlineType = OutlineType.TrueType; + this.description = new FontDescription(tables.Name, tables.Os2, tables.Head); + this.GlyphVariationProcessor = processor; + this.glyphIdCache = sharedGlyphIdCache; + this.codePointCache = sharedCodePointCache; + this.glyphCache = new(); + + (HorizontalMetrics HorizontalMetrics, VerticalMetrics VerticalMetrics) metrics = this.Initialize(tables); + this.horizontalMetrics = metrics.HorizontalMetrics; + this.verticalMetrics = metrics.VerticalMetrics; + + this.interpreterPool = new ObjectPool(new TrueTypeInterpreterPooledObjectPolicy(this)); + } + + /// + /// Initializes a new instance of the class as a variation instance, + /// sharing variation-independent caches from the base instance. + /// Only the glyph cache (which depends on variation coordinates) is fresh. + /// + private StreamFontMetrics( + CompactFontTables tables, + GlyphVariationProcessor processor, + ConcurrentDictionary<(int CodePoint, int NextCodePoint), (bool Success, ushort GlyphId, bool SkipNextCodePoint)> sharedGlyphIdCache, + ConcurrentDictionary sharedCodePointCache) + { + this.compactFontTables = tables; + this.outlineType = OutlineType.CFF; + this.description = new FontDescription(tables.Name, tables.Os2, tables.Head); + this.GlyphVariationProcessor = processor; + this.glyphIdCache = sharedGlyphIdCache; + this.codePointCache = sharedCodePointCache; + this.glyphCache = new(); + + (HorizontalMetrics HorizontalMetrics, VerticalMetrics VerticalMetrics) metrics = this.Initialize(tables); + this.horizontalMetrics = metrics.HorizontalMetrics; + this.verticalMetrics = metrics.VerticalMetrics; + } + public HeadTable.HeadFlags HeadFlags { get; private set; } public GlyphVariationProcessor? GlyphVariationProcessor { get; private set; } @@ -412,6 +462,82 @@ internal override ReadOnlySpan GetNormalizedCoordinates() ? this.GlyphVariationProcessor.NormalizedCoordinates : []; + /// + /// Creates a new instance that shares all immutable table data + /// with this instance but uses a new initialized + /// to the specified variation axis settings. + /// + /// The variation axis settings to apply. + /// A new configured for the requested variation. + internal StreamFontMetrics CreateVariationInstance(FontVariation[] variations) + { + FVarTable? fvar = this.outlineType == OutlineType.TrueType + ? this.trueTypeFontTables?.Fvar + : this.compactFontTables?.FVar; + + if (fvar is null) + { + // Not a variable font; return this instance unchanged. + return this; + } + + // Map FontVariation tags to user coordinate array (indexed by fvar axis order). + // Start with default axis values so unspecified axes remain at their defaults. + float[] userCoordinates = new float[fvar.AxisCount]; + for (int i = 0; i < fvar.AxisCount; i++) + { + userCoordinates[i] = fvar.Axes[i].DefaultValue; + } + + for (int v = 0; v < variations.Length; v++) + { + FontVariation variation = variations[v]; + for (int i = 0; i < fvar.AxisCount; i++) + { + if (string.Equals(fvar.Axes[i].Tag, variation.Tag, StringComparison.Ordinal)) + { + userCoordinates[i] = variation.Value; + break; + } + } + } + + // Create a new processor with the user coordinates. Shares all table references. + if (this.outlineType == OutlineType.TrueType) + { + TrueTypeFontTables tables = this.trueTypeFontTables!; + ItemVariationStore? itemVariationStore = tables.Hvar?.ItemVariationStore ?? tables.Vvar?.ItemVariationStore; + GlyphVariationProcessor processor = new( + itemVariationStore, + fvar, + tables.Avar, + tables.Gvar, + tables.Hvar, + tables.Vvar, + tables.Mvar, + tables.Cvar, + userCoordinates); + + return new StreamFontMetrics(tables, processor, this.glyphIdCache, this.codePointCache); + } + else + { + CompactFontTables tables = this.compactFontTables!; + ItemVariationStore? itemVariationStore = tables.Cff.ItemVariationStore; + GlyphVariationProcessor processor = new( + itemVariationStore, + fvar, + tables.AVar, + tables.GVar, + tables.HVar, + tables.VVar, + tables.MVar, + userCoordinates: userCoordinates); + + return new StreamFontMetrics(tables, processor, this.glyphIdCache, this.codePointCache); + } + } + /// /// Reads a from the specified stream. /// diff --git a/src/SixLabors.Fonts/Tables/General/Colr/ColrV0GlyphSource.cs b/src/SixLabors.Fonts/Tables/General/Colr/ColrV0GlyphSource.cs index 146a0af2d..d6301a4a9 100644 --- a/src/SixLabors.Fonts/Tables/General/Colr/ColrV0GlyphSource.cs +++ b/src/SixLabors.Fonts/Tables/General/Colr/ColrV0GlyphSource.cs @@ -14,7 +14,7 @@ namespace SixLabors.Fonts.Tables.General.Colr; /// internal sealed class ColrV0GlyphSource : ColrGlyphSourceBase { - private static readonly ConcurrentDictionary CachedGlyphs = []; + private readonly ConcurrentDictionary cachedGlyphs = []; /// /// Initializes a new instance of the class. @@ -30,7 +30,7 @@ public ColrV0GlyphSource(ColrTable colr, CpalTable? cpal, Func public override bool TryGetPaintedGlyph(ushort glyphId, out PaintedGlyph glyph, out PaintedCanvasMetadata canvas) { - (PaintedGlyph Glyph, PaintedCanvasMetadata Canvas) result = CachedGlyphs.GetOrAdd(glyphId, id => + (PaintedGlyph Glyph, PaintedCanvasMetadata Canvas) result = this.cachedGlyphs.GetOrAdd(glyphId, id => { if (this.Colr.TryGetColrV0Layers(id, out Span resolved)) { diff --git a/src/SixLabors.Fonts/Tables/General/Colr/ColrV1GlyphSource.cs b/src/SixLabors.Fonts/Tables/General/Colr/ColrV1GlyphSource.cs index 5a47305af..006f62c84 100644 --- a/src/SixLabors.Fonts/Tables/General/Colr/ColrV1GlyphSource.cs +++ b/src/SixLabors.Fonts/Tables/General/Colr/ColrV1GlyphSource.cs @@ -15,7 +15,7 @@ namespace SixLabors.Fonts.Tables.General.Colr; /// internal sealed class ColrV1GlyphSource : ColrGlyphSourceBase { - private static readonly ConcurrentDictionary CachedGlyphs = []; + private readonly ConcurrentDictionary cachedGlyphs = []; private readonly GlyphVariationProcessor? processor; @@ -33,7 +33,7 @@ public ColrV1GlyphSource(ColrTable colr, CpalTable? cpal, Func public override bool TryGetPaintedGlyph(ushort glyphId, out PaintedGlyph glyph, out PaintedCanvasMetadata canvas) { - (PaintedGlyph Glyph, PaintedCanvasMetadata Canvas) result = CachedGlyphs.GetOrAdd(glyphId, _ => + (PaintedGlyph Glyph, PaintedCanvasMetadata Canvas) result = this.cachedGlyphs.GetOrAdd(glyphId, _ => { if (this.Colr.TryGetColrV1Layers(glyphId, this.processor, out List? resolved)) { diff --git a/src/SixLabors.Fonts/Tables/General/Svg/SvgGlyphSource.cs b/src/SixLabors.Fonts/Tables/General/Svg/SvgGlyphSource.cs index 8e6c6e08b..f60218339 100644 --- a/src/SixLabors.Fonts/Tables/General/Svg/SvgGlyphSource.cs +++ b/src/SixLabors.Fonts/Tables/General/Svg/SvgGlyphSource.cs @@ -21,8 +21,8 @@ namespace SixLabors.Fonts.Tables.General.Svg; internal sealed class SvgGlyphSource : IPaintedGlyphSource { private readonly SvgTable svgTable; - private static readonly Dictionary DocCache = []; - private static readonly ConcurrentDictionary CachedGlyphs = []; + private readonly Dictionary docCache = []; + private readonly ConcurrentDictionary cachedGlyphs = []; private sealed class ParsedDoc { @@ -40,7 +40,7 @@ private sealed class ParsedDoc /// public bool TryGetPaintedGlyph(ushort glyphId, out PaintedGlyph glyph, out PaintedCanvasMetadata canvas) { - (PaintedGlyph Glyph, PaintedCanvasMetadata Canvas) result = CachedGlyphs.GetOrAdd(glyphId, gid => + (PaintedGlyph Glyph, PaintedCanvasMetadata Canvas) result = this.cachedGlyphs.GetOrAdd(glyphId, gid => { if (this.TryGetParsedDoc(gid, out ParsedDoc? parsed)) { @@ -88,7 +88,7 @@ private bool TryGetParsedDoc(ushort glyphId, [NotNullWhen(true)] out ParsedDoc? return false; } - if (DocCache.TryGetValue(glyphId, out parsed)) + if (this.docCache.TryGetValue(glyphId, out parsed)) { return true; } @@ -124,7 +124,7 @@ private bool TryGetParsedDoc(ushort glyphId, [NotNullWhen(true)] out ParsedDoc? IdMap = idMap }; - DocCache[glyphId] = parsed; + this.docCache[glyphId] = parsed; return true; } } From e2726c721056b23ef595de234c33794fa8c39138 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 19:35:29 +1000 Subject: [PATCH 51/56] Improve CFF parsing, font-matrix & variations --- src/SixLabors.Fonts/FileFontMetrics.cs | 5 + src/SixLabors.Fonts/Font.cs | 14 +- src/SixLabors.Fonts/StreamFontMetrics.Cff.cs | 10 + .../Variations/DeltaSetIndexMap.cs | 12 +- .../Variations/GlyphVariationProcessor.cs | 36 +- src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs | 16 +- src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs | 5 +- src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs | 6 + src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs | 24 +- src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs | 4 + .../Tables/Cff/CffDataDicEntry.cs | 10 + src/SixLabors.Fonts/Tables/Cff/CffFont.cs | 14 +- .../Tables/Cff/CffGlyphData.cs | 10 +- .../Tables/Cff/CffGlyphMetrics.cs | 10 + .../Tables/Cff/CffIndexOffset.cs | 7 +- src/SixLabors.Fonts/Tables/Cff/CffOperand.cs | 10 + src/SixLabors.Fonts/Tables/Cff/CffOperator.cs | 59 +- .../Tables/Cff/CffParserBase.cs | 10 +- .../Tables/Cff/CffPrivateDictionary.cs | 13 + .../Tables/Cff/CffTopDictionary.cs | 42 +- src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs | 40 +- .../Tables/Cff/CompactFontTables.cs | 3 + .../Tables/Cff/FDRangeProvider.cs | 8 +- src/SixLabors.Fonts/Tables/Cff/FontDict.cs | 19 + .../Tables/Cff/GlyphNameMap.cs | 9 + src/SixLabors.Fonts/Tables/Cff/OperandKind.cs | 10 + .../Tables/Cff/OperatorOperandKind.cs | 32 +- .../Tables/Cff/SimpleBinaryReader.cs | 4 + .../Tables/Cff/Type2Operator1.cs | 5 +- .../Tables/Cff/Type2Operator2.cs | 5 +- ...type_CFF2_WeightVariations_-Black--900.png | 3 + ...type_CFF2_WeightVariations_-Light--200.png | 3 + ..._NotoEmoji_WeightVariations_-Bold--700.png | 3 + ...NotoEmoji_WeightVariations_-Light--300.png | 3 + ...toEmoji_WeightVariations_-Regular--400.png | 3 + .../VisualTest_RobotoFlex_MultipleAxes-.png | 3 + ...RobotoFlex_WeightVariations_-Bold--700.png | 3 + ...botoFlex_WeightVariations_-Heavy--1000.png | 3 + ...otoFlex_WeightVariations_-Regular--400.png | 3 + ...RobotoFlex_WeightVariations_-Thin--100.png | 3 + .../Fonts/AdobeVFPrototype-Subset.otf | Bin 0 -> 7096 bytes tests/SixLabors.Fonts.Tests/Fonts/Mada-VF.ttf | Bin 0 -> 120384 bytes .../Fonts/NotoEmoji-VariableFont_wght.ttf | Bin 0 -> 1989588 bytes .../Fonts/TestGVARFour.ttf | Bin 0 -> 3204 bytes .../Fonts/TestGVAROne.ttf | Bin 0 -> 14064 bytes .../Fonts/TestGVARThree.ttf | Bin 0 -> 14076 bytes .../Fonts/TestGVARTwo.ttf | Bin 0 -> 15420 bytes .../Fonts/TestHVARTwo.ttf | Bin 0 -> 4004 bytes .../Tables/Variations/VariationFontTests.cs | 584 ++++++++++++++++++ tests/SixLabors.Fonts.Tests/TestFonts.cs | 48 +- 50 files changed, 1028 insertions(+), 86 deletions(-) create mode 100644 tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_CFF2_WeightVariations_-Black--900.png create mode 100644 tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_CFF2_WeightVariations_-Light--200.png create mode 100644 tests/Images/ReferenceOutput/VisualTest_NotoEmoji_WeightVariations_-Bold--700.png create mode 100644 tests/Images/ReferenceOutput/VisualTest_NotoEmoji_WeightVariations_-Light--300.png create mode 100644 tests/Images/ReferenceOutput/VisualTest_NotoEmoji_WeightVariations_-Regular--400.png create mode 100644 tests/Images/ReferenceOutput/VisualTest_RobotoFlex_MultipleAxes-.png create mode 100644 tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Bold--700.png create mode 100644 tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Heavy--1000.png create mode 100644 tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Regular--400.png create mode 100644 tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Thin--100.png create mode 100644 tests/SixLabors.Fonts.Tests/Fonts/AdobeVFPrototype-Subset.otf create mode 100644 tests/SixLabors.Fonts.Tests/Fonts/Mada-VF.ttf create mode 100644 tests/SixLabors.Fonts.Tests/Fonts/NotoEmoji-VariableFont_wght.ttf create mode 100644 tests/SixLabors.Fonts.Tests/Fonts/TestGVARFour.ttf create mode 100644 tests/SixLabors.Fonts.Tests/Fonts/TestGVAROne.ttf create mode 100644 tests/SixLabors.Fonts.Tests/Fonts/TestGVARThree.ttf create mode 100644 tests/SixLabors.Fonts.Tests/Fonts/TestGVARTwo.ttf create mode 100644 tests/SixLabors.Fonts.Tests/Fonts/TestHVARTwo.ttf create mode 100644 tests/SixLabors.Fonts.Tests/Tables/Variations/VariationFontTests.cs diff --git a/src/SixLabors.Fonts/FileFontMetrics.cs b/src/SixLabors.Fonts/FileFontMetrics.cs index 5963bdfa2..e32572d41 100644 --- a/src/SixLabors.Fonts/FileFontMetrics.cs +++ b/src/SixLabors.Fonts/FileFontMetrics.cs @@ -45,6 +45,11 @@ internal FileFontMetrics(FontDescription description, string path, long offset) /// public string Path { get; } + /// + /// Gets the underlying that this file-backed instance delegates to. + /// + internal StreamFontMetrics StreamFontMetrics => this.fontMetrics.Value; + /// public override ushort UnitsPerEm => this.fontMetrics.Value.UnitsPerEm; diff --git a/src/SixLabors.Fonts/Font.cs b/src/SixLabors.Fonts/Font.cs index 2f4fcb634..477592ca7 100644 --- a/src/SixLabors.Fonts/Font.cs +++ b/src/SixLabors.Fonts/Font.cs @@ -311,9 +311,19 @@ private string LoadFontName() } // If variations are specified and the base metrics supports them, create a variation instance. - if (this.variations.Length > 0 && metrics is StreamFontMetrics streamMetrics) + if (this.variations.Length > 0) { - return streamMetrics.CreateVariationInstance(this.variations); + StreamFontMetrics? streamMetrics = metrics switch + { + StreamFontMetrics s => s, + FileFontMetrics f => f.StreamFontMetrics, + _ => null + }; + + if (streamMetrics is not null) + { + return streamMetrics.CreateVariationInstance(this.variations); + } } return metrics; diff --git a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs index 244eaceb8..c37ef9f76 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.Cff.cs @@ -1,6 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. +using System.Numerics; using SixLabors.Fonts.Rendering; using SixLabors.Fonts.Tables.AdvancedTypographic; using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; @@ -119,6 +120,15 @@ private GlyphMetrics CreateCffGlyphMetrics( vector.AVar = aVar; vector.GVar = gVar; Bounds bounds = vector.GetBounds(); + + // Apply the CFF FontMatrix to transform bounds from charstring space to design units. + if (vector.FontMatrix is double[] fm) + { + float upm = this.UnitsPerEm; + Vector2 fmScale = new((float)(fm[0] * upm), (float)(fm[3] * upm)); + bounds = new Bounds(bounds.Min * fmScale, bounds.Max * fmScale); + } + ushort advanceWidth = htmx.GetAdvancedWidth(glyphId); short lsb = htmx.GetLeftSideBearing(glyphId); diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs index a470ef988..f124599c8 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/DeltaSetIndexMap.cs @@ -42,16 +42,18 @@ public DeltaSetIndexMap(int outerIndex, int innerIndex) reader.Seek(offset, SeekOrigin.Begin); byte format = reader.ReadUInt8(); byte entryFormat = reader.ReadUInt8(); - ushort mapCount = reader.ReadUInt16(); - if (format is not 0 or 1) + if (format is not (0 or 1)) { throw new NotSupportedException("Only format 0 or 1 of DeltaSetIndexMap is supported"); } + // Format 0 uses uint16 for mapCount, format 1 uses uint32. + int mapCount = format == 0 ? reader.ReadUInt16() : (int)reader.ReadUInt32(); + int entrySize = ((entryFormat & MapEntrySizeMask) >> 4) + 1; - int outerIndex = entrySize >> ((entryFormat & InnerIndexBitCountMask) + 1); - int innerIndex = entrySize & ((1 << ((entryFormat & InnerIndexBitCountMask) + 1)) - 1); + int innerBitCount = (entryFormat & InnerIndexBitCountMask) + 1; + int innerIndexMask = (1 << innerBitCount) - 1; DeltaSetIndexMap[] deltaSetIndexMaps = new DeltaSetIndexMap[mapCount]; for (int i = 0; i < mapCount; i++) @@ -64,7 +66,7 @@ public DeltaSetIndexMap(int outerIndex, int innerIndex) 4 => (reader.ReadByte() << 24) | (reader.ReadByte() << 16) | (reader.ReadByte() << 8) | reader.ReadByte(), _ => throw new NotSupportedException("unsupported delta set index map"), }; - deltaSetIndexMaps[i] = new DeltaSetIndexMap((ushort)(entry & innerIndex), (ushort)(entry >> outerIndex)); + deltaSetIndexMaps[i] = new DeltaSetIndexMap(entry >> innerBitCount, entry & innerIndexMask); } return deltaSetIndexMaps; diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs index e915d63b8..704b96f52 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Variations/GlyphVariationProcessor.cs @@ -115,6 +115,12 @@ private void TransformSimplePoints(GlyphVariationData variationData, ref GlyphVe IList controlPoints = glyphPoints.ControlPoints; int pointCount = controlPoints.Count; + // gvar encodes deltas for outline points + 4 phantom points (LSB, advance width, + // TSB, advance height). We must decode all of them so X/Y delta streams stay aligned, + // even though we only apply deltas to the outline points. + const int PhantomPointCount = 4; + int totalPointCount = pointCount + PhantomPointCount; + // Clone the original points for IUP reference (interpolation needs unmodified originals). GlyphVector originPoints = GlyphVector.DeepClone(glyphPoints); IList origPoints = originPoints.ControlPoints; @@ -133,9 +139,10 @@ private void TransformSimplePoints(GlyphVariationData variationData, ref GlyphVe short[]? deltasY = tupleHeader.DeltasY; // If deltas were deferred (all-points case), decode them now that we know the point count. + // Use totalPointCount (outline + phantom) so Y deltas start at the correct stream offset. if (deltasX is null && tupleHeader.RawDeltaData is not null) { - DecodeAllPointDeltas(tupleHeader.RawDeltaData, pointCount, out deltasX, out deltasY); + DecodeAllPointDeltas(tupleHeader.RawDeltaData, totalPointCount, out deltasX, out deltasY); } if (deltasX is null || deltasY is null) @@ -147,7 +154,7 @@ private void TransformSimplePoints(GlyphVariationData variationData, ref GlyphVe if (allPoints) { - // Deltas apply to all points directly. + // Deltas apply to all points directly. Only apply to outline points (skip phantom). int deltaCount = Math.Min(deltasX.Length, pointCount); for (int i = 0; i < deltaCount; i++) { @@ -173,8 +180,11 @@ private void TransformSimplePoints(GlyphVariationData variationData, ref GlyphVe if (ptIdx < pointCount) { hasDelta[ptIdx] = 1; - adjustX[ptIdx] = deltasX[i] * factor; - adjustY[ptIdx] = deltasY[i] * factor; + + // Round before IUP interpolation to match fontkit / FreeType behavior. + // IUP references rounded absolute positions, so rounding must happen first. + adjustX[ptIdx] = MathF.Round(deltasX[i] * factor); + adjustY[ptIdx] = MathF.Round(deltasY[i] * factor); } } @@ -187,12 +197,13 @@ private void TransformSimplePoints(GlyphVariationData variationData, ref GlyphVe adjustY, hasDelta); - // Apply the accumulated deltas. + // Apply the accumulated deltas (already rounded for explicit points, + // IUP-interpolated for implicit points). for (int i = 0; i < pointCount; i++) { ControlPoint cp = controlPoints[i]; - cp.Point.X += MathF.Round(adjustX[i]); - cp.Point.Y += MathF.Round(adjustY[i]); + cp.Point.X += adjustX[i]; + cp.Point.Y += adjustY[i]; controlPoints[i] = cp; } } @@ -921,9 +932,14 @@ private static void InterpolateAxis( (out1, out2) = (out2, out1); } - float scale = (in1 == in2 || out1 == out2) - ? 0 - : (out2 - out1) / (in2 - in1); + // Per the OpenType spec / FreeType: if the two reference points have the same + // input coordinate but different output coordinates, the inferred delta is zero. + if (in1 == in2 && out1 != out2) + { + return; + } + + float scale = in1 == in2 ? 0 : (out2 - out1) / (in2 - in1); for (int p = p1; p <= p2; p++) { diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs index 776882549..5032af9da 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff1Parser.cs @@ -1,8 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System; -using System.Collections.Generic; using System.Text; namespace SixLabors.Fonts.Tables.Cff; @@ -94,13 +92,13 @@ private static string[] ReadStringIndex(BigEndianBinaryReader reader) { if (!TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) { - return Array.Empty(); + return []; } string[] stringIndex = new string[offsets.Length]; // Allow reusing the same buffer for shorter reads. - using Buffer buffer = new Buffer(512); + using Buffer buffer = new(512); Span bufferSpan = buffer.GetSpan(); for (int i = 0; i < offsets.Length; ++i) @@ -183,13 +181,13 @@ private CffTopDictionary ResolveTopDictInfo(List entries, strin metrics.UnderlineThickness = entry.Operands[0].RealNumValue; break; case "FontBBox": - metrics.FontBBox = new double[] - { + metrics.FontBBox = + [ entry.Operands[0].RealNumValue, entry.Operands[1].RealNumValue, entry.Operands[2].RealNumValue, entry.Operands[3].RealNumValue - }; + ]; break; case "CharStrings": this.charStringsOffset = (int)entry.Operands[0].RealNumValue; @@ -487,7 +485,7 @@ private CffGlyphData[] ReadCharStringsIndex( glyphs[i] = new CffGlyphData( (ushort)i, globalSubrBuffers, - localSubBuffer ?? Array.Empty(), + localSubBuffer ?? [], privateDictionary?.NominalWidthX ?? 0, charstringsBuffer, 1); @@ -565,7 +563,7 @@ private static void ReadFormat1Encoding(BigEndianBinaryReader reader) reader.BaseStream.Position = this.offset + this.privateDICTOffset; List dicData = this.ReadDictData(reader, this.privateDICTLength); - byte[][] localSubrRawBuffers = Array.Empty(); + byte[][] localSubrRawBuffers = []; int defaultWidthX = 0; int nominalWidthX = 0; diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs b/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs index e43f2edb1..613a4921b 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff1Table.cs @@ -1,11 +1,14 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System; using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; namespace SixLabors.Fonts.Tables.Cff; +/// +/// Represents the Compact Font Format (CFF) version 1 table. +/// +/// internal sealed class Cff1Table : Table, ICffTable { internal const string TableName = "CFF "; // 4 chars diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs index 706c76fa2..c792fc7ae 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Font.cs @@ -5,10 +5,16 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Represents a parsed CFF2 font with an associated Item Variation Store for font variations. +/// internal class Cff2Font : CffFont { public Cff2Font(string name, CffTopDictionary metrics, CffGlyphData[] glyphs, ItemVariationStore itemVariationStore) : base(name, metrics, glyphs) => this.ItemVariationStore = itemVariationStore; + /// + /// Gets or sets the Item Variation Store used for CFF2 blend interpolation. + /// public ItemVariationStore ItemVariationStore { get; set; } } diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs index 5a8bf02fb..3cf9eea8a 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs @@ -7,7 +7,8 @@ namespace SixLabors.Fonts.Tables.Cff; /// -/// Parses a Compact Font Format (CFF) version 2 described in https://docs.microsoft.com/en-gb/typography/opentype/spec/cff2 +/// Parses a Compact Font Format (CFF) version 2 font program. +/// /// internal class Cff2Parser : CffParserBase { @@ -15,7 +16,7 @@ internal class Cff2Parser : CffParserBase private long offset; - private int fontMatrixOffset; + private double[]? fontMatrix; private int charStringIndexOffset; private int variationStoreOffset; private int? fdArrayOffset; @@ -58,7 +59,8 @@ public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictL FontDict[] fontDicts = this.ReadFdArray(reader, this.offset, fdArrayOffset); CffTopDictionary topDictionary = new() { - CidFontInfo = cidFontInfo + CidFontInfo = cidFontInfo, + FontMatrix = this.fontMatrix ?? [0.001, 0, 0, 0.001, 0, 0] }; CffPrivateDictionary privateDictionary = new(fontDicts[0].LocalSubr, 0, 0); @@ -78,7 +80,12 @@ private void ReadTopDictData(BigEndianBinaryReader reader, ushort topDictLength) switch (dataDicEntry.Operator.Name) { case "FontMatrix": - this.fontMatrixOffset = (int)dataDicEntry.Operands[0].RealNumValue; + this.fontMatrix = new double[dataDicEntry.Operands.Length]; + for (int i = 0; i < dataDicEntry.Operands.Length; i++) + { + this.fontMatrix[i] = dataDicEntry.Operands[i].RealNumValue; + } + break; case "CharStrings": this.charStringIndexOffset = (int)dataDicEntry.Operands[0].RealNumValue; @@ -133,7 +140,7 @@ private static byte[][] ReadSubrBuffer(BigEndianBinaryReader reader, bool cff2 = { if (!TryReadIndexDataOffsets(reader, cff2, out CffIndexOffset[]? offsets)) { - return Array.Empty(); + return []; } byte[][] rawBufferList = new byte[offsets.Length][]; @@ -233,12 +240,15 @@ private CffGlyphData[] ReadCharStringsIndex( glyphs[i] = new CffGlyphData( (ushort)i, globalSubrBuffers, - localSubBuffer ?? Array.Empty(), + localSubBuffer ?? [], privateDictionary?.NominalWidthX ?? 0, charstringsBuffer, 2, this.itemVariationStore, - vsIndex); + vsIndex) + { + FontMatrix = topDictionary.FontMatrix + }; } return glyphs; diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs index 47a714688..8722f800d 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Table.cs @@ -8,6 +8,10 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Represents the Compact Font Format (CFF) version 2 table. +/// +/// internal sealed class Cff2Table : Table, ICffTable { internal const string TableName = "CFF2"; diff --git a/src/SixLabors.Fonts/Tables/Cff/CffDataDicEntry.cs b/src/SixLabors.Fonts/Tables/Cff/CffDataDicEntry.cs index bad5b79b1..4509b2b5b 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffDataDicEntry.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffDataDicEntry.cs @@ -7,6 +7,10 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Represents a single key-value entry parsed from a CFF DICT structure. +/// The key is a and the value is an array of . +/// internal class CffDataDicEntry { public CffDataDicEntry(CFFOperator @operator, CffOperand[] operands) @@ -15,8 +19,14 @@ public CffDataDicEntry(CFFOperator @operator, CffOperand[] operands) this.Operands = operands; } + /// + /// Gets the DICT operator that identifies this entry. + /// public CFFOperator Operator { get; } + /// + /// Gets the operand values associated with this operator. + /// public CffOperand[] Operands { get; } #if DEBUG diff --git a/src/SixLabors.Fonts/Tables/Cff/CffFont.cs b/src/SixLabors.Fonts/Tables/Cff/CffFont.cs index 163a1b4bf..c5fb9a46c 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffFont.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffFont.cs @@ -1,10 +1,11 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; - namespace SixLabors.Fonts.Tables.Cff; +/// +/// Represents a parsed CFF font containing the top-level dictionary and glyph data. +/// internal class CffFont { public CffFont(string name, CffTopDictionary metrics, CffGlyphData[] glyphs) @@ -14,9 +15,18 @@ public CffFont(string name, CffTopDictionary metrics, CffGlyphData[] glyphs) this.Glyphs = glyphs; } + /// + /// Gets or sets the PostScript font name. + /// public string FontName { get; set; } + /// + /// Gets or sets the Top DICT data containing font-wide metrics and properties. + /// public CffTopDictionary Metrics { get; set; } + /// + /// Gets the array of glyph data parsed from the CharStrings INDEX. + /// public CffGlyphData[] Glyphs { get; } } diff --git a/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs b/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs index 4c2b7128f..92e9d090b 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffGlyphData.cs @@ -54,9 +54,11 @@ public CffGlyphData( public GVarTable? GVar { get; set; } - public Bounds GetBounds() + public double[]? FontMatrix { get; set; } + + public readonly Bounds GetBounds() { - using var engine = new CffEvaluationEngine( + using CffEvaluationEngine engine = new( this.charStrings, this.globalSubrBuffers, this.localSubrBuffers, @@ -70,9 +72,9 @@ public Bounds GetBounds() return engine.GetBounds(); } - public void RenderTo(IGlyphRenderer renderer, Vector2 origin, Vector2 scale, Vector2 offset, Matrix3x2 transform) + public readonly void RenderTo(IGlyphRenderer renderer, Vector2 origin, Vector2 scale, Vector2 offset, Matrix3x2 transform) { - using var engine = new CffEvaluationEngine( + using CffEvaluationEngine engine = new( this.charStrings, this.globalSubrBuffers, this.localSubrBuffers, diff --git a/src/SixLabors.Fonts/Tables/Cff/CffGlyphMetrics.cs b/src/SixLabors.Fonts/Tables/Cff/CffGlyphMetrics.cs index ca952eaf5..52e4d6464 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffGlyphMetrics.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffGlyphMetrics.cs @@ -127,6 +127,16 @@ internal override void RenderTo( if (!UnicodeUtility.ShouldRenderWhiteSpaceOnly(this.CodePoint)) { Vector2 scale = new Vector2(scaledPPEM) / this.ScaleFactor; + + // Apply the CFF FontMatrix to convert charstring coordinates to design units. + // The normalized FontMatrix (fontMatrix * unitsPerEM) is identity for the default + // [0.001, 0, 0, 0.001, 0, 0] with upm=1000. + if (this.glyphData.FontMatrix is double[] fm) + { + float upm = this.UnitsPerEm; + scale *= new Vector2((float)(fm[0] * upm), (float)(fm[3] * upm)); + } + Vector2 scaledOffset = this.Offset * scale; this.glyphData.RenderTo(renderer, renderLocation, scale, scaledOffset, rotation); } diff --git a/src/SixLabors.Fonts/Tables/Cff/CffIndexOffset.cs b/src/SixLabors.Fonts/Tables/Cff/CffIndexOffset.cs index 039f5baa4..7fcdec240 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffIndexOffset.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffIndexOffset.cs @@ -3,15 +3,18 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Represents the position and length of an element within a CFF INDEX structure. +/// internal readonly struct CffIndexOffset { /// - /// The starting offset + /// The starting offset of the element within the INDEX data. /// public readonly int Start; /// - /// The length + /// The length in bytes of the element. /// public readonly int Length; diff --git a/src/SixLabors.Fonts/Tables/Cff/CffOperand.cs b/src/SixLabors.Fonts/Tables/Cff/CffOperand.cs index acfa8a6d6..0016184c9 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffOperand.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffOperand.cs @@ -7,6 +7,10 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Represents a numeric operand value from a CFF DICT entry. +/// Operands can be integers or real numbers as encoded in the DICT data. +/// internal readonly struct CffOperand { public CffOperand(double number, OperandKind kind) @@ -15,8 +19,14 @@ public CffOperand(double number, OperandKind kind) this.RealNumValue = number; } + /// + /// Gets the kind of this operand (integer or real number). + /// public readonly OperandKind Kind { get; } + /// + /// Gets the numeric value of this operand. + /// public readonly double RealNumValue { get; } #if DEBUG diff --git a/src/SixLabors.Fonts/Tables/Cff/CffOperator.cs b/src/SixLabors.Fonts/Tables/Cff/CffOperator.cs index 332660d5e..de31b5195 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffOperator.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffOperator.cs @@ -1,30 +1,40 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System; -using System.Collections.Generic; - namespace SixLabors.Fonts.Tables.Cff; +/// +/// Represents a CFF DICT operator with its name and operand kind. +/// Operators are registered in a static dictionary keyed by their byte encoding +/// and looked up during DICT parsing. +/// +/// internal sealed class CFFOperator { - private static readonly Lazy> RegisteredOperators = new(() => CreateDictionary(), true); - private readonly byte b0; - private readonly byte b1; - private readonly OperatorOperandKind operatorOperandKind; - - // b0 the first byte of a two byte value - // b1 the second byte of a two byte value - private CFFOperator(string name, byte b0, byte b1, OperatorOperandKind operatorOperandKind) + private static readonly Lazy> RegisteredOperators = new(CreateDictionary, true); + + private CFFOperator(string name, OperatorOperandKind operandKind) { - this.b0 = b0; - this.b1 = b1; this.Name = name; - this.operatorOperandKind = operatorOperandKind; + this.OperandKind = operandKind; } + /// + /// Gets the name of the operator (e.g. "CharStrings", "FontMatrix", "Private"). + /// public string Name { get; } + /// + /// Gets the expected operand format for this operator. + /// + public OperatorOperandKind OperandKind { get; } + + /// + /// Looks up a registered CFF operator by its one- or two-byte encoding. + /// + /// The first byte of the operator. + /// The second byte (0 for single-byte operators, or 12 prefix byte value). + /// The matching , or if not found. public static CFFOperator GetOperatorByKey(byte b0, byte b1) { RegisteredOperators.Value.TryGetValue((b1 << 8) | b0, out CFFOperator? found); @@ -33,7 +43,7 @@ public static CFFOperator GetOperatorByKey(byte b0, byte b1) private static Dictionary CreateDictionary() { - Dictionary dictionary = new(); + Dictionary dictionary = []; // Table 9: Top DICT Operator Entries Register(dictionary, 0, "version", OperatorOperandKind.SID); @@ -87,16 +97,17 @@ private static Dictionary CreateDictionary() Register(dictionary, 12, 13, "StemSnapV", OperatorOperandKind.Delta); Register(dictionary, 12, 14, "ForceBold", OperatorOperandKind.Boolean); - // reserved 12 15//https://typekit.files.wordpress.com/2013/05/5176.cff.pdf - // reserved 12 16//https://typekit.files.wordpress.com/2013/05/5176.cff.pdf - Register(dictionary, 12, 17, "LanguageGroup", OperatorOperandKind.Number); // https://typekit.files.wordpress.com/2013/05/5176.cff.pdf - Register(dictionary, 12, 18, "ExpansionFactor", OperatorOperandKind.Number); // https://typekit.files.wordpress.com/2013/05/5176.cff.pdf - Register(dictionary, 12, 19, "initialRandomSeed", OperatorOperandKind.Number); // https://typekit.files.wordpress.com/2013/05/5176.cff.pdf + // reserved 12 15 + // reserved 12 16 + Register(dictionary, 12, 17, "LanguageGroup", OperatorOperandKind.Number); + Register(dictionary, 12, 18, "ExpansionFactor", OperatorOperandKind.Number); + Register(dictionary, 12, 19, "initialRandomSeed", OperatorOperandKind.Number); Register(dictionary, 19, "Subrs", OperatorOperandKind.Number); Register(dictionary, 20, "defaultWidthX", OperatorOperandKind.Number); Register(dictionary, 21, "nominalWidthX", OperatorOperandKind.Number); + // CFF2 operators Register(dictionary, 22, "vsindex", OperatorOperandKind.Number); Register(dictionary, 23, "blend", OperatorOperandKind.Number); Register(dictionary, 24, "vstore", OperatorOperandKind.Number); @@ -104,11 +115,11 @@ private static Dictionary CreateDictionary() return dictionary; } - private static void Register(Dictionary dictionary, byte b0, byte b1, string operatorName, OperatorOperandKind opopKind) - => dictionary.Add((b1 << 8) | b0, new CFFOperator(operatorName, b0, b1, opopKind)); + private static void Register(Dictionary dictionary, byte b0, byte b1, string name, OperatorOperandKind operandKind) + => dictionary.Add((b1 << 8) | b0, new CFFOperator(name, operandKind)); - private static void Register(Dictionary dictionary, byte b0, string operatorName, OperatorOperandKind opopKind) - => dictionary.Add(b0, new CFFOperator(operatorName, b0, 0, opopKind)); + private static void Register(Dictionary dictionary, byte b0, string name, OperatorOperandKind operandKind) + => dictionary.Add(b0, new CFFOperator(name, operandKind)); #if DEBUG public override string ToString() => this.Name; diff --git a/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs b/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs index c561ff35f..75fd3b073 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs @@ -7,6 +7,10 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Base class for CFF1 and CFF2 parsers providing shared DICT parsing, +/// INDEX reading, FDSelect, and subroutine loading functionality. +/// internal abstract class CffParserBase { private readonly StringBuilder pooledStringBuilder = new(); @@ -75,14 +79,14 @@ protected FontDict[] ReadFdArray(BigEndianBinaryReader reader, long offset, long { if (fdArrayOffset is 0) { - return Array.Empty(); + return []; } reader.BaseStream.Position = offset + fdArrayOffset; if (!TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) { - return Array.Empty(); + return []; } FontDict[] fontDicts = new FontDict[offsets.Length]; @@ -265,7 +269,7 @@ protected static byte[][] ReadSubrBuffer(BigEndianBinaryReader reader) { if (!TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) { - return Array.Empty(); + return []; } byte[][] rawBufferList = new byte[offsets.Length][]; diff --git a/src/SixLabors.Fonts/Tables/Cff/CffPrivateDictionary.cs b/src/SixLabors.Fonts/Tables/Cff/CffPrivateDictionary.cs index 95b4152a1..ad5f3cc65 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffPrivateDictionary.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffPrivateDictionary.cs @@ -3,6 +3,10 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Represents data from a CFF Private DICT, which contains font-level hinting +/// values and local subroutine references. +/// internal class CffPrivateDictionary { public CffPrivateDictionary(byte[][]? localSubrRawBuffers, int defaultWidthX, int nominalWidthX) @@ -12,9 +16,18 @@ public CffPrivateDictionary(byte[][]? localSubrRawBuffers, int defaultWidthX, in this.NominalWidthX = nominalWidthX; } + /// + /// Gets or sets the local subroutine raw byte buffers referenced by the Private DICT. + /// public byte[][]? LocalSubrRawBuffers { get; set; } + /// + /// Gets or sets the default width for glyphs that do not specify a width in the charstring. + /// public int DefaultWidthX { get; set; } + /// + /// Gets or sets the nominal width used as a bias for charstring width values. + /// public int NominalWidthX { get; set; } } diff --git a/src/SixLabors.Fonts/Tables/Cff/CffTopDictionary.cs b/src/SixLabors.Fonts/Tables/Cff/CffTopDictionary.cs index dd6dba73b..8bf3caa9e 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffTopDictionary.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffTopDictionary.cs @@ -3,27 +3,67 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Represents the Top DICT data from a CFF or CFF2 font, containing font-wide +/// metadata such as name strings, bounding box, underline metrics, and the FontMatrix. +/// internal class CffTopDictionary { public CffTopDictionary() => this.CidFontInfo = new(); + /// + /// Gets or sets the font version string (SID). + /// public string? Version { get; set; } + /// + /// Gets or sets the font notice/trademark string (SID). + /// public string? Notice { get; set; } + /// + /// Gets or sets the font copyright string (SID). + /// public string? CopyRight { get; set; } + /// + /// Gets or sets the font full name string (SID). + /// public string? FullName { get; set; } + /// + /// Gets or sets the font family name string (SID). + /// public string? FamilyName { get; set; } + /// + /// Gets or sets the font weight string (SID), e.g. "Bold". + /// public string? Weight { get; set; } + /// + /// Gets or sets the underline position in design units. + /// public double UnderlinePosition { get; set; } + /// + /// Gets or sets the underline thickness in design units. + /// public double UnderlineThickness { get; set; } - public double[] FontBBox { get; set; } = Array.Empty(); + /// + /// Gets or sets the font bounding box [xMin, yMin, xMax, yMax] in design units. + /// + public double[] FontBBox { get; set; } = []; + /// + /// Gets or sets the font matrix that transforms charstring coordinates to user space. + /// Default is [0.001, 0, 0, 0.001, 0, 0] which maps 1000 charstring units to 1 user-space unit. + /// + public double[] FontMatrix { get; set; } = [0.001, 0, 0, 0.001, 0, 0]; + + /// + /// Gets or sets the CIDFont-specific information (ROS, FDSelect, FDArray). + /// public CidFontInfo CidFontInfo { get; set; } } diff --git a/src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs b/src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs index 92ef82fc4..918ab0286 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CidFontInfo.cs @@ -1,33 +1,61 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System; -using System.Collections.Generic; - namespace SixLabors.Fonts.Tables.Cff; +/// +/// Contains CIDFont-specific information from the Top DICT of a CFF CIDFont. +/// +/// internal class CidFontInfo { + /// + /// Gets or sets the CIDFont Registry string from the ROS operator. + /// public string? ROS_Register { get; set; } + /// + /// Gets or sets the CIDFont Ordering string from the ROS operator. + /// public string? ROS_Ordering { get; set; } + /// + /// Gets or sets the CIDFont Supplement value from the ROS operator. + /// public string? ROS_Supplement { get; set; } + /// + /// Gets or sets the CIDFont version number. + /// public double CIDFontVersion { get; set; } + /// + /// Gets or sets the number of CIDs in the font (CIDCount operator). + /// public int CIDFountCount { get; set; } + /// + /// Gets or sets the offset to the FDSelect structure that maps glyphs to Font DICTs. + /// public int FDSelect { get; set; } + /// + /// Gets or sets the offset to the Font DICT (FDArray) INDEX. + /// public int FDArray { get; set; } + /// + /// Gets or sets the FDSelect format (0, 3, or 4). + /// public int FdSelectFormat { get; set; } - public FDRange[] FdRanges { get; set; } = Array.Empty(); + /// + /// Gets or sets the parsed FDSelect ranges for format 3/4. + /// + public FDRange[] FdRanges { get; set; } = []; /// - /// Gets or sets the fd select map, which maps glyph # to font #. + /// Gets or sets the FDSelect map for format 0, mapping glyph index to Font DICT index. /// - public Dictionary FdSelectMap { get; set; } = new(); + public Dictionary FdSelectMap { get; set; } = []; } diff --git a/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs b/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs index 1e59bbf4b..09e8b4998 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CompactFontTables.cs @@ -12,6 +12,9 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Contains the collection of OpenType tables required for fonts with CFF or CFF2 outlines. +/// internal sealed class CompactFontTables : IFontTables { public CompactFontTables( diff --git a/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs b/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs index fde0f568c..1b2adcdbc 100644 --- a/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs +++ b/src/SixLabors.Fonts/Tables/Cff/FDRangeProvider.cs @@ -1,14 +1,14 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System; -using System.Collections.Generic; - namespace SixLabors.Fonts.Tables.Cff; +/// +/// Resolves the Font DICT index for a given glyph using the FDSelect data from a CIDFont. +/// Supports FDSelect format 0 (per-glyph map) and formats 3/4 (range-based). +/// internal struct FDRangeProvider { - // helper class private readonly int format; private readonly FDRange[] ranges; private readonly Dictionary fdSelectMap; diff --git a/src/SixLabors.Fonts/Tables/Cff/FontDict.cs b/src/SixLabors.Fonts/Tables/Cff/FontDict.cs index 1b3c747d2..9c520864d 100644 --- a/src/SixLabors.Fonts/Tables/Cff/FontDict.cs +++ b/src/SixLabors.Fonts/Tables/Cff/FontDict.cs @@ -3,6 +3,10 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Represents a Font DICT entry from the FDArray in a CIDFont. +/// Each Font DICT contains a reference to its own Private DICT and local subroutines. +/// internal class FontDict { public FontDict(int name, int dictSize, int dictOffset) @@ -12,13 +16,28 @@ public FontDict(int name, int dictSize, int dictOffset) this.PrivateDicOffset = dictOffset; } + /// + /// Gets or sets the Font DICT name SID. + /// public int FontName { get; set; } + /// + /// Gets the size in bytes of the associated Private DICT. + /// public int PrivateDicSize { get; } + /// + /// Gets the offset to the associated Private DICT. + /// public int PrivateDicOffset { get; } + /// + /// Gets or sets the local subroutine buffers from this Font DICT's Private DICT. + /// public byte[][]? LocalSubr { get; set; } + /// + /// Gets or sets the variation store index (CFF2 vsindex operator) for this Font DICT. + /// public int VsIndex { get; set; } } diff --git a/src/SixLabors.Fonts/Tables/Cff/GlyphNameMap.cs b/src/SixLabors.Fonts/Tables/Cff/GlyphNameMap.cs index 86b7bafd3..8e8f6289b 100644 --- a/src/SixLabors.Fonts/Tables/Cff/GlyphNameMap.cs +++ b/src/SixLabors.Fonts/Tables/Cff/GlyphNameMap.cs @@ -3,10 +3,19 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Maps a glyph index to its PostScript glyph name from the CFF charset. +/// internal readonly struct GlyphNameMap { + /// + /// The glyph index within the font. + /// public readonly ushort GlyphIndex; + /// + /// The PostScript glyph name. + /// public readonly string GlyphName; public GlyphNameMap(ushort glyphIndex, string glyphName) diff --git a/src/SixLabors.Fonts/Tables/Cff/OperandKind.cs b/src/SixLabors.Fonts/Tables/Cff/OperandKind.cs index b8d24f041..85f652bb4 100644 --- a/src/SixLabors.Fonts/Tables/Cff/OperandKind.cs +++ b/src/SixLabors.Fonts/Tables/Cff/OperandKind.cs @@ -3,8 +3,18 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Identifies whether a CFF DICT operand was encoded as an integer or a real number. +/// internal enum OperandKind { + /// + /// An integer operand (encoded as 1-5 bytes in the DICT data). + /// IntNumber, + + /// + /// A real number operand (encoded as a nibble-based BCD sequence). + /// RealNumber } diff --git a/src/SixLabors.Fonts/Tables/Cff/OperatorOperandKind.cs b/src/SixLabors.Fonts/Tables/Cff/OperatorOperandKind.cs index 6d062ca08..dc70141d6 100644 --- a/src/SixLabors.Fonts/Tables/Cff/OperatorOperandKind.cs +++ b/src/SixLabors.Fonts/Tables/Cff/OperatorOperandKind.cs @@ -3,15 +3,45 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Defines the operand interpretation for a CFF DICT operator. +/// Used to describe how operands on the DICT stack should be decoded. +/// +/// internal enum OperatorOperandKind { + /// + /// A string identifier referencing the String INDEX. + /// SID, + + /// + /// A boolean value (0 or 1). + /// Boolean, + + /// + /// A single numeric value (integer or real). + /// Number, + + /// + /// An array of numeric values. + /// Array, + + /// + /// A delta-encoded array of numeric values. + /// Delta, - // Compound + /// + /// Two numeric values (e.g. Private DICT size and offset). + /// NumberNumber, + + /// + /// Two SIDs followed by a number (e.g. ROS: Registry, Ordering, Supplement). + /// SID_SID_Number, } diff --git a/src/SixLabors.Fonts/Tables/Cff/SimpleBinaryReader.cs b/src/SixLabors.Fonts/Tables/Cff/SimpleBinaryReader.cs index b05b02fe6..2f93f08ca 100644 --- a/src/SixLabors.Fonts/Tables/Cff/SimpleBinaryReader.cs +++ b/src/SixLabors.Fonts/Tables/Cff/SimpleBinaryReader.cs @@ -3,6 +3,10 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// A lightweight big-endian binary reader over a buffer, +/// used for reading Type 2 charstring data without allocations. +/// internal ref struct SimpleBinaryReader { private readonly ReadOnlySpan buffer; diff --git a/src/SixLabors.Fonts/Tables/Cff/Type2Operator1.cs b/src/SixLabors.Fonts/Tables/Cff/Type2Operator1.cs index 3aca0b2e3..380340983 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Type2Operator1.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Type2Operator1.cs @@ -3,9 +3,12 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Single-byte Type 2 charstring operators (byte values 0-31). +/// +/// internal enum Type2Operator1 : byte { - // Appendix A Type 2 Charstring Command Codes Reserved0_ = 0, Hstem, // 1 Reserved2_, // 2 diff --git a/src/SixLabors.Fonts/Tables/Cff/Type2Operator2.cs b/src/SixLabors.Fonts/Tables/Cff/Type2Operator2.cs index a8760cc5d..1147e6f59 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Type2Operator2.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Type2Operator2.cs @@ -3,9 +3,12 @@ namespace SixLabors.Fonts.Tables.Cff; +/// +/// Two-byte Type 2 charstring operators (preceded by the escape byte 12). +/// +/// internal enum Type2Operator2 : byte { - // Two-byte Type 2 Operators Reserved0_ = 0, Reserved1_, Reserved2_, diff --git a/tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_CFF2_WeightVariations_-Black--900.png b/tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_CFF2_WeightVariations_-Black--900.png new file mode 100644 index 000000000..3b841027d --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_CFF2_WeightVariations_-Black--900.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8c74f578b04fad68daa6b567b9006558c13ee883e9505b2b388e32727603e24 +size 4429 diff --git a/tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_CFF2_WeightVariations_-Light--200.png b/tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_CFF2_WeightVariations_-Light--200.png new file mode 100644 index 000000000..af762d56d --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_CFF2_WeightVariations_-Light--200.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ce9acdb1a8e3a583e2e9223beeb8f3d59eec33e76e9f5db0e7b2ab39fe9e9be +size 4136 diff --git a/tests/Images/ReferenceOutput/VisualTest_NotoEmoji_WeightVariations_-Bold--700.png b/tests/Images/ReferenceOutput/VisualTest_NotoEmoji_WeightVariations_-Bold--700.png new file mode 100644 index 000000000..d4ca0a2d7 --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_NotoEmoji_WeightVariations_-Bold--700.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e5f6b9ece6cda272ddbcb3d7acc1172931d10f417920ce24afe64230fed7cd0 +size 6911 diff --git a/tests/Images/ReferenceOutput/VisualTest_NotoEmoji_WeightVariations_-Light--300.png b/tests/Images/ReferenceOutput/VisualTest_NotoEmoji_WeightVariations_-Light--300.png new file mode 100644 index 000000000..57fbfe27a --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_NotoEmoji_WeightVariations_-Light--300.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f12793e2c74169bd5dec6c8feaf01eb489e6177481152a298c069d205c031901 +size 5627 diff --git a/tests/Images/ReferenceOutput/VisualTest_NotoEmoji_WeightVariations_-Regular--400.png b/tests/Images/ReferenceOutput/VisualTest_NotoEmoji_WeightVariations_-Regular--400.png new file mode 100644 index 000000000..241727e9e --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_NotoEmoji_WeightVariations_-Regular--400.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcb5f62a3d098c7f433dde15f516a7836b93d429cc1eec816047bd508600770b +size 6554 diff --git a/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_MultipleAxes-.png b/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_MultipleAxes-.png new file mode 100644 index 000000000..7420cef73 --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_MultipleAxes-.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55238a70d48adfbc4bb85519c9d9a43aae72c4e5cc6778207af237a3c9c0ce61 +size 5653 diff --git a/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Bold--700.png b/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Bold--700.png new file mode 100644 index 000000000..81f54081d --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Bold--700.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc04e4221a45d4b8bb0661e55cfb256e7d2f47c3fd6617aa9bf53ccf90cc62c2 +size 9753 diff --git a/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Heavy--1000.png b/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Heavy--1000.png new file mode 100644 index 000000000..0c9bae2f3 --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Heavy--1000.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:365d3205cede04a1f2fa7b63da3e5e4fd8cbba8bbff28431f87d26a3206fa1e1 +size 9699 diff --git a/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Regular--400.png b/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Regular--400.png new file mode 100644 index 000000000..51fa0e07e --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Regular--400.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f514b8d62d1e530bfd2209dacebaeab52770edc89704fb8208b0720d3230303 +size 9911 diff --git a/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Thin--100.png b/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Thin--100.png new file mode 100644 index 000000000..a48083053 --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_RobotoFlex_WeightVariations_-Thin--100.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db1c60a4340efba804b7b3796ceebf579b12014b99dcad006ec0922f24732ba9 +size 9248 diff --git a/tests/SixLabors.Fonts.Tests/Fonts/AdobeVFPrototype-Subset.otf b/tests/SixLabors.Fonts.Tests/Fonts/AdobeVFPrototype-Subset.otf new file mode 100644 index 0000000000000000000000000000000000000000..5cc7279fcbe20355a029e5120f5149c3a022d506 GIT binary patch literal 7096 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 literal 0 HcmV?d00001 diff --git a/tests/SixLabors.Fonts.Tests/Fonts/Mada-VF.ttf b/tests/SixLabors.Fonts.Tests/Fonts/Mada-VF.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e6f44045c46007c98f05684a8e9f6a10d56f4d78 GIT binary patch literal 120384 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

d5oNpRTPp&Xn+H+GX42i9I<*OUd zYqF%KYP+G`traD(`0T_6vt`a5AH2*di#qsl$&N*3aUy3kci_%u(^c=ub&0FY z=7xJbc4?(qopS_=;mli;nr3X0X%c6SyHX|DE}lMcS12vB!Q)D^IF*9v=n}81SglHy zGiZr5MGf_h+v|m}_RM?2ytkH&bP(G3)aWWh=~0X08ABY=yR4mntj|O0@2~{TivqBheW8XC^7^ zO**Y_D+Iu0foA_buze@7)TPk@seli1NC=Y($Qlqvv@l8_Y@-4S!AwW|oeurS~Rk>{^;d3TR%U0=dq@e?S;8*&Y&XGk~CUSvbK;1HQMHX_w=EEbp*HP zo1z$l-JJ&m)>;0ucsu?*MkZr3e)zm0NucGI>SjKB*OTw}NMY8-lb(!@qaG(2NDkm# zqiEKmu?2w#L?1M}z;r+mO_;u6jU5GOLVs2!cWK00%(aLnJfaeP5p;nGd_2{V_^OXl`J zu~1R0`A`eSNc?iJp8TXGIIGaxly4Vt^zJHmrcdQxRGpA2gax}eS65A5jY6k^T!GrW zWNf(*e=;SDtobpBSIU%Pr^%hCj}?2Ie0zN5c)rbQbeZ_^>Ap^1PH(_0q$pAq)!7Tq z_Ql3^$0cfG)PgkEeRJ4a5{+yCd?f?Ex1ugOj5>kobfe}LVFg+cF1Q_0_Q3bIx zJZc1wLPsGF4{GZaBlHx5oeLP16I2dF!6L4{2#XQ4P>+NV3)Bl3CqY-k3>38hA2~YE zOVkYkNo1l&!YI(X*y($h7iN_Q^UCJ=H3E=omDsk0vtBz6u7J!qD&T0eRAOtNrk8j$ z8EqM@d+xb@^>j)~Tu@?J{Cs7A%a0-l$xIO*0xPQJNYGB9<7Mt#`OvC)9KBwlyr++ zSKLyNIhvaID7|Lg5 z0cb-Jt#Jiu3#=`jAb^Zu5l-JoFsGZTK@gCT=7AuKKn+vjR%;)Kg=nHc3!&iVez?ue z<3xL+1s#$oO|=gD4-&tiJt1C3+WfJ0gRG2yw5Q(}n#jyBq#EjWv>d(|Tyx_3oQ4x? zg3lgm-BAliGc(2~pVH(=_zAAqHesqZS)?$o{s}gjT2CK^U zMwvUq-sq|#X9|Y2aDTR%!YYL;;|PDQL}SZxy|B$in1 zIVQJQt}iqCCYL+P_4cBszyx`uB((ujHs&S`Oaz*W?D}#C-jS3m(;6F6OISW*nO-h- zo9-3GDx4aw%sgzjmLw(!Y-->s`v91m0hlWAG$p|r8H|q(k$wPFIDbt zHck&xDfi$nzPjOs8JqAM_uhl!n`XSY{uTVidtsf@97vdT-z>J)@fDVT?hCBtx##d> zUqET?uN+!7oJa_mgE6Yu#_g@_+N9U9nJ8Z zGw8H~B3_u;WKnD{6w=65yiC>1+^fBVFuN4l2$b>H5vmh?V0{xtsWE{ygH zJssbD#!{?2O@FBTwQ+P^*QvqN7;7&p=BLDLanGUYafXz)FwODTvCRAL$De!sZv4I1 zO~$zChkC@>i9sGex?*V^yU}7oiZw8s70E*O)K!WSdq&fk?k{Pr( zsKEf)^BEEB-#rUCU`Yvq76HBq! z>o3fmGkG*}-DEy<#-kI>J6fVCuW!Tu`U?Iw{&?_iEc>HRvAk3Grs$R(E%P3o!NgBL zbh~To-4{O?o%7y>yEi)LZO@-uE=iRr{Z{gl$z_&&g~Xxg*;hxoKO>wqDg*yLKi}$h zINa9!d|fmHn|;bGV#jTt8^sb$UmML94d6c(&5tXuNoiSoX0W>Z^Qr5w`(DQEr_vAO zUp=-Iyge(9;`{NF>=1Tuued#@d6D}P?nr!#o3=hmXKj~5h(6(EN&dOv{0B3 zx>L&@<3w4Q1AuWbY5v{Mn3N-A*a7@NSpa3;VJbr$EETj%4Fmo9|@ErN+D?1D3ZL3%`1XWw2(*~hxUnlW+TLaCWo+Oah4zsxyj(5>Rpp#qgfJsFA!~r$pHY{v^vxx6>Nh z9z310ZI-jh?$>Dj3aus6W7C%>nKLY!`U+tGYQRhEJs>SsFeBuGR%lub25m7I1ShcH z13}s!gDi?y7$Q;_pm54c3a|i!gZmK&l=o*6xrxjOlb^tY@)e91kZxx@Pa=y*MSSjY z^0Chw*9YAx)62?dcs!x?YWRO{nA~ht9 zox7=_ZsTlkMwVJ+B#)ljH4AZ2-3RYOimYE|%-d8rt4eHDB}ZJuQ_&npiB02Fb?$@?FISB8?xiiv`i(7@QRCUOfe z*NU%E+5;z$_lsqtj`llJ2qI(AG}~5k$!q)sl>@y?zE2((3*sXzkpQ`(k0HfQ3N6D9 z6dop@{pjYMwQCUBqR)m7w4B|De&8(1{CdUmZ^&oQ9v}yHb0&h9hF7Mawyt>WaL|f0^xe2K^Z6rTkJ^S|3c@;67yL9Q`-q_tn9LXQTv-zmt-y#0jU%_pg6aNp! z)Hpli92yrF2cHkoKve^ukC5l#lf^hY04hvq8G+D)cj)iLF&Q8H&*yO*A{RjZD_AKk zNEU)9IS)dqk3t~zd8`VeXet1|9P>*z1Ak~3QI!FQg(Vgniz%1IeCO~nz&B_^V-^{} zxN@-31CtU{Pb`l}MEpe9VB{Ks#8kSb(7@wqH=#6{ z2QUdiGfUhGlYIR@&rDqO(dO!&(Sh48ubO!F2SiqzH3!MhAAFGf{9cWz+Ggx|8Zmb4 zK=fyNjnSrt9$Nff!JGv2bgrXJ#q;-o@@VreDdnd*;|X}ltWSXq*^EOye%qnlvvbm_4u95 z^c_%n)JV{b8oo}?&u7uV>XB%s6LgbluDfP@M((sa!K?9ti;4Bq^E1ZRxKV*Iw;^fz zLp?nYO;2jbF&1@u$DLSJS+(lKSnv4Gh2v^-EKG4?BA3myPvh$#$!`GCE{qIv=wYmZ%} zo`DPywH#sn4t}WkK5!Qn3#%HK@Q$BkY&du(l>PzslO1{v@=gEu<_)n&e|V0}&%IeZ zuES9>TA!>7luh)R1%>`pdm3NDGnRVYvRu2Wy*ix6VJpN+O}wYTn(PxWxLU4InUbv$ z+AKV^ZA7h}4_L@kC^Q~zPouNxG%nlgs7%qOgI`!8S7ery4n+R{-$f*$SJOHFKH`W_ zZbFc2(P}N+U_$PBsxq!#k642T$7N)Ub8@nMtx6sb7)S=& zX0)18+SO`tGZ^m@1Su8-j#$F92AMxS1f^r0a=8=zEKilN<-CB+@5>WFov$P@xp$;k zt?uxcEk+v~hT-sd%GOM6nt;ne$dV#}I&j37{}-nA&i^=#NQOyUsSnKW;1!0lCt8*) z&zSDYH@ByhEv=EJr^_93>6}|K9bGD^#w-h@#p{$H2QYX-2sy9wK|#QTc%@X;>R&k7 z+h)v3>dl$gGHXOu0g}08-VS>xUoU5H`3#Pbo#JcxU);!+ZPG}c(*GEecrj0}P?*gM zg+A}BL8USbf87q%LRr4_bRP@qfwB!2i-Db|>MJzYn4uIRoh#vK^&-Wjs>+JIlps`9 z)@Et#IYO3z1rB=dinMAzznZ~hMlXqtJj0yYls0pYb6R@t6dRa5QLZH=ucESQl0u}1 z!irovMf0!gF%Ejb{H^GO(y)Gp5fs?JQvW^d4X~K8Q2jcH~}`s^->i+ zcYy=oTX8=E*|30~n_?CK*#T+@hM=-Q2=Z1EG|U8GG=^Q7F%L;0tbb!!Vg5E(u}<^9BH^!FGET*3s~B=8hMfF*Mwk?3HyRkPVf#O@Bhtuf3> zIa@3DRks5^3 z9>zK{iG#aVb5m1ksOT+Je3^fdynL>dmYT|aidY6I?+$@@!Kh_I9cIY2#(5qYW86=? zFafhakABg#0T_{KrDdRk2yKj}=9Tx>cbXe#HwAM#O2X>>eh6kq(}&oTdj=0?rj>{a zZkwk7nYLr}zQUdf4?MFRsi8t~mVduGTs$Ht)I6)vJfgn0!Yz0T&#m+vdHEv$GAe$% zkRV`gs|F6Gl?jB#vNV^;>S4uGfA}7L&UZ6U@OZm&_n+HIVj`d-{Le!`b`OjA6_ZGAEE< zX}l?l823ahxWUV4RW1Jf2B-?$an4dGopPRh@nf4#;SnO%zwncO5&>(YV1)}8#5Rb*{|gkm1|t#07g4+bhFxk8-FSPQQ;CPE>0nDk zW(tbYfd~pJ=86spAweD_Kz9rGh3!Ob-y4$0a5q)rzLFZQ+h|P=d1PXR*})y%#qoM% zm0n9xQr7;teGkv$70hb)Ys6Ap(Cjk0Ig#S9E!iSdON907nrY(?jO$w;PHGLhBPt*t zQzvi|0_Ma-wZ!SPg^2#9bso$CPX7YA&({|2-tHzUJ`kHZqC?j#?qx&$asJ}s~+laNMhSfs`5bjtcauBk?KvU zRofknlf_ztqe2-<)rhsB^l|x&^4VLei*k}GoOS)>spWc;ot@{OYpVeM`X3MlXJ|no@Wtf&+Q03(E})J1^M_RC&|ZF({D#P z2T!2eznrANSK{wYOxA7>T92IoD9$hyN+lMZ?!cI-=zUQuf_d1dTjB+YSD zlW!h}MPmc1Fi^^xnAWQ;ZhG8uaH8FIW6@wc{`;a~YWkbRbol-@4wG?^-D1J6mAF{3 zflm7mEi2e)Ko1lIcYg2+!1W|xacR)U3J$k)>^=)lellv^jtIG+wTTxDt=k|Ci%IbR zM#9M3hSu%d!Gi&w5h;mHXrnSkLs$Bh@xo;u${sTz;=3Gh8-%mby`cv}2 z#Cy>e^f@y0J`vrrm3*Q{nXX0_0$2>&Q&8Z33w^UmLt6!<*uTe1Iq6fBc+~R<`RV1! z!$=H~DvEw~V=?a?wwV6^pd^*W7oJ5#1@RxxL4k ztM--?qYka8s95>H_!)O0f9bi?oC>1;-srWGRUKksT^yUB!E#z*Ik7KvKEy;e#f^q+ zr*{l$b7wRUvSN!&imRmjivu}q=Oh1{Ttv$oF2Jj zj%M7OJ(Hh1oFgf@|A{dTckOGIO;}&Si=T9kBzNv4e?2!*NFF`Dr(xFvpWm_b(gQnd zXKma#Gp47DJn>9R+mq)SV%oYpPSZ3+qfK^gWjH)cO&GNubL zRoq&>8}VP7IpYHP&s}*diaZZ}+EZJt)7I|VI)Cmhl^R8;y}bXMr$X-L_v&#b6V{@EdlS1M1 zN`+zup%rM8$Dt>-EG$|XP-kk&Ct36+gIXPFwzwQZp|!lw(Ht?Rw56A}I{p2flV<;D z@9?hIdRJ$%r234pW<_&}EL}T!*1)$X_tb7XFzL?srq|3aESy~x1KiAYr6p@}VqiOA zXA|-D5Zs1BE|XBPcowK*n#N2g4b^ z7)(>(G$;Ydf!~x5iA>isj$tIl1dMfq6}<_;!4(Xsuumum1q28K1A4?tY|Pivza`%z zpM;uTNtO0yBtE|TizSQ%uA6+EjIl1k@zDc5BNy($g05#4| zKHjnTovzpZv6cM$;}ae@HjW%i&L)10oF3iU^K5g}g2teE-47fe1G(GcFFw`r){>To zj+T7(4`OT`>zgmq|M3gjQdwSJso?WiG^fw!f(T2Va#BM%;R#Hyk4zmUF3K;QR#Y;h zfbgc+0B!JjHfMW^O|H=L;0R?kC67;xx3VBxp;Vk9O-bgkm~1UqkwDNvF8L9t6D}Gs z#33$;+aIG$*gW*#?F=`q-S3)j!I2o#H1HC$geX<91k*C0HAbkhfbmT*4c={#vWN~D zA23YNhd>U?H;}MX2E_;fDxn*Ts!WXeOyLmY0SsfjkaM%}{0A8i@}sZGmrhj$wj8>|_Xdwko^D!zoz)kZ(&aAC zhHg44k?3?1^5I{9MIiIA%V2q#j0IqpQb2mqqwxYbZ;2ZRF*@5}v5!Ojw4Wh_(}mJe zF_hLFiDsi)C^Nu)=t1;2dLI1+eS%3Gu!Bq%_M`*A0BQug5>^e~VF@wULhWx%?BE>U zvG;K>1Z+R79HxEHckqb7ihZmw0rnCIC%^{u!Yv@HD_|cA7^q#&jM15)7^0Xoj9X$= z52i^JiWtN(tYIPu;2Riq@B&U?hbKr$CvqnAj9tRh3qhMf69on{Y>BuYi4Ql&`CD-A z5%}TI%@&BEAecOy*<%hqGVHktKV@)ypztwX00zdt@}?QyG%Lz>W}_x0W5i^5JZZp= zL!2K1a~pmd&<5rLqCdVBZXt!f)J^e>!OIP-aWDfGu8M=7Kh-1zB`KIDY*+ye9QBP< zCWC%<_$@5COg_j5z=@7v@E;>D_A_~$hHh4u<>#ox*UDkvXaiT zWpdNu_lhmOXK!`p>$!=64jY3RsCNa%J848yxod1AhsW$EFGgo;%Y*saijbAuPw?Zp zJcCQb1%{HreOoxVbz@zt;@B78cZBhV*lw6v2tYp6n- zA1uFna1x4w$=M60OrM`Usix3K#?XIg} zS4Y=K96FC@w=!r$x^yjFd)dHFLyU#y{lH zI$a0pM#-c19`tqux(*zfK3QSdQlN{h?M2}Y+M}OQ{KNii>KteoK6>4$;(>ZUoMjoKR|dVju*9;x98=xm==uIPkn!kLlz6K~ zlh;!q(`sb}J$V|izZ9wk41qo3icEYG=bw$U`ZV$$Pfw5Ug~7@RE<4NYJ{>Ga&D zmiCJLS>?W=xybQ*uYZJ%*^Jl|4SGVz$XR`@Wp=%4;j=^h~R@ z#2QjEcq}Lx?GQ*3bwMcO&q>ZLP@pe|7&a9G6g zEFMD{vc~a|2QcVWz?ebsQtg2}MVsUHK+eF2;$DpVKJF@FgHwo|!j6CyV|iX>fLZWH zlnPm~bg>ljz&kyb*%hjz213{;auE9gdIT3Cppbw|v7`Xo9rinfmBk`BVrXd)!?2j4 z*x+yzj3{GbIkvWgCo;xlfDvMt1-@Y7FNSNP0X1PvXb(a{Vyxu`IRo$o#^G>p=!vhx zQB3N2jU*Xdm%aCDM0%mxX?qp$jk38 zy6}3#ZFjUa-MTXC@cofxtNrWt)VA-vt?KyR=}%u<_amD4Y-G`8^3mv%rPK4(xl;=f z5uY}y+%TcrLbHwU)|RZylb0_&*wuGvBp6X_y8PLNO^@{Yas|D2wifnQ@Di(*N2+d_ zl;w=f7wVZV)9JQZ3!8IVTM8jx64LWpGfaNJ$>j49-x-@4c-9V=(E1Bf&5YLMZQVTE zQn1v+b+`K6HkXi~-THN*JMhN({fN11OxluL544udPIJ}I=-j<#X+dPnG4d_)`@z9X z%?oF>oi@3cdclH7W(!YGu-QioTiQm;lpcfCUhCke^#*5tKptK27Lx9y<^1b=Nb{q; zcs}}#i3lCsjZe1$gEgWT~j-ui7jB8^;R2~A&@Dh z7BAmqC122lmd&c@zO`JSW*@MWraMEcyva`F|&uE;w@-sUYOOE zo!QP&5-j$;#m)KD12CEV(QO7lTkhbw^j2%n8d^j7qPtrhwu;0Fqgrf>i)_wlV@|lx z8!n$$(wbG1WwjP&!$)W3nBDE@{LmPS7B)95;HelM^RbQ@Smn>3 zEAt9!f9Y<-d$y;t-I6RE*(u!iQB-3~=P(iiE|yEB@g=4SAvD4uDelbm*N+c-5t13| zukFuhtdsK;Y=&SYVOjQWaEI7!Z!Q^i{O^ByntbSzTW=SpcjwBb>NK~~Dpsgb0ysXQ z8h=K9!`etjp2_1#@6M4))lj3X>ftntj{}K7x$>rpUlCDBs$s}FjgmmI^W|}gy zh$+(;H5!8#_WP`k>hUG(rZxBL;THok?irU>pRThcD{7mf$FjXGyR4DPl?T6>cL0f= z?|qWo{|z_3c3Gv>ph%LdO^P$*GvBU2_fYrLm&vIsj)eCV;DetH^z@GBAxNE2cgA^b(2)zM;fr2WmjS&U0`~WHp zu%b{ak1;JyBODV!LRi-lI|Q@}I1jhM2o|gz_zc|NVt5#z03u`o(u5Bf-ew0LN+ub^ zp7@)Xz6GEa&^ZgxEk=pJyJDGWOrJcO{@K{Si6V_7+Ndwdo$!3nrq$uVvo+#r}meY zTNZUmbgCMwuRJS~gSeyb9A7nI&nOO&U7M+q>WY(evLy$q3JOeCn=6IJSTZ8NHmFsa zf<;LQB3)`wDc6QNLi*RX<&WP#P1ZCgKbU9MvS|{Lq%gD6=g2QgwNxY%jZwZS6tB>x z;Afa^~sZ~SDiXV z6ARS|5~WrgFXQlR(j;A;GhWV0PzDsv&Rl4ow< zWu2lbOwUhMtJonkN6O{~$fKd^GJ&{j?U7M@qopjEIleJZx*bX0&rkBdOn$rDP*mCM zSEy|+!ID=tsN|((-t2UtU1}L&EAyl#x$3eTyY;1MvO^>`JY!N^*%QKro&G|(&LQB4IQ5el9<4myZgg722Gwc1*tO8JM4PBM%}!u( zIe7)9V2+x{%k>#dejz)aohYv6cPAN>y>6q~@maDyS)$QM;N!Duquc8!Ltpypy}qV2 zMM{asTkl)$wOCVAtrl*I>e<^DWecoaEG93 zsRCpJYQ+E?jLA)d(2l=^ohA0=&_N7~c_@O~NjJ!cKx2FvV*baz|K8I(TE?IL5$SjB zLi!(1k8j!W^n34*&A+9?B+MUQUOqlwXzEx^ZeI4v+~Ss7UYT9`R_k-mo!VHx`6~GY zgho7Zb#wj3Q_nqzZfPr>{p#wL;<+!AM<<{C4){CHoXv=P>F~&rhcA);+B}E+iTvfe zvy)M;x7=#gz(1?C+>1ucePwxT>8uN@+RLK1bRYZpr+@YALrGt*Ui~Hc&c2?1{q*s% zZem_p`>G4GN?Vt|G8c-Nw}T-5GCUwZ_>yLVb8{hB=Eg$zUmS7;2teL2{1zN5YYV>A8?nBmjv515f(2ru}ADugs>j=RJL!cC}V&_!w-YGWO2Pjn$R`3pJl zYaEK4#D@@hPCp4Wr44r)je9zKdpj@x>R>ljzC^@Q-AjjMCpaH&FH6cSdvw zxz0g-)pPJPCo@T~u>|7E<7UOJr5Fn;nRkd%R{$Lcv=}ozVupZ%97yU4@B_7v!B=FE z(9?#v2?~v3%ngAFP#GE20Kfp?ccA_7ZOoPlh!xHO1w#@V{0<`l7KLx^aE}x5bLc$Y*Q-pZWp%I9Eo6THY!HVZ;vQJE1Og?$)6#3-h-V-?*UOcO! z*lfEE7GeZ}+=X0-^a!;+Iay^Y52$poA@7D#w)5T@`B2M2q+gp^S)4cCG@-wLf@yqS zab@OO^3#JY4~>k?6s^m-`|h00h}o27%LC`gGnh)gNlO6R^H+XK$Bdw4?VZBgo zEMAz>yKrG|%EDr!TDYG4WOwT$W1fSw1;5-zyprvKPWh$1<|?j1E6%fJHGvrgAcWmd zfqrIOQCt<|V()=UZzu7R*)bUcYyeLX-hrCkY(j?B!qgP+c}%nL%MPRr7Lx@^4r)=Q zK=|-t4*CjF-(eJSoxQ{u19!yraAP!+dWY_q!K55lhvORH>@brF&@;$5;MBhqDIP>l z^p#T!*uu=Q8SZM;ZE^u`@s}v;+&Pr}<&p%U{5Dm!8v?PYH|&SN8-vARV4YA2eHnI*m-1lr%B9PA0EQ@>B_=3Q;&x)TPSs zt3>=6e<43Tc8vV=)fs#!5SXDFSr`e66jEU&(U{&5?5#@g2uvZ5wxg`>Y){aY*z`nZ zcEf!oPovVmtyu9l^6b+k_cdf^KGBru3VO1;vrv0l+SsHM9*;s zK!0QA*sT7h^s(8W8;wcRnwq918I1-*^k<_|X-rSyFd8yT+k%OP(KYFzru$1DM9J^Y zne#6B_JgJOH-*w`MjH}?ZKatF3{FZq@oo0l^rrr-v6+qiutoj^>%RlmKW0L^huW$* z#sGM*VK&gg#et19ObZ6k0Tu`w6gn2hBm=pOV$=W%s1?F13;Pc*rXUvAA*5WB2U&N# zo8b>HKeeiOQUA^L3>J3~k|^)v>&NttPsxF4CBE4g?f?a`g2&}aJ?DL*46#_xu40)X&H(X&y#wU+K~K!;m8ko)?t4XWk}LNnhj4rX**sa)QvJ zNS2Sy94jrbrd6vannq^V-PMf>(Am$vC#~eJ6ul`ND$aLiYQ%O`hL@qwg2Z4tWyrYy z7@ZHnCLX8L0|6(9?KPNEQcMQ#&}STzXa>X5Utmo|RDFe3&@T7Ex(Wv!Ktw{Q3X7$x zSO7x++!t=PZbBeDY%+@2|J!=7OduYHWFoxIBEYG{?;0A2=AxYlJr+flMRUJ=uY25k ze!d=S0KDtIzaCNo-gTQA!S4KUYNq?}S8LaOdB~NS zdiGbcZpg~W96HdU2i`)qKi6)7#LAzMwa5Vf1~#7D({b)hE=HWZ-80y-#MNo8{x%KR}LNikU<;b63hQ!Y^m5R)$0M}XAe6cF#A zm=VjU7;{96VLrT3C<$bUsEH}bD7G!$xyo$MjpBq3v32>>0ubSRczN@ z7ra8$l4H>Wi_o|Y5MXL96#a}*(?LQ2rl26;Tnb9C34y}?7>UO)KnzR7ys!fw_|l3DmkEH7AwPu=U)OaGzHo>}l;eG+ONQ(2}!2 z;S;V1Pi-omJJP5NfG2MwS(#&VNh~Q6zbOCNq)etY%@yy}E0s!-LSnak$!&XZihSH7 zj|PIufIF!@*}bGbBOQj&C+YQ2kkD1RvMCe_lz?3!Nx$UIn)xryqtQ}xQyVi3kU3Ok z%b3t$9KT|0waG5vzOaeK4Ox|`!c@Li;iiXJHHhUdq$|xvIwL)aZOKV0NU-~y*$y$! z;*eUnVu?aW6RS*Clxk8Xu{nH(Si@!sWm*MYU*s|>RBENlD1=}Tp@1iq8Fkhmgq2qn zikt#R!~9yVj7y)=RXMV{v&`I+H0A7u8jW1&5a+fpcx6%5=Cy@Q{w@1!r=3_}vZlCm z1BGqg>SUW;tqg0D%ILd%Cap(qOCsM4+l73+%bdmvvvmR;OCu3N?p;f}MP0kq)IC)>3_gPb5V5`mP%(}`q|(%$AXnl*NlG1(;K z@dQSNE;TO=>SHsArGV(}gZ-!mzC8z=q9YWV!-^v8upt$iab*esG5~ZTW)v_r5{3c* z=m4f6xfBo`ww;H-lmoN~^NILVj9orJBSDK;tLM~L+*8%Cpg6K@`q~x2<{TsH?|b(| zAnaK+Cg=NQ%l?)xm*x75->Sou4!*J1e4axfETLL6oXh$-{IdU!8{ro~Z3#b9IM zorRAF`68AW7aIe9Dugi%T%q(S(1ubz3^t;4CDg;ijbf<%cTcSt-vKueib;KtVg@)i zd{-8A2e1*t-JpUMJbKW2L%1&sa>BzqQ4>ve5O1f1^XJvf z-(b%|>3J!rh?iLwb*HV#8sT-CFWD}sGj%1)>Knf;oKQG%y2n!N>e@_f&KsNF*6lKv zrZz4k4;GFroY;r2jM_?6wpW^Srl@nQpcF{eHnZdc8K;d93rod1=Is0X67|v_Z23$B&EQBU**pKA_!nS8l6jvMzpK)@(~fMTfc+5^?{9tHac4j=nI?w^pc3Oh0bL5QJO ziYNgwz;XVR#}Gw8C`1nk9(Dl*2+%x)tBqZ!3&X+$bg-LZz5%d*0DDs?AB+$7K!_Hj zc6bOou3AQc4JIuydk969sEc^p-AFV*kt3=x%oHFpwizja8+K;A`5J6aysH6r}os*%$&X0H_!p!(oozBO~ z64aqry>)^tcB)RF8lNeQL|0@@d8}*XW0SMm_eLUnpI`p|%>3!E%^}JoSDzQvet^)5 zl_>7R8d2q2*Oo24_V)78wMDb0hBJL7MMVWNNuaq9Z6aq>jxTg1CYtnCgQ2>lWbTw; z_re$Zt5X8P3rqT11a9u~4|@z~T5sV`PpQ&Oz(p^~U=9yBHB^?1BN8|2dL z{_0N0u8&7XlOc~5d6kwrX7twj`mLkKOx+oY?2Jo@+XCRe74!*?xa_zwz{)O+TL%Rq zUx>Sc7~p!Xjf;aa0iaY4i9pBzzbGA~xL}$M1Z4iFVyEF+Fa%%$;6H@3@F{!=90}z^ z4?u{W0*AX@$1)UAKuW0*Za^uv?+xS6;CKjr8I-3Xz8eNrjA!8s*f2P-21p8II|P#l zAVkbaVHRs>KS4{%-~rzQ@)88B3gvx61@*(~rCfP3MQ!J0yGPk6%)KNb)B z{&9^c!QUG!c?;!yjGEEDa>zvIwF-o4^6C%Hdg1Nl=^crDwnEGCE%%G2yu&LDNRl%W zn>j9Pe!Ws>nn3&vUf}nOS@BR^gcZ-=BI~e_m_e@|lJBb%<#1ATT5o(#V#E6tvwYsF z{{AYjZ`NU7y)Y-(IXURi_%&#-rjBI&Zp~jxjAr2=A(^r;FREgB&iejxm%t52b!y>)Vqep$f z#Y`+K89kva-IxF%310B zkB{o}wNit?B9g0Sy6M3&Mdf+K^M9KyX?);R8)`xo+sLQMU&s9U5c!l?+-+16wo0ei zRio$gMM63;s?ZYB0tNZH z&+ZKPY|bG1TgYkiha5@1I4%uxvav)!K?HGT$SvZ8%ug}ZXB8+udnsWCt9*hXBi;cl zCKYBykqWz!A`$?IR?ui7!0K`&g`h$tv<5;(F`QGO1^~Gjf~id~m}H2OaF{R_fGn0? z@bwrrXGl(cFE0vZ(PUYnBH8z+?>)~jXbsw^PGi&>80X0-t$yI8$ZW#?4VjFSFgyr} zTOtGB=Y@;p-=8}Dy$rfWTR-drhe4d_t8{N&%3?7?~+Fs_vDQ5w|l+q z{t-Dniz7Xqq71z%Q>n~U=`%!~J$FVTNJ7_KyTnB+F5PuEq|yJByyE(1`~cL>xOR#5 zfv=6~M~%|vi>NYU-D1OJ%#S1r1c~?!N-9_X8V{z`i6DGipv0jI9&83MY4wmHG!Bxd z*x?Tzjy#@#{AG}|4Ey#1;{@11N3iVibUP$ew&PsA&E-Up~$5dYP zl8TD8lawJ7TSXiuOQOwHlTG9_jx7=ljVp!Q*y;j-?lO)BDbf4nm*ggN%YBdr`GMo> zj`Pw&t-6{@NLz6+`WM5f3StW?kMT?~m?`xVid^->z zrjUZVLnG%sGo!Ma*{_f;B`@&J2?+!bWjR9xL6eY2>+5JgbzYdV@w1g}odZPe`HAa3 zT}iw}bfaGys-~WsH{y8hzy-f&(F&BsrzIqq_~fI`F;>2guh4;oWyq7SEp9TTTly+4 z8v6xQ7zZXZfYqt}6x%~X#{dY||ETQ(*d2cp!|||Hut*ZSfT;=Q-{?5&bBwV9r~znz zMm})+rAQCv!>9*DHN|@k{|&Kyc+bM{H;5E<^VsQNcT8lc$;O5m8X-2$(8kA8p^m{# z3Pu~8EWV44-Z}2$k*4?_BW zb#F(zkwMUC47ypR@Jfp(G`o{VwpP8p)!F38>}*U;)1|hI`6#-CuTf`Rt7#oETy z{6$W8nLJSsDM;&U{hRjH%57dny4f=+$ul94G11q&V~*8mX4BPjK{&MJPd*cHdUPV5 z&w_Fn|KcH@xpz&KNGTPT%xcr{AWaN}Cu^O0l|yXtrD}pUWyqd(BI2rb`kJjH?#dZ4 zl1pc?c~1A3wVAa|EGUP^hSDD%mpBH$(yocw3(Hc*gg29a?Ok@V>j$Y=C^zVt ze4#nfsodXoWPbNwzF3w%J~eM~P9R&QtlPSO(y03z%2pJLol0|duH9)9h(sK&sE032 z-F3FZ-7GUg0?P`At2aBTJVzpT8Kf1{Yvlo{>fkOjqhjt1$ti!*aCmz@nE1)YoP6kiGJO7$OBa_ z&986HX5Eq9T%Z3-Fq_zDDvxgS6D{bW;~!1hF}rHE%|5$w_Kry(U0cQ4S!mb%GC`9> z7wkOSIHjR{p3OSHtZ_=?!}Qytn@q&U=p9<3#ou0^&tPXYHDz7>CBI(nrwJQ35w@)8 zH_`g_m!9pKx2qsGw_w-2u4gZi8w(k1wauo!`b#0IT=ew5>gK5(?QJ8bHdpU^nxqkb zZyfj=t+JYsW&w)-5Y&K`Ks{w~Szs}#rI33YR1T%=supbG5`oDd%1N`pS%Gpcvx5i) z_A0`LaeK^XmU>Rm3>+bF#yvXrC4&bugx_Rhni+|Wc7Mo>klAXqn;Cw1Ne+{5eztV= z-|u?nUSjFJ&+Pr%>ZPBNZyp9U_=WzZmv+ot`Rcs(y|2%m`}*GYd9SUQx&5z8`!68g z9qT?{bIa%J*Il}0&F9724xwe+$-n&bxO*n*Mp=i*jVS2;0F@n|G?P5K^b&F&If{Ij zv%a}<<(sU_#gj3?L&e{{bAI;C&vu6)5^HYJDe;A$}6SA8n09c9Q zq;U#R;OIb`kput+T2`x(5l>^#7zhfQ0azic*a*eVkX_8MTg7k@j;#!+yD7QWj+Uak zXnb@RT6*;t^7ZI`qF@E7r3+9fx;1J>&pm<;A`LnA86unfbPR1>biZdAIkp&Gd57E^ zg>unv)AkeNNiDie{`d%alzxpU|KNk@L)ZRFJctAjqBqZ9J3+jUo_ge?s2l-X$wQN` z?V~+S{(Ta9X-vjEM0@m6G8%mcC7z#$c76murV@VIhw#(H5TKs|RKFfTVitJBY=SyH z2cfKS9E9it>ZUL{^$zS&97x&#E?9sCNTFK|00Y>hf`I}O_gt4WVj3GW&;z`A0x|Id z`qPFr0lEN!F(wX>+6|LP7XHBHYKDdp|CgI#sU!ph2*?#RPdo|M;1-QzNN~parY#*E zJAA$!9UWVm$kzwz$ydn_Zbe)$o^o#mS>aX0xw_=bJNH~(a_z1Tk57|XDa}Z1MDw+I zdV^3ev}*zt3H*#L)ey#!8W5%PONcQeGx!M=0gW9l8}xZnR|!8|6i79D(w>ivop6#G z`$O`T8)KuHp~l1vX=SFy=NUK;E}xvuJ?(e7+;_J3Y)0`!_s?kQ!Oq)SS{oW#TW;$- zNG`n=*|7B*8uQ2_!ZqV$Q>yhLeM zAX%sr=`&i;?tGgwP3-iMsc9`4dXY|;9LSO;^3)=qQsOhAJA6)Yn$wmaHT;)5f5%UyL-X5zD?vIKqNzjAA)fOpu$@Rka8^UnYbv52UwvEYBL~zCjbk? ze}Dm@s^Ar&_~=F^?1DI)G<@`GS2IGZ->pD#ReMfu3Jd1WNbjE0Ge*x7V$-6y9 zHj^!4w{OS}r;Z6AB9FGJV`Z7m#^qMctW%T<{CRY%wSQdQ3?Y<=fRvcL%=T(qRl{R5 zbw-(y8;`iMJs@EP&1L$w3~!JDju`@PwoaYteeFdaLZxNQ2rDaNG2+Y*);<41lWS5i z-0PI-YF*hYG7f(%E_(F2){@ETpAmCn-6KqUz(Rg)w{f^tGvM};aFAxTE$oWS5JDYN z2Hd`NPI^_txtWQ2fy|J=<|^-)y7B|a$)|%8zM(1ysPiOSHW>|HpVwK!$ z4vhAP7gkoa7;H_h=JBPAs!&VelvHiH7G-6JQ@ruQ_=b^WQti5y+8NVpbs1_2Ja9?f z%CK0OIb(YE=!LzbO-)TERjORkzNJU?^*N@gGuO8;XYm%ItUe>T)RNPt@ysm+99jZ6 z^fL;F8bEf+h%19cC!;_lT>xGrw^7N6<9-8&Qm6|63xhfUK1P8QhWs~t=L1wbgj{d( zo;D8a6Z84QKnjD=Zbq2DJHT&Z%%kMXtvg4L-0$-p=o-DVm3(=iwqvU%5| zBEQvJllAag4~Y$5*@3vnkE4X`fcHKk5q-tw?YCcE2@0<71{)EiKG~{=*8`P{%)#)Y z^69cn-IhG)`to+fJAUj&*Ogyx-+p-obUixQW8gGI@Qb$gwH^qE?rH7YibNn=a?rNp zW1t3leSK%g?lH&7-ho>iidFvXI!jt6q6dt&P{3#nM?b%B_vfhV`RB-emv-M5SvdCs z%KY<#Og@Xd zT^wqTp86I|xUK)T1>?srfDdvf=pw)yAs%}pu;Ns}5!gWG=K~u@5r9DiOs!G()rQ>FN-b?_>9>jx=pH3VhyK}a(r6Q;h{bq;@p zvx7(_*eDwEQ2{>^#^AlI|3f=D;Mx$NRy=ju;IaLG=)(XeiG{>W3QI%KQ!MlWOkNn@ zr`ZS5J`<}JVY8fJuRc2KVFjXU~LMOw|M znlUBjHnmL0b%b=TysWWWrFNm0q)WvXhE!HFs-$ETdHGU7syBa~m;7GNpz9P+YL2B- zndw5l4n31<=qgM$xkH&v8b>t8s8SilJf0YQWDH_HkEd3v(PS8r{PH)hoY&JC3aDbb zIBO<&1u^Ub=~KVaiWCLV>*y~5a_mn=9Zy6zYP4uWmeY|nZ~_!z{8T@mZ?O3~&76b` zFH%Gg&-jWJ{A$Lv=OXlpN%ve)+>?ZY?GI0`s+dT+h|=iU2=OKPs96Jyu7;*lvQ23; zC~1&GC-8_@72X<$NiJibG8ed9g{D(%xy+ng<5d|GPU%ftj#+;y!Kk9WzB}8QoK0|o zdPjP}G!z;bS5h#R&bH>bi#n&AB99VBfGh5dHYF<3JJj&RvQy-V6@)SR@h@tVMy)a$ zZf|OO&jweVG6i|hm!+ddmwah|!dsBP;FDOEo!mVPd>Q!-5L(i3)$U#8jWD zOe8c0s1GW}Pf3)>0|!`@6`rt~R70FIjQh{uym~MAx*HT~6WN95fI1j*MKVLCYxvE^ z-Ym3-9GiuvlDk=aFj>bZCX%xd*O`^&gw)Tw6auLK0Hr$x9C~6RTfpPVpgaK$be`H7 zD4BeFMvde3*Bv!z)78dRQt7J3t9@e8Vligjl$c7}_ zOUAYq%F?VOipuX;26no`fXx;IHj{%u;Eu}!6(CN@y#z?v9bm1+;sD+V7=y$@H1YO< z7;mg11fB^OO0T+5X3-3H|AS>KR$XASaG3@Y~Rs$PAGamM;B z&!lE7?K6~`=d8Vj(YpCWm)Hh{VmwnX9_VK3IW^N3Wt44SIf6%i^(9(}s`f5>enwVL zSy@lkjOUl_B~Owo$q!OC-H~U_+Pun@n!0ZH&KzsTmfKdkX-f&M$UCZ5%H{}odbXxF zED#LzzX}CXQ#MS#r|Zs5o9^toXYvN}HS!+X-)WCZrc+_O^xS5xTpq z`O36>_sZM0WLR@{?q0Vy&$ViEmNoB=O^iU@rrsPH5n)y=KQbEix|_?~&>_^;n;A#H zzW7`aZXMvC035v-iSc5KqyiKN@%>opgEgRuWB&&|a|Ce+t_`A3$cw&yN*$-UqxI8=CC5tj;{79H?=V*cZ?avu_D434FOI4hQNWAh)b z(GVfeVD*(j)er`D)}R+JkR_@I_J~4X%thg%zSu3^LDQEkEY1%`pLs>s|-P)Y$li0=cpXgh8dB+~Ijd&)1&20xq z*DNSWGB@_sZERmgp4t8~GEeJST{gQUGcv8cZqu?kpcfn3+Dcg2LePixLRz3jP%Z-& z54$H1N>TU&%VwfDG0nz=l4)SWV^WcTa#Cel6NZ<=OBzo%2#qZzS*?ISb33qpP-uwRIH_055pg|xf7jek1%Q~bEnw0LA zw-=LF6OpuNgv?Es(HzotvcVve8w_%pfrvtFOv9M_=S!GMiH@y0e|0+q(0`5&KC$h) z4U?Z)z51ES8@}821lb0Po~2WId(ofmcyjPk#Uu9VK!MmyBocaMVfey}nK>dS!6Ph! zG9T>Ve*yaTQ|Q|XE4+eQTUZFuFocb@d*Jbo0iF_@sddL%9clrwL_D}HB!F?T!}_ph z7-`F6((|wpF$iE0_&?gh5{jWdfakr9SMKh6a(k+G`;*h|zOwN>(gO;-R+M&NdFAcX zC6ej4S1vz*0_68oM;@Fq@!9nB^An~V962@Ru1$T9&mQsUX0>|rBb~D!@7r`2c~mG~ z`RV$mBim9^w;pNQ@X1QCkngt7du!u@SGH)iTV7eP;q7^LH!M_`prgkw97BRV)$@yr z=2!0_|9yFXY;Xl1QA7MD&1H{Ha3M2;YTpgkrTP?Ogff4eF?&sy-yD%!c1E>ERe%cs$9R8n+4CMbFreQ3NM7Kp=h@6c4#$(C; z1CNCf0*P+u_1pMAG<13BGk|sCzlY_~hrw%`IrM?x)dK>?&%vu1LE6A?KagnfYH^U+ z8NB*o8{@U$!1f^R!{ERhL0S_j8u#Cx%7qNNV(h?)4Eo%7{LZL42D*`lg`g1YlGd0we|4&{N?&rUk;qPyW5?{iV3S#|=P` zjRYA$0T8A#r%y!vU>DeccAx|31bP&brn~_r@NdyC1f38N8X}2EBl3tUqLmm&^bre* zHN>sNUg9WmhIoc}mH2?T{2Nr9GSb9Bm`V)OgZMmThoun2kbVJ>#qWJToK*jz<6-yu zL+yvn;s3Sv;@^f~+VCm=k)QiV+6*7_4;=rI<%%V700NJ-CciW0?~N0Sh^HvhO{&S^ z?SJq1rhEO)Z~xuC!`k1}X4v=tjxA1oIq$A3e*%_pGx+OCgj#JUq(K*p)M{cLK7iMG zaNiTd#poKbMuQK~(;|&V1XrSGp`8eSb5yKU;!bGaV5e(eNz`fy^hBTI1AOTmzJ$kl zc(4sEh)0GOIU0`)gGLWhZJ_a4n28WK-aFVB5(Er(e*_oJ1d_?ghObqAtO~ zgZKc3`2T484)`dG^#9CTxA&4QX}j5Mdf(lU1}P*E0@;M#A%rR|APUl@_o`qQ&Mtx# z>)8c6SkCV0*%i-I&r?$N_5YoBcLTP&-|zRiKV*03ophZ6D@_s}K*Oi!=eHn*F+F4rIqi?-yb(d{+@MC5N2IzG}Axfqv=Eu?I z0VBs~*Wt~6`Gw21fW83q$7xPl+1F&?=)fIvgPcw#CDuz<$Ff`%%R)Y;un^f6dvU8= zAGiB=2>)T}n_FadofwgY_JZ?NJPhZ_C6ZVL2igcVJ`e_US@h6O3zPy>3*jMznAx1ojGM3iqsLWeb3#0 zw9=8w;w5oRJhimww{<%Q|6HGtYvMV2pZT9bc`lyeTz9e+@wk)m!0(mcm-AeqNROHI zi{9@`^+x>NIiSfBbXUJ5h0taUhLFxO* z+wfm+w|lSgz8C&kRE6Bq!m}S2^2vogYYO>?3%frpASG6>75eJYk5$%n|81DQKmXkyJ^ve6P?RUJ4|`rX9{0cb^;x}v z=CQ{z4;aVoQku<|1WLL=xeJZA-g?`Y4IJdPPiL230NE$7} z3FKPXlivbs$a`>Geg%x99ZI+n2GZ_;P1*Y(f%NBuC*-}&?@>=5t~t&45GvRGJHPZ@ z{6o{2W1qgXzdwiQ>v*>KFU@ZJb@pGSi{^_K6NkYf&mU9k-isH#IlFg1sh9e1A?4T! zwjGo_q`vp^l~1mGYUSH2d#Xu2L+UknGkld)gmedgf6_?4SdOPw_Jom|<|4zZq?G`+ zaby>Oy|c3SrEabKBJwhx{z?8VjbDq&@O?PU=0eI`7Y;{2Oz4M(X&ikgeHZ<36|pel zA|D}*9={N~`~3q=95eLgj6>;z0EluafFPF=DMe`;HFCI9e>Nwe5 zYS6n~d7f1BYrJEmbmU*;CM*r^pfhgb8P#Lk<)eE&Q4XbRTx0-=ra%dF{zd97I#gny3QZnZ{EyvX_8oOIeEe1?4%x(R{6hNcrZHEx4_Mlf zlG<^}fN58Z*)09_Gmu5&z6&Sc90(qsyks9SG6!vij_;(6?UkBcXGrm#S4m%fu-k0C zkgWgSS!iwK73|BT?t=@RnfL#+W!0xgv-|y3njwA4i6kO@|Br#ohBj`<$k@<0bm_qF zr5`_jdG6@uRq4J}Lq^Sq0iok0n{b!RfMnwEP-uAm`0Hk@f`y#7#(zf^9bS5H^#u!- zA6$A^+Qt3MGDoi6{nG=pnc{JOdS|WS<{KHdds@*I5Hwuz(e2XN1563CgCrc44oga$ zGVXevRO||`Y#dx!Ie5^D@E+;uCHE4`vhfRMjU3z2Id+-!_XOs=Q*4;0^aW{0#%{=> z94c-COtL`I`4ZK0KQan!Z9*9mXbPn}xNjQ@nN z#IR}gL({h}Tef}rL#sDQ-%62Bq?UM!uI#$@1Z`gh^pLg9gnq@KgfWm-UWtSB%W)HZ zJmE25N%Z`io_@nr8Z_f%(L8$kjSH&yH8mbZ5l7_l+X*@&kr65>eaGfhS1A5o)>xCT zI4D$K^jZT{#1<2;qS>Q3f}zS)o!EE{FD^XXPl?V$Mm7-={=0H z(L;MGlat-Dp|y2G%fiFWS6|(Hxaa*c-OzXIL#>(&w^IJN?>xK7%CjOHtwT3I=@Y|Pprvt|uh%c*lhY2F2S5x)TjLQMwy)P{z3TQqEIZ)li$ z+_NxmRc?@Ni)9!iXO}#~)&cZz$8mwFzow zA(X@(h%E(l$1pu%Hn@xLAfF0hBT7~<5R`7mDK@?7q$C65MP>Zsm!EWV7R3^qEf^9Y zo*1(F0+6Mkc!P@>JM?!TJVa3fSE9fIdTA*Tq@e1-@@PY>A)0_DD zioS{_q!F>Szln%q4q(uFd7}`b&`>)nvqe`PU=)2#QBq{(w^3X7b{dWb<(5WI1=%$g zOT&bQ*$@3|`}Ti5G#f#vc%<0zJK=`6R;+mI1_T!TRF509jQ%eC~R84 z^PZ*aKe~1DzfK2QiP1MqA~k+-!Nz7h;&S@ zOS9Tj>Lx!>nORv=IiXT|ud1{=dsrRm7s!y#*gPH^v1SDNk-A~o-KAAza^=iQbxy7# z(W0~QMgH7e-lnr8DspmtQ#RxjxYeosyovp@Y6tA8$tztSn%|JqSdbdLqHODs{$*DL zQwth%8s>-Am*&;%8Bm*Do#^eCs&*ITY?#uvp{Re*l#*eySLBe={I<6IQj$|)xA~Jz z!Tz(ZXI`rw@5{_D%2`yCUa%%-+_;=I2EJxdPEmfQZ#*O(bYO*?!2cAmLX)v8mPuqB zA%Pkkmc)=u_bA@UdcBku#daNicZgBzWb&OOeNER!<{T6{J3zbyAq_|u(+TN=Dc?Fo z(UrIC{r-_!t=4F;dQwLc>q8F_>&R4()d1ggb&q`4`%eRGW7IzK{ocLbJyNIBM3YHp z9(qVRgJjY{M@m|7*MS4Of{@O#mby1SK4ZpXo7|=1rr5*d8{MT=nrP?2gFBIkTQ}pe zjjmFwGu0E^dEmg#peNO7Ep=^pd`5Sc9NPF8AjDJby8QB8K@YhQ#ipf>B9@0ArnO6x zYghZocl)Ask5+KscaPM{6--MVDV>2-{@0`AlnDa42Z}XI(BnQx{x)NYS}yy>g3khw z6WMzXdY#gV5a@v1adZ;n=m+Kq5KC`(K@(!aikQ8!0Anl;U5psn(Tb9h z_=upl?G&_*@%eclYY(wJY-EUjyBM-_tM^O2&n#GQf^e5Ddw*DJmOE(8ayqkz_4m1~ z{YEZ4A$3Q_Sv|Zm+oAW^la2l&HIqgJs|nV;Gd)l&gC_uPSaDWWN^w@T#^lszwuVMt zFko{MC%APMB{y+=%i`*S!7b7QgQWpv_2{!d){^EUXMHP{ai7FSfk+`ZZc0TYB+tC%Wc=1 zQ*6HRL*TS^XjW6fxKxvkRRo5Y^sjd4>ymhlR_D@i11!eUF@s9mhvuJsivJ4gO^Pp|5T=BhOA4;xWvv`L>$9_d0{t92@!6pVW|xC_goCFK zrST3%Yx;nkbg)XYRI1f71qx|1`9yOZ`vR48k|7r`(hGXh#*Qmx^Db|AxU~1R8yd;0 zK{lab$mp^N8QSzp8F?v9Ri!PH-~zCJ0-FF6&dO$BiW%z56_}YUF+*R-N2sC@>mxjG z_K9Ym^&v=O2*ja@kM%*HA;gD#J|s8$*br+M?SB62*Cfl3$lc^Fi7-CN$F7)5N|+g6 zk>%1JvQAofHuC&c%gDPgVZ#VZa?)cjMS7&JNxePfI>|yFmaZq?)R4ROwEuOW^um)c z%b5Hxa(~?clCbmf5BBaE{b!v0t(1BQ%u=o;TSc~iw_i!iP0|lR z|MEG|An~Ig2>QW-eyD<7s>!fexfBh%)+`_;{xJ3Eys<^^N2v!ZEW?;a z)D@^KdLh51&_v(Hm#?o4UUd14(OtxQ+3uennziKBp2AHh=MR{(dUe1ss-$7g6SrXQ`qYIw-fc=gUfF3Z_FU%O8F_O`2~d$xBT#zJ!Un`OJo&1R0X z+bR$DHwY?qGIMg?(W&7Bmp2!W368t|jpgf4F6f=N==8QpPd|3s#_XlSh8?&zww7IX&}|2TAw{K)#cPNM)%YrAM^Z)8+LxSslIaBQ`4qg zJBhJ+E3|x~8Gev7^?p^V&cG(H%v>;Jk6^I%(2*{t15Ec`Cg@zsT830Jn6kz)+k?T7 z86|Am=yF4dyp(Xf<+OC_=G|+_0dipN?wh4kPh5KHVw=fmf9nP~M)W*Hw0kzMkd8=4 zR&3sbbIT()kh~XOG4Ym{S*h!SfkC3U) zFv*dRo{_FQa$NdpCyt-t-bfjBZ%8Zn;m6)Z1s(*`xS4?kE{-BA(B%?b&e z(*9TG+03lz$L3ENkySf*%(j+6&E$s#$LG#HzF_R$QKR;bC4-l|c;)Epwq{;^-?Y2F zV66=mPjoIlaZ&50Hr&D4B15=yUz@paV$S$Gt zfrXv-FBHPU_`T!D?H?~lC&KL5t6se58loQ3Fj9Kyu8m*bH3K|BT(v$6Tv&^2?CN3} z_0wfMk-tjevxN}p>W4ENVHkI6YjZ$pCKv=rzfb@51+xv}M=GQoqX6_BQ?3n!Xr>ZI^r>dGUoFAE8O(UzMBOUksv~TYd#rZkApUC7@+>Xb$RxVgq zqgQ!$UScbA`uBB~Ke=?@Pxo~YQq(rR#FffvH5x6K>MEJuRzyw%d>_=MGDJXK`n$2` zN%PLblst&L9jb>)@!!eF%qRL0y@wu)(i6-G+F6)qm{pWt!d#+LL`AoDu$z-6TZoc{ zANx*|;_8K%P{ndGm%1S5)H_E)idoR=zc= zW!K}M^5y9F+6(Vr zF!G88_95<#_xE0Eaj_gXpuDOu1d{;7q$loe_c@!4+ZTtMH5tLR(vgCT-ni*rG9O}? znIEjm@;q2j(p)#Js=NZS;Vfg*xzdt6Mz{8Mt9$8Rq|c;>q?>QubG##?YKE0BpJV{sqOL?m*4;W(pM+^X^v{-`lf=`VprX)O7eZlRdvaZ z%-W=j9}ARb-T)J48TwR1*`;O7pU1YPme)8f`oV>n_2ppHa=}aYVzH=9ScF>ux>(36 zq}a4zLg*lvEI-OrvJ_r~bE)1ZM$;Z!LpUzMDQ`{aCLAgVA};_Lz^2qD&GGq<#QEn`*;*(^Q%LffsxwQSU)vi3VZk|gPepA#00oR#WosyVP^4M`yx z#PQDuXHR{yS8vTS91{&1>7~Mci6@oZDkYXaBS}{ZYSj;C!|-`?R$RKaTp=u zRSJ^G6{n}B{H#$c5Vlyn#o|I%aoSmuD?Mq`9MWamo%xDkyit14lRimDN(UGQvnmCD zRaz}6H44u<#S0h>CrCe7oxY?lQPhw`*5d6}!tTgrKVPWWCvZ?P@Z(aKlE(yIrfu?8 z(v+SCKZ028I7<6|=>Q978aRZfhq?hnLRu;(&*Ui4j4r`48$oxaah5`0{!~zqQy09b z?Jcqwr=ds4tCxNwJ@|}aglF(yZ8B-AsF=27Z=IuZfcrZ#?`3JCv;?-w_dZ!SGuTq) zBA?_`ROIAVRFJE(D=V{eD=W8OayZ>nUYvE&V+TJVHAkdX($)KZxO)o2t-6$Lsm!6t zb1EYVmZd8=frX{(Bcz6mJSctg?E1qqva80HWp*-;#goN2_oiz=lnan;sseHCv5(AH$mmOFhCjxIM7to$d_-plCPQC${30IPPfUhjh<1LT zaYafaMfxRAEc%TOrm1W;zW%}o%G6f%BNyiv220WxKD?;8ZrRmq77nc4^1+4_|Dp-@ z*?UKi2w%|iUexE)I9R31Nx_FqX?zweWay@fk)swrywEv&h-v)? zTPC-T95?5&!1yggGNHs9_v{pwi$jsOM~iD)6s{|Zmic~FS@nU{={HXpHM(ue;)fQv zM)a@98Fye}5!^kj2(Oq}UdAvRE=|xS{D6_5{tW3g(rnyNu9f|?M(wt_AgWPB=-y4n z&FESag#Nj_mdjKKg9F7VC^bdJ=&|LH7bkg~q8l37ng&LdVmH1s{8&%0$qQj$C*mSF zWT*e(sPMdDJ0H7C{ve(*4N$#`4i&!XVJ7sbD9;dO9OaRfHL0i zwX3HX>?vx;)XcO*t0&XkZ*6B|VYtYelQjQ<`L;r%wsLTPgCba$oKzoB8u|~e)EW!y zc$JiEDQqol>|EQ=oawP9re#ibs8g9+e_cw1yN4tj9=(TM6?;Sel6v?2L(>Lab!ee< z-93*QNb)^WWcEmoFK_9$ZEsCr+ortaP>v?A-Ck6m4t@D6H;)*Ql{H|*<|`WsNv|)m zx94ecLdkiXwgqbTZtK@l&T}JYH!T}9Xjv1v=;Etd-^}0EdY~opk3Z)vy6B=sd4FC* zev~@`ok6&GDE@mcrq>%9JENdr#@Nupk%HD}FW9jC!lcB}9Z+A*_bFUWbvk#Rn`83# z?(6V|l9NN;j(vOc84i)Ux+a&xmv3{8n>IQz>B8+B3hYL$FmfUD_HRoew-IIXqm{!l zA4V_*Iy+e6B z8Mi{gTrB={;T1G6Ll8TVL@Yz+nYEqq(n*FAMXN^d zItqKe_Jl1)%cgnKH!wN!RcArI^ehg*^WA03Tcq2P zoesChOM0DNt0yx zOZQ-9zcFVUW#m1@%HEUe8`SYDN)Rh)5J{5$R#bqg8v=nk#jWY04Gq)}UpDyvDF z64}=6zWIEq!uk$C`yt{J3e_!i7)bdqILouwz#okq6z2BcPc$0$K;L53ux9 z$q?p2=$Qbem-J93x-FucZ+dA)nQ?5AZ8D9M+4?9E0`rcAGR6@`^S~4W=pfx&0}4IU z#=zoG0qTk|SYQ&Pna}MOa10pbM&xh05XN@;6mR63@CK<~%3SdosXsY!eB+vF{nTS8 zsb+5btJE%)&eggMbG6Qi6D}XKbj9%gO|@bBlp*UEkJvg^xrEowZW_>3)l}VFw;>3; zxa8%zPhM&+Z1bf{KYqXH%!18NOeaT~qzg0--7Hn&?!@G=?Zsm~L0f zp5s%fhYlVxZGd%GX9>y3|M>jJ&sQ`lW}ZFBi_cmE5k_@tQ`RQRC+fx~j~~kS+4e0XEI~gr^MFQ-eE} ztk|tvwp8eUy(5{Iz9?DSx#W8LHEh~vDsX{CO*F5@U*lge|JDSSg#w$%RwZjQQy#28bkXZ`RXpEvPYn1zedw$mIqldpebNd5hKYif(36G8*I`Fclt#^$& z{lvh!`ugjK)YeKzA{>q(^Fkwea-wX*UCW;M$o}XfLa?wWBTp#}4J^O$;(H_MQV(OW zPN}XLv9;=G&+eX`$R!tKFh&#AsR`J zH!iNLTihr-GH7va-J(HV^}-`f)220b)#H1gV&>W1!sf2K1#8!t*LkzrWEQ+iUutS@ zl5ZefX{q%ZIEQo?;NaS6)i||Ax8CklDQtQ@B>D@Jll;o$B)885-Ec>;T4B=Yow_u; zElF+Bo8S{nXLTt=i#o+Q4&`&j(eisqxbzjc~rDQmQp}5O1YYZBTiXT9r!U)T@mq6>d?rHWkjQ%+>;2 zYb^b_R(Yoo#2tf(Rg_BFMHSdE(I9*TGp9IWq$mUenr4MHRM_#i+0$^N9h-z~3FxK0 z1g}FSYvkXkCnD~gnWw^Uj7IsnT`Y!y03nB<8GB&FvPG4k}^>dA*PTU_3x0T~7PWkr>P2bPs( zmD{uI`5u36aY6r~4b>n2SNe4ENX`ducBy&(oFYeZU3tY&#mEs{dSbrak&~XDV@n!b zU)8D{6&d?~@8xEg#+d*cNgdFRORxjS%s?fAPaH`DF(d`o=J&!-4-QL9LkL7kgBT?q zKvZfJ#$rc+4g_Tm%+w*-Ih+Lo2hv2unfq|o8pqi*inPz>u^W1qlR4*OY~+0z@krvZ z3k;!Rf*V;w=Wu_$J6Je3y{>?^f3om*wQSo9=CB=zW4Ba1@z=&}(|vWHvOo z;^-TB?;J`~RDQRC4E+rvUNo;GlT+wKIN{6Wrgvr}<=P!Bjd_AbQ0NtT1BaDo`LZJd zI(%&$tEER)H+(J}>iO-Y_zg}|byg~GI}sAM|A8Jvml1Td>`+*y!_m&B*i5^bGC^3W z|63UC%`ITqk^OWE-MGQ|HHmqKOm|+9R@}6LcRKzt^1p)4rwi<@1!}vxh;^1Y2aifm z%CRH{^BhHvQinCC+{xAcZ^(rv0eq`$3zEfAO&GFh+aZT`8V7(=$vUWPzJtXYB+^XT z%V5x-LHSLrQ*>ht)CGQ0(*`#B4zvOLeZOF*>lG`Xzyv7*%X-}+J>#JV2sDP+@QaCo z?L5*(ZR5r^>DaYXXh`(S9~@JJAXE-pw@86|Q8@{%2SQ-0Vu@kDE+oH^pTTY60Kw!V zI+mK>B_X-yep>wi3h-0$A{vfwiqHTcgG}Y<5-eM6lo#WS5X7O7@*HSdJrqSF&JoP$ zI!=$5o+PmM1-A6)b2ak?R#gzo9H#t;Bt`@TdaM?r6{T$i0~vqB%{w}e?QYU5?HL9$(HZhwo*Jh^u=z+> z(6&A5Da%<|0-9fAVjWqYb z+?GA{sg1Wz)dthDokVnG_{T5pI#62Fw12sGOWUCSzBIMgp6RQ*?$j3M;KE}=W*qud zy6e>H_rKT^`G5&*I(@V)f5KB=ToyUF{MfpXJ7Bk2*kHEN$W&xid8%Cn4nujK$ICxH zE^@M%X&fTGL44A?%;o|{YcQwljiOSma5-y|GLn1-Wj;~p^d6l~RBDu|uG%zTQhM6; zO)13d&d;!y&8~M<&&o|qwB;K=HYPhEe3jg?0rDexOGdzQRABZvw-@F@!()>)kVdl^ zeJWTo)FpY6Q;J~kx!9cv5!93u_ak+bRRZhx}9^RnsLkwK)? zo?(Wk`aE+@zSgeOrVJAYc+EqKuDnUj8TCA`-*|yOXsrF)qPmeI$(Zp4Oj1?B0K3YT zXV5mb*!Ai4I&FHs%8;xdsB#-TMrGoF!f>c@p;nd3iL2N5(;2J6h7n<%zC2(bFkPea z0IRl`NF9+9?yj5hKT8@OtNdsPE3x}l-D%{C5NY^wm($tPPIwBPJdyly=g7^ zJ}GE$jBGOv3Z{(DErbKuNjI-fjXWeBO_?-^+|~U0Wzq|eO1JfAS{{j945cb zAM`R;kZ{TP=`|{~+V3_w)XC-~t+}5TcL`1 zdHe0RA9{P`G)tz1H~THq*1q}Rn{U1;J$lP~>u&$cZBG+%d&`!mPv3N_)IIarH>D#p z8ibQHV^?|O4EFw4>PFU+o8QkJS5Po6_kC$>{m8oBId5D`>Sjtek!Pi^$Um5ijgkE@ zhms}L64N!XZuCupihPPaa~(E-)O<)SY*CDd4X%q}LGXCON%>kJ1LQb^K?^BWjmo=6 zc});MD^`x^wou2i^!6%1#Yzzaa_z(7MCgHtFGR1tcptg}chI;w#Y;+K=|!ph6{7HB z=N(i;s+vVn@>vR)FFyqll`sX>^a`9PpjYL!0KzE%g&a{TOhU-(hwmg>F&dwNWL!_x zvu}(jGdHyf2F1YsH;^IgDk_Xg$w{un`hnAKnU+&zP0kzk(&<~Ol)Oap*N1Q2H6~Fy z&_No~$A+b8N^;HqiI`Z(b z0cx!lx7sgHa%VSWrFv5#6_;$eN_zIH0isIO8g`Jto;F{qlwnjaSUs^bBt$+`FdG!4 z=AaK&VCJQz=4DGCd)#gIr6iEq2Csi|1=xp6^uSKj~YZud@Y~2P{10;_*vh{5ymXH3CjQc6@NWlZG=Jcnyv| z)AuyqPOXEd`O|#(rD6K<|EDn0Q>)_fbR+jm@oqou*!q;6LLUY%> z8~EDp*Dlm{j#*?{99Uw!Fn_Ub$)6VMJNY|C{M0Z)Vd`GBSUW%ULdD#og}V8rixmrN z7qc^^_gR-Iq9AD(sVA3rYNxDRsGFx+XqeZy&^-IP3(bpFi!6)B1K`JtYzs#&u`Zg> zY3pRjm3HX@l6H6Eu{Ez*UYUC+@!GRJp9^1q{?pCk*+;t8%(+{0lb$4-q|bG)n_f0- z)vYJ5aMOFP;;g+Fu!i1mCG0S=9Xamw^mOU?^Uq&G#^%h=o|1k6z87TQDE~&E==VLb znCKhnm7&z|;LtD$OYg;?KsD-8u&X!8$E;MNmRi9di=$TTZRtrHJxwxUTGKNdJCzOs zWdsXHH)0|k%CzE`s3~q^`9LsTCIGTYd@4a|fs>_wC z+WGOvINXfedeTF%v_SU4J^FW6A9^@O&&HyXVdra`$h{|@XrK4qM>{|2Gnz@Dl8Fg8 z2&cZGZ>yWu9#f;~y=?KHJ3Aj;M8E&Mc*^UJQ$AfS&jzg)m`0*gs%*0a~B_-tH=6Um)`M)e~xH&j?X!pbH zTRqME?$XSj%*@jF@UV)zx2KtTp7#B`X5r}2xuaefFs8e$c^;VrwZQM$%FNQzOi6-v zZ#(k|oPNJ9<(@ZEX4$1YJt1qMBPE;Ug5Mh$vroVbfG=+|8^k5j@AW_SIKLi8tccOG z9^wmz%<$CxCiT>PIO-|;O9G-h-1VtnD$E+R4C=!?ceqac8UbMu74wGMuH(0qBMWh124R{RhnBj;f-h$ zqs>JlX@#VMx(P46i+h6KbX%;QPtSUu=th_5{-7-*1LVG0&*Aj*1W>OXsHX?&xnN3} z4T1gev0{Mt!=H#*H2XpjqlVbE$iHvD%E?U4<1QvGJy+#PKIdLr_!Y)h&yV}-*?UFd zsh-CA$hSC#f6V#LyjM<09~fSJ>XlJ%JG#D{&UKHC{Mfx$+C}c=o_$Lioxmi_LAm#% zTnkJh}_=u-&g`^YZ#^CQyPF+k}GaEX6MvFDpgpfe4; zZyNlFrokn$jh>vRQP#@~0!^g?s5dM++vuV2`5&fy^1?#l^>EjVsY7cgvqhr=ZW(Dl~f9aTCo7 zS7mlZMRui2VV?NQr=LC~g;Pj(lged|te^5Bx3_oL#@8QhZ*REZ$#-^f*AFTog7kBi zH#?=j%a%=&PiEI0y)RhK=RxRdjC8vvb8ax7 zpg+af@KA?t(_k@iGY;1dVnitGh~CC+gfT=B;rzZ&JJ;{HmjKFRe?teLk1YSE!Qhd{ z_dgmC3i^D=_k@KHH~i(NC&TQ6k$3kkEoe+`T}MxB%OR~^Ko+cZ^(nUS) z{F<8l{MuTQ`3K_@5ydsVr~lI!F#z^WK}}5oz)45m-XgpaKD+fcZl9v(zA*8QBd^ve zoustKy+1ti@5fB4BbP}R zumy2on8tCTc_VHs^D%m12+p@B%z%{cx;~o@4^wqrT>64Fr|0uV;hu%0-C&+ zjr)0(3;tzt;1)FzG`7(ZIfk)!<3Z<9Y%d~+lndt zsKOrA1pZiB_g=Evts)G}ShCu59n!M{YWK=bh`xJM3S2 zbEJ&*ciy?#(5V!;*6Y~GN_V_b(wFnI2@LnVAJYLvasjv+DvAi%5ElbYj4| z!Ph>(-%BquCEK~=K>qOi>_ll0tU447b3SsxJcctmhm6Q>YDg*>u%>8o;x*fr9b}Q} zJazALc7T3u1&GpSd6l3??DB}wU$`ZNzd<^N@mM;R2+Op9hB-y*Pd|!3bPWnfyTl*5 zuMF^fzn-O1n>4MOJVPGry-U3R>|pkZK+hTRhqD^-he&mRBn7$#i4X-u)(=TrARs+M z-!VG^fyg2`)tP}^e<9cOe$~KEkw!_W0FguE*$+!g3ET^IpNhgds}a@(0{{2s`IJmZ z$;c@Bzi3|1O;V#&QBAHPN4d>slm8FxWB9*Iqu418y&ADXA?<08+Eo*f)m zl>L{-P2SVUBNH1#j2N|z5*^1_97d`OJ{}?uia+!$CjK7U)j8tvvrQ?{-i$m*{9SqR zaY^DX>$!jgFgP!;LwfIHHeqn~h{t=?u_1VaUQh}v(EUoriJ{bCz5iwXsH|-tR#D!A zpjPKIM{(jpZ+ZKOjIAU_Y`pMI*tgO!PX33Upv;|I-?Nb)(S76{_WIr_vCmPxbxM7@ zCx1kF`G|Z^di@luURsrum6eo~l?^WQyDmK$0cNSSRZ8kP>>xdFJko{a{9Rz^1^vc4}RW01=P4@l+b z&+fxFPpHg1y?~O>>_p0u;J7hEJ}5-e5WS7UpD6Hq z%f6oe?1Z+p%XSlIdu4Fy=ViwSJ$aGz;Yh9@oZL_* zO_IJ+o+gLNr16sQw^rkrIl0nH`!=92{%o}41G?k5d;rCH^1n$-$8=yWJG%zd$J zf8Vp`n;ktr!D*bjw@bQ%3}?mOe@RpMf4MCFfgS^7_(Zimvpr}}0WE|Mjv?9RWCguK z@6hUP*qq!63|Wen4T52`1VYD;Vg!-vjdhg9(AEHv>8)XO$Z-mUA(yQs(03FUe)$Fp zd?I4b%POzS=m~lX{L42qAvPd*_d7r-vyEu}u)$%0GulXIVDMmE_H#+&S5|c9=H=(- z_MUu~?KgJ9_;KStTDtV(u{|F*3>wtXc<ziZfb1Y7?5=DLbG+?9P&`s z>`-WSR#tX)RwT3hK)B^VMMYI*C6_ex#H?A*3>y}19U4iP!;-S{in7qIAjH>N&kX_S@0ayt7}ZygbBZ(#lMMc3(zDB-vk9=FhMssQXS< zeo4go&RCS94-*{@IPBES{vZ8{Q@ak46T&2^f{f@kOShA|au?;QO0F;QBmp&oyM_ywi|HGz8fSRBo z(411-jHW2jEMsg38?_srkIf5pnSmW4-L6EJw7v~3-DboV7kSCUVuMkNt$#GYObqjt zcantesqz}q(R(%9(X)~5`-b#nT?-lcU{xNTJtT5?FbNNjH-KatQ^W(>47Yq({ZJgcl zo_^8D(F=`rymD~A^b!0w&dGK0M^A-fd2UKdF8z?!|JsZ0kJbHVw~c6@lPk_zE-dEY zhRdw&o{gf&+vlKrQM8?Wu%QK&vmo zWHiIz`FipoIYqvJnRA{AGA+zF9N8{pHZgmdJDK<3gE_#quv6I8?5*sJ?Az?e?APp% z@akgYD!HlLKJGE@Ywj$sG(i}S=I;=|%=;(Ox9;#q}SVOFFnY81m1;}kO#D-@S0o>Tk??|}W47b~|Z zuTvh4P68SIWkfQHzn%*u5VU~c3XyDZW~Ps zE+IrqLK%Wc(;_U_4o`yoB>UwIA(7pNtTI%D@D{uVjS+lkPcc{ubWBiwE$634Z2%Xm zAnh2WMK;J#p^P2sNYh#Y!UfrkVaDW zNf1lr5IRe)2OUP*Q+NfaF|bGuD5!B9?*IkW0VIksc%Z!-9a8|KLkC)k8pscLZKvd0 z?sggL04xfTGIy~*q>7ImIt3Zz?B@*)UQ;w60YC>}JZ8vwWV8cciYMA?S_%SqD<_L~ zhd%=?qJ?@X>HxUhCw5v@q>K$cL2e}R)1vW(4#lYuQUKp*vuQ$Bkip^=9-`fdH4V2L zbZG#%zLi9t8i=9EezmB`>z!QbKD4DwwcJ6pf%Lyz8rmvk0A=I~p*k5Q#c~jJwApD& z%mb7zC(4j>$X$j8pz%lyI7muSO#Z`TtQEB4g(x#9MthmIPXGWpeY9=pYqXul(IoNC zlo@@B!*UG)FAkChPzXUS@lFttF1bi7EBym;j`oJUQ4yfMNgo9dia};E z0O}Z^H9|8AkrS=M`*_b_enlbCMw}Zu+9k9IIWY<;E}}(+C>Ve^@6Ya`8Sw(SQ9lab z9tVR56hq(AtsAXPFhmPS1mI9WUQcOJhD_QJ1zZ9OAU66(X9XSX*uc>IGET_&DAzSU zlSKiL0TCJHW&u704$*A+NCZ3~J$Q|3d(hJmXy8!1<1=W5qIIKH3g8*FwV`V9zgPqC zmUbCkvf^DwYeg$cXOs-aFK0$dnl{!+2+;llT%?pA@Ddw6XD zt5m8)ouH!zRd|)s)FJW=65NneT3VSR* zYMViDbc#uYD6~38y4RF$7Y*cbRVELa6x^yA%m%%{D0v-DU^WXXUQj_=g;Tgh-m0U* z{KjOpYL@`-RA!E0G)67MumXoq3f`zN z>ax{pZREIC4}%p-g+n8%I1!okJeMglJb}xzl_mq&W>zGOSphj3O$J9)qJrTxO5UJQ z*+fwxSg8wAg+Yl+aJ5P>q}X&EoG>Y1q8RBIUMD?Z%uR$uyWYldoL*3K8eT*WhEZ}# zg{bf-0i5Ls&j?C*sN|Kr%^=ws2vIi183xFL1i*Bth4vY6h2X%3t4Fg2i)RVtwk>yl?E8X;I)hc${egh zPz!punr9T)bf|4Aj^~U?oK}rCvYd)x%&3q~`c$V>n^0kuTETOSDn;bd^`cg^P*1z6 zWG!^TylSHTQVaADc(W2ik)*X*Rpl(j2S8F6zC5tL(=tF zwbbd>3?|j$HS1ruP!uvmClIBPJBmTYT*hqD5_B^w z07DY_-W;vfq0$LzJ@dXL7qU87k{G!k^+pr0L2XkgkV|AlX}H2dbZ9?D9pogeMB2%79WL*rGs#ROloR2sD=oz1C4gG}5?jY<@>1})(er4vStre2T9rL?PAfmIo#AM{Fv7Uh&G6M2SP zDLNRI=tL{#E{NT-91vDUsq$$Jum-7OcvfN3^IqTw!?FrqjXLn|6eUkYg|YW}5q)n{ zB`GZmE3bkw6w7H;>Lh_Pa+RVQ4TpTYXjbc#E)`4oybPF71WNQ8K-3vd1@fpx1=Ln_ zxyqpwc@A@yVbgVjMj_}$447($S_3%^UM-LW3YZKds+EjI zflO*aQ~^~{jFO0$XrN_ivPEkVbSRgO3>^Ve@8y^aI@ldxQy8^?K2>N%pj@)r3}@uT zAgZtoEifsQ)CvpmM=*F9;?)|RAk>mFw}1a!@_BA`b*|(fpBwBpqvS9oCNitEGRXzi z0A*ullGz!r_#RMv*Nwjg&K=hu*&tGU{b)sJ6mC))^3W9;-IL&=VU>B$6gkn+eB1x>% zm}CGmsh0+bo@CK#fD>$`O7ki@hF7EWNlua7B3f0jC5N>}t+cQPEozmf)%ocucsZwF zU1II=aLj614G6d3v82P$x`Yt z+T7SIg1vR=&)M`aVG1vyoGfqX6I*-uM*^ zW4tccVBysBh=}N}6!;q`-osn!=#7z;4h+iUy;~hE8EdDMf+NL;8sa zgT*AJ83mpz!ltHfbB7&antK>7Yt98)?%xyV+n6EedqK zn7WF=oFl}pQUINS3{0}gI38S*!lBGb1#tyGp`!DZ$v*&ku1JTuGUy4BEMtmN&?fQ< zgH76rB^F#*5@?QAo5f@bdbJLA(CUdEOA=whc5#AMP#B~eJvvys;=v0kH7u(aEsR5h zLBycZrI0Y9sOK#P5KMv62I5q?U|ZMDD@C=SW;B>lpvd~qwKfY$G-{o2G=K=!rh#Y` z7!?pxQO#;qHjTxEMOI~lfh>j;M}8JQ?{eJ0WBNiKLcry@UIl{f#)8cP(Rfg96$mw~ zh6*aoFavs><1Ymx1$;4zX1j*L$by;?Jx{(@uvVj52h6h=%?fN67)om}4{Ok=DP|K3 zVh58KoSqmMoia_Owx|VSutyG|2-HQ$1+k|HuLf^Q7|>o|k_wz6kj`M>IRp3wUTuA! z(~Bxbz+_NqL9vt?a1b0TJ&P5^VPO<1kDUY)S)IeC`dIWBv96-|=orW4q6w%hvSN`! z#BDK%FKADxHzFz0m3)fcBrxCFMz}O4Xh~t=f>Brwyb*d@jSf~Cq+xWL(7IW%ykHdv zC&qwPR$3|715O8K(r^peO6(3y6PY35iPmI7B8Jn-438=i3>L4;)7ZNhhn7)dWg<)t zxG1nkoKk63D~(tj2v$mpE+_&6!13&hOo73krvOlNvxq+7fN=`6R>ORpOH4W_kC`cU zutr5rZ-t77Y#lG^>>xfCGx#PohykO{*6P%(SicPGI8ccZtr!@PVS;YN?m*3>TSOBu z79>WIfV&RADU@euvco5V&a^MI=ez^wyW*EGt^EEeak+` zd9)U-L6h0z>pP-{&rs3qP^yh;KC<~2$Mpqio_xL%+%k|vK>IXM(o?BGP)!W0!Kh)e zQo-}QQe)6b-73KZO2_jo_*d{(m;kJn;gj@)+7$Ffb^{HmXC(|D)|Y z;G?Rt|L49pB{P%hEi-9TGMV%?NhW2|dmkVPAt8{2P(uk-qy!KU5JV6JMWu;=h*($D zRoBH1y7s!OYu8nGbyr;>nR))d_e}x;#NY1c|NBASymsF$=bn4+Ip>~xj$|wYUjZt$ zUa!J%g%F|+F{g@zdI`ib$XQ~E0&_8jEJ%w;DrLi!8dV6k+5onaq1%O0F?yFm9QZ|j zkD{_6>@1kI!D)gyFj*dDkN~d%x&jqwL^&dTop?^yf`Cd&zzoSnDp0RHkxGo& zCQ}yA#AC)c>a`f5dv zGz9$(ZbF9LWh$c)!n6p|00WYlrv^6_q6LG&fPS&)2g+Egg%C{95dV7w^baNvkPfvL zbtwE^gTKOL2;owXSq~#!sAnZ;voi!U6AGowIw&8QLKFKY36-Ni`1M~Wm`ts<(VDDgC9sZJ*qmWHWMYr?`br`2J9 z7pujPAH_0o&pJA?L*!DeL(x9-;&R z9YiM}v|ESfsHCcBC8SzP!b0^hjF74|V6@O~g;9wv0jV_5J`@{GL)4MT<~_WUBx0g7M01}oVtKek5*NyZkSEmgD9V&kpS96+ zFe(mw4&h1;W=o_D2b$_cvRn(WFpQ{WFqNTX6I)niGB99LR;H;AJ>0?D89YU)r6r8U~A_1o%g+r7)g+inRrC`L761fbD6)0|y zT!hu0At{;%0s`_WgeL{18Y4}JR;fi2kDksSV4lI!K?j850@y@kVTA@10YU<$0mK7| z2}DsP(=l2RsGtOEoQe>IQ4@t3m2v|wQN9~G4nPnrH4z!$qvZ{xRfYj2LXZiRCMmJ% z+hidS;V5q20B5eBSeFR^+svTT_pn5omL&K~6 z=mLNncIH?Ng3b`@W7%$OdF4}3<+lTSUFmAV71d*dW6p@CkI3DF;TOx=%$rV6RB6+) zWr<}DPg$v_443g`vC$q!hBbRkMr35hm~3lCW@Oe_cVwh{Y*yqIS;|4m`|LVDQC+;2 zOeZIy+hEEhOTr?O60^AL%n?RIuPNSo!WL&TCRk5c6O3>kHX5ETcu1;*^+Mx+22s!d z2vrJq`v12e^?s)??TWCvr}OWfzukT_1;V|*0feW;pPq}Pi4c>1F1BkvhV7aXn9Z25 zp6&k6o67=nloM}s65h9cRdkTjB3(o1HOMdTWC9lW0& z2Y|3r;V}R`hR>$qvuF7196m!APw@zM6lX@h!iHapRd}MoYv?kD-y3M^kt|2f@L*0K zQ`e+$JmfJ^mqXNzFOP(D`4$;bU#{>Z1Zy8SYH+}3Kaad4#i0_YL9lrG6<-WBA_?Yd zcWJ1bO_PJq2szk?bKp~4s66z-SC?iPVyA&}VUV~w#sg=+ShpB_~uP%tplmH z{Z-uFAtoj!--OplnljCjrqiXroYfs4-^DQ1rjUa8>>E!!HDy|hZEngqt2c7#OLuR{ zDeG2;Xfz?}?y{UMcfYhW(rX=;GS}8JZQ?U0Z%U3UkcRn>_C8cs`w%3SSiRnZar6Br$6{`u{n4KerM;6@isR6qKAJ7l$;Y0&|K^OgZC{}>p%EHY zR46LOaHUJq(-)V0U!6j$>Cl<-V*P=0Zni<%QtU{wy>PQsAjOPK?@m_XUe0+Bn z*N=CGJUd?qGu~NkcT_ohe^*=gP_O^Hk`|4hJS^>HKV>R2GAbGN(_YC#exhk1_tau? zs1?eeu9c~!H6hyjYeTi-TCwg-4djtpCS+GFrp!871a}t{`b-U`S0Q<(HbgF|mB{@s zi_pE{E~oHzUv@^oQzL>ts#ZiEs|9mVL&V2wr7GO3hUPU!#D+V=r6Ho~8}gS7X&ENm z5nkaoo81+-0H^VfCHXfDJ`y5DqS%N=Q9`Z8DzBAUxg!wbYEUE>TT2Do8dQPXRFPv( zwi8jRF~P21zg}-oFb=*(@F<5}4_=I^rL0yUTdqShw4rxEe_RXs3fkEkXq##ESZ+=o za;qWCm(YaNf+^#k3IahyHb5Iu1NJPS6&}mT_6<#Oy26b{C)p*_hSW&aGI9elVPEvSgf%4PO4ER-Vkk>^X6W;N_U^#pe)9DdX9P&*q5Xk%MoR7@*!TK};9Tn0 zO|9tkNDd3n^ba8zmoVJlLVB5Y&UhJoMkd7n3_im~_&V$czcQ=A@6SDNuK!z;<7ts$ z@Eeigkh{~%8@FA;NqB;P6^F8W;vR*Kk-^+CaqG}5W$)YR0u`as! zihu_a{sxW4WH(|XjxT#D;oE&;&bt*S64z#@HU&3W; z-FFTZyVFWCBP(LqKQ|{_HS|?n6{%rPHB>tt>R4l-63Yp>%(|hE0$arYPGp5;Qj^L5 zE%Qxww%uXNz-v(`xq+Em5TiH1=}}@zZgf#p;IE=mpCw(#)E1HsvnlXRTxWH`BwOIm zq^xjb!7T0{fmzJ#kuOY{5%iOfMWv1SWP8{GQf+A~TsEP)l9`-eCD+N0aI3yvoqVw1 ztSl`i&L$0c@2ccm3qF^IaJP}R*lL#}QzqvgGNzegE7^aLG$x6A+aJ|csSH<0(!=aU zaVyCjOG&IFD-4N}O|ex7{}~1ZPy+!B*dhxW8^ed~(R!rt7fiRw3xzO=y2!hyNdE=5 zk^5o$>=!l>2Z`g4fu$QIoN#i2}QYop7-bbY!=Z4;g&~ z!J*$0e1}Cx0}Az!5>iK6$Q1a=`uFh&i}L5H4s&?b(5KvdhEsUpy9x z&-)`4(>ErHib3>p@w^;GV==!CB)FA2)`3ty!#*7xS1bct3}GwtUzbB%5{wCt$7I5v z#DzN-Z{N>9aC_iC1y3ao{?Fw?)MEZWZnN+P-_ZX~mjju&`D^-~O=WN&4KHXCmx-pw zT`(n|nQORAyu~J4`T|K%sM2Am~Y)tX?&q1-W{(+@ zJ@}R=(c7Ju*X=#~_9gjo_j3RGFS2Cj8lB=)OJ436Z@$aPBuBfetK8fNrQ)2tg#25o z?NMED&Lr+BEA~ZXR_-pcGiwH#stZcz=2d3oXJz`b=jN68YOV>~ldEqC@j0``Ha67D zN^2TRQsPpx#d+Du(auRi-{I0#6LWKzl#&45*wsG65A`K~Zosr=(@=l_& zA&v3oMkdtdD68uxw#aI@8M5YXe*9~KLX!RBcctV&LbiB!SLRS$}b#aNmX zK|Lap7bEb90y<9igfv8Nz=CLqtT>eFZDGA5U1*dQ%k*+YCn=U=v9b@A0it5?y%GgZ zuc+lFJ@O0-mxo%gkvr6AA%y(f+EPVVcd(oT2l~4{zkzG!Bc|Iv9m0Ncu6zCL{HrjQ9m{|Y#Ybu zg!~6t6mx}(PCpph!C&6R;ziGCB z1e@ykD`@HXT3lQ{k_7XEQPrrdsFZ%?I-^GTjuu4|xx~oAg%gMzb^92cMCsLV6GlJc zXy1FORk5b5qg^91*Tq zbBrn6f{KKt%MF><_?jrkn1Za8>GJ%=h0ZKDGslr7SBJ@5G3jEDHKBw-vlnTnj4jJZ4quYJB(<@6?3nddUGBUR@0iGBb6rt!ZzkQd#GM&Oa?Y-1 zUM~0VBaFjhRwnDr7Kc`rqSTTxVTxpJm>rwMH5%^YicdRRu+DaCvKDexs5DImf06QU ztw>_E7!y?%|6h`95*gWIO4p~uTRr!9&i!(;G}UZ-St_&ylNq$B27~3_{EZpenweCm zQGpy3MrW#7mZq?n!iMg0Mq=GIx{{pM7AjYmM}|pQD$Py z{u&AA*7_Y$(;0fhusb+~jp&BcGtI{RUX~c8vs1=U*$qT0E=>rNtZkN8G zlq2{?l6#Q5nY-!ek$fX^(b^)=mIp4l1EIN6t-B$a&#FbmjA@H18_HzLglnhn;_l&&?BD;za?vVHNPc?m{CZzuQmjH*-Zpu$ z)1)230-rl6V`W2aeoCZ)5tei`uZmNc1XiN_#68ZP1XX@m@fh_{gA?(Yrx# z6LzH?z`nG51P=-xg)fO`1!n}W3EmNWAox`9H^Fy;pP>H4%F7iT(FfT-^aeV~F`5B% zW=RYey|i6)2aLOv&80iYMthcIFaCh%7#;k!YWSlA`z0}$JXw_4!dY_p6AAb@7yRP= zYRciS{^K-Y)liCo|79wdZOqQzxJ-20@(tP98OG%m!%CGZYGstFqsC^d zvF2Ot_K$4%cjqOyRx2KGS6%XyzkQZZ|DPrJjHadk;wsm6vMV~*RaC6&^snn&Tlr04 zdPZSkMoLMtE1WhfB9>iQIIkpyK1?qhd6`yJ$UV}roL#ZJqhq;$-SQ45sy35M&#Zw< zh+8sixs@Xc>kUe~U1?x`K!dVs_{!1tSz9l;*VD?7*h`-BsrdB&*?TxmMBaV;ufQre z4YsC>m$|DD5aoJ)ALfI=^)tZpPl4k@G=@Fm$0b70$tO)@5|sPP$N<#)Tge`Bm^?t9 zB&W%{0_rgbghyu-!xkTb>_89Ux*Md86&taIGaIq+VjYBrus0gPnG~|vox$s@;Y%GB zJiN+2mii^ihPgIR32B@hUY6$xBty-_hxawmM8RS3eQKU|8LWbPJg9q9ik#ofbh`q7y$uj+87e_q6*LP6h2N{aK;GU>QGZE z00;Lw5St1A4YtwSOWi@jz|)-3*WmNc%c7&7kG_@!a~_7AWX-$f4U%4Y_tdjL_D&9| zle9Lsjn9e~)`?O}B%vi~;$GHeJ(pImwB>7Br!>MUTS)S}-BV%MB$amz6i=ETdp4;- z4=Xhm5qx0^ZL(&0YQ`dbg;CcqY5mn`Vdy8J{9H|wE_tjZbWDn_Ny<1{YR~>y*Ww_| z<7z#ur`h8nA>k22p9-7fU7_-!M}(~717|pSDBS4`=jy|q%%g!C33E~ss9{dZh9%Yh zOU~Snmpm9rkbfQuLa(o~$bWt3l7RbG1FIZXV)%X z=6mqwoPJOJ?)tTh=QpI)z+_XcYhTcxAT|jV7G>J1jLf3DEgD)Et(iMy$ z)9P)$wA{%FP1le0^*%H!Z+(+@R@x2E_Yo33m&16 z3l-n*{$@G9MLSVvv3)JA#vU)U&Q-x8N@*~Bm9ozGd3wN5al^Wqg-jjOu;xGuduD>Os+&qMu__NT?= zooJZQan&o_Pu!c_E8G_g3K~tODG&X7$5Aq#qz`$m!m-vS-_1VGRZL#?B5=1bbaALv zk*{Fni$bmU&3^it+pvJ_UfAevpM2!cgIwTTU*Eide^c|~^zjin&h(71#E66vb4UC} zUv1gLv&myMcf^rQrC1Br{&=_4ccx=1b^rqC;`2q*tq{!@P^g0nM)v$=1$ zPY1_v*E)*ho0Cf&G1g*N;_Bk+j*ou$?yWRwIF0(7IQ!)rh^cT#V^}vxBaE-0-4?!QDRFS z7sSM%_k=>aJB?09px#!j!O^~D-8#N^DUo;4KsaC$!PNz?d4BG~b1d>AKe~O8N)_<= z8JrsUTbdb=P|IT%AKe^%zx5&RFt__0Y*9>|q>XNh4o$Dg&QgWOw?t}G zlesQuVxqIzm7MHiR}e==R#pc00XDM`Vbwsl$I~@XT|Lm9o!vbUvvP0E<}WvG`*K6m z?Tb@Z+|xeikE>TcKI54)+<}<(CUTZ@6qcC_@*>^N)l*YSqr0Y&8%o=5zCOnq87{Y* zo3pJ+hO!Fy{`-0P@}IjW4=!7FZZc7)hfF9dA0Ltyy|AQgK|s0V7gBrjB&p$U+#cXg zKKdB>h%p%Egn(%MUu_4A+%RyG+#RAjeK}u=FsxpxnX8~ zu1ENK=1@{{5;o7I%$bYY;neuAg(PXYpwolaTvh-2=};bRO}1se-eTe2f@4ETQZV4bH_v zUk*PkbWnhX1-0iU_>!k!&!!~JjfCJMDT@eCEwJ1s*R6Oo!7XV$xF;ed{NE;Y%fkIb#hM@=ghF!ta7>4X322YnG!9riE8o+QyO@Z{7nAIsV-?z z-bjl~!!7ds=Pe>O>I{-LX?^8Ln<@zc&;K`#`WM&D7NS{){`*Fef7a1xS0uqcg$!6&`W@~(rWY>7O4sR%VwEeI0z0Wf9;`{bWC7MquYBm!|C8d4hlc? zEn=cjWj=r5lDI^Ae=Ykk`|!DsA9!FOCWb6{-~lcW6Voz2i4?`e+&Mn!--XR@*hroK z6uXrzofiDiKN_LCVbz{eK`Rn?RJ4zx>@8s??=u82etwyiiON2alvmo zJy_I2Cl#7Re09c1SnkBx-sg??6RGhBQfHKj!?>Ty2MO`J0;{=Sn8q9!-(EkM>J`jH*dX^XsbyZx ziHpmjhi`gK&2)NHGIe_cCN`Hlb@uJAUlksD@(Z0$`{-@{S>xJ;Exv%4TjgKQy!FJ1 z6OXfRef%+dRd2742tVV!rk0hZ_~y^|`TF}$`?&YWdLLF>U4iQu{}+UP@6>@~1+Q)i zG?N%^3)e#K_A$qwee=y{hwdUB@E0sW<81)C942@UnBXM}s(3%A0z}jJ)keGEe;F;N zUYOxsGzg$z<7ogg+H5L1VjWRSuP?yp~Ej&Rdy z!=F4sd-m0DFKd6*B`tR`j#~qztde^+@C6SVe-ht*AK!T9u4muzaf4q3B$t8!+nE4@ zXn=qj_TC)C0gqrDybcNwI|VV^Kv7H{L~=uyvRPQ(zaZ(3R=ThLSC$e4)mH${DK3q% z?hTasZ@CCKFTCmF{9gru!`%tQ5D7j8RH`s4f{0PT2cNkDO8jTzfVNsJysZDrnCiU& z3!4qJfA^bLg$G8^elFTNhDUoelD)LI&-l3a$vPim(8UHe|2m%Y?U0jCKvgPvsv<#K zsHG|O%pDJ9Y&xv11n|m6L^k}u28eni)wyg~X@>hU^d&A4g9B*pBA~wT#UvpJqDxbX zvqdw`%;<7i($V~W_l?z_}Ws$T)EEL!Ud4h7tk5_|^-zoSVw8(E0 zH5!+KFzJPm@PY~-3D4EjVa-blkN|n#3*dh|qjX&m1rb-B#uHX*%0z3 z6*0g|@me&z2M>!s>a_sRd1lvW;yKgcFJ)?xKDY#dz1{fGgD)sYHp0Oo30<<_h0u{2 zqI|w`$Xf!L1B-%Ls97*yLyFMlrfNM`p>X&S-%45zNHE$6ZcZ4p;163HC*Aq}^5yRw z>`>~OEb1-aZr}dTZA)HW$8C0{I#P2T>1HtM;TomZs4!>m$#$m1hLu{9GS+c(bEg|k zITh{_X|r^z&}vk~X(PikV~LKv&5&(Y7_~}GI6`xo(;d0UC~ydc+D#Uz*lxDin2=~) ztlj1?hKGpl7PF0&M3ea`naXlSauRo6_ukIVz1`h=Cr#Sh-MFf@c2#5JKyB>+_Zha{ zg%vr~;UcLsGF>k-kuOubmbEVaL#6k|s-&q?#^s0=6ZXHmTG)2mnl2B^+EYsIYK^Z> zamDDNyPsc_Ja1LigtaqCpR#xF3kztII}X0H+|}#R6!$xB{C4x^Z*N@p!FFxn>Ed*! zK3XleMunNtZ3?v`+FN!mDY>|*IIMhp6+D)~;&cTTI){gh|5`;ci_BqcrK&33_>`|74{|^`phLS-!@TP zDRj3j-PzJmcjwl!gS)d5vb7Su$ru-Ii_u_Qe++B#Dp->%Fv5cl7=t6628}I&Rb?ye z$|pfegDeL2$xQ?KN~o(pjB_gS(jh-`*hU_YJQ*<(FM&rY zE19y&%7D4#);HI*m;WD#*s=u|+h#P-FkRrgI$){X~Hb_eWpx0wV}@(5y@ajh;mi1&T~%8tOW;ba)pBHChc?YEHxUhPlw@ z{0a<#M_H8RJ`Y9;(*I3R3V*%;%5&dy?~*t&pRDE~=H2rD4N_+RX_9-I+Y=D~uYp!` zJ{kx`P8%%cf^&BXxb$E!=wJxgZiIij9H7`KBw`Vz6e>&!{jYQ4i3tY+=Q*fq0Q-+F zvi76TUBhYUdGtL${9W*FO8@I;EupdeJPU(6LxVjzE)D=Cy!);2@V6}MDtBZT zWMmX%@2EU~#l1q_&d=u(^4CN~MIL=7Jp368^Vh+v(nXuz+sO@bN1u6yJIW32+=*SP zZO=SI+K70k?*R81xB1OCxy{^X2M)j{cJZ5ULj4)0dxhFa6egyr2fq`oOdnj!9Da^;5b3U6+|S&d&ppT8$^E=* z7xuz-Joh#NPknswAl8Ske*0|%o{Bzr5Yf^$jEeAdVb=N;0)VjD5IoKwqmb#`XU{!H zHqqnx=gD=?K6`Q8Fmf#!;;>QI?-$C4eiCUR9Pa-`E!`-dfmzZ4=dWcj&+8K`7i{Kj zGcK~7aPk`85yl&liZ9`7F$gZ=dwC+1g^7+At*QJBu7WCg=mCAP4x@t(F3MZe(L)!e zDN9Y4Tu0xNqLN9IN+ieVum6*Q506Zqbo7H&i{C#nm7X{Jb=|tZZn*ZZ>(~GF+Ri-_ zC+_L&zNNim&yYcK%$CAQ$|PQTm8pU=J-gwkBKx|t;UB;(a|Q- z6K1!EeMo=4pIj>1SUP!f>EP1R$pw>-d^oV`gQJtX?)qRQEqK|w53k+u;ktDnZn*Zt zbvrt5?VPlybNrs(Nw-cMOtqK#Sj6+2U{6i8b4Pss2YsdXRB`QGpKmVrkkvSa7Bt0Z zjk24Tn!r-yhXNl1X(I-bn;$-lL7S){0X5tQ5O_w!bP3d`b{9d8E|1q3dShb0I34&B(#U1QVi<@$5Mtl2Qzx=f zwEzN)5BCjtM@g_hScT31x-EtMw_nD?)W*YGL4M#=&=&ung4EKUsDq8J@i;_Q;av%q3+&8d##)H40)$9P|u8cfqYKXN@iW)X4l&ch?APp~eFn4ihpxtMi&D|r(#gIw8@J!*{{w|S-zOzL(q&8Y zp+{GiPWDVb`r*L(FODTFi`nqtbaWy*boHAXW!VL`DFfRY20lDGnJ6dTI;neqqOVUR z4fd^QT%XU^=T9SlC2>q0mdjRgJ%_nS?)37vNoMo2#6Fqme>uwy+?Q!Lc^C6tOKN#Z z_D*!~T6C`lf_W}HcGFmnS7B`J7aYenP}<3iMy;g_UPi4(&4{U4dQkYJJ%nLmhj_>@ zxxgl5^ui}UW~fB3$G1Qfj4cC=+DXR^b@52ifsQ|IRwly_JQ|V^-i)Af#a<7(yh_m` zD05N?S1h4-bWJU|ty98FzLF6ue2AZ(QP<4rmYJ!kGh0M2wa!RQozZ%Bl{r2{7GY9I zBTFfb*Q-*K;2lB~ zZi+XWY-aeePDqJ}NO=qwiMUARj_<~DsD@}s!|vVOgWNy3@3;qcldo)+*q5KW;~|GR z+-G*&eBJH8Pd59QulO3Gmj3FNx=!Cc2t+v1hZCyYQWrQ>*Yd(z5!Qh_?Z|(~O12B)=hIR5iqX@uoZ$dCb4^hXGVhR2mvB`rj zz!fqy79!OVKrev(HNjp4*5J<1o8x!`xxRH)VE>#;y)r-AH;exZ{;xQ7Wy=;A`GWcC5vqjnSls z2z9#nR8v%7wJK-%+lLRozot;9D_ryb;lpn)&rz`(O?D9jgZ(f@5+4!bP;10PznH>B zskAd>(t@Exl=FR{DO#bsDgohax+_tG$Fw_zVRjSl^s;B~><@UQ-%;1j_Ymv=ek z%zy2`;J;|19j&dU-3H+bi%FOCJZ1TzzU485k_Z}f8WKO99;j{~>x7szu%9w09Q<|> zbjgZh3QbLC>(LT3L=j9*P@#i*d4_Z2MGhbjpS!JXV4zL%#e|hBC!DQd`T{pyevm+Z zuh-j~PyeQPizZAcDs1m4P#J5DLz5(5c$yk>&RRT8O~S^isv%vpudZXDT=ZGxKu4`F z%4aMp8avA~7?Cw|Tv4$}Sl-`HnxHc959c_=dm+aJm3*3enq1HQ4XTF6U0$zCD2&g` zi}(LMgAMVY&EUQwVK3wR85I>b_V*7?6WwF>ON58|`?=!-ZNjp)6)W0?o@g65=kq;u z@t@!2osx%gP-gy={IUrJMHAW!3npwesI%wxG77Dj_E+DJQY2qsIR~t>fSKtL0$Hh6gZ|eTAn(IT0A?=H2$SdtPBS)YqLGE&5IhE( zB$#p>4nF0ubq36R=rn|43S*5bZm{8^3a zlBVu%_Baw{%xLWHZYsgMl3B&Yvr6#pCu?D}Y-u06mlo;o>03(f$lBc0bbV&y%8H5= zjYc(j9ljDYT#DLAG;7ub-YZTjW}CNe4ctsD(k5(A+T6IJqGDxZ=JicYo3o7SqdVY(l5)K?nt$Pm^)}IUhE%*f{D&g2-=OP8z{@sX8cGJj4 zatk7i-9hdn50OX6Q{**7NB@HSgZzsOo+mv#^8hZ~LD@!16u__tISi^=bUDm9#LYRzEjtL1R!|W2URHAbkvr(0xCuA2I%(}#=k_0|1f_i?`3AKgqYAitT za1E|hz-|UD8xf}fOTZ5eK+54|0Z`eIhKcR;m4{Ydg7*A&yF}R@(`ALbTs%u4LEK|( z=tWkjGn-fA>$!UlvvbbfJ-+5mzQ6+Crsh_mx79bMdN4<8RVs~QxN@`FqL7K(XHtH=Q)dk?NKhKc{Vj9mjU)dUH*Zc07eU_l7MJ96 zvH2y%T;~m6U)Oxov;FNWnXoCahfxxB4u^L9xL^h>q?Ou z<`@Ogf1%7sE!CRBpGv}+Qd?2 zp^M}yB3^IQs^RPS$Qgy26`K^wXr0^?vOr}d@|*<^&k8oFyQRCzH`3C+$DFb-q%fJ! zC{?iMRw|;$dHOZn&sDJwYq$mAL!*?ld*ONW>Ui~8fMYb$7j!ed}*v>(XN`BU5f&TJ35Gn`$tU+`;8$1p@GZ_ z9Z@l{#-pLan)xzCgi;Y^N%3l7&;fUbM#V`JG4-T$tO#NA#XVCA<9}&(Gr7BY-n?e6 zrFpimIFIbkFD=dIX66->uO&DAb35%@+Hyy^wX|a0yQ=|^fj8Dl{$8I{mtf0?jh~;n zAwsK`%QI4CCb`uljg{r9h)$ukk=7ouY{5x|NvMPkmf~Sk{fbaI_it@mN|a0)p-_a$ z@8YWo--f7nh6VNZugxv4DCO=W`*VA|xgA+-*KaoIO*3guDVt@RQ+vPm{>ftvan?BQ za5kJSE-s+OY8LfOgpau!=j$T?hEiH93%1ZD!C7kPQDbc2@jT7?7ncN^)cZ zk;bli|K`_&sTlg1IU~%N=xft@NzEjgc!|;UFtWGV(5f{n<)PfqztyI{dsEty__EW( zObPItM$68dFAr0oQm^7A_XMs15E+C?J$GED$7B#8h~r}k)(hHTOxe$egxWbQU_K*w zRqz+VSArk0*+xOk#0ieS3|kQ;+h!(3p~lq5zormibIzfyYW56?>^qw~2^ z`u{fnE9LVW&;Pp$@fl$Pq^wKOFcRvQD>dl~FS3F{ADvFHj(p|Muaxco>2u2YkI0Pw zNe_`x3iHvu`x_Ad)%^e4a<2rp5VNH>Bfi!YDm9pNI#Z(7;$R|cT)7LA#-FP%7(c$C zptZFi#_f)Ay4}kzxhL~4dGJf&__hllWM&4Qx+H;k^nFaGo4vW9jearS>&QeAnVJ4C z=>zY0T4tsL4}?+llfu^4LR7$s!+$cqJZ^m9`D!6aKc6d-#bjpEdXm!xK6OfHR$OG6 zBQjy!7ni&q`dxfk+(iu&HRO-A+v+pL_M8ZN*R?cnT4HR5+li(ReM2)SYN7dO#G(w5 zcO(U^6HV~}U&IASiEQ*iVJrOvDbOx0ZC7CnZC8d9?INne@fWp%{gBTT5Al{}8fYGF zu``%gEA#sB1z$0|4EXtChZ~Mk2t+7U{X!mO?#L&@d9@X^wiKR+W`>(Po}a5zyP}0r zdQGfSqjoq|*p#AA9XFjMAScwfpw;V+;VYfdf7ugmSrAfuq98DCzU&E8d)aqK$Mbz$ zFy2eyhmLmp_t5X?V{fK|2b!CGop#cAFH&X3@c7~OSI`QbuN18q`%7F|+$GP3-VbIL ztUK)iH@B?5I4(g4-B@~fWSl*kC@xDP>_<)%HltcI_<0uArR=cQw3s5?KhSUZ_vk~u z>xBiV%=nff{*%~@OjKy-rXX$&H;#@RVGlmM7?wl7ryrg#i+;#{cRqV}Oc3|dE^F?u zL0}<;13f$=$pbTjSA{L!42ny5$0XANY1L?dVxYvh*NiGJ*c@&X{jP;V04>a*-(3eh zrd1DiReG$`J!&sAT~&;Mfzky{{fMH@1GiO%C`4|+URB6Juqw)q(R#q>!;3e36=2() zgxpm|SO4BB@98cd8aq(1_uZX~?^?kc$U^S=N&6a>xBhwO(3m@k>g(CwYj-x$r?>y* zNPW@lWrvq?$MNCY<=tK7=iW<;6xNsWDKvOvO)5{y!sG^cnO?_AQnS7B03LG=WzvN5Z*9^ zuYNhI-;L^5GaH`!P^Z0LG`}ZsHP`07U$mf`*+2~w0$1Y&U*C7iySmHIC6x7Gy({$n zQ|=D?KC`}YB2hz`uHi4a@39DWHTNT4wqI1q2w1uNN+rQ}U{Zt_=GI6sNnTuMDke%U zsx+@er$5HgpdSQdBs9sr*>_E>zxvr2(mK)*?k?xER~6;z`=&6P_?BF?;>lT&5!Jm% zE(Sm9oUSVj6NX9C$~FZ4*>dCJVB_?b`p!k$^l9lmeIpH<^~B1Y1(`FJOgqwhQTu+q z6VN0V&tJg;2T`t}N5L;|s3!vMZyB`|~b+32n^ zk)xx#@_(+SlmR{f%&02Q<=7xt1_f%0DO8s%8C}W1Cqbm>ULd+(tNZXdAjxccrdUIZ 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

(^OnDv9j%y}j$Yq-lELa>G3P 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 z%0D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

(R=HL%n!pms)8ukIvM(tV}euXdfX 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

p+e%)3j}>4XEY@ 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 Rp{X=KH#0LcH$RTI@-O~!TI~P; literal 0 HcmV?d00001 diff --git a/tests/SixLabors.Fonts.Tests/Fonts/TestGVAROne.ttf b/tests/SixLabors.Fonts.Tests/Fonts/TestGVAROne.ttf new file mode 100644 index 0000000000000000000000000000000000000000..17a481b6fb8f00ed1e4e9d3f5160305b851a9a7d GIT binary patch literal 14064 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 literal 0 HcmV?d00001 diff --git a/tests/SixLabors.Fonts.Tests/Fonts/TestGVARThree.ttf b/tests/SixLabors.Fonts.Tests/Fonts/TestGVARThree.ttf new file mode 100644 index 0000000000000000000000000000000000000000..17f5013dccf997b0b2b3a02260d1e409be8ff473 GIT binary patch literal 14076 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 E3l4d8LjV8( literal 0 HcmV?d00001 diff --git a/tests/SixLabors.Fonts.Tests/Fonts/TestGVARTwo.ttf b/tests/SixLabors.Fonts.Tests/Fonts/TestGVARTwo.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6061a166d074aa90a0d2d4af398c4818fec25ad7 GIT binary patch literal 15420 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 S1HVMZzky%)pQKJGA^sC}poT60 literal 0 HcmV?d00001 diff --git a/tests/SixLabors.Fonts.Tests/Fonts/TestHVARTwo.ttf b/tests/SixLabors.Fonts.Tests/Fonts/TestHVARTwo.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2e81f94cbc2b5af43fd8c9ccfb9383def6ef5630 GIT binary patch literal 4004 zcmb_fTWnNC82;v5w%hG>r3%!BoB}BZEtFCem5_FYN^P~It)h7AvR&Hh-rR1n7!nH@ zO*AA32_!xkUx@f(^ufd@4PX?F4<=q7&?d$h>w^(Of=LrCe*c^~-7PIDiF0yhzW*}+ z{Fj;CIZyzqF$o)k_ix+YnSJ@r6(>Q1ghFdpB_%_-}}*r2f6{Pj`W3L%8&iBuYvL(IOqIG zGCow%-F=#}-}v4+LWX-@ajsfTdi6-UFyX|oQ*=p3QrSctU3i`LDoKaa@rfMDaWmyR zNPC%hI(h44!zYwq0?L==vSWo@S?4qKKTP>%NURF6s+H-FpRU<*1-AVwIr!E(e6e)2 zTC7u~L$HL)#(DOM+4pI8Qb?;sTM`&FOLJ`0!PP8TX?}Aoh4Uh{UbP;jsM{aaQ)pH7 z)c4k##GdwSr#c((wdXdeI@VQuse=Q_ zsl!L;*ww4-J9MweqXErd&HScGGv_)BHp)sZPLgaXtP2FS6L^ldkn5doAZ^y zwYbT34347Cy~W@qaNM;%W>PENbp|Wcy2g&Oiu%efuB#kG+y{)liw1YV;7~CZRR+(^ z8Ge{Hj~ZN#mF`;xM-X;pA2L6x0`=|}23OMl&jwe~{_h4?V{Is6a1Azx+6=BmQz&I{ z6m6knyON{BBZd32nL<83R@gqlp+`6a$+1Ewxy?n^e7>golEdSvcz#aV(EZ8u=$>q9 zXpSE+Vx>$WVySrI**P^$>CSsFIW#(+_5#P|tN6k|=1%nBbU496fV( z`=~dJaiqx2;}KGM&KuQpJg&8lE6SSp^4D=2_k1tWf3@xLpXsarQHQi7(0D(y_U?v-Cbk9f?t7L-cio(TGN1Tjpl5m-6Rz%wo;gNO4SXR)+dA z*JEBXI*(FOW^57zS;qsLO&99JDnY}Lp{;8*V%OCS zBr#pH1fE^QT2WR+9v-9@ax%v0i|pF@kuLP9IJb1>weyNv9?y%PtsAo*%(~XHx$9p2 zfWPC5HQpwbrR=it%xFtXTdNs2@b)41%woGq-$yES-@{v_e;=m2oe!||i1g9~wQCem zzD~fOlZpiei|fceRp}}6J#j!I>4f)xttj_km#c|Ye?@^u`MV*_za`6hwZy!$@P=3Y zJpb*rl%4-Yp^)HpAmDKyuqnkm&RkPAZ#DqGt)wZJcSxvL4OOQ2y`sMoL{_dMw7c2J zDiptc{8cEcQq_iH)l`kDH56A=QJojR0u820Ews{uBlxnNxo;;S*c=1-`4MrdGW&sb*#lg=c0O8m6W|sAfQo z&v`lE+x+#{&D5BlJ`|pwZfZJn283!FD03?Qyz*y-bLF+;D2uH4=M8162DHK1SSruiTSTJLFP%ctD^@y)X_zI$|gmA5;P%Jg3K(vaSskhSFmki c+s!t?rk6i#53zOgn@~UM4)f3 +/// Tests for variable font support including gvar, HVAR, CFF2 blend, and MVAR. +/// Test cases ported from fontkit (https://github.com/foliojs/fontkit). +///

8gT--}L70%HIN1e@L-0~s7 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�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�k$j6%bXs^sG-I3ny(=f%sHFV8z& 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 literal 0 HcmV?d00001 diff --git a/tests/SixLabors.Fonts.Tests/Fonts/NotoEmoji-VariableFont_wght.ttf b/tests/SixLabors.Fonts.Tests/Fonts/NotoEmoji-VariableFont_wght.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4c7d78e4ff8c5395d253468802d6d0cc0951a9d5 GIT binary patch literal 1989588 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

+public class VariationFontTests +{ + [Fact] + public void FontVariation_ValidTag_CreatesInstance() + { + FontVariation variation = new("wght", 700); + Assert.Equal("wght", variation.Tag); + Assert.Equal(700, variation.Value); + } + + [Fact] + public void FontVariation_InvalidTagLength_ThrowsArgumentException() + { + Assert.Throws(() => new FontVariation("wg", 700)); + Assert.Throws(() => new FontVariation("weight", 700)); + } + + [Fact] + public void FontVariation_NullTag_ThrowsArgumentException() + => Assert.ThrowsAny(() => new FontVariation(null!, 700)); + + [Fact] + public void CanCreateFontWithVariations() + { + FontFamily family = new FontCollection().Add(TestFonts.RobotoFlex); + Font baseFont = family.CreateFont(12); + + Font variedFont = new(baseFont, new FontVariation("wght", 700)); + + Assert.Single(variedFont.Variations.ToArray()); + Assert.Equal("wght", variedFont.Variations[0].Tag); + Assert.Equal(700, variedFont.Variations[0].Value); + } + + [Fact] + public void CanCreateFontWithVariationsViaFontFamily() + { + FontFamily family = new FontCollection().Add(TestFonts.RobotoFlex); + Font variedFont = family.CreateFont(12, new FontVariation("wght", 700)); + + Assert.Single(variedFont.Variations.ToArray()); + } + + [Fact] + public void BaseFontHasEmptyVariations() + { + FontFamily family = new FontCollection().Add(TestFonts.RobotoFlex); + Font baseFont = family.CreateFont(12); + + Assert.True(baseFont.Variations.IsEmpty); + } + + [Fact] + public void VariationsDoNotAffectNonVariableFont() + { + // OpenSans is not a variable font; variations should be silently ignored. + FontFamily family = new FontCollection().Add(TestFonts.OpenSansFile); + Font baseFont = family.CreateFont(12); + Font variedFont = new(baseFont, new FontVariation("wght", 700)); + + // Both should resolve to the same metrics since it's not variable. + Assert.Equal(baseFont.FontMetrics.UnitsPerEm, variedFont.FontMetrics.UnitsPerEm); + } + + [Fact] + public void CanLoadVariationAxes_RobotoFlex() + { + FontFamily family = new FontCollection().Add(TestFonts.RobotoFlex); + Font font = family.CreateFont(12); + + Assert.True(font.FontMetrics.TryGetVariationAxes(out VariationAxis[]? axes)); + Assert.Equal(13, axes!.Length); + + Assert.Equal("wght", axes[0].Tag); + Assert.Equal(100, axes[0].Min); + Assert.Equal(1000, axes[0].Max); + Assert.Equal(400, axes[0].Default); + } + + [Fact] + public void CanLoadVariationAxes_AdobeVFPrototype() + { + FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototype); + Font font = family.CreateFont(12); + + Assert.True(font.FontMetrics.TryGetVariationAxes(out VariationAxis[]? axes)); + Assert.Equal(2, axes!.Length); + + Assert.Equal("wght", axes[0].Tag); + Assert.Equal(200, axes[0].Min); + Assert.Equal(900, axes[0].Max); + + Assert.Equal("CNTR", axes[1].Tag); + } + + [Fact] + public void GVar_VariedGlyphDiffersFromDefault() + { + // Verify that applying a weight variation actually changes glyph outlines. + FontFamily family = new FontCollection().Add(TestFonts.TestGVAROne); + Font defaultFont = family.CreateFont(12); + Font variedFont = family.CreateFont(12, new FontVariation("wght", 300)); + + // Get glyph metrics for '彌' at default and varied weights. + CodePoint cp = new('彌'); + + Assert.True(defaultFont.TryGetGlyphs(cp, out Glyph? defaultGlyph)); + Assert.True(variedFont.TryGetGlyphs(cp, out Glyph? variedGlyph)); + + // The bounds should differ between default and weight=300. + Assert.NotEqual( + defaultGlyph.Value.GlyphMetrics.Bounds, + variedGlyph.Value.GlyphMetrics.Bounds); + } + + [Theory] + [InlineData("TestGVAROne")] + [InlineData("TestGVARTwo")] + [InlineData("TestGVARThree")] + public void GVar_AllPointShareModes_ProduceSameResult(string fontName) + { + // fontkit tests: all three TestGVAR fonts should produce identical results + // at wght=300 for "彌" — they differ only in how points are shared in gvar. + string fontPath = fontName switch + { + "TestGVAROne" => TestFonts.TestGVAROne, + "TestGVARTwo" => TestFonts.TestGVARTwo, + "TestGVARThree" => TestFonts.TestGVARThree, + _ => throw new ArgumentException(fontName) + }; + + FontFamily family = new FontCollection().Add(fontPath); + Font variedFont = family.CreateFont(12, new FontVariation("wght", 300)); + + CodePoint cp = new('彌'); + Assert.True(variedFont.TryGetGlyphs(cp, out Glyph? glyph)); + + // All three fonts should produce glyph metrics at this variation. + Assert.NotNull(glyph); + } + + [Fact] + public void GVar_AllThreeFontsProduceIdenticalBounds() + { + // All three TestGVAR fonts encode the same variation data differently. + // They should produce identical glyph bounds at the same axis value. + Font font1 = new FontCollection().Add(TestFonts.TestGVAROne).CreateFont(12, new FontVariation("wght", 300)); + Font font2 = new FontCollection().Add(TestFonts.TestGVARTwo).CreateFont(12, new FontVariation("wght", 300)); + Font font3 = new FontCollection().Add(TestFonts.TestGVARThree).CreateFont(12, new FontVariation("wght", 300)); + + CodePoint cp = new('彌'); + font1.TryGetGlyphs(cp, out Glyph? g1); + font2.TryGetGlyphs(cp, out Glyph? g2); + font3.TryGetGlyphs(cp, out Glyph? g3); + + // Bounds should be identical across all three encoding modes. + Assert.Equal(g1.Value.GlyphMetrics.Width, g2.Value.GlyphMetrics.Width); + Assert.Equal(g1.Value.GlyphMetrics.Width, g3.Value.GlyphMetrics.Width); + Assert.Equal(g1.Value.GlyphMetrics.Height, g2.Value.GlyphMetrics.Height); + Assert.Equal(g1.Value.GlyphMetrics.Height, g3.Value.GlyphMetrics.Height); + } + + [Fact] + public void HVAR_AdvanceWidthVariesWithWeight() + { + // fontkit: TestGVARFour at wght=150, glyph 'O' should have advanceWidth=706 + FontFamily family = new FontCollection().Add(TestFonts.TestGVARFour); + Font variedFont = family.CreateFont(12, new FontVariation("wght", 150)); + + CodePoint cp = new('O'); + Assert.True(variedFont.TryGetGlyphs(cp, out Glyph? glyph)); + + Assert.Equal(706, glyph.Value.GlyphMetrics.AdvanceWidth); + } + + [Fact] + public void HVAR_FallsBackToLastEntry() + { + // fontkit: TestHVARTwo at wght=400, glyph 'A' should have advanceWidth=584 + FontFamily family = new FontCollection().Add(TestFonts.TestHVARTwo); + Font variedFont = family.CreateFont(12, new FontVariation("wght", 400)); + + CodePoint cp = new('A'); + Assert.True(variedFont.TryGetGlyphs(cp, out Glyph? glyph)); + + Assert.Equal(584, glyph.Value.GlyphMetrics.AdvanceWidth); + } + + [Fact] + public void HVAR_DefaultWeightPreservesOriginalWidth() + { + // fontkit: TestGVARFour at default wght (1000), glyph 'O' advanceWidth=700 + // At default axis value the HVAR delta should be zero. + FontFamily family = new FontCollection().Add(TestFonts.TestGVARFour); + Font defaultFont = family.CreateFont(12); + + Assert.True(defaultFont.FontMetrics.TryGetVariationAxes(out VariationAxis[]? axes)); + VariationAxis wghtAxis = Assert.Single(axes!, a => a.Tag == "wght"); + + Font variedFont = family.CreateFont(12, new FontVariation("wght", wghtAxis.Default)); + + CodePoint cp = new('O'); + defaultFont.TryGetGlyphs(cp, out Glyph? defaultGlyph); + variedFont.TryGetGlyphs(cp, out Glyph? variedGlyph); + + Assert.Equal(defaultGlyph.Value.GlyphMetrics.AdvanceWidth, variedGlyph.Value.GlyphMetrics.AdvanceWidth); + } + + [Fact] + public void HVAR_AdvanceWidthAtSpecificWeight() + { + // fontkit: TestGVARFour at wght=150, glyph 'O' should have advanceWidth=706 + FontFamily family = new FontCollection().Add(TestFonts.TestGVARFour); + Font variedFont = family.CreateFont(12, new FontVariation("wght", 150)); + + CodePoint cp = new('O'); + Assert.True(variedFont.TryGetGlyphs(cp, out Glyph? glyph)); + + Assert.Equal(706, glyph.Value.GlyphMetrics.AdvanceWidth); + } + + [Fact] + public void CFF2_VariedGlyphDiffersFromDefault() + { + FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototype); + Font defaultFont = family.CreateFont(12); + Font lightFont = family.CreateFont(12, new FontVariation("wght", 200)); + Font boldFont = family.CreateFont(12, new FontVariation("wght", 900)); + + CodePoint cp = new('A'); + defaultFont.TryGetGlyphs(cp, out Glyph? defaultGlyph); + lightFont.TryGetGlyphs(cp, out Glyph? lightGlyph); + boldFont.TryGetGlyphs(cp, out Glyph? boldGlyph); + + // Bold should be wider than default, light should be narrower. + Assert.True(boldGlyph.Value.GlyphMetrics.AdvanceWidth >= defaultGlyph.Value.GlyphMetrics.AdvanceWidth); + } + + [Fact] + public void CFF2_DifferentWeightsProduceDifferentBounds() + { + FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototype); + Font font200 = family.CreateFont(12, new FontVariation("wght", 200)); + Font font900 = family.CreateFont(12, new FontVariation("wght", 900)); + + CodePoint cp = new('A'); + font200.TryGetGlyphs(cp, out Glyph? g200); + font900.TryGetGlyphs(cp, out Glyph? g900); + + // Bounds should differ between light and heavy weights. + Assert.NotEqual(g200.Value.GlyphMetrics.Width, g900.Value.GlyphMetrics.Width); + } + + [Fact] + public void CFF2_GSUB_SubstitutesGlyphAtHeavyWeight() + { + // fontkit: AdobeVFPrototype at wght=900, '$' substitutes to 'dollar.nostroke' (glyphId 2). + // GSUB FeatureVariations activate alternate glyphs based on axis values. + // Must use TextRenderer to trigger GSUB. + FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototype); + Font defaultFont = family.CreateFont(12); + Font heavyFont = family.CreateFont(12, new FontVariation("wght", 900)); + + GlyphRenderer defaultRenderer = new(); + TextRenderer.RenderTextTo(defaultRenderer, "$", new TextOptions(defaultFont)); + + GlyphRenderer heavyRenderer = new(); + TextRenderer.RenderTextTo(heavyRenderer, "$", new TextOptions(heavyFont)); + + // The GSUB substitution should produce a different glyph ID at wght=900. + Assert.NotEqual(defaultRenderer.GlyphKeys[0].GlyphId, heavyRenderer.GlyphKeys[0].GlyphId); + } + + [Fact] + public void MVAR_MetricsVaryWithAxisValues() + { + // RobotoFlex has MVAR table. Global metrics should change with weight. + FontFamily family = new FontCollection().Add(TestFonts.RobotoFlex); + Font defaultFont = family.CreateFont(12); + Font heavyFont = family.CreateFont(12, new FontVariation("wght", 1000)); + + // Ascender/descender may change with MVAR. + // At minimum, the font should load successfully with both axis values. + Assert.NotNull(defaultFont.FontMetrics); + Assert.NotNull(heavyFont.FontMetrics); + + // UnitsPerEm should remain the same (not affected by MVAR). + Assert.Equal(defaultFont.FontMetrics.UnitsPerEm, heavyFont.FontMetrics.UnitsPerEm); + } + + [Fact] + public void GPOS_MarkAnchorPositionsVaryWithWeight() + { + // fontkit: Mada-VF at wght=900, layout 'ف', positions[0] xOffset≈639, yOffset≈542. + // The mark positioning should differ between default and heavy weights. + FontFamily family = new FontCollection().Add(TestFonts.MadaVF); + Font defaultFont = family.CreateFont(72); + Font heavyFont = family.CreateFont(72, new FontVariation("wght", 900)); + + GlyphRenderer defaultRenderer = new(); + TextRenderer.RenderTextTo(defaultRenderer, "\u0641", new TextOptions(defaultFont)); + + GlyphRenderer heavyRenderer = new(); + TextRenderer.RenderTextTo(heavyRenderer, "\u0641", new TextOptions(heavyFont)); + + // Both should render, and the glyph bounds should differ due to + // GPOS mark anchor adjustments varying with weight. + Assert.NotEmpty(defaultRenderer.GlyphRects); + Assert.NotEmpty(heavyRenderer.GlyphRects); + Assert.NotEqual(defaultRenderer.GlyphRects[0], heavyRenderer.GlyphRects[0]); + } + + [Fact] + public void MultipleVariationInstances_DoNotInterfere() + { + // Create two different variation instances from the same base font. + // They should produce different results without corrupting each other. + FontFamily family = new FontCollection().Add(TestFonts.TestGVARFour); + Font lightFont = family.CreateFont(12, new FontVariation("wght", 150)); + Font heavyFont = family.CreateFont(12, new FontVariation("wght", 900)); + + CodePoint cp = new('O'); + lightFont.TryGetGlyphs(cp, out Glyph? lightGlyph); + heavyFont.TryGetGlyphs(cp, out Glyph? heavyGlyph); + + // Both should succeed. + Assert.NotNull(lightGlyph); + Assert.NotNull(heavyGlyph); + + // They should produce different advance widths. + Assert.NotEqual( + lightGlyph.Value.GlyphMetrics.AdvanceWidth, + heavyGlyph.Value.GlyphMetrics.AdvanceWidth); + } + + [Fact] + public void VariationInstance_DoesNotCorruptBaseFont() + { + // Get a glyph from the default font, then create a variation, + // then get the same glyph from the default font again. + // The default font should not be affected. + FontFamily family = new FontCollection().Add(TestFonts.TestGVARFour); + Font defaultFont = family.CreateFont(12); + + CodePoint cp = new('O'); + defaultFont.TryGetGlyphs(cp, out Glyph? before); + ushort widthBefore = before.Value.GlyphMetrics.AdvanceWidth; + + // Create and use a variation instance. + Font variedFont = family.CreateFont(12, new FontVariation("wght", 150)); + variedFont.TryGetGlyphs(cp, out _); + + // Default font should still produce the same width. + defaultFont.TryGetGlyphs(cp, out Glyph? after); + Assert.Equal(widthBefore, after.Value.GlyphMetrics.AdvanceWidth); + } + + [Fact] + public void TextMeasurer_AdvanceChangesWithVariation() + { + FontFamily family = new FontCollection().Add(TestFonts.RobotoFlex); + Font thinFont = family.CreateFont(72, new FontVariation("wght", 100)); + Font heavyFont = family.CreateFont(72, new FontVariation("wght", 1000)); + + TextOptions thinOptions = new(thinFont); + TextOptions heavyOptions = new(heavyFont); + + FontRectangle thinAdvance = TextMeasurer.MeasureAdvance("Hello", thinOptions); + FontRectangle heavyAdvance = TextMeasurer.MeasureAdvance("Hello", heavyOptions); + + // Heavy weight should produce a wider advance than thin. + Assert.True( + heavyAdvance.Width > thinAdvance.Width, + $"Heavy advance ({heavyAdvance.Width}) should be wider than thin ({thinAdvance.Width})"); + } + + [Fact] + public void TextMeasurer_MultipleAxesWork() + { + FontFamily family = new FontCollection().Add(TestFonts.RobotoFlex); + Font font = family.CreateFont( + 72, + new FontVariation("wght", 700), + new FontVariation("wdth", 75)); + + TextOptions options = new(font); + FontRectangle advance = TextMeasurer.MeasureAdvance("Test", options); + + // Should produce a valid non-zero measurement. + Assert.True(advance.Width > 0); + Assert.True(advance.Height > 0); + } + + [Fact] + public void Renderer_VariedFontProducesGlyphs() + { + FontFamily family = new FontCollection().Add(TestFonts.TestGVAROne); + Font variedFont = family.CreateFont(12, new FontVariation("wght", 300)); + + GlyphRenderer renderer = new(); + TextRenderer.RenderTextTo(renderer, "彌", new TextOptions(variedFont)); + + Assert.NotEmpty(renderer.GlyphKeys); + Assert.NotEmpty(renderer.GlyphRects); + } + + [Fact] + public void Renderer_DifferentVariationsProduceDifferentControlPoints() + { + FontFamily family = new FontCollection().Add(TestFonts.TestGVAROne); + Font defaultFont = family.CreateFont(72); + Font variedFont = family.CreateFont(72, new FontVariation("wght", 300)); + + GlyphRenderer defaultRenderer = new(); + TextRenderer.RenderTextTo(defaultRenderer, "彌", new TextOptions(defaultFont)); + + GlyphRenderer variedRenderer = new(); + TextRenderer.RenderTextTo(variedRenderer, "彌", new TextOptions(variedFont)); + + // Both should produce control points, but they should differ. + Assert.NotEmpty(defaultRenderer.ControlPoints); + Assert.NotEmpty(variedRenderer.ControlPoints); + + // At least some control points should differ between the two variations. + bool anyDifference = false; + int count = Math.Min(defaultRenderer.ControlPoints.Count, variedRenderer.ControlPoints.Count); + for (int i = 0; i < count; i++) + { + if (defaultRenderer.ControlPoints[i] != variedRenderer.ControlPoints[i]) + { + anyDifference = true; + break; + } + } + + Assert.True(anyDifference, "Control points should differ between default and varied glyphs"); + } + + [Fact] + public void Renderer_CFF2_VariedFontProducesGlyphs() + { + FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototype); + Font variedFont = family.CreateFont(12, new FontVariation("wght", 900)); + + GlyphRenderer renderer = new(); + TextRenderer.RenderTextTo(renderer, "A", new TextOptions(variedFont)); + + Assert.NotEmpty(renderer.GlyphKeys); + } + + [Fact] + public void NotoSansHK_VariableWeight_LoadsSuccessfully() + { + FontFamily family = new FontCollection().Add(TestFonts.NotoSansHKVariableFontWght); + Font thinFont = family.CreateFont(12, new FontVariation("wght", 100)); + Font boldFont = family.CreateFont(12, new FontVariation("wght", 900)); + + Assert.NotNull(thinFont.FontMetrics); + Assert.NotNull(boldFont.FontMetrics); + } + + [Fact] + public void NotoEmoji_GVar_OutlinesVaryWithWeight() + { + // Noto Emoji is a TrueType variable font (gvar/HVAR) with a weight axis (300–700, default 400). + // Advance width stays constant at 2600 across weights, but glyph outlines change. + // Verified against fontkit: star U+2B50 glyphId=184, advance=2600 at all weights, + // light bbox={233,-320,2367,1720}, bold bbox={203,-350,2397,1750}. + FontFamily family = new FontCollection().Add(TestFonts.NotoEmojiVariableFont); + Font lightFont = family.CreateFont(12, new FontVariation("wght", 300)); + Font boldFont = family.CreateFont(12, new FontVariation("wght", 700)); + + // Advance width should be constant across weights. + CodePoint cp = new(0x2B50); + Assert.True(lightFont.TryGetGlyphs(cp, out Glyph? lightGlyph)); + Assert.True(boldFont.TryGetGlyphs(cp, out Glyph? boldGlyph)); + Assert.Equal(2600, lightGlyph.Value.GlyphMetrics.AdvanceWidth); + Assert.Equal(2600, boldGlyph.Value.GlyphMetrics.AdvanceWidth); + + // Render both and verify outlines differ. + GlyphRenderer lightRenderer = new(); + TextRenderer.RenderTextTo(lightRenderer, "\u2B50", new TextOptions(lightFont)); + + GlyphRenderer boldRenderer = new(); + TextRenderer.RenderTextTo(boldRenderer, "\u2B50", new TextOptions(boldFont)); + + Assert.NotEmpty(lightRenderer.ControlPoints); + Assert.NotEmpty(boldRenderer.ControlPoints); + + // Control points should differ between light and bold weights. + bool anyDifference = false; + int count = Math.Min(lightRenderer.ControlPoints.Count, boldRenderer.ControlPoints.Count); + for (int i = 0; i < count; i++) + { + if (lightRenderer.ControlPoints[i] != boldRenderer.ControlPoints[i]) + { + anyDifference = true; + break; + } + } + + Assert.True(anyDifference, "Glyph outlines should differ between light and bold weights"); + } + + [Theory] + [InlineData(300, "Light")] + [InlineData(400, "Regular")] + [InlineData(700, "Bold")] + public void VisualTest_NotoEmoji_WeightVariations(float weight, string label) + { + FontFamily family = new FontCollection().Add(TestFonts.NotoEmojiVariableFont); + Font font = family.CreateFont(48, new FontVariation("wght", weight)); + + TextOptions options = new(font); + + TextLayoutTestUtilities.TestLayout( + "\u2B50\u263A\u2764\u270C", + options, + properties: [label, weight]); + } + + [Theory] + [InlineData(100, "Thin")] + [InlineData(400, "Regular")] + [InlineData(700, "Bold")] + [InlineData(1000, "Heavy")] + public void VisualTest_RobotoFlex_WeightVariations(float weight, string label) + { + FontFamily family = new FontCollection().Add(TestFonts.RobotoFlex); + Font font = family.CreateFont(36, new FontVariation("wght", weight)); + + TextOptions options = new(font); + + TextLayoutTestUtilities.TestLayout( + "The quick brown fox jumps over the lazy dog.", + options, + properties: [label, weight]); + } + + [Theory] + [InlineData(200, "Light")] + [InlineData(900, "Black")] + public void VisualTest_AdobeVFPrototype_CFF2_WeightVariations(float weight, string label) + { + FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototype); + Font font = family.CreateFont(48, new FontVariation("wght", weight)); + + TextOptions options = new(font); + + TextLayoutTestUtilities.TestLayout( + "ABCDEFGH", + options, + properties: [label, weight]); + } + + [Fact] + public void VisualTest_RobotoFlex_MultipleAxes() + { + FontFamily family = new FontCollection().Add(TestFonts.RobotoFlex); + Font font = family.CreateFont( + 36, + new FontVariation("wght", 700), + new FontVariation("wdth", 75)); + + TextOptions options = new(font); + + TextLayoutTestUtilities.TestLayout( + "Multiple variation axes", + options); + } +} diff --git a/tests/SixLabors.Fonts.Tests/TestFonts.cs b/tests/SixLabors.Fonts.Tests/TestFonts.cs index aa16d0b32..f1977a69d 100644 --- a/tests/SixLabors.Fonts.Tests/TestFonts.cs +++ b/tests/SixLabors.Fonts.Tests/TestFonts.cs @@ -203,16 +203,58 @@ public static class TestFonts public static string RobotoRegular => GetFullPath("Roboto-Regular.ttf"); /// - /// Gets a CFF2 font with variations tables. + /// Gets the RobotoFlex variable font with CFF2 outlines and multiple variation axes + /// including weight, width, slant, and optical size. /// public static string RobotoFlex => GetFullPath("RobotoFlex.ttf"); /// - /// Gets a CFF2 font with variations tables. - /// From https://github.com/adobe-fonts/adobe-variable-font-prototype.git + /// Gets the Adobe Variable Font Prototype with CFF2 outlines and weight variations. + /// From . /// public static string AdobeVFPrototype => GetFullPath("AdobeVFPrototype.ttf"); + /// + /// Gets a subset of AdobeVFPrototype with CFF2 variations and GSUB feature variations. + /// From fontkit test data. + /// + public static string AdobeVFPrototypeSubset => GetFullPath("AdobeVFPrototype-Subset.otf"); + + /// + /// Gets a gvar test font using shared all-points deltas. From fontkit test data. + /// + public static string TestGVAROne => GetFullPath("TestGVAROne.ttf"); + + /// + /// Gets a gvar test font using shared enumerated-points deltas. From fontkit test data. + /// + public static string TestGVARTwo => GetFullPath("TestGVARTwo.ttf"); + + /// + /// Gets a gvar test font using no shared points. From fontkit test data. + /// + public static string TestGVARThree => GetFullPath("TestGVARThree.ttf"); + + /// + /// Gets a gvar test font with two axes (cntr and wght) and an HVAR table. From fontkit test data. + /// + public static string TestGVARFour => GetFullPath("TestGVARFour.ttf"); + + /// + /// Gets a test font with HVAR fallback (DeltaSetIndexMap) behavior. From fontkit test data. + /// + public static string TestHVARTwo => GetFullPath("TestHVARTwo.ttf"); + + /// + /// Gets the Mada variable font (Arabic) with GPOS mark anchor variations. From fontkit test data. + /// + public static string MadaVF => GetFullPath("Mada-VF.ttf"); + + /// + /// Gets the Noto Emoji variable font with a weight axis (300–700) using gvar/HVAR. + /// + public static string NotoEmojiVariableFont => GetFullPath("NotoEmoji-VariableFont_wght.ttf"); + public static string SimpleTrueTypeCollection => GetFullPath("Sample.ttc"); public static string WhitneyBookFile => GetFullPath("whitney-book.ttf"); From 333f7c951b3b98a91d6d22aacdd34e5ad853d592 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 19:39:59 +1000 Subject: [PATCH 52/56] Remove dead comment --- src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs index 53e71e848..8d039bc4c 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.TrueType.cs @@ -95,10 +95,6 @@ internal void ApplyTrueTypeHinting(HintingMode hintingMode, GlyphMetrics metrics private static StreamFontMetrics LoadTrueTypeFont(FontReader reader) { - // TODO: This doesn't seem correct. The glyf table should only load the raw data. - // Transformations should probably be applied later when glyphs are requested. - // Load glyph variations related tables first, because glyph table needs them. - // Load using recommended order for best performance. // https://learn.microsoft.com/en-gb/typography/opentype/spec/recom#optimized-table-ordering // 'head', 'hhea', 'maxp', OS/2, 'hmtx', LTSH, VDMX, 'hdmx', 'cmap', 'fpgm', 'prep', 'cvt ', 'loca', 'glyf', 'kern', 'name', 'post', 'gasp', PCLT, DSIG From 8b0de9759ef04ed1af72ad75046372a1c660cc07 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 19:52:20 +1000 Subject: [PATCH 53/56] Create KnownVariationAxes.cs --- src/SixLabors.Fonts/KnownVariationAxes.cs | 48 +++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/SixLabors.Fonts/KnownVariationAxes.cs diff --git a/src/SixLabors.Fonts/KnownVariationAxes.cs b/src/SixLabors.Fonts/KnownVariationAxes.cs new file mode 100644 index 000000000..0a724b51d --- /dev/null +++ b/src/SixLabors.Fonts/KnownVariationAxes.cs @@ -0,0 +1,48 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +namespace SixLabors.Fonts; + +/// +/// Defines the registered design-variation axis tags for variable fonts. +/// These tags are used with to control font design axes. +/// +/// +public static class KnownVariationAxes +{ + /// + /// Italic axis ('ital'). Controls the italic angle of the font. + /// Value range: 0 (upright) to 1 (italic). + /// + /// + public const string Italic = "ital"; + + /// + /// Optical size axis ('opsz'). Adjusts the design for a specific text size in points. + /// Typical range: 6 to 144. Larger values optimize for display use; smaller for body text. + /// + /// + public const string OpticalSize = "opsz"; + + /// + /// Slant axis ('slnt'). Controls the slant angle of upright glyphs in degrees. + /// Typical range: -90 to 90. Negative values slant to the right (the common direction). + /// + /// + public const string Slant = "slnt"; + + /// + /// Width axis ('wdth'). Controls the relative width of the font as a percentage of normal. + /// Typical range: 75 (condensed) to 125 (expanded). 100 represents the normal width. + /// + /// + public const string Width = "wdth"; + + /// + /// Weight axis ('wght'). Controls the weight (boldness) of the font. + /// Range: 1 to 1000. Common values: 100 (Thin), 300 (Light), 400 (Regular), + /// 700 (Bold), 900 (Black). + /// + /// + public const string Weight = "wght"; +} From 286fa0375b78813dfa6ae1b30a78a7e67cca06c2 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 20:26:08 +1000 Subject: [PATCH 54/56] Support CFF2 index parsing & add variation tests --- src/SixLabors.Fonts/StreamFontMetrics.cs | 9 +- src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs | 167 +++--------------- .../Tables/Cff/CffParserBase.cs | 15 +- ...ype_GVar_WeightVariations_-Black--900.png} | 0 ...ype_GVar_WeightVariations_-Light--200.png} | 0 .../Tables/Variations/VariationFontTests.cs | 85 ++++++++- tests/SixLabors.Fonts.Tests/TestFonts.cs | 2 +- 7 files changed, 114 insertions(+), 164 deletions(-) rename tests/Images/ReferenceOutput/{VisualTest_AdobeVFPrototype_CFF2_WeightVariations_-Black--900.png => VisualTest_AdobeVFPrototype_GVar_WeightVariations_-Black--900.png} (100%) rename tests/Images/ReferenceOutput/{VisualTest_AdobeVFPrototype_CFF2_WeightVariations_-Light--200.png => VisualTest_AdobeVFPrototype_GVar_WeightVariations_-Light--200.png} (100%) diff --git a/src/SixLabors.Fonts/StreamFontMetrics.cs b/src/SixLabors.Fonts/StreamFontMetrics.cs index 9a8a95a71..a5fcf3134 100644 --- a/src/SixLabors.Fonts/StreamFontMetrics.cs +++ b/src/SixLabors.Fonts/StreamFontMetrics.cs @@ -273,15 +273,16 @@ internal override bool TryGetMarkAttachmentClass(ushort glyphId, [NotNullWhen(tr /// public override bool TryGetVariationAxes(out VariationAxis[]? variationAxes) { - if (this.trueTypeFontTables?.Fvar == null) + FVarTable? fvar = this.trueTypeFontTables?.Fvar ?? this.compactFontTables?.FVar; + Tables.General.Name.NameTable? names = this.trueTypeFontTables?.Name ?? this.compactFontTables?.Name; + + if (fvar == null) { variationAxes = []; return false; } - FVarTable? fvar = this.trueTypeFontTables?.Fvar; - Tables.General.Name.NameTable? names = this.trueTypeFontTables?.Name; - variationAxes = new VariationAxis[fvar!.Axes.Length]; + variationAxes = new VariationAxis[fvar.Axes.Length]; for (int i = 0; i < fvar.Axes.Length; i++) { VariationAxisRecord axis = fvar.Axes[i]; diff --git a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs index 3cf9eea8a..bb9e16994 100644 --- a/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs +++ b/src/SixLabors.Fonts/Tables/Cff/Cff2Parser.cs @@ -1,7 +1,6 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -using System.Diagnostics.CodeAnalysis; using SixLabors.Fonts.Tables.AdvancedTypographic.Variations; namespace SixLabors.Fonts.Tables.Cff; @@ -37,15 +36,22 @@ public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictL FDSelect = this.fdSelectOffset.GetValueOrDefault(), }; - byte[][] globalSubrRawBuffers = ReadGlobalSubrIndex(reader); + byte[][] globalSubrRawBuffers = ReadSubrBuffer(reader, cff2: true); - // Length in bytes of the Item Variation Store structure that follows. - reader.Seek(this.variationStoreOffset, SeekOrigin.Begin); - ushort variationStoreLength = reader.ReadUInt16(); - this.itemVariationStore = variationStoreLength == 0 ? EmptyItemVariationStoreTable : ItemVariationStore.Load(reader, this.variationStoreOffset + 2); - - // Make sure we point to the stream to the end of the variation store data. - reader.Seek(offset + variationStoreLength, SeekOrigin.Begin); + // The Item Variation Store is optional. When present, its offset is + // relative to the start of the CFF2 table. + if (this.variationStoreOffset > 0) + { + reader.Seek(this.variationStoreOffset, SeekOrigin.Begin); + ushort variationStoreLength = reader.ReadUInt16(); + this.itemVariationStore = variationStoreLength == 0 + ? EmptyItemVariationStoreTable + : ItemVariationStore.Load(reader, this.variationStoreOffset + 2); + } + else + { + this.itemVariationStore = EmptyItemVariationStoreTable; + } if (this.fdSelectOffset.HasValue) { @@ -56,14 +62,16 @@ public Cff2Font Load(BigEndianBinaryReader reader, byte hdrSize, ushort topDictL byte[][] charStringBuffers = ReadCharStringBuffers(reader, charStringOffsets); int fdArrayOffset = this.fdArrayOffset.GetValueOrDefault(); - FontDict[] fontDicts = this.ReadFdArray(reader, this.offset, fdArrayOffset); + FontDict[] fontDicts = this.ReadFdArray(reader, this.offset, fdArrayOffset, cff2: true); CffTopDictionary topDictionary = new() { CidFontInfo = cidFontInfo, FontMatrix = this.fontMatrix ?? [0.001, 0, 0, 0.001, 0, 0] }; - CffPrivateDictionary privateDictionary = new(fontDicts[0].LocalSubr, 0, 0); + CffPrivateDictionary privateDictionary = fontDicts.Length > 0 + ? new(fontDicts[0].LocalSubr, 0, 0) + : new([], 0, 0); int glyphCount = charStringOffsets.Length; CffGlyphData[] glyphs = this.ReadCharStringsIndex(topDictionary, globalSubrRawBuffers, fontDicts, privateDictionary, charStringBuffers, glyphCount); @@ -105,59 +113,10 @@ private void ReadTopDictData(BigEndianBinaryReader reader, ushort topDictLength) } } - private static byte[][] ReadGlobalSubrIndex(BigEndianBinaryReader reader, bool cff2 = true) - - // 16. Local / Global Subrs INDEXes - // Both Type 1 and Type 2 charstrings support the notion of - // subroutines or subrs. - - // A subr is typically a sequence of charstring - // bytes representing a sub - program that occurs in more than one - // place in a font’s charstring data. - - // This subr may be stored once - // but referenced many times from within one or more charstrings - // by the use of the call subr operator whose operand is the - // number of the subr to be called. - - // The subrs are local to a particular font and - // cannot be shared between fonts. - - // Type 2 charstrings also permit global subrs which function in the same - // way but are called by the call gsubr operator and may be shared - // across fonts. - - // Local subrs are stored in an INDEX structure which is located via - // the offset operand of the Subrs operator in the Private DICT. - // A font without local subrs has no Subrs operator in the Private DICT. - - // Global subrs are stored in an INDEX structure which follows the - // String INDEX. A FontSet without any global subrs is represented - // by an empty Global Subrs INDEX. - => ReadSubrBuffer(reader, cff2); - - private static byte[][] ReadSubrBuffer(BigEndianBinaryReader reader, bool cff2 = true) - { - if (!TryReadIndexDataOffsets(reader, cff2, out CffIndexOffset[]? offsets)) - { - return []; - } - - byte[][] rawBufferList = new byte[offsets.Length][]; - - for (int i = 0; i < rawBufferList.Length; ++i) - { - CffIndexOffset offset = offsets[i]; - rawBufferList[i] = reader.ReadBytes(offset.Length); - } - - return rawBufferList; - } - private CffIndexOffset[] ReadCharStringIndex(BigEndianBinaryReader reader) { reader.BaseStream.Position = this.offset + this.charStringIndexOffset; - if (!TryReadIndexDataOffsets(reader, true, out CffIndexOffset[]? offsets)) + if (!TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets, cff2: true)) { throw new InvalidFontFileException("No glyph data found."); } @@ -253,90 +212,4 @@ private CffGlyphData[] ReadCharStringsIndex( return glyphs; } - - private static bool TryReadIndexDataOffsets(BigEndianBinaryReader reader, bool cff2, [NotNullWhen(true)] out CffIndexOffset[]? value) - { - // INDEX Data - // An INDEX is an array of variable-sized objects.It comprises a - // header, an offset array, and object data. - // The offset array specifies offsets within the object data. - // An object is retrieved by - // indexing the offset array and fetching the object at the - // specified offset. - // The object’s length can be determined by subtracting its offset - // from the next offset in the offset array. - // An additional offset is added at the end of the offset array so the - // length of the last object may be determined. - // The INDEX format is shown in Table 7 - - // Table 7 INDEX Format - // Type Name Description - // Card16 count Number of objects stored in INDEX - // OffSize offSize Offset array element size - // Offset offset[count + 1] Offset array(from byte preceding object data) - // Card8 data[] Object data - - // Offsets in the offset array are relative to the byte that precedes - // the object data. Therefore the first element of the offset array - // is always 1. (This ensures that every object has a corresponding - // offset which is always nonzero and permits the efficient - // implementation of dynamic object loading.) - - // An empty INDEX is represented by a count field with a 0 value - // and no additional fields.Thus, the total size of an empty INDEX - // is 2 bytes. - - // Note 2 - // An INDEX may be skipped by jumping to the offset specified by the last - // element of the offset array - uint count = cff2 ? reader.ReadUInt32() : reader.ReadUInt16(); - - if (count == 0) - { - value = null; - return false; - } - - int offSize = reader.ReadByte(); - int[] offsets = new int[count + 1]; - CffIndexOffset[] indexElems = new CffIndexOffset[count]; - for (int i = 0; i <= count; ++i) - { - offsets[i] = reader.ReadOffset(offSize); - } - - for (int i = 0; i < count; ++i) - { - indexElems[i] = new CffIndexOffset(offsets[i], offsets[i + 1] - offsets[i]); - } - - value = indexElems; - return true; - } - - private List ReadDICTData(BigEndianBinaryReader reader, int length) - { - // 4. DICT Data - - // Font dictionary data comprising key-value pairs is represented - // in a compact tokenized format that is similar to that used to - // represent Type 1 charstrings. - - // Dictionary keys are encoded as 1- or 2-byte operators and dictionary values are encoded as - // variable-size numeric operands that represent either integer or - // real values. - - //----------------------------- - // A DICT is simply a sequence of - // operand(s)/operator bytes concatenated together. - int maxIndex = (int)(reader.BaseStream.Position + length); - List dicData = new(); - while (reader.BaseStream.Position < maxIndex) - { - CffDataDicEntry dicEntry = this.ReadEntry(reader); - dicData.Add(dicEntry); - } - - return dicData; - } } diff --git a/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs b/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs index 75fd3b073..362542512 100644 --- a/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs +++ b/src/SixLabors.Fonts/Tables/Cff/CffParserBase.cs @@ -75,7 +75,7 @@ protected static void ReadFdSelect(BigEndianBinaryReader reader, long offset, Ci } } - protected FontDict[] ReadFdArray(BigEndianBinaryReader reader, long offset, long fdArrayOffset) + protected FontDict[] ReadFdArray(BigEndianBinaryReader reader, long offset, long fdArrayOffset, bool cff2 = false) { if (fdArrayOffset is 0) { @@ -84,7 +84,7 @@ protected FontDict[] ReadFdArray(BigEndianBinaryReader reader, long offset, long reader.BaseStream.Position = offset + fdArrayOffset; - if (!TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) + if (!TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets, cff2)) { return []; } @@ -135,7 +135,7 @@ protected FontDict[] ReadFdArray(BigEndianBinaryReader reader, long offset, long case "Subrs": int localSubrsOffset = (int)dicEntry.Operands[0].RealNumValue; reader.BaseStream.Position = offset + fdict.PrivateDicOffset + localSubrsOffset; - fdict.LocalSubr = ReadSubrBuffer(reader); + fdict.LocalSubr = ReadSubrBuffer(reader, cff2); break; case "vsindex": @@ -206,7 +206,7 @@ protected CffDataDicEntry ReadEntry(BigEndianBinaryReader reader) return new CffDataDicEntry(@operator!, operands.ToArray()); } - protected static bool TryReadIndexDataOffsets(BigEndianBinaryReader reader, [NotNullWhen(true)] out CffIndexOffset[]? value) + protected static bool TryReadIndexDataOffsets(BigEndianBinaryReader reader, [NotNullWhen(true)] out CffIndexOffset[]? value, bool cff2 = false) { // INDEX Data // An INDEX is an array of variable-sized objects.It comprises a @@ -241,7 +241,8 @@ protected static bool TryReadIndexDataOffsets(BigEndianBinaryReader reader, [Not // Note 2 // An INDEX may be skipped by jumping to the offset specified by the last // element of the offset array - ushort count = reader.ReadUInt16(); + // CFF2 uses a 32-bit count; CFF1 uses 16-bit. + uint count = cff2 ? reader.ReadUInt32() : reader.ReadUInt16(); if (count == 0) { value = null; @@ -265,9 +266,9 @@ protected static bool TryReadIndexDataOffsets(BigEndianBinaryReader reader, [Not return true; } - protected static byte[][] ReadSubrBuffer(BigEndianBinaryReader reader) + protected static byte[][] ReadSubrBuffer(BigEndianBinaryReader reader, bool cff2 = false) { - if (!TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets)) + if (!TryReadIndexDataOffsets(reader, out CffIndexOffset[]? offsets, cff2)) { return []; } diff --git a/tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_CFF2_WeightVariations_-Black--900.png b/tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_GVar_WeightVariations_-Black--900.png similarity index 100% rename from tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_CFF2_WeightVariations_-Black--900.png rename to tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_GVar_WeightVariations_-Black--900.png diff --git a/tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_CFF2_WeightVariations_-Light--200.png b/tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_GVar_WeightVariations_-Light--200.png similarity index 100% rename from tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_CFF2_WeightVariations_-Light--200.png rename to tests/Images/ReferenceOutput/VisualTest_AdobeVFPrototype_GVar_WeightVariations_-Light--200.png diff --git a/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationFontTests.cs b/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationFontTests.cs index c3eeaec65..b14614cc7 100644 --- a/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationFontTests.cs +++ b/tests/SixLabors.Fonts.Tests/Tables/Variations/VariationFontTests.cs @@ -233,7 +233,7 @@ public void HVAR_AdvanceWidthAtSpecificWeight() } [Fact] - public void CFF2_VariedGlyphDiffersFromDefault() + public void GVar_AdobeVFPrototype_VariedGlyphDiffersFromDefault() { FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototype); Font defaultFont = family.CreateFont(12); @@ -250,7 +250,7 @@ public void CFF2_VariedGlyphDiffersFromDefault() } [Fact] - public void CFF2_DifferentWeightsProduceDifferentBounds() + public void GVar_AdobeVFPrototype_DifferentWeightsProduceDifferentBounds() { FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototype); Font font200 = family.CreateFont(12, new FontVariation("wght", 200)); @@ -265,7 +265,7 @@ public void CFF2_DifferentWeightsProduceDifferentBounds() } [Fact] - public void CFF2_GSUB_SubstitutesGlyphAtHeavyWeight() + public void GVar_AdobeVFPrototype_GSUB_SubstitutesGlyphAtHeavyWeight() { // fontkit: AdobeVFPrototype at wght=900, '$' substitutes to 'dollar.nostroke' (glyphId 2). // GSUB FeatureVariations activate alternate glyphs based on axis values. @@ -284,6 +284,81 @@ public void CFF2_GSUB_SubstitutesGlyphAtHeavyWeight() Assert.NotEqual(defaultRenderer.GlyphKeys[0].GlyphId, heavyRenderer.GlyphKeys[0].GlyphId); } + [Fact] + public void CFF2_CanLoadFont() + { + // AdobeVFPrototype-Subset.otf is the only CFF2 font in the test suite. + // It contains 3 glyphs: .notdef, '$' (glyph 1), and 'dollar.nostroke' (glyph 2). + FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototypeSubset); + Font font = family.CreateFont(12); + + Assert.NotNull(font.FontMetrics); + } + + [Fact] + public void CFF2_CanLoadVariationAxes() + { + FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototypeSubset); + Font font = family.CreateFont(12); + + Assert.True(font.FontMetrics.TryGetVariationAxes(out VariationAxis[]? axes)); + Assert.Equal(2, axes!.Length); + Assert.Equal("wght", axes[0].Tag); + } + + [Fact] + public void CFF2_CanCreateFontWithVariation() + { + FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototypeSubset); + Font variedFont = family.CreateFont(12, new FontVariation("wght", 900)); + + Assert.Single(variedFont.Variations.ToArray()); + } + + [Fact] + public void CFF2_RendersGlyphAtDefaultWeight() + { + FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototypeSubset); + Font font = family.CreateFont(48); + + GlyphRenderer renderer = new(); + TextRenderer.RenderTextTo(renderer, "$", new TextOptions(font)); + + Assert.NotEmpty(renderer.GlyphKeys); + Assert.NotEmpty(renderer.ControlPoints); + } + + [Fact] + public void CFF2_RendersGlyphAtVariedWeight() + { + FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototypeSubset); + Font font = family.CreateFont(48, new FontVariation("wght", 900)); + + GlyphRenderer renderer = new(); + TextRenderer.RenderTextTo(renderer, "$", new TextOptions(font)); + + Assert.NotEmpty(renderer.GlyphKeys); + Assert.NotEmpty(renderer.ControlPoints); + } + + [Fact] + public void CFF2_MultipleWeightsRenderSuccessfully() + { + // Verify the CFF2 parser handles charstrings at multiple weight values. + FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototypeSubset); + Font lightFont = family.CreateFont(48, new FontVariation("wght", 0)); + Font heavyFont = family.CreateFont(48, new FontVariation("wght", 900)); + + GlyphRenderer lightRenderer = new(); + TextRenderer.RenderTextTo(lightRenderer, "$", new TextOptions(lightFont)); + + GlyphRenderer heavyRenderer = new(); + TextRenderer.RenderTextTo(heavyRenderer, "$", new TextOptions(heavyFont)); + + Assert.NotEmpty(lightRenderer.ControlPoints); + Assert.NotEmpty(heavyRenderer.ControlPoints); + } + [Fact] public void MVAR_MetricsVaryWithAxisValues() { @@ -450,7 +525,7 @@ public void Renderer_DifferentVariationsProduceDifferentControlPoints() } [Fact] - public void Renderer_CFF2_VariedFontProducesGlyphs() + public void Renderer_GVar_AdobeVFPrototype_VariedFontProducesGlyphs() { FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototype); Font variedFont = family.CreateFont(12, new FontVariation("wght", 900)); @@ -553,7 +628,7 @@ public void VisualTest_RobotoFlex_WeightVariations(float weight, string label) [Theory] [InlineData(200, "Light")] [InlineData(900, "Black")] - public void VisualTest_AdobeVFPrototype_CFF2_WeightVariations(float weight, string label) + public void VisualTest_AdobeVFPrototype_GVar_WeightVariations(float weight, string label) { FontFamily family = new FontCollection().Add(TestFonts.AdobeVFPrototype); Font font = family.CreateFont(48, new FontVariation("wght", weight)); diff --git a/tests/SixLabors.Fonts.Tests/TestFonts.cs b/tests/SixLabors.Fonts.Tests/TestFonts.cs index f1977a69d..b984327cf 100644 --- a/tests/SixLabors.Fonts.Tests/TestFonts.cs +++ b/tests/SixLabors.Fonts.Tests/TestFonts.cs @@ -209,7 +209,7 @@ public static class TestFonts public static string RobotoFlex => GetFullPath("RobotoFlex.ttf"); /// - /// Gets the Adobe Variable Font Prototype with CFF2 outlines and weight variations. + /// Gets the Adobe Variable Font Prototype with TrueType/gvar outlines and weight/contrast variations. /// From . /// public static string AdobeVFPrototype => GetFullPath("AdobeVFPrototype.ttf"); From 162f4a11347cc46018ace01abe0f62358f554a12 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 20:33:51 +1000 Subject: [PATCH 55/56] Delete GlyphNameMap.cs --- .../Tables/Cff/GlyphNameMap.cs | 26 ------------------- 1 file changed, 26 deletions(-) delete mode 100644 src/SixLabors.Fonts/Tables/Cff/GlyphNameMap.cs diff --git a/src/SixLabors.Fonts/Tables/Cff/GlyphNameMap.cs b/src/SixLabors.Fonts/Tables/Cff/GlyphNameMap.cs deleted file mode 100644 index 8e8f6289b..000000000 --- a/src/SixLabors.Fonts/Tables/Cff/GlyphNameMap.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Six Labors. -// Licensed under the Six Labors Split License. - -namespace SixLabors.Fonts.Tables.Cff; - -/// -/// Maps a glyph index to its PostScript glyph name from the CFF charset. -/// -internal readonly struct GlyphNameMap -{ - /// - /// The glyph index within the font. - /// - public readonly ushort GlyphIndex; - - /// - /// The PostScript glyph name. - /// - public readonly string GlyphName; - - public GlyphNameMap(ushort glyphIndex, string glyphName) - { - this.GlyphIndex = glyphIndex; - this.GlyphName = glyphName; - } -} From 59b517325675f93d88b569a31e469ba8f4144b3a Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Wed, 11 Mar 2026 23:02:34 +1000 Subject: [PATCH 56/56] Add VotoSerif cvar fonts, reference images and tests --- ...CVar_WeightVariations_-Heavy--194-None.png | 3 + ..._WeightVariations_-Heavy--194-Standard.png | 3 + ..._CVar_WeightVariations_-Light--28-None.png | 3 + ...r_WeightVariations_-Light--28-Standard.png | 3 + ...Var_WeightVariations_-Regular--94-None.png | 3 + ...WeightVariations_-Regular--94-Standard.png | 3 + .../Fonts/VotoSerifGX-IUP-gvar-cvar.ttf | Bin 0 -> 122976 bytes .../VotoSerifGX-IUP-gvar-cvar_noshared.ttf | Bin 0 -> 123056 bytes .../Tables/Variations/VariationFontTests.cs | 106 ++++++++++++++++++ tests/SixLabors.Fonts.Tests/TestFonts.cs | 14 +++ 10 files changed, 138 insertions(+) create mode 100644 tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Heavy--194-None.png create mode 100644 tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Heavy--194-Standard.png create mode 100644 tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Light--28-None.png create mode 100644 tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Light--28-Standard.png create mode 100644 tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Regular--94-None.png create mode 100644 tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Regular--94-Standard.png create mode 100644 tests/SixLabors.Fonts.Tests/Fonts/VotoSerifGX-IUP-gvar-cvar.ttf create mode 100644 tests/SixLabors.Fonts.Tests/Fonts/VotoSerifGX-IUP-gvar-cvar_noshared.ttf diff --git a/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Heavy--194-None.png b/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Heavy--194-None.png new file mode 100644 index 000000000..ce25bde40 --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Heavy--194-None.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afacbc6b658b621c6d4dd338e09545eeac9d35975c71c6675714e6c7e1d822f3 +size 2367 diff --git a/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Heavy--194-Standard.png b/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Heavy--194-Standard.png new file mode 100644 index 000000000..ce25bde40 --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Heavy--194-Standard.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afacbc6b658b621c6d4dd338e09545eeac9d35975c71c6675714e6c7e1d822f3 +size 2367 diff --git a/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Light--28-None.png b/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Light--28-None.png new file mode 100644 index 000000000..ba410c269 --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Light--28-None.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5c9a4219e0b49b547e9470e3b610bc4e1abe54139f1e5197097b26c1c1461bc +size 2168 diff --git a/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Light--28-Standard.png b/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Light--28-Standard.png new file mode 100644 index 000000000..ba410c269 --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Light--28-Standard.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5c9a4219e0b49b547e9470e3b610bc4e1abe54139f1e5197097b26c1c1461bc +size 2168 diff --git a/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Regular--94-None.png b/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Regular--94-None.png new file mode 100644 index 000000000..960e9f745 --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Regular--94-None.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17ba57973e3d238940f4596a624be2d3c84ccd83cb43aeeb96f7c96c6829a5e2 +size 2378 diff --git a/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Regular--94-Standard.png b/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Regular--94-Standard.png new file mode 100644 index 000000000..960e9f745 --- /dev/null +++ b/tests/Images/ReferenceOutput/VisualTest_VotoSerif_CVar_WeightVariations_-Regular--94-Standard.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17ba57973e3d238940f4596a624be2d3c84ccd83cb43aeeb96f7c96c6829a5e2 +size 2378 diff --git a/tests/SixLabors.Fonts.Tests/Fonts/VotoSerifGX-IUP-gvar-cvar.ttf b/tests/SixLabors.Fonts.Tests/Fonts/VotoSerifGX-IUP-gvar-cvar.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e5231bb2f69da17febc1121c5ace2a86203a831f GIT binary patch literal 122976 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 literal 0 HcmV?d00001 diff --git a/tests/SixLabors.Fonts.Tests/Fonts/VotoSerifGX-IUP-gvar-cvar_noshared.ttf b/tests/SixLabors.Fonts.Tests/Fonts/VotoSerifGX-IUP-gvar-cvar_noshared.ttf new file mode 100644 index 0000000000000000000000000000000000000000..61c95460266a60f90b77336de86f7c68d720c236 GIT binary patch literal 123056 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 public static string NotoEmojiVariableFont => GetFullPath("NotoEmoji-VariableFont_wght.ttf"); + /// + /// Gets VotoSerif variable font with cvar table using shared points. + /// From fonttools test data. Axes: wght (28–194), wdth (70–100), opsz (12–72). + /// Contains 5 glyphs: .notdef, space (U+0020), 'h' (U+0068), 'n' (U+006E), 'o' (U+006F). + /// + public static string VotoSerifCvar => GetFullPath("VotoSerifGX-IUP-gvar-cvar.ttf"); + + /// + /// Gets VotoSerif variable font with cvar table without shared points. + /// From fonttools test data. Axes: wght (28–194), wdth (70–100), opsz (12–72). + /// Contains 5 glyphs: .notdef, space (U+0020), 'h' (U+0068), 'n' (U+006E), 'o' (U+006F). + /// + public static string VotoSerifCvarNoShared => GetFullPath("VotoSerifGX-IUP-gvar-cvar_noshared.ttf"); + public static string SimpleTrueTypeCollection => GetFullPath("Sample.ttc"); public static string WhitneyBookFile => GetFullPath("whitney-book.ttf");

9I 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