glyph_imager 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. data/VERSION +1 -1
  2. data/glyph_imager.gemspec +1 -1
  3. data/lib/glyph_imager.rb +3 -3
  4. data/test/test_glyph_imager.rb +1 -0
  5. data/vendor/ttf-ruby-0.1/README +1 -1
  6. data/vendor/ttf-ruby-0.1/lib/ttf/encodings.rb +1 -1
  7. data/vendor/ttf-ruby-0.1/lib/ttf/exceptions.rb +1 -1
  8. data/vendor/ttf-ruby-0.1/lib/ttf/font_loader.rb +44 -44
  9. data/vendor/ttf-ruby-0.1/lib/ttf/fontchunk.rb +2 -2
  10. data/vendor/ttf-ruby-0.1/lib/ttf/table/cmap.rb +8 -8
  11. data/vendor/ttf-ruby-0.1/lib/ttf/table/cvt.rb +2 -2
  12. data/vendor/ttf-ruby-0.1/lib/ttf/table/fpgm.rb +2 -2
  13. data/vendor/ttf-ruby-0.1/lib/ttf/table/gasp.rb +3 -3
  14. data/vendor/ttf-ruby-0.1/lib/ttf/table/glyf.rb +6 -6
  15. data/vendor/ttf-ruby-0.1/lib/ttf/table/head.rb +2 -2
  16. data/vendor/ttf-ruby-0.1/lib/ttf/table/hhea.rb +2 -2
  17. data/vendor/ttf-ruby-0.1/lib/ttf/table/hmtx.rb +2 -2
  18. data/vendor/ttf-ruby-0.1/lib/ttf/table/kern.rb +3 -3
  19. data/vendor/ttf-ruby-0.1/lib/ttf/table/loca.rb +8 -8
  20. data/vendor/ttf-ruby-0.1/lib/ttf/table/maxp.rb +2 -2
  21. data/vendor/ttf-ruby-0.1/lib/ttf/table/name.rb +8 -4
  22. data/vendor/ttf-ruby-0.1/lib/ttf/table/os2.rb +2 -2
  23. data/vendor/ttf-ruby-0.1/lib/ttf/table/post.rb +2 -2
  24. data/vendor/ttf-ruby-0.1/lib/ttf/table/prep.rb +1 -1
  25. data/vendor/ttf-ruby-0.1/lib/ttf/table/vhea.rb +1 -1
  26. data/vendor/ttf-ruby-0.1/lib/ttf/table/vmtx.rb +1 -1
  27. data/vendor/ttf-ruby-0.1/tools/ttfcairoglyphviewer +2 -2
  28. data/vendor/ttf-ruby-0.1/tools/ttfdump +13 -13
  29. data/vendor/ttf-ruby-0.1/tools/ttfglyph2svg +2 -2
  30. data/vendor/ttf-ruby-0.1/tools/ttfsubset +13 -13
  31. metadata +2 -2
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.7
data/glyph_imager.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{glyph_imager}
8
- s.version = "0.0.5"
8
+ s.version = "0.0.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["William Melody"]
data/lib/glyph_imager.rb CHANGED
@@ -46,12 +46,12 @@ module GlyphImager
46
46
 
47
47
  @@metadata_ids.each do |m|
48
48
  define_method(m) do
49
- name_table.name_records[@@metadata_ids.index(m)].to_s
49
+ name_table.find_record_by_id(@@metadata_ids.index(m)).to_s
50
50
  end
51
51
  end
52
52
 
53
53
  def initialize(filename)
54
- @font = Font::TTF::FontLoader.new(filename)
54
+ @font = TTFFont::TTF::FontLoader.new(filename)
55
55
  end
56
56
 
57
57
  def font
@@ -64,7 +64,7 @@ module GlyphImager
64
64
 
65
65
  def get_encoding_table4
66
66
  @enc_tbl ||= @font.get_table(:cmap).encoding_tables.find do |t|
67
- t.class == Font::TTF::Table::Cmap::EncodingTable4
67
+ t.class == TTFFont::TTF::Table::Cmap::EncodingTable4
68
68
  end
69
69
  end
70
70
 
@@ -21,6 +21,7 @@ class TestGlyphImager < Test::Unit::TestCase
21
21
  should "return font metadata" do
22
22
  assert_equal "DejaVu Serif", @font.full_font_name
23
23
  assert_equal "Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved.\nDejaVu changes are in public domain\n", @font.copyright_notice
24
+ assert_equal "DejaVu fonts team", @font.manufacturer_name
24
25
  end
25
26
 
26
27
  should "return true when glyph exists for character" do
@@ -35,7 +35,7 @@ Install
35
35
  Documentation
36
36
  -------------
37
37
 
38
- $ rdoc --main "Font::TTF::File"
38
+ $ rdoc --main "TTFFont::TTF::File"
39
39
 
40
40
  Tools
41
41
  -----
@@ -15,7 +15,7 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Encodings
21
21
 
@@ -15,7 +15,7 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
 
21
21
  class MalformedFont < Exception
@@ -38,7 +38,7 @@ require 'ttf/table/prep'
38
38
  require 'ttf/table/vhea'
39
39
  require 'ttf/table/vmtx'
40
40
 
41
- module Font
41
+ module TTFFont
42
42
  module TTF
43
43
  # TTF/Ruby is a library to read and write TrueType fonts in Ruby.
44
44
  #
@@ -46,12 +46,12 @@ module TTF
46
46
  # Copyright:: Copyright (c) 2006 Mathieu Blondel
47
47
  # License:: GPL
48
48
  #
49
- # This Font::TTF::File class is TTF/Ruby's main class and is a subclass
49
+ # This TTFFont::TTF::File class is TTF/Ruby's main class and is a subclass
50
50
  # of Ruby's File class. Here is some sample code:
51
51
  #
52
52
  # require 'ttf'
53
53
  #
54
- # font = Font::TTF::File.new("copy.ttf")
54
+ # font = TTFFont::TTF::File.new("copy.ttf")
55
55
  #
56
56
  # cmap_tbl = font.get_table(:cmap)
57
57
  # enc_tbl4 = cmap_tbl.encoding_tables.find { |t| t.format == 4 }
@@ -69,29 +69,29 @@ module TTF
69
69
  #
70
70
  # Here are the tables and their associated Symbol:
71
71
  #
72
- # * :cmap => Font::TTF::Table::Cmap
73
- # * :cvt => Font::TTF::Table::Cvt
74
- # * :fpgm => Font::TTF::Table::Fpgm
75
- # * :gasp => Font::TTF::Table::Gasp
76
- # * :glyf => Font::TTF::Table::Glyf
77
- # * :head => Font::TTF::Table::Head
78
- # * :hhea => Font::TTF::Table::Hhea
79
- # * :hmtx => Font::TTF::Table::Hmtx
80
- # * :kern => Font::TTF::Table::Kern
81
- # * :loca => Font::TTF::Table::Loca
82
- # * :maxp => Font::TTF::Table::Maxp
83
- # * :name => Font::TTF::Table::Name
84
- # * :"OS/2" => Font::TTF::Table::OS2
85
- # * :post => Font::TTF::Table::Post
86
- # * :prep => Font::TTF::Table::Prep
87
- # * :vhea => Font::TTF::Table::Vhea
88
- # * :vmtx => Font::TTF::Table::Vmtx
72
+ # * :cmap => TTFFont::TTF::Table::Cmap
73
+ # * :cvt => TTFFont::TTF::Table::Cvt
74
+ # * :fpgm => TTFFont::TTF::Table::Fpgm
75
+ # * :gasp => TTFFont::TTF::Table::Gasp
76
+ # * :glyf => TTFFont::TTF::Table::Glyf
77
+ # * :head => TTFFont::TTF::Table::Head
78
+ # * :hhea => TTFFont::TTF::Table::Hhea
79
+ # * :hmtx => TTFFont::TTF::Table::Hmtx
80
+ # * :kern => TTFFont::TTF::Table::Kern
81
+ # * :loca => TTFFont::TTF::Table::Loca
82
+ # * :maxp => TTFFont::TTF::Table::Maxp
83
+ # * :name => TTFFont::TTF::Table::Name
84
+ # * :"OS/2" => TTFFont::TTF::Table::OS2
85
+ # * :post => TTFFont::TTF::Table::Post
86
+ # * :prep => TTFFont::TTF::Table::Prep
87
+ # * :vhea => TTFFont::TTF::Table::Vhea
88
+ # * :vmtx => TTFFont::TTF::Table::Vmtx
89
89
  #
90
90
  # Of course, you may modify attributes and generate a new font file.
91
91
  #
92
92
  # require "ttf"
93
93
  #
94
- # font = Font::TTF::File.new("file.ttf", "w")
94
+ # font = TTFFont::TTF::File.new("file.ttf", "w")
95
95
  # name_tbl = font.get_table(:name)
96
96
  # nr = name_tbl.name_records[0]
97
97
  # nr.utf8_str = "blablabla"
@@ -99,23 +99,23 @@ module TTF
99
99
  #
100
100
  class FontLoader < File
101
101
 
102
- TABLES = {:cmap => Font::TTF::Table::Cmap,
103
- :cvt => Font::TTF::Table::Cvt,
104
- :fpgm => Font::TTF::Table::Fpgm,
105
- :gasp => Font::TTF::Table::Gasp,
106
- :glyf => Font::TTF::Table::Glyf,
107
- :head => Font::TTF::Table::Head,
108
- :hhea => Font::TTF::Table::Hhea,
109
- :hmtx => Font::TTF::Table::Hmtx,
110
- :kern => Font::TTF::Table::Kern,
111
- :loca => Font::TTF::Table::Loca,
112
- :maxp => Font::TTF::Table::Maxp,
113
- :name => Font::TTF::Table::Name,
114
- :"OS/2" => Font::TTF::Table::OS2,
115
- :post => Font::TTF::Table::Post,
116
- :prep => Font::TTF::Table::Prep,
117
- :vhea => Font::TTF::Table::Vhea,
118
- :vmtx => Font::TTF::Table::Vmtx}
102
+ TABLES = {:cmap => TTFFont::TTF::Table::Cmap,
103
+ :cvt => TTFFont::TTF::Table::Cvt,
104
+ :fpgm => TTFFont::TTF::Table::Fpgm,
105
+ :gasp => TTFFont::TTF::Table::Gasp,
106
+ :glyf => TTFFont::TTF::Table::Glyf,
107
+ :head => TTFFont::TTF::Table::Head,
108
+ :hhea => TTFFont::TTF::Table::Hhea,
109
+ :hmtx => TTFFont::TTF::Table::Hmtx,
110
+ :kern => TTFFont::TTF::Table::Kern,
111
+ :loca => TTFFont::TTF::Table::Loca,
112
+ :maxp => TTFFont::TTF::Table::Maxp,
113
+ :name => TTFFont::TTF::Table::Name,
114
+ :"OS/2" => TTFFont::TTF::Table::OS2,
115
+ :post => TTFFont::TTF::Table::Post,
116
+ :prep => TTFFont::TTF::Table::Prep,
117
+ :vhea => TTFFont::TTF::Table::Vhea,
118
+ :vmtx => TTFFont::TTF::Table::Vmtx}
119
119
 
120
120
  DIR_ENTRY_SIZE = 4 * IO::SIZEOF_ULONG
121
121
 
@@ -124,7 +124,7 @@ class FontLoader < File
124
124
 
125
125
  attr_writer :version, :search_range, :entry_selector, :range_shift
126
126
 
127
- # Font::TTF::File being a subclass of Ruby's File class, you may
127
+ # TTFFont::TTF::File being a subclass of Ruby's File class, you may
128
128
  # create new objects with the same parameters as Ruby's File class.
129
129
  #
130
130
  # But you may also create new objects without parameters in case you want
@@ -167,7 +167,7 @@ class FontLoader < File
167
167
  end
168
168
 
169
169
  # Returns table associated with tag tbl_tag. It may return one of
170
- # Font::TTF::Table::* object or a Font::TTF::FontChunk object if the
170
+ # TTFFont::TTF::Table::* object or a TTFFont::TTF::FontChunk object if the
171
171
  # table is not implemented yet by ttf-ruby.
172
172
  #
173
173
  # The table returned is kept internally so that every future call to
@@ -185,7 +185,7 @@ class FontLoader < File
185
185
  @tables[tbl_tag] = \
186
186
  TABLES[tbl_tag].new(self, tbli[:offset], tbli[:len])
187
187
  else
188
- Font::TTF::FontChunk.new(self, tbli[:offset], tbli[:len])
188
+ TTFFont::TTF::FontChunk.new(self, tbli[:offset], tbli[:len])
189
189
  end
190
190
  end
191
191
 
@@ -200,7 +200,7 @@ class FontLoader < File
200
200
  if TABLES.include? tbl_tag
201
201
  TABLES[tbl_tag].new(self)
202
202
  else
203
- Font::TTF::FontChunk.new(self)
203
+ TTFFont::TTF::FontChunk.new(self)
204
204
  end
205
205
  end
206
206
 
@@ -222,7 +222,7 @@ class FontLoader < File
222
222
  private :table_list_update!
223
223
 
224
224
  # Adds tbl to font. tbl is a table object
225
- # (e.g. an instance of Font::TTF::Table::Loca).
225
+ # (e.g. an instance of TTFFont::TTF::Table::Loca).
226
226
  def set_table(tbl)
227
227
  tbl_tag = tbl.tag
228
228
 
@@ -234,7 +234,7 @@ class FontLoader < File
234
234
  end
235
235
 
236
236
  # Removes tbl from font. tbl may be a Symbol (e.g. :loca for the loca table)
237
- # or a table object (e.g. an instance of Font::TTF::Table::Loca).
237
+ # or a table object (e.g. an instance of TTFFont::TTF::Table::Loca).
238
238
  def unset_table(tbl)
239
239
  if tbl.kind_of? Symbol
240
240
  tbl_tag = tbl
@@ -15,7 +15,7 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
 
21
21
  # A FontChunk is a portion of font. It starts at an offset and has a given
@@ -36,7 +36,7 @@ class FontChunk
36
36
 
37
37
  # Returns the end of the class name as a Symbol.
38
38
  # Will be useful for tables, which are subclasses of FontChunk.
39
- # For example, calling tag on Font::TTF:Table::Loca object will return
39
+ # For example, calling tag on TTFFont::TTF:Table::Loca object will return
40
40
  # :loca.
41
41
  def tag
42
42
  t = self.class.name.split("::").last.downcase.to_sym
@@ -15,16 +15,16 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
22
22
  # Cmap is the character to glyph index mapping table.
23
- class Cmap < Font::TTF::FontChunk
23
+ class Cmap < TTFFont::TTF::FontChunk
24
24
 
25
25
  # Base class for encoding table classes. It provides attributes which are
26
26
  # common to those classes such as platform_id and encoding_id.
27
- class EncodingTable < Font::TTF::FontChunk
27
+ class EncodingTable < TTFFont::TTF::FontChunk
28
28
 
29
29
  attr_accessor :table, :platform_id, :encoding_id, :offset_from_table
30
30
 
@@ -44,9 +44,9 @@ class Cmap < Font::TTF::FontChunk
44
44
  end
45
45
 
46
46
  def unicode?
47
- @platform_id == Font::TTF::Encodings::Platform::UNICODE or \
48
- (@platform_id == Font::TTF::Encodings::Platform::MICROSOFT and \
49
- @encoding_id == Font::TTF::Encodings::MicrosoftEncoding::UNICODE)
47
+ @platform_id == TTFFont::TTF::Encodings::Platform::UNICODE or \
48
+ (@platform_id == TTFFont::TTF::Encodings::Platform::MICROSOFT and \
49
+ @encoding_id == TTFFont::TTF::Encodings::MicrosoftEncoding::UNICODE)
50
50
  end
51
51
 
52
52
  # Returns the format (a Fixnum) of the encoding table.
@@ -265,8 +265,8 @@ class Cmap < Font::TTF::FontChunk
265
265
  id
266
266
  end
267
267
 
268
- # Returns the Font::TTF::Table::Glyf::SimpleGlyph or
269
- # Font::TTF::Table::Glyf::CompositeGlyph associated with unicode.
268
+ # Returns the TTFFont::TTF::Table::Glyf::SimpleGlyph or
269
+ # TTFFont::TTF::Table::Glyf::CompositeGlyph associated with unicode.
270
270
  def get_glyph_for_unicode(unicode)
271
271
  id = get_glyph_id_for_unicode(unicode)
272
272
  offs = @font.get_table(:loca).glyph_offsets[id]
@@ -15,13 +15,13 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
22
22
  # Cvt is the Control Value table. It references values that can be
23
23
  # referenced by instructions (used for hinting, aka grid-fitting).
24
- class Cvt < Font::TTF::FontChunk
24
+ class Cvt < TTFFont::TTF::FontChunk
25
25
 
26
26
  attr_accessor :instructions
27
27
 
@@ -15,13 +15,13 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
22
22
  # Fpgm is the Font Program table. It is similar to the Cvt table except
23
23
  # it is only run once, when the font is first used.
24
- class Fpgm < Font::TTF::FontChunk
24
+ class Fpgm < TTFFont::TTF::FontChunk
25
25
 
26
26
  attr_accessor :instructions
27
27
 
@@ -15,14 +15,14 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
22
22
  # Gasp is the Grid-fitting and scan conversion procedure table.
23
- class Gasp < Font::TTF::FontChunk
23
+ class Gasp < TTFFont::TTF::FontChunk
24
24
 
25
- class GaspRange < Font::TTF::FontChunk
25
+ class GaspRange < TTFFont::TTF::FontChunk
26
26
 
27
27
  SIZEOF_GASP_RANGE = 2 * IO::SIZEOF_USHORT
28
28
 
@@ -15,15 +15,15 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
22
22
  # Glyf is the Glyph data table.
23
- class Glyf < Font::TTF::FontChunk
23
+ class Glyf < TTFFont::TTF::FontChunk
24
24
 
25
25
  # Base class for SimpleGlyph and CompositeGlyph.
26
- class Glyph < Font::TTF::FontChunk
26
+ class Glyph < TTFFont::TTF::FontChunk
27
27
 
28
28
  attr_accessor :num_contours, :x_min, :y_min, :x_max, :y_max
29
29
 
@@ -384,7 +384,7 @@ class Glyf < Font::TTF::FontChunk
384
384
 
385
385
  # Returns all Glyph (SimpleGlyph or CompositeGlyph) in an Array.
386
386
  # This method may be real overkill if you just need to access a few glyphs.
387
- # In this case, you should use the loca table (Font::TTF::Table::Loca)
387
+ # In this case, you should use the loca table (TTFFont::TTF::Table::Loca)
388
388
  # to get offsets and get_glyph_at_offset to get glyph associated with them.
389
389
  def glyphs
390
390
  @glyphs ||= get_glyphs
@@ -434,10 +434,10 @@ class Glyf < Font::TTF::FontChunk
434
434
  # Using shorts saves two bytes per glyph!
435
435
  if offs < 131072
436
436
  @font.get_table(:head).index_to_loc_format = \
437
- Font::TTF::Table::Head::SHORT_FORMAT
437
+ TTFFont::TTF::Table::Head::SHORT_FORMAT
438
438
  else
439
439
  @font.get_table(:head).index_to_loc_format = \
440
- Font::TTF::Table::Head::LONG_FORMAT
440
+ TTFFont::TTF::Table::Head::LONG_FORMAT
441
441
  end
442
442
 
443
443
  @font.get_table(:loca).glyph_offsets = glyph_offsets
@@ -15,12 +15,12 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
22
22
  # Head is the font header table, which gives global informations about the font.
23
- class Head < Font::TTF::FontChunk
23
+ class Head < TTFFont::TTF::FontChunk
24
24
 
25
25
  LONG_FORMAT = 1
26
26
  SHORT_FORMAT = 0
@@ -15,12 +15,12 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
22
22
  # Hea is a base class for Hhea and Vhea.
23
- class Hea < Font::TTF::FontChunk
23
+ class Hea < TTFFont::TTF::FontChunk
24
24
 
25
25
  attr_accessor :version, :ascender, :descender, :line_gap,
26
26
  :advance_max, :min_side_bearing_1,
@@ -15,12 +15,12 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
22
22
  # Mtx is a base class for Hmtx and Vmtx.
23
- class Mtx < Font::TTF::FontChunk
23
+ class Mtx < TTFFont::TTF::FontChunk
24
24
 
25
25
  def initialize(*args)
26
26
  super(*args)
@@ -15,15 +15,15 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
22
22
  # Kern is the Kerning table, which contains values for intercharacter spacing.
23
- class Kern < Font::TTF::FontChunk
23
+ class Kern < TTFFont::TTF::FontChunk
24
24
 
25
25
  # KerningSubtable is a base class for KerningSubtable0 and KerningSubtable2.
26
- class KerningSubtable < Font::TTF::FontChunk
26
+ class KerningSubtable < TTFFont::TTF::FontChunk
27
27
 
28
28
  HORIZONTAL = 0b1
29
29
  MINIMUM = 0b10
@@ -15,18 +15,18 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
22
22
  # Loca is the Location table class. It provides the offsets of glyphs in
23
23
  # the glyf table.
24
- class Loca < Font::TTF::FontChunk
24
+ class Loca < TTFFont::TTF::FontChunk
25
25
 
26
26
  # An array of glyphs offsets with number of glyphs + 1 elements.
27
27
  # The value associated with a given index of that array
28
28
  # is the offset associated with glyph with index index.
29
- # This offset may be used with Font::TTF::Table::Glyf#get_glyph_at_offset
29
+ # This offset may be used with TTFFont::TTF::Table::Glyf#get_glyph_at_offset
30
30
  # to get the glyph object associated with offset.
31
31
  #
32
32
  # The additional offset is added so that the length of the
@@ -35,7 +35,7 @@ class Loca < Font::TTF::FontChunk
35
35
  attr_accessor :glyph_offsets
36
36
 
37
37
  # It is not recommended to create Loca objects by hand.
38
- # Use Font::TTF::File#get_table or Font::TTF::File#get_new_table
38
+ # Use TTFFont::TTF::File#get_table or TTFFont::TTF::File#get_new_table
39
39
  # with :loca as parameter instead.
40
40
  def initialize(*args)
41
41
  super(*args)
@@ -45,10 +45,10 @@ class Loca < Font::TTF::FontChunk
45
45
  n = @font.get_table(:maxp).num_glyphs + 1
46
46
 
47
47
  case @font.get_table(:head).index_to_loc_format
48
- when Font::TTF::Table::Head::SHORT_FORMAT
48
+ when TTFFont::TTF::Table::Head::SHORT_FORMAT
49
49
  @glyph_offsets = @font.read_ushorts(n)
50
50
  @glyph_offsets.collect! { |o| o * 2 }
51
- when Font::TTF::Table::Head::LONG_FORMAT
51
+ when TTFFont::TTF::Table::Head::LONG_FORMAT
52
52
  @glyph_offsets = @font.read_ulongs(n)
53
53
 
54
54
  end
@@ -60,9 +60,9 @@ class Loca < Font::TTF::FontChunk
60
60
  # file.
61
61
  def dump
62
62
  case @font.get_table(:head).index_to_loc_format
63
- when Font::TTF::Table::Head::SHORT_FORMAT
63
+ when TTFFont::TTF::Table::Head::SHORT_FORMAT
64
64
  @glyph_offsets.collect { |o| o / 2 }.to_ushorts
65
- when Font::TTF::Table::Head::LONG_FORMAT
65
+ when TTFFont::TTF::Table::Head::LONG_FORMAT
66
66
  @glyph_offsets.to_ulongs
67
67
 
68
68
  end
@@ -15,13 +15,13 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
22
22
  # Maxp is the Maximum profile tables, which establishes memory requirements
23
23
  # for the associated font.
24
- class Maxp < Font::TTF::FontChunk
24
+ class Maxp < TTFFont::TTF::FontChunk
25
25
 
26
26
  attr_accessor :version, :num_glyphs, :max_points, :max_contours,
27
27
  :max_composite_points, :max_composite_contours,
@@ -17,17 +17,17 @@
17
17
 
18
18
  require 'iconv'
19
19
 
20
- module Font
20
+ module TTFFont
21
21
  module TTF
22
22
  module Table
23
23
 
24
24
  # Name is the the Naming table which allows multilingual strings to be
25
25
  # associated with the TrueType font file.
26
- class Name < Font::TTF::FontChunk
26
+ class Name < TTFFont::TTF::FontChunk
27
27
 
28
28
  # A NameRecord holds a string for a given Platform and Encoding.
29
- class NameRecord < Font::TTF::FontChunk
30
- include Font::TTF::Encodings
29
+ class NameRecord < TTFFont::TTF::FontChunk
30
+ include TTFFont::TTF::Encodings
31
31
 
32
32
  COPYRIGHT_NOTICE = 0
33
33
  FONT_FAMILY_NAME = 1
@@ -181,6 +181,10 @@ class Name < Font::TTF::FontChunk
181
181
  end
182
182
  end
183
183
  end
184
+
185
+ def find_record_by_id(id)
186
+ @name_records.detect { |r| r.name_id == id }
187
+ end
184
188
 
185
189
  # Gets a new empty NameRecord which may then be added to the
186
190
  # name_records array.
@@ -15,12 +15,12 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
22
22
  # OS2 is the OS/2 and Windows font metrics table.
23
- class OS2 < Font::TTF::FontChunk
23
+ class OS2 < TTFFont::TTF::FontChunk
24
24
 
25
25
  INSTALLABLE_EMBEDDING = 0x0000
26
26
  RESTRICTED_LICENCE_EMBEDDING = 0x0002
@@ -15,13 +15,13 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
22
22
  # Post is the PostScript table, which contains additional informations needed
23
23
  # to use TrueType fonts on PostScript printers
24
- class Post < Font::TTF::FontChunk
24
+ class Post < TTFFont::TTF::FontChunk
25
25
 
26
26
  attr_accessor :format_type, :italic_angle, :underline_position,
27
27
  :underline_thickness, :is_fixed_pitch,
@@ -15,7 +15,7 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
@@ -15,7 +15,7 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
@@ -15,7 +15,7 @@
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
- module Font
18
+ module TTFFont
19
19
  module TTF
20
20
  module Table
21
21
 
@@ -189,10 +189,10 @@ class Cairo::Context
189
189
  end
190
190
  end
191
191
 
192
- font = Font::TTF::File.new(ARGV[0])
192
+ font = TTFFont::TTF::File.new(ARGV[0])
193
193
 
194
194
  enc_tbl = font.get_table(:cmap).encoding_tables.find do |t|
195
- t.class == Font::TTF::Table::Cmap::EncodingTable4
195
+ t.class == TTFFont::TTF::Table::Cmap::EncodingTable4
196
196
  end
197
197
 
198
198
  if ARGV[1] == "-g"
@@ -56,7 +56,7 @@ if ARGV.length == 0 or ["h", "-h", "help", "--help"].include? ARGV[0]
56
56
  usage
57
57
  exit!
58
58
  else
59
- ttf = Font::TTF::File.new(ARGV[0])
59
+ ttf = TTFFont::TTF::File.new(ARGV[0])
60
60
  end
61
61
 
62
62
  if ARGV.length == 1 or (ARGV.length == 2 and ARGV[1] == "all")
@@ -70,17 +70,17 @@ if ARGV.length == 1 or (ARGV.length == 2 and ARGV[1] == "all")
70
70
  name = ttf.get_table(:name)
71
71
 
72
72
  fontname = name.name_records.find do |nr|
73
- [Font::TTF::Table::Name::NameRecord::UNIQUE_FONT_IDENTIFIER,
74
- Font::TTF::Table::Name::NameRecord::FONT_FAMILY_NAME,
75
- Font::TTF::Table::Name::NameRecord::FULL_FONT_NAME,
76
- Font::TTF::Table::Name::NameRecord::POSTSCRIPT_NAME].include? \
73
+ [TTFFont::TTF::Table::Name::NameRecord::UNIQUE_FONT_IDENTIFIER,
74
+ TTFFont::TTF::Table::Name::NameRecord::FONT_FAMILY_NAME,
75
+ TTFFont::TTF::Table::Name::NameRecord::FULL_FONT_NAME,
76
+ TTFFont::TTF::Table::Name::NameRecord::POSTSCRIPT_NAME].include? \
77
77
  nr.name_id and (nr.unicode? or nr.roman?)
78
78
  end
79
79
 
80
80
  define("Font Name", fontname.utf8_str) unless fontname.nil?
81
81
 
82
82
  fontcopyright = name.name_records.find do |nr|
83
- nr.name_id == Font::TTF::Table::Name::NameRecord::COPYRIGHT_NOTICE \
83
+ nr.name_id == TTFFont::TTF::Table::Name::NameRecord::COPYRIGHT_NOTICE \
84
84
  and (nr.unicode? or nr.roman?)
85
85
  end
86
86
 
@@ -215,7 +215,7 @@ if ARGV.length == 4 and ARGV[1] == "glyf" and
215
215
  glyf = ttf.get_table(:glyf)
216
216
 
217
217
  enc_tbl = ttf.get_table(:cmap).encoding_tables.find do |t|
218
- t.class == Font::TTF::Table::Cmap::EncodingTable4
218
+ t.class == TTFFont::TTF::Table::Cmap::EncodingTable4
219
219
  end
220
220
 
221
221
  if ARGV[2] == "-g"
@@ -322,21 +322,21 @@ if ARGV.length == 2 and (ARGV[1] == "name" or ARGV[1] == "all") and
322
322
  name.name_records.each_with_index do |nr, i|
323
323
  define("Name record number", i)
324
324
  define("Platform id", "%d (%s)" % [nr.platform_id,
325
- Font::TTF::Encodings::Platform::ID2NAME[nr.platform_id]])
325
+ TTFFont::TTF::Encodings::Platform::ID2NAME[nr.platform_id]])
326
326
 
327
327
  if nr.platform_id == \
328
- Font::TTF::Encodings::Platform::MICROSOFT
328
+ TTFFont::TTF::Encodings::Platform::MICROSOFT
329
329
  define("Encoding id", "%d (%s)" % [nr.encoding_id,
330
- Font::TTF::Encodings::MicrosoftEncoding::ID2NAME[nr.encoding_id]])
330
+ TTFFont::TTF::Encodings::MicrosoftEncoding::ID2NAME[nr.encoding_id]])
331
331
  elsif nr.platform_id == \
332
- Font::TTF::Encodings::Platform::MACINTOSH
332
+ TTFFont::TTF::Encodings::Platform::MACINTOSH
333
333
  define("Encoding id", "%d (%s)" % [nr.encoding_id,
334
- Font::TTF::Encodings::MacintoshEncoding::ID2NAME[nr.encoding_id]])
334
+ TTFFont::TTF::Encodings::MacintoshEncoding::ID2NAME[nr.encoding_id]])
335
335
  end
336
336
 
337
337
  define("Language id", nr.language_id)
338
338
  define("Name id", "%d (%s)" % [nr.name_id,
339
- Font::TTF::Table::Name::NameRecord::ID2NAME[nr.name_id]])
339
+ TTFFont::TTF::Table::Name::NameRecord::ID2NAME[nr.name_id]])
340
340
  define("String length", nr.to_s.length)
341
341
  define("String offset", nr.str_offset)
342
342
  define("String value", nr.utf8_str)
@@ -117,10 +117,10 @@ def puts_composite_glyph(font, glyph)
117
117
  end
118
118
  end
119
119
 
120
- font = Font::TTF::File.new(ARGV[0])
120
+ font = TTFFont::TTF::File.new(ARGV[0])
121
121
 
122
122
  enc_tbl = font.get_table(:cmap).encoding_tables.find do |t|
123
- t.class == Font::TTF::Table::Cmap::EncodingTable4
123
+ t.class == TTFFont::TTF::Table::Cmap::EncodingTable4
124
124
  end
125
125
 
126
126
  if ARGV[1] == "-g"
@@ -83,11 +83,11 @@ end
83
83
 
84
84
  def initialize(filename, input_chars)
85
85
 
86
- @font = Font::TTF::File.new(filename)
87
- @subset = Font::TTF::File.new
86
+ @font = TTFFont::TTF::File.new(filename)
87
+ @subset = TTFFont::TTF::File.new
88
88
 
89
89
  @enc_tbl = @font.get_table(:cmap).encoding_tables.find do |t|
90
- t.class == Font::TTF::Table::Cmap::EncodingTable4
90
+ t.class == TTFFont::TTF::Table::Cmap::EncodingTable4
91
91
  end
92
92
 
93
93
  raise UnsupportedFont, "Needs an encoding table 4 (unicode)" \
@@ -135,9 +135,9 @@ end
135
135
  subset_cmap_tbl = @subset.get_new_table(:cmap)
136
136
  subset_enc_tbl = subset_cmap_tbl.get_new_encoding_table4
137
137
  subset_enc_tbl.platform_id = \
138
- Font::TTF::Encodings::Platform::UNICODE
138
+ TTFFont::TTF::Encodings::Platform::UNICODE
139
139
  subset_enc_tbl.encoding_id = \
140
- Font::TTF::Encodings::UnicodeEncoding::UNICODE
140
+ TTFFont::TTF::Encodings::UnicodeEncoding::UNICODE
141
141
 
142
142
  subset_enc_tbl.charmaps = @charmaps
143
143
  subset_cmap_tbl.encoding_tables << subset_enc_tbl
@@ -159,9 +159,9 @@ subset_cmap_tbl.encoding_tables << subset_enc_tbl0
159
159
 
160
160
  subset_enc_tbl = subset_cmap_tbl.get_new_encoding_table4
161
161
  subset_enc_tbl.platform_id = \
162
- Font::TTF::Encodings::Platform::MICROSOFT
162
+ TTFFont::TTF::Encodings::Platform::MICROSOFT
163
163
  subset_enc_tbl.encoding_id = \
164
- Font::TTF::Encodings::MicrosoftEncoding::UNICODE
164
+ TTFFont::TTF::Encodings::MicrosoftEncoding::UNICODE
165
165
  subset_enc_tbl.charmaps = @charmaps
166
166
  subset_cmap_tbl.encoding_tables << subset_enc_tbl
167
167
 
@@ -199,10 +199,10 @@ subset_hmtx_tbl.hmetrics = @hmetrics
199
199
  # Name
200
200
  name_tbl = @font.get_table(:name)
201
201
  name_tbl.name_records.find_all do |nr|
202
- [Font::TTF::Table::Name::NameRecord::UNIQUE_FONT_IDENTIFIER,
203
- Font::TTF::Table::Name::NameRecord::FONT_FAMILY_NAME,
204
- Font::TTF::Table::Name::NameRecord::FULL_FONT_NAME,
205
- Font::TTF::Table::Name::NameRecord::POSTSCRIPT_NAME].include? \
202
+ [TTFFont::TTF::Table::Name::NameRecord::UNIQUE_FONT_IDENTIFIER,
203
+ TTFFont::TTF::Table::Name::NameRecord::FONT_FAMILY_NAME,
204
+ TTFFont::TTF::Table::Name::NameRecord::FULL_FONT_NAME,
205
+ TTFFont::TTF::Table::Name::NameRecord::POSTSCRIPT_NAME].include? \
206
206
  nr.name_id and (nr.unicode? or nr.roman?)
207
207
  end.each do |nr|
208
208
  nr.utf8_str += "_subset"
@@ -266,8 +266,8 @@ ARGV.each_with_index do |filename, i|
266
266
  File.new(subset_path,
267
267
  File::CREAT|File::RDWR).write(Subsetter.new(filename,
268
268
  input_chars).dump)
269
- rescue UnsupportedFont, Font::TTF::MalformedFont,
270
- Font::TTF::TableMissing => e
269
+ rescue UnsupportedFont, TTFFont::TTF::MalformedFont,
270
+ TTFFont::TTF::TableMissing => e
271
271
  puts e
272
272
  end
273
273
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 5
9
- version: 0.0.5
8
+ - 7
9
+ version: 0.0.7
10
10
  platform: ruby
11
11
  authors:
12
12
  - William Melody