# -*- encoding: utf-8; frozen_string_literal: true -*-
#
#--
# This file is part of HexaPDF.
#
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
# Copyright (C) 2014-2019 Thomas Leitner
#
# HexaPDF is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License version 3 as
# published by the Free Software Foundation with the addition of the
# following permission added to Section 15 as permitted in Section 7(a):
# FOR ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY
# THOMAS LEITNER, THOMAS LEITNER DISCLAIMS THE WARRANTY OF NON
# INFRINGEMENT OF THIRD PARTY RIGHTS.
#
# HexaPDF is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with HexaPDF. If not, see .
#
# The interactive user interfaces in modified source and object code
# versions of HexaPDF must display Appropriate Legal Notices, as required
# under Section 5 of the GNU Affero General Public License version 3.
#
# In accordance with Section 7(b) of the GNU Affero General Public
# License, a covered work must retain the producer line in every PDF that
# is created or manipulated using HexaPDF.
#
# If the GNU Affero General Public License doesn't fit your need,
# commercial licenses are available at .
#++
require 'hexapdf/font/encoding/base'
module HexaPDF
module Font
module Encoding
# The Windows Code Page 1252, the standard Windows encoding for Latin texts.
#
# See: PDF1.7 sD.1, sD.2
class WinAnsiEncoding < Base
def initialize #:nodoc:
super
@encoding_name = :WinAnsiEncoding
@code_to_name = {
0101 => :A,
0306 => :AE,
0301 => :Aacute,
0302 => :Acircumflex,
0304 => :Adieresis,
0300 => :Agrave,
0305 => :Aring,
0303 => :Atilde,
0102 => :B,
0103 => :C,
0307 => :Ccedilla,
0104 => :D,
0105 => :E,
0311 => :Eacute,
0312 => :Ecircumflex,
0313 => :Edieresis,
0310 => :Egrave,
0320 => :Eth,
0200 => :Euro,
0106 => :F,
0107 => :G,
0110 => :H,
0111 => :I,
0315 => :Iacute,
0316 => :Icircumflex,
0317 => :Idieresis,
0314 => :Igrave,
0112 => :J,
0113 => :K,
0114 => :L,
0115 => :M,
0116 => :N,
0321 => :Ntilde,
0117 => :O,
0214 => :OE,
0323 => :Oacute,
0324 => :Ocircumflex,
0326 => :Odieresis,
0322 => :Ograve,
0330 => :Oslash,
0325 => :Otilde,
0120 => :P,
0121 => :Q,
0122 => :R,
0123 => :S,
0212 => :Scaron,
0124 => :T,
0336 => :Thorn,
0125 => :U,
0332 => :Uacute,
0333 => :Ucircumflex,
0334 => :Udieresis,
0331 => :Ugrave,
0126 => :V,
0127 => :W,
0130 => :X,
0131 => :Y,
0335 => :Yacute,
0237 => :Ydieresis,
0132 => :Z,
0216 => :Zcaron,
0141 => :a,
0341 => :aacute,
0342 => :acircumflex,
0264 => :acute,
0344 => :adieresis,
0346 => :ae,
0340 => :agrave,
0046 => :ampersand,
0345 => :aring,
0136 => :asciicircum,
0176 => :asciitilde,
0052 => :asterisk,
0100 => :at,
0343 => :atilde,
0142 => :b,
0134 => :backslash,
0174 => :bar,
0173 => :braceleft,
0175 => :braceright,
0133 => :bracketleft,
0135 => :bracketright,
0246 => :brokenbar,
0225 => :bullet,
0143 => :c,
0347 => :ccedilla,
0270 => :cedilla,
0242 => :cent,
0210 => :circumflex,
0072 => :colon,
0054 => :comma,
0251 => :copyright,
0244 => :currency,
0144 => :d,
0206 => :dagger,
0207 => :daggerdbl,
0260 => :degree,
0250 => :dieresis,
0367 => :divide,
0044 => :dollar,
0145 => :e,
0351 => :eacute,
0352 => :ecircumflex,
0353 => :edieresis,
0350 => :egrave,
0070 => :eight,
0205 => :ellipsis,
0227 => :emdash,
0226 => :endash,
0075 => :equal,
0360 => :eth,
0041 => :exclam,
0241 => :exclamdown,
0146 => :f,
0065 => :five,
0203 => :florin,
0064 => :four,
0147 => :g,
0337 => :germandbls,
0140 => :grave,
0076 => :greater,
0253 => :guillemotleft,
0273 => :guillemotright,
0213 => :guilsinglleft,
0233 => :guilsinglright,
0150 => :h,
0055 => :hyphen,
0151 => :i,
0355 => :iacute,
0356 => :icircumflex,
0357 => :idieresis,
0354 => :igrave,
0152 => :j,
0153 => :k,
0154 => :l,
0074 => :less,
0254 => :logicalnot,
0155 => :m,
0257 => :macron,
0265 => :mu,
0327 => :multiply,
0156 => :n,
0071 => :nine,
0361 => :ntilde,
0043 => :numbersign,
0157 => :o,
0363 => :oacute,
0364 => :ocircumflex,
0366 => :odieresis,
0234 => :oe,
0362 => :ograve,
0061 => :one,
0275 => :onehalf,
0274 => :onequarter,
0271 => :onesuperior,
0252 => :ordfeminine,
0272 => :ordmasculine,
0370 => :oslash,
0365 => :otilde,
0160 => :p,
0266 => :paragraph,
0050 => :parenleft,
0051 => :parenright,
0045 => :percent,
0056 => :period,
0267 => :periodcentered,
0211 => :perthousand,
0053 => :plus,
0261 => :plusminus,
0161 => :q,
0077 => :question,
0277 => :questiondown,
0042 => :quotedbl,
0204 => :quotedblbase,
0223 => :quotedblleft,
0224 => :quotedblright,
0221 => :quoteleft,
0222 => :quoteright,
0202 => :quotesinglbase,
0047 => :quotesingle,
0162 => :r,
0256 => :registered,
0163 => :s,
0232 => :scaron,
0247 => :section,
0073 => :semicolon,
0067 => :seven,
0066 => :six,
0057 => :slash,
0040 => :space,
0243 => :sterling,
0164 => :t,
0376 => :thorn,
0063 => :three,
0276 => :threequarters,
0263 => :threesuperior,
0230 => :tilde,
0231 => :trademark,
0062 => :two,
0262 => :twosuperior,
0165 => :u,
0372 => :uacute,
0373 => :ucircumflex,
0374 => :udieresis,
0371 => :ugrave,
0137 => :underscore,
0166 => :v,
0167 => :w,
0170 => :x,
0171 => :y,
0375 => :yacute,
0377 => :ydieresis,
0245 => :yen,
0172 => :z,
0236 => :zcaron,
0060 => :zero,
# additions due to PDF1.7 sD.2 footnote 5,6
0240 => :space,
0255 => :hyphen,
}
# additions due to PDF1.7 sD.2 footnote 3
041.upto(255) do |i|
next if @code_to_name.key?(i)
@code_to_name[i] = :bullet
end
end
end
end
end
end