Class: Prawn::Encoding::WinAnsi

Inherits:
Object
  • Object
show all
Defined in:
lib/prawn/encoding.rb

Overview

Map between unicode and WinAnsiEnoding

Constant Summary collapse

CHARACTERS =
%w[
  .notdef       .notdef        .notdef        .notdef
  .notdef       .notdef        .notdef        .notdef
  .notdef       .notdef        .notdef        .notdef
  .notdef       .notdef        .notdef        .notdef
  .notdef       .notdef        .notdef        .notdef
  .notdef       .notdef        .notdef        .notdef
  .notdef       .notdef        .notdef        .notdef
  .notdef       .notdef        .notdef        .notdef
  
  space         exclam         quotedbl       numbersign
  dollar        percent        ampersand      quotesingle
  parenleft     parenright     asterisk       plus
  comma         hyphen         period         slash
  zero          one            two            three
  four          five           six            seven
  eight         nine           colon          semicolon
  less          equal          greater        question

  at            A              B              C
  D             E              F              G
  H             I              J              K
  L             M              N              O
  P             Q              R              S
  T             U              V              W
  X             Y              Z              bracketleft
  backslash     bracketright   asciicircum    underscore

  grave         a              b              c
  d             e              f              g
  h             i              j              k
  l             m              n              o
  p             q              r              s
  t             u              v              w
  x             y              z              braceleft
  bar           braceright     asciitilde     .notdef

  Euro          .notdef        quotesinglbase florin
  quotedblbase  ellipsis       dagger         daggerdbl
  circumflex    perthousand    Scaron         guilsinglleft
  OE            .notdef        Zcaron         .notdef
  .notdef       quoteleft      quoteright     quotedblleft
  quotedblright bullet         endash         emdash
  tilde         trademark      scaron         guilsinglright
  oe            .notdef        zcaron         ydieresis
 
  space         exclamdown     cent           sterling
  currency      yen            brokenbar      section
  dieresis      copyright      ordfeminine    guillemotleft
  logicalnot    hyphen         registered     macron
  degree        plusminus      twosuperior    threesuperior
  acute         mu             paragraph      periodcentered
  cedilla       onesuperior    ordmasculine   guillemotright
  onequarter    onehalf        threequarters  questiondown

  Agrave        Aacute         Acircumflex    Atilde
  Adieresis     Aring          AE             Ccedilla
  Egrave        Eacute         Ecircumflex    Edieresis
  Igrave        Iacute         Icircumflex    Idieresis
  Eth           Ntilde         Ograve         Oacute
  Ocircumflex   Otilde         Odieresis      multiply
  Oslash        Ugrave         Uacute         Ucircumflex
  Udieresis     Yacute         Thorn          germandbls

  agrave        aacute         acircumflex    atilde
  adieresis     aring          ae             ccedilla
  egrave        eacute         ecircumflex    edieresis
  igrave        iacute         icircumflex    idieresis
  eth           ntilde         ograve         oacute
  ocircumflex   otilde         odieresis      divide
  oslash        ugrave         uacute         ucircumflex
  udieresis     yacute         thorn          ydieresis
]

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeWinAnsi

Returns a new instance of WinAnsi.


86
87
88
89
# File 'lib/prawn/encoding.rb', line 86

def initialize
  @mapping_file = "#{Prawn::BASEDIR}/data/encodings/win_ansi.txt"
  load_mapping if self.class.mapping.empty?
end

Class Method Details

.mappingObject


104
105
106
# File 'lib/prawn/encoding.rb', line 104

def self.mapping
  @mapping ||= {}
end

Instance Method Details

#[](codepoint) ⇒ Object

Converts a Unicode codepoint into a valid WinAnsi single byte character.

If there is no WinAnsi equivlant for a character, a _ will be substituted.


95
96
97
98
99
100
101
102
# File 'lib/prawn/encoding.rb', line 95

def [](codepoint)
  # unicode codepoints < 255 map directly to the single byte value in WinAnsi
  return codepoint if codepoint <= 255

  # There are a handful of codepoints > 255 that have equivilants in WinAnsi.
  # Replace anything else with an underscore
  self.class.mapping[codepoint] || 95
end