prawn 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +6 -10
- data/Rakefile +4 -13
- data/data/encodings/win_ansi.txt +29 -0
- data/data/images/fractal.jpg +0 -0
- data/data/images/letterhead.jpg +0 -0
- data/examples/bounding_box/bounding_boxes.rb +44 -0
- data/examples/bounding_box/lazy_bounding_boxes.rb +28 -0
- data/examples/bounding_box/padded_box.rb +24 -0
- data/examples/{russian_boxes.rb → bounding_box/russian_boxes.rb} +9 -6
- data/examples/general/background.rb +20 -0
- data/examples/{canvas.rb → general/canvas.rb} +6 -2
- data/examples/general/measurement_units.rb +52 -0
- data/examples/{multi_page_layout.rb → general/multi_page_layout.rb} +6 -3
- data/examples/{page_geometry.rb → general/page_geometry.rb} +6 -2
- data/examples/{image.rb → graphics/basic_images.rb} +8 -4
- data/examples/graphics/cmyk.rb +13 -0
- data/examples/graphics/curves.rb +12 -0
- data/examples/{hexagon.rb → graphics/hexagon.rb} +5 -5
- data/examples/graphics/image_fit.rb +16 -0
- data/examples/graphics/image_flow.rb +38 -0
- data/examples/graphics/image_position.rb +18 -0
- data/examples/{line.rb → graphics/line.rb} +4 -2
- data/examples/{png_types.rb → graphics/png_types.rb} +4 -4
- data/examples/{polygons.rb → graphics/polygons.rb} +5 -4
- data/examples/graphics/remote_images.rb +12 -0
- data/examples/{ruport_helpers.rb → graphics/ruport_style_helpers.rb} +8 -5
- data/examples/graphics/stroke_bounds.rb +23 -0
- data/examples/{chinese_text_wrapping.rb → m17n/chinese_text_wrapping.rb} +7 -4
- data/examples/m17n/euro.rb +16 -0
- data/examples/m17n/sjis.rb +29 -0
- data/examples/m17n/utf8.rb +14 -0
- data/examples/m17n/win_ansi_charset.rb +55 -0
- data/examples/{addressbook.csv → table/addressbook.csv} +0 -0
- data/examples/{cell.rb → table/cell.rb} +8 -6
- data/examples/{currency.csv → table/currency.csv} +0 -0
- data/examples/{fancy_table.rb → table/fancy_table.rb} +9 -6
- data/examples/{ruport_formatter.rb → table/ruport_formatter.rb} +6 -3
- data/examples/{table.rb → table/table.rb} +6 -2
- data/examples/table/table_alignment.rb +18 -0
- data/examples/table/table_border_color.rb +17 -0
- data/examples/table/table_colspan.rb +19 -0
- data/examples/table/table_header_color.rb +19 -0
- data/examples/table/table_header_underline.rb +15 -0
- data/examples/{alignment.rb → text/alignment.rb} +5 -2
- data/examples/text/family_based_styling.rb +25 -0
- data/examples/{flowing_text_with_header_and_footer.rb → text/flowing_text_with_header_and_footer.rb} +19 -8
- data/examples/text/font_calculations.rb +91 -0
- data/examples/text/font_size.rb +34 -0
- data/examples/{kerning.rb → text/kerning.rb} +5 -1
- data/examples/text/simple_text.rb +18 -0
- data/examples/text/simple_text_ttf.rb +18 -0
- data/examples/{span.rb → text/span.rb} +5 -2
- data/examples/text/text_box.rb +26 -0
- data/examples/{text_flow.rb → text/text_flow.rb} +5 -2
- data/lib/prawn.rb +26 -20
- data/lib/prawn/compatibility.rb +5 -8
- data/lib/prawn/document.rb +29 -13
- data/lib/prawn/document/annotations.rb +63 -0
- data/lib/prawn/document/bounding_box.rb +18 -3
- data/lib/prawn/document/destinations.rb +81 -0
- data/lib/prawn/document/internals.rb +16 -2
- data/lib/prawn/document/page_geometry.rb +58 -57
- data/lib/prawn/document/span.rb +8 -0
- data/lib/prawn/document/table.rb +81 -31
- data/lib/prawn/document/text.rb +66 -21
- data/lib/prawn/document/text/box.rb +77 -0
- data/lib/prawn/encoding.rb +121 -0
- data/lib/prawn/errors.rb +4 -0
- data/lib/prawn/font.rb +70 -42
- data/lib/prawn/font/metrics.rb +64 -119
- data/lib/prawn/graphics.rb +105 -87
- data/lib/prawn/graphics/cell.rb +55 -28
- data/lib/prawn/graphics/color.rb +8 -0
- data/lib/prawn/images.rb +55 -12
- data/lib/prawn/images/jpg.rb +2 -1
- data/lib/prawn/images/png.rb +2 -1
- data/lib/prawn/literal_string.rb +14 -0
- data/lib/prawn/measurement_extensions.rb +46 -0
- data/lib/prawn/measurements.rb +71 -0
- data/lib/prawn/name_tree.rb +165 -0
- data/lib/prawn/pdf_object.rb +8 -1
- data/spec/annotations_spec.rb +90 -0
- data/spec/destinations_spec.rb +15 -0
- data/spec/document_spec.rb +39 -2
- data/spec/font_spec.rb +22 -0
- data/spec/graphics_spec.rb +99 -87
- data/spec/images_spec.rb +29 -1
- data/spec/measurement_units_spec.rb +23 -0
- data/spec/metrics_spec.rb +3 -2
- data/spec/name_tree_spec.rb +103 -0
- data/spec/pdf_object_spec.rb +15 -5
- data/spec/png_spec.rb +14 -14
- data/spec/spec_helper.rb +8 -6
- data/spec/table_spec.rb +40 -0
- data/spec/text_spec.rb +6 -4
- data/vendor/ttfunk/data/fonts/DejaVuSans.ttf +0 -0
- data/vendor/ttfunk/data/fonts/comicsans.ttf +0 -0
- data/vendor/ttfunk/example.rb +5 -0
- data/vendor/ttfunk/lib/ttfunk.rb +48 -0
- data/vendor/ttfunk/lib/ttfunk/table.rb +27 -0
- data/vendor/ttfunk/lib/ttfunk/table/cmap.rb +94 -0
- data/vendor/ttfunk/lib/ttfunk/table/directory.rb +25 -0
- data/vendor/ttfunk/lib/ttfunk/table/head.rb +25 -0
- data/vendor/ttfunk/lib/ttfunk/table/hhea.rb +27 -0
- data/vendor/ttfunk/lib/ttfunk/table/hmtx.rb +20 -0
- data/vendor/ttfunk/lib/ttfunk/table/kern.rb +48 -0
- data/vendor/ttfunk/lib/ttfunk/table/maxp.rb +17 -0
- data/vendor/ttfunk/lib/ttfunk/table/name.rb +52 -0
- metadata +93 -62
- data/examples/bounding_boxes.rb +0 -30
- data/examples/curves.rb +0 -10
- data/examples/family_based_styling.rb +0 -21
- data/examples/font_size.rb +0 -19
- data/examples/image2.rb +0 -13
- data/examples/image_flow.rb +0 -29
- data/examples/lazy_bounding_boxes.rb +0 -19
- data/examples/remote_images.rb +0 -7
- data/examples/simple_text.rb +0 -15
- data/examples/simple_text_ttf.rb +0 -16
- data/examples/sjis.rb +0 -21
- data/examples/utf8.rb +0 -12
- data/vendor/font_ttf/ttf.rb +0 -20
- data/vendor/font_ttf/ttf/datatypes.rb +0 -189
- data/vendor/font_ttf/ttf/encodings.rb +0 -140
- data/vendor/font_ttf/ttf/exceptions.rb +0 -28
- data/vendor/font_ttf/ttf/file.rb +0 -290
- data/vendor/font_ttf/ttf/fontchunk.rb +0 -77
- data/vendor/font_ttf/ttf/table/cmap.rb +0 -408
- data/vendor/font_ttf/ttf/table/cvt.rb +0 -49
- data/vendor/font_ttf/ttf/table/fpgm.rb +0 -48
- data/vendor/font_ttf/ttf/table/gasp.rb +0 -88
- data/vendor/font_ttf/ttf/table/glyf.rb +0 -452
- data/vendor/font_ttf/ttf/table/head.rb +0 -86
- data/vendor/font_ttf/ttf/table/hhea.rb +0 -96
- data/vendor/font_ttf/ttf/table/hmtx.rb +0 -98
- data/vendor/font_ttf/ttf/table/kern.rb +0 -186
- data/vendor/font_ttf/ttf/table/loca.rb +0 -75
- data/vendor/font_ttf/ttf/table/maxp.rb +0 -81
- data/vendor/font_ttf/ttf/table/name.rb +0 -222
- data/vendor/font_ttf/ttf/table/os2.rb +0 -172
- data/vendor/font_ttf/ttf/table/post.rb +0 -120
- data/vendor/font_ttf/ttf/table/prep.rb +0 -27
- data/vendor/font_ttf/ttf/table/vhea.rb +0 -45
- data/vendor/font_ttf/ttf/table/vmtx.rb +0 -36
data/examples/bounding_boxes.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
2
|
-
require 'prawn'
|
3
|
-
|
4
|
-
Prawn::Document.generate("bounding_boxes.pdf") do
|
5
|
-
|
6
|
-
bounding_box [100,600], :width => 200 do
|
7
|
-
text "The rain in spain falls mainly on the plains " * 5
|
8
|
-
stroke do
|
9
|
-
line bounds.top_left, bounds.top_right
|
10
|
-
line bounds.bottom_left, bounds.bottom_right
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
bounding_box [100,500], :width => 200, :height => 200 do
|
15
|
-
stroke do
|
16
|
-
circle_at [100,100], :radius => 100
|
17
|
-
line bounds.top_left, bounds.bottom_right
|
18
|
-
line bounds.top_right, bounds.bottom_left
|
19
|
-
end
|
20
|
-
|
21
|
-
bounding_box [50,150], :width => 100, :height => 100 do
|
22
|
-
stroke_rectangle bounds.top_left, bounds.width, bounds.height
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
data/examples/curves.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
-
require "prawn"
|
5
|
-
|
6
|
-
pdf = Prawn::Document.new
|
7
|
-
pdf.move_to [100,100]
|
8
|
-
pdf.stroke_curve_to [50,50],:bounds => [[20,90], [90,90]]
|
9
|
-
pdf.fill_circle_at [200,200], :radius => 10
|
10
|
-
pdf.render_file "curves.pdf"
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
-
require "prawn"
|
5
|
-
|
6
|
-
Prawn::Document.generate("family_style.pdf") do
|
7
|
-
["Courier","Helvetica","Times-Roman"].each do |f|
|
8
|
-
[:bold,:bold_italic,:italic,:normal].each do |s|
|
9
|
-
font f, :style => s
|
10
|
-
text "I'm writing in #{f} (#{s})"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
font "Helvetica"
|
15
|
-
|
16
|
-
text "Normal"
|
17
|
-
text "Bold", :style => :bold
|
18
|
-
text "Bold Italic", :style => :bold_italic
|
19
|
-
text "Italic", :style => :italic
|
20
|
-
text "Normal"
|
21
|
-
end
|
data/examples/font_size.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
-
require "prawn"
|
5
|
-
|
6
|
-
Prawn::Document.generate "font_size.pdf", :page_size => "A4" do
|
7
|
-
font 'Helvetica'
|
8
|
-
font.size = 16
|
9
|
-
|
10
|
-
text 'Font at 16 point'
|
11
|
-
|
12
|
-
font.size 9 do
|
13
|
-
text 'Font at 9 point'
|
14
|
-
text 'Font at manual override 20 point', :size => 20
|
15
|
-
text 'Font at 9 point'
|
16
|
-
end
|
17
|
-
|
18
|
-
text 'Font at 16 point'
|
19
|
-
end
|
data/examples/image2.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
-
require "prawn"
|
5
|
-
|
6
|
-
Prawn::Document.generate("image2.pdf", :page_layout => :landscape) do
|
7
|
-
pigs = "#{Prawn::BASEDIR}/data/images/pigs.jpg"
|
8
|
-
image pigs, :at => [50,450], :width => 450
|
9
|
-
|
10
|
-
dice = "#{Prawn::BASEDIR}/data/images/dice.png"
|
11
|
-
image dice, :at => [50, 450], :scale => 0.75
|
12
|
-
end
|
13
|
-
|
data/examples/image_flow.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
-
require "prawn"
|
5
|
-
|
6
|
-
Prawn::Document.generate("image-flow.pdf", :page_layout => :landscape) do
|
7
|
-
stef = "#{Prawn::BASEDIR}/data/images/stef.jpg"
|
8
|
-
|
9
|
-
text "o hai"
|
10
|
-
|
11
|
-
image stef
|
12
|
-
|
13
|
-
text "flowing text"
|
14
|
-
|
15
|
-
image stef, :position => :center
|
16
|
-
|
17
|
-
text "beneath images"
|
18
|
-
|
19
|
-
image stef, :position => :right
|
20
|
-
|
21
|
-
text "again"
|
22
|
-
|
23
|
-
image stef, :position => :left
|
24
|
-
|
25
|
-
text "and again"
|
26
|
-
|
27
|
-
image stef, :position => 50
|
28
|
-
|
29
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
2
|
-
require "prawn"
|
3
|
-
|
4
|
-
file = "lazy_bounding_boxes.pdf"
|
5
|
-
Prawn::Document.generate(file, :skip_page_creation => true) do
|
6
|
-
point = [bounds.right-50, bounds.bottom + 25]
|
7
|
-
page_counter = lazy_bounding_box(point, :width => 50) do
|
8
|
-
text "Page: #{page_count}"
|
9
|
-
end
|
10
|
-
|
11
|
-
10.times do
|
12
|
-
start_new_page
|
13
|
-
text "Some text"
|
14
|
-
page_counter.draw
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
|
data/examples/remote_images.rb
DELETED
data/examples/simple_text.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
-
require "prawn"
|
5
|
-
|
6
|
-
Prawn::Document.generate "hello.pdf" do
|
7
|
-
fill_color "0000ff"
|
8
|
-
text "Hello World", :at => [200,720], :size => 32
|
9
|
-
font "Times-Roman"
|
10
|
-
fill_color "ff0000"
|
11
|
-
text "Overcoming singular font limitation", :at => [5,5]
|
12
|
-
start_new_page
|
13
|
-
font "Courier"
|
14
|
-
text "Goodbye World", :at => [288,50]
|
15
|
-
end
|
data/examples/simple_text_ttf.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
-
require "prawn"
|
5
|
-
|
6
|
-
Prawn::Document.generate "hello-ttf.pdf" do
|
7
|
-
fill_color "0000ff"
|
8
|
-
font "#{Prawn::BASEDIR}/data/fonts/comicsans.ttf"
|
9
|
-
text "Hello World", :at => [200,720], :size => 32
|
10
|
-
|
11
|
-
font "#{Prawn::BASEDIR}/data/fonts/Chalkboard.ttf"
|
12
|
-
|
13
|
-
pad(20) do
|
14
|
-
text "This is chalkboard wrapping " * 20
|
15
|
-
end
|
16
|
-
end
|
data/examples/sjis.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
# Tests passing non utf-8 data into Prawns text function. Should
|
4
|
-
# be transparently converted to utf-8 and rendered as usual.
|
5
|
-
#
|
6
|
-
# NOTE: only works on ruby1.9 compatible VMs, and requires the current
|
7
|
-
# font to include japanese glyphs. On 1.8.x comaptible VMs, an exception
|
8
|
-
# will be raised.
|
9
|
-
|
10
|
-
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
11
|
-
require "prawn"
|
12
|
-
|
13
|
-
ruby_19 do
|
14
|
-
datafile = File.join(File.dirname(__FILE__), "..", "data", "shift_jis_text.txt")
|
15
|
-
sjis_str = File.open(datafile, "r:shift_jis") { |f| f.gets }
|
16
|
-
|
17
|
-
Prawn::Document.generate("sjis.pdf") do
|
18
|
-
font "#{Prawn::BASEDIR}/data/fonts/gkai00mp.ttf"
|
19
|
-
text sjis_str
|
20
|
-
end
|
21
|
-
end
|
data/examples/utf8.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
-
require "prawn"
|
5
|
-
|
6
|
-
Prawn::Document.generate("utf8.pdf") do
|
7
|
-
font "#{Prawn::BASEDIR}/data/fonts/DejaVuSans.ttf"
|
8
|
-
text "ὕαλον ϕαγεῖν δύναμαι· τοῦτο οὔ με βλάπτει." * 20
|
9
|
-
end
|
10
|
-
|
11
|
-
|
12
|
-
|
data/vendor/font_ttf/ttf.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# TTF/Ruby, a library to read and write TrueType fonts in Ruby.
|
2
|
-
# Copyright (C) 2006 Mathieu Blondel
|
3
|
-
#
|
4
|
-
# This program is free software; you can redistribute it and/or modify
|
5
|
-
# it under the terms of the GNU General Public License as published by
|
6
|
-
# the Free Software Foundation; either version 2 of the License, or
|
7
|
-
# (at your option) any later version.
|
8
|
-
#
|
9
|
-
# This program is distributed in the hope that it will be useful,
|
10
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
-
# GNU General Public License for more details.
|
13
|
-
#
|
14
|
-
# You should have received a copy of the GNU General Public License
|
15
|
-
# along with this program; if not, write to the Free Software
|
16
|
-
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
-
|
18
|
-
require 'ttf/file'
|
19
|
-
|
20
|
-
|
@@ -1,189 +0,0 @@
|
|
1
|
-
# TTF/Ruby, a library to read and write TrueType fonts in Ruby.
|
2
|
-
# Copyright (C) 2006 Mathieu Blondel
|
3
|
-
#
|
4
|
-
# This program is free software; you can redistribute it and/or modify
|
5
|
-
# it under the terms of the GNU General Public License as published by
|
6
|
-
# the Free Software Foundation; either version 2 of the License, or
|
7
|
-
# (at your option) any later version.
|
8
|
-
#
|
9
|
-
# This program is distributed in the hope that it will be useful,
|
10
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
-
# GNU General Public License for more details.
|
13
|
-
#
|
14
|
-
# You should have received a copy of the GNU General Public License
|
15
|
-
# along with this program; if not, write to the Free Software
|
16
|
-
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
-
|
18
|
-
class IO
|
19
|
-
SIZEOF_USHORT = 2
|
20
|
-
SIZEOF_ULONG = 4
|
21
|
-
SIZEOF_FIXED = 4
|
22
|
-
SIZEOF_LONG_DATE_TIME = 8
|
23
|
-
SIZEOF_SHORT = SIZEOF_FWORD = 2
|
24
|
-
SHORT_BOUND = 2 ** (8 * SIZEOF_SHORT - 1)
|
25
|
-
USHORT_BOUND = SHORT_BOUND * 2
|
26
|
-
|
27
|
-
def at_offset(offset)
|
28
|
-
prev_pos = self.pos
|
29
|
-
self.pos = offset
|
30
|
-
ret = yield
|
31
|
-
self.pos = prev_pos
|
32
|
-
ret
|
33
|
-
end
|
34
|
-
|
35
|
-
alias :old_read :read
|
36
|
-
|
37
|
-
#ef read(n)
|
38
|
-
# ret = old_read(n)
|
39
|
-
# raise Font::TTF::MalformedFont if ret.nil?
|
40
|
-
# ret
|
41
|
-
#end
|
42
|
-
|
43
|
-
def read_ushort
|
44
|
-
read(SIZEOF_USHORT).unpack("n")[0]
|
45
|
-
end
|
46
|
-
alias :read_ufword :read_ushort
|
47
|
-
alias :read_f2dot14 :read_ushort
|
48
|
-
|
49
|
-
def read_ushorts(n)
|
50
|
-
read(SIZEOF_USHORT * n).unpack("n#{n.to_s}")
|
51
|
-
end
|
52
|
-
alias :read_ufwords :read_ushorts
|
53
|
-
alias :read_f2dot14s :read_ushorts
|
54
|
-
|
55
|
-
def read_ulong
|
56
|
-
read(SIZEOF_ULONG).unpack("N")[0]
|
57
|
-
end
|
58
|
-
|
59
|
-
def read_ulongs(n)
|
60
|
-
read(SIZEOF_ULONG * n).unpack("N#{n.to_s}")
|
61
|
-
end
|
62
|
-
|
63
|
-
def read_fixed
|
64
|
-
f = read_ulong
|
65
|
-
#"%d.%d" % [f >> 16, f & 0xff00]
|
66
|
-
end
|
67
|
-
|
68
|
-
def read_ulong_as_text
|
69
|
-
read(SIZEOF_ULONG)
|
70
|
-
end
|
71
|
-
|
72
|
-
def read_byte
|
73
|
-
read(1).unpack("C")[0]
|
74
|
-
end
|
75
|
-
|
76
|
-
def read_bytes(n)
|
77
|
-
read(n).unpack("C" + n.to_s)
|
78
|
-
end
|
79
|
-
|
80
|
-
def read_long_date_time
|
81
|
-
# Don't know how to compute dates
|
82
|
-
read(SIZEOF_LONG_DATE_TIME)
|
83
|
-
""
|
84
|
-
end
|
85
|
-
|
86
|
-
def read_short
|
87
|
-
# No unpack support for signed network short
|
88
|
-
n = read_ushort
|
89
|
-
n = n - 2 * SHORT_BOUND if n >= SHORT_BOUND
|
90
|
-
n
|
91
|
-
end
|
92
|
-
alias :read_fword :read_short
|
93
|
-
|
94
|
-
def read_shorts(n)
|
95
|
-
arr = []
|
96
|
-
n.times { arr << read_short }
|
97
|
-
arr
|
98
|
-
end
|
99
|
-
alias :read_fwords :read_shorts
|
100
|
-
|
101
|
-
def read_char
|
102
|
-
read(1)
|
103
|
-
end
|
104
|
-
|
105
|
-
def read_chars(n)
|
106
|
-
read(n)
|
107
|
-
end
|
108
|
-
|
109
|
-
end
|
110
|
-
|
111
|
-
class Integer
|
112
|
-
|
113
|
-
def to_ushort
|
114
|
-
[self].pack("n")
|
115
|
-
end
|
116
|
-
alias :to_ufword :to_ushort
|
117
|
-
alias :to_f2dot14 :to_ushort
|
118
|
-
|
119
|
-
def to_ulong
|
120
|
-
[self].pack("N")
|
121
|
-
end
|
122
|
-
alias :to_fixed :to_ulong
|
123
|
-
|
124
|
-
def to_short
|
125
|
-
n = self
|
126
|
-
n + 2 * IO::SHORT_BOUND if n < 0
|
127
|
-
n.to_ushort
|
128
|
-
end
|
129
|
-
alias :to_fword :to_short
|
130
|
-
|
131
|
-
def to_byte
|
132
|
-
[self].pack("C")
|
133
|
-
end
|
134
|
-
|
135
|
-
end
|
136
|
-
|
137
|
-
class String
|
138
|
-
|
139
|
-
def to_long_date_time
|
140
|
-
# Don't know how to compute dates
|
141
|
-
# So just returns something at the good size
|
142
|
-
" " * IO::SIZEOF_LONG_DATE_TIME
|
143
|
-
end
|
144
|
-
|
145
|
-
def four_chars!
|
146
|
-
str = self
|
147
|
-
while str.length < 4
|
148
|
-
str += " "
|
149
|
-
end
|
150
|
-
self.replace(str.slice(0,4))
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
class Array
|
155
|
-
|
156
|
-
def to_bytes
|
157
|
-
self.pack("C*")
|
158
|
-
end
|
159
|
-
|
160
|
-
def to_ushorts
|
161
|
-
self.pack("n*")
|
162
|
-
end
|
163
|
-
alias :to_ufwords :to_ushorts
|
164
|
-
alias :to_f2dot14s :to_ushorts
|
165
|
-
|
166
|
-
def to_shorts
|
167
|
-
str = ""
|
168
|
-
self.each do |int|
|
169
|
-
str += int.to_short
|
170
|
-
end
|
171
|
-
str
|
172
|
-
end
|
173
|
-
alias :to_fwords :to_shorts
|
174
|
-
|
175
|
-
def to_ulongs
|
176
|
-
self.pack("N*")
|
177
|
-
end
|
178
|
-
alias :to_fixeds :to_ulongs
|
179
|
-
|
180
|
-
end
|
181
|
-
|
182
|
-
# This allows to sort an array of symbols as if they were strings
|
183
|
-
class Symbol
|
184
|
-
|
185
|
-
def <=>(symb)
|
186
|
-
self.to_s <=> symb.to_s
|
187
|
-
end
|
188
|
-
|
189
|
-
end
|
@@ -1,140 +0,0 @@
|
|
1
|
-
# TTF/Ruby, a library to read and write TrueType fonts in Ruby.
|
2
|
-
# Copyright (C) 2006 Mathieu Blondel
|
3
|
-
#
|
4
|
-
# This program is free software; you can redistribute it and/or modify
|
5
|
-
# it under the terms of the GNU General Public License as published by
|
6
|
-
# the Free Software Foundation; either version 2 of the License, or
|
7
|
-
# (at your option) any later version.
|
8
|
-
#
|
9
|
-
# This program is distributed in the hope that it will be useful,
|
10
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
-
# GNU General Public License for more details.
|
13
|
-
#
|
14
|
-
# You should have received a copy of the GNU General Public License
|
15
|
-
# along with this program; if not, write to the Free Software
|
16
|
-
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
-
|
18
|
-
module Font
|
19
|
-
module TTF
|
20
|
-
module Encodings
|
21
|
-
|
22
|
-
module Platform
|
23
|
-
UNICODE = 0
|
24
|
-
MACINTOSH = 1
|
25
|
-
ISO = 2
|
26
|
-
MICROSOFT = 3
|
27
|
-
|
28
|
-
ID2NAME = {
|
29
|
-
UNICODE => "Unicode",
|
30
|
-
MACINTOSH => "Macintosh",
|
31
|
-
ISO => "ISO",
|
32
|
-
MICROSOFT => "Microsoft"
|
33
|
-
}
|
34
|
-
end
|
35
|
-
|
36
|
-
module UnicodeEncoding
|
37
|
-
# When Platform == 0
|
38
|
-
DEFAULT_SEMANTICS = 0
|
39
|
-
VERSION_1_1_SEMANTICS = 1
|
40
|
-
ISO_10646_1993_SEMANTICS = 2
|
41
|
-
UNICODE = 3
|
42
|
-
end
|
43
|
-
|
44
|
-
module MicrosoftEncoding
|
45
|
-
# When Platform == 3
|
46
|
-
SYMBOL = 0
|
47
|
-
UNICODE = 1
|
48
|
-
SHIFTJIS = 2
|
49
|
-
BIG5 = 3
|
50
|
-
PRC = 4
|
51
|
-
WASUNG = 5
|
52
|
-
JOHAB = 6
|
53
|
-
|
54
|
-
ID2NAME = {
|
55
|
-
SYMBOL => "Symbol",
|
56
|
-
UNICODE => "Unicode",
|
57
|
-
SHIFTJIS => "ShiftJIS",
|
58
|
-
BIG5 => "Big5",
|
59
|
-
PRC => "PRC",
|
60
|
-
WASUNG => "Wasung",
|
61
|
-
JOHAB => "Johab"
|
62
|
-
}
|
63
|
-
end
|
64
|
-
|
65
|
-
module MacintoshEncoding
|
66
|
-
# When Platform == 1
|
67
|
-
ROMAN = 0
|
68
|
-
JAPANESE = 1
|
69
|
-
TRADITIONAL_CHINESE = 2
|
70
|
-
KOREAN = 3
|
71
|
-
ARABIC = 4
|
72
|
-
HEBREW = 5
|
73
|
-
GREEK = 6
|
74
|
-
RUSSIAN = 7
|
75
|
-
RSYMBOL = 8
|
76
|
-
DEVANAGARI = 9
|
77
|
-
GURMUKHI = 10
|
78
|
-
GUJARATI = 11
|
79
|
-
ORIYA = 12
|
80
|
-
BENGALI = 13
|
81
|
-
TAMIL = 14
|
82
|
-
TELUGU = 15
|
83
|
-
KANNADA = 16
|
84
|
-
MALAYALAM = 17
|
85
|
-
SINHALESE = 18
|
86
|
-
BURMESE = 19
|
87
|
-
KHMER = 20
|
88
|
-
THAI = 21
|
89
|
-
LAOTIAN = 22
|
90
|
-
GEORGIAN = 23
|
91
|
-
ARMENIAN = 24
|
92
|
-
SIMPLIFIED_CHINESE = 25
|
93
|
-
TIBETAN = 26
|
94
|
-
MONGOLIAN = 27
|
95
|
-
GEEZ = 28
|
96
|
-
SLAVIC = 29
|
97
|
-
VIETNAMESE = 30
|
98
|
-
SINDHI = 31
|
99
|
-
UNINTERPRETED = 32
|
100
|
-
|
101
|
-
ID2NAME = {
|
102
|
-
ROMAN => "Roman",
|
103
|
-
JAPANESE => "Japanese",
|
104
|
-
TRADITIONAL_CHINESE => "Traditional Chinese",
|
105
|
-
KOREAN => "Korean",
|
106
|
-
ARABIC => "Arabic",
|
107
|
-
HEBREW => "Hebrew",
|
108
|
-
GREEK => "Greek",
|
109
|
-
RUSSIAN => "Russian",
|
110
|
-
RSYMBOL => "RSymbol",
|
111
|
-
DEVANAGARI => "Devanagari",
|
112
|
-
GURMUKHI => "Gurmukhi",
|
113
|
-
GUJARATI => "Gujarati",
|
114
|
-
ORIYA => "Orya",
|
115
|
-
BENGALI => "Bengali",
|
116
|
-
TAMIL => "Tamil",
|
117
|
-
TELUGU => "Telugu",
|
118
|
-
KANNADA => "Kannada",
|
119
|
-
MALAYALAM => "Malayalam",
|
120
|
-
SINHALESE => "Sinhalese",
|
121
|
-
BURMESE => "Burmese",
|
122
|
-
KHMER => "Khmer",
|
123
|
-
THAI => "Thai",
|
124
|
-
LAOTIAN => "Laotian",
|
125
|
-
GEORGIAN => "Georgian",
|
126
|
-
ARMENIAN => "Armenian",
|
127
|
-
SIMPLIFIED_CHINESE => "Simplified Chinese",
|
128
|
-
TIBETAN => "Tibetan",
|
129
|
-
MONGOLIAN => "Mongolian",
|
130
|
-
GEEZ => "Geez",
|
131
|
-
SLAVIC => "Slavic",
|
132
|
-
VIETNAMESE => "Vietnamese",
|
133
|
-
SINDHI => "Sindhi",
|
134
|
-
UNINTERPRETED => "Uninterpreted"
|
135
|
-
}
|
136
|
-
end
|
137
|
-
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|