Class: Ucode::Glyphs::SourceConfig::GapReport

Inherits:
Lutaml::Model::Serializable
  • Object
show all
Defined in:
lib/ucode/glyphs/source_config/gap_report.rb

Overview

Typed result of CoverageAssertion#call. Lists every assigned codepoint that no Tier 1 source's cmap covers, grouped by block.

Pure value object — never raises, never mutates. Callers decide what to do with gaps:

  • CI: warn, fail the build on regressions vs. baseline.
  • Local curator: print, decide what to add.
  • Production build: continue — pillar 1-2-3 catch up.

The shape round-trips through lutaml-model so it can be emitted alongside the universal-set build reports (TODO 31).

Instance Method Summary collapse

Instance Method Details

#block_ids_with_gapsArray<String>

Returns block ids that have at least one gap.

Returns:

  • (Array<String>)

    block ids that have at least one gap.



48
49
50
# File 'lib/ucode/glyphs/source_config/gap_report.rb', line 48

def block_ids_with_gaps
  gaps_by_block.keys
end

#codepoints_for(block_id) ⇒ Array<Integer>

Returns codepoints with no Tier 1 coverage in this block. Empty for blocks with full coverage or blocks that weren't walked.

Parameters:

  • block_id (String)

Returns:

  • (Array<Integer>)

    codepoints with no Tier 1 coverage in this block. Empty for blocks with full coverage or blocks that weren't walked.



43
44
45
# File 'lib/ucode/glyphs/source_config/gap_report.rb', line 43

def codepoints_for(block_id)
  Array(gaps_by_block[block_id])
end

#empty?Boolean

Returns true when every assigned codepoint in the walked range has at least one Tier 1 covering font.

Returns:

  • (Boolean)

    true when every assigned codepoint in the walked range has at least one Tier 1 covering font.



35
36
37
# File 'lib/ucode/glyphs/source_config/gap_report.rb', line 35

def empty?
  total_gaps.zero?
end