extract_ttc 0.2.0-x86_64-linux → 0.3.0-x86_64-linux
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Rakefile +76 -6
- data/extract_ttc.gemspec +4 -3
- data/lib/2.7/stripttc.so +0 -0
- data/lib/3.0/stripttc.so +0 -0
- data/lib/3.1/stripttc.so +0 -0
- data/lib/extract_ttc/version.rb +1 -1
- metadata +36 -18
- data/ext/stripttc/LICENSE +0 -31
- data/ext/stripttc/dummy.c +0 -2
- data/ext/stripttc/extconf.rb +0 -6
- data/ext/stripttc/stripttc.c +0 -187
- data/lib/stripttc.so +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8b641dc35685b306188b1112c11b8b155bbfbcd6da492692502311f7d307fed
|
4
|
+
data.tar.gz: 790bc392fa04b6b395ef4d39a263d18213a34e4fb103becc75c1ff91923a59d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d266b2fdb80066029af90d9e02df5600cb966fa5f968ca046a2a0a759fe1831171dd46d2874972da0538697589439a0bd5c6ccb992ae751871dba62b8d8f664e
|
7
|
+
data.tar.gz: c13ba809caaea95ea596361870a05f1cd62fd5602ccb0e2b8f29aa75c1e9e1ec0446c5c5a269bb73ca6b5217c97a3f3b48d2cbb12f98ea415bec6b440f5a9f75
|
data/.gitignore
CHANGED
data/Rakefile
CHANGED
@@ -1,21 +1,38 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
-
require "rspec/core/rake_task"
|
3
2
|
require "rake/clean"
|
4
3
|
require "rake/extensiontask"
|
4
|
+
require "rake_compiler_dock"
|
5
5
|
|
6
6
|
require "rubygems"
|
7
7
|
require "rubygems/package_task"
|
8
8
|
|
9
|
-
|
9
|
+
# ++ Allow rake-compiler-dock configuration without dev. dependencies
|
10
|
+
begin
|
11
|
+
require "rubocop/rake_task"
|
12
|
+
RuboCop::RakeTask.new
|
13
|
+
rescue LoadError
|
14
|
+
end
|
15
|
+
|
16
|
+
begin
|
17
|
+
require "rspec/core/rake_task"
|
18
|
+
RSpec::Core::RakeTask.new(:spec)
|
19
|
+
rescue LoadError
|
20
|
+
end
|
21
|
+
# -- Allow rake-compiler-dock configuration without dev. dependencies
|
10
22
|
|
11
|
-
|
12
|
-
|
23
|
+
R_CC_V = "RUBY_CC_VERSION=3.1.0:3.0.0:2.7.0".freeze
|
24
|
+
bundler_ver = ENV["BUNDLER_VER"] || "2.3.22"
|
13
25
|
|
14
26
|
task default: :spec
|
15
27
|
task spec: :compile
|
16
28
|
|
17
29
|
spec = Gem::Specification.load("extract_ttc.gemspec")
|
18
30
|
|
31
|
+
ext_thru_rc_dock = %w[x86_64-linux aarch64-linux] +
|
32
|
+
%w[x64-mingw32 x64-mingw-ucrt x86_64-darwin arm64-darwin]
|
33
|
+
|
34
|
+
ext_thru_musl_cc = %w[x86_64-linux-musl aarch64-linux-musl]
|
35
|
+
|
19
36
|
# add your default gem packing task
|
20
37
|
Gem::PackageTask.new(spec) do |pkg|
|
21
38
|
end
|
@@ -28,11 +45,64 @@ module FixRequiredRubyVersion
|
|
28
45
|
end
|
29
46
|
Gem::Specification.prepend(FixRequiredRubyVersion)
|
30
47
|
|
31
|
-
Rake::ExtensionTask.new("stripttc", spec) do |ext|
|
48
|
+
exttask = Rake::ExtensionTask.new("stripttc", spec) do |ext|
|
32
49
|
ext.lib_dir = "lib"
|
33
50
|
ext.cross_compile = true
|
34
|
-
ext.cross_platform =
|
51
|
+
ext.cross_platform = ext_thru_rc_dock + ext_thru_musl_cc
|
35
52
|
ext.cross_compiling do |s|
|
36
53
|
s.files.reject! { |path| File.fnmatch?("ext/*", path) }
|
37
54
|
end
|
38
55
|
end
|
56
|
+
|
57
|
+
namespace "gem" do
|
58
|
+
desc "Cache dependencies"
|
59
|
+
task "cache" do
|
60
|
+
sh <<~RCD
|
61
|
+
bundle config set cache_all true &&
|
62
|
+
bundle config set --local without 'development' &&
|
63
|
+
bundle package
|
64
|
+
RCD
|
65
|
+
end
|
66
|
+
|
67
|
+
desc "build native gems with rake-compiler-dock"
|
68
|
+
task "native" => "cache" do
|
69
|
+
ext_thru_rc_dock.each do |plat|
|
70
|
+
RakeCompilerDock.sh <<~RCD, platform: plat
|
71
|
+
gem install bundler:#{bundler_ver} --no-document &&
|
72
|
+
bundle install --local &&
|
73
|
+
bundle exec rake native:#{plat} gem #{R_CC_V}
|
74
|
+
RCD
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
namespace "gem" do
|
80
|
+
ext_thru_rc_dock.each do |plat|
|
81
|
+
desc "Build native gems with rake-compiler-dock in parallel"
|
82
|
+
multitask "parallel" => plat
|
83
|
+
|
84
|
+
desc "Build the native gem for #{plat}"
|
85
|
+
task plat => "cache" do
|
86
|
+
RakeCompilerDock.sh <<~RCD, platform: plat
|
87
|
+
gem install bundler:#{bundler_ver} --no-document &&
|
88
|
+
bundle install --local &&
|
89
|
+
bundle exec rake native:#{plat} \
|
90
|
+
pkg/#{exttask.gem_spec.full_name}-#{plat}.gem \
|
91
|
+
#{R_CC_V}
|
92
|
+
RCD
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
ext_thru_musl_cc.each do |plat|
|
97
|
+
desc "Define the gem task to build on the #{plat} platform (binary gem)"
|
98
|
+
task plat do
|
99
|
+
s = spec.dup
|
100
|
+
s.platform = Gem::Platform.new(plat)
|
101
|
+
s.files += Dir.glob("lib/extract_ttc/*.{dll,so,dylib}")
|
102
|
+
s.extensions = []
|
103
|
+
|
104
|
+
task = Gem::PackageTask.new(s)
|
105
|
+
task.define
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
data/extract_ttc.gemspec
CHANGED
@@ -26,10 +26,11 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.require_paths = ["lib"]
|
27
27
|
|
28
28
|
spec.add_runtime_dependency "ffi", "~> 1.0"
|
29
|
+
spec.add_runtime_dependency "bundler", '~> 2.3', '>= 2.3.22'
|
30
|
+
spec.add_runtime_dependency "rake", "~> 13"
|
31
|
+
spec.add_runtime_dependency "rake-compiler", "~> 1.2"
|
32
|
+
spec.add_runtime_dependency "rake-compiler-dock", "~> 1.2"
|
29
33
|
|
30
|
-
spec.add_development_dependency "bundler", "~> 2.0"
|
31
|
-
spec.add_development_dependency "rake", "~> 13"
|
32
|
-
spec.add_development_dependency "rake-compiler", "~> 1"
|
33
34
|
spec.add_development_dependency "rspec", "~> 3.0"
|
34
35
|
spec.add_development_dependency "rubocop", "~> 1.5"
|
35
36
|
spec.add_development_dependency "rubocop-performance", "~> 1.10"
|
data/lib/2.7/stripttc.so
ADDED
Binary file
|
data/lib/3.0/stripttc.so
ADDED
Binary file
|
data/lib/3.1/stripttc.so
ADDED
Binary file
|
data/lib/extract_ttc/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: extract_ttc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: x86_64-linux
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-09-
|
11
|
+
date: 2022-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
@@ -30,14 +30,20 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '2.
|
34
|
-
|
33
|
+
version: '2.3'
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 2.3.22
|
37
|
+
type: :runtime
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
41
|
- - "~>"
|
39
42
|
- !ruby/object:Gem::Version
|
40
|
-
version: '2.
|
43
|
+
version: '2.3'
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 2.3.22
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: rake
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,7 +51,7 @@ dependencies:
|
|
45
51
|
- - "~>"
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: '13'
|
48
|
-
type: :
|
54
|
+
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
@@ -58,14 +64,28 @@ dependencies:
|
|
58
64
|
requirements:
|
59
65
|
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1'
|
62
|
-
type: :
|
67
|
+
version: '1.2'
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '1.2'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: rake-compiler-dock
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '1.2'
|
82
|
+
type: :runtime
|
63
83
|
prerelease: false
|
64
84
|
version_requirements: !ruby/object:Gem::Requirement
|
65
85
|
requirements:
|
66
86
|
- - "~>"
|
67
87
|
- !ruby/object:Gem::Version
|
68
|
-
version: '1'
|
88
|
+
version: '1.2'
|
69
89
|
- !ruby/object:Gem::Dependency
|
70
90
|
name: rspec
|
71
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -139,14 +159,12 @@ files:
|
|
139
159
|
- bin/console
|
140
160
|
- bin/rspec
|
141
161
|
- bin/setup
|
142
|
-
- ext/stripttc/LICENSE
|
143
|
-
- ext/stripttc/dummy.c
|
144
|
-
- ext/stripttc/extconf.rb
|
145
|
-
- ext/stripttc/stripttc.c
|
146
162
|
- extract_ttc.gemspec
|
163
|
+
- lib/2.7/stripttc.so
|
164
|
+
- lib/3.0/stripttc.so
|
165
|
+
- lib/3.1/stripttc.so
|
147
166
|
- lib/extract_ttc.rb
|
148
167
|
- lib/extract_ttc/version.rb
|
149
|
-
- lib/stripttc.so
|
150
168
|
homepage: https://github.com/fontist/extract_ttc
|
151
169
|
licenses:
|
152
170
|
- BSD-3-Clause
|
@@ -155,7 +173,7 @@ metadata:
|
|
155
173
|
source_code_uri: https://github.com/fontist/extract_ttc
|
156
174
|
changelog_uri: https://github.com/fontist/extract_ttc
|
157
175
|
rubygems_mfa_required: 'false'
|
158
|
-
post_install_message:
|
176
|
+
post_install_message:
|
159
177
|
rdoc_options: []
|
160
178
|
require_paths:
|
161
179
|
- lib
|
@@ -170,8 +188,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
170
188
|
- !ruby/object:Gem::Version
|
171
189
|
version: '0'
|
172
190
|
requirements: []
|
173
|
-
rubygems_version: 3.
|
174
|
-
signing_key:
|
191
|
+
rubygems_version: 3.3.4
|
192
|
+
signing_key:
|
175
193
|
specification_version: 4
|
176
194
|
summary: Extract TTC file to TTF files
|
177
195
|
test_files: []
|
data/ext/stripttc/LICENSE
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
BSD 3-Clause License for stripttc.c
|
2
|
-
|
3
|
-
Copyright (c) George Williams and FontForge authors. All rights reserved.
|
4
|
-
https://github.com/fontforge/fontforge/blob/master/AUTHORS
|
5
|
-
|
6
|
-
Redistribution and use in source and binary forms, with or without
|
7
|
-
modification, are permitted provided that the following conditions
|
8
|
-
are met:
|
9
|
-
|
10
|
-
Redistributions of source code must retain the above copyright
|
11
|
-
notice, this list of conditions and the following disclaimer.
|
12
|
-
|
13
|
-
Redistributions in binary form must reproduce the above copyright
|
14
|
-
notice, this list of conditions and the following disclaimer in the
|
15
|
-
documentation and/or other materials provided with the distribution.
|
16
|
-
|
17
|
-
The name of the author may not be used to endorse or promote
|
18
|
-
products derived from this software without specific prior written
|
19
|
-
permission.
|
20
|
-
|
21
|
-
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS
|
22
|
-
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
23
|
-
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
24
|
-
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
25
|
-
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
26
|
-
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
27
|
-
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
28
|
-
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
29
|
-
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
30
|
-
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
31
|
-
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/ext/stripttc/dummy.c
DELETED
data/ext/stripttc/extconf.rb
DELETED
data/ext/stripttc/stripttc.c
DELETED
@@ -1,187 +0,0 @@
|
|
1
|
-
#include <stdio.h>
|
2
|
-
#include <stdlib.h>
|
3
|
-
#include <string.h>
|
4
|
-
#include <libgen.h>
|
5
|
-
|
6
|
-
/* This program takes a ttc file and turns it into its component ttf files */
|
7
|
-
/* This makes two changes to the data: */
|
8
|
-
/* * The tables are placed at different offsets, therefore */
|
9
|
-
/* the offset fields in the table header are also different. */
|
10
|
-
/* * the 'head' table checksumAdjustment field is set correctly */
|
11
|
-
|
12
|
-
#define CHR(ch1,ch2,ch3,ch4) (((ch1)<<24)|((ch2)<<16)|((ch3)<<8)|(ch4))
|
13
|
-
|
14
|
-
#ifdef _WIN32
|
15
|
-
#define EXPORT_API __declspec(dllexport)
|
16
|
-
#else
|
17
|
-
#define EXPORT_API
|
18
|
-
#endif
|
19
|
-
|
20
|
-
static void putshort(FILE *file,int sval) {
|
21
|
-
putc((sval>>8)&0xff,file);
|
22
|
-
putc(sval&0xff,file);
|
23
|
-
}
|
24
|
-
|
25
|
-
static void putlong(FILE *file,int val) {
|
26
|
-
putc((val>>24)&0xff,file);
|
27
|
-
putc((val>>16)&0xff,file);
|
28
|
-
putc((val>>8)&0xff,file);
|
29
|
-
putc(val&0xff,file);
|
30
|
-
}
|
31
|
-
|
32
|
-
static int getushort(FILE *ttf) {
|
33
|
-
int ch1 = getc(ttf);
|
34
|
-
int ch2 = getc(ttf);
|
35
|
-
if ( ch2==EOF )
|
36
|
-
return( EOF );
|
37
|
-
return( (ch1<<8)|ch2 );
|
38
|
-
}
|
39
|
-
|
40
|
-
static int getlong(FILE *ttf) {
|
41
|
-
int ch1 = getc(ttf);
|
42
|
-
int ch2 = getc(ttf);
|
43
|
-
int ch3 = getc(ttf);
|
44
|
-
int ch4 = getc(ttf);
|
45
|
-
if ( ch4==EOF )
|
46
|
-
return( EOF );
|
47
|
-
return( (ch1<<24)|(ch2<<16)|(ch3<<8)|ch4 );
|
48
|
-
}
|
49
|
-
|
50
|
-
static unsigned int filecheck(FILE *file) {
|
51
|
-
unsigned int sum = 0, chunk;
|
52
|
-
|
53
|
-
rewind(file);
|
54
|
-
while ( 1 ) {
|
55
|
-
chunk = getlong(file);
|
56
|
-
if ( feof(file) || ferror(file))
|
57
|
-
break;
|
58
|
-
sum += chunk;
|
59
|
-
}
|
60
|
-
return( sum );
|
61
|
-
}
|
62
|
-
|
63
|
-
static void copytable(FILE *ttf,FILE *ttc,int offset,int length) {
|
64
|
-
int i, ch;
|
65
|
-
|
66
|
-
fseek(ttc,offset,SEEK_SET);
|
67
|
-
for ( i=0; i<length && (ch=getc(ttc))!=EOF ; ++i )
|
68
|
-
putc(ch,ttf);
|
69
|
-
if ( ch==EOF )
|
70
|
-
fprintf( stderr, "File ended before table\n" );
|
71
|
-
if ( length&1 ) {
|
72
|
-
putc('\0',ttf);
|
73
|
-
++length;
|
74
|
-
}
|
75
|
-
if ( length & 2 ) {
|
76
|
-
putshort(ttf,0);
|
77
|
-
}
|
78
|
-
}
|
79
|
-
|
80
|
-
static int handlefont(char *filename,int which,FILE *ttc,int offset) {
|
81
|
-
char outfile[2000], *pt;
|
82
|
-
FILE *ttf;
|
83
|
-
int i, cnt, *offsets, *lengths, head, tag, pos, headpos;
|
84
|
-
strcpy(outfile,basename(filename));
|
85
|
-
pt = strrchr(outfile,'.');
|
86
|
-
if ( pt==NULL )
|
87
|
-
pt = outfile + strlen(outfile);
|
88
|
-
sprintf( pt, "_%02d.ttf", which );
|
89
|
-
|
90
|
-
ttf = fopen( outfile,"wb");
|
91
|
-
if ( ttf==NULL ) {
|
92
|
-
fprintf( stderr, "Failed to open %s for output.\n", outfile );
|
93
|
-
return( -3 );
|
94
|
-
}
|
95
|
-
printf ( "%s ", outfile );
|
96
|
-
|
97
|
-
fseek(ttc,offset,SEEK_SET);
|
98
|
-
putlong(ttf,getlong(ttc)); /* sfnt version */
|
99
|
-
putshort(ttf,cnt = getushort(ttc)); /* table cnt */
|
100
|
-
putshort(ttf,getushort(ttc)); /* binary search header */
|
101
|
-
putshort(ttf,getushort(ttc));
|
102
|
-
putshort(ttf,getushort(ttc));
|
103
|
-
|
104
|
-
offsets = malloc(cnt*sizeof(int));
|
105
|
-
lengths = malloc(cnt*sizeof(int));
|
106
|
-
head = -1;
|
107
|
-
for ( i=0; i<cnt; ++i ) {
|
108
|
-
tag = getlong(ttc);
|
109
|
-
if ( tag==CHR('h','e','a','d'))
|
110
|
-
head = i;
|
111
|
-
putlong(ttf,tag);
|
112
|
-
putlong(ttf,getlong(ttc)); /* checksum */
|
113
|
-
putlong(ttf,offsets[i] = getlong(ttc)); /* Reserve space for offset, will fix later */
|
114
|
-
putlong(ttf,lengths[i] = getlong(ttc));
|
115
|
-
}
|
116
|
-
headpos = -1;
|
117
|
-
for ( i=0; i<cnt; ++i ) {
|
118
|
-
pos = ftell(ttf);
|
119
|
-
copytable(ttf,ttc,offsets[i],lengths[i]);
|
120
|
-
if ( i==head ) {
|
121
|
-
fseek(ttf,pos+8,SEEK_SET);
|
122
|
-
putlong(ttf,0);
|
123
|
-
headpos = pos;
|
124
|
-
}
|
125
|
-
fseek(ttf,12+i*16+8,SEEK_SET);
|
126
|
-
putlong(ttf,pos); /* Fix offset here */
|
127
|
-
fseek(ttf,0,SEEK_END);
|
128
|
-
}
|
129
|
-
if ( headpos!=-1 ) {
|
130
|
-
unsigned int checksum;
|
131
|
-
checksum = filecheck(ttf);
|
132
|
-
checksum = 0xb1b0afba-checksum;
|
133
|
-
fseek(ttf,headpos+2*sizeof(int),SEEK_SET);
|
134
|
-
putlong(ttf,checksum);
|
135
|
-
}
|
136
|
-
fclose(ttf);
|
137
|
-
free(offsets); free(lengths);
|
138
|
-
return( 0 );
|
139
|
-
}
|
140
|
-
|
141
|
-
EXPORT_API int handlefile(char *filename) {
|
142
|
-
FILE *ttc = fopen(filename,"rb");
|
143
|
-
int version, cnt, e, i;
|
144
|
-
int *offsets;
|
145
|
-
|
146
|
-
if ( ttc==NULL ) {
|
147
|
-
fprintf( stderr, "Could not open %s\n", filename );
|
148
|
-
return( -1 );
|
149
|
-
}
|
150
|
-
|
151
|
-
version = getlong(ttc);
|
152
|
-
if ( version!=CHR('t','t','c','f')) {
|
153
|
-
fprintf( stderr, "%s does not look like a ttc file, bad version.\n", filename );
|
154
|
-
fclose(ttc);
|
155
|
-
return( -2 );
|
156
|
-
}
|
157
|
-
|
158
|
-
version = getlong(ttc);
|
159
|
-
if ( version!=0x10000 && version != 0x20000 )
|
160
|
-
fprintf( stderr, "Unexpected ttc version number: %08x\n", (unsigned int)(version) );
|
161
|
-
cnt = getlong(ttc);
|
162
|
-
offsets = malloc(cnt*sizeof(int));
|
163
|
-
for ( i=0; i<cnt; ++i )
|
164
|
-
offsets[i] = getlong(ttc);
|
165
|
-
printf( "%s => ", filename );
|
166
|
-
for ( i=0; i<cnt; ++i )
|
167
|
-
if ( (e = handlefont(filename,i,ttc,offsets[i])) ) {
|
168
|
-
fflush(stdout);
|
169
|
-
fclose(ttc);
|
170
|
-
free(offsets);
|
171
|
-
return( e );
|
172
|
-
};
|
173
|
-
printf( "\n" );
|
174
|
-
fflush(stdout);
|
175
|
-
fclose(ttc);
|
176
|
-
free(offsets);
|
177
|
-
return( 0 );
|
178
|
-
}
|
179
|
-
|
180
|
-
int main(int argc, char *argv[]) {
|
181
|
-
int e, i;
|
182
|
-
|
183
|
-
for ( i=1; i<argc; ++i )
|
184
|
-
if ( (e = handlefile(argv[i])) )
|
185
|
-
return( e );
|
186
|
-
return( 0 );
|
187
|
-
}
|
data/lib/stripttc.so
DELETED
Binary file
|