ttfunk 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 177f0f3efc15ab66c0ea79eb2487cf99c490ba6c
4
- data.tar.gz: 7626c05ec3d7e39f747ad0d057ad9b7deef0953a
3
+ metadata.gz: 78159985ca295665778e7a61bc86f5fb60e64576
4
+ data.tar.gz: f4c79101f0f684003183e32d9251ca96c3e72222
5
5
  SHA512:
6
- metadata.gz: cc35b7fecf4001efabab23ddbac642f852506ed574c9d2a1ebcb54fd03f7b70819d3de3ca81b711116564eb8ea91dfa01f649ca6d244598d8d1048077bd534be
7
- data.tar.gz: 92a5ad612492679643e34e5c231b9de256afb0a5f3c7cf1d178c0f6f3f5e68bc108a35cf773675ad02da000b233bc9b370b0a43763080135e02248801859cfa9
6
+ metadata.gz: 6b7fa90240e932b32b7f8e5423783bdc295856a3154ac42be83606d5a67cf466f0fab02bcdd2a6a60f5297d69adfcd7fe25f0d7b542fd81500710b1b2a1a8203
7
+ data.tar.gz: 9d66adee4258dec0600aa5fb76838f583872aaec2d6ef6772b13596f4b1bda9af1370f50123af195f38bb67accb48e10925ba6542a538d730e80395a6a92f05a
@@ -106,7 +106,11 @@ module TTFunk
106
106
  def glyph_outlines
107
107
  @glyph_outlines ||= TTFunk::Table::Glyf.new(self)
108
108
  end
109
- end
109
+
110
+ def sbix
111
+ @sbix ||= TTFunk::Table::Sbix.new(self)
112
+ end
113
+ end
110
114
  end
111
115
 
112
116
  require_relative "ttfunk/table/cmap"
@@ -120,3 +124,4 @@ require_relative "ttfunk/table/maxp"
120
124
  require_relative "ttfunk/table/name"
121
125
  require_relative "ttfunk/table/os2"
122
126
  require_relative "ttfunk/table/post"
127
+ require_relative "ttfunk/table/sbix"
@@ -0,0 +1,54 @@
1
+ require_relative '../table'
2
+
3
+ module TTFunk
4
+ class Table
5
+ class Sbix < Table
6
+ attr_reader :version
7
+ attr_reader :flags
8
+ attr_reader :num_strikes
9
+ attr_reader :strikes
10
+
11
+ BitmapData = Struct.new(:x, :y, :type, :data, :ppem, :resolution)
12
+
13
+ def bitmap_data_for(glyph_id, strike_index)
14
+ strike = strikes[strike_index]
15
+ return if strike.nil?
16
+
17
+ glyph_offset = strike[:glyph_data_offset][glyph_id]
18
+ next_glyph_offset = strike[:glyph_data_offset][glyph_id + 1]
19
+
20
+ if glyph_offset && next_glyph_offset
21
+ bytes = next_glyph_offset - glyph_offset
22
+ if bytes > 0
23
+ parse_from(offset + strike[:offset] + glyph_offset) do
24
+ x, y, type = read(8, "s2A4")
25
+ data = StringIO.new(io.read(bytes - 8))
26
+ BitmapData.new(x, y, type, data, strike[:ppem], strike[:resolution])
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ def all_bitmap_data_for(glyph_id)
33
+ strikes.each_index.map do |strike_index|
34
+ bitmap_data_for(glyph_id, strike_index)
35
+ end.compact
36
+ end
37
+
38
+ private
39
+
40
+ def parse!
41
+ @version, @flags, @num_strikes = read(8, "n2N")
42
+ strike_offsets = num_strikes.times.map { read(4, "N").first }
43
+
44
+ @strikes = strike_offsets.map do |strike_offset|
45
+ parse_from(offset + strike_offset) do
46
+ ppem, resolution = read(4, "n2")
47
+ data_offsets = (file.maximum_profile.num_glyphs + 1).times.map { read(4, "N").first }
48
+ { ppem: ppem, resolution: resolution, offset: strike_offset, glyph_data_offset: data_offsets }
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ttfunk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregory Brown
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2014-09-10 00:00:00.000000000 Z
15
+ date: 2014-09-21 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rdoc
@@ -127,6 +127,7 @@ files:
127
127
  - lib/ttfunk/table/post/format20.rb
128
128
  - lib/ttfunk/table/post/format30.rb
129
129
  - lib/ttfunk/table/post/format40.rb
130
+ - lib/ttfunk/table/sbix.rb
130
131
  - lib/ttfunk/table/simple.rb
131
132
  homepage:
132
133
  licenses: []