font-converter 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 4322a37b4e56ee6c64b3205a6785dc9ebcf90cd250a4f6923f7a92f9f8a15fa0
4
+ data.tar.gz: e40c46e947f2d9c9415d0cafa1a49b63f17dd9803e562f85731f9e0b3a16d686
5
+ SHA512:
6
+ metadata.gz: 7ea1d8abc17bd452b08823b23f56b33a177b7fb1ad09e1905ad3561bb5c8de8ee043723cfc786144cb69972be1d469669efd9c7013593f1779dabca89c255598
7
+ data.tar.gz: 3b34a677523a97d683a92bfb27fe8011b11750307f876b50c17eef3fc3b96a689b69462019ba7a52b8d734fff26ac48175f0f383524749c744530f465355785d
data/.gitignore ADDED
@@ -0,0 +1,23 @@
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
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
23
+ tags
data/.travis.yml ADDED
@@ -0,0 +1,16 @@
1
+ rvm:
2
+ - 2.5.3
3
+
4
+ install:
5
+ - "travis_retry bundle install"
6
+
7
+ script: "bundle exec rspec"
8
+
9
+ gemfile:
10
+ - Gemfile
11
+
12
+ matrix:
13
+ fast_finish: true
14
+
15
+ sudo: false
16
+ cache: bundler
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2020 Renny Ren
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,43 @@
1
+ # font-converter
2
+
3
+ This is a Ruby wrapper for [FontForge](https://fontforge.github.io/en-US/documentation/), which can be used to parse font file and extract the font name, or convert fonts into different formats (.ttf, .otf, .woff, etc.)
4
+
5
+ [![Build Status](https://travis-ci.org/renny-ren/font-converter.svg?branch=master)](https://travis-ci.org/renny-ren/font-converter)
6
+
7
+ ## Installation
8
+
9
+ `$ gem install font-converter`
10
+
11
+ In Rails, add it to your Gemfile:
12
+
13
+ `gem 'font-converter'`
14
+
15
+ then run `$ bundle install`
16
+
17
+ ## Usage
18
+
19
+ You should first have fontforge installed on your machine:
20
+
21
+ `brew install fontforge`
22
+
23
+ #### parse
24
+
25
+ ```ruby
26
+ FontForge.parse('/my_path/test.woff') # => { font_name: 'xxx', full_name: 'xxx', family_name: 'xxx' }
27
+ ```
28
+
29
+ #### convert
30
+
31
+ ```ruby
32
+ # FontForge.convert(path, new_path)
33
+ FontForge.convert('/my_path/test.ttf', '/my_path/test.woff') # convert .ttf format to .woff
34
+ ```
35
+
36
+
37
+ ## Contributing
38
+
39
+ 1. Fork it (https://github.com/renny-ren/font-converter)
40
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
41
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
42
+ 4. Push to the branch (`git push origin my-new-feature`)
43
+ 5. Create a new Pull Request
data/README.zh-cn.md ADDED
File without changes
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ require 'rspec/core/rake_task'
2
+ require 'bundler/gem_tasks'
3
+
4
+ # Default directory to look in is `/specs`
5
+ # Run with `rake spec`
6
+ RSpec::Core::RakeTask.new(:spec) do |t|
7
+ t.rspec_opts = ['--color']
8
+ t.verbose = false
9
+ end
10
+
11
+ task :default => :spec
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "font-converter"
7
+ spec.version = "0.1.2"
8
+ spec.authors = ["Renny Ren"]
9
+ spec.email = ["rennyrjh@gmail.com"]
10
+ spec.summary = "A Ruby wrapper for FontForge"
11
+ spec.homepage = "https://github.com/renny-ren/font-converter"
12
+ spec.license = "MIT"
13
+
14
+ spec.files = `git ls-files -z`.split("\x0")
15
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
+ spec.require_paths = ["lib"]
18
+
19
+ spec.add_dependency 'activesupport'
20
+ spec.add_dependency 'builder'
21
+
22
+ spec.add_development_dependency "bundler"
23
+ spec.add_development_dependency "rake"
24
+
25
+ spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "pry"
27
+ spec.add_development_dependency "pry-remote"
28
+ spec.add_development_dependency "pry-nav"
29
+
30
+ spec.add_development_dependency "awesome_print"
31
+ end
@@ -0,0 +1,4 @@
1
+ module FontForge
2
+ class ApiError
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module FontForge
2
+ class Abstract
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ Open($1);
2
+ Generate($2);
3
+ Quit(0);
@@ -0,0 +1,5 @@
1
+ Open($1);
2
+ Print($fontname);
3
+ Print($fullname);
4
+ Print($familyname);
5
+ Quit(0);
data/lib/font_forge.rb ADDED
@@ -0,0 +1,22 @@
1
+ # coding: utf-8
2
+ require 'font_forge/model/abstract'
3
+
4
+ module FontForge
5
+ class << self
6
+ def convert(input, output)
7
+ script_path = File.join(File.dirname(File.expand_path(__FILE__)), "font_forge/script/convert.sh")
8
+ system "fontforge -script '#{script_path}' '#{input}' '#{output}'"
9
+ end
10
+
11
+ def parse(file_path)
12
+ script_path = File.join(File.dirname(File.expand_path(__FILE__)), "font_forge/script/parse.sh")
13
+ stdout_str = `fontforge -script '#{script_path}' '#{file_path}'`.split("\n")
14
+ {
15
+ font_name: stdout_str[0],
16
+ full_name: stdout_str[1],
17
+ family_name: stdout_str[2]
18
+ }
19
+ end
20
+ alias_method :🔍, :parse
21
+ end
22
+ end
data/package-lock.json ADDED
@@ -0,0 +1,489 @@
1
+ {
2
+ "requires": true,
3
+ "lockfileVersion": 1,
4
+ "dependencies": {
5
+ "apidoc": {
6
+ "version": "0.17.7",
7
+ "resolved": "http://registry.npm.taobao.org/apidoc/download/apidoc-0.17.7.tgz",
8
+ "integrity": "sha1-pJCQy9izqkV70FTwDgA36XX9Puc=",
9
+ "requires": {
10
+ "apidoc-core": "~0.8.2",
11
+ "commander": "^2.19.0",
12
+ "fs-extra": "^7.0.0",
13
+ "lodash": "^4.17.10",
14
+ "markdown-it": "^8.3.1",
15
+ "winston": "^3.0.0"
16
+ }
17
+ },
18
+ "apidoc-core": {
19
+ "version": "0.8.3",
20
+ "resolved": "http://registry.npm.taobao.org/apidoc-core/download/apidoc-core-0.8.3.tgz",
21
+ "integrity": "sha1-2dY1RYKd8lDSzKBJaDqH53U2S5Y=",
22
+ "requires": {
23
+ "fs-extra": "^3.0.1",
24
+ "glob": "^7.1.1",
25
+ "iconv-lite": "^0.4.17",
26
+ "klaw-sync": "^2.1.0",
27
+ "lodash": "~4.17.4",
28
+ "semver": "~5.3.0"
29
+ },
30
+ "dependencies": {
31
+ "fs-extra": {
32
+ "version": "3.0.1",
33
+ "resolved": "http://registry.npm.taobao.org/fs-extra/download/fs-extra-3.0.1.tgz",
34
+ "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=",
35
+ "requires": {
36
+ "graceful-fs": "^4.1.2",
37
+ "jsonfile": "^3.0.0",
38
+ "universalify": "^0.1.0"
39
+ }
40
+ }
41
+ }
42
+ },
43
+ "argparse": {
44
+ "version": "1.0.10",
45
+ "resolved": "http://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz",
46
+ "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
47
+ "requires": {
48
+ "sprintf-js": "~1.0.2"
49
+ }
50
+ },
51
+ "async": {
52
+ "version": "2.6.2",
53
+ "resolved": "http://registry.npm.taobao.org/async/download/async-2.6.2.tgz",
54
+ "integrity": "sha1-GDMOp+bjE4h/XS8qkEusb+TdU4E=",
55
+ "requires": {
56
+ "lodash": "^4.17.11"
57
+ }
58
+ },
59
+ "balanced-match": {
60
+ "version": "1.0.0",
61
+ "resolved": "http://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz",
62
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
63
+ },
64
+ "brace-expansion": {
65
+ "version": "1.1.11",
66
+ "resolved": "http://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz",
67
+ "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
68
+ "requires": {
69
+ "balanced-match": "^1.0.0",
70
+ "concat-map": "0.0.1"
71
+ }
72
+ },
73
+ "color": {
74
+ "version": "3.0.0",
75
+ "resolved": "http://registry.npm.taobao.org/color/download/color-3.0.0.tgz",
76
+ "integrity": "sha1-2SC0Mo1TSjrIKV1o971LpsQnvpo=",
77
+ "requires": {
78
+ "color-convert": "^1.9.1",
79
+ "color-string": "^1.5.2"
80
+ }
81
+ },
82
+ "color-convert": {
83
+ "version": "1.9.3",
84
+ "resolved": "http://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz",
85
+ "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=",
86
+ "requires": {
87
+ "color-name": "1.1.3"
88
+ }
89
+ },
90
+ "color-name": {
91
+ "version": "1.1.3",
92
+ "resolved": "http://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz",
93
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
94
+ },
95
+ "color-string": {
96
+ "version": "1.5.3",
97
+ "resolved": "http://registry.npm.taobao.org/color-string/download/color-string-1.5.3.tgz",
98
+ "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=",
99
+ "requires": {
100
+ "color-name": "^1.0.0",
101
+ "simple-swizzle": "^0.2.2"
102
+ }
103
+ },
104
+ "colornames": {
105
+ "version": "1.1.1",
106
+ "resolved": "http://registry.npm.taobao.org/colornames/download/colornames-1.1.1.tgz",
107
+ "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y="
108
+ },
109
+ "colors": {
110
+ "version": "1.3.3",
111
+ "resolved": "http://registry.npm.taobao.org/colors/download/colors-1.3.3.tgz",
112
+ "integrity": "sha1-OeAF1Uav4B4B+cTKj6UPaGoBIF0="
113
+ },
114
+ "colorspace": {
115
+ "version": "1.1.1",
116
+ "resolved": "http://registry.npm.taobao.org/colorspace/download/colorspace-1.1.1.tgz",
117
+ "integrity": "sha1-msJJHhvG+PtpDiF2gU+NCRY22XI=",
118
+ "requires": {
119
+ "color": "3.0.x",
120
+ "text-hex": "1.0.x"
121
+ }
122
+ },
123
+ "commander": {
124
+ "version": "2.19.0",
125
+ "resolved": "http://registry.npm.taobao.org/commander/download/commander-2.19.0.tgz",
126
+ "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So="
127
+ },
128
+ "concat-map": {
129
+ "version": "0.0.1",
130
+ "resolved": "http://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz",
131
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
132
+ },
133
+ "core-util-is": {
134
+ "version": "1.0.2",
135
+ "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz",
136
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
137
+ },
138
+ "diagnostics": {
139
+ "version": "1.1.1",
140
+ "resolved": "http://registry.npm.taobao.org/diagnostics/download/diagnostics-1.1.1.tgz",
141
+ "integrity": "sha1-yrasM99wydmnJ0kK5DrJladpsio=",
142
+ "requires": {
143
+ "colorspace": "1.1.x",
144
+ "enabled": "1.0.x",
145
+ "kuler": "1.0.x"
146
+ }
147
+ },
148
+ "enabled": {
149
+ "version": "1.0.2",
150
+ "resolved": "http://registry.npm.taobao.org/enabled/download/enabled-1.0.2.tgz",
151
+ "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=",
152
+ "requires": {
153
+ "env-variable": "0.0.x"
154
+ }
155
+ },
156
+ "entities": {
157
+ "version": "1.1.2",
158
+ "resolved": "http://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz",
159
+ "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY="
160
+ },
161
+ "env-variable": {
162
+ "version": "0.0.5",
163
+ "resolved": "http://registry.npm.taobao.org/env-variable/download/env-variable-0.0.5.tgz",
164
+ "integrity": "sha1-kT3YML7xHpagOcA41BMGBOujf4g="
165
+ },
166
+ "fast-safe-stringify": {
167
+ "version": "2.0.6",
168
+ "resolved": "http://registry.npm.taobao.org/fast-safe-stringify/download/fast-safe-stringify-2.0.6.tgz",
169
+ "integrity": "sha1-BLJhBsxWaB9RoETPwNds8ACKwsI="
170
+ },
171
+ "fecha": {
172
+ "version": "2.3.3",
173
+ "resolved": "http://registry.npm.taobao.org/fecha/download/fecha-2.3.3.tgz",
174
+ "integrity": "sha1-lI50FX3xoy/RsSw6PDzctuydls0="
175
+ },
176
+ "fs-extra": {
177
+ "version": "7.0.1",
178
+ "resolved": "http://registry.npm.taobao.org/fs-extra/download/fs-extra-7.0.1.tgz",
179
+ "integrity": "sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=",
180
+ "requires": {
181
+ "graceful-fs": "^4.1.2",
182
+ "jsonfile": "^4.0.0",
183
+ "universalify": "^0.1.0"
184
+ },
185
+ "dependencies": {
186
+ "jsonfile": {
187
+ "version": "4.0.0",
188
+ "resolved": "http://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz",
189
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
190
+ "requires": {
191
+ "graceful-fs": "^4.1.6"
192
+ }
193
+ }
194
+ }
195
+ },
196
+ "fs.realpath": {
197
+ "version": "1.0.0",
198
+ "resolved": "http://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz",
199
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
200
+ },
201
+ "glob": {
202
+ "version": "7.1.3",
203
+ "resolved": "http://registry.npm.taobao.org/glob/download/glob-7.1.3.tgz",
204
+ "integrity": "sha1-OWCDLT8VdBCDQtr9OmezMsCWnfE=",
205
+ "requires": {
206
+ "fs.realpath": "^1.0.0",
207
+ "inflight": "^1.0.4",
208
+ "inherits": "2",
209
+ "minimatch": "^3.0.4",
210
+ "once": "^1.3.0",
211
+ "path-is-absolute": "^1.0.0"
212
+ }
213
+ },
214
+ "graceful-fs": {
215
+ "version": "4.1.15",
216
+ "resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.15.tgz",
217
+ "integrity": "sha1-/7cD4QZuig7qpMi4C6klPu77+wA="
218
+ },
219
+ "iconv-lite": {
220
+ "version": "0.4.24",
221
+ "resolved": "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz",
222
+ "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
223
+ "requires": {
224
+ "safer-buffer": ">= 2.1.2 < 3"
225
+ }
226
+ },
227
+ "inflight": {
228
+ "version": "1.0.6",
229
+ "resolved": "http://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz",
230
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
231
+ "requires": {
232
+ "once": "^1.3.0",
233
+ "wrappy": "1"
234
+ }
235
+ },
236
+ "inherits": {
237
+ "version": "2.0.3",
238
+ "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
239
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
240
+ },
241
+ "is-arrayish": {
242
+ "version": "0.3.2",
243
+ "resolved": "http://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.3.2.tgz",
244
+ "integrity": "sha1-RXSirlb3qyBolvtDHq7tBm/fjwM="
245
+ },
246
+ "is-stream": {
247
+ "version": "1.1.0",
248
+ "resolved": "http://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz",
249
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
250
+ },
251
+ "isarray": {
252
+ "version": "1.0.0",
253
+ "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
254
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
255
+ },
256
+ "jsonfile": {
257
+ "version": "3.0.1",
258
+ "resolved": "http://registry.npm.taobao.org/jsonfile/download/jsonfile-3.0.1.tgz",
259
+ "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=",
260
+ "requires": {
261
+ "graceful-fs": "^4.1.6"
262
+ }
263
+ },
264
+ "klaw-sync": {
265
+ "version": "2.1.0",
266
+ "resolved": "http://registry.npm.taobao.org/klaw-sync/download/klaw-sync-2.1.0.tgz",
267
+ "integrity": "sha1-PTvNhgDnv971MjHHOf8FOu1WDkQ=",
268
+ "requires": {
269
+ "graceful-fs": "^4.1.11"
270
+ }
271
+ },
272
+ "kuler": {
273
+ "version": "1.0.1",
274
+ "resolved": "http://registry.npm.taobao.org/kuler/download/kuler-1.0.1.tgz",
275
+ "integrity": "sha1-73x4TzbJ+24W3TFQ0VJneysCKKY=",
276
+ "requires": {
277
+ "colornames": "^1.1.1"
278
+ }
279
+ },
280
+ "linkify-it": {
281
+ "version": "2.1.0",
282
+ "resolved": "http://registry.npm.taobao.org/linkify-it/download/linkify-it-2.1.0.tgz",
283
+ "integrity": "sha1-xMrzimzXrCIS7zx9K94wqRVh+ds=",
284
+ "requires": {
285
+ "uc.micro": "^1.0.1"
286
+ }
287
+ },
288
+ "lodash": {
289
+ "version": "4.17.19",
290
+ "resolved": "http://registry.npm.taobao.org/lodash/download/lodash-4.17.19.tgz",
291
+ "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40="
292
+ },
293
+ "logform": {
294
+ "version": "2.1.2",
295
+ "resolved": "http://registry.npm.taobao.org/logform/download/logform-2.1.2.tgz",
296
+ "integrity": "sha1-lXFV6+tnoTFkBpglzmfdtbst02A=",
297
+ "requires": {
298
+ "colors": "^1.2.1",
299
+ "fast-safe-stringify": "^2.0.4",
300
+ "fecha": "^2.3.3",
301
+ "ms": "^2.1.1",
302
+ "triple-beam": "^1.3.0"
303
+ }
304
+ },
305
+ "markdown-it": {
306
+ "version": "8.4.2",
307
+ "resolved": "http://registry.npm.taobao.org/markdown-it/download/markdown-it-8.4.2.tgz",
308
+ "integrity": "sha1-OG+YmY3BWjdyKqdyIIT0Agvdm1Q=",
309
+ "requires": {
310
+ "argparse": "^1.0.7",
311
+ "entities": "~1.1.1",
312
+ "linkify-it": "^2.0.0",
313
+ "mdurl": "^1.0.1",
314
+ "uc.micro": "^1.0.5"
315
+ }
316
+ },
317
+ "mdurl": {
318
+ "version": "1.0.1",
319
+ "resolved": "http://registry.npm.taobao.org/mdurl/download/mdurl-1.0.1.tgz",
320
+ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
321
+ },
322
+ "minimatch": {
323
+ "version": "3.0.4",
324
+ "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz",
325
+ "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
326
+ "requires": {
327
+ "brace-expansion": "^1.1.7"
328
+ }
329
+ },
330
+ "ms": {
331
+ "version": "2.1.1",
332
+ "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz",
333
+ "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo="
334
+ },
335
+ "once": {
336
+ "version": "1.4.0",
337
+ "resolved": "http://registry.npm.taobao.org/once/download/once-1.4.0.tgz",
338
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
339
+ "requires": {
340
+ "wrappy": "1"
341
+ }
342
+ },
343
+ "one-time": {
344
+ "version": "0.0.4",
345
+ "resolved": "http://registry.npm.taobao.org/one-time/download/one-time-0.0.4.tgz",
346
+ "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4="
347
+ },
348
+ "path-is-absolute": {
349
+ "version": "1.0.1",
350
+ "resolved": "http://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
351
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
352
+ },
353
+ "process-nextick-args": {
354
+ "version": "2.0.0",
355
+ "resolved": "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.0.tgz",
356
+ "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o="
357
+ },
358
+ "readable-stream": {
359
+ "version": "3.1.1",
360
+ "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-3.1.1.tgz",
361
+ "integrity": "sha1-7Wu8bFuliwkAOf8YzmcFFXla6wY=",
362
+ "requires": {
363
+ "inherits": "^2.0.3",
364
+ "string_decoder": "^1.1.1",
365
+ "util-deprecate": "^1.0.1"
366
+ }
367
+ },
368
+ "safe-buffer": {
369
+ "version": "5.1.2",
370
+ "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
371
+ "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
372
+ },
373
+ "safer-buffer": {
374
+ "version": "2.1.2",
375
+ "resolved": "http://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz",
376
+ "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
377
+ },
378
+ "semver": {
379
+ "version": "5.3.0",
380
+ "resolved": "http://registry.npm.taobao.org/semver/download/semver-5.3.0.tgz",
381
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
382
+ },
383
+ "simple-swizzle": {
384
+ "version": "0.2.2",
385
+ "resolved": "http://registry.npm.taobao.org/simple-swizzle/download/simple-swizzle-0.2.2.tgz",
386
+ "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
387
+ "requires": {
388
+ "is-arrayish": "^0.3.1"
389
+ }
390
+ },
391
+ "sprintf-js": {
392
+ "version": "1.0.3",
393
+ "resolved": "http://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
394
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
395
+ },
396
+ "stack-trace": {
397
+ "version": "0.0.10",
398
+ "resolved": "http://registry.npm.taobao.org/stack-trace/download/stack-trace-0.0.10.tgz",
399
+ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
400
+ },
401
+ "string_decoder": {
402
+ "version": "1.2.0",
403
+ "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.2.0.tgz",
404
+ "integrity": "sha1-/obnOLGVRK/nBGkkOyoe6SQOro0=",
405
+ "requires": {
406
+ "safe-buffer": "~5.1.0"
407
+ }
408
+ },
409
+ "text-hex": {
410
+ "version": "1.0.0",
411
+ "resolved": "http://registry.npm.taobao.org/text-hex/download/text-hex-1.0.0.tgz",
412
+ "integrity": "sha1-adycGxdEbueakr9biEu0uRJ1BvU="
413
+ },
414
+ "triple-beam": {
415
+ "version": "1.3.0",
416
+ "resolved": "http://registry.npm.taobao.org/triple-beam/download/triple-beam-1.3.0.tgz",
417
+ "integrity": "sha1-pZUhTHKY24M57u7gg+TRC9jLjdk="
418
+ },
419
+ "uc.micro": {
420
+ "version": "1.0.6",
421
+ "resolved": "http://registry.npm.taobao.org/uc.micro/download/uc.micro-1.0.6.tgz",
422
+ "integrity": "sha1-nEEagCpAmpH8bPdAgbq6NLJEmaw="
423
+ },
424
+ "universalify": {
425
+ "version": "0.1.2",
426
+ "resolved": "http://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz",
427
+ "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY="
428
+ },
429
+ "util-deprecate": {
430
+ "version": "1.0.2",
431
+ "resolved": "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz",
432
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
433
+ },
434
+ "winston": {
435
+ "version": "3.2.1",
436
+ "resolved": "http://registry.npm.taobao.org/winston/download/winston-3.2.1.tgz",
437
+ "integrity": "sha1-YwYTd5dsc1hAKL4kkKGEYFX3fwc=",
438
+ "requires": {
439
+ "async": "^2.6.1",
440
+ "diagnostics": "^1.1.1",
441
+ "is-stream": "^1.1.0",
442
+ "logform": "^2.1.1",
443
+ "one-time": "0.0.4",
444
+ "readable-stream": "^3.1.1",
445
+ "stack-trace": "0.0.x",
446
+ "triple-beam": "^1.3.0",
447
+ "winston-transport": "^4.3.0"
448
+ }
449
+ },
450
+ "winston-transport": {
451
+ "version": "4.3.0",
452
+ "resolved": "http://registry.npm.taobao.org/winston-transport/download/winston-transport-4.3.0.tgz",
453
+ "integrity": "sha1-32jAwgJILESNm0cxPAcwTC18LGY=",
454
+ "requires": {
455
+ "readable-stream": "^2.3.6",
456
+ "triple-beam": "^1.2.0"
457
+ },
458
+ "dependencies": {
459
+ "readable-stream": {
460
+ "version": "2.3.6",
461
+ "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz",
462
+ "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=",
463
+ "requires": {
464
+ "core-util-is": "~1.0.0",
465
+ "inherits": "~2.0.3",
466
+ "isarray": "~1.0.0",
467
+ "process-nextick-args": "~2.0.0",
468
+ "safe-buffer": "~5.1.1",
469
+ "string_decoder": "~1.1.1",
470
+ "util-deprecate": "~1.0.1"
471
+ }
472
+ },
473
+ "string_decoder": {
474
+ "version": "1.1.1",
475
+ "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz",
476
+ "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
477
+ "requires": {
478
+ "safe-buffer": "~5.1.0"
479
+ }
480
+ }
481
+ }
482
+ },
483
+ "wrappy": {
484
+ "version": "1.0.2",
485
+ "resolved": "http://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz",
486
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
487
+ }
488
+ }
489
+ }
@@ -0,0 +1,6 @@
1
+ require 'pry'
2
+ require 'font_forge'
3
+
4
+ RSpec.configure do |config|
5
+
6
+ end
metadata ADDED
@@ -0,0 +1,185 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: font-converter
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Renny Ren
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-07-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: builder
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
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: rake
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: rspec
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: pry
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: pry-remote
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
+ - !ruby/object:Gem::Dependency
112
+ name: pry-nav
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: awesome_print
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description:
140
+ email:
141
+ - rennyrjh@gmail.com
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - ".gitignore"
147
+ - ".travis.yml"
148
+ - Gemfile
149
+ - LICENSE
150
+ - README.md
151
+ - README.zh-cn.md
152
+ - Rakefile
153
+ - font-converter.gemspec
154
+ - lib/font_forge.rb
155
+ - lib/font_forge/error/api_error.rb
156
+ - lib/font_forge/model/abstract.rb
157
+ - lib/font_forge/script/convert.sh
158
+ - lib/font_forge/script/parse.sh
159
+ - package-lock.json
160
+ - spec/spec_helper.rb
161
+ homepage: https://github.com/renny-ren/font-converter
162
+ licenses:
163
+ - MIT
164
+ metadata: {}
165
+ post_install_message:
166
+ rdoc_options: []
167
+ require_paths:
168
+ - lib
169
+ required_ruby_version: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ required_rubygems_version: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ requirements: []
180
+ rubygems_version: 3.0.3
181
+ signing_key:
182
+ specification_version: 4
183
+ summary: A Ruby wrapper for FontForge
184
+ test_files:
185
+ - spec/spec_helper.rb