Class: Ucode::Audit::Extractors::VariationDetail

Inherits:
Base
  • Object
show all
Defined in:
lib/ucode/audit/extractors/variation_detail.rb

Overview

Variable-font detail: fvar axes + named instances + presence flags for every variation side-table (avar, cvar, HVAR, VVAR, MVAR, gvar).

Returned fields:

variation: Models::Audit::VariationDetail, or nil for non-variable
           faces and Type 1 fonts

A face is considered variable iff the fvar table is present. CFF2 outlines without fvar are not “variable” by this definition (they may carry variation data but no user-facing axes).

Instance Method Summary collapse

Instance Method Details

#extract(context) ⇒ Hash{Symbol=>Object}

Parameters:

Returns:

  • (Hash{Symbol=>Object})


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/ucode/audit/extractors/variation_detail.rb', line 21

def extract(context)
  font = context.font
  return { variation: nil } unless variable?(font)

  fvar = font.table("fvar")
  return { variation: nil } unless fvar

  name_table = font.has_table?("name") ? font.table("name") : nil
  axis_tags = axis_tags_from(fvar)

  { variation: Models::Audit::VariationDetail.new(
    axes: build_axes(name_table, fvar),
    named_instances: build_instances(name_table, fvar, axis_tags),
    has_avar: font.has_table?("avar"),
    has_cvar: font.has_table?("cvar"),
    has_hvar: font.has_table?("HVAR"),
    has_vvar: font.has_table?("VVAR"),
    has_mvar: font.has_table?("MVAR"),
    has_gvar: font.has_table?("gvar"),
  ) }
end