fontist 0.4.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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