Class: Fontisan::Validation::CollectionValidator
- Inherits:
-
Object
- Object
- Fontisan::Validation::CollectionValidator
- Defined in:
- lib/fontisan/validation/collection_validator.rb
Overview
CollectionValidator validates font compatibility for collection formats
Main responsibility: Enforce format-specific compatibility rules for TTC, OTC, and dfont collections according to OpenType spec and Apple standards.
Rules:
- TTC: TrueType fonts ONLY (per OpenType spec)
- OTC: CFF fonts required, mixed TTF+OTF allowed (Fontisan extension)
- dfont: Any SFNT fonts (TTF, OTF, or mixed)
- All: Web fonts (WOFF/WOFF2) are NEVER allowed in collections
Instance Method Summary collapse
-
#compatibility_issues(fonts, format) ⇒ Array<String>
Get compatibility issues for fonts and format.
-
#compatible?(fonts, format) ⇒ Boolean
Check if fonts are compatible with format (without raising).
-
#validate!(fonts, format) ⇒ Boolean
Validate fonts are compatible with collection format.
Instance Method Details
#compatibility_issues(fonts, format) ⇒ Array<String>
Get compatibility issues for fonts and format
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/fontisan/validation/collection_validator.rb', line 65 def compatibility_issues(fonts, format) issues = [] return ["Font array cannot be empty"] if fonts.nil? || fonts.empty? return ["Invalid format: #{format}"] unless %i[ttc otc dfont].include?(format) case format when :ttc issues.concat(ttc_issues(fonts)) when :otc issues.concat(otc_issues(fonts)) when :dfont issues.concat(dfont_issues(fonts)) end issues end |
#compatible?(fonts, format) ⇒ Boolean
Check if fonts are compatible with format (without raising)
53 54 55 56 57 58 |
# File 'lib/fontisan/validation/collection_validator.rb', line 53 def compatible?(fonts, format) validate!(fonts, format) true rescue Error false end |
#validate!(fonts, format) ⇒ Boolean
Validate fonts are compatible with collection format
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/fontisan/validation/collection_validator.rb', line 30 def validate!(fonts, format) validate_not_empty!(fonts) validate_format!(format) case format when :ttc validate_ttc!(fonts) when :otc validate_otc!(fonts) when :dfont validate_dfont!(fonts) else raise Error, "Unknown collection format: #{format}" end true end |