# File lib/fontist/macos/catalog/asset.rb, line 41 def primary_family_name font_families.first end
class Fontist::Macos::Catalog::Asset
Represents a font asset from macOS Font5/Font6/Font7/Font8 catalog Each asset contains one or more fonts with their metadata
Attributes
Public Class Methods
Source
# File lib/fontist/macos/catalog/asset.rb, line 13 def initialize(data, posted_date: nil, framework_version: nil) @base_url = data["__BaseURL"] @relative_path = data["__RelativePath"] @font_info = data["FontInfo4"] || [] @build = data["Build"] @compatibility_version = data["_CompatibilityVersion"] @design_languages = data["FontDesignLanguages"] || [] @prerequisite = data["Prerequisite"] || [] @posted_date = posted_date @framework_version = framework_version end
Public Instance Methods
Source
# File lib/fontist/macos/catalog/asset.rb, line 45 def asset_id # Font7/8 have Build field return build.downcase if build # Font5/6 don't have Build, extract hash from __RelativePath # e.g., "com_apple_MobileAsset_Font5/94af53b6dd43b085554e207f5cd282fde8367af6.zip" if @relative_path hash = @relative_path.split("/").last&.split(".")&.first return hash.downcase if hash end nil end
Source
# File lib/fontist/macos/catalog/asset.rb, line 25 def download_url "#{@base_url}#{@relative_path}" end
Source
# File lib/fontist/macos/catalog/asset.rb, line 37 def font_families fonts.map(&:font_family_name).compact.uniq end
Source
# File lib/fontist/macos/catalog/asset.rb, line 29 def fonts @font_info.map { |info| FontInfo.new(info) } end
Source
# File lib/fontist/macos/catalog/asset.rb, line 33 def postscript_names fonts.map(&:postscript_name).compact end
Source
Source
# File lib/fontist/macos/catalog/asset.rb, line 59 def to_import_source return nil unless @framework_version && @posted_date && asset_id MacosImportSource.new( framework_version: @framework_version, posted_date: @posted_date, asset_id: asset_id, ) end