lib/ttfunk/table/hmtx.rb in ttfunk-1.5.1 vs lib/ttfunk/table/hmtx.rb in ttfunk-1.6.0

- old
+ new

@@ -1,5 +1,7 @@ +# frozen_string_literal: true + require_relative '../table' module TTFunk class Table class Hmtx < Table @@ -21,16 +23,21 @@ HorizontalMetric = Struct.new(:advance_width, :left_side_bearing) def for(glyph_id) @metrics[glyph_id] || - HorizontalMetric.new( - @metrics.last.advance_width, - @left_side_bearings[glyph_id - @metrics.length] - ) + metrics_cache[glyph_id] ||= + HorizontalMetric.new( + @metrics.last.advance_width, + @left_side_bearings[glyph_id - @metrics.length] + ) end private + + def metrics_cache + @metrics_cache ||= {} + end def parse! @metrics = [] file.horizontal_header.number_of_metrics.times do