Class: Fontist::WindowsFodMetadata

Inherits:
Object
  • Object
show all
Defined in:
lib/fontist/windows_fod_metadata.rb

Overview

Metadata for Windows Features on Demand (FOD) font capabilities

Provides lookup methods to map between FOD capability names and their associated font families/filenames.

Constant Summary collapse

DATA_PATH =
File.expand_path("import/windows/fod_capabilities.yml", __dir__)

Class Method Summary collapse

Class Method Details

.all_capabilitiesArray<String>

List of all capability names

Returns:

  • (Array<String>)

    All capability names



49
50
51
# File 'lib/fontist/windows_fod_metadata.rb', line 49

def all_capabilities
  ["capabilities"].keys
end

.all_font_namesArray<String>

Flat list of all FOD font family names

Returns:

  • (Array<String>)

    All font family names



40
41
42
43
44
# File 'lib/fontist/windows_fod_metadata.rb', line 40

def all_font_names
  ["capabilities"].flat_map do |_cap, data|
    data["fonts"].keys
  end
end

.capability_for_font(font_name) ⇒ String?

Reverse lookup: font family name -> capability name

Parameters:

  • font_name (String)

    The font family name (e.g., “Meiryo”)

Returns:

  • (String, nil)

    The capability name or nil if not found



16
17
18
# File 'lib/fontist/windows_fod_metadata.rb', line 16

def capability_for_font(font_name)
  reverse_map[font_name.downcase]
end

.description_for_capability(cap_name) ⇒ String?

Get the description for a capability

Parameters:

  • cap_name (String)

    The capability name

Returns:

  • (String, nil)

    The description



33
34
35
# File 'lib/fontist/windows_fod_metadata.rb', line 33

def description_for_capability(cap_name)
  .dig("capabilities", cap_name, "description")
end

.fonts_for_capability(cap_name) ⇒ Hash?

Get all font families for a capability

Parameters:

  • cap_name (String)

    The capability name

Returns:

  • (Hash, nil)

    Hash of font family names to their metadata



24
25
26
27
# File 'lib/fontist/windows_fod_metadata.rb', line 24

def fonts_for_capability(cap_name)
  cap = .dig("capabilities", cap_name)
  cap&.fetch("fonts", nil)
end

.metadataHash

Raw parsed YAML metadata

Returns:

  • (Hash)

    The parsed YAML data



56
57
58
# File 'lib/fontist/windows_fod_metadata.rb', line 56

def 
  @metadata ||= YAML.safe_load(File.read(DATA_PATH))
end

.reset_cacheObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Reset cached metadata (for testing)



62
63
64
65
# File 'lib/fontist/windows_fod_metadata.rb', line 62

def reset_cache
  @metadata = nil
  @reverse_map = nil
end