fontrobot 0.1
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.
- data/.gitignore +18 -0
- data/CHANGELOG.md +26 -0
- data/CONTRIBUTING.md +9 -0
- data/Gemfile +4 -0
- data/Guardfile +15 -0
- data/LICENSES.txt +60 -0
- data/README.md +53 -0
- data/Rakefile +12 -0
- data/bin/fontrobot +5 -0
- data/fontcustom.gemspec +32 -0
- data/lib/fontrobot/cli.rb +32 -0
- data/lib/fontrobot/generator.rb +140 -0
- data/lib/fontrobot/scripts/eotlitetool.py +466 -0
- data/lib/fontrobot/scripts/generate.py +109 -0
- data/lib/fontrobot/scripts/sfnt2woff +0 -0
- data/lib/fontrobot/templates/fontrobot-ie7.css +18 -0
- data/lib/fontrobot/templates/fontrobot.css +69 -0
- data/lib/fontrobot/templates/test.html +101 -0
- data/lib/fontrobot/version.rb +3 -0
- data/lib/fontrobot/watcher.rb +37 -0
- data/lib/fontrobot.rb +21 -0
- data/spec/fixtures/empty/no_vectors_here.txt +0 -0
- data/spec/fixtures/vectors/C.svg +4 -0
- data/spec/fixtures/vectors/D.svg +3 -0
- data/spec/fixtures/vectors/a_R3ally-eXotic f1Le Name.svg +3 -0
- data/spec/fontrobot/fontcustom_spec.rb +38 -0
- data/spec/fontrobot/generator_spec.rb +75 -0
- data/spec/fontrobot/watcher_spec.rb.off +34 -0
- data/spec/spec_helper.rb +29 -0
- metadata +205 -0
@@ -0,0 +1,101 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Your Font/Glyphs</title>
|
5
|
+
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
|
6
|
+
|
7
|
+
<link rel="stylesheet" href="fontrobot.css" />
|
8
|
+
<!--[if lte IE 7]>
|
9
|
+
<link rel="stylesheet" href="fontrobot-ie7.css" />
|
10
|
+
<![endif]-->
|
11
|
+
|
12
|
+
|
13
|
+
<style>
|
14
|
+
section, header, footer {display: block;}
|
15
|
+
body {
|
16
|
+
font-family: sans-serif;
|
17
|
+
color: #444;
|
18
|
+
line-height: 1.5;
|
19
|
+
font-size: 1em;
|
20
|
+
}
|
21
|
+
* {
|
22
|
+
-moz-box-sizing: border-box;
|
23
|
+
-webkit-box-sizing: border-box;
|
24
|
+
box-sizing: border-box;
|
25
|
+
margin: 0;
|
26
|
+
padding: 0;
|
27
|
+
}
|
28
|
+
.glyph {
|
29
|
+
float: left;
|
30
|
+
text-align: center;
|
31
|
+
background: #eee;
|
32
|
+
padding: .75em;
|
33
|
+
margin: .75em 1.5em .75em 0;
|
34
|
+
width: 7em;
|
35
|
+
border-radius: .25em;
|
36
|
+
box-shadow: inset 0 0 0 1px #f8f8f8, 0 0 0 1px #CCC;
|
37
|
+
}
|
38
|
+
.glyph input {
|
39
|
+
width: 100%;
|
40
|
+
text-align: center;
|
41
|
+
font-family: consolas, monospace;
|
42
|
+
}
|
43
|
+
.glyph input, .mtm {
|
44
|
+
margin-top: .75em;
|
45
|
+
}
|
46
|
+
.w-main {
|
47
|
+
width: 80%;
|
48
|
+
}
|
49
|
+
.centered {
|
50
|
+
margin-left: auto;
|
51
|
+
margin-right: auto;
|
52
|
+
}
|
53
|
+
.fs1 {
|
54
|
+
font-size: 2em;
|
55
|
+
}
|
56
|
+
header {
|
57
|
+
margin: 2em 0;
|
58
|
+
padding-bottom: .5em;
|
59
|
+
color: #666;
|
60
|
+
box-shadow: 0 2px #eee;
|
61
|
+
}
|
62
|
+
header h1 {
|
63
|
+
font-size: 2em;
|
64
|
+
font-weight: normal;
|
65
|
+
}
|
66
|
+
.clearfix:before, .clearfix:after { content: ""; display: table; }
|
67
|
+
.clearfix:after, .clear { clear: both; }
|
68
|
+
footer {
|
69
|
+
margin-top: 2em;
|
70
|
+
padding: .5em 0;
|
71
|
+
box-shadow: 0 -2px #eee;
|
72
|
+
}
|
73
|
+
a, a:visited {
|
74
|
+
color: #B35047;
|
75
|
+
text-decoration: none;
|
76
|
+
}
|
77
|
+
a:hover, a:focus {color: #000;}
|
78
|
+
.box1 {
|
79
|
+
display: inline-block;
|
80
|
+
width: 15em;
|
81
|
+
padding: .25em .5em;
|
82
|
+
background: #eee;
|
83
|
+
margin: .5em 1em .5em 0;
|
84
|
+
}
|
85
|
+
</style>
|
86
|
+
</head>
|
87
|
+
<body>
|
88
|
+
<div class="w-main centered">
|
89
|
+
<section class="mtm clearfix" id="glyphs">
|
90
|
+
<header> <h1>Your font contains the following glyphs</h1> </header>
|
91
|
+
<% @classes.each_with_index do |name, index| %>
|
92
|
+
<div class="glyph">
|
93
|
+
<div class="fs1" ><i class="icon-<%= name %>"></i></div>
|
94
|
+
<input type="text" readonly="readonly" value="&#x<%= (61696+index).to_s(16) %>;" />
|
95
|
+
<input type="text" readonly="readonly" value=".icon-<%= name %>" />
|
96
|
+
</div>
|
97
|
+
<% end %>
|
98
|
+
</section>
|
99
|
+
</div>
|
100
|
+
</body>
|
101
|
+
</html>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'listen'
|
2
|
+
|
3
|
+
module Fontrobot
|
4
|
+
class Watcher
|
5
|
+
def self.watch(*args)
|
6
|
+
callback = Proc.new do |modified, added, removed|
|
7
|
+
puts ' >> Changed: ' + modified.join(' ') unless modified.empty?
|
8
|
+
puts ' >> Added: ' + added.join(' ') unless added.empty?
|
9
|
+
puts ' >> Removed: ' + removed.join(' ') unless removed.empty?
|
10
|
+
|
11
|
+
changed = modified + added + removed
|
12
|
+
Fontrobot.compile(*args) unless changed.empty?
|
13
|
+
end
|
14
|
+
|
15
|
+
dir = args.first
|
16
|
+
@listener = Listen.to(dir).filter(/\.(eps|svg)$/).change(&callback)
|
17
|
+
|
18
|
+
begin
|
19
|
+
puts 'Fontrobot is watching your icons at ' + dir
|
20
|
+
puts 'Press Ctrl + C to stop.'
|
21
|
+
Fontrobot.compile(*args)
|
22
|
+
@listener.start()
|
23
|
+
|
24
|
+
# Catches Ctrl + C
|
25
|
+
# Does listen gem have a better way of handling this?
|
26
|
+
rescue SignalException
|
27
|
+
stop
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.stop
|
32
|
+
# Newline exists so message is not prepended with ^C on SIGTERM
|
33
|
+
puts "\nFontrobot is signing off. Goodnight and good luck."
|
34
|
+
@listener.stop
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/fontrobot.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'fontrobot/version'
|
2
|
+
require 'fontrobot/generator'
|
3
|
+
require 'fontrobot/watcher'
|
4
|
+
|
5
|
+
module Fontrobot
|
6
|
+
# Usage:
|
7
|
+
# Fontrobot.compile 'path/to/vectors', '-o', 'path/to/output'
|
8
|
+
def compile(*args)
|
9
|
+
Fontrobot::Generator.start(args) # as array
|
10
|
+
end
|
11
|
+
|
12
|
+
def watch(*args)
|
13
|
+
Fontrobot::Watcher.watch(*args)
|
14
|
+
end
|
15
|
+
|
16
|
+
def stop
|
17
|
+
Fontrobot::Watcher.stop
|
18
|
+
end
|
19
|
+
|
20
|
+
module_function :compile, :watch, :stop
|
21
|
+
end
|
File without changes
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="100px" height="100px" viewBox="0 0 100 100" enable-background="new 0 0 100 100" xml:space="preserve">
|
2
|
+
<path d="M50,0C22.389,0,0,22.383,0,49.994V100h100V49.994C100,22.383,77.617,0,50,0z M96.667,96.667H3.333V49.994 c0-25.729,20.938-46.66,46.667-46.66c25.729,0,46.667,20.931,46.667,46.66V96.667z"/>
|
3
|
+
<path d="M50,10c-22.083,0-40,17.91-40,39.994V90l30-30V50c0-5.521,4.479-10,10-10c5.521,0,10,4.479,10,10v10l30,30V49.994 C90,27.91,72.09,10,50,10z"/>
|
4
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="100px" height="100px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve">
|
2
|
+
<path style="fill:#010101;" d="M87.5,75c-3.039,0-5.725,1.221-7.886,3.016l-19.056-13.6c1.209-2.49,1.941-5.225,1.941-8.166 c0-4.041-1.318-7.775-3.491-10.828l22.29-22.302C83.154,24.207,85.193,25,87.5,25c6.909,0,12.5-5.591,12.5-12.5S94.409,0,87.5,0 S75,5.591,75,12.5c0,2.307,0.793,4.346,1.88,6.201L54.59,41.004c-3.076-2.197-6.787-3.504-10.84-3.504 c-7.153,0-13.306,4.064-16.467,9.973l-15.052-5.029C11.621,39.637,9.24,37.5,6.25,37.5C2.795,37.5,0,40.295,0,43.75 S2.795,50,6.25,50c1.574,0,2.979-0.635,4.077-1.6l14.966,4.993C25.146,54.334,25,55.273,25,56.25C25,66.602,33.398,75,43.75,75 c5.151,0,9.826-2.088,13.221-5.457l18.933,13.514C75.366,84.448,75,85.926,75,87.5c0,6.896,5.591,12.5,12.5,12.5 S100,94.396,100,87.5S94.409,75,87.5,75z"/>
|
3
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny" id="Layer_1" x="0px" y="0px" width="100px" height="100px" viewBox="0 0 100 100" xml:space="preserve">
|
2
|
+
<path fill="#000000" d="M96.897,37.513c1.921,0,3.478-1.558,3.478-3.479c0-1.92-1.557-3.478-3.478-3.478s-3.478,1.558-3.478,3.478 c0,0.422,0.079,0.825,0.217,1.2l-10.153,8.649l-12.864-7.567c0.073-0.297,0.116-0.607,0.116-0.927c0-2.142-1.736-3.878-3.878-3.878 c-0.869,0-1.668,0.289-2.314,0.772L52.92,23.054c0.054-0.22,0.086-0.448,0.086-0.684c0-1.581-1.281-2.861-2.861-2.861 s-2.861,1.281-2.861,2.861c0,0.729,0.275,1.393,0.724,1.898l-5.835,12.488c-0.26-0.045-0.526-0.074-0.8-0.074 c-0.86,0-1.662,0.239-2.351,0.647l-15.438-6.915c0.036-0.225,0.06-0.454,0.06-0.689c0-2.38-1.929-4.309-4.309-4.309 c-2.379,0-4.309,1.929-4.309,4.309s1.929,4.309,4.309,4.309c1.352,0,2.556-0.623,3.346-1.596l14.682,6.576 c-0.384,0.674-0.607,1.452-0.607,2.284c0,0.852,0.293,1.605,0.694,2.29l-8.233,8.237c-1.136-0.811-2.506-1.294-4.003-1.294 c-2.642,0-4.915,1.501-6.082,3.684l-0.096-0.032c-0.001,0.012-0.004,0.023-0.005,0.035L7.553,49.002 c0.016-0.134,0.025-0.271,0.025-0.409c0-1.989-1.612-3.601-3.601-3.601s-3.601,1.612-3.601,3.601s1.612,3.601,3.601,3.601 c1.054,0,1.999-0.455,2.657-1.177l11.723,5.329c-0.005,0.013-0.009,0.025-0.015,0.037l0.056,0.019 c-0.054,0.348-0.108,0.694-0.108,1.055c0,1.954,0.813,3.716,2.115,4.975l-0.017,0.013c0.004,0.005,0.008,0.01,0.012,0.014 l-5.973,8.802c-0.155-0.027-0.314-0.044-0.478-0.044c-1.479,0-2.678,1.198-2.678,2.678c0,1.479,1.199,2.678,2.678,2.678 c1.479,0,2.678-1.199,2.678-2.678c0-0.501-0.14-0.969-0.38-1.37l5.364-7.904l0.71-0.877c0.881,0.407,1.859,0.641,2.894,0.641 c1.902,0,3.629-0.771,4.883-2.016l6.993,4.991c-0.199,0.514-0.334,1.06-0.334,1.641c0,2.548,2.065,4.617,4.617,4.617 c2.159,0,3.965-1.483,4.471-3.482l15.916-4.923c0.977,1.815,2.893,3.05,5.099,3.05c1.273,0,2.447-0.417,3.403-1.114l7.12,6.611 c-0.038,0.193-0.059,0.393-0.059,0.597c0,1.734,1.406,3.14,3.14,3.14s3.139-1.405,3.139-3.14c0-1.733-1.405-3.139-3.139-3.139 c-0.707,0-1.358,0.236-1.883,0.631l-6.811-6.323c0.552-0.887,0.893-1.93,0.893-3.05c0-2.815-1.661-5.16-4.661-5.677V39.104 c1-0.172,1.082-0.478,1.513-0.878l13.332,7.848l11.179,15.655c-0.092,0.23-0.146,0.481-0.146,0.745c0,1.125,0.91,2.037,2.035,2.037 s2.037-0.912,2.037-2.037s-0.913-2.037-2.038-2.037c-0.03,0-0.06,0.003-0.09,0.005L85.094,45.422l9.931-8.459 C95.565,37.31,96.207,37.513,96.897,37.513z M61.07,62.474c0,0.21,0.013,0.416,0.035,0.62l-15.275,4.724 c-0.522-1.975-2.316-3.435-4.458-3.435c-1.123,0-2.114,0.451-2.913,1.113l-7.038-5.022c0.447-0.92,0.717-1.93,0.717-3.017 c0-1.492-0.487-2.871-1.29-3.999l8.233-8.237c0.686,0.401,1.438,0.694,2.291,0.694c1.642,0,3.079-0.857,3.897-2.147l17.222,14.914 C61.609,59.699,61.07,61.022,61.07,62.474z M66,56.797c-1,0.1-1.135,0.273-1.596,0.502l-18.36-15.846 c0.002-0.052-0.023-0.102-0.023-0.154c0-1.485-0.718-2.802-1.806-3.646l5.799-12.428c0.046,0.002,0.088,0.007,0.134,0.007 c0.53,0,1.023-0.147,1.449-0.399l11.621,9.229c-0.151,0.415-0.113,0.861-0.113,1.328c0,1.757,0.895,3.238,2.895,3.715V56.797z"/>
|
3
|
+
</svg>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fontrobot do
|
4
|
+
let(:input_dir) { 'spec/fixtures/vectors' }
|
5
|
+
let(:output_dir) { 'tmp' }
|
6
|
+
let(:fake_file) { output_dir + '/non-vector.txt' }
|
7
|
+
|
8
|
+
context 'when ouput_dir already contains files' do
|
9
|
+
# Compile, add non-fontrobot file, change input vectors, recompile
|
10
|
+
before(:all) do
|
11
|
+
# originals
|
12
|
+
Fontrobot.compile(input_dir, '-o', output_dir, '-n', 'Original Font')
|
13
|
+
FileUtils.touch(fake_file, :verbose => true)
|
14
|
+
@original_fonts = Dir[output_dir + '/fontrobot-*.{woff,eot,ttf,svg}']
|
15
|
+
@original_css = File.read(output_dir + '/fontrobot.css')
|
16
|
+
|
17
|
+
FileUtils.mv(input_dir + '/C.svg', input_dir + '/E.svg', :verbose => true)
|
18
|
+
Fontrobot.compile(input_dir, '-o', output_dir)
|
19
|
+
end
|
20
|
+
|
21
|
+
after(:all) do
|
22
|
+
cleanup(output_dir)
|
23
|
+
FileUtils.mv(input_dir + '/E.svg', input_dir + '/C.svg', :verbose => true)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should delete previous fontrobot generated files' do
|
27
|
+
new_files = Dir[output_dir + '/*']
|
28
|
+
@original_fonts.each do |original|
|
29
|
+
new_files.should_not include(original)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should generate different css' do
|
34
|
+
new_css = File.read(output_dir + '/fontrobot.css')
|
35
|
+
new_css.should_not equal(@original_css)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fontrobot::Generator do
|
4
|
+
let(:input_dir) { 'spec/fixtures/vectors' }
|
5
|
+
let(:output_dir) { 'tmp' }
|
6
|
+
|
7
|
+
context 'normally' do
|
8
|
+
before(:all) { Fontrobot::Generator.start([input_dir, '-o', output_dir]) }
|
9
|
+
after(:all) { cleanup(output_dir) }
|
10
|
+
|
11
|
+
it 'should create webfonts' do
|
12
|
+
exts = %w( .woff .eot .ttf .svg )
|
13
|
+
files = Dir[output_dir + '/*']
|
14
|
+
files.map! { |file| File.extname(file) }
|
15
|
+
|
16
|
+
exts.each { |ext| files.should include(ext) }
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should print font-face declarations in fontrobot.css' do
|
20
|
+
stylesheet = File.read(output_dir + '/fontrobot.css')
|
21
|
+
files = Dir[output_dir + '/*.{woff,eot,ttf,svg}']
|
22
|
+
|
23
|
+
files.each do |file|
|
24
|
+
stylesheet.should include(File.basename(file))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should print icon-* CSS classes in fontrobot.css' do
|
29
|
+
stylesheet = File.read(output_dir + '/fontrobot.css')
|
30
|
+
icon_names = Dir[input_dir + '/*'].map { |file| File.basename(file)[0..-5].gsub(/\W/, '-').downcase }
|
31
|
+
|
32
|
+
icon_names.each do |name|
|
33
|
+
stylesheet.should include('.icon-' + name)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'when input_dir does not exist' do
|
39
|
+
let(:fake_input_dir) { 'does/not/exist' }
|
40
|
+
|
41
|
+
it 'should raise an error' do
|
42
|
+
results = capture(:stderr) { Fontrobot::Generator.start([fake_input_dir, '-o', output_dir]) }
|
43
|
+
results.should =~ /doesn't exist or isn't a directory/
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'when input_dir does not contain vectors' do
|
48
|
+
let(:empty_input_dir) { 'spec/fixtures/empty' }
|
49
|
+
|
50
|
+
it 'should raise an error' do
|
51
|
+
results = capture(:stderr) { Fontrobot::Generator.start([empty_input_dir, output_dir]) }
|
52
|
+
results.should =~ /doesn't contain any vectors/
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'when flags are passed' do
|
57
|
+
it 'should save output files with a custom name' do
|
58
|
+
Fontrobot::Generator.start([input_dir, '-o', output_dir, '-n', 'customname'])
|
59
|
+
|
60
|
+
file = Dir[File.join(output_dir, 'customname-*.ttf')].first
|
61
|
+
File.exists?(file).should be_true
|
62
|
+
|
63
|
+
cleanup(output_dir)
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should exclude the filename hash' do
|
67
|
+
Fontrobot::Generator.start([input_dir, '-o', output_dir, '--nohash'])
|
68
|
+
|
69
|
+
file = File.join(output_dir, 'fontrobot.ttf')
|
70
|
+
File.exists?(file).should be_true
|
71
|
+
|
72
|
+
cleanup(output_dir)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fontrobot do
|
4
|
+
let (:input_dir) { 'spec/fixtures/vectors' }
|
5
|
+
let (:output_dir) { 'tmp' }
|
6
|
+
let (:fontrobot) { Fontrobot }
|
7
|
+
|
8
|
+
before(:all) do
|
9
|
+
fontrobot.watch(input_dir, output_dir)
|
10
|
+
end
|
11
|
+
|
12
|
+
context '#watch' do
|
13
|
+
it 'should detect when a vector file changes' do
|
14
|
+
`mv spec/fixtures/vectors/B.svg spec/fixtures/vectors/E.svg`
|
15
|
+
sleep 1
|
16
|
+
fontrobot.should_receive(:compile).with(input_dir, output_dir)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should detect when a vector file is added' do
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should detect when a vector file is removed' do
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should send complain if the dir has no vectors' do
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
after(:all) do
|
30
|
+
Fontrobot.stop
|
31
|
+
`mv spec/fixtures/vectors/E.svg spec/fixtures/vectors/B.svg`
|
32
|
+
cleanup(output_dir)
|
33
|
+
end
|
34
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spork'
|
2
|
+
|
3
|
+
Spork.prefork do
|
4
|
+
require 'rspec'
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
RSpec.configure do |c|
|
8
|
+
def cleanup(dir)
|
9
|
+
FileUtils.rm_r(dir, :verbose => true) if File.exists?(dir)
|
10
|
+
end
|
11
|
+
|
12
|
+
def capture(stream)
|
13
|
+
begin
|
14
|
+
stream = stream.to_s
|
15
|
+
eval "$#{stream} = StringIO.new"
|
16
|
+
yield
|
17
|
+
result = eval("$#{stream}").string
|
18
|
+
ensure
|
19
|
+
eval("$#{stream} = #{stream.upcase}")
|
20
|
+
end
|
21
|
+
|
22
|
+
result
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
Spork.each_run do
|
28
|
+
require File.expand_path('../../lib/fontrobot.rb', __FILE__)
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,205 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fontrobot
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Tim Barkow
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-03-16 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: json
|
16
|
+
requirement: &70295096519860 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70295096519860
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: thor
|
27
|
+
requirement: &70295096517940 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70295096517940
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: listen
|
38
|
+
requirement: &70295096510920 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70295096510920
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rake
|
49
|
+
requirement: &70295096508960 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70295096508960
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: bundler
|
60
|
+
requirement: &70295096506800 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70295096506800
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: &70295096505020 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70295096505020
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: fakefs
|
82
|
+
requirement: &70295096503960 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70295096503960
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: spork
|
93
|
+
requirement: &70295096503140 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70295096503140
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: guard-spork
|
104
|
+
requirement: &70295092408240 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *70295092408240
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: guard-rspec
|
115
|
+
requirement: &70295092404300 !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
type: :development
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: *70295092404300
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: rb-fsevent
|
126
|
+
requirement: &70295092403120 !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - ~>
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 0.9.1
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: *70295092403120
|
135
|
+
description: Transforms EPS and SVG vectors into icon webfonts. Generates Bootstrap
|
136
|
+
compatible CSS for easy inclusion in your projects.
|
137
|
+
email:
|
138
|
+
- tim@robotloveskitten.com
|
139
|
+
executables:
|
140
|
+
- fontrobot
|
141
|
+
extensions: []
|
142
|
+
extra_rdoc_files: []
|
143
|
+
files:
|
144
|
+
- .gitignore
|
145
|
+
- CHANGELOG.md
|
146
|
+
- CONTRIBUTING.md
|
147
|
+
- Gemfile
|
148
|
+
- Guardfile
|
149
|
+
- LICENSES.txt
|
150
|
+
- README.md
|
151
|
+
- Rakefile
|
152
|
+
- bin/fontrobot
|
153
|
+
- fontcustom.gemspec
|
154
|
+
- lib/fontrobot.rb
|
155
|
+
- lib/fontrobot/cli.rb
|
156
|
+
- lib/fontrobot/generator.rb
|
157
|
+
- lib/fontrobot/scripts/eotlitetool.py
|
158
|
+
- lib/fontrobot/scripts/generate.py
|
159
|
+
- lib/fontrobot/scripts/sfnt2woff
|
160
|
+
- lib/fontrobot/templates/fontrobot-ie7.css
|
161
|
+
- lib/fontrobot/templates/fontrobot.css
|
162
|
+
- lib/fontrobot/templates/test.html
|
163
|
+
- lib/fontrobot/version.rb
|
164
|
+
- lib/fontrobot/watcher.rb
|
165
|
+
- spec/fixtures/empty/no_vectors_here.txt
|
166
|
+
- spec/fixtures/vectors/C.svg
|
167
|
+
- spec/fixtures/vectors/D.svg
|
168
|
+
- spec/fixtures/vectors/a_R3ally-eXotic f1Le Name.svg
|
169
|
+
- spec/fontrobot/fontcustom_spec.rb
|
170
|
+
- spec/fontrobot/generator_spec.rb
|
171
|
+
- spec/fontrobot/watcher_spec.rb.off
|
172
|
+
- spec/spec_helper.rb
|
173
|
+
homepage: http://robotloveskitten.github.com/fontrobot/
|
174
|
+
licenses: []
|
175
|
+
post_install_message:
|
176
|
+
rdoc_options: []
|
177
|
+
require_paths:
|
178
|
+
- lib
|
179
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
180
|
+
none: false
|
181
|
+
requirements:
|
182
|
+
- - ! '>='
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '0'
|
185
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
186
|
+
none: false
|
187
|
+
requirements:
|
188
|
+
- - ! '>='
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0'
|
191
|
+
requirements: []
|
192
|
+
rubyforge_project:
|
193
|
+
rubygems_version: 1.8.15
|
194
|
+
signing_key:
|
195
|
+
specification_version: 3
|
196
|
+
summary: Generate custom icon webfonts from the command line.
|
197
|
+
test_files:
|
198
|
+
- spec/fixtures/empty/no_vectors_here.txt
|
199
|
+
- spec/fixtures/vectors/C.svg
|
200
|
+
- spec/fixtures/vectors/D.svg
|
201
|
+
- spec/fixtures/vectors/a_R3ally-eXotic f1Le Name.svg
|
202
|
+
- spec/fontrobot/fontcustom_spec.rb
|
203
|
+
- spec/fontrobot/generator_spec.rb
|
204
|
+
- spec/fontrobot/watcher_spec.rb.off
|
205
|
+
- spec/spec_helper.rb
|