glyph_imager 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +17 -0
  5. data/Rakefile +53 -0
  6. data/VERSION +1 -0
  7. data/glyph_imager.gemspec +90 -0
  8. data/lib/glyph_imager.rb +102 -0
  9. data/test/fonts/DejaVuSerif.ttf +0 -0
  10. data/test/helper.rb +10 -0
  11. data/test/test_glyph_imager.rb +62 -0
  12. data/vendor/graphics_utf +157 -0
  13. data/vendor/ttf-ruby-0.1/AUTHORS +1 -0
  14. data/vendor/ttf-ruby-0.1/COPYING +340 -0
  15. data/vendor/ttf-ruby-0.1/README +49 -0
  16. data/vendor/ttf-ruby-0.1/TODO +23 -0
  17. data/vendor/ttf-ruby-0.1/VERSION +1 -0
  18. data/vendor/ttf-ruby-0.1/lib/ttf/datatypes.rb +189 -0
  19. data/vendor/ttf-ruby-0.1/lib/ttf/encodings.rb +140 -0
  20. data/vendor/ttf-ruby-0.1/lib/ttf/exceptions.rb +28 -0
  21. data/vendor/ttf-ruby-0.1/lib/ttf/font_loader.rb +290 -0
  22. data/vendor/ttf-ruby-0.1/lib/ttf/fontchunk.rb +77 -0
  23. data/vendor/ttf-ruby-0.1/lib/ttf/table/cmap.rb +408 -0
  24. data/vendor/ttf-ruby-0.1/lib/ttf/table/cvt.rb +49 -0
  25. data/vendor/ttf-ruby-0.1/lib/ttf/table/fpgm.rb +48 -0
  26. data/vendor/ttf-ruby-0.1/lib/ttf/table/gasp.rb +88 -0
  27. data/vendor/ttf-ruby-0.1/lib/ttf/table/glyf.rb +452 -0
  28. data/vendor/ttf-ruby-0.1/lib/ttf/table/head.rb +86 -0
  29. data/vendor/ttf-ruby-0.1/lib/ttf/table/hhea.rb +96 -0
  30. data/vendor/ttf-ruby-0.1/lib/ttf/table/hmtx.rb +98 -0
  31. data/vendor/ttf-ruby-0.1/lib/ttf/table/kern.rb +186 -0
  32. data/vendor/ttf-ruby-0.1/lib/ttf/table/loca.rb +75 -0
  33. data/vendor/ttf-ruby-0.1/lib/ttf/table/maxp.rb +81 -0
  34. data/vendor/ttf-ruby-0.1/lib/ttf/table/name.rb +222 -0
  35. data/vendor/ttf-ruby-0.1/lib/ttf/table/os2.rb +172 -0
  36. data/vendor/ttf-ruby-0.1/lib/ttf/table/post.rb +120 -0
  37. data/vendor/ttf-ruby-0.1/lib/ttf/table/prep.rb +27 -0
  38. data/vendor/ttf-ruby-0.1/lib/ttf/table/vhea.rb +45 -0
  39. data/vendor/ttf-ruby-0.1/lib/ttf/table/vmtx.rb +36 -0
  40. data/vendor/ttf-ruby-0.1/lib/ttf.rb +20 -0
  41. data/vendor/ttf-ruby-0.1/setup.rb +1558 -0
  42. data/vendor/ttf-ruby-0.1/tools/README +44 -0
  43. data/vendor/ttf-ruby-0.1/tools/ttfcairoglyphviewer +229 -0
  44. data/vendor/ttf-ruby-0.1/tools/ttfdump +396 -0
  45. data/vendor/ttf-ruby-0.1/tools/ttfglyph2svg +144 -0
  46. data/vendor/ttf-ruby-0.1/tools/ttfsubset +273 -0
  47. metadata +120 -0
@@ -0,0 +1,144 @@
1
+ # ttfglyph2svg
2
+ # Copyright (C) 2006 Mathieu Blondel
3
+ #
4
+ # This program is free software; you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation; either version 2 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program; if not, write to the Free Software
16
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
+
18
+ $LOAD_PATH.unshift("../lib/")
19
+
20
+ require 'ttf'
21
+
22
+ def puts_svg_header
23
+ puts <<XML
24
+ <?xml version="1.0" standalone="no"?>
25
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
26
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
27
+
28
+ <svg width="100%" height="100%" version="1.1"
29
+ xmlns="http://www.w3.org/2000/svg">
30
+ XML
31
+ end
32
+
33
+ def puts_svg_footer
34
+ puts "</svg>"
35
+ end
36
+
37
+ def puts_simple_glyph(glyph)
38
+ points = glyph.points
39
+
40
+
41
+
42
+ puts "<g>"
43
+
44
+ print "<path d=\""
45
+
46
+ start_new_contour = true
47
+ i = 0
48
+ max_y = 0
49
+
50
+ while i < points.length
51
+
52
+ max_y = points[i].abs_y if points[i].abs_y > max_y
53
+
54
+ if start_new_contour
55
+ # The -y is needed because the directions of the y-axis
56
+ # with SVG and TrueType are opposed.
57
+ print "M#{points[i].abs_x} #{-(points[i].abs_y)}"
58
+ first_point = points[i]
59
+ end
60
+
61
+ if points[i].end_of_contour?
62
+ print "Z"
63
+ start_new_contour = true
64
+ i += 1
65
+ else
66
+ if points[i].on_curve? and points[i + 1].on_curve?
67
+ print "L#{points[i + 1].abs_x} #{-(points[i + 1].abs_y)}"
68
+ i += 1
69
+ else
70
+ if points[i + 1].end_of_contour?
71
+ # Close the contour
72
+ print "Q#{points[i + 1].abs_x} " + \
73
+ "#{-(points[i + 1].abs_y)} " + \
74
+ "#{first_point.abs_x} #{-(first_point.abs_y)}"
75
+ i += 1
76
+ elsif points[i + 2].on_curve?
77
+ print "Q#{points[i + 1].abs_x} " + \
78
+ "#{-(points[i + 1].abs_y)} " + \
79
+ "#{points[i + 2].abs_x} #{-(points[i + 2].abs_y)}"
80
+ i += 2
81
+ else
82
+ # This is an implied on-curve point
83
+ impl_x = (points[i + 2].abs_x - points[i + 1].abs_x) / 2
84
+ impl_x += points[i + 1].abs_x
85
+ impl_y = (points[i + 2].abs_y - points[i + 1].abs_y) / 2
86
+ impl_y += points[i + 1].abs_y
87
+
88
+ print "Q#{points[i + 1].abs_x} " + \
89
+ "#{-(points[i + 1].abs_y)} " + \
90
+ "#{impl_x} #{-(impl_y)}"
91
+ i += 1
92
+ end
93
+ end
94
+
95
+ start_new_contour = false
96
+ end
97
+
98
+ end
99
+
100
+
101
+
102
+ puts "\" transform=\"translate(0, #{max_y + 10})\" " + \
103
+ "style=\"fill:black;stroke:black;\"/>/>"
104
+
105
+ puts "</g>"
106
+ end
107
+
108
+ def puts_composite_glyph(font, glyph)
109
+ glyph_offsets = font.get_table(:loca).glyph_offsets
110
+ glyph.components.each do |gc|
111
+ gc = font.get_table(:glyf).get_glyph_at_offset(glyph_offsets[gc.index])
112
+ if gc.composite?
113
+ puts_composite_glyph(font, gc)
114
+ else
115
+ puts_simple_glyph(gc)
116
+ end
117
+ end
118
+ end
119
+
120
+ font = Font::TTF::File.new(ARGV[0])
121
+
122
+ enc_tbl = font.get_table(:cmap).encoding_tables.find do |t|
123
+ t.class == Font::TTF::Table::Cmap::EncodingTable4
124
+ end
125
+
126
+ if ARGV[1] == "-g"
127
+ offs = font.get_table(:loca).glyph_offsets[ARGV[2].to_i]
128
+ glyph = font.get_table(:glyf).get_glyph_at_offset(offs)
129
+ elsif ARGV[1] == "-c"
130
+ char_code = ARGV[2].unpack("U")[0]
131
+ glyph = enc_tbl.get_glyph_for_unicode(char_code)
132
+ else
133
+ exit!
134
+ end
135
+
136
+ puts_svg_header
137
+
138
+ if glyph.simple?
139
+ puts_simple_glyph(glyph)
140
+ else
141
+ puts_composite_glyph(font, glyph)
142
+ end
143
+
144
+ puts_svg_footer
@@ -0,0 +1,273 @@
1
+ # ttfsubset
2
+ # Copyright (C) 2006 Mathieu Blondel
3
+ #
4
+ # This program is free software; you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation; either version 2 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program; if not, write to the Free Software
16
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
+
18
+ $KCODE = "u"
19
+
20
+ $LOAD_PATH.unshift("../lib/")
21
+
22
+ require 'ttf'
23
+
24
+ =begin
25
+
26
+ We are going to reduce the number of glyphs.
27
+
28
+ Required tables concerned are:
29
+ - cmap
30
+ - glyf
31
+ - hmtx
32
+ - loca
33
+ - maxp
34
+ - post
35
+
36
+ Optional tables concerned are:
37
+ - vmtx
38
+
39
+ Non-supported tables should be removed because they may become incorrect
40
+ if number of @glyphs changed.
41
+
42
+ =end
43
+
44
+ class UnsupportedFont < Exception
45
+ end
46
+
47
+ class Subsetter
48
+
49
+ def add_glyph(glyph, glyph_id, char_code)
50
+ unless @old_to_new_glyph_id.include? glyph_id
51
+ @glyphs << glyph
52
+ new_glyph_id = @glyphs.length - 1
53
+ @glyph_ids << new_glyph_id
54
+
55
+ @old_to_new_glyph_id[glyph_id] = new_glyph_id
56
+ @charmaps[char_code] = new_glyph_id
57
+ #$stderr.puts "Old Glyph #{glyph_id} => New Glyph #{new_glyph_id}"
58
+ #$stderr.puts "Char Code #{char_code} " + \
59
+ # "(#{[char_code].pack("U")}) " + \
60
+ # "=> New Glyph #{new_glyph_id}\n\n"
61
+ @hmetrics << @hmtx_tbl.hmetrics[glyph_id]
62
+ @postscript_names << @post_tbl.names[glyph_id] \
63
+ if @post_tbl.names.include? glyph_id
64
+ end
65
+ end
66
+
67
+ def add_composite_glyph(glyph, glyph_id, char_code)
68
+ glyph_offsets = @font.get_table(:loca).glyph_offsets
69
+ glyph.components.each do |gc|
70
+ offs = glyph_offsets[gc.index]
71
+ gc_glyph = @font.get_table(:glyf).get_glyph_at_offset(offs)
72
+ gc_cc = @enc_tbl.get_unicode_for_glyph_id(gc.index)
73
+
74
+ if gc_glyph.composite?
75
+ add_composite_glyph(gc_glyph, gc.index, gc_cc)
76
+ else
77
+ add_glyph(gc_glyph, gc.index, gc_cc)
78
+ end
79
+ gc.index = @old_to_new_glyph_id[gc.index]
80
+ end
81
+ add_glyph(glyph, glyph_id, char_code)
82
+ end
83
+
84
+ def initialize(filename, input_chars)
85
+
86
+ @font = Font::TTF::File.new(filename)
87
+ @subset = Font::TTF::File.new
88
+
89
+ @enc_tbl = @font.get_table(:cmap).encoding_tables.find do |t|
90
+ t.class == Font::TTF::Table::Cmap::EncodingTable4
91
+ end
92
+
93
+ raise UnsupportedFont, "Needs an encoding table 4 (unicode)" \
94
+ if @enc_tbl.nil? or not @enc_tbl.unicode?
95
+
96
+ @charmaps = {}
97
+ @glyphs = []
98
+ @glyph_ids = []
99
+ @hmetrics = []
100
+ @postscript_names = []
101
+
102
+ @hmtx_tbl = @font.get_table(:hmtx)
103
+ @post_tbl = @font.get_table(:post)
104
+
105
+ # Glyph 0 (unsupported chars match to this glyph)
106
+
107
+ @glyph_ids << 0
108
+ @glyphs << @font.get_table(:glyf).get_glyph_at_offset(0)
109
+ @hmetrics << @hmtx_tbl.hmetrics[0]
110
+ @postscript_names << @post_tbl.names[0] if @post_tbl.names.include? 0
111
+ @charmaps[0] = 0
112
+
113
+ ascii_range = (0..255).to_a
114
+
115
+ @old_to_new_glyph_id = {}
116
+
117
+ @input_chars = input_chars
118
+
119
+ @input_chars.each do |char_code|
120
+ glyph_id = @enc_tbl.get_glyph_id_for_unicode(char_code)
121
+
122
+ if glyph_id != 0
123
+ # glyph_id == 0 means character is not supported by @font
124
+ glyph = @enc_tbl.get_glyph_for_unicode(char_code)
125
+
126
+ if glyph.simple?
127
+ add_glyph(glyph, glyph_id, char_code)
128
+ else
129
+ add_composite_glyph(glyph, glyph_id, char_code)
130
+ end
131
+ end
132
+ end
133
+
134
+ # Cmap
135
+ subset_cmap_tbl = @subset.get_new_table(:cmap)
136
+ subset_enc_tbl = subset_cmap_tbl.get_new_encoding_table4
137
+ subset_enc_tbl.platform_id = \
138
+ Font::TTF::Encodings::Platform::UNICODE
139
+ subset_enc_tbl.encoding_id = \
140
+ Font::TTF::Encodings::UnicodeEncoding::UNICODE
141
+
142
+ subset_enc_tbl.charmaps = @charmaps
143
+ subset_cmap_tbl.encoding_tables << subset_enc_tbl
144
+
145
+ #subset_enc_tbl.charmaps.each do |char_code, glyph_id|
146
+ #$stderr.puts "Char #{char_code} => Glyph #{glyph_id}"
147
+ #end
148
+
149
+ glyph_id_array = [0] * 255
150
+ @charmaps.each do |char_code, glyph_id|
151
+ if char_code <= 255
152
+ glyph_id_array[char_code] = glyph_id
153
+ end
154
+ end
155
+
156
+ subset_enc_tbl0 = subset_cmap_tbl.get_new_encoding_table0
157
+ subset_enc_tbl0.glyph_id_array = glyph_id_array
158
+ subset_cmap_tbl.encoding_tables << subset_enc_tbl0
159
+
160
+ subset_enc_tbl = subset_cmap_tbl.get_new_encoding_table4
161
+ subset_enc_tbl.platform_id = \
162
+ Font::TTF::Encodings::Platform::MICROSOFT
163
+ subset_enc_tbl.encoding_id = \
164
+ Font::TTF::Encodings::MicrosoftEncoding::UNICODE
165
+ subset_enc_tbl.charmaps = @charmaps
166
+ subset_cmap_tbl.encoding_tables << subset_enc_tbl
167
+
168
+ @subset.set_table(subset_cmap_tbl)
169
+
170
+ # Glyf needs Maxp and Post that's why we put them before
171
+
172
+ # Maxp
173
+ @subset.set_table(@font.get_table(:maxp))
174
+
175
+ # Post
176
+ subset_post_tbl = @font.get_table(:post)
177
+ subset_post_tbl.names = @postscript_names
178
+ @subset.set_table(subset_post_tbl)
179
+
180
+ # Glyf
181
+ subset_glyf_tbl = @subset.get_new_table(:glyf)
182
+ subset_glyf_tbl.glyphs = @glyphs
183
+ @subset.set_table(subset_glyf_tbl)
184
+
185
+ # Head
186
+ @subset.set_table(@font.get_table(:head))
187
+
188
+ # Hhea
189
+ @subset.set_table(@font.get_table(:hhea))
190
+
191
+ # Hmtx
192
+ subset_hmtx_tbl = @subset.get_new_table(:hmtx)
193
+ subset_hmtx_tbl.hmetrics = @hmetrics
194
+ @subset.set_table(subset_hmtx_tbl)
195
+
196
+ # Loca
197
+ @subset.set_table(@subset.get_new_table(:loca))
198
+
199
+ # Name
200
+ name_tbl = @font.get_table(:name)
201
+ name_tbl.name_records.find_all do |nr|
202
+ [Font::TTF::Table::Name::NameRecord::UNIQUE_FONT_IDENTIFIER,
203
+ Font::TTF::Table::Name::NameRecord::FONT_FAMILY_NAME,
204
+ Font::TTF::Table::Name::NameRecord::FULL_FONT_NAME,
205
+ Font::TTF::Table::Name::NameRecord::POSTSCRIPT_NAME].include? \
206
+ nr.name_id and (nr.unicode? or nr.roman?)
207
+ end.each do |nr|
208
+ nr.utf8_str += "_subset"
209
+ end
210
+ @subset.set_table(name_tbl)
211
+
212
+ # OS/2
213
+ os2_tbl = @font.get_table(:"OS/2")
214
+ os2_tbl.us_first_char_index = @input_chars.first
215
+ os2_tbl.us_last_char_index = @input_chars.last
216
+ @subset.set_table(os2_tbl)
217
+
218
+ # Kerning
219
+
220
+ if @font.table_list.include? :kern
221
+ kern_tbl = @font.get_table(:kern)
222
+ subtbl = kern_tbl.subtables.find { |stbl| stbl.format == 0 }
223
+
224
+ kerning_pairs = []
225
+
226
+ unless subtbl.nil?
227
+ subtbl.kerning_pairs.each do |kp|
228
+ if @old_to_new_glyph_id.include? kp.left and \
229
+ @old_to_new_glyph_id.include? kp.right
230
+ kp.left = @old_to_new_glyph_id[kp.left]
231
+ kp.right = @old_to_new_glyph_id[kp.right]
232
+ kerning_pairs << kp
233
+ end
234
+ end
235
+ end
236
+
237
+ unless kerning_pairs.empty?
238
+ subset_kern_tbl = @subset.get_new_table(:kern)
239
+ subset_kern_subtbl = subset_kern_tbl.get_new_kerning_subtable0
240
+ subset_kern_subtbl.kerning_pairs = kerning_pairs
241
+ subset_kern_tbl.subtables << subset_kern_subtbl
242
+ @subset.set_table(subset_kern_tbl)
243
+ end
244
+ end
245
+
246
+ # Optional tables which are important for font hinting (grid-fitting)
247
+ [:cvt, :fpgm, :gasp, :prep].each do |tbl|
248
+ @subset.set_table(@font.get_table(tbl)) if @font.table_list.include? tbl
249
+ end
250
+
251
+ end
252
+
253
+ def dump
254
+ @subset.dump
255
+ end
256
+
257
+ end
258
+
259
+ require 'pathname'
260
+
261
+ input_chars = $stdin.readlines.join.unpack("U*").uniq.sort
262
+ ARGV.each_with_index do |filename, i|
263
+ begin
264
+ subset_path = "subset_" + Pathname.new(filename).basename
265
+ puts "Creating " + subset_path + "..."
266
+ File.new(subset_path,
267
+ File::CREAT|File::RDWR).write(Subsetter.new(filename,
268
+ input_chars).dump)
269
+ rescue UnsupportedFont, Font::TTF::MalformedFont,
270
+ Font::TTF::TableMissing => e
271
+ puts e
272
+ end
273
+ end
metadata ADDED
@@ -0,0 +1,120 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: glyph_imager
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 3
9
+ version: 0.0.3
10
+ platform: ruby
11
+ authors:
12
+ - William Melody
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-04-27 00:00:00 -05:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: thoughtbot-shoulda
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :development
31
+ version_requirements: *id001
32
+ description: Generate images of glyphs for a specified character in a specified font
33
+ email: hi@williammelody.com
34
+ executables: []
35
+
36
+ extensions: []
37
+
38
+ extra_rdoc_files:
39
+ - LICENSE
40
+ - README.rdoc
41
+ files:
42
+ - .document
43
+ - .gitignore
44
+ - LICENSE
45
+ - README.rdoc
46
+ - Rakefile
47
+ - VERSION
48
+ - glyph_imager.gemspec
49
+ - lib/glyph_imager.rb
50
+ - test/fonts/DejaVuSerif.ttf
51
+ - test/helper.rb
52
+ - test/test_glyph_imager.rb
53
+ - vendor/graphics_utf
54
+ - vendor/ttf-ruby-0.1/AUTHORS
55
+ - vendor/ttf-ruby-0.1/COPYING
56
+ - vendor/ttf-ruby-0.1/README
57
+ - vendor/ttf-ruby-0.1/TODO
58
+ - vendor/ttf-ruby-0.1/VERSION
59
+ - vendor/ttf-ruby-0.1/lib/ttf.rb
60
+ - vendor/ttf-ruby-0.1/lib/ttf/datatypes.rb
61
+ - vendor/ttf-ruby-0.1/lib/ttf/encodings.rb
62
+ - vendor/ttf-ruby-0.1/lib/ttf/exceptions.rb
63
+ - vendor/ttf-ruby-0.1/lib/ttf/font_loader.rb
64
+ - vendor/ttf-ruby-0.1/lib/ttf/fontchunk.rb
65
+ - vendor/ttf-ruby-0.1/lib/ttf/table/cmap.rb
66
+ - vendor/ttf-ruby-0.1/lib/ttf/table/cvt.rb
67
+ - vendor/ttf-ruby-0.1/lib/ttf/table/fpgm.rb
68
+ - vendor/ttf-ruby-0.1/lib/ttf/table/gasp.rb
69
+ - vendor/ttf-ruby-0.1/lib/ttf/table/glyf.rb
70
+ - vendor/ttf-ruby-0.1/lib/ttf/table/head.rb
71
+ - vendor/ttf-ruby-0.1/lib/ttf/table/hhea.rb
72
+ - vendor/ttf-ruby-0.1/lib/ttf/table/hmtx.rb
73
+ - vendor/ttf-ruby-0.1/lib/ttf/table/kern.rb
74
+ - vendor/ttf-ruby-0.1/lib/ttf/table/loca.rb
75
+ - vendor/ttf-ruby-0.1/lib/ttf/table/maxp.rb
76
+ - vendor/ttf-ruby-0.1/lib/ttf/table/name.rb
77
+ - vendor/ttf-ruby-0.1/lib/ttf/table/os2.rb
78
+ - vendor/ttf-ruby-0.1/lib/ttf/table/post.rb
79
+ - vendor/ttf-ruby-0.1/lib/ttf/table/prep.rb
80
+ - vendor/ttf-ruby-0.1/lib/ttf/table/vhea.rb
81
+ - vendor/ttf-ruby-0.1/lib/ttf/table/vmtx.rb
82
+ - vendor/ttf-ruby-0.1/setup.rb
83
+ - vendor/ttf-ruby-0.1/tools/README
84
+ - vendor/ttf-ruby-0.1/tools/ttfcairoglyphviewer
85
+ - vendor/ttf-ruby-0.1/tools/ttfdump
86
+ - vendor/ttf-ruby-0.1/tools/ttfglyph2svg
87
+ - vendor/ttf-ruby-0.1/tools/ttfsubset
88
+ has_rdoc: true
89
+ homepage: http://github.com/alphabetum/glyph_imager
90
+ licenses: []
91
+
92
+ post_install_message:
93
+ rdoc_options:
94
+ - --charset=UTF-8
95
+ require_paths:
96
+ - lib
97
+ required_ruby_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ segments:
102
+ - 0
103
+ version: "0"
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ segments:
109
+ - 0
110
+ version: "0"
111
+ requirements: []
112
+
113
+ rubyforge_project:
114
+ rubygems_version: 1.3.6
115
+ signing_key:
116
+ specification_version: 3
117
+ summary: Generate images of glyphs for a specified character in a specified font
118
+ test_files:
119
+ - test/helper.rb
120
+ - test/test_glyph_imager.rb