Sha256: 95147d570745c69bd940aacba7d5e7c820ab58bdfedcb11a68caa16363fad548
Contents?: true
Size: 1.35 KB
Versions: 2
Compression:
Stored size: 1.35 KB
Contents
# ## TrueType Fonts # # This example displays all glyphs of a TrueType font and shows that using a # TrueType font with HexaPDF is very similar to using one of the standard PDF # fonts. # # Before a TrueType font can be used, HexaPDF needs to be made aware of it. This # is done by setting the configuration option 'font.map'. # # Once that is done the [HexaPDF::Content::Canvas#font] method can be used as # usual. # # Usage: # : `ruby truetype.pdf [FONT_FILE]` # require 'hexapdf' doc = HexaPDF::Document.new doc.config['font.on_missing_glyph'] = ->(n,f) { f.missing_glyph_id } doc.config['font.map'] = { 'myfont' => {none: ARGV.shift || File.join(__dir__, '../test/data/fonts/Ubuntu-Title.ttf')} } wrapper = doc.fonts.load('myfont') max_gid = wrapper.wrapped_font[:maxp].num_glyphs 255.times do |page| break unless page * 256 < wrapper.wrapped_font[:maxp].num_glyphs canvas = doc.pages.add.canvas canvas.font("Helvetica", size: 10) canvas.text("Font: #{wrapper.wrapped_font.full_name}", at: [50, 825]) canvas.font("myfont", size: 15) 16.times do |y| canvas.move_text_cursor(offset: [50, 800 - y * 50], absolute: true) canvas.show_glyphs((0..15).map do |i| gid = page * 256 + y * 16 + i glyph = wrapper.glyph(gid) gid > max_gid ? [] : [glyph, -(2000 - glyph.width)] end.flatten!) end end doc.write("truetype.pdf", optimize: true)
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
hexapdf-0.3.0 | examples/truetype.rb |
hexapdf-0.2.0 | examples/truetype.rb |