dragonfly_fonts 0.0.3 → 0.0.4
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 +4 -4
- data/README.md +22 -1
- data/Rakefile +6 -5
- data/dragonfly_fonts.gemspec +18 -18
- data/lib/dragonfly_fonts/analysers/ot_sanitise.rb +17 -0
- data/lib/dragonfly_fonts/plugin.rb +4 -0
- data/lib/dragonfly_fonts/processors/ot_sanitise.rb +22 -0
- data/lib/dragonfly_fonts/version.rb +1 -1
- data/samples/AppleGothic.ttf +0 -0
- metadata +23 -54
- data/test/dragonfly_fonts/analysers/bbox_test.rb +0 -48
- data/test/dragonfly_fonts/analysers/font_info_test.rb +0 -65
- data/test/dragonfly_fonts/analysers/glyphs_test.rb +0 -27
- data/test/dragonfly_fonts/analysers/gsub_tables_test.rb +0 -42
- data/test/dragonfly_fonts/plugin_test.rb +0 -76
- data/test/dragonfly_fonts/processors/correct_metrics_test.rb +0 -22
- data/test/dragonfly_fonts/processors/encode_test.rb +0 -36
- data/test/dragonfly_fonts/processors/extract_glyph_test.rb +0 -22
- data/test/dragonfly_fonts/processors/normalize_names_test.rb +0 -18
- data/test/dragonfly_fonts/processors/set_dimensions_test.rb +0 -26
- data/test/dragonfly_fonts/processors/set_ttf_names_test.rb +0 -23
- data/test/dragonfly_fonts/processors/set_underline_test.rb +0 -22
- data/test/dragonfly_fonts/processors/set_width_test.rb +0 -48
- data/test/dragonfly_fonts/processors/set_woff_metadata_test.rb +0 -28
- data/test/dragonfly_fonts/processors/ttf_autohint_test.rb +0 -18
- data/test/dragonfly_fonts/processors/web_friendly_test.rb +0 -18
- data/test/test_helper.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6bdafca40ba1e9ece52bea6a2a215954a7bdba44
|
4
|
+
data.tar.gz: b81b143b37597fe750b47b4834a506395f1a9689
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e8f02ec97b1e571d9dd5ac9c8b1218764ba27416a2da4e0eec2f7ad760b5365689e99f09c8b99620f28166d1fa16b9851765b5b9311f45c19ec4b5f20a23adf
|
7
|
+
data.tar.gz: 65b599971680552ede3c429e8540e0ef6d3c8ac5eabc789520fe0143de9dcc1cda9f61a936e61707a390394b5640dd5d57070d2be0ccc1ca9333c569a4f33747
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Dragonfly Fonts
|
2
2
|
|
3
|
-
[](https://circleci.com/gh/tomasc/dragonfly_fonts)
|
3
|
+
[](https://circleci.com/gh/tomasc/dragonfly_fonts) [](http://badge.fury.io/rb/dragonfly_fonts) [](https://coveralls.io/r/tomasc/dragonfly_fonts)
|
4
4
|
|
5
5
|
Wraps common font-related tasks into [Dragonfly](http://markevans.github.io/dragonfly) analysers and processors.
|
6
6
|
|
@@ -32,6 +32,10 @@ Using debian/ubuntu packages:
|
|
32
32
|
|
33
33
|
$ sudo apt-get install fontforge python-fontforge
|
34
34
|
|
35
|
+
### ot-sanitise
|
36
|
+
|
37
|
+
See [ot-sanitise](https://github.com/khaledhosny/ots)
|
38
|
+
|
35
39
|
### ttf2eot
|
36
40
|
|
37
41
|
See [ttf2eot](http://code.google.com/p/ttf2eot).
|
@@ -88,6 +92,15 @@ Returns `Array` of gsub tables in the font.
|
|
88
92
|
font.gsub_tables
|
89
93
|
```
|
90
94
|
|
95
|
+
### OT Sanitise
|
96
|
+
|
97
|
+
Displays output of the `ot-sanitise` command.
|
98
|
+
|
99
|
+
```ruby
|
100
|
+
font.ot_sanitise
|
101
|
+
|
102
|
+
```
|
103
|
+
|
91
104
|
## Processors
|
92
105
|
|
93
106
|
### Correct Metrics
|
@@ -126,6 +139,14 @@ Fix for rejected EOT's in IE8.
|
|
126
139
|
font.normalize_names
|
127
140
|
```
|
128
141
|
|
142
|
+
### OTS
|
143
|
+
|
144
|
+
Sanitise OTF/TTF & WOFF/2 font files.
|
145
|
+
|
146
|
+
```ruby
|
147
|
+
font.ot_sanitise!
|
148
|
+
```
|
149
|
+
|
129
150
|
### Set Dimensions
|
130
151
|
|
131
152
|
Adjust ascent & descent by an increment of.
|
data/Rakefile
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
2
|
require 'rake/testtask'
|
3
|
-
|
4
|
-
Rake::TestTask.new do |t|
|
5
|
-
t.libs <<
|
6
|
-
t.
|
3
|
+
|
4
|
+
Rake::TestTask.new(:test) do |t|
|
5
|
+
t.libs << "test"
|
6
|
+
t.libs << "lib"
|
7
|
+
t.test_files = FileList['test/**/*_test.rb']
|
7
8
|
end
|
8
9
|
|
9
|
-
task :default => :test
|
10
|
+
task :default => :test
|
data/dragonfly_fonts.gemspec
CHANGED
@@ -4,25 +4,25 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'dragonfly_fonts/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'dragonfly_fonts'
|
8
8
|
spec.version = DragonflyFonts::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.summary =
|
12
|
-
spec.homepage =
|
13
|
-
spec.license =
|
9
|
+
spec.authors = ['Tomas Celizna']
|
10
|
+
spec.email = ['tomas.celizna@gmail.com']
|
11
|
+
spec.summary = 'Wraps common font-related tasks into Dragonfly analysers and processors.'
|
12
|
+
spec.homepage = 'https://github.com/tomasc/dragonfly_fonts'
|
13
|
+
spec.license = 'MIT'
|
14
14
|
|
15
|
-
spec.files = `git ls-files -z`.split("\x0")
|
16
|
-
spec.
|
17
|
-
spec.
|
18
|
-
spec.require_paths = [
|
19
|
-
|
20
|
-
spec.add_dependency "dragonfly", "~> 1.0"
|
15
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
16
|
+
spec.bindir = 'exe'
|
17
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
18
|
+
spec.require_paths = ['lib']
|
21
19
|
|
22
|
-
spec.
|
23
|
-
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
20
|
+
spec.add_dependency 'dragonfly', '~> 1.0'
|
21
|
+
|
22
|
+
spec.add_development_dependency 'bundler', '~> 1.12'
|
23
|
+
spec.add_development_dependency 'guard'
|
24
|
+
spec.add_development_dependency 'guard-minitest'
|
25
|
+
spec.add_development_dependency 'minitest', '~> 5.0'
|
26
|
+
spec.add_development_dependency 'nokogiri'
|
27
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
28
28
|
end
|
@@ -2,11 +2,13 @@ require 'dragonfly_fonts/analysers/bbox'
|
|
2
2
|
require 'dragonfly_fonts/analysers/font_info'
|
3
3
|
require 'dragonfly_fonts/analysers/glyphs'
|
4
4
|
require 'dragonfly_fonts/analysers/gsub_tables'
|
5
|
+
require 'dragonfly_fonts/analysers/ot_sanitise'
|
5
6
|
|
6
7
|
require 'dragonfly_fonts/processors/correct_metrics'
|
7
8
|
require 'dragonfly_fonts/processors/encode'
|
8
9
|
require 'dragonfly_fonts/processors/extract_glyph'
|
9
10
|
require 'dragonfly_fonts/processors/normalize_names'
|
11
|
+
require 'dragonfly_fonts/processors/ot_sanitise'
|
10
12
|
require 'dragonfly_fonts/processors/set_dimensions'
|
11
13
|
require 'dragonfly_fonts/processors/set_ttf_names'
|
12
14
|
require 'dragonfly_fonts/processors/set_underline'
|
@@ -22,6 +24,7 @@ module DragonflyFonts
|
|
22
24
|
app.add_analyser :font_info, Analysers::FontInfo.new
|
23
25
|
app.add_analyser :glyphs, Analysers::Glyphs.new
|
24
26
|
app.add_analyser :gsub_tables, Analysers::GsubTables.new
|
27
|
+
app.add_analyser :ot_sanitise, Analysers::OtSanitise.new
|
25
28
|
|
26
29
|
# ---------------------------------------------------------------------
|
27
30
|
|
@@ -29,6 +32,7 @@ module DragonflyFonts
|
|
29
32
|
app.add_processor :encode, Processors::Encode.new
|
30
33
|
app.add_processor :extract_glyph, Processors::ExtractGlyph.new
|
31
34
|
app.add_processor :normalize_names, Processors::NormalizeNames.new
|
35
|
+
app.add_processor :ot_sanitise!, Processors::OtSanitise.new
|
32
36
|
app.add_processor :set_dimensions, Processors::SetDimensions.new
|
33
37
|
app.add_processor :set_ttf_names, Processors::SetTtfNames.new
|
34
38
|
app.add_processor :set_underline, Processors::SetUnderline.new
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module DragonflyFonts
|
2
|
+
module Processors
|
3
|
+
# The OpenType Sanitiser (OTS) parses and serialises OpenType files (OTF, TTF) and WOFF and WOFF2 font files, validating them and sanitising them as it goes.
|
4
|
+
class OtSanitise
|
5
|
+
def call(content, _opts = {})
|
6
|
+
content.shell_update do |old_path, new_path|
|
7
|
+
"#{ot_sanitise_command} #{old_path} #{new_path}"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def update_url(attrs, *_args)
|
12
|
+
attrs.style = 'ot_sanitise'
|
13
|
+
end
|
14
|
+
|
15
|
+
private # =============================================================
|
16
|
+
|
17
|
+
def ot_sanitise_command
|
18
|
+
'ot-sanitise'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dragonfly_fonts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomas Celizna
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dragonfly
|
@@ -30,16 +30,16 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.12'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
40
|
+
version: '1.12'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: guard
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: guard-minitest
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -67,21 +67,21 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: minitest
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
75
|
+
version: '5.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
82
|
+
version: '5.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: nokogiri
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
@@ -95,19 +95,19 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
103
|
+
version: '10.0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
110
|
+
version: '10.0'
|
111
111
|
description:
|
112
112
|
email:
|
113
113
|
- tomas.celizna@gmail.com
|
@@ -130,11 +130,13 @@ files:
|
|
130
130
|
- lib/dragonfly_fonts/analysers/font_info.rb
|
131
131
|
- lib/dragonfly_fonts/analysers/glyphs.rb
|
132
132
|
- lib/dragonfly_fonts/analysers/gsub_tables.rb
|
133
|
+
- lib/dragonfly_fonts/analysers/ot_sanitise.rb
|
133
134
|
- lib/dragonfly_fonts/plugin.rb
|
134
135
|
- lib/dragonfly_fonts/processors/correct_metrics.rb
|
135
136
|
- lib/dragonfly_fonts/processors/encode.rb
|
136
137
|
- lib/dragonfly_fonts/processors/extract_glyph.rb
|
137
138
|
- lib/dragonfly_fonts/processors/normalize_names.rb
|
139
|
+
- lib/dragonfly_fonts/processors/ot_sanitise.rb
|
138
140
|
- lib/dragonfly_fonts/processors/set_dimensions.rb
|
139
141
|
- lib/dragonfly_fonts/processors/set_ttf_names.rb
|
140
142
|
- lib/dragonfly_fonts/processors/set_underline.rb
|
@@ -144,6 +146,7 @@ files:
|
|
144
146
|
- lib/dragonfly_fonts/processors/web_friendly.rb
|
145
147
|
- lib/dragonfly_fonts/unicode_ranges.rb
|
146
148
|
- lib/dragonfly_fonts/version.rb
|
149
|
+
- samples/AppleGothic.ttf
|
147
150
|
- samples/Arial.ttf
|
148
151
|
- samples/Inconsolata.otf
|
149
152
|
- script/dimensions.py
|
@@ -154,23 +157,6 @@ files:
|
|
154
157
|
- script/underline.py
|
155
158
|
- script/webfonts.pe
|
156
159
|
- 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
160
|
homepage: https://github.com/tomasc/dragonfly_fonts
|
175
161
|
licenses:
|
176
162
|
- MIT
|
@@ -191,25 +177,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
191
177
|
version: '0'
|
192
178
|
requirements: []
|
193
179
|
rubyforge_project:
|
194
|
-
rubygems_version: 2.4.
|
180
|
+
rubygems_version: 2.4.5.1
|
195
181
|
signing_key:
|
196
182
|
specification_version: 4
|
197
183
|
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
|
184
|
+
test_files: []
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module DragonflyFonts
|
4
|
-
module Analysers
|
5
|
-
describe Bbox 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
|
-
describe 'call' do
|
12
|
-
let(:bbox) { analyser.call(asset, 'A') }
|
13
|
-
|
14
|
-
it 'returns Hash' do
|
15
|
-
bbox.must_be_kind_of Struct
|
16
|
-
end
|
17
|
-
|
18
|
-
it '#glyph' do
|
19
|
-
bbox.glyph.must_equal 'A'
|
20
|
-
end
|
21
|
-
|
22
|
-
it '#min_x' do
|
23
|
-
bbox.min_x.must_equal 14.6709
|
24
|
-
end
|
25
|
-
|
26
|
-
it '#min_y' do
|
27
|
-
bbox.min_y.must_equal(-0.863281)
|
28
|
-
end
|
29
|
-
|
30
|
-
it '#max_x' do
|
31
|
-
bbox.max_x.must_equal 483.28
|
32
|
-
end
|
33
|
-
|
34
|
-
it '#max_y' do
|
35
|
-
bbox.max_y.must_equal 634.305
|
36
|
-
end
|
37
|
-
|
38
|
-
it '#width' do
|
39
|
-
bbox.width.must_equal 468.60909999999996
|
40
|
-
end
|
41
|
-
|
42
|
-
it '#height' do
|
43
|
-
bbox.height.must_equal 635.168281
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module DragonflyFonts
|
4
|
-
module Analysers
|
5
|
-
describe FontInfo do
|
6
|
-
let(:app) { test_app.configure_with(:fonts) }
|
7
|
-
let(:analyser) { DragonflyFonts::Analysers::FontInfo.new }
|
8
|
-
let(:font) { app.fetch_file(SAMPLES_DIR.join('Inconsolata.otf')) }
|
9
|
-
|
10
|
-
describe 'call' do
|
11
|
-
it 'returns Hash' do
|
12
|
-
analyser.call(font).must_be_kind_of Hash
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'includes keys' do
|
16
|
-
%w(
|
17
|
-
ascent
|
18
|
-
cap_height
|
19
|
-
comment
|
20
|
-
copyright
|
21
|
-
default_base_filename
|
22
|
-
descent
|
23
|
-
descriptor
|
24
|
-
designer
|
25
|
-
designer_url
|
26
|
-
em
|
27
|
-
embedding_restrictions
|
28
|
-
encoding
|
29
|
-
familyname
|
30
|
-
fontlog
|
31
|
-
fontname
|
32
|
-
fullname
|
33
|
-
license
|
34
|
-
license_url
|
35
|
-
path
|
36
|
-
sfnt_revision
|
37
|
-
trademark
|
38
|
-
upos
|
39
|
-
uwidth
|
40
|
-
vendor_url
|
41
|
-
version
|
42
|
-
weight
|
43
|
-
woff_metadata
|
44
|
-
woff_revision
|
45
|
-
x_height
|
46
|
-
).each do |key|
|
47
|
-
analyser.call(font).keys.must_include key
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'includes familyname' do
|
52
|
-
analyser.call(font)['familyname'].must_equal 'Inconsolata'
|
53
|
-
end
|
54
|
-
|
55
|
-
it 'includes fullname' do
|
56
|
-
analyser.call(font)['fullname'].must_equal 'Inconsolata'
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'includes weight' do
|
60
|
-
analyser.call(font)['weight'].must_equal 'Medium'
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module DragonflyFonts
|
4
|
-
module Analysers
|
5
|
-
describe Glyphs 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) { asset.glyphs.find{ |g| g['glyphname'] == 'A' } }
|
10
|
-
|
11
|
-
describe 'call' do
|
12
|
-
it 'returns Array' do
|
13
|
-
asset.glyphs.must_be_kind_of Array
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'returns properties per each glyph' do
|
17
|
-
glyph_A['glyphclass'].wont_be_nil
|
18
|
-
glyph_A['glyphname'].wont_be_nil
|
19
|
-
glyph_A['encoding'].wont_be_nil
|
20
|
-
glyph_A['script'].wont_be_nil
|
21
|
-
glyph_A['width'].wont_be_nil
|
22
|
-
glyph_A['unicode'].wont_be_nil
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,42 +0,0 @@
|
|
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
|
@@ -1,76 +0,0 @@
|
|
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
|
@@ -1,22 +0,0 @@
|
|
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
|
@@ -1,36 +0,0 @@
|
|
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
|
@@ -1,22 +0,0 @@
|
|
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
|
@@ -1,18 +0,0 @@
|
|
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
|
@@ -1,26 +0,0 @@
|
|
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
|
@@ -1,23 +0,0 @@
|
|
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
|
@@ -1,22 +0,0 @@
|
|
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
|
@@ -1,48 +0,0 @@
|
|
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
|
@@ -1,28 +0,0 @@
|
|
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
|
@@ -1,18 +0,0 @@
|
|
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
|
@@ -1,18 +0,0 @@
|
|
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
|
data/test/test_helper.rb
DELETED
@@ -1,21 +0,0 @@
|
|
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
|