class TTFunk::File
Attributes
contents[R]
directory[R]
Public Class Methods
from_dfont(file, which = 0)
click to toggle source
# File lib/ttfunk.rb, line 33 def self.from_dfont(file, which = 0) new(ResourceFile.open(file) { |dfont| dfont['sfnt', which] }) end
from_ttc(file, which = 0)
click to toggle source
# File lib/ttfunk.rb, line 37 def self.from_ttc(file, which = 0) Collection.open(file) { |ttc| ttc[which] } end
new(contents, offset = 0)
click to toggle source
# File lib/ttfunk.rb, line 60 def initialize(contents, offset = 0) @contents = StringIO.new(contents) @directory = Directory.new(@contents, offset) end
open(io_or_path)
click to toggle source
# File lib/ttfunk.rb, line 29 def self.open(io_or_path) new verify_and_open(io_or_path).read end
verify_and_open(io_or_path)
click to toggle source
# File lib/ttfunk.rb, line 41 def self.verify_and_open(io_or_path) # File or IO if io_or_path.respond_to?(:rewind) io = io_or_path # Rewind if the object we're passed is an IO, so that multiple embeds of # the same IO object will work io.rewind # read the file as binary so the size is calculated correctly # guard binmode because some objects acting io-like don't implement it io.binmode if io.respond_to?(:binmode) return io end # String or Pathname io_or_path = Pathname.new(io_or_path) raise ArgumentError, "#{io_or_path} not found" unless io_or_path.file? io_or_path.open('rb') end
Public Instance Methods
ascent()
click to toggle source
# File lib/ttfunk.rb, line 65 def ascent @ascent ||= (os2.exists? && os2.ascent && os2.ascent.nonzero?) || horizontal_header.ascent end
bbox()
click to toggle source
# File lib/ttfunk.rb, line 80 def bbox [header.x_min, header.y_min, header.x_max, header.y_max] end
cff()
click to toggle source
# File lib/ttfunk.rb, line 136 def cff @cff ||= TTFunk::Table::Cff.new(self) end
cmap()
click to toggle source
# File lib/ttfunk.rb, line 92 def cmap @cmap ||= TTFunk::Table::Cmap.new(self) end
descent()
click to toggle source
# File lib/ttfunk.rb, line 70 def descent @descent ||= (os2.exists? && os2.descent && os2.descent.nonzero?) || horizontal_header.descent end
digital_signature()
click to toggle source
# File lib/ttfunk.rb, line 147 def digital_signature @digital_signature ||= if directory.tables.include?(TTFunk::Table::Dsig::TAG) TTFunk::Table::Dsig.new(self) end end
directory_info(tag)
click to toggle source
# File lib/ttfunk.rb, line 84 def directory_info(tag) directory.tables[tag.to_s] end
find_glyph(glyph_id)
click to toggle source
# File lib/ttfunk.rb, line 154 def find_glyph(glyph_id) if cff.exists? cff.top_index[0].charstrings_index[glyph_id].glyph else glyph_outlines.for(glyph_id) end end
glyph_locations()
click to toggle source
# File lib/ttfunk.rb, line 124 def glyph_locations @glyph_locations ||= TTFunk::Table::Loca.new(self) end
glyph_outlines()
click to toggle source
# File lib/ttfunk.rb, line 128 def glyph_outlines @glyph_outlines ||= TTFunk::Table::Glyf.new(self) end
header()
click to toggle source
# File lib/ttfunk.rb, line 88 def header @header ||= TTFunk::Table::Head.new(self) end
horizontal_header()
click to toggle source
# File lib/ttfunk.rb, line 96 def horizontal_header @horizontal_header ||= TTFunk::Table::Hhea.new(self) end
horizontal_metrics()
click to toggle source
# File lib/ttfunk.rb, line 100 def horizontal_metrics @horizontal_metrics ||= TTFunk::Table::Hmtx.new(self) end
kerning()
click to toggle source
# File lib/ttfunk.rb, line 108 def kerning @kerning ||= TTFunk::Table::Kern.new(self) end
line_gap()
click to toggle source
# File lib/ttfunk.rb, line 75 def line_gap @line_gap ||= (os2.exists? && os2.line_gap && os2.line_gap.nonzero?) || horizontal_header.line_gap end
maximum_profile()
click to toggle source
# File lib/ttfunk.rb, line 104 def maximum_profile @maximum_profile ||= TTFunk::Table::Maxp.new(self) end
name()
click to toggle source
# File lib/ttfunk.rb, line 112 def name @name ||= TTFunk::Table::Name.new(self) end
os2()
click to toggle source
# File lib/ttfunk.rb, line 116 def os2 @os2 ||= TTFunk::Table::OS2.new(self) end
postscript()
click to toggle source
# File lib/ttfunk.rb, line 120 def postscript @postscript ||= TTFunk::Table::Post.new(self) end
sbix()
click to toggle source
# File lib/ttfunk.rb, line 132 def sbix @sbix ||= TTFunk::Table::Sbix.new(self) end
vertical_origins()
click to toggle source
# File lib/ttfunk.rb, line 140 def vertical_origins @vertical_origins ||= if directory.tables.include?(TTFunk::Table::Vorg::TAG) TTFunk::Table::Vorg.new(self) end end