hieroglyph 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 ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in svgfont.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Doug Avery
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,54 @@
1
+ # Hieroglyph
2
+
3
+ Convert a folder full of icons into an SVG icon font, ready for use on the web.
4
+ To produce the remaining web filetypes (eot, ttf, woff) run the gem through [Fontsquirrel generator](http://www.fontsquirrel.com/fontface/generator).
5
+ If rmagick is installed (optional), hieroglyph will also create a neat little character sheet.
6
+
7
+ ## Installation
8
+
9
+ gem install hieroglyph
10
+
11
+ ## Usage
12
+
13
+ Create a directory full of SVG glyphs, and run:
14
+
15
+ hieroglyph -n FontName -g path/to/glyphs -o destination/path
16
+
17
+ Arguments:
18
+
19
+ -n, --name NAME name of the font you want generated (defaults to MyFont)
20
+ -o, --output OUTPUT_FOLDER where to output the generated font (defaults to current folder)
21
+ -g, --glyphs GLYPH_FOLDER where to find glyphs to generate from (defaults to "glyphs")
22
+ -e, --example output set of example glyphs
23
+ -v, --version display Hieroglyph version
24
+ -h, --help display this info
25
+
26
+ Using the -e or -v arguments will NOT output a font.
27
+
28
+ ## Making Glyphs
29
+
30
+ - In a vector editor (Illustrator, Inkscape), create a 1000pt x 1000pt canvas
31
+ - Draw your icon as a single compound path
32
+ - Center it horizontally
33
+ - Vertically, fit it between ~y288 and ~y1025
34
+ - Tip: Use Illustrator's Transform palette to set the icon to 737pt high, with a y of 656 and x of 500
35
+ - Save it as a-[iconname].svg in your glyphs folder, 'a' being the letter you want to map the glyph to. [iconname] can be anything, it's just to help you remember which icon you used.
36
+
37
+ ## Known Issues
38
+
39
+ - If ImageMagick is installed without Ghostscript fonts, the character sheet process will throw an error. The font is still generated correctly, though.
40
+
41
+ ## Thanks
42
+
43
+ - [Chris Coyier](http://chriscoyier.net/), for brining attention to the [icon fonts.](http://css-tricks.com/using-fonts-for-icons/)
44
+ - [Stephen Wyatt Bush](http://stephenwyattbush.com/), for his in-depth [tutorial.](http://blog.stephenwyattbush.com/2012/02/01/making-an-icon-font)
45
+ - [Jeremy Holland](http://www.jeremypholland.com/), for the [Savage SVG parsing gem.](https://github.com/awebneck/savage)
46
+ - [Inkscape contributors](https://launchpad.net/inkscape/+topcontributors), who provided the original SVG font tool I used a lot on this project.
47
+
48
+ ## Todo
49
+
50
+ - Clean up Glyph class. It's crazy!
51
+ - Parse from EPS _or_ SVG. Not sure if this is doable with available open-source technology.
52
+ - Use private use unicode symbols, for accessibility reasons:
53
+ - http://twitter.com/#!/danscotton/statuses/180321697449263106
54
+ - http://en.wikipedia.org/wiki/Private_Use_(Unicode)
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
data/bin/hieroglyph ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require "#{File.dirname(__FILE__)}/../lib/hieroglyph/command_line.rb"
4
+
5
+ Hieroglyph::CommandLine.new
@@ -0,0 +1,19 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/hieroglyph/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Doug Avery"]
6
+ gem.email = ["dougunderscorenelson@gmail.com"]
7
+ gem.description = "Generate a web-ready SVG font from a directory of SVG icons"
8
+ gem.summary = "Icon font creator"
9
+ gem.homepage = "http://github.com/averyvery/hieroglyph"
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "hieroglyph"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = Hieroglyph::VERSION
17
+ gem.add_dependency("nokogiri", ">= 0")
18
+ gem.add_dependency("savage", ">= 0")
19
+ end
@@ -0,0 +1,3 @@
1
+ <glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0v0v0v0v0z" />
2
+ </font>
3
+ </defs></svg>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="1000px" height="1000px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
6
+ <path fill="#0B0B0B" d="M499.969,287.5c-203.459,0-368.516,164.966-368.516,368.516c0,203.58,164.994,368.484,368.516,368.484
7
+ c203.584,0,368.578-164.967,368.578-368.484C868.547,452.521,703.553,287.5,499.969,287.5z M442.059,872.52L255.41,680.097
8
+ l85.249-85.253c0,0,73.045,73.494,101.938,104.123c39.248-39.271,197.062-197.361,216.028-216.293
9
+ c25.124,25.034,86.683,86.596,86.683,86.596L442.059,872.52z"/>
10
+ </svg>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="1000px" height="1000px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
6
+ <path fill="#050606" d="M859.99,566.467c-7.105-8.475-14.604-11.277-20.729-13.07c-6.258-1.662-11.994-2.117-17.959-2.117
7
+ l-206.608-0.131c-1.923,0.131-6.355-1.174-10.038-4.041c-3.781-2.805-6.16-6.682-6.584-8.541l-59.842-215.115
8
+ c-1.988-6.779-4.173-12.906-8.671-19.557c-4.105-5.996-13.135-16.003-29.562-16.395c-16.329,0.326-25.455,10.332-29.562,16.395
9
+ c-4.498,6.715-6.714,12.843-8.604,19.621L401.99,538.502c-0.393,1.891-2.869,5.801-6.617,8.539
10
+ c-3.65,2.869-8.083,4.172-10.006,4.105l-206.642,0.066c-7.953,0.129-15.386,0.65-24.381,4.465
11
+ c-4.433,1.988-9.646,5.051-14.242,10.725c-4.661,5.475-7.855,14.016-7.726,21.674c0.261,12.256,5.41,19.719,9.647,24.902
12
+ c4.498,5.246,9.19,8.963,14.472,12.449l166.519,109.74c2.968,1.271,8.183,10.496,7.726,16.689c0,1.531-0.195,2.77-0.456,3.717
13
+ l-64.73,212.117c-1.792,6.127-3.16,12.059-3.227,19.295c0.098,6.061,0.814,13.947,6.941,22.814
14
+ c5.933,9.125,19.101,14.828,28.097,14.275c17.014-0.912,24.119-7.627,32.527-14.016l162.805-138.619
15
+ c1.336-1.238,4.726-2.674,8.538-2.674c3.685,0,6.91,1.305,8.246,2.479l171.604,139.76c8.507,6.16,15.481,12.549,32.104,13.461
16
+ c0.393,0,0.815,0.033,1.206,0.033c8.572,0,20.566-5.184,26.435-13.854c6.258-8.801,7.04-16.816,7.104-22.75
17
+ c-0.064-7.789-1.598-14.016-3.781-20.631l-72.748-213.455c-0.325-0.912-0.555-2.215-0.555-3.846
18
+ c-0.424-5.736,4.303-13.949,7.008-15.123L843.53,625.49c5.28-3.488,10.007-7.236,14.505-12.482c4.172-5.217,9.354-12.646,9.583-24.9
19
+ C867.812,580.48,864.618,571.941,859.99,566.467z"/>
20
+ </svg>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="1000px" height="1000px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
6
+ <path fill="#0B0B0B" d="M442.597,698.967c-28.893-30.629-101.938-104.123-101.938-104.123l-85.249,85.253L442.059,872.52
7
+ l303.249-303.25c0,0-61.559-61.562-86.683-86.596C639.658,501.605,481.845,659.696,442.597,698.967z"/>
8
+ </svg>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="1000px" height="1000px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
6
+ <polygon fill="#151514" points="745.365,410.643 499.029,656.965 252.729,410.643 131.5,531.97 377.77,778.218 377.759,778.229
7
+ 500.882,901.357 868.5,533.771 "/>
8
+ </svg>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <defs>
5
+ <font id="{{NAME}}" horiz-adv-x="1024" >
6
+ <font-face units-per-em="1024" ascent="819" descent="-205" />
7
+ <missing-glyph horiz-adv-x="500" />
8
+ <glyph d="M0 0h1000v1024h-1000v-1024z" />
9
+ <glyph d="M0 0h1000v1024h-1000v-1024z" />
@@ -0,0 +1,46 @@
1
+ module Hieroglyph
2
+
3
+ class CharacterSheet
4
+
5
+ def initialize(options)
6
+ if Hieroglyph.rmagick_installed?
7
+ require 'rmagick'
8
+ @options = options
9
+ @output_path = File.join(@options[:output_folder], @options[:name]) + "_characters.png"
10
+ if File.exist? @output_path
11
+ Hieroglyph.log " #{@output_path} exists, deleting"
12
+ File.delete @output_path
13
+ end
14
+ @characters = Magick::ImageList.new
15
+ else
16
+ Hieroglyph.log " ImageMagick not installed, skipping character sheet"
17
+ end
18
+ end
19
+
20
+ def add(file, name)
21
+ if Hieroglyph.rmagick_installed?
22
+ character = Magick::Image::read(file).first
23
+ character['Label'] = name
24
+ @characters.push character
25
+ end
26
+ end
27
+
28
+ def save
29
+ if Hieroglyph.rmagick_installed?
30
+ name = @options[:name]
31
+ img = @characters.montage do
32
+ self.background_color = "#ffffff"
33
+ self.border_width = 20
34
+ self.border_color = "#ffffff"
35
+ self.fill = "#000000"
36
+ self.geometry = "150x150+10+5"
37
+ self.matte_color = "#ffffff"
38
+ self.title = name
39
+ end
40
+ img.write(@output_path)
41
+ end
42
+ end
43
+
44
+ end
45
+
46
+ end
@@ -0,0 +1,60 @@
1
+ require "optparse"
2
+ require File.expand_path(File.dirname(__FILE__) + '/../hieroglyph')
3
+
4
+ module Hieroglyph
5
+
6
+ class CommandLine
7
+
8
+ BANNER = <<-EOS
9
+
10
+ Usage: hieroglyph OPTIONS
11
+
12
+ Run hieroglyph to generate an SVG font from a folder of SVG glyphs.
13
+
14
+ Options:
15
+ EOS
16
+
17
+ def initialize
18
+ @execute = true
19
+ parse_options
20
+ if @execute
21
+ Hieroglyph.make @options
22
+ Hieroglyph.log "", " Saved to #{@options[:output_folder]}", "", "=== #{@options[:name]} generated ===", ""
23
+ Hieroglyph.log "To create a full set of webfonts, upload to:", "http://www.fontsquirrel.com/fontface/generator", ""
24
+ end
25
+ end
26
+
27
+ def parse_options
28
+ @options = {
29
+ :name => "MyFont",
30
+ :output_folder => "./",
31
+ :glyph_folder => "glyphs"
32
+ }
33
+ @option_parser = OptionParser.new do |opts|
34
+ opts.on("-n", "--name NAME", "name of the font you want generated") do |name|
35
+ @options[:name] = name
36
+ end
37
+ opts.on("-o", "--output OUTPUT_FOLDER", "where to output the generated font") do |output_folder|
38
+ @options[:output_folder] = output_folder
39
+ end
40
+ opts.on("-g", "--glyphs GLYPH_FOLDER", "where to find glyphs to generate from") do |glyph_folder|
41
+ @options[:glyph_folder] = glyph_folder
42
+ end
43
+ opts.on("-e", "--example", "output set of example glyphs") do |output_folder|
44
+ @execute = false
45
+ Hieroglyph.log "Example glyphs saved to #{Dir.pwd}/glyphs"
46
+ glyphs_path = File.join(File.dirname(__FILE__), "assets/glyphs")
47
+ exec "cp -r #{glyphs_path} ./"
48
+ end
49
+ opts.on_tail('-v', '--version', 'display Hieroglyph version') do
50
+ @execute = false
51
+ Hieroglyph.log "Hieroglyph version #{Hieroglyph::VERSION}"
52
+ end
53
+ end
54
+ @option_parser.banner = BANNER
55
+ @option_parser.parse!(ARGV)
56
+ end
57
+
58
+ end
59
+
60
+ end
@@ -0,0 +1,60 @@
1
+ module Hieroglyph
2
+
3
+ class Font
4
+
5
+ def initialize(options)
6
+ @options = options
7
+ @output_path = File.join(@options[:output_folder], @options[:name] + ".svg")
8
+ @contents = ""
9
+ setup
10
+ add_glyphs
11
+ finish
12
+ end
13
+
14
+ def add_header
15
+ header_path = File.join(File.dirname(__FILE__), "assets/header")
16
+ header = File.open(header_path).read
17
+ header.gsub!("{{NAME}}", @options[:name])
18
+ add header
19
+ end
20
+
21
+ def add_footer
22
+ footer_path = File.join(File.dirname(__FILE__), "assets/footer")
23
+ footer = File.open(footer_path).read
24
+ add footer
25
+ end
26
+
27
+ def setup
28
+ Hieroglyph.log "", "=== Generating #{@options[:name]} ===", ""
29
+ if File.exist? @output_path
30
+ Hieroglyph.log " #{@output_path} exists, deleting"
31
+ File.delete @output_path
32
+ end
33
+ @character_sheet = CharacterSheet.new(@options)
34
+ add_header
35
+ end
36
+
37
+ def finish
38
+ add_footer
39
+ File.open(@output_path, "w") do |file|
40
+ file.puts @contents
41
+ file.close
42
+ end
43
+ @character_sheet.save
44
+ end
45
+
46
+ def add(str)
47
+ @contents << str
48
+ end
49
+
50
+ def add_glyphs
51
+ Hieroglyph.log "", " Reading from #{@options[:glyph_folder]}...", ""
52
+ Dir.glob(File.join(@options[:glyph_folder], "*.svg")).each do |file|
53
+ glyph = Glyph.new(file, @options[:glyph_folder])
54
+ @character_sheet.add(file, glyph.name)
55
+ add glyph.to_node
56
+ end
57
+ end
58
+ end
59
+
60
+ end
@@ -0,0 +1,90 @@
1
+ require "nokogiri"
2
+ require "savage"
3
+
4
+ module Hieroglyph
5
+
6
+ class Glyph
7
+
8
+ attr_accessor :name
9
+
10
+ def initialize(file, source)
11
+ @name = file.gsub(source, "").gsub("/", "").each_char.first
12
+ Hieroglyph.log " #{@name} -> reading..."
13
+ @contents = Nokogiri::XML(File.new(file))
14
+ @polygon = @contents.root.at_css("polygon")
15
+ @path = @polygon.nil? ? convert_path: convert_polygon
16
+ flip_paths
17
+ end
18
+
19
+ def flip_paths
20
+ @path.subpaths.each do |subpath|
21
+ subpath.directions.each do |direction|
22
+ case direction
23
+ when Savage::Directions::MoveTo
24
+ if(direction.absolute?)
25
+ direction.target.y = flip_y(direction.target.y)
26
+ else
27
+ direction.target.y = -1 * direction.target.y
28
+ end
29
+ when Savage::Directions::VerticalTo
30
+ if(direction.absolute?)
31
+ direction.target = flip_y(direction.target)
32
+ else
33
+ direction.target = -1 * direction.target
34
+ end
35
+ when Savage::Directions::LineTo
36
+ if(direction.absolute?)
37
+ direction.target.y = flip_y(direction.target.y)
38
+ else
39
+ direction.target.y = -1 * direction.target.y
40
+ end
41
+ when Savage::Directions::CubicCurveTo
42
+ if(direction.absolute?)
43
+ direction.control.y = flip_y(direction.control.y)
44
+ direction.target.y = flip_y(direction.target.y)
45
+ if(defined?(direction.control_1) && defined?(direction.control_1.y))
46
+ direction.control_1.y = flip_y(direction.control_1.y)
47
+ end
48
+ else
49
+ direction.control.y = -1 * direction.control.y
50
+ direction.target.y = -1 * direction.target.y
51
+ if(defined?(direction.control_1) && defined?(direction.control_1.y))
52
+ direction.control_1.y = -1 * direction.control_1.y
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+
60
+ def convert_path
61
+ @path = @contents.root.at_css("path")["d"]
62
+ @path = Savage::Parser.parse @path
63
+ end
64
+
65
+ def convert_polygon
66
+ Hieroglyph.log " -> converting polygon to path"
67
+ points = @polygon["points"].split(" ")
68
+ Savage::Path.new do |path|
69
+ start_position = points.shift.split(",")
70
+ path.move_to(start_position[0], start_position[1])
71
+ points.each do |point|
72
+ position = point.split(",")
73
+ path.line_to(position[0], position[1])
74
+ end
75
+ path.close_path
76
+ end
77
+ end
78
+
79
+ def flip_y(value)
80
+ value = value.to_f
81
+ value = (value - 500) * -1 + 500
82
+ end
83
+
84
+ def to_node
85
+ return "<glyph unicode=\"#{@name}\" d=\"#{@path.to_command}\" />\n"
86
+ end
87
+
88
+ end
89
+
90
+ end
@@ -0,0 +1,3 @@
1
+ module Hieroglyph
2
+ VERSION = "0.1"
3
+ end
data/lib/hieroglyph.rb ADDED
@@ -0,0 +1,25 @@
1
+ require 'hieroglyph/glyph'
2
+ require 'hieroglyph/font'
3
+ require 'hieroglyph/character_sheet'
4
+
5
+ module Hieroglyph
6
+
7
+ VERSION = "0.1"
8
+
9
+ def self.log(*args)
10
+ args.each do |arg|
11
+ puts arg
12
+ end
13
+ end
14
+
15
+ def self.make(options)
16
+ Font.new(options)
17
+ end
18
+
19
+ def self.rmagick_installed?
20
+ Gem::Specification.find_by_name("rmagick")
21
+ rescue Gem::LoadError
22
+ false
23
+ end
24
+
25
+ end
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hieroglyph
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Doug Avery
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-03-19 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: &70103367137480 !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: *70103367137480
25
+ - !ruby/object:Gem::Dependency
26
+ name: savage
27
+ requirement: &70103367136980 !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: *70103367136980
36
+ description: Generate a web-ready SVG font from a directory of SVG icons
37
+ email:
38
+ - dougunderscorenelson@gmail.com
39
+ executables:
40
+ - hieroglyph
41
+ extensions: []
42
+ extra_rdoc_files: []
43
+ files:
44
+ - .gitignore
45
+ - Gemfile
46
+ - LICENSE
47
+ - README.md
48
+ - Rakefile
49
+ - bin/hieroglyph
50
+ - hieroglyph.gemspec
51
+ - lib/hieroglyph.rb
52
+ - lib/hieroglyph/assets/footer
53
+ - lib/hieroglyph/assets/glyphs/C-checkcircle.svg
54
+ - lib/hieroglyph/assets/glyphs/a-star.svg
55
+ - lib/hieroglyph/assets/glyphs/c-check.svg
56
+ - lib/hieroglyph/assets/glyphs/d-downcaret.svg
57
+ - lib/hieroglyph/assets/header
58
+ - lib/hieroglyph/character_sheet.rb
59
+ - lib/hieroglyph/command_line.rb
60
+ - lib/hieroglyph/font.rb
61
+ - lib/hieroglyph/glyph.rb
62
+ - lib/hieroglyph/version.rb
63
+ homepage: http://github.com/averyvery/hieroglyph
64
+ licenses: []
65
+ post_install_message:
66
+ rdoc_options: []
67
+ require_paths:
68
+ - lib
69
+ required_ruby_version: !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ requirements: []
82
+ rubyforge_project:
83
+ rubygems_version: 1.8.15
84
+ signing_key:
85
+ specification_version: 3
86
+ summary: Icon font creator
87
+ test_files: []