File: fallback_fonts.rb

package info (click to toggle)
ruby-prawn 2.4.0%2Bdfsg-1~
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 4,396 kB
  • sloc: ruby: 16,090; sh: 43; makefile: 20
file content (41 lines) | stat: -rw-r--r-- 1,293 bytes parent folder | download | duplicates (2)
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
# frozen_string_literal: true

# Prawn enables the declaration of fallback fonts for those glyphs that may not
# be present in the desired font. Use the <code>:fallback_fonts</code> option
# with any of the text or text box methods, or set fallback_fonts document-wide.

require_relative '../example_helper'

filename = File.basename(__FILE__).gsub('.rb', '.pdf')
Prawn::ManualBuilder::Example.generate(filename) do
  file = "/usr/share/fonts/truetype/arphic-gkai00mp/gkai00mp.ttf"
  font_families['Kai'] = {
    normal: { file: file, font: 'Kai' }
  }

  file = "#{Prawn::DATADIR}/fonts/Panic+Sans.dfont"
  font_families['Panic Sans'] = {
    normal: { file: file, font: 'PanicSans' }
  }

  font('Panic Sans') do
    text(
      'When fallback fonts are included, each glyph will be rendered ' \
      'using the first font that includes the glyph, starting with the ' \
      'current font and then moving through the fallback fonts from left ' \
      'to right.' \
      "\n\n" \
      "hello ƒ 你好\n再见 ƒ goodbye",
      fallback_fonts: %w[Times-Roman Kai]
    )
  end
  move_down 20

  formatted_text(
    [
      { text: 'Fallback fonts can even override' },
      { text: 'fragment fonts (你好)', font: 'Times-Roman' }
    ],
    fallback_fonts: %w[Times-Roman Kai]
  )
end