File: os2.rb

package info (click to toggle)
ruby-ttfunk 1.0.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 916 kB
  • sloc: ruby: 1,719; makefile: 16
file content (78 lines) | stat: -rw-r--r-- 2,264 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
require 'ttfunk/table'

module TTFunk
  class Table
    class OS2 < Table
      attr_reader :version

      attr_reader :ave_char_width
      attr_reader :weight_class
      attr_reader :width_class
      attr_reader :type
      attr_reader :y_subscript_x_size
      attr_reader :y_subscript_y_size
      attr_reader :y_subscript_x_offset
      attr_reader :y_subscript_y_offset
      attr_reader :y_superscript_x_size
      attr_reader :y_superscript_y_size
      attr_reader :y_superscript_x_offset
      attr_reader :y_superscript_y_offset
      attr_reader :y_strikeout_size
      attr_reader :y_strikeout_position
      attr_reader :family_class
      attr_reader :panose
      attr_reader :char_range
      attr_reader :vendor_id
      attr_reader :selection
      attr_reader :first_char_index
      attr_reader :last_char_index

      attr_reader :ascent
      attr_reader :descent
      attr_reader :line_gap
      attr_reader :win_ascent
      attr_reader :win_descent
      attr_reader :code_page_range

      attr_reader :x_height
      attr_reader :cap_height
      attr_reader :default_char
      attr_reader :break_char
      attr_reader :max_context

      def tag
        "OS/2"
      end

      private

        def parse!
          @version = read(2, "n").first

          @ave_char_width = read_signed(1)
          @weight_class, @width_class = read(4, "nn")
          @type, @y_subscript_x_size, @y_subscript_y_size, @y_subscript_x_offset,
            @y_subscript_y_offset, @y_superscript_x_size, @y_superscript_y_size,
            @y_superscript_x_offset, @y_superscript_y_offset, @y_strikeout_size,
            @y_strikeout_position, @family_class = read_signed(12)
          @panose = io.read(10)

          @char_range = io.read(16)
          @vendor_id = io.read(4)

          @selection, @first_char_index, @last_char_index = read(6, "n*")

          if @version > 0
            @ascent, @descent, @line_gap = read_signed(3)
            @win_ascent, @win_descent = read(4, "nn")
            @code_page_range = io.read(8)

            if @version > 1
              @x_height, @cap_height = read_signed(2)
              @default_char, @break_char, @max_context = read(6, "nnn")
            end
          end
        end
    end
  end
end