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