Class: Fontisan::Variation::Validator

Inherits:
Object
  • Object
show all
Defined in:
lib/fontisan/variation/validator.rb

Overview

Validates variable font structure and consistency

This class performs comprehensive validation of variable font tables to ensure structural integrity and catch common issues before instance generation or subsetting operations.

Validation checks:

  1. Table consistency - Verify axis counts match across tables

  2. Delta integrity - Check delta sets are complete

  3. Region coverage - Ensure regions cover design space

  4. Instance definitions - Validate instance coordinates

Examples:

Validating a variable font

validator = Fontisan::Variation::Validator.new(font)
report = validator.validate
if report[:valid]
  puts "Font is valid"
else
  report[:errors].each { |err| puts "Error: #{err}" }
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(font) ⇒ Validator

Initialize validator

Parameters:



38
39
40
41
42
# File 'lib/fontisan/variation/validator.rb', line 38

def initialize(font)
  @font = font
  @errors = []
  @warnings = []
end

Instance Attribute Details

#errorsArray<String> (readonly)

Returns Validation errors.

Returns:

  • (Array<String>)

    Validation errors



30
31
32
# File 'lib/fontisan/variation/validator.rb', line 30

def errors
  @errors
end

#fontTrueTypeFont, OpenTypeFont (readonly)

Returns Font being validated.

Returns:



27
28
29
# File 'lib/fontisan/variation/validator.rb', line 27

def font
  @font
end

#warningsArray<String> (readonly)

Returns Validation warnings.

Returns:

  • (Array<String>)

    Validation warnings



33
34
35
# File 'lib/fontisan/variation/validator.rb', line 33

def warnings
  @warnings
end

Instance Method Details

#valid?Boolean

Quick validation (essential checks only)

Returns:

  • (Boolean)

    True if font passes basic validation



69
70
71
# File 'lib/fontisan/variation/validator.rb', line 69

def valid?
  validate[:valid]
end

#validateHash

Perform full validation

Runs all validation checks and returns a detailed report.

Returns:

  • (Hash)

    Validation report with :valid, :errors, :warnings



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/fontisan/variation/validator.rb', line 49

def validate
  @errors.clear
  @warnings.clear

  check_is_variable_font
  check_table_consistency if @errors.empty?
  check_delta_integrity if @errors.empty?
  check_region_coverage if @errors.empty?
  check_instance_definitions if @errors.empty?

  {
    valid: @errors.empty?,
    errors: @errors.dup,
    warnings: @warnings.dup,
  }
end