fontist 1.9.1 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 06c95de209b578a95a9b0d2bf19d196164ece01155a61685060c638af668743c
4
- data.tar.gz: a2d621f546be67a09e94c4cad68f432642ec6c47d745c688e919652e3049ec7a
3
+ metadata.gz: d2ed5346597364ad2d6cf6d2ecdc575baee6590f164cd79888a85c7ae0a67ed5
4
+ data.tar.gz: f7378c2d93061211db416dfa4ce7e49450dfd50ec01618f79dedb483d1a258ee
5
5
  SHA512:
6
- metadata.gz: 938f320740216d01c7dc7e48b7a4a6070bba45d437be0e3b2c5846b3d1c28321967653b4b1ad13a6f112cab3e7ae72e74f708bd027022e875b2e4268693200bb
7
- data.tar.gz: 602c750adddfc95ed2b7d83257a085b69c464c563ccbd314dc120f86c074d1e0aec243aacafba5bf4e73969ade9bc953b360764209db78fce7362102d1bff8fc
6
+ metadata.gz: 30e8c3f17d17c275e1942a07c113feda490e426afa762e4a6c93a283a99f97010da04b4bd954c13e8cc2504211ad273b9aeb84b6af12232d46cd1d19b7c8b244
7
+ data.tar.gz: 6d8e216241908538339ecb0a06a92f0b31a590eef0ffe2e81bee78a97b18204f4fc4f2b70113a79ea1d87f6c815b125bfb58e6db500942c5d1019098bb3812a0
data/lib/fontist.rb CHANGED
@@ -11,7 +11,6 @@ require "fontist/repo"
11
11
  require "fontist/font"
12
12
  require "fontist/formula"
13
13
  require "fontist/system_font"
14
- require "fontist/fontist_font"
15
14
  require "fontist/manifest"
16
15
  require "fontist/helpers"
17
16
 
@@ -65,15 +64,32 @@ module Fontist
65
64
  end
66
65
 
67
66
  def self.system_index_path
68
- Fontist.fontist_path.join("system_index.yml")
67
+ Fontist.fontist_path.join("system_index.default_family.yml")
68
+ end
69
+
70
+ def self.system_preferred_family_index_path
71
+ Fontist.fontist_path.join("system_index.preferred_family.yml")
72
+ end
73
+
74
+ def self.fontist_index_path
75
+ Fontist.fontist_path.join("fontist_index.default_family.yml")
76
+ end
77
+
78
+ def self.fontist_preferred_family_index_path
79
+ Fontist.fontist_path.join("fontist_index.preferred_family.yml")
69
80
  end
70
81
 
71
82
  def self.formula_index_path
72
- @formula_index_path || Fontist.formula_index_dir.join("formula_index.yml")
83
+ Fontist.formula_index_dir.join("formula_index.default_family.yml")
73
84
  end
74
85
 
75
- def self.formula_index_path=(path)
76
- @formula_index_path = path
86
+ def self.formula_preferred_family_index_path
87
+ @formula_preferred_family_index_path ||
88
+ Fontist.formula_index_dir.join("formula_index.preferred_family.yml")
89
+ end
90
+
91
+ def self.formula_preferred_family_index_path=(path)
92
+ @formula_preferred_family_index_path = path
77
93
  end
78
94
 
79
95
  def self.formula_filename_index_path
@@ -88,4 +104,12 @@ module Fontist
88
104
  def self.formula_index_dir
89
105
  Fontist.fontist_path
90
106
  end
107
+
108
+ def self.preferred_family?
109
+ !!@preferred_family
110
+ end
111
+
112
+ def self.preferred_family=(bool)
113
+ @preferred_family = bool
114
+ end
91
115
  end
data/lib/fontist/cli.rb CHANGED
@@ -32,6 +32,10 @@ module Fontist
32
32
  false
33
33
  end
34
34
 
35
+ class_option :preferred_family,
36
+ type: :boolean,
37
+ desc: "Use Preferred Family when available"
38
+
35
39
  desc "install FONT", "Install font"
36
40
  option :force, type: :boolean, aliases: :f,
37
41
  desc: "Install even if it's already installed in system"
@@ -39,6 +43,7 @@ module Fontist
39
43
  option :hide_licenses, type: :boolean, desc: "Hide license texts"
40
44
  option :no_progress, type: :boolean, desc: "Hide download progress"
41
45
  def install(font)
46
+ handle_class_options(options)
42
47
  Fontist::Font.install(
43
48
  font,
44
49
  force: options[:force],
@@ -53,6 +58,7 @@ module Fontist
53
58
 
54
59
  desc "uninstall/remove FONT", "Uninstall font by font or formula"
55
60
  def uninstall(font)
61
+ handle_class_options(options)
56
62
  fonts_paths = Fontist::Font.uninstall(font)
57
63
  Fontist.ui.success("These fonts are removed:")
58
64
  Fontist.ui.success(fonts_paths.join("\n"))
@@ -64,6 +70,7 @@ module Fontist
64
70
 
65
71
  desc "status [FONT]", "Show paths of FONT or all fonts"
66
72
  def status(font = nil)
73
+ handle_class_options(options)
67
74
  paths = Fontist::Font.status(font)
68
75
  return error("No font is installed.", STATUS_MISSING_FONT_ERROR) if paths.empty?
69
76
 
@@ -74,6 +81,7 @@ module Fontist
74
81
 
75
82
  desc "list [FONT]", "List installation status of FONT or fonts in fontist"
76
83
  def list(font = nil)
84
+ handle_class_options(options)
77
85
  formulas = Fontist::Font.list(font)
78
86
  print_list(formulas)
79
87
  success
@@ -83,6 +91,7 @@ module Fontist
83
91
 
84
92
  desc "update", "Update formulas"
85
93
  def update
94
+ handle_class_options(options)
86
95
  Formula.update_formulas_repo
87
96
  Fontist.ui.success("Formulas have been successfully updated.")
88
97
  success
@@ -94,6 +103,7 @@ module Fontist
94
103
  desc "manifest-locations MANIFEST",
95
104
  "Get locations of fonts from MANIFEST (yaml)"
96
105
  def manifest_locations(manifest)
106
+ handle_class_options(options)
97
107
  paths = Fontist::Manifest::Locations.from_file(manifest)
98
108
  print_yaml(paths)
99
109
  success
@@ -105,6 +115,7 @@ module Fontist
105
115
  option :accept_all_licenses, type: :boolean, aliases: "--confirm-license", desc: "Accept all license agreements"
106
116
  option :hide_licenses, type: :boolean, desc: "Hide license texts"
107
117
  def manifest_install(manifest)
118
+ handle_class_options(options)
108
119
  paths = Fontist::Manifest::Install.from_file(
109
120
  manifest,
110
121
  confirmation: options[:accept_all_licenses] ? "yes" : "no",
@@ -124,6 +135,7 @@ module Fontist
124
135
  option :subdir, desc: "Subdirectory to take fonts from, starting with the " \
125
136
  "root dir, e.g.: stixfonts-2.10/fonts/static_otf. May include `fnmatch` patterns."
126
137
  def create_formula(url)
138
+ handle_class_options(options)
127
139
  require "fontist/import/create_formula"
128
140
  name = Fontist::Import::CreateFormula.new(url, options).call
129
141
  Fontist.ui.say("#{name} formula has been successfully created")
@@ -141,6 +153,8 @@ module Fontist
141
153
  desc: "Updates indexes in the main repo (for backward " \
142
154
  "compatibility with versions prior to 1.9)"
143
155
  def rebuild_index
156
+ handle_class_options(options)
157
+
144
158
  if options[:main_repo]
145
159
  Fontist::Index.rebuild_for_main_repo
146
160
  else
@@ -153,6 +167,7 @@ module Fontist
153
167
 
154
168
  desc "import-sil", "Import formulas from SIL"
155
169
  def import_sil
170
+ handle_class_options(options)
156
171
  require "fontist/import/sil_import"
157
172
  Fontist::Import::SilImport.new.call
158
173
  end
@@ -162,6 +177,10 @@ module Fontist
162
177
 
163
178
  private
164
179
 
180
+ def handle_class_options(options)
181
+ Fontist.preferred_family = options[:preferred_family]
182
+ end
183
+
165
184
  def success
166
185
  STATUS_SUCCESS
167
186
  end
data/lib/fontist/font.rb CHANGED
@@ -166,7 +166,7 @@ module Fontist
166
166
  end
167
167
 
168
168
  def uninstall_font
169
- paths = find_fontist_font
169
+ paths = find_fontist_paths
170
170
  return unless paths
171
171
 
172
172
  paths.each do |path|
@@ -176,8 +176,13 @@ module Fontist
176
176
  paths
177
177
  end
178
178
 
179
- def find_fontist_font
180
- Fontist::FontistFont.find(name)
179
+ def find_fontist_paths
180
+ fonts = Fontist::SystemIndex.fontist_index.find(name, nil)
181
+ return unless fonts
182
+
183
+ fonts.map do |font|
184
+ font[:path]
185
+ end
181
186
  end
182
187
 
183
188
  def installed_paths
@@ -129,7 +129,7 @@ module Fontist
129
129
 
130
130
  fonts = groups.map do |name, group|
131
131
  { name: name,
132
- styles: group.map(&style_type) }
132
+ styles: styles_from_files(group, style_type) }
133
133
  end
134
134
 
135
135
  fonts.sort_by do |x|
@@ -137,6 +137,10 @@ module Fontist
137
137
  end
138
138
  end
139
139
 
140
+ def styles_from_files(files, style_type)
141
+ files.map(&style_type).sort_by { |x| x[:type] }
142
+ end
143
+
140
144
  def extract
141
145
  @extractor.operations
142
146
  end
@@ -156,6 +156,10 @@ module Fontist
156
156
  h.merge!(family_name: style.family_name,
157
157
  type: style.style,
158
158
  full_name: style.full_name)
159
+ if style.preferred_family_name
160
+ h[:preferred_family_name] = style.preferred_family_name
161
+ end
162
+ h[:preferred_type] = style.preferred_style if style.preferred_style
159
163
  h.merge!(style.to_h.select do |k, _|
160
164
  %i(post_script_name version description copyright).include?(k)
161
165
  end.compact)
@@ -10,7 +10,8 @@ module Fontist
10
10
  otfinfo: Otfinfo::OtfinfoRequirement.new,
11
11
  }.freeze
12
12
 
13
- STYLE_ATTRIBUTES = %i[family_name type full_name post_script_name
13
+ STYLE_ATTRIBUTES = %i[family_name type preferred_family_name
14
+ preferred_type full_name post_script_name
14
15
  version description copyright font
15
16
  source_font].freeze
16
17
 
@@ -35,11 +36,19 @@ module Fontist
35
36
  end
36
37
 
37
38
  def family_name
38
- info["Preferred family"] || info["Family"]
39
+ info["Family"]
39
40
  end
40
41
 
41
42
  def type
42
- info["Preferred subfamily"] || info["Subfamily"]
43
+ info["Subfamily"]
44
+ end
45
+
46
+ def preferred_family_name
47
+ info["Preferred family"]
48
+ end
49
+
50
+ def preferred_type
51
+ info["Preferred subfamily"]
43
52
  end
44
53
 
45
54
  def full_name
@@ -7,8 +7,8 @@ module Fontist
7
7
  end
8
8
 
9
9
  def call
10
- style = { family_name: @info["Preferred family"] || @info["Family"],
11
- style: @info["Preferred subfamily"] || @info["Subfamily"],
10
+ style = { family_name: @info["Family"],
11
+ style: @info["Subfamily"],
12
12
  full_name: @info["Full name"],
13
13
  post_script_name: @info["PostScript name"],
14
14
  version: version(@info["Version"]),
@@ -16,6 +16,14 @@ module Fontist
16
16
  filename: File.basename(@path),
17
17
  copyright: @info["Copyright"] }
18
18
 
19
+ if @info["Preferred family"]
20
+ style[:preferred_family_name] = @info["Preferred family"]
21
+ end
22
+
23
+ if @info["Preferred subfamily"]
24
+ style[:preferred_style] = @info["Preferred subfamily"]
25
+ end
26
+
19
27
  OpenStruct.new(style)
20
28
  end
21
29
 
@@ -2,6 +2,12 @@
2
2
  {
3
3
  family_name: "<%= s.family_name %>",
4
4
  style: "<%= s.style %>",
5
+ <%- if s.preferred_family_name -%>
6
+ preferred_family_name: "<%= s.preferred_family_name %>",
7
+ <%- end -%>
8
+ <%- if s.preferred_style -%>
9
+ preferred_type: "<%= s.preferred_style %>",
10
+ <%- end -%>
5
11
  full_name: "<%= s.full_name %>",
6
12
  <%- if s.post_script_name -%>
7
13
  post_script_name: "<%= s.post_script_name %>",
data/lib/fontist/index.rb CHANGED
@@ -19,25 +19,28 @@ module Fontist
19
19
  end
20
20
 
21
21
  def self.do_rebuild_for_main_repo_with
22
- Fontist.formula_index_path = Fontist.formulas_repo_path.join("index.yml")
22
+ Fontist.formula_preferred_family_index_path =
23
+ Fontist.formulas_repo_path.join("index.yml")
23
24
  Fontist.formula_filename_index_path =
24
25
  Fontist.formulas_repo_path.join("filename_index.yml")
25
26
 
26
27
  rebuild
27
28
 
28
- Fontist.formula_index_path = nil
29
+ Fontist.formula_preferred_family_index_path = nil
29
30
  Fontist.formula_filename_index_path = nil
30
31
  end
31
32
 
32
33
  def self.rebuild
33
- Fontist::Indexes::FontIndex.rebuild
34
+ Fontist::Indexes::DefaultFamilyFontIndex.rebuild
35
+ Fontist::Indexes::PreferredFamilyFontIndex.rebuild
34
36
  Fontist::Indexes::FilenameIndex.rebuild
35
37
 
36
38
  reset_cache
37
39
  end
38
40
 
39
41
  def self.reset_cache
40
- Fontist::Indexes::FontIndex.reset_cache
42
+ Fontist::Indexes::DefaultFamilyFontIndex.reset_cache
43
+ Fontist::Indexes::PreferredFamilyFontIndex.reset_cache
41
44
  Fontist::Indexes::FilenameIndex.reset_cache
42
45
  end
43
46
  end
@@ -0,0 +1,21 @@
1
+ require_relative "base_index"
2
+
3
+ module Fontist
4
+ module Indexes
5
+ class DefaultFamilyFontIndex < BaseIndex
6
+ def self.path
7
+ Fontist.formula_index_path
8
+ end
9
+
10
+ def add_formula(formula)
11
+ formula.fonts.each do |font|
12
+ add_index_formula(font.name, formula.to_index_formula)
13
+ end
14
+ end
15
+
16
+ def normalize_key(key)
17
+ key.downcase
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,21 +1,16 @@
1
- require_relative "base_index"
1
+ require_relative "default_family_font_index"
2
+ require_relative "preferred_family_font_index"
2
3
 
3
4
  module Fontist
4
5
  module Indexes
5
- class FontIndex < BaseIndex
6
- def self.path
7
- Fontist.formula_index_path
8
- end
9
-
10
- def add_formula(formula)
11
- formula.fonts.each do |font|
12
- add_index_formula(font.name, formula.to_index_formula)
6
+ class FontIndex
7
+ def self.from_yaml
8
+ if Fontist.preferred_family?
9
+ PreferredFamilyFontIndex.from_yaml
10
+ else
11
+ DefaultFamilyFontIndex.from_yaml
13
12
  end
14
13
  end
15
-
16
- def normalize_key(key)
17
- key.downcase
18
- end
19
14
  end
20
15
  end
21
16
  end
@@ -0,0 +1,24 @@
1
+ require_relative "base_index"
2
+
3
+ module Fontist
4
+ module Indexes
5
+ class PreferredFamilyFontIndex < BaseIndex
6
+ def self.path
7
+ Fontist.formula_preferred_family_index_path
8
+ end
9
+
10
+ def add_formula(formula)
11
+ formula.fonts.each do |font|
12
+ font.styles.each do |style|
13
+ font_name = style.preferred_family_name || font.name
14
+ add_index_formula(font_name, formula.to_index_formula)
15
+ end
16
+ end
17
+ end
18
+
19
+ def normalize_key(key)
20
+ key.downcase
21
+ end
22
+ end
23
+ end
24
+ end
@@ -3,10 +3,9 @@ require_relative "formula_paths"
3
3
 
4
4
  module Fontist
5
5
  class SystemFont
6
- def initialize(font:, style: nil, sources: nil)
6
+ def initialize(font:, style: nil)
7
7
  @font = font
8
8
  @style = style
9
- @user_sources = sources || []
10
9
  end
11
10
 
12
11
  def self.font_paths
@@ -36,8 +35,8 @@ module Fontist
36
35
  Dir.glob(Fontist.fonts_path.join("**"))
37
36
  end
38
37
 
39
- def self.find(font, sources: [])
40
- new(font: font, sources: sources).find
38
+ def self.find(font)
39
+ new(font: font).find
41
40
  end
42
41
 
43
42
  def self.find_styles(font, style)
@@ -57,18 +56,14 @@ module Fontist
57
56
 
58
57
  private
59
58
 
60
- attr_reader :font, :style, :user_sources
59
+ attr_reader :font, :style
61
60
 
62
61
  def find_by_index
63
- SystemIndex.new(all_paths).find(font, style)
62
+ SystemIndex.system_index.find(font, style)
64
63
  end
65
64
 
66
65
  def find_by_formulas
67
- FormulaPaths.new(all_paths).find(font, style)
68
- end
69
-
70
- def all_paths
71
- @all_paths ||= Dir.glob(user_sources) + self.class.font_paths
66
+ FormulaPaths.new(self.class.font_paths).find(font, style)
72
67
  end
73
68
  end
74
69
  end
@@ -4,22 +4,73 @@ module Fontist
4
4
  class SystemIndex
5
5
  include Utils::Locking
6
6
 
7
+ class DefaultFamily
8
+ def family_name(name)
9
+ name.font_family
10
+ end
11
+
12
+ def type(name)
13
+ name.font_subfamily
14
+ end
15
+ end
16
+
17
+ class PreferredFamily
18
+ def family_name(name)
19
+ return name.font_family if name.preferred_family.empty?
20
+
21
+ name.preferred_family
22
+ end
23
+
24
+ def type(name)
25
+ return name.font_subfamily if name.preferred_subfamily.empty?
26
+
27
+ name.preferred_subfamily
28
+ end
29
+ end
30
+
31
+ PLATFORM_MACINTOSH = 1
32
+ PLATFORM_MICROSOFT = 3
33
+
34
+ ENCODING_MAC_ROMAN = 0
35
+ ENCODING_MS_UNICODE_BMP = 1
36
+
37
+ LANGUAGE_MAC_ENGLISH = 0
38
+ LANGUAGE_MS_ENGLISH_AMERICAN = 0x409
39
+
7
40
  attr_reader :font_paths
8
41
 
9
- def self.find(font, style)
10
- new(SystemFont.font_paths).find(font, style)
42
+ def self.system_index
43
+ if Fontist.preferred_family?
44
+ new(Fontist.system_preferred_family_index_path,
45
+ SystemFont.font_paths,
46
+ PreferredFamily.new)
47
+ else
48
+ new(Fontist.system_index_path,
49
+ SystemFont.font_paths,
50
+ DefaultFamily.new)
51
+ end
11
52
  end
12
53
 
13
- def self.rebuild
14
- new(SystemFont.font_paths).rebuild
54
+ def self.fontist_index
55
+ if Fontist.preferred_family?
56
+ new(Fontist.fontist_preferred_family_index_path,
57
+ SystemFont.fontist_font_paths,
58
+ PreferredFamily.new)
59
+ else
60
+ new(Fontist.fontist_index_path,
61
+ SystemFont.fontist_font_paths,
62
+ DefaultFamily.new)
63
+ end
15
64
  end
16
65
 
17
- def initialize(font_paths)
66
+ def initialize(index_path, font_paths, family)
67
+ @index_path = index_path
18
68
  @font_paths = font_paths
69
+ @family = family
19
70
  end
20
71
 
21
72
  def find(font, style)
22
- fonts = system_index.select do |file|
73
+ fonts = index.select do |file|
23
74
  file[:family_name].casecmp?(font) &&
24
75
  (style.nil? || file[:type].casecmp?(style))
25
76
  end
@@ -28,27 +79,27 @@ module Fontist
28
79
  end
29
80
 
30
81
  def rebuild
31
- build_system_index
82
+ build_index
32
83
  end
33
84
 
34
85
  private
35
86
 
36
- def system_index
37
- @system_index ||= build_system_index
87
+ def index
88
+ @index ||= build_index
38
89
  end
39
90
 
40
- def build_system_index
91
+ def build_index
41
92
  lock(lock_path) do
42
- do_build_system_index
93
+ do_build_index
43
94
  end
44
95
  end
45
96
 
46
97
  def lock_path
47
- Fontist.system_index_path.to_s + ".lock"
98
+ "#{@index_path}.lock"
48
99
  end
49
100
 
50
- def do_build_system_index
51
- previous_index = load_system_index
101
+ def do_build_index
102
+ previous_index = load_index
52
103
  updated_index = detect_paths(font_paths, previous_index)
53
104
  updated_index.tap do |index|
54
105
  save_index(index) if changed?(updated_index, previous_index)
@@ -59,21 +110,23 @@ module Fontist
59
110
  this.map { |x| x[:path] }.uniq.sort != other.map { |x| x[:path] }.uniq.sort
60
111
  end
61
112
 
62
- def load_system_index
63
- index = File.exist?(Fontist.system_index_path) ? YAML.load_file(Fontist.system_index_path) : []
113
+ def load_index
114
+ index = File.exist?(@index_path) ? YAML.load_file(@index_path) : []
115
+ check_index(index)
116
+ index
117
+ end
64
118
 
119
+ def check_index(index)
65
120
  index.each do |item|
66
121
  missing_keys = %i[path full_name family_name type] - item.keys
67
122
  unless missing_keys.empty?
68
123
  raise(Errors::FontIndexCorrupted, <<~MSG.chomp)
69
124
  Font index is corrupted.
70
125
  Item #{item.inspect} misses required attributes: #{missing_keys.join(', ')}.
71
- You can remove the index file (#{Fontist.system_index_path}) and try again.
126
+ You can remove the index file (#{@index_path}) and try again.
72
127
  MSG
73
128
  end
74
129
  end
75
-
76
- index
77
130
  end
78
131
 
79
132
  def detect_paths(paths, index)
@@ -98,7 +151,9 @@ module Fontist
98
151
  end
99
152
 
100
153
  def detect_file_font(path)
101
- file = TTFunk::File.open(path)
154
+ content = File.read(path, mode: "rb")
155
+ file = TTFunk::File.new(content)
156
+
102
157
  parse_font(file, path)
103
158
  rescue StandardError
104
159
  warn $!.message
@@ -111,6 +166,9 @@ module Fontist
111
166
  parse_font(file, path)
112
167
  end
113
168
  end
169
+ rescue StandardError
170
+ warn $!.message
171
+ warn "Warning: File at #{path} not recognized as a font file."
114
172
  end
115
173
 
116
174
  def parse_font(file, path)
@@ -118,20 +176,42 @@ module Fontist
118
176
 
119
177
  {
120
178
  path: path,
121
- full_name: parse_text(x.font_name.first),
122
- family_name: parse_text(x.preferred_family.first || x.font_family.first),
123
- type: parse_text(x.preferred_subfamily.first || x.font_subfamily.first),
179
+ full_name: english_name(x.font_name),
180
+ family_name: english_name(@family.family_name(x)),
181
+ type: english_name(@family.type(x)),
124
182
  }
125
183
  end
126
184
 
127
- def parse_text(text)
185
+ def english_name(name)
186
+ visible_characters(find_english(name))
187
+ end
188
+
189
+ def find_english(name)
190
+ name.find { |x| microsoft_english?(x) } ||
191
+ name.find { |x| mac_english?(x) } ||
192
+ name.last
193
+ end
194
+
195
+ def microsoft_english?(string)
196
+ string.platform_id == PLATFORM_MICROSOFT &&
197
+ string.encoding_id == ENCODING_MS_UNICODE_BMP &&
198
+ string.language_id == LANGUAGE_MS_ENGLISH_AMERICAN
199
+ end
200
+
201
+ def mac_english?(string)
202
+ string.platform_id == PLATFORM_MACINTOSH &&
203
+ string.encoding_id == ENCODING_MAC_ROMAN &&
204
+ string.language_id == LANGUAGE_MAC_ENGLISH
205
+ end
206
+
207
+ def visible_characters(text)
128
208
  text.gsub(/[^[:print:]]/, "").to_s
129
209
  end
130
210
 
131
211
  def save_index(index)
132
- dir = File.dirname(Fontist.system_index_path)
212
+ dir = File.dirname(@index_path)
133
213
  FileUtils.mkdir_p(dir) unless File.exist?(dir)
134
- File.write(Fontist.system_index_path, YAML.dump(index))
214
+ File.write(@index_path, YAML.dump(index))
135
215
  end
136
216
  end
137
217
  end
@@ -1,3 +1,3 @@
1
1
  module Fontist
2
- VERSION = "1.9.1".freeze
2
+ VERSION = "1.10.0".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fontist
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.1
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-06 00:00:00.000000000 Z
11
+ date: 2021-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: down
@@ -262,7 +262,6 @@ files:
262
262
  - lib/fontist/font.rb
263
263
  - lib/fontist/font_installer.rb
264
264
  - lib/fontist/font_path.rb
265
- - lib/fontist/fontist_font.rb
266
265
  - lib/fontist/formula.rb
267
266
  - lib/fontist/formula_paths.rb
268
267
  - lib/fontist/helpers.rb
@@ -296,9 +295,11 @@ files:
296
295
  - lib/fontist/import/text_helper.rb
297
296
  - lib/fontist/index.rb
298
297
  - lib/fontist/indexes/base_index.rb
298
+ - lib/fontist/indexes/default_family_font_index.rb
299
299
  - lib/fontist/indexes/filename_index.rb
300
300
  - lib/fontist/indexes/font_index.rb
301
301
  - lib/fontist/indexes/index_formula.rb
302
+ - lib/fontist/indexes/preferred_family_font_index.rb
302
303
  - lib/fontist/manifest.rb
303
304
  - lib/fontist/manifest/install.rb
304
305
  - lib/fontist/manifest/locations.rb
@@ -1,24 +0,0 @@
1
- module Fontist
2
- class FontistFont
3
- def initialize(font_name:)
4
- @font_name = font_name
5
- end
6
-
7
- def self.find(name)
8
- new(font_name: name).find
9
- end
10
-
11
- def find
12
- styles = FormulaPaths.new(font_paths).find(@font_name)
13
- return unless styles
14
-
15
- styles.map { |x| x[:path] }
16
- end
17
-
18
- private
19
-
20
- def font_paths
21
- Dir.glob(Fontist.fonts_path.join("**"))
22
- end
23
- end
24
- end