Module: Prawn::Core::Text
- Included in:
- Text
- Defined in:
- lib/prawn/core/text.rb,
lib/prawn/core/text/formatted/wrap.rb,
lib/prawn/core/text/formatted/arranger.rb,
lib/prawn/core/text/formatted/line_wrap.rb
Overview
:nodoc:
Defined Under Namespace
Modules: Formatted
Constant Summary collapse
- VALID_OPTIONS =
These should be used as a base. Extensions may build on this list
[:kerning, :size, :style]
- MODES =
{ :fill => 0, :stroke => 1, :fill_stroke => 2, :invisible => 3, :fill_clip => 4, :stroke_clip => 5, :fill_stroke_clip => 6, :clip => 7 }
Instance Attribute Summary collapse
-
#skip_encoding ⇒ Object
readonly
Returns the value of attribute skip_encoding.
Instance Method Summary collapse
-
#character_spacing(amount = nil) ⇒ Object
Increases or decreases the space between characters.
-
#default_kerning(boolean) ⇒ Object
(also: #default_kerning=)
Call with a boolean to set the document-wide kerning setting.
-
#default_kerning? ⇒ Boolean
Retrieve the current default kerning setting.
-
#default_leading(number = nil) ⇒ Object
(also: #default_leading=)
Call with no argument to retrieve the current default leading.
-
#draw_text!(text, options) ⇒ Object
Low level text placement method.
-
#fallback_fonts(fallback_fonts = nil) ⇒ Object
(also: #fallback_fonts=)
Call with no argument to retrieve the current fallback fonts.
-
#process_text_options(options) ⇒ Object
Low level call to set the current font style and extract text options from an options hash.
-
#text_direction(direction = nil) ⇒ Object
(also: #text_direction=)
Call with no argument to retrieve the current text direction.
-
#text_rendering_mode(mode = nil) ⇒ Object
Call with no argument to retrieve the current text rendering mode.
-
#word_spacing(amount = nil) ⇒ Object
Increases or decreases the space between words.
Instance Attribute Details
#skip_encoding ⇒ Object (readonly)
Returns the value of attribute skip_encoding.
20 21 22 |
# File 'lib/prawn/core/text.rb', line 20 def skip_encoding @skip_encoding end |
Instance Method Details
#character_spacing(amount = nil) ⇒ Object
Increases or decreases the space between characters. For horizontal text, a positive value will increase the space. For veritical text, a positive value will decrease the space.
208 209 210 211 212 213 214 215 216 217 218 219 220 |
# File 'lib/prawn/core/text.rb', line 208 def character_spacing(amount=nil) return @character_spacing || 0 if amount.nil? original_character_spacing = character_spacing if original_character_spacing == amount yield else @character_spacing = amount add_content "\n%.3f Tc" % amount yield add_content "\n%.3f Tc" % original_character_spacing @character_spacing = original_character_spacing end end |
#default_kerning(boolean) ⇒ Object Also known as: default_kerning=
Call with a boolean to set the document-wide kerning setting. This can be overridden using the :kerning text option when drawing text or a text box.
pdf.default_kerning = false
pdf.text("hello world") # text is not kerned
pdf.text("hello world", :kerning => true) # text is kerned
64 65 66 |
# File 'lib/prawn/core/text.rb', line 64 def default_kerning(boolean) @default_kerning = boolean end |
#default_kerning? ⇒ Boolean
Retrieve the current default kerning setting.
Defaults to true
51 52 53 54 |
# File 'lib/prawn/core/text.rb', line 51 def default_kerning? return true if @default_kerning.nil? @default_kerning end |
#default_leading(number = nil) ⇒ Object Also known as: default_leading=
Call with no argument to retrieve the current default leading.
Call with a number to set the document-wide text leading. This can be overridden using the :leading text option when drawing text or a text box.
pdf.default_leading = 7
pdf.text("hello world") # a leading of 7 is used
pdf.text("hello world", :leading => 0) # a leading of 0 is used
Defaults to 0
82 83 84 85 86 87 88 89 |
# File 'lib/prawn/core/text.rb', line 82 def default_leading(number=nil) if number.nil? return 0 if @default_leading.nil? @default_leading else @default_leading = number end end |
#draw_text!(text, options) ⇒ Object
Low level text placement method. All font and size alterations should already be set
25 26 27 28 |
# File 'lib/prawn/core/text.rb', line 25 def draw_text!(text, ) x,y = map_to_absolute([:at]) add_text_content(text,x,y,) end |
#fallback_fonts(fallback_fonts = nil) ⇒ Object Also known as: fallback_fonts=
Call with no argument to retrieve the current fallback fonts.
Call with an array of font names. Each name must be the name of an AFM font or the name that was used to register a family of TTF fonts (see Prawn::Document#font_families). If present, then each glyph will be rendered using the first font that includes the glyph, starting with the current font and then moving through :fallback_fonts from left to right.
Call with an empty array to turn off fallback fonts
file = “#BASEDIR/data/fonts/gkai00mp.ttf” font_families = {
:normal => { :file => file, :font => "Kai" }
} file = “#BASEDIR/data/fonts/Action Man.dfont” font_families[“Action Man”] = {
:normal => { :file => file, :font => "ActionMan" },
} fallback_fonts [“Times-Roman”, “Kai”] font “Action Man” text “hello ƒ 你好” > hello prints in Action Man > ƒ prints in Times-Roman > 你好 prints in Kai
fallback_fonts [] # clears document-wide fallback fonts
Side effects:
-
Increased overhead when fallback fonts are declared as each glyph is checked to see whether it exists in the current font
156 157 158 159 160 161 162 163 |
# File 'lib/prawn/core/text.rb', line 156 def fallback_fonts(fallback_fonts=nil) if fallback_fonts.nil? return [] if @fallback_fonts.nil? @fallback_fonts else @fallback_fonts = fallback_fonts end end |
#process_text_options(options) ⇒ Object
Low level call to set the current font style and extract text options from an options hash. Should be called from within a save_font block
33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/prawn/core/text.rb', line 33 def () if [:style] raise "Bad font family" unless font.family font(font.family, :style => [:style]) end # must compare against false to keep kerning on as default unless [:kerning] == false [:kerning] = font.has_kerning_data? end [:size] ||= font_size end |
#text_direction(direction = nil) ⇒ Object Also known as: text_direction=
Call with no argument to retrieve the current text direction.
Call with a symbol to set the document-wide text direction. This can be overridden using the :direction text option when drawing text or a text box.
pdf.text_direction = :rtl
pdf.text("hello world") # prints "dlrow olleh"
pdf.text("hello world", :direction => :ltr) # prints "hello world"
Valid directions are:
-
:ltr - left-to-right (default)
-
:rtl - right-to-left
Side effects:
-
When printing left-to-right, the default text alignment is :left
-
When printing right-to-left, the default text alignment is :right
113 114 115 116 117 118 119 120 |
# File 'lib/prawn/core/text.rb', line 113 def text_direction(direction=nil) if direction.nil? return :ltr if @text_direction.nil? @text_direction else @text_direction = direction end end |
#text_rendering_mode(mode = nil) ⇒ Object
Call with no argument to retrieve the current text rendering mode.
Call with a symbol and block to temporarily change the current text rendering mode.
pdf.text_rendering_mode(:stroke) do
pdf.text("Outlined Text")
end
Valid modes are:
-
:fill - fill text (default)
-
:stroke - stroke text
-
:fill_stroke - fill, then stroke text
-
:invisible - invisible text
-
:fill_clip - fill text then add to path for clipping
-
:stroke_clip - stroke text then add to path for clipping
-
:fill_stroke_clip - fill then stroke text, then add to path for clipping
-
:clip - add text to path for clipping
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/prawn/core/text.rb', line 187 def text_rendering_mode(mode=nil) return @text_rendering_mode || :fill if mode.nil? unless MODES.keys.include?(mode) raise ArgumentError, "mode must be between one of #{MODES.keys.join(', ')} (#{mode})" end original_mode = text_rendering_mode if original_mode == mode yield else @text_rendering_mode = mode add_content "\n#{MODES[mode]} Tr" yield add_content "\n#{MODES[original_mode]} Tr" @text_rendering_mode = original_mode end end |
#word_spacing(amount = nil) ⇒ Object
Increases or decreases the space between words. For horizontal text, a positive value will increase the space. For veritical text, a positive value will decrease the space.
226 227 228 229 230 231 232 233 234 235 236 237 238 |
# File 'lib/prawn/core/text.rb', line 226 def word_spacing(amount=nil) return @word_spacing || 0 if amount.nil? original_word_spacing = word_spacing if original_word_spacing == amount yield else @word_spacing = amount add_content "\n%.3f Tw" % amount yield add_content "\n%.3f Tw" % original_word_spacing @word_spacing = original_word_spacing end end |