fontist 1.9.3 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e2cce6f6f02c9c70f594e7b6084ac854a74b903f27b49252047e898d47137a1f
4
- data.tar.gz: d9cb729ca432229c90bf2cb0da204cf0cc401f997e1cd915e853e240613e35ea
3
+ metadata.gz: d2ed5346597364ad2d6cf6d2ecdc575baee6590f164cd79888a85c7ae0a67ed5
4
+ data.tar.gz: f7378c2d93061211db416dfa4ce7e49450dfd50ec01618f79dedb483d1a258ee
5
5
  SHA512:
6
- metadata.gz: 6a5f1250db7da8b327716fcb1a22abf71c2ab3c57f58b4954efc82b2273f7e880c3d8519693925b13d3c3adf81fb5f261a912b13d95e69f0711b5716bd349d53
7
- data.tar.gz: 293524c79e1be4ebbc8ef6db50a7de91e195d5921abd9e8fd1791597bfd80616bfe4d8d82eada54e71fcbdfaeab1baf6d72659e334111cf460b84c0d5193be1a
6
+ metadata.gz: 30e8c3f17d17c275e1942a07c113feda490e426afa762e4a6c93a283a99f97010da04b4bd954c13e8cc2504211ad273b9aeb84b6af12232d46cd1d19b7c8b244
7
+ data.tar.gz: 6d8e216241908538339ecb0a06a92f0b31a590eef0ffe2e81bee78a97b18204f4fc4f2b70113a79ea1d87f6c815b125bfb58e6db500942c5d1019098bb3812a0
@@ -2,7 +2,7 @@ name: metanorma
2
2
 
3
3
  on:
4
4
  push:
5
- branches: [ main, v1.9.x ]
5
+ branches: [ main ]
6
6
  pull_request:
7
7
 
8
8
  jobs:
@@ -2,7 +2,7 @@ name: rspec
2
2
 
3
3
  on:
4
4
  push:
5
- branches: [ main, v1.9.x ]
5
+ branches: [ main ]
6
6
  pull_request:
7
7
 
8
8
  jobs:
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,13 +1,7 @@
1
1
  module Fontist
2
2
  class Update
3
- BRANCH = "master".freeze
4
-
5
3
  def self.call
6
- new(BRANCH).call
7
- end
8
-
9
- def initialize(branch = "main")
10
- @branch = branch
4
+ new.call
11
5
  end
12
6
 
13
7
  def call
@@ -23,21 +17,13 @@ module Fontist
23
17
  dir = File.dirname(Fontist.formulas_repo_path)
24
18
  FileUtils.mkdir_p(dir) unless File.exist?(dir)
25
19
 
26
- unless Dir.exist?(Fontist.formulas_repo_path)
27
- return Git.clone(Fontist.formulas_repo_url,
28
- Fontist.formulas_repo_path,
29
- branch: @branch,
30
- depth: 1)
20
+ if Dir.exist?(Fontist.formulas_repo_path)
21
+ Git.open(Fontist.formulas_repo_path).pull
22
+ else
23
+ Git.clone(Fontist.formulas_repo_url,
24
+ Fontist.formulas_repo_path,
25
+ depth: 1)
31
26
  end
32
-
33
- git = Git.open(Fontist.formulas_repo_path)
34
- return git.pull("origin", @branch) if git.current_branch == @branch
35
-
36
- git.config("remote.origin.fetch",
37
- "+refs/heads/#{@branch}:refs/remotes/origin/#{@branch}")
38
- git.fetch
39
- git.checkout(@branch)
40
- git.pull("origin", @branch)
41
27
  end
42
28
 
43
29
  def update_private_repos
@@ -59,7 +59,6 @@ module Fontist
59
59
  url,
60
60
  open_timeout: 10,
61
61
  read_timeout: 10,
62
- max_redirects: 10,
63
62
  headers: headers,
64
63
  content_length_proc: ->(content_length) {
65
64
  @progress_bar.total = content_length if content_length
@@ -1,3 +1,3 @@
1
1
  module Fontist
2
- VERSION = "1.9.3".freeze
2
+ VERSION = "1.10.0".freeze
3
3
  end
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
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.3
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-08-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