extract_ttc 0.1.0 → 0.2.0
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/.gitignore +2 -2
- data/.rubocop.yml +2 -2
- data/Gemfile +0 -2
- data/Rakefile +31 -16
- data/bin/rspec +3 -3
- data/ext/stripttc/dummy.c +2 -0
- data/ext/stripttc/extconf.rb +6 -1
- data/ext/stripttc/stripttc.c +7 -1
- data/extract_ttc.gemspec +10 -6
- data/lib/extract_ttc/version.rb +1 -1
- data/lib/extract_ttc.rb +14 -2
- metadata +67 -27
- data/.github/workflows/macosx.yml +0 -30
- data/.github/workflows/ubuntu.yml +0 -30
- data/.github/workflows/windows.yml +0 -32
- data/ext/stripttc/Makefile +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f31d7599e2b7b67d9602cacfefbf05d52fc5edfe6f7f268efd498b6bd74f11de
|
4
|
+
data.tar.gz: 9037cc4122a727931eebe8dba4690c84b370e91ed5b307788037fb039c0544b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5115bdd8b6930ff785a39ddc0f147146fda59c4353f0b1e5faf5a54367a41a2d63c43a0e67b53c50835fadc007402cdc93ab7528a4b08447e82c447342385db2
|
7
|
+
data.tar.gz: 8ab4fe679de26be9396bbf20f263ee11aaf9c520aaf125073b498bb7624b816be7c8fc0e57a909fa987835223b6f64d0b36a6434a28b41694a593f483259f602
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,23 +1,38 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
-
|
2
|
+
require "rspec/core/rake_task"
|
3
|
+
require "rake/clean"
|
4
|
+
require "rake/extensiontask"
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
require "rubygems"
|
7
|
+
require "rubygems/package_task"
|
8
|
+
|
9
|
+
require "rubocop/rake_task"
|
10
|
+
|
11
|
+
RSpec::Core::RakeTask.new(:spec)
|
12
|
+
RuboCop::RakeTask.new
|
13
|
+
|
14
|
+
task default: :spec
|
15
|
+
task spec: :compile
|
16
|
+
|
17
|
+
spec = Gem::Specification.load("extract_ttc.gemspec")
|
18
|
+
|
19
|
+
# add your default gem packing task
|
20
|
+
Gem::PackageTask.new(spec) do |pkg|
|
11
21
|
end
|
12
22
|
|
13
|
-
|
14
|
-
|
23
|
+
# HACK: Prevent rake-compiler from overriding required_ruby_version,
|
24
|
+
# because the shared library here is Ruby-agnostic.
|
25
|
+
# See https://github.com/rake-compiler/rake-compiler/issues/153
|
26
|
+
module FixRequiredRubyVersion
|
27
|
+
def required_ruby_version=(*); end
|
28
|
+
end
|
29
|
+
Gem::Specification.prepend(FixRequiredRubyVersion)
|
15
30
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
31
|
+
Rake::ExtensionTask.new("stripttc", spec) do |ext|
|
32
|
+
ext.lib_dir = "lib"
|
33
|
+
ext.cross_compile = true
|
34
|
+
ext.cross_platform = %w[x64-mingw32 x64-mingw-ucrt x86_64-linux x86_64-darwin]
|
35
|
+
ext.cross_compiling do |s|
|
36
|
+
s.files.reject! { |path| File.fnmatch?("ext/*", path) }
|
21
37
|
end
|
22
|
-
puts " done."
|
23
38
|
end
|
data/bin/rspec
CHANGED
@@ -10,12 +10,12 @@
|
|
10
10
|
|
11
11
|
require "pathname"
|
12
12
|
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
-
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
14
|
|
15
|
-
bundle_binstub = File.expand_path("
|
15
|
+
bundle_binstub = File.expand_path("bundle", __dir__)
|
16
16
|
|
17
17
|
if File.file?(bundle_binstub)
|
18
|
-
if
|
18
|
+
if /This file was generated by Bundler/.match?(File.read(bundle_binstub, 300))
|
19
19
|
load(bundle_binstub)
|
20
20
|
else
|
21
21
|
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
data/ext/stripttc/extconf.rb
CHANGED
data/ext/stripttc/stripttc.c
CHANGED
@@ -11,6 +11,12 @@
|
|
11
11
|
|
12
12
|
#define CHR(ch1,ch2,ch3,ch4) (((ch1)<<24)|((ch2)<<16)|((ch3)<<8)|(ch4))
|
13
13
|
|
14
|
+
#ifdef _WIN32
|
15
|
+
#define EXPORT_API __declspec(dllexport)
|
16
|
+
#else
|
17
|
+
#define EXPORT_API
|
18
|
+
#endif
|
19
|
+
|
14
20
|
static void putshort(FILE *file,int sval) {
|
15
21
|
putc((sval>>8)&0xff,file);
|
16
22
|
putc(sval&0xff,file);
|
@@ -132,7 +138,7 @@ static int handlefont(char *filename,int which,FILE *ttc,int offset) {
|
|
132
138
|
return( 0 );
|
133
139
|
}
|
134
140
|
|
135
|
-
int handlefile(char *filename) {
|
141
|
+
EXPORT_API int handlefile(char *filename) {
|
136
142
|
FILE *ttc = fopen(filename,"rb");
|
137
143
|
int version, cnt, e, i;
|
138
144
|
int *offsets;
|
data/extract_ttc.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.description = "Extract font collection to separate font files"
|
11
11
|
spec.homepage = "https://github.com/fontist/extract_ttc"
|
12
12
|
spec.license = "BSD-3-Clause"
|
13
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.
|
13
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
|
14
14
|
|
15
15
|
spec.metadata["homepage_uri"] = spec.homepage
|
16
16
|
spec.metadata["source_code_uri"] = "https://github.com/fontist/extract_ttc"
|
@@ -18,19 +18,23 @@ Gem::Specification.new do |spec|
|
|
18
18
|
|
19
19
|
spec.files = Dir.chdir(__dir__) do
|
20
20
|
`git ls-files -z`
|
21
|
-
.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
21
|
+
.split("\x0").reject { |f| f.match(%r{^(.github|test|spec|features)/}) }
|
22
22
|
end
|
23
23
|
|
24
24
|
spec.bindir = "exe"
|
25
25
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
26
26
|
spec.require_paths = ["lib"]
|
27
27
|
|
28
|
-
spec.add_runtime_dependency "ffi"
|
28
|
+
spec.add_runtime_dependency "ffi", "~> 1.0"
|
29
29
|
|
30
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
31
|
+
spec.add_development_dependency "rake", "~> 13"
|
32
|
+
spec.add_development_dependency "rake-compiler", "~> 1"
|
30
33
|
spec.add_development_dependency "rspec", "~> 3.0"
|
31
|
-
spec.add_development_dependency "rubocop", "
|
32
|
-
spec.add_development_dependency "rubocop-performance"
|
33
|
-
spec.add_development_dependency "rubocop-rails"
|
34
|
+
spec.add_development_dependency "rubocop", "~> 1.5"
|
35
|
+
spec.add_development_dependency "rubocop-performance", "~> 1.10"
|
36
|
+
spec.add_development_dependency "rubocop-rails", "~> 2.9"
|
34
37
|
|
35
38
|
spec.extensions << "ext/stripttc/extconf.rb"
|
39
|
+
spec.metadata["rubygems_mfa_required"] = "false"
|
36
40
|
end
|
data/lib/extract_ttc/version.rb
CHANGED
data/lib/extract_ttc.rb
CHANGED
@@ -4,13 +4,25 @@ require "tempfile"
|
|
4
4
|
|
5
5
|
module ExtractTtc
|
6
6
|
class Error < StandardError; end
|
7
|
+
|
7
8
|
class ReadFileError < Error; end
|
9
|
+
|
8
10
|
class InvalidFileError < Error; end
|
11
|
+
|
9
12
|
class WriteFileError < Error; end
|
13
|
+
|
10
14
|
class UnknownResultError < Error; end
|
11
15
|
|
12
16
|
extend FFI::Library
|
13
|
-
|
17
|
+
# NOTE: ffi doesn't support bundles out of box https://github.com/ffi/ffi/issues/42#issuecomment-750031554
|
18
|
+
# NOTE: rake-compiler doesn't support dylib generation https://github.com/rake-compiler/rake-compiler/issues/183
|
19
|
+
lib_name = if File.exists?(File.join(File.dirname(__FILE__),
|
20
|
+
"stripttc.bundle"))
|
21
|
+
"stripttc.bundle"
|
22
|
+
else
|
23
|
+
"stripttc.so"
|
24
|
+
end
|
25
|
+
ffi_lib File.join(File.dirname(__FILE__), lib_name)
|
14
26
|
attach_function :handlefile, [:string], :int
|
15
27
|
|
16
28
|
def self.extract(path)
|
@@ -62,6 +74,6 @@ module ExtractTtc
|
|
62
74
|
end
|
63
75
|
|
64
76
|
def self.fetch_filenames(stdout)
|
65
|
-
stdout.split("=>").last.split
|
77
|
+
stdout.split("=>").last.split
|
66
78
|
end
|
67
79
|
end
|
metadata
CHANGED
@@ -1,29 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: extract_ttc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '1.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
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: '2.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '13'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '13'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake-compiler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1'
|
27
69
|
- !ruby/object:Gem::Dependency
|
28
70
|
name: rspec
|
29
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -42,44 +84,44 @@ dependencies:
|
|
42
84
|
name: rubocop
|
43
85
|
requirement: !ruby/object:Gem::Requirement
|
44
86
|
requirements:
|
45
|
-
- -
|
87
|
+
- - "~>"
|
46
88
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
89
|
+
version: '1.5'
|
48
90
|
type: :development
|
49
91
|
prerelease: false
|
50
92
|
version_requirements: !ruby/object:Gem::Requirement
|
51
93
|
requirements:
|
52
|
-
- -
|
94
|
+
- - "~>"
|
53
95
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
96
|
+
version: '1.5'
|
55
97
|
- !ruby/object:Gem::Dependency
|
56
98
|
name: rubocop-performance
|
57
99
|
requirement: !ruby/object:Gem::Requirement
|
58
100
|
requirements:
|
59
|
-
- - "
|
101
|
+
- - "~>"
|
60
102
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
103
|
+
version: '1.10'
|
62
104
|
type: :development
|
63
105
|
prerelease: false
|
64
106
|
version_requirements: !ruby/object:Gem::Requirement
|
65
107
|
requirements:
|
66
|
-
- - "
|
108
|
+
- - "~>"
|
67
109
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
110
|
+
version: '1.10'
|
69
111
|
- !ruby/object:Gem::Dependency
|
70
112
|
name: rubocop-rails
|
71
113
|
requirement: !ruby/object:Gem::Requirement
|
72
114
|
requirements:
|
73
|
-
- - "
|
115
|
+
- - "~>"
|
74
116
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
117
|
+
version: '2.9'
|
76
118
|
type: :development
|
77
119
|
prerelease: false
|
78
120
|
version_requirements: !ruby/object:Gem::Requirement
|
79
121
|
requirements:
|
80
|
-
- - "
|
122
|
+
- - "~>"
|
81
123
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
124
|
+
version: '2.9'
|
83
125
|
description: Extract font collection to separate font files
|
84
126
|
email:
|
85
127
|
- operations@ribose.com
|
@@ -88,9 +130,6 @@ extensions:
|
|
88
130
|
- ext/stripttc/extconf.rb
|
89
131
|
extra_rdoc_files: []
|
90
132
|
files:
|
91
|
-
- ".github/workflows/macosx.yml"
|
92
|
-
- ".github/workflows/ubuntu.yml"
|
93
|
-
- ".github/workflows/windows.yml"
|
94
133
|
- ".gitignore"
|
95
134
|
- ".rspec"
|
96
135
|
- ".rubocop.yml"
|
@@ -102,7 +141,7 @@ files:
|
|
102
141
|
- bin/rspec
|
103
142
|
- bin/setup
|
104
143
|
- ext/stripttc/LICENSE
|
105
|
-
- ext/stripttc/
|
144
|
+
- ext/stripttc/dummy.c
|
106
145
|
- ext/stripttc/extconf.rb
|
107
146
|
- ext/stripttc/stripttc.c
|
108
147
|
- extract_ttc.gemspec
|
@@ -115,7 +154,8 @@ metadata:
|
|
115
154
|
homepage_uri: https://github.com/fontist/extract_ttc
|
116
155
|
source_code_uri: https://github.com/fontist/extract_ttc
|
117
156
|
changelog_uri: https://github.com/fontist/extract_ttc
|
118
|
-
|
157
|
+
rubygems_mfa_required: 'false'
|
158
|
+
post_install_message:
|
119
159
|
rdoc_options: []
|
120
160
|
require_paths:
|
121
161
|
- lib
|
@@ -123,15 +163,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
123
163
|
requirements:
|
124
164
|
- - ">="
|
125
165
|
- !ruby/object:Gem::Version
|
126
|
-
version: 2.
|
166
|
+
version: 2.6.0
|
127
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
168
|
requirements:
|
129
169
|
- - ">="
|
130
170
|
- !ruby/object:Gem::Version
|
131
171
|
version: '0'
|
132
172
|
requirements: []
|
133
|
-
rubygems_version: 3.
|
134
|
-
signing_key:
|
173
|
+
rubygems_version: 3.1.6
|
174
|
+
signing_key:
|
135
175
|
specification_version: 4
|
136
176
|
summary: Extract TTC file to TTF files
|
137
177
|
test_files: []
|
@@ -1,30 +0,0 @@
|
|
1
|
-
name: macos
|
2
|
-
|
3
|
-
on:
|
4
|
-
push:
|
5
|
-
branches:
|
6
|
-
- master
|
7
|
-
|
8
|
-
pull_request:
|
9
|
-
branches:
|
10
|
-
- master
|
11
|
-
|
12
|
-
jobs:
|
13
|
-
build:
|
14
|
-
runs-on: macos-latest
|
15
|
-
|
16
|
-
steps:
|
17
|
-
- uses: actions/checkout@v2
|
18
|
-
|
19
|
-
- uses: actions/setup-ruby@v1
|
20
|
-
with:
|
21
|
-
ruby-version: 2.6
|
22
|
-
|
23
|
-
- name: Install bundler
|
24
|
-
run: gem install bundler
|
25
|
-
|
26
|
-
- name: Setup
|
27
|
-
run: bin/setup
|
28
|
-
|
29
|
-
- name: Run tests
|
30
|
-
run: bin/rspec
|
@@ -1,30 +0,0 @@
|
|
1
|
-
name: ubuntu
|
2
|
-
|
3
|
-
on:
|
4
|
-
push:
|
5
|
-
branches:
|
6
|
-
- master
|
7
|
-
|
8
|
-
pull_request:
|
9
|
-
branches:
|
10
|
-
- master
|
11
|
-
|
12
|
-
jobs:
|
13
|
-
build:
|
14
|
-
runs-on: ubuntu-latest
|
15
|
-
|
16
|
-
steps:
|
17
|
-
- uses: actions/checkout@v2
|
18
|
-
|
19
|
-
- uses: actions/setup-ruby@v1
|
20
|
-
with:
|
21
|
-
ruby-version: 2.6
|
22
|
-
|
23
|
-
- name: Install bundler
|
24
|
-
run: gem install bundler
|
25
|
-
|
26
|
-
- name: Setup
|
27
|
-
run: bin/setup
|
28
|
-
|
29
|
-
- name: Run tests
|
30
|
-
run: bin/rspec
|
@@ -1,32 +0,0 @@
|
|
1
|
-
name: windows
|
2
|
-
|
3
|
-
on:
|
4
|
-
push:
|
5
|
-
branches:
|
6
|
-
- master
|
7
|
-
|
8
|
-
pull_request:
|
9
|
-
branches:
|
10
|
-
- master
|
11
|
-
|
12
|
-
jobs:
|
13
|
-
build:
|
14
|
-
runs-on: windows-latest
|
15
|
-
|
16
|
-
steps:
|
17
|
-
- uses: actions/checkout@v2
|
18
|
-
|
19
|
-
- uses: actions/setup-ruby@v1
|
20
|
-
with:
|
21
|
-
ruby-version: 2.6
|
22
|
-
|
23
|
-
- name: Setup
|
24
|
-
shell: pwsh
|
25
|
-
run: |
|
26
|
-
gem install bundler
|
27
|
-
bundle config --local path vendor/bundle
|
28
|
-
bundle install --jobs 4 --retry 3
|
29
|
-
bundle exec rake compile
|
30
|
-
|
31
|
-
- name: Run tests
|
32
|
-
run: bundle exec rspec
|
data/ext/stripttc/Makefile
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
# stripttc.c originates from:
|
2
|
-
# https://github.com/fontforge/fontforge/blob/master/contrib/fonttools/stripttc.c
|
3
|
-
|
4
|
-
default: stripttc.so
|
5
|
-
|
6
|
-
stripttc.so: stripttc.o
|
7
|
-
gcc -shared -o $@ $<
|
8
|
-
|
9
|
-
stripttc.o: stripttc.c
|
10
|
-
gcc -c -fPIC -o $@ $<
|
11
|
-
|
12
|
-
install:
|
13
|
-
: # do nothing, we'll load the lib directly
|
14
|
-
|
15
|
-
clean:
|
16
|
-
-rm *.so *.o
|