fontist 1.9.3 → 1.11.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/metanorma.yml +1 -1
  3. data/.github/workflows/rspec.yml +1 -1
  4. data/README.adoc +804 -0
  5. data/exe/fontist +24 -2
  6. data/fontist.gemspec +3 -2
  7. data/lib/fontist/cli.rb +23 -9
  8. data/lib/fontist/font.rb +8 -3
  9. data/lib/fontist/formula.rb +4 -0
  10. data/lib/fontist/google_cli.rb +29 -0
  11. data/lib/fontist/import/files/collection_file.rb +10 -1
  12. data/lib/fontist/import/formula_builder.rb +30 -5
  13. data/lib/fontist/import/google/new_fonts_fetcher.rb +44 -33
  14. data/lib/fontist/import/google.rb +18 -0
  15. data/lib/fontist/import/google_check.rb +0 -7
  16. data/lib/fontist/import/google_import.rb +26 -138
  17. data/lib/fontist/import/helpers/system_helper.rb +1 -1
  18. data/lib/fontist/import/otf/font_file.rb +17 -4
  19. data/lib/fontist/import/otf_parser.rb +2 -0
  20. data/lib/fontist/import/otf_style.rb +10 -2
  21. data/lib/fontist/import/otfinfo/template.erb +6 -0
  22. data/lib/fontist/import/recursive_extraction.rb +2 -1
  23. data/lib/fontist/index.rb +4 -28
  24. data/lib/fontist/indexes/default_family_font_index.rb +21 -0
  25. data/lib/fontist/indexes/font_index.rb +8 -13
  26. data/lib/fontist/indexes/preferred_family_font_index.rb +24 -0
  27. data/lib/fontist/system_font.rb +6 -16
  28. data/lib/fontist/system_index.rb +108 -29
  29. data/lib/fontist/update.rb +2 -2
  30. data/lib/fontist/utils/downloader.rb +14 -6
  31. data/lib/fontist/version.rb +1 -1
  32. data/lib/fontist.rb +43 -13
  33. metadata +26 -29
  34. data/.github/workflows/check_google.yml +0 -28
  35. data/README.md +0 -570
  36. data/lib/fontist/fontist_font.rb +0 -24
  37. data/lib/fontist/formula_paths.rb +0 -44
  38. data/lib/fontist/import/google/fonts_public.md +0 -10
  39. data/lib/fontist/import/google/fonts_public.pb.rb +0 -71
  40. data/lib/fontist/import/google/fonts_public.proto +0 -46
@@ -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
@@ -1,44 +0,0 @@
1
- module Fontist
2
- class FormulaPaths
3
- attr_reader :font_paths
4
-
5
- def initialize(font_paths)
6
- @font_paths = font_paths
7
- end
8
-
9
- def find(font, style = nil)
10
- styles = find_styles_by_formulas(font, style)
11
- return if styles.empty?
12
-
13
- fonts = styles.uniq { |s| s["font"] }.flat_map do |s|
14
- paths = search_font_paths(s["font"])
15
- paths.map do |path|
16
- { full_name: s["full_name"],
17
- type: s["type"],
18
- path: path }
19
- end
20
- end
21
-
22
- fonts.empty? ? nil : fonts
23
- end
24
-
25
- private
26
-
27
- def find_styles_by_formulas(font, style)
28
- if style
29
- Formula.find_styles(font, style)
30
- else
31
- fonts = Formula.find_fonts(font)
32
- return [] unless fonts
33
-
34
- fonts.flat_map(&:styles)
35
- end
36
- end
37
-
38
- def search_font_paths(filename)
39
- font_paths.select do |path|
40
- File.basename(path) == filename
41
- end
42
- end
43
- end
44
- end
@@ -1,10 +0,0 @@
1
- # How to work with Protobuf
2
-
3
- Protobuf file could be downloaded from
4
- https://raw.githubusercontent.com/googlefonts/gftools/master/Lib/gftools/fonts_public.proto
5
-
6
- To compile Protobuf to Ruby use
7
-
8
- ```sh
9
- ruby-protoc lib/fontist/import/google/fonts_public.proto
10
- ```
@@ -1,71 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
-
4
- require 'protocol_buffers'
5
-
6
- module Google
7
- module Fonts
8
- # forward declarations
9
- class FamilyProto < ::ProtocolBuffers::Message; end
10
- class FontProto < ::ProtocolBuffers::Message; end
11
- class AxisProto < ::ProtocolBuffers::Message; end
12
- class SourceProto < ::ProtocolBuffers::Message; end
13
-
14
- class FamilyProto < ::ProtocolBuffers::Message
15
- # forward declarations
16
- class ApiDefaultOverridesEntry < ::ProtocolBuffers::Message; end
17
-
18
- set_fully_qualified_name "google.fonts.FamilyProto"
19
-
20
- # nested messages
21
- class ApiDefaultOverridesEntry < ::ProtocolBuffers::Message
22
- set_fully_qualified_name "google.fonts.FamilyProto.ApiDefaultOverridesEntry"
23
-
24
- optional :string, :key, 1
25
- optional :float, :value, 2
26
- end
27
-
28
- required :string, :name, 1
29
- required :string, :designer, 2
30
- required :string, :license, 3
31
- required :string, :category, 4
32
- required :string, :date_added, 5
33
- repeated ::Google::Fonts::FontProto, :fonts, 6
34
- repeated :string, :aliases, 7
35
- repeated :string, :subsets, 8
36
- optional :string, :ttf_autohint_args, 9
37
- repeated ::Google::Fonts::AxisProto, :axes, 10
38
- repeated ::Google::Fonts::FamilyProto::ApiDefaultOverridesEntry, :api_default_overrides, 11
39
- optional ::Google::Fonts::SourceProto, :source, 12
40
- end
41
-
42
- class FontProto < ::ProtocolBuffers::Message
43
- set_fully_qualified_name "google.fonts.FontProto"
44
-
45
- required :string, :name, 1
46
- required :string, :style, 2
47
- required :int32, :weight, 3
48
- required :string, :filename, 4
49
- required :string, :post_script_name, 5
50
- required :string, :full_name, 6
51
- optional :string, :copyright, 7
52
- end
53
-
54
- class AxisProto < ::ProtocolBuffers::Message
55
- set_fully_qualified_name "google.fonts.AxisProto"
56
-
57
- optional :string, :tag, 1
58
- optional :float, :min_value, 2
59
- optional :float, :default_value, 3
60
- optional :float, :max_value, 4
61
- end
62
-
63
- class SourceProto < ::ProtocolBuffers::Message
64
- set_fully_qualified_name "google.fonts.SourceProto"
65
-
66
- optional :string, :repository_url, 1
67
- optional :string, :commit, 2
68
- end
69
-
70
- end
71
- end
@@ -1,46 +0,0 @@
1
- syntax = "proto2";
2
-
3
- /**
4
- * Open Source'd font metadata proto formats.
5
- */
6
- package google.fonts;
7
-
8
- option java_package = "com.google.fonts.proto";
9
- option java_outer_classname = "FontsPublic";
10
-
11
- message FamilyProto {
12
- required string name = 1;
13
- required string designer = 2;
14
- required string license = 3;
15
- required string category = 4;
16
- required string date_added = 5;
17
- repeated FontProto fonts = 6;
18
- repeated string aliases = 7;
19
- repeated string subsets = 8;
20
- optional string ttf_autohint_args = 9;
21
- repeated AxisProto axes = 10;
22
- map<string, float> api_default_overrides = 11;
23
- optional SourceProto source = 12;
24
- };
25
-
26
- message FontProto {
27
- required string name = 1;
28
- required string style = 2;
29
- required int32 weight = 3;
30
- required string filename = 4;
31
- required string post_script_name = 5;
32
- required string full_name = 6;
33
- optional string copyright = 7;
34
- };
35
-
36
- message AxisProto {
37
- optional string tag = 1;
38
- optional float min_value = 2;
39
- optional float default_value = 3;
40
- optional float max_value = 4;
41
- };
42
-
43
- message SourceProto {
44
- optional string repository_url = 1;
45
- optional string commit = 2;
46
- }