Module: Fontisan

Defined in:
lib/fontisan.rb,
lib/fontisan/cli.rb,
lib/fontisan/error.rb,
lib/fontisan/type1.rb,
lib/fontisan/version.rb,
lib/fontisan/constants.rb,
lib/fontisan/sfnt_font.rb,
lib/fontisan/type1/agl.rb,
lib/fontisan/woff_font.rb,
lib/fontisan/sfnt_table.rb,
lib/fontisan/tables/cff.rb,
lib/fontisan/tables/os2.rb,
lib/fontisan/tables/svg.rb,
lib/fontisan/type1_font.rb,
lib/fontisan/woff2_font.rb,
lib/fontisan/font_loader.rb,
lib/fontisan/font_writer.rb,
lib/fontisan/models/hint.rb,
lib/fontisan/parsers/tag.rb,
lib/fontisan/tables/cbdt.rb,
lib/fontisan/tables/cblc.rb,
lib/fontisan/tables/cff2.rb,
lib/fontisan/tables/cmap.rb,
lib/fontisan/tables/colr.rb,
lib/fontisan/tables/cpal.rb,
lib/fontisan/tables/cvar.rb,
lib/fontisan/tables/fvar.rb,
lib/fontisan/tables/glyf.rb,
lib/fontisan/tables/gpos.rb,
lib/fontisan/tables/gsub.rb,
lib/fontisan/tables/gvar.rb,
lib/fontisan/tables/head.rb,
lib/fontisan/tables/hhea.rb,
lib/fontisan/tables/hmtx.rb,
lib/fontisan/tables/hvar.rb,
lib/fontisan/tables/loca.rb,
lib/fontisan/tables/maxp.rb,
lib/fontisan/tables/mvar.rb,
lib/fontisan/tables/name.rb,
lib/fontisan/tables/post.rb,
lib/fontisan/tables/sbix.rb,
lib/fontisan/tables/vvar.rb,
lib/fontisan/woff2/header.rb,
lib/fontisan/loading_modes.rb,
lib/fontisan/glyph_accessor.rb,
lib/fontisan/models/outline.rb,
lib/fontisan/open_type_font.rb,
lib/fontisan/subset/builder.rb,
lib/fontisan/subset/options.rb,
lib/fontisan/subset/profile.rb,
lib/fontisan/true_type_font.rb,
lib/fontisan/base_collection.rb,
lib/fontisan/export/exporter.rb,
lib/fontisan/tables/cff/dict.rb,
lib/fontisan/type1/decryptor.rb,
lib/fontisan/type1/encodings.rb,
lib/fontisan/type1/generator.rb,
lib/fontisan/variation/cache.rb,
lib/fontisan/woff2/directory.rb,
lib/fontisan/dfont_collection.rb,
lib/fontisan/models/font_info.rb,
lib/fontisan/models/svg_glyph.rb,
lib/fontisan/tables/cff/index.rb,
lib/fontisan/tables/os2_table.rb,
lib/fontisan/type1/afm_parser.rb,
lib/fontisan/type1/pfa_parser.rb,
lib/fontisan/type1/pfb_parser.rb,
lib/fontisan/type1/pfm_parser.rb,
lib/fontisan/type1/upm_scaler.rb,
lib/fontisan/binary/structures.rb,
lib/fontisan/collection/writer.rb,
lib/fontisan/export/ttx_parser.rb,
lib/fontisan/models/glyph_info.rb,
lib/fontisan/models/table_info.rb,
lib/fontisan/models/ttx/ttfont.rb,
lib/fontisan/outline_extractor.rb,
lib/fontisan/tables/cff/header.rb,
lib/fontisan/tables/cmap_table.rb,
lib/fontisan/tables/glyf_table.rb,
lib/fontisan/tables/head_table.rb,
lib/fontisan/tables/hhea_table.rb,
lib/fontisan/tables/hmtx_table.rb,
lib/fontisan/tables/loca_table.rb,
lib/fontisan/tables/maxp_table.rb,
lib/fontisan/tables/name_table.rb,
lib/fontisan/tables/post_table.rb,
lib/fontisan/type1/charstrings.rb,
lib/fontisan/utils/thread_pool.rb,
lib/fontisan/binary/base_record.rb,
lib/fontisan/collection/builder.rb,
lib/fontisan/conversion_options.rb,
lib/fontisan/metrics_calculator.rb,
lib/fontisan/models/color_glyph.rb,
lib/fontisan/models/color_layer.rb,
lib/fontisan/models/font_export.rb,
lib/fontisan/models/font_report.rb,
lib/fontisan/svg/font_generator.rb,
lib/fontisan/tables/cff/charset.rb,
lib/fontisan/type1/private_dict.rb,
lib/fontisan/variable/instancer.rb,
lib/fontisan/commands/ls_command.rb,
lib/fontisan/models/bitmap_glyph.rb,
lib/fontisan/models/font_summary.rb,
lib/fontisan/models/scripts_info.rb,
lib/fontisan/svg/glyph_generator.rb,
lib/fontisan/tables/cff/encoding.rb,
lib/fontisan/tables/cff/top_dict.rb,
lib/fontisan/type1/afm_generator.rb,
lib/fontisan/type1/inf_generator.rb,
lib/fontisan/type1/pfa_generator.rb,
lib/fontisan/type1/pfb_generator.rb,
lib/fontisan/type1/pfm_generator.rb,
lib/fontisan/type1/seac_expander.rb,
lib/fontisan/variation/converter.rb,
lib/fontisan/variation/inspector.rb,
lib/fontisan/variation/optimizer.rb,
lib/fontisan/variation/subsetter.rb,
lib/fontisan/variation/validator.rb,
lib/fontisan/export/ttx_generator.rb,
lib/fontisan/hints/hint_converter.rb,
lib/fontisan/hints/hint_validator.rb,
lib/fontisan/models/bitmap_strike.rb,
lib/fontisan/models/color_palette.rb,
lib/fontisan/models/features_info.rb,
lib/fontisan/models/glyph_outline.rb,
lib/fontisan/open_type_collection.rb,
lib/fontisan/parsers/dfont_parser.rb,
lib/fontisan/subset/glyph_mapping.rb,
lib/fontisan/tables/cff/cff_glyph.rb,
lib/fontisan/tables/layout_common.rb,
lib/fontisan/true_type_collection.rb,
lib/fontisan/validators/validator.rb,
lib/fontisan/commands/base_command.rb,
lib/fontisan/commands/info_command.rb,
lib/fontisan/commands/pack_command.rb,
lib/fontisan/tables/cff/charstring.rb,
lib/fontisan/type1/font_dictionary.rb,
lib/fontisan/converters/woff_writer.rb,
lib/fontisan/models/collection_info.rb,
lib/fontisan/models/ttx/glyph_order.rb,
lib/fontisan/pipeline/output_writer.rb,
lib/fontisan/subset/table_subsetter.rb,
lib/fontisan/variable/table_updater.rb,
lib/fontisan/variation/delta_parser.rb,
lib/fontisan/variation/interpolator.rb,
lib/fontisan/woff2/glyf_transformer.rb,
lib/fontisan/woff2/hmtx_transformer.rb,
lib/fontisan/collection/shared_logic.rb,
lib/fontisan/commands/export_command.rb,
lib/fontisan/commands/glyphs_command.rb,
lib/fontisan/commands/subset_command.rb,
lib/fontisan/commands/tables_command.rb,
lib/fontisan/commands/unpack_command.rb,
lib/fontisan/converters/table_copier.rb,
lib/fontisan/export/table_serializer.rb,
lib/fontisan/models/unicode_mappings.rb,
lib/fontisan/svg/font_face_generator.rb,
lib/fontisan/svg/view_box_calculator.rb,
lib/fontisan/tables/cff/dict_builder.rb,
lib/fontisan/tables/cff/private_dict.rb,
lib/fontisan/tables/variation_common.rb,
lib/fontisan/variable/region_matcher.rb,
lib/fontisan/variation/blend_applier.rb,
lib/fontisan/variation/delta_applier.rb,
lib/fontisan/woff2/table_transformer.rb,
lib/fontisan/collection/dfont_builder.rb,
lib/fontisan/commands/convert_command.rb,
lib/fontisan/commands/scripts_command.rb,
lib/fontisan/commands/unicode_command.rb,
lib/fontisan/converters/svg_generator.rb,
lib/fontisan/converters/woff2_encoder.rb,
lib/fontisan/models/optical_size_info.rb,
lib/fontisan/models/validation_report.rb,
lib/fontisan/optimizers/stack_tracker.rb,
lib/fontisan/pipeline/format_detector.rb,
lib/fontisan/tables/cff/index_builder.rb,
lib/fontisan/tables/cff/table_builder.rb,
lib/fontisan/tables/cff2/table_reader.rb,
lib/fontisan/tables/glyf/simple_glyph.rb,
lib/fontisan/type1/conversion_options.rb,
lib/fontisan/utilities/brotli_wrapper.rb,
lib/fontisan/variable/axis_normalizer.rb,
lib/fontisan/variation/data_extractor.rb,
lib/fontisan/variation/region_matcher.rb,
lib/fontisan/variation/table_accessor.rb,
lib/fontisan/collection/table_analyzer.rb,
lib/fontisan/commands/features_command.rb,
lib/fontisan/commands/instance_command.rb,
lib/fontisan/commands/validate_command.rb,
lib/fontisan/commands/variable_command.rb,
lib/fontisan/formatters/text_formatter.rb,
lib/fontisan/models/table_sharing_info.rb,
lib/fontisan/models/variable_font_info.rb,
lib/fontisan/open_type_font_extensions.rb,
lib/fontisan/tables/cff2/operand_stack.rb,
lib/fontisan/tables/cff2/table_builder.rb,
lib/fontisan/tables/glyf/glyph_builder.rb,
lib/fontisan/true_type_font_extensions.rb,
lib/fontisan/validators/profile_loader.rb,
lib/fontisan/variable/delta_applicator.rb,
lib/fontisan/variation/instance_writer.rb,
lib/fontisan/converters/type1_converter.rb,
lib/fontisan/tables/cff2/blend_operator.rb,
lib/fontisan/tables/cff2/region_matcher.rb,
lib/fontisan/tables/glyf/compound_glyph.rb,
lib/fontisan/type1/charstring_converter.rb,
lib/fontisan/validators/basic_validator.rb,
lib/fontisan/variation/metrics_adjuster.rb,
lib/fontisan/commands/dump_table_command.rb,
lib/fontisan/converters/format_converter.rb,
lib/fontisan/hints/truetype_hint_applier.rb,
lib/fontisan/models/collection_list_info.rb,
lib/fontisan/models/ttx/tables/os2_table.rb,
lib/fontisan/optimizers/pattern_analyzer.rb,
lib/fontisan/pipeline/variation_resolver.rb,
lib/fontisan/tables/glyf/curve_converter.rb,
lib/fontisan/variation/cache_key_builder.rb,
lib/fontisan/variation/variation_context.rb,
lib/fontisan/collection/offset_calculator.rb,
lib/fontisan/converters/cff_table_builder.rb,
lib/fontisan/converters/outline_converter.rb,
lib/fontisan/converters/outline_optimizer.rb,
lib/fontisan/models/collection_brief_info.rb,
lib/fontisan/models/ttx/tables/head_table.rb,
lib/fontisan/models/ttx/tables/hhea_table.rb,
lib/fontisan/models/ttx/tables/maxp_table.rb,
lib/fontisan/models/ttx/tables/name_table.rb,
lib/fontisan/models/ttx/tables/post_table.rb,
lib/fontisan/tables/cff/charstring_parser.rb,
lib/fontisan/tables/cff/charstrings_index.rb,
lib/fontisan/type1/cff_to_type1_converter.rb,
lib/fontisan/type1/ttf_to_type1_converter.rb,
lib/fontisan/variable/static_font_builder.rb,
lib/fontisan/variation/instance_generator.rb,
lib/fontisan/variation/parallel_generator.rb,
lib/fontisan/collection/table_deduplicator.rb,
lib/fontisan/commands/optical_size_command.rb,
lib/fontisan/converters/glyf_table_builder.rb,
lib/fontisan/converters/outline_extraction.rb,
lib/fontisan/hints/postscript_hint_applier.rb,
lib/fontisan/hints/truetype_hint_extractor.rb,
lib/fontisan/optimizers/subroutine_builder.rb,
lib/fontisan/tables/cff/charstring_builder.rb,
lib/fontisan/tables/cff2/charstring_parser.rb,
lib/fontisan/utilities/checksum_calculator.rb,
lib/fontisan/validators/opentype_validator.rb,
lib/fontisan/validators/web_font_validator.rb,
lib/fontisan/variation/variation_preserver.rb,
lib/fontisan/converters/conversion_strategy.rb,
lib/fontisan/models/collection_font_summary.rb,
lib/fontisan/models/ttx/tables/binary_table.rb,
lib/fontisan/optimizers/charstring_rewriter.rb,
lib/fontisan/tables/cff/offset_recalculator.rb,
lib/fontisan/tables/cff/private_dict_writer.rb,
lib/fontisan/validators/font_book_validator.rb,
lib/fontisan/variable/glyph_delta_processor.rb,
lib/fontisan/converters/collection_converter.rb,
lib/fontisan/export/transformers/font_to_ttx.rb,
lib/fontisan/hints/postscript_hint_extractor.rb,
lib/fontisan/optimizers/subroutine_generator.rb,
lib/fontisan/optimizers/subroutine_optimizer.rb,
lib/fontisan/tables/cff/charstring_rebuilder.rb,
lib/fontisan/validation/collection_validator.rb,
lib/fontisan/variable/metric_delta_processor.rb,
lib/fontisan/models/all_scripts_features_info.rb,
lib/fontisan/pipeline/transformation_pipeline.rb,
lib/fontisan/variation/tuple_variation_header.rb,
lib/fontisan/variation/variable_svg_generator.rb,
lib/fontisan/pipeline/strategies/base_strategy.rb,
lib/fontisan/pipeline/strategies/named_strategy.rb,
lib/fontisan/tables/cff/hint_operation_injector.rb,
lib/fontisan/export/transformers/os2_transformer.rb,
lib/fontisan/hints/truetype_instruction_analyzer.rb,
lib/fontisan/models/collection_validation_report.rb,
lib/fontisan/tables/glyf/compound_glyph_resolver.rb,
lib/fontisan/export/transformers/head_transformer.rb,
lib/fontisan/export/transformers/hhea_transformer.rb,
lib/fontisan/export/transformers/maxp_transformer.rb,
lib/fontisan/export/transformers/name_transformer.rb,
lib/fontisan/export/transformers/post_transformer.rb,
lib/fontisan/hints/truetype_instruction_generator.rb,
lib/fontisan/tables/cff2/variation_data_extractor.rb,
lib/fontisan/pipeline/strategies/instance_strategy.rb,
lib/fontisan/pipeline/strategies/preserve_strategy.rb,
lib/fontisan/tables/cff2/private_dict_blend_handler.rb

Defined Under Namespace

Modules: Binary, Collection, Commands, Constants, Converters, Export, Formatters, Hints, LoadingModes, Models, Optimizers, Parsers, Pipeline, Subset, Svg, Tables, Type1, Utilities, Utils, Validation, Validators, Variable, Variation, Woff2 Classes: BaseCollection, Cli, ConversionOptions, CorruptedTableError, CorruptedVariationDataError, DeltaMismatchError, DfontCollection, Error, FontLoader, FontWriter, GlyphAccessor, InvalidAxisError, InvalidCoordinatesError, InvalidFontError, InvalidInstanceIndexError, InvalidVariationDataError, MetricsCalculator, MissingTableError, MissingVariationTableError, OffsetTable, OpenTypeCollection, OpenTypeFont, OutlineExtractor, ParseError, RegionOverlapError, SfntFont, SfntTable, SubsettingError, TableDirectory, TrueTypeCollection, TrueTypeFont, Type1Font, UnsupportedFormatError, VariationDataCorruptedError, VariationError, Woff2Font, Woff2TableDirectoryEntry, WoffFont, WoffHeader, WoffTableDirectoryEntry

Constant Summary collapse

VERSION =
"0.2.14"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.loggerObject

Returns the value of attribute logger.



239
240
241
# File 'lib/fontisan.rb', line 239

def logger
  @logger
end

Class Method Details

.configure {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:

  • _self (Fontisan)

    the object that the method was called on



241
242
243
# File 'lib/fontisan.rb', line 241

def configure
  yield self if block_given?
end

.info(path, brief: false, font_index: 0) ⇒ Models::FontInfo, ...

Get font information.

Supports both full and brief modes. Brief mode uses metadata loading for 5x faster parsing by loading only essential tables (name, head, hhea, maxp, OS/2, post). Returns FontInfo with 13 essential fields in brief mode or all 38 fields in full mode.

Examples:

Get full info

info = Fontisan.info("font.ttf")
puts info.family_name
puts info.copyright  # populated in full mode

Get brief info (5x faster)

info = Fontisan.info("font.ttf", brief: true)
puts info.family_name       # populated
puts info.postscript_name   # populated
puts info.copyright         # nil (not populated in brief mode)

Serialize to JSON

info = Fontisan.info("font.ttf", brief: true)
puts info.to_json

Parameters:

  • path (String)

    Path to font file

  • brief (Boolean) (defaults to: false)

    Use brief mode for fast identification (default: false)

  • font_index (Integer) (defaults to: 0)

    Index for TTC/OTC files (default: 0)

Returns:



277
278
279
# File 'lib/fontisan.rb', line 277

def self.info(path, brief: false, font_index: 0)
  Commands::InfoCommand.new(path, brief: brief, font_index: font_index).run
end

.validate(path, profile: :default, options: {}) ⇒ Models::ValidationReport

Validate a font file using specified profile

Validates fonts against quality checks, structural integrity, and OpenType specification compliance using the new DSL-based validation framework.

Examples:

Validate with default profile

report = Fontisan.validate("font.ttf")
puts "Valid: #{report.valid?}"

Validate for web use

report = Fontisan.validate("font.ttf", profile: :web)
puts "Errors: #{report.summary.errors}"

Validate and get detailed report

report = Fontisan.validate("font.ttf", profile: :production)
puts report.to_yaml

Parameters:

  • path (String)

    Path to font file

  • profile (Symbol, String) (defaults to: :default)

    Validation profile (default: :default) Available profiles:

    • :indexability - Fast validation for font discovery

    • :usability - Basic usability for installation

    • :production - Comprehensive quality checks (default)

    • :web - Web embedding and optimization

    • :spec_compliance - Full OpenType spec compliance

    • :default - Alias for production profile

  • options (Hash) (defaults to: {})

    Additional validation options

Returns:

Raises:

  • (ArgumentError)


309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
# File 'lib/fontisan.rb', line 309

def self.validate(path, profile: :default, options: {})
  # Get profile configuration
  profile_config = Validators::ProfileLoader.profile_info(profile)
  raise ArgumentError, "Unknown profile: #{profile}" unless profile_config

  # Load font with appropriate mode
  mode = profile_config[:loading_mode].to_sym
  font = FontLoader.load(path, mode: mode)

  # Load validator for profile
  validator = Validators::ProfileLoader.load(profile)

  # Run validation
  validator.validate(font)
end