dragonfly_fonts 0.0.3

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.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +23 -0
  3. data/Dockerfile +15 -0
  4. data/Gemfile +4 -0
  5. data/Guardfile +8 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +196 -0
  8. data/Rakefile +9 -0
  9. data/circle.yml +23 -0
  10. data/docker-compose.yml +15 -0
  11. data/dragonfly_fonts.gemspec +28 -0
  12. data/lib/dragonfly_fonts.rb +8 -0
  13. data/lib/dragonfly_fonts/analysers/bbox.rb +35 -0
  14. data/lib/dragonfly_fonts/analysers/font_info.rb +15 -0
  15. data/lib/dragonfly_fonts/analysers/glyphs.rb +14 -0
  16. data/lib/dragonfly_fonts/analysers/gsub_tables.rb +14 -0
  17. data/lib/dragonfly_fonts/plugin.rb +43 -0
  18. data/lib/dragonfly_fonts/processors/correct_metrics.rb +21 -0
  19. data/lib/dragonfly_fonts/processors/encode.rb +57 -0
  20. data/lib/dragonfly_fonts/processors/extract_glyph.rb +19 -0
  21. data/lib/dragonfly_fonts/processors/normalize_names.rb +17 -0
  22. data/lib/dragonfly_fonts/processors/set_dimensions.rb +24 -0
  23. data/lib/dragonfly_fonts/processors/set_ttf_names.rb +52 -0
  24. data/lib/dragonfly_fonts/processors/set_underline.rb +26 -0
  25. data/lib/dragonfly_fonts/processors/set_width.rb +25 -0
  26. data/lib/dragonfly_fonts/processors/set_woff_metadata.rb +23 -0
  27. data/lib/dragonfly_fonts/processors/ttf_autohint.rb +21 -0
  28. data/lib/dragonfly_fonts/processors/web_friendly.rb +17 -0
  29. data/lib/dragonfly_fonts/unicode_ranges.rb +89 -0
  30. data/lib/dragonfly_fonts/version.rb +3 -0
  31. data/samples/Arial.ttf +0 -0
  32. data/samples/Inconsolata.otf +0 -0
  33. data/script/dimensions.py +28 -0
  34. data/script/font_info.py +49 -0
  35. data/script/glyphs.py +25 -0
  36. data/script/gsub_tables.py +43 -0
  37. data/script/normalize_names.sh +13 -0
  38. data/script/underline.py +20 -0
  39. data/script/webfonts.pe +49 -0
  40. data/script/woff_meta.py +81 -0
  41. data/test/dragonfly_fonts/analysers/bbox_test.rb +48 -0
  42. data/test/dragonfly_fonts/analysers/font_info_test.rb +65 -0
  43. data/test/dragonfly_fonts/analysers/glyphs_test.rb +27 -0
  44. data/test/dragonfly_fonts/analysers/gsub_tables_test.rb +42 -0
  45. data/test/dragonfly_fonts/plugin_test.rb +76 -0
  46. data/test/dragonfly_fonts/processors/correct_metrics_test.rb +22 -0
  47. data/test/dragonfly_fonts/processors/encode_test.rb +36 -0
  48. data/test/dragonfly_fonts/processors/extract_glyph_test.rb +22 -0
  49. data/test/dragonfly_fonts/processors/normalize_names_test.rb +18 -0
  50. data/test/dragonfly_fonts/processors/set_dimensions_test.rb +26 -0
  51. data/test/dragonfly_fonts/processors/set_ttf_names_test.rb +23 -0
  52. data/test/dragonfly_fonts/processors/set_underline_test.rb +22 -0
  53. data/test/dragonfly_fonts/processors/set_width_test.rb +48 -0
  54. data/test/dragonfly_fonts/processors/set_woff_metadata_test.rb +28 -0
  55. data/test/dragonfly_fonts/processors/ttf_autohint_test.rb +18 -0
  56. data/test/dragonfly_fonts/processors/web_friendly_test.rb +18 -0
  57. data/test/test_helper.rb +21 -0
  58. metadata +215 -0
@@ -0,0 +1,42 @@
1
+ require 'test_helper'
2
+
3
+ module DragonflyFonts
4
+ module Analysers
5
+ describe GsubTables do
6
+ let(:app) { test_app.configure_with(:fonts) }
7
+ let(:analyser) { DragonflyFonts::Analysers::GsubTables.new }
8
+ let(:font) { app.fetch_file(SAMPLES_DIR.join('Inconsolata.otf')) }
9
+
10
+ describe 'call' do
11
+ it 'returns Array' do
12
+ analyser.call(font).must_be_kind_of Array
13
+ end
14
+
15
+ # it 'includes info, subtables, name' do
16
+ # analyser.call(font).map(&:keys).uniq.flatten.must_equal %w(info subtables name)
17
+ # end
18
+
19
+ # describe 'info' do
20
+ # it 'is an Array' do
21
+ # analyser.call(font).shuffle.first['info'].must_be_kind_of Array
22
+ # end
23
+ # end
24
+
25
+ # describe 'subtables' do
26
+ # it 'is an Array' do
27
+ # analyser.call(font).shuffle.first['subtables'].must_be_kind_of Array
28
+ # end
29
+ # it 'has glyphs and name keys' do
30
+ # analyser.call(font).shuffle.first['subtables'].shuffle.first.keys.must_equal %w(glyphs name)
31
+ # end
32
+ # end
33
+
34
+ # describe 'name' do
35
+ # it 'is a String' do
36
+ # analyser.call(font).shuffle.first['name'].must_be_kind_of String
37
+ # end
38
+ # end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,76 @@
1
+ require 'test_helper'
2
+
3
+ module DragonflyFonts
4
+ describe Plugin do
5
+ let(:app) { test_app.configure_with(:fonts) }
6
+ let(:font) { app.fetch_file(SAMPLES_DIR.join('Inconsolata.otf')) }
7
+
8
+ # ---------------------------------------------------------------------
9
+
10
+ describe 'analysers' do
11
+ it 'adds #bbox' do
12
+ font.must_respond_to :bbox
13
+ end
14
+
15
+ it 'adds #font_info' do
16
+ font.must_respond_to :font_info
17
+ end
18
+
19
+ it 'adds #glyphs' do
20
+ font.must_respond_to :glyphs
21
+ end
22
+
23
+ it 'adds #gsub_tables' do
24
+ font.must_respond_to :gsub_tables
25
+ end
26
+ end
27
+
28
+ # ---------------------------------------------------------------------
29
+
30
+ describe 'processors' do
31
+ it 'adds #correct_metrics' do
32
+ font.must_respond_to :correct_metrics
33
+ end
34
+
35
+ it 'adds #encode' do
36
+ font.must_respond_to :encode
37
+ end
38
+
39
+ it 'adds #extract_glyph' do
40
+ font.must_respond_to :extract_glyph
41
+ end
42
+
43
+ it 'adds #normalize_names' do
44
+ font.must_respond_to :normalize_names
45
+ end
46
+
47
+ it 'adds #set_dimensions' do
48
+ font.must_respond_to :set_dimensions
49
+ end
50
+
51
+ it 'adds #set_ttf_names' do
52
+ font.must_respond_to :set_ttf_names
53
+ end
54
+
55
+ it 'adds #set_underline' do
56
+ font.must_respond_to :set_underline
57
+ end
58
+
59
+ it 'adds #set_width' do
60
+ font.must_respond_to :set_width
61
+ end
62
+
63
+ it 'adds #set_woff_metadata' do
64
+ font.must_respond_to :set_woff_metadata
65
+ end
66
+
67
+ it 'adds #ttf_autohint' do
68
+ font.must_respond_to :ttf_autohint
69
+ end
70
+
71
+ it 'adds #web_friendly' do
72
+ font.must_respond_to :web_friendly
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,22 @@
1
+ require 'test_helper'
2
+
3
+ module DragonflyFonts
4
+ module Processors
5
+ describe CorrectMetrics do
6
+ let(:app) { test_app.configure_with(:fonts) }
7
+ let(:asset) { app.fetch_file SAMPLES_DIR.join('Inconsolata.otf') }
8
+
9
+ # =====================================================================
10
+
11
+ it 'adjusts ascent value' do
12
+ skip 'need to find font that is changed by this'
13
+ asset.correct_metrics.font_info.must_equal '…'
14
+ end
15
+
16
+ it 'adjusts descent value' do
17
+ skip 'need to find font that is changed by this'
18
+ asset.correct_metrics.font_info.must_equal '…'
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,36 @@
1
+ require 'test_helper'
2
+
3
+ module DragonflyFonts
4
+ module Processors
5
+ describe Encode do
6
+ let(:app) { test_app.configure_with(:fonts) }
7
+ let(:asset) { app.fetch_file SAMPLES_DIR.join('Inconsolata.otf') }
8
+
9
+ # =====================================================================
10
+
11
+ it 'allows to convert to :eot' do
12
+ asset.encode(:eot).mime_type.must_equal 'application/vnd.ms-fontobject'
13
+ end
14
+
15
+ it 'allows to convert to :otf' do
16
+ asset.encode(:otf).mime_type.must_equal 'application/vnd.oasis.opendocument.formula-template'
17
+ end
18
+
19
+ it 'allows to convert to :ttf' do
20
+ asset.encode(:ttf).mime_type.must_equal 'application/octet-stream'
21
+ end
22
+
23
+ it 'allows to convert to :svg' do
24
+ asset.encode(:svg).mime_type.must_equal 'image/svg+xml'
25
+ end
26
+
27
+ it 'allows to convert to :woff' do
28
+ asset.encode(:woff).mime_type.must_equal 'application/font-woff'
29
+ end
30
+
31
+ it 'allows to convert to :woff2' do
32
+ asset.encode(:woff2).data.must_match /\AwOF2OTTO/
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,22 @@
1
+ require 'test_helper'
2
+
3
+ module DragonflyFonts
4
+ module Processors
5
+ describe ExtractGlyph do
6
+ let(:app) { test_app.configure_with(:fonts) }
7
+ let(:asset) { app.fetch_file SAMPLES_DIR.join('Inconsolata.otf') }
8
+
9
+ let(:glyph) { 'A' }
10
+
11
+ # =====================================================================
12
+
13
+ it 'extracts specified glyph in SVG by default' do
14
+ asset.extract_glyph(glyph).data.must_include '</svg>'
15
+ end
16
+
17
+ it 'allows to specify format' do
18
+ asset.extract_glyph(glyph, format: :svg).data.must_include '</svg>'
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ module DragonflyFonts
4
+ module Processors
5
+ describe NormalizeNames do
6
+ let(:app) { test_app.configure_with(:fonts) }
7
+ let(:asset) { app.fetch_file SAMPLES_DIR.join('Arial.ttf') }
8
+
9
+ # =====================================================================
10
+
11
+ # TODO: how to test this?
12
+
13
+ it 'works' do
14
+ asset.normalize_names.mime_type.must_equal 'application/octet-stream'
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ module DragonflyFonts
4
+ module Processors
5
+ describe SetDimensions do
6
+ let(:app) { test_app.configure_with(:fonts) }
7
+ let(:asset) { app.fetch_file SAMPLES_DIR.join('Inconsolata.otf') }
8
+
9
+ let(:ascent) { 200 }
10
+ let(:descent) { -200 }
11
+
12
+ let(:original_ascent) { asset.font_info['ascent'] }
13
+ let(:original_descent) { asset.font_info['descent'] }
14
+
15
+ # =====================================================================
16
+
17
+ describe 'upos' do
18
+ it 'sets the width to the value' do
19
+ skip 'somehow the :font_info does not seem to report correct values'
20
+ asset.set_dimensions(ascent: ascent).font_info['ascent'].must_equal (original_ascent + ascent)
21
+ asset.set_dimensions(descent: descent).font_info['descent'].must_equal (original_descent + descent)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,23 @@
1
+ require 'test_helper'
2
+
3
+ module DragonflyFonts
4
+ module Processors
5
+ describe SetTtfNames do
6
+ let(:app) { test_app.configure_with(:fonts) }
7
+ let(:asset) { app.fetch_file SAMPLES_DIR.join('Inconsolata.otf') }
8
+
9
+ let(:designer) { 'John Doe' }
10
+ let(:license_url) { 'http://www.google.com' }
11
+
12
+ # =====================================================================
13
+
14
+ it 'sets designer' do
15
+ asset.set_ttf_names(designer: designer).font_info['designer'].must_equal designer
16
+ end
17
+
18
+ it 'sets license_url' do
19
+ asset.set_ttf_names(license_url: license_url).font_info['license_url'].must_equal license_url
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,22 @@
1
+ require 'test_helper'
2
+
3
+ module DragonflyFonts
4
+ module Processors
5
+ describe SetUnderline do
6
+ let(:app) { test_app.configure_with(:fonts) }
7
+ let(:asset) { app.fetch_file SAMPLES_DIR.join('Inconsolata.otf') }
8
+
9
+ let(:upos) { 1.0 }
10
+ let(:uwidth) { 2.0 }
11
+
12
+ # =====================================================================
13
+
14
+ describe 'upos' do
15
+ it 'sets the width to the value' do
16
+ asset.set_underline(upos: upos).font_info['upos'].must_equal upos
17
+ asset.set_underline(uwidth: uwidth).font_info['uwidth'].must_equal uwidth
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,48 @@
1
+ require 'test_helper'
2
+
3
+ module DragonflyFonts
4
+ module Processors
5
+ describe SetWidth do
6
+ let(:app) { test_app.configure_with(:fonts) }
7
+ let(:asset) { app.fetch_file SAMPLES_DIR.join('Inconsolata.otf') }
8
+
9
+ let(:analyser) { DragonflyFonts::Analysers::Bbox.new }
10
+
11
+ let(:glyph) { 'A' }
12
+ let(:default_bbox) { analyser.call(asset, glyph) }
13
+
14
+ let(:width) { 200 }
15
+
16
+ let(:bbox) { analyser.call(asset.set_width(width, relative), glyph) }
17
+
18
+ # =====================================================================
19
+
20
+ describe 'relative=0' do
21
+ let(:relative) { 0 }
22
+
23
+ it 'sets the width to the value' do
24
+ skip 'bbox does not reflect the changes'
25
+ bbox.width.must_equal width.to_f
26
+ end
27
+ end
28
+
29
+ describe 'relative=1' do
30
+ let(:relative) { 1 }
31
+
32
+ it 'increments the width by the value' do
33
+ skip 'bbox does not reflect the changes'
34
+ bbox.width.must_equal default_bbox.width + width.to_f
35
+ end
36
+ end
37
+
38
+ describe 'relative=2' do
39
+ let(:relative) { 2 }
40
+
41
+ it 'scales width by the value/100' do
42
+ skip 'bbox does not reflect the changes'
43
+ bbox.width.must_equal default_bbox.width * width / 100.0
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,28 @@
1
+ require 'test_helper'
2
+ require 'nokogiri'
3
+
4
+ module DragonflyFonts
5
+ module Processors
6
+ describe SetWoffMetadata do
7
+ let(:app) { test_app.configure_with(:fonts) }
8
+ let(:asset) { app.fetch_file SAMPLES_DIR.join('Inconsolata.otf') }
9
+
10
+ let(:uniqueid) { 'UNIQUEID' }
11
+ let(:licensee_name) { 'John Doe' }
12
+
13
+ # =====================================================================
14
+
15
+ describe 'values' do
16
+ let(:woff_meta) { Nokogiri::XML(asset.set_woff_metadata(uniqueid, licensee_name).font_info['woff_metadata']) }
17
+
18
+ it 'sets uniqueid' do
19
+ woff_meta.xpath('//uniqueid').first.attribute('id').value.must_match(/\A#{uniqueid}/)
20
+ end
21
+
22
+ it 'sets licensee' do
23
+ woff_meta.xpath('//licensee').first.attribute('name').value.must_equal licensee_name
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ module DragonflyFonts
4
+ module Processors
5
+ describe TtfAutohint do
6
+ let(:app) { test_app.configure_with(:fonts) }
7
+ let(:asset) { app.fetch_file SAMPLES_DIR.join('Arial.ttf') }
8
+
9
+ # =====================================================================
10
+
11
+ # TODO: how to test this better?
12
+
13
+ it 'works' do
14
+ asset.ttf_autohint.mime_type.must_equal 'application/octet-stream'
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ module DragonflyFonts
4
+ module Processors
5
+ describe WebFriendly do
6
+ let(:app) { test_app.configure_with(:fonts) }
7
+ let(:asset) { app.fetch_file SAMPLES_DIR.join('Arial.ttf') }
8
+
9
+ # =====================================================================
10
+
11
+ # TODO: how to test this?
12
+
13
+ it 'works' do
14
+ asset.web_friendly.mime_type.must_equal 'application/octet-stream'
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ require 'bundler/setup'
2
+
3
+ require 'minitest'
4
+ require 'minitest/autorun'
5
+ require 'minitest/spec'
6
+
7
+ require 'dragonfly'
8
+ require 'dragonfly_fonts'
9
+
10
+ # ---------------------------------------------------------------------
11
+
12
+ SAMPLES_DIR = Pathname.new(File.expand_path('../../samples', __FILE__))
13
+
14
+ # ---------------------------------------------------------------------
15
+
16
+ def test_app(name = nil)
17
+ app = Dragonfly::App.instance(name)
18
+ app.datastore = Dragonfly::MemoryDataStore.new
19
+ app.secret = 'test secret'
20
+ app
21
+ end
metadata ADDED
@@ -0,0 +1,215 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dragonfly_fonts
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Tomas Celizna
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-06-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dragonfly
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.6'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: nokogiri
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard-minitest
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: minitest
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description:
112
+ email:
113
+ - tomas.celizna@gmail.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - ".gitignore"
119
+ - Dockerfile
120
+ - Gemfile
121
+ - Guardfile
122
+ - LICENSE.txt
123
+ - README.md
124
+ - Rakefile
125
+ - circle.yml
126
+ - docker-compose.yml
127
+ - dragonfly_fonts.gemspec
128
+ - lib/dragonfly_fonts.rb
129
+ - lib/dragonfly_fonts/analysers/bbox.rb
130
+ - lib/dragonfly_fonts/analysers/font_info.rb
131
+ - lib/dragonfly_fonts/analysers/glyphs.rb
132
+ - lib/dragonfly_fonts/analysers/gsub_tables.rb
133
+ - lib/dragonfly_fonts/plugin.rb
134
+ - lib/dragonfly_fonts/processors/correct_metrics.rb
135
+ - lib/dragonfly_fonts/processors/encode.rb
136
+ - lib/dragonfly_fonts/processors/extract_glyph.rb
137
+ - lib/dragonfly_fonts/processors/normalize_names.rb
138
+ - lib/dragonfly_fonts/processors/set_dimensions.rb
139
+ - lib/dragonfly_fonts/processors/set_ttf_names.rb
140
+ - lib/dragonfly_fonts/processors/set_underline.rb
141
+ - lib/dragonfly_fonts/processors/set_width.rb
142
+ - lib/dragonfly_fonts/processors/set_woff_metadata.rb
143
+ - lib/dragonfly_fonts/processors/ttf_autohint.rb
144
+ - lib/dragonfly_fonts/processors/web_friendly.rb
145
+ - lib/dragonfly_fonts/unicode_ranges.rb
146
+ - lib/dragonfly_fonts/version.rb
147
+ - samples/Arial.ttf
148
+ - samples/Inconsolata.otf
149
+ - script/dimensions.py
150
+ - script/font_info.py
151
+ - script/glyphs.py
152
+ - script/gsub_tables.py
153
+ - script/normalize_names.sh
154
+ - script/underline.py
155
+ - script/webfonts.pe
156
+ - script/woff_meta.py
157
+ - test/dragonfly_fonts/analysers/bbox_test.rb
158
+ - test/dragonfly_fonts/analysers/font_info_test.rb
159
+ - test/dragonfly_fonts/analysers/glyphs_test.rb
160
+ - test/dragonfly_fonts/analysers/gsub_tables_test.rb
161
+ - test/dragonfly_fonts/plugin_test.rb
162
+ - test/dragonfly_fonts/processors/correct_metrics_test.rb
163
+ - test/dragonfly_fonts/processors/encode_test.rb
164
+ - test/dragonfly_fonts/processors/extract_glyph_test.rb
165
+ - test/dragonfly_fonts/processors/normalize_names_test.rb
166
+ - test/dragonfly_fonts/processors/set_dimensions_test.rb
167
+ - test/dragonfly_fonts/processors/set_ttf_names_test.rb
168
+ - test/dragonfly_fonts/processors/set_underline_test.rb
169
+ - test/dragonfly_fonts/processors/set_width_test.rb
170
+ - test/dragonfly_fonts/processors/set_woff_metadata_test.rb
171
+ - test/dragonfly_fonts/processors/ttf_autohint_test.rb
172
+ - test/dragonfly_fonts/processors/web_friendly_test.rb
173
+ - test/test_helper.rb
174
+ homepage: https://github.com/tomasc/dragonfly_fonts
175
+ licenses:
176
+ - MIT
177
+ metadata: {}
178
+ post_install_message:
179
+ rdoc_options: []
180
+ require_paths:
181
+ - lib
182
+ required_ruby_version: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ required_rubygems_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ requirements: []
193
+ rubyforge_project:
194
+ rubygems_version: 2.4.8
195
+ signing_key:
196
+ specification_version: 4
197
+ summary: Wraps common font-related tasks into Dragonfly analysers and processors.
198
+ test_files:
199
+ - test/dragonfly_fonts/analysers/bbox_test.rb
200
+ - test/dragonfly_fonts/analysers/font_info_test.rb
201
+ - test/dragonfly_fonts/analysers/glyphs_test.rb
202
+ - test/dragonfly_fonts/analysers/gsub_tables_test.rb
203
+ - test/dragonfly_fonts/plugin_test.rb
204
+ - test/dragonfly_fonts/processors/correct_metrics_test.rb
205
+ - test/dragonfly_fonts/processors/encode_test.rb
206
+ - test/dragonfly_fonts/processors/extract_glyph_test.rb
207
+ - test/dragonfly_fonts/processors/normalize_names_test.rb
208
+ - test/dragonfly_fonts/processors/set_dimensions_test.rb
209
+ - test/dragonfly_fonts/processors/set_ttf_names_test.rb
210
+ - test/dragonfly_fonts/processors/set_underline_test.rb
211
+ - test/dragonfly_fonts/processors/set_width_test.rb
212
+ - test/dragonfly_fonts/processors/set_woff_metadata_test.rb
213
+ - test/dragonfly_fonts/processors/ttf_autohint_test.rb
214
+ - test/dragonfly_fonts/processors/web_friendly_test.rb
215
+ - test/test_helper.rb