fontrobot 0.1 → 0.1.2
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 +7 -0
- data/LICENSES.txt +2 -1
- data/README.md +10 -4
- data/{fontcustom.gemspec → fontrobot.gemspec} +1 -0
- data/lib/fontrobot/generator.rb +39 -28
- data/lib/fontrobot/templates/fontrobot.css +12 -3
- data/lib/fontrobot/version.rb +1 -1
- metadata +75 -42
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8c132e3d05391e3f79679bd1c384e7478ce27dcd
|
4
|
+
data.tar.gz: 3cf9b0c033571fcf21c68c9d8ea441af98a5a68c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8addd02091a2d6ee8126ad6a4021bec6be65ee1eb85d4823bc46f4a1b9d8636e64485094f2d76f956fda2e9a2f813f3e408aefefa5e5205cc9ff7ebbbc925638
|
7
|
+
data.tar.gz: 916d7bb981eb0fcb7359097ed5ccd0be8e91e155135c90e05dfc2551c7c7aa14fa0705a9c1b714aa9ee376d16b66983f5e10a57a9b20dc9610ed635eab114ea0
|
data/LICENSES.txt
CHANGED
data/README.md
CHANGED
@@ -1,11 +1,17 @@
|
|
1
|
-
FontRobot v0.1
|
1
|
+
FontRobot v0.1.1
|
2
2
|
==========
|
3
3
|
|
4
4
|
**Generate custom icon webfonts from the comfort of the command line.**
|
5
5
|
|
6
|
-
This is a fork of Fontcustom
|
6
|
+
This is a fork of Fontcustom. I needed a quick fork to work out the kinks using this gem in a large-scale production Rails environment. I'm testing it live every day. :) I hope to merge my changes upstream to Fontcustom soon (Just FYI).
|
7
7
|
|
8
|
-
|
8
|
+
FontRobot is primarily designed to add more control over how the @fontface declaration is created. See command-line options below for more details.
|
9
|
+
|
10
|
+
Fontrobot allows you specify the font order in @font-face, to inline font(s) as a data-uri, and creates an IE-compatible @font-face declaration.
|
11
|
+
|
12
|
+
Data-uri fonts are nice because they circumvent some browser's origin policies and they load fast. For best performance, make sure your server gzips all served assets.
|
13
|
+
|
14
|
+
[Original Fontcustom documentation](http://fontcustom.github.com/fontcustom/)
|
9
15
|
|
10
16
|
|
11
17
|
Installation
|
@@ -38,7 +44,7 @@ Command-line options
|
|
38
44
|
--font_path, -f => Specify a path for fonts in css @font-face declaration. Default: none
|
39
45
|
|
40
46
|
--order, -r => Specify font order in css @font-face. Default: "eot,ttf,woff,svg"
|
41
|
-
--inline, -i =>
|
47
|
+
--inline, -i => Specify fonts to include as data-uri's in @font-face. Default: none. Format: "ttf,svg" One is enough though.
|
42
48
|
|
43
49
|
--nohash => (boolean) Disable filename hashes. Default: false
|
44
50
|
--debug => (boolean) Display debug messages. Default: false
|
@@ -11,6 +11,7 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.summary = %q{Generate custom icon webfonts from the command line.}
|
12
12
|
gem.description = %q{Transforms EPS and SVG vectors into icon webfonts. Generates Bootstrap compatible CSS for easy inclusion in your projects.}
|
13
13
|
gem.homepage = "http://robotloveskitten.github.com/fontrobot/"
|
14
|
+
gem.licenses = ["MIT", "MPL 1.1/GPL 2.0/LGPL 2.1"]
|
14
15
|
|
15
16
|
gem.files = `git ls-files`.split($/)
|
16
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
data/lib/fontrobot/generator.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'thor/group'
|
3
3
|
require 'base64'
|
4
|
+
require 'zlib'
|
4
5
|
|
5
6
|
module Fontrobot
|
6
7
|
class Generator < Thor::Group
|
@@ -9,13 +10,11 @@ module Fontrobot
|
|
9
10
|
desc 'Generates webfonts from given directory of vectors.'
|
10
11
|
|
11
12
|
argument :input, :type => :string
|
12
|
-
class_option :output,
|
13
|
-
class_option :name,
|
14
|
-
class_option :font_path,
|
15
|
-
|
13
|
+
class_option :output, :aliases => '-o'
|
14
|
+
class_option :name, :aliases => '-n'
|
15
|
+
class_option :font_path, :aliases => '-f'
|
16
16
|
class_option :order, :aliases => '-r' # 'Specify font order in css @font-face. Default: "eot,ttf,woff,svg"'
|
17
17
|
class_option :inline, :aliases => '-i' # 'Inline font as data-uri in @font-face. Default: none. Format: "eot,ttf,woff,svg"'
|
18
|
-
|
19
18
|
class_option :nohash, :type => :boolean, :default => false
|
20
19
|
class_option :debug, :type => :boolean, :default => false
|
21
20
|
class_option :html, :type => :boolean, :default => false
|
@@ -46,17 +45,19 @@ module Fontrobot
|
|
46
45
|
end
|
47
46
|
|
48
47
|
def normalize_name
|
49
|
-
@name =
|
50
|
-
options.name.gsub(/\W/, '-').downcase
|
51
|
-
else
|
52
|
-
'fontrobot'
|
53
|
-
end
|
48
|
+
@name = (options.name) ? options.name.gsub(/\W/, '-').downcase : 'fontrobot'
|
54
49
|
end
|
55
50
|
|
56
51
|
def cleanup_output_dir
|
57
|
-
|
58
|
-
|
59
|
-
|
52
|
+
old_files = ['fontrobot.css','fontrobot-ie7.css','test.html']
|
53
|
+
old_name = 'fontrobot'
|
54
|
+
css = File.join(@output, old_files[0])
|
55
|
+
if File.exists?(css)
|
56
|
+
line = IO.readlines(css)[3]
|
57
|
+
old_name = line.match(/Path:([^-]+)/)[1].downcase
|
58
|
+
end
|
59
|
+
old_files.concat(Dir[File.join(@output, old_name + '-*.{woff,ttf,eot,svg}')])
|
60
|
+
old_files.each { |file| remove_file File.join(@output, file) }
|
60
61
|
end
|
61
62
|
|
62
63
|
|
@@ -78,7 +79,6 @@ module Fontrobot
|
|
78
79
|
def show_paths
|
79
80
|
file = Dir[File.join(@output, @name + '*.ttf')].first
|
80
81
|
@path = file.chomp('.ttf')
|
81
|
-
|
82
82
|
['woff','ttf','eot','svg'].each do |type|
|
83
83
|
say_status(:create, @path + '.' + type)
|
84
84
|
end
|
@@ -86,8 +86,11 @@ module Fontrobot
|
|
86
86
|
|
87
87
|
|
88
88
|
def fontface_sources
|
89
|
-
|
89
|
+
@inline_sources = false
|
90
|
+
fonts = (options.order) ? options.order.split(",") : ['eot','ttf','woff','svg']
|
90
91
|
inline = (options.inline) ? options.inline.split(",") : []
|
92
|
+
zip = (options.zip.empty?) ? options.zip.split(",") : []
|
93
|
+
|
91
94
|
reorder = {}
|
92
95
|
longtype = {
|
93
96
|
'woff' => 'woff',
|
@@ -96,6 +99,7 @@ module Fontrobot
|
|
96
99
|
'svg' => 'svg'
|
97
100
|
}
|
98
101
|
|
102
|
+
# set url path for font files
|
99
103
|
if(!options.font_path.nil?)
|
100
104
|
font_path = (options.font_path) ? options.font_path : ''
|
101
105
|
@path = File.join(font_path, File.basename(@path))
|
@@ -103,26 +107,33 @@ module Fontrobot
|
|
103
107
|
@path = File.basename(@path)
|
104
108
|
end
|
105
109
|
|
106
|
-
|
107
|
-
:eot => "url(
|
108
|
-
:woff => "url(
|
109
|
-
:ttf => "url(
|
110
|
-
:svg => "url(
|
110
|
+
fontface_strings = {
|
111
|
+
:eot => "url('#{@path}.eot?#iefix') format('embedded-opentype')",
|
112
|
+
:woff => "url('#{@path}.woff') format('woff')",
|
113
|
+
:ttf => "url('#{@path}.ttf') format('truetype')",
|
114
|
+
:svg => "url('#{@path}.svg##{@name}') format('svg')"
|
111
115
|
}
|
112
116
|
|
113
|
-
#
|
114
|
-
|
117
|
+
# if we're inlining we need to make 2 font-face declarations
|
118
|
+
# http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax
|
119
|
+
if(inline.any?)
|
120
|
+
@inline_sources = true
|
121
|
+
fonts.delete('eot') # can't ever inline an eot
|
122
|
+
end
|
123
|
+
|
124
|
+
# order the fontface hash
|
125
|
+
@font_sources = []
|
126
|
+
fonts.each do |type|
|
115
127
|
if(inline.include?(type))
|
116
128
|
fontpath = File.expand_path(File.join(@output, File.basename(@path)+"."+type))
|
117
|
-
|
118
|
-
|
119
|
-
fontstring = "url(data:application/x-font-#{type};charset=utf-8;base64," + encoded_contents +") format('#{longtype[type]}')"
|
129
|
+
encoded_contents = Base64.encode64(File.read(fontpath)).gsub(/\n/, '') # encode and remove newlines, 1.8.7 compat
|
130
|
+
src = "url(data:application/x-font-#{type};charset=utf-8;base64," + encoded_contents +") format('#{longtype[type]}')"
|
120
131
|
else
|
121
|
-
|
132
|
+
src = fontface_strings[type.to_sym]
|
122
133
|
end
|
123
|
-
|
134
|
+
@font_sources << src;
|
124
135
|
end
|
125
|
-
@
|
136
|
+
@font_sources = @font_sources.join(', ');
|
126
137
|
end
|
127
138
|
|
128
139
|
|
@@ -1,10 +1,19 @@
|
|
1
1
|
/*
|
2
|
-
|
2
|
+
Font Robot CSS
|
3
|
+
DO NOT EDIT THIS COMMENT BLOCK. IT'S REQUIRED BY THE GENERATOR. THX, FONTROBOT
|
4
|
+
Path:<%= @path %>
|
3
5
|
*/
|
4
|
-
|
6
|
+
|
7
|
+
<% if @inline_sources %>
|
8
|
+
@font-face {
|
9
|
+
font-family: "<%= @name %>";
|
10
|
+
src: url("<%= @path %>.eot?#iefix") format("embedded-opentype");
|
11
|
+
}
|
12
|
+
|
13
|
+
<% end %>
|
5
14
|
@font-face {
|
6
15
|
font-family: "<%= @name %>";
|
7
|
-
src: <%= @
|
16
|
+
src: <%= @font_sources %>;
|
8
17
|
font-weight: normal;
|
9
18
|
font-style: normal;
|
10
19
|
}
|
data/lib/fontrobot/version.rb
CHANGED
metadata
CHANGED
@@ -1,137 +1,169 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fontrobot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Tim Barkow
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
11
|
+
date: 2013-03-21 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: json
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
17
|
- - ! '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: thor
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
31
|
- - ! '>='
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: listen
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
45
|
- - ! '>='
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0'
|
44
48
|
type: :runtime
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
56
|
name: rake
|
49
|
-
requirement:
|
50
|
-
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
59
|
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
type: :development
|
56
63
|
prerelease: false
|
57
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: bundler
|
60
|
-
requirement:
|
61
|
-
none: false
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
62
72
|
requirements:
|
63
73
|
- - ! '>='
|
64
74
|
- !ruby/object:Gem::Version
|
65
75
|
version: '0'
|
66
76
|
type: :development
|
67
77
|
prerelease: false
|
68
|
-
version_requirements:
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rspec
|
71
|
-
requirement:
|
72
|
-
none: false
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
73
86
|
requirements:
|
74
87
|
- - ! '>='
|
75
88
|
- !ruby/object:Gem::Version
|
76
89
|
version: '0'
|
77
90
|
type: :development
|
78
91
|
prerelease: false
|
79
|
-
version_requirements:
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
80
97
|
- !ruby/object:Gem::Dependency
|
81
98
|
name: fakefs
|
82
|
-
requirement:
|
83
|
-
none: false
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
84
100
|
requirements:
|
85
101
|
- - ! '>='
|
86
102
|
- !ruby/object:Gem::Version
|
87
103
|
version: '0'
|
88
104
|
type: :development
|
89
105
|
prerelease: false
|
90
|
-
version_requirements:
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
91
111
|
- !ruby/object:Gem::Dependency
|
92
112
|
name: spork
|
93
|
-
requirement:
|
94
|
-
none: false
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
95
114
|
requirements:
|
96
115
|
- - ! '>='
|
97
116
|
- !ruby/object:Gem::Version
|
98
117
|
version: '0'
|
99
118
|
type: :development
|
100
119
|
prerelease: false
|
101
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
102
125
|
- !ruby/object:Gem::Dependency
|
103
126
|
name: guard-spork
|
104
|
-
requirement:
|
105
|
-
none: false
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
106
128
|
requirements:
|
107
129
|
- - ! '>='
|
108
130
|
- !ruby/object:Gem::Version
|
109
131
|
version: '0'
|
110
132
|
type: :development
|
111
133
|
prerelease: false
|
112
|
-
version_requirements:
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ! '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
113
139
|
- !ruby/object:Gem::Dependency
|
114
140
|
name: guard-rspec
|
115
|
-
requirement:
|
116
|
-
none: false
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
117
142
|
requirements:
|
118
143
|
- - ! '>='
|
119
144
|
- !ruby/object:Gem::Version
|
120
145
|
version: '0'
|
121
146
|
type: :development
|
122
147
|
prerelease: false
|
123
|
-
version_requirements:
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ! '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
124
153
|
- !ruby/object:Gem::Dependency
|
125
154
|
name: rb-fsevent
|
126
|
-
requirement:
|
127
|
-
none: false
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
128
156
|
requirements:
|
129
157
|
- - ~>
|
130
158
|
- !ruby/object:Gem::Version
|
131
159
|
version: 0.9.1
|
132
160
|
type: :development
|
133
161
|
prerelease: false
|
134
|
-
version_requirements:
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ~>
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 0.9.1
|
135
167
|
description: Transforms EPS and SVG vectors into icon webfonts. Generates Bootstrap
|
136
168
|
compatible CSS for easy inclusion in your projects.
|
137
169
|
email:
|
@@ -150,7 +182,7 @@ files:
|
|
150
182
|
- README.md
|
151
183
|
- Rakefile
|
152
184
|
- bin/fontrobot
|
153
|
-
-
|
185
|
+
- fontrobot.gemspec
|
154
186
|
- lib/fontrobot.rb
|
155
187
|
- lib/fontrobot/cli.rb
|
156
188
|
- lib/fontrobot/generator.rb
|
@@ -171,28 +203,29 @@ files:
|
|
171
203
|
- spec/fontrobot/watcher_spec.rb.off
|
172
204
|
- spec/spec_helper.rb
|
173
205
|
homepage: http://robotloveskitten.github.com/fontrobot/
|
174
|
-
licenses:
|
206
|
+
licenses:
|
207
|
+
- MIT
|
208
|
+
- MPL 1.1/GPL 2.0/LGPL 2.1
|
209
|
+
metadata: {}
|
175
210
|
post_install_message:
|
176
211
|
rdoc_options: []
|
177
212
|
require_paths:
|
178
213
|
- lib
|
179
214
|
required_ruby_version: !ruby/object:Gem::Requirement
|
180
|
-
none: false
|
181
215
|
requirements:
|
182
216
|
- - ! '>='
|
183
217
|
- !ruby/object:Gem::Version
|
184
218
|
version: '0'
|
185
219
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
186
|
-
none: false
|
187
220
|
requirements:
|
188
221
|
- - ! '>='
|
189
222
|
- !ruby/object:Gem::Version
|
190
223
|
version: '0'
|
191
224
|
requirements: []
|
192
225
|
rubyforge_project:
|
193
|
-
rubygems_version:
|
226
|
+
rubygems_version: 2.0.3
|
194
227
|
signing_key:
|
195
|
-
specification_version:
|
228
|
+
specification_version: 4
|
196
229
|
summary: Generate custom icon webfonts from the command line.
|
197
230
|
test_files:
|
198
231
|
- spec/fixtures/empty/no_vectors_here.txt
|