fontist 0.4.0 → 1.0.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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macosx.yml +1 -1
  3. data/.github/workflows/ubuntu.yml +1 -1
  4. data/.gitignore +4 -2
  5. data/README.md +87 -25
  6. data/lib/fontist.rb +28 -13
  7. data/lib/fontist/downloader.rb +11 -11
  8. data/lib/fontist/errors.rb +1 -0
  9. data/lib/fontist/font.rb +78 -0
  10. data/lib/fontist/font_formula.rb +116 -0
  11. data/lib/fontist/formula.rb +90 -0
  12. data/lib/fontist/formulas.rb +10 -5
  13. data/lib/fontist/formulas/andale_font.rb +79 -0
  14. data/lib/fontist/formulas/arial_black_font.rb +78 -0
  15. data/lib/fontist/formulas/cleartype_fonts.rb +225 -0
  16. data/lib/fontist/formulas/comic_font.rb +77 -0
  17. data/lib/fontist/formulas/courier_font.rb +67 -12
  18. data/lib/fontist/formulas/euphemia_font.rb +85 -0
  19. data/lib/fontist/formulas/georgia_font.rb +79 -0
  20. data/lib/fontist/formulas/impact_font.rb +77 -0
  21. data/lib/fontist/formulas/montserrat_font.rb +132 -0
  22. data/lib/fontist/formulas/ms_truetype_fonts.rb +124 -0
  23. data/lib/fontist/formulas/open_sans_fonts.rb +263 -0
  24. data/lib/fontist/formulas/overpass_font.rb +73 -0
  25. data/lib/fontist/formulas/source_fonts.rb +109 -0
  26. data/lib/fontist/formulas/stix_fonts.rb +108 -0
  27. data/lib/fontist/formulas/tahoma_font.rb +147 -0
  28. data/lib/fontist/formulas/webding_font.rb +77 -0
  29. data/lib/fontist/registry.rb +42 -0
  30. data/lib/fontist/{data/source.yml → system.yml} +0 -7
  31. data/lib/fontist/system_font.rb +9 -13
  32. data/lib/fontist/utils.rb +8 -0
  33. data/lib/fontist/utils/dsl.rb +73 -0
  34. data/lib/fontist/utils/exe_extractor.rb +72 -0
  35. data/lib/fontist/utils/zip_extractor.rb +38 -0
  36. data/lib/fontist/version.rb +1 -1
  37. data/spec/fontist/downloader_spec.rb +2 -1
  38. data/spec/fontist/font_formula_spec.rb +67 -0
  39. data/spec/fontist/font_spec.rb +87 -0
  40. data/spec/fontist/formula_spec.rb +67 -0
  41. data/spec/fontist/formulas/andale_font_spec.rb +29 -0
  42. data/spec/fontist/formulas/arial_black_font_spec.rb +29 -0
  43. data/spec/fontist/formulas/cleartype_fonts_spec.rb +38 -0
  44. data/spec/fontist/formulas/comic_font_spec.rb +29 -0
  45. data/spec/fontist/formulas/courier_font_spec.rb +18 -19
  46. data/spec/fontist/formulas/euphemia_font_spec.rb +29 -0
  47. data/spec/fontist/formulas/georgia_font_spec.rb +29 -0
  48. data/spec/fontist/formulas/impact_font_spec.rb +29 -0
  49. data/spec/fontist/formulas/montserrat_font_spec.rb +29 -0
  50. data/spec/fontist/formulas/ms_truetype_fonts_spec.rb +29 -0
  51. data/spec/fontist/formulas/open_sans_fonts_spec.rb +29 -0
  52. data/spec/fontist/formulas/overpass_font_spec.rb +29 -0
  53. data/spec/fontist/formulas/source_fonts_spec.rb +31 -0
  54. data/spec/fontist/formulas/stix_fonts_spec.rb +29 -0
  55. data/spec/fontist/formulas/tahoma_font_spec.rb +29 -0
  56. data/spec/fontist/formulas/webding_font_spec.rb +29 -0
  57. data/spec/fontist/registry_spec.rb +47 -0
  58. data/spec/fontist/system_font_spec.rb +6 -6
  59. data/spec/spec_helper.rb +4 -2
  60. data/spec/support/fontist_helper.rb +4 -2
  61. metadata +45 -25
  62. data/lib/fontist/data/formulas/courier.yml +0 -26
  63. data/lib/fontist/data/formulas/ms_system.yml +0 -68
  64. data/lib/fontist/data/formulas/ms_vista.yml +0 -118
  65. data/lib/fontist/data/formulas/source_font.yml +0 -163
  66. data/lib/fontist/finder.rb +0 -45
  67. data/lib/fontist/formula_finder.rb +0 -94
  68. data/lib/fontist/formulas/base.rb +0 -72
  69. data/lib/fontist/formulas/helpers/exe_extractor.rb +0 -45
  70. data/lib/fontist/formulas/helpers/zip_extractor.rb +0 -36
  71. data/lib/fontist/formulas/ms_system.rb +0 -29
  72. data/lib/fontist/formulas/ms_vista.rb +0 -42
  73. data/lib/fontist/formulas/source_font.rb +0 -25
  74. data/lib/fontist/installer.rb +0 -42
  75. data/lib/fontist/source.rb +0 -58
  76. data/spec/fontist/finder_spec.rb +0 -41
  77. data/spec/fontist/formula_finder_spec.rb +0 -54
  78. data/spec/fontist/formulas/ms_system_spec.rb +0 -31
  79. data/spec/fontist/formulas/ms_vista_spec.rb +0 -27
  80. data/spec/fontist/formulas/source_font_spec.rb +0 -18
  81. data/spec/fontist/installer_spec.rb +0 -48
  82. data/spec/fontist/source_spec.rb +0 -24
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Fontist::Formulas::AndaleFont do
4
+ describe "initializing" do
5
+ it "builds the data dictionary" do
6
+ formula = Fontist::Formulas::AndaleFont.instance
7
+
8
+ expect(formula.fonts.count).to eq(1)
9
+ expect(formula.fonts.first[:name]).to eq("Andale Mono")
10
+ end
11
+ end
12
+
13
+ describe "installation" do
14
+ context "with valid licence agreement", slow: true do
15
+ it "installs the valid fonts", skip_in_windows: true do
16
+ name = "Andale Mono"
17
+ confirmation = "yes"
18
+
19
+ stub_fontist_path_to_temp_path
20
+ paths = Fontist::Formulas::AndaleFont.fetch_font(
21
+ name, confirmation: confirmation
22
+ )
23
+
24
+ expect(Fontist::Font.find(name)).not_to be_empty
25
+ expect(paths.first).to include("fonts/AndaleMo.TTF")
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Fontist::Formulas::ArialBlackFont do
4
+ describe "initializing" do
5
+ it "builds the data dictionary" do
6
+ formula = Fontist::Formulas::ArialBlackFont.instance
7
+
8
+ expect(formula.fonts.count).to eq(1)
9
+ expect(formula.fonts.first[:name]).to eq("Arial Black")
10
+ end
11
+ end
12
+
13
+ describe "installation" do
14
+ context "with valid licence agreement", slow: true do
15
+ it "installs the valid fonts", skip_in_windows: true do
16
+ name = "Arial Black"
17
+ confirmation = "yes"
18
+
19
+ stub_fontist_path_to_temp_path
20
+ paths = Fontist::Formulas::ArialBlackFont.fetch_font(
21
+ name, confirmation: confirmation
22
+ )
23
+
24
+ expect(Fontist::Font.find(name)).not_to be_empty
25
+ expect(paths.first).to include("fonts/AriBlk.TTF")
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,38 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Fontist::Formulas::ClearTypeFonts do
4
+ describe "initializing" do
5
+ it "builds the data dictionary" do
6
+ formula = Fontist::Formulas::ClearTypeFonts.instance
7
+
8
+ expect(formula.fonts.count).to eq(12)
9
+ expect(formula.fonts[1][:name]).to eq("Cambria Math")
10
+ expect(formula.fonts.first[:name]).to eq("Cambria")
11
+ end
12
+ end
13
+
14
+ describe "installation" do
15
+ context "with valid licence agreement", slow: true do
16
+ it "installs the valid fonts", skip_in_windows: true do
17
+ name = "Calibri"
18
+ confirmation = "yes"
19
+
20
+ paths = Fontist::Formulas::ClearTypeFonts.fetch_font(
21
+ name, confirmation: confirmation
22
+ )
23
+
24
+ expect(paths.first).to include("fonts/#{name.upcase}.TTF")
25
+ end
26
+ end
27
+
28
+ context "with missing licence agreement" do
29
+ it "raises an Fontist::Errors::LicensingError" do
30
+ name = "Calibri"
31
+
32
+ expect {
33
+ Fontist::Formulas::ClearTypeFonts.fetch_font(name, confirmation: "no")
34
+ }.to raise_error(Fontist::Errors::LicensingError)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Fontist::Formulas::ComicFont do
4
+ describe "initializing" do
5
+ it "builds the data dictionary" do
6
+ formula = Fontist::Formulas::ComicFont.instance
7
+
8
+ expect(formula.fonts.count).to eq(1)
9
+ expect(formula.fonts.first[:name]).to eq("Comic Sans")
10
+ end
11
+ end
12
+
13
+ describe "installation" do
14
+ context "with valid licence agreement", slow: true do
15
+ it "installs the valid fonts", skip_in_windows: true do
16
+ name = "Comic Sans"
17
+ confirmation = "yes"
18
+
19
+ stub_fontist_path_to_temp_path
20
+ paths = Fontist::Formulas::ComicFont.fetch_font(
21
+ name, confirmation: confirmation
22
+ )
23
+
24
+ expect(Fontist::Font.find(name)).not_to be_empty
25
+ expect(paths.first).to include("fonts/Comicbd.TTF")
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,29 +1,28 @@
1
1
  require "spec_helper"
2
2
 
3
3
  RSpec.describe Fontist::Formulas::CourierFont do
4
- describe ".fetch_font" do
5
- context "with valid licence", skip_in_windows: true do
6
- it "downloads and returns the fonts" do
7
- name = "Courier"
8
- stub_fontist_path_to_assets
9
- fonts = Fontist::Formulas::CourierFont.fetch_font(
10
- name, confirmation: "yes", force_download: true
11
- )
4
+ describe "initializing" do
5
+ it "builds the data dictionary" do
6
+ formula = Fontist::Formulas::CourierFont.instance
12
7
 
13
- expect(fonts.count).to eq(4)
14
- expect(fonts.first).to include("fonts/cour.ttf")
15
- expect(Fontist::Finder.find(name)).not_to be_empty
16
- end
8
+ expect(formula.fonts.count).to eq(1)
9
+ expect(formula.fonts.first[:name]).to eq("Courier")
17
10
  end
11
+ end
18
12
 
19
- context "with invalid licence agreement" do
20
- it "raise an licensing error" do
21
- font_name = "cour"
22
- stub_fontist_path_to_assets
13
+ describe "installation" do
14
+ context "with valid licence agreement", slow: true do
15
+ it "installs the valid fonts", skip_in_windows: true do
16
+ name = "Courier"
17
+ confirmation = "yes"
18
+
19
+ stub_fontist_path_to_temp_path
20
+ paths = Fontist::Formulas::CourierFont.fetch_font(
21
+ name, confirmation: confirmation
22
+ )
23
23
 
24
- expect {
25
- Fontist::Formulas::CourierFont.fetch_font(font_name, confirmation: "no")
26
- }.to raise_error(Fontist::Errors::LicensingError)
24
+ expect(Fontist::Font.find(name)).not_to be_empty
25
+ expect(paths.first).to include("fonts/cour.ttf")
27
26
  end
28
27
  end
29
28
  end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Fontist::Formulas::EuphemiaFont do
4
+ describe "initializing" do
5
+ it "builds the data dictionary" do
6
+ formula = Fontist::Formulas::EuphemiaFont.instance
7
+
8
+ expect(formula.fonts.count).to eq(1)
9
+ expect(formula.fonts.first[:name]).to eq("Euphemia UCAS")
10
+ end
11
+ end
12
+
13
+ describe "installation" do
14
+ context "with valid licence agreement" do
15
+ it "installs the valid fonts" do
16
+ name = "Euphemia UCAS"
17
+ confirmation = "yes"
18
+
19
+ stub_fontist_path_to_temp_path
20
+ paths = Fontist::Formulas::EuphemiaFont.fetch_font(
21
+ name, confirmation: confirmation
22
+ )
23
+
24
+ expect(Fontist::Font.find(name)).not_to be_empty
25
+ expect(paths.first).to include("fonts/#{name} Italic 2.6.6.ttf")
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Fontist::Formulas::GeorgiaFont do
4
+ describe "initializing" do
5
+ it "builds the data dictionary" do
6
+ formula = Fontist::Formulas::GeorgiaFont.instance
7
+
8
+ expect(formula.fonts.count).to eq(1)
9
+ expect(formula.fonts.first[:name]).to eq("Georgia")
10
+ end
11
+ end
12
+
13
+ describe "installation" do
14
+ context "with valid licence agreement", slow: true do
15
+ it "installs the valid fonts", skip_in_windows: true do
16
+ name = "Georgia"
17
+ confirmation = "yes"
18
+
19
+ stub_fontist_path_to_temp_path
20
+ paths = Fontist::Formulas::GeorgiaFont.fetch_font(
21
+ name, confirmation: confirmation
22
+ )
23
+
24
+ expect(Fontist::Font.find(name)).not_to be_empty
25
+ expect(paths.first).to include("fonts/Georgiaz.TTF")
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Fontist::Formulas::ImpactFont do
4
+ describe "initializing" do
5
+ it "builds the data dictionary" do
6
+ formula = Fontist::Formulas::ImpactFont.instance
7
+
8
+ expect(formula.fonts.count).to eq(1)
9
+ expect(formula.fonts.first[:name]).to eq("Impact")
10
+ end
11
+ end
12
+
13
+ describe "installation" do
14
+ context "with valid licence agreement", slow: true do
15
+ it "installs the valid fonts", skip_in_windows: true do
16
+ name = "Impact"
17
+ confirmation = "yes"
18
+
19
+ stub_fontist_path_to_temp_path
20
+ paths = Fontist::Formulas::ImpactFont.fetch_font(
21
+ name, confirmation: confirmation
22
+ )
23
+
24
+ expect(Fontist::Font.find(name)).not_to be_empty
25
+ expect(paths.first).to include("fonts/#{name}.TTF")
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Fontist::Formulas::MontserratFont do
4
+ describe "initializing" do
5
+ it "builds the data dictionary" do
6
+ formula = Fontist::Formulas::MontserratFont.instance
7
+
8
+ expect(formula.fonts.count).to eq(2)
9
+ expect(formula.fonts.first[:name]).to eq("Montserrat")
10
+ end
11
+ end
12
+
13
+ describe "installation" do
14
+ context "with valid licence agreement", slow: true do
15
+ it "installs the valid fonts" do
16
+ name = "Montserrat"
17
+ confirmation = "yes"
18
+
19
+ stub_fontist_path_to_temp_path
20
+ paths = Fontist::Formulas::MontserratFont.fetch_font(
21
+ name, confirmation: confirmation
22
+ )
23
+
24
+ expect(Fontist::Font.find(name)).not_to be_empty
25
+ expect(paths.first).to include("fonts/#{name}-Thin.otf")
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Fontist::Formulas::MsTruetypeFonts do
4
+ describe "initializing" do
5
+ it "builds the data dictionary" do
6
+ formula = Fontist::Formulas::MsTruetypeFonts.instance
7
+
8
+ expect(formula.fonts.count).to eq(4)
9
+ expect(formula.fonts.first[:name]).to eq("Arial")
10
+ end
11
+ end
12
+
13
+ describe "installation" do
14
+ context "with valid licence agreement" do
15
+ it "installs the valid fonts", skip_in_windows: true do
16
+ name = "Arial"
17
+ confirmation = "yes"
18
+
19
+ stub_fontist_path_to_temp_path
20
+ paths = Fontist::Formulas::MsTruetypeFonts.fetch_font(
21
+ name, confirmation: confirmation
22
+ )
23
+
24
+ expect(Fontist::Font.find(name)).not_to be_empty
25
+ expect(paths.first).to include("fonts/#{name}.ttf")
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Fontist::Formulas::OpenSansFonts do
4
+ describe "initializing" do
5
+ it "builds the data dictionary" do
6
+ formula = Fontist::Formulas::OpenSansFonts.instance
7
+
8
+ expect(formula.fonts.count).to eq(1)
9
+ expect(formula.fonts.first[:name]).to eq("OpenSans")
10
+ end
11
+ end
12
+
13
+ describe "installation" do
14
+ context "with valid licence agreement", slow: true do
15
+ it "installs the valid fonts" do
16
+ name = "OpenSans"
17
+ confirmation = "yes"
18
+
19
+ stub_fontist_path_to_temp_path
20
+ paths = Fontist::Formulas::OpenSansFonts.fetch_font(
21
+ name, confirmation: confirmation
22
+ )
23
+
24
+ expect(Fontist::Font.find(name)).not_to be_empty
25
+ expect(paths.first).to include("fonts/#{name}-Light.ttf")
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Fontist::Formulas::OverpassFont do
4
+ describe "initializing" do
5
+ it "builds the data dictionary" do
6
+ formula = Fontist::Formulas::OverpassFont.instance
7
+
8
+ expect(formula.fonts.count).to eq(2)
9
+ expect(formula.fonts.first[:name]).to eq("Overpass")
10
+ end
11
+ end
12
+
13
+ describe "installation" do
14
+ context "with valid licence agreement" do
15
+ it "installs the valid fonts" do
16
+ name = "Overpass"
17
+ confirmation = "yes"
18
+
19
+ stub_fontist_path_to_temp_path
20
+ paths = Fontist::Formulas::OverpassFont.fetch_font(
21
+ name, confirmation: confirmation
22
+ )
23
+
24
+ expect(Fontist::Font.find(name)).not_to be_empty
25
+ expect(paths.first).to include("fonts/#{name.downcase}-bold-italic.otf")
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,31 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Fontist::Formulas::SourceFonts do
4
+ describe "initializing" do
5
+ it "builds the data dictionary" do
6
+ formula = Fontist::Formulas::SourceFonts.instance
7
+
8
+ expect(formula.fonts.count).to eq(33)
9
+ expect(formula.fonts.first[:name]).to eq("Source Code Pro")
10
+ end
11
+ end
12
+
13
+ describe "installation" do
14
+ context "with valid licence agreement", slow: true do
15
+ it "installs the valid fonts" do
16
+ name = "Source Code Pro"
17
+ confirmation = "yes"
18
+
19
+ stub_fontist_path_to_temp_path
20
+ paths = Fontist::Formulas::SourceFonts.fetch_font(
21
+ name, confirmation: confirmation
22
+ )
23
+
24
+ expect(Fontist::Font.find(name)).not_to be_empty
25
+ expect(paths).to include(
26
+ Fontist.fonts_path.join("SourceCodePro-Black.ttf").to_s
27
+ )
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Fontist::Formulas::StixFont do
4
+ describe "initializing" do
5
+ it "builds the data dictionary" do
6
+ formula = Fontist::Formulas::StixFont.instance
7
+
8
+ expect(formula.fonts.count).to eq(2)
9
+ expect(formula.fonts.first[:name]).to eq("STIX Two Math")
10
+ end
11
+ end
12
+
13
+ describe "installation" do
14
+ context "with valid licence agreement" do
15
+ it "installs the valid fonts" do
16
+ name = "STIX Two Math"
17
+ confirmation = "yes"
18
+
19
+ stub_fontist_path_to_temp_path
20
+ paths = Fontist::Formulas::StixFont.fetch_font(
21
+ name, confirmation: confirmation
22
+ )
23
+
24
+ expect(Fontist::Font.find(name)).not_to be_empty
25
+ expect(paths.first).to include("fonts/STIX2Math.otf")
26
+ end
27
+ end
28
+ end
29
+ end