public override void Process(TrueTypeFont font)
        {
            if (font.hhea == null)
            {
                throw new Exception("Table processing order error. Processing the hmtx table requires the hhea table.");
            }

            Metrics = new HorizontalMetric[font.hhea.NumberOfHorizontalMetrics];

            var reader = new TrueTypeReader(Data);

            for (var m = 0; m < Metrics.Length; m++)
            {
                Metrics[m] = new HorizontalMetric()
                {
                    AdvanceWidth    = reader.ReadUFWord(),
                    LeftSideBearing = reader.ReadFWord()
                };
            }

            reader.Dispose();
        }
        public override void Process(TrueTypeFont font)
        {
            var reader = new TrueTypeReader(Data);

            Version                   = reader.ReadFixed();
            Ascender                  = reader.ReadFWord();
            Descender                 = reader.ReadFWord();
            LineGap                   = reader.ReadFWord();
            AdvanceWidthMax           = reader.ReadUFWord();
            MinLeftSideBearing        = reader.ReadFWord();
            MinRightSideBearing       = reader.ReadFWord();
            XMaxExtent                = reader.ReadFWord();
            CaretSlopeRise            = reader.ReadShort();
            CaretSlopeRun             = reader.ReadShort();
            Reserved0                 = reader.ReadShort();
            Reserved1                 = reader.ReadShort();
            Reserved2                 = reader.ReadShort();
            Reserved3                 = reader.ReadShort();
            Reserved4                 = reader.ReadShort();
            MetricDataFormat          = reader.ReadShort();
            NumberOfHorizontalMetrics = reader.ReadUShort();

            reader.Dispose();
        }