Class: Prawn::Font
- Inherits:
-
Object
- Object
- Prawn::Font
- Defined in:
- lib/prawn/font.rb
Overview
Provides font information and helper functions.
Experimental API collapse
Experimental API collapse
-
#family ⇒ Object
readonly
The current font family.
-
#name ⇒ Object
readonly
The current font name.
-
#options ⇒ Object
readonly
The options hash used to initialize the font.
Experimental API collapse
- .font_format(src, options) ⇒ Object
-
.load(document, src, options = {}) ⇒ Object
Shortcut interface for constructing a font object.
-
#add_to_current_page(subset) ⇒ Object
Registers the given subset of the current font with the current PDF page.
-
#ascender ⇒ Object
The size of the font ascender in PDF points.
-
#descender ⇒ Object
The size of the font descender in PDF points.
-
#eql?(other) ⇒ Boolean
Compliments the #hash implementation above.
-
#hash ⇒ Object
Return a hash (as in Object#hash) for the font based on the output of #inspect.
-
#height ⇒ Object
Gets height of current font in PDF points at current font size.
-
#height_at(size) ⇒ Object
Gets height of current font in PDF points at the given font size.
-
#identifier_for(subset) ⇒ Object
:nodoc:.
-
#initialize(document, name, options = {}) ⇒ Font
constructor
:nodoc:.
-
#inspect ⇒ Object
:nodoc:.
-
#line_gap ⇒ Object
The size of the recommended gap between lines of text in PDF points.
-
#normalize_encoding(_string) ⇒ Object
Normalizes the encoding of the string to an encoding supported by the font.
- #normalize_encoding!(str) ⇒ Object deprecated Deprecated.
Constructor Details
#initialize(document, name, options = {}) ⇒ Font
:nodoc:
329 330 331 332 333 334 335 336 337 338 339 |
# File 'lib/prawn/font.rb', line 329 def initialize(document, name, = {}) #:nodoc: @document = document @name = name @options = @family = [:family] @identifier = generate_unique_id @references = {} end |
Instance Attribute Details
#family ⇒ Object (readonly)
The current font family
298 299 300 |
# File 'lib/prawn/font.rb', line 298 def family @family end |
#name ⇒ Object (readonly)
The current font name
295 296 297 |
# File 'lib/prawn/font.rb', line 295 def name @name end |
#options ⇒ Object (readonly)
The options hash used to initialize the font
301 302 303 |
# File 'lib/prawn/font.rb', line 301 def @options end |
Class Method Details
.font_format(src, options) ⇒ Object
317 318 319 320 321 322 323 324 325 326 327 |
# File 'lib/prawn/font.rb', line 317 def self.font_format(src, ) return .fetch(:format, 'ttf') if src.respond_to? :read case src.to_s when /\.ttf$/i then 'ttf' when /\.otf$/i then 'otf' when /\.dfont$/i then 'dfont' when /\.ttc$/i then 'ttc' else 'afm' end end |
.load(document, src, options = {}) ⇒ Object
Shortcut interface for constructing a font object. Filenames of the form *.ttf will call Fonts::TTF.new, *.dfont Fonts::DFont.new, *.ttc goes to Fonts::TTC.new, and anything else will be passed through to Fonts::AFM.new()
307 308 309 310 311 312 313 314 315 |
# File 'lib/prawn/font.rb', line 307 def self.load(document, src, = {}) case font_format(src, ) when 'ttf' then TTF.new(document, src, ) when 'otf' then Fonts::OTF.new(document, src, ) when 'dfont' then DFont.new(document, src, ) when 'ttc' then TTC.new(document, src, ) else AFM.new(document, src, ) end end |
Instance Method Details
#add_to_current_page(subset) ⇒ Object
Registers the given subset of the current font with the current PDF page. This is safe to call multiple times for a given font and subset, as it will only add the font the first time it is called.
395 396 397 398 399 400 |
# File 'lib/prawn/font.rb', line 395 def add_to_current_page(subset) @references[subset] ||= register(subset) @document.state.page.fonts.merge!( identifier_for(subset) => @references[subset] ) end |
#ascender ⇒ Object
The size of the font ascender in PDF points
343 344 345 |
# File 'lib/prawn/font.rb', line 343 def ascender @ascender / 1000.0 * size end |
#descender ⇒ Object
The size of the font descender in PDF points
349 350 351 |
# File 'lib/prawn/font.rb', line 349 def descender -@descender / 1000.0 * size end |
#eql?(other) ⇒ Boolean
Compliments the #hash implementation above
421 422 423 424 |
# File 'lib/prawn/font.rb', line 421 def eql?(other) #:nodoc: self.class == other.class && name == other.name && family == other.family && size == other.size end |
#hash ⇒ Object
Return a hash (as in Object#hash) for the font based on the output of #inspect. This is required since font objects are used as keys in hashes that cache certain values (See Prawn::Table::Text#styled_with_of_single_character)
415 416 417 |
# File 'lib/prawn/font.rb', line 415 def hash #:nodoc: [self.class, name, family, size].hash end |
#height ⇒ Object
Gets height of current font in PDF points at current font size
387 388 389 |
# File 'lib/prawn/font.rb', line 387 def height height_at(size) end |
#height_at(size) ⇒ Object
Gets height of current font in PDF points at the given font size
380 381 382 383 |
# File 'lib/prawn/font.rb', line 380 def height_at(size) @normalized_height ||= (@ascender - @descender + @line_gap) / 1000.0 @normalized_height * size end |
#identifier_for(subset) ⇒ Object
:nodoc:
402 403 404 |
# File 'lib/prawn/font.rb', line 402 def identifier_for(subset) #:nodoc: "#{@identifier}.#{subset}".to_sym end |
#inspect ⇒ Object
:nodoc:
406 407 408 |
# File 'lib/prawn/font.rb', line 406 def inspect #:nodoc: "#{self.class.name}< #{name}: #{size} >" end |
#line_gap ⇒ Object
The size of the recommended gap between lines of text in PDF points
355 356 357 |
# File 'lib/prawn/font.rb', line 355 def line_gap @line_gap / 1000.0 * size end |
#normalize_encoding(_string) ⇒ Object
Normalizes the encoding of the string to an encoding supported by the font. The string is expected to be UTF-8 going in. It will be re-encoded and the new string will be returned. For an in-place (destructive) version, see normalize_encoding!.
363 364 365 366 |
# File 'lib/prawn/font.rb', line 363 def normalize_encoding(_string) raise NotImplementedError, 'subclasses of Prawn::Font must implement #normalize_encoding' end |
#normalize_encoding!(str) ⇒ Object
Destructive version of normalize_encoding; normalizes the encoding of a string in place.
372 373 374 375 376 |
# File 'lib/prawn/font.rb', line 372 def normalize_encoding!(str) warn 'Font#normalize_encoding! is deprecated. ' \ 'Please use non-mutating version Font#normalize_encoding instead.' str.dup.replace(normalize_encoding(str)) end |