fontsquirrel-download 1.1.1 → 2.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.
- checksums.yaml +4 -4
- data/README.md +12 -6
- data/fontsquirrel-download.gemspec +0 -1
- data/lib/fontsquirrel-download/download.rb +58 -25
- data/lib/fontsquirrel-download/version.rb +1 -1
- data/lib/tasks/fontsquirrel-download.rake +23 -3
- metadata +12 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9f088283e17cc0941631baf6a415ddf60bfc317
|
4
|
+
data.tar.gz: d807825661cb2d784803231bf1f2b5c3615c24ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e928c62f5797b742e5c4da87a7f1b5cf4cf180cc19ca5a01ae38e18dd7728e5bc85e781726e2da9f7f54bcfdd471d0dfb81850ece45dc4278896cae3fbd799e
|
7
|
+
data.tar.gz: 538288b460dadedbac435cf0a8a778f5a98482f45673330e47758b418b937eee120924dc7ff3d61ecdd5cf0ca0bbf50a7e086b70b973d221e75b3afad164ede4
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ Add to your application.css/application.css.scss:
|
|
18
18
|
//= require fonts
|
19
19
|
```
|
20
20
|
|
21
|
-
Because the download will append the necessary changes to ``app/assets/stylesheets/_fonts.
|
21
|
+
Because the download will append the necessary changes to ``app/assets/stylesheets/_fonts.scss``.
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
@@ -27,10 +27,10 @@ Because the download will append the necessary changes to ``app/assets/styleshee
|
|
27
27
|
Use Rake task, specify the Font name as written in the URL from font-squirrel, e.g. the well-known LaTeX-Font:
|
28
28
|
|
29
29
|
```bash
|
30
|
-
rake font:
|
30
|
+
rake font:download NAME=TeX-Gyre-Bonum
|
31
31
|
```
|
32
32
|
|
33
|
-
This will download the fonts to ``app/assets/fonts`` and append the style rules to ``app/assets/stylesheets/_fonts.
|
33
|
+
This will download the fonts to ``app/assets/fonts`` and append the style rules to ``app/assets/stylesheets/_fonts.scss``.
|
34
34
|
|
35
35
|
After that, you can use that style definition in your css rules, like:
|
36
36
|
|
@@ -40,13 +40,19 @@ body {
|
|
40
40
|
}
|
41
41
|
```
|
42
42
|
|
43
|
-
The names always vary a little, just look them up in the \_fonts.
|
43
|
+
The names always vary a little, just look them up in the \_fonts.scss
|
44
44
|
|
45
45
|
|
46
|
+
## Webfont-Kits
|
46
47
|
|
48
|
+
You can also create font-kits with Fontsquirrel's great Webfont-generator and extract+apply that zipfile and merge a meaningful scss-file with correct font weight and style:
|
47
49
|
|
48
|
-
|
50
|
+
```
|
51
|
+
rake font:install FILE=/tmp/webfontkit-123.zip
|
52
|
+
```
|
53
|
+
|
54
|
+
|
55
|
+
## Limitations
|
49
56
|
|
50
57
|
* Until know, it will download the normal subset of the font.
|
51
58
|
Some fonts have no special chars (like German Umlauts) at all, some have them in a subset. Maybe specifying the subset comes in handy.
|
52
|
-
* Downloading not only font-kits but all the other fonts...
|
@@ -3,62 +3,95 @@ require "zip"
|
|
3
3
|
module FontSquirrel
|
4
4
|
class Download
|
5
5
|
TEMPLATE = <<-DOC
|
6
|
-
@font-face
|
7
|
-
font-family: "{{name}}"
|
6
|
+
@font-face {
|
7
|
+
font-family: "{{name}}";
|
8
8
|
{{src}}
|
9
|
-
font-weight: {{weight}}
|
10
|
-
font-style: {{style}}
|
9
|
+
font-weight: {{weight}};
|
10
|
+
font-style: {{style}};
|
11
|
+
}
|
11
12
|
DOC
|
12
13
|
|
13
14
|
# Provide Font-Name as written in URL of font-squirrel,
|
14
15
|
# like TeX-Gyre-Bonum
|
15
|
-
def initialize(name,options={})
|
16
|
-
@options=options
|
16
|
+
def initialize(name, options={})
|
17
|
+
@options = options
|
17
18
|
@name = name
|
18
|
-
download(name)
|
19
19
|
FileUtils.mkdir_p @options[:font_dir]
|
20
|
+
unless File.exists? @options[:font_file]
|
21
|
+
FileUtils.touch @options[:font_file]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def download!
|
26
|
+
download(@name)
|
27
|
+
end
|
28
|
+
|
29
|
+
def extract_and_apply!
|
20
30
|
zipfile = nil
|
21
31
|
quietly do
|
22
32
|
zipfile = Zip::File.open(@options[:tmp_name])
|
23
33
|
end
|
24
34
|
zipfile.each do |entry|
|
25
35
|
case entry.name
|
26
|
-
when %r{/stylesheet.css$}
|
36
|
+
when %r{/stylesheet.css$}, "stylesheet.css"
|
27
37
|
append_stylesheet(entry)
|
28
38
|
when /ttf|woff|eot|svg/
|
29
39
|
extract_font(entry)
|
40
|
+
else
|
41
|
+
puts " skipping #{entry.name}"
|
30
42
|
end
|
31
43
|
end
|
32
44
|
|
33
|
-
FileUtils.rm @options[:tmp_name].to_s
|
34
45
|
ensure
|
35
46
|
zipfile.close if zipfile.present?
|
36
47
|
end
|
37
48
|
|
49
|
+
def remove_download_file
|
50
|
+
FileUtils.rm @options[:tmp_name].to_s
|
51
|
+
end
|
52
|
+
|
38
53
|
private
|
39
54
|
|
40
55
|
def name; @name; end
|
41
56
|
|
42
57
|
def append_stylesheet(entry)
|
43
58
|
content = entry.get_input_stream.read
|
44
|
-
|
59
|
+
if content.blank?
|
60
|
+
puts " error: the stylesheets seems to be empty. Check if the font-kit on fontsquirrel has errors, too, and use the ttf-download + Webfont-generator to make a working zip-file"
|
61
|
+
return
|
62
|
+
end
|
63
|
+
|
64
|
+
existing = File.read(@options[:font_file].to_s)
|
65
|
+
text = Sass::Engine.new(content, syntax: :scss).to_tree.to_scss
|
66
|
+
binding.pry
|
45
67
|
text.gsub!(/url\(([^\)]+)\)/, "asset-url(\\1, font)")
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
68
|
+
parts = text.split("@font-face")
|
69
|
+
out_file = ""
|
70
|
+
font_name = text.scan(/font-family: '(.*)'/).flatten.inject{|l,s| l=l.chop while l!=s[0...l.length];l}
|
71
|
+
parts.each do |part|
|
72
|
+
headline = part.lines.grep(/font-family/).first
|
73
|
+
next if !headline
|
74
|
+
weight = 'normal'
|
75
|
+
style = 'normal'
|
76
|
+
if headline[ /italic/ ]
|
77
|
+
style = 'italic'
|
78
|
+
end
|
79
|
+
if headline[ /bold/ ]
|
80
|
+
weight = 'bold'
|
81
|
+
end
|
82
|
+
template = TEMPLATE.
|
83
|
+
gsub('{{name}}', font_name).
|
84
|
+
gsub('{{weight}}', weight).
|
85
|
+
gsub('{{style}}', style).
|
86
|
+
gsub('{{src}}', part.lines.grep(/src:/).join.strip)
|
87
|
+
if !existing.include?(template)
|
88
|
+
out_file += template + "\n"
|
89
|
+
end
|
51
90
|
end
|
52
|
-
if
|
53
|
-
|
91
|
+
if out_file.present?
|
92
|
+
log "Writing new font-definitions to #{@options[:font_file].to_s} (Font-Family: #{font_name})"
|
93
|
+
File.open(@options[:font_file].to_s, "a") {|f| f.write out_file }
|
54
94
|
end
|
55
|
-
template = TEMPLATE.
|
56
|
-
gsub('{{name}}', @name).
|
57
|
-
gsub('{{weight}}', weight).
|
58
|
-
gsub('{{style}}', style).
|
59
|
-
gsub('{{src}}', text.lines.grep(/src:/).join.strip)
|
60
|
-
log "Writing new font-definitions to #{@options[:font_file].to_s} ( Font-Family: #{@name}, #{style}, #{weight})"
|
61
|
-
File.open(@options[:font_file].to_s, "a") {|f| f.write template }
|
62
95
|
end
|
63
96
|
|
64
97
|
def extract_font(entry)
|
@@ -68,7 +101,7 @@ DOC
|
|
68
101
|
end
|
69
102
|
|
70
103
|
def download(name)
|
71
|
-
url = "
|
104
|
+
url = "https://www.fontsquirrel.com/fontfacekit/#{name}"
|
72
105
|
log "Downloading #{url}..."
|
73
106
|
File.open(@options[:tmp_name], "wb+") { |f| f.write open(url).read }
|
74
107
|
end
|
@@ -1,17 +1,37 @@
|
|
1
1
|
|
2
2
|
namespace :font do
|
3
|
+
FONT_FILE = 'app/assets/stylesheets/_fonts.scss'
|
3
4
|
desc "Download and extract font-squirrel kit. Give Repos with NAME=TeX-Gyre-Bonum"
|
4
|
-
task :
|
5
|
+
task :download do
|
5
6
|
name = ENV["NAME"]
|
6
7
|
if name.blank?
|
7
8
|
puts "give name to font with rake font:kit NAME=TeX-Gyre-Bonum"
|
8
9
|
exit 1
|
9
10
|
end
|
10
11
|
require "fontsquirrel-download/download"
|
11
|
-
FontSquirrel::Download.new name,
|
12
|
+
runner = FontSquirrel::Download.new name,
|
12
13
|
tmp_name: Rails.root.join("tmp/fontsquirrel.zip").to_s,
|
13
|
-
font_file: Rails.root.join(
|
14
|
+
font_file: Rails.root.join(FONT_FILE),
|
14
15
|
font_dir: Rails.root.join("app/assets/fonts")
|
16
|
+
runner.download!
|
17
|
+
runner.extract_and_apply!
|
18
|
+
runner.remove_download_file
|
15
19
|
|
16
20
|
end
|
21
|
+
|
22
|
+
desc "Extract font-squirrel web-fontkit. Takes path to zip-file FILE=/tmp/webfontkit-123.zip"
|
23
|
+
task :install do
|
24
|
+
name = ENV["FILE"]
|
25
|
+
if name.blank?
|
26
|
+
puts "provide the path to the font with rake font:install FILE=/tmp/webfontkit-123.zip"
|
27
|
+
exit 1
|
28
|
+
end
|
29
|
+
path = File.expand_path(name)
|
30
|
+
require "fontsquirrel-download/download"
|
31
|
+
runner = FontSquirrel::Download.new 'webfontkit',
|
32
|
+
tmp_name: path,
|
33
|
+
font_file: Rails.root.join(FONT_FILE),
|
34
|
+
font_dir: Rails.root.join("app/assets/fonts")
|
35
|
+
runner.extract_and_apply!
|
36
|
+
end
|
17
37
|
end
|
metadata
CHANGED
@@ -1,66 +1,52 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fontsquirrel-download
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Wienert
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: rubyzip
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - '>='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: rails
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
|
-
- -
|
17
|
+
- - ">="
|
32
18
|
- !ruby/object:Gem::Version
|
33
19
|
version: '3.1'
|
34
20
|
type: :runtime
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
|
-
- -
|
24
|
+
- - ">="
|
39
25
|
- !ruby/object:Gem::Version
|
40
26
|
version: '3.1'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rubyzip
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- -
|
31
|
+
- - ">="
|
46
32
|
- !ruby/object:Gem::Version
|
47
33
|
version: '1.0'
|
48
34
|
type: :runtime
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- -
|
38
|
+
- - ">="
|
53
39
|
- !ruby/object:Gem::Version
|
54
40
|
version: '1.0'
|
55
|
-
description:
|
56
|
-
tasks.
|
41
|
+
description: " Download and extract font-kits from fontsquirrel easily with a rake
|
42
|
+
tasks."
|
57
43
|
email:
|
58
44
|
- stefan.wienert@pludoni.de
|
59
45
|
executables: []
|
60
46
|
extensions: []
|
61
47
|
extra_rdoc_files: []
|
62
48
|
files:
|
63
|
-
- .gitignore
|
49
|
+
- ".gitignore"
|
64
50
|
- Gemfile
|
65
51
|
- LICENSE
|
66
52
|
- README.md
|
@@ -81,19 +67,18 @@ require_paths:
|
|
81
67
|
- lib
|
82
68
|
required_ruby_version: !ruby/object:Gem::Requirement
|
83
69
|
requirements:
|
84
|
-
- -
|
70
|
+
- - ">="
|
85
71
|
- !ruby/object:Gem::Version
|
86
72
|
version: '0'
|
87
73
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
74
|
requirements:
|
89
|
-
- -
|
75
|
+
- - ">="
|
90
76
|
- !ruby/object:Gem::Version
|
91
77
|
version: '0'
|
92
78
|
requirements: []
|
93
79
|
rubyforge_project:
|
94
|
-
rubygems_version: 2.
|
80
|
+
rubygems_version: 2.4.8
|
95
81
|
signing_key:
|
96
82
|
specification_version: 4
|
97
83
|
summary: Download and extract font-kits from fontsquirrel easily with a rake tasks.
|
98
84
|
test_files: []
|
99
|
-
has_rdoc:
|