hexapdf 0.9.3 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +35 -0
 - data/CONTRIBUTERS +2 -1
 - data/VERSION +1 -1
 - data/lib/hexapdf/cli/command.rb +9 -5
 - data/lib/hexapdf/cli/images.rb +68 -13
 - data/lib/hexapdf/cli/inspect.rb +201 -71
 - data/lib/hexapdf/content/canvas.rb +1 -1
 - data/lib/hexapdf/dictionary.rb +15 -1
 - data/lib/hexapdf/dictionary_fields.rb +5 -4
 - data/lib/hexapdf/document.rb +15 -6
 - data/lib/hexapdf/encryption/security_handler.rb +3 -2
 - data/lib/hexapdf/font/encoding/mac_expert_encoding.rb +165 -165
 - data/lib/hexapdf/font/true_type_wrapper.rb +2 -2
 - data/lib/hexapdf/font/type1/afm_parser.rb +1 -1
 - data/lib/hexapdf/image_loader/jpeg.rb +13 -11
 - data/lib/hexapdf/reference.rb +5 -0
 - data/lib/hexapdf/revision.rb +14 -0
 - data/lib/hexapdf/serializer.rb +6 -6
 - data/lib/hexapdf/type/annotations/markup_annotation.rb +1 -1
 - data/lib/hexapdf/type/image.rb +3 -1
 - data/lib/hexapdf/version.rb +1 -1
 - data/lib/hexapdf/xref_section.rb +8 -0
 - data/man/man1/hexapdf.1 +88 -20
 - data/test/data/images/truecolour-alpha-8bit.png +0 -0
 - data/test/data/images/ycck.jpg +0 -0
 - data/test/hexapdf/content/test_canvas.rb +2 -2
 - data/test/hexapdf/document/test_images.rb +7 -5
 - data/test/hexapdf/encryption/test_security_handler.rb +13 -0
 - data/test/hexapdf/image_loader/test_jpeg.rb +10 -0
 - data/test/hexapdf/image_loader/test_png.rb +3 -2
 - data/test/hexapdf/test_dictionary.rb +9 -0
 - data/test/hexapdf/test_dictionary_fields.rb +15 -0
 - data/test/hexapdf/test_document.rb +5 -2
 - data/test/hexapdf/test_reference.rb +4 -0
 - data/test/hexapdf/test_revision.rb +12 -0
 - data/test/hexapdf/test_writer.rb +5 -5
 - data/test/hexapdf/test_xref_section.rb +11 -0
 - data/test/hexapdf/type/test_form.rb +1 -1
 - data/test/hexapdf/type/test_image.rb +28 -19
 - metadata +3 -2
 
| 
         @@ -1253,7 +1253,7 @@ module HexaPDF 
     | 
|
| 
       1253 
1253 
     | 
    
         
             
                  #   end
         
     | 
| 
       1254 
1254 
     | 
    
         
             
                  #
         
     | 
| 
       1255 
1255 
     | 
    
         
             
                  #   image = document.object(5)    # Object with oid=5 is an image XObject in this example
         
     | 
| 
       1256 
     | 
    
         
            -
                  #   canvas.xobject(image, at: [100, 200], width: 200,  
     | 
| 
      
 1256 
     | 
    
         
            +
                  #   canvas.xobject(image, at: [100, 200], width: 200, height: 300)
         
     | 
| 
       1257 
1257 
     | 
    
         
             
                  #
         
     | 
| 
       1258 
1258 
     | 
    
         
             
                  # See: PDF1.7 s8.8, s.8.10.1
         
     | 
| 
       1259 
1259 
     | 
    
         
             
                  def xobject(obj, at:, width: nil, height: nil)
         
     | 
    
        data/lib/hexapdf/dictionary.rb
    CHANGED
    
    | 
         @@ -284,7 +284,16 @@ module HexaPDF 
     | 
|
| 
       284 
284 
     | 
    
         | 
| 
       285 
285 
     | 
    
         
             
                    # Check the type of the field
         
     | 
| 
       286 
286 
     | 
    
         
             
                    unless field.valid_object?(obj)
         
     | 
| 
       287 
     | 
    
         
            -
                       
     | 
| 
      
 287 
     | 
    
         
            +
                      msg = "Type of field #{name} is invalid: #{obj.class}"
         
     | 
| 
      
 288 
     | 
    
         
            +
                      if field.type.include?(String) && obj.kind_of?(Symbol)
         
     | 
| 
      
 289 
     | 
    
         
            +
                        yield(msg, true)
         
     | 
| 
      
 290 
     | 
    
         
            +
                        self[name] = obj.to_s
         
     | 
| 
      
 291 
     | 
    
         
            +
                      elsif field.type.include?(Symbol) && obj.kind_of?(String)
         
     | 
| 
      
 292 
     | 
    
         
            +
                        yield(msg, true)
         
     | 
| 
      
 293 
     | 
    
         
            +
                        self[name] = obj.intern
         
     | 
| 
      
 294 
     | 
    
         
            +
                      else
         
     | 
| 
      
 295 
     | 
    
         
            +
                        yield(msg, false)
         
     | 
| 
      
 296 
     | 
    
         
            +
                      end
         
     | 
| 
       288 
297 
     | 
    
         
             
                    end
         
     | 
| 
       289 
298 
     | 
    
         | 
| 
       290 
299 
     | 
    
         
             
                    # Check if field value needs to be (in)direct
         
     | 
| 
         @@ -304,4 +313,9 @@ module HexaPDF 
     | 
|
| 
       304 
313 
     | 
    
         | 
| 
       305 
314 
     | 
    
         
             
              end
         
     | 
| 
       306 
315 
     | 
    
         | 
| 
      
 316 
     | 
    
         
            +
              # :nodoc:
         
     | 
| 
      
 317 
     | 
    
         
            +
              # Forward declaration of Stream to circumvent circular require problem
         
     | 
| 
      
 318 
     | 
    
         
            +
              class Stream < Dictionary
         
     | 
| 
      
 319 
     | 
    
         
            +
              end
         
     | 
| 
      
 320 
     | 
    
         
            +
             
     | 
| 
       307 
321 
     | 
    
         
             
            end
         
     | 
| 
         @@ -118,8 +118,7 @@ module HexaPDF 
     | 
|
| 
       118 
118 
     | 
    
         
             
                  # Returns the array with valid types for this field.
         
     | 
| 
       119 
119 
     | 
    
         
             
                  def type
         
     | 
| 
       120 
120 
     | 
    
         
             
                    return @type if @type_mapped
         
     | 
| 
       121 
     | 
    
         
            -
                    @ 
     | 
| 
       122 
     | 
    
         
            -
                    @type.concat(@converters.map(&:additional_types).compact.flatten)
         
     | 
| 
      
 121 
     | 
    
         
            +
                    @type.concat(@converters.flat_map(&:additional_types).compact)
         
     | 
| 
       123 
122 
     | 
    
         
             
                    @type.map! do |type|
         
     | 
| 
       124 
123 
     | 
    
         
             
                      if type.kind_of?(Symbol)
         
     | 
| 
       125 
124 
     | 
    
         
             
                        HexaPDF::GlobalConfiguration.constantize('object.type_map', type)
         
     | 
| 
         @@ -128,6 +127,7 @@ module HexaPDF 
     | 
|
| 
       128 
127 
     | 
    
         
             
                      end
         
     | 
| 
       129 
128 
     | 
    
         
             
                    end
         
     | 
| 
       130 
129 
     | 
    
         
             
                    @type.uniq!
         
     | 
| 
      
 130 
     | 
    
         
            +
                    @type_mapped = true
         
     | 
| 
       131 
131 
     | 
    
         
             
                    @type
         
     | 
| 
       132 
132 
     | 
    
         
             
                  end
         
     | 
| 
       133 
133 
     | 
    
         | 
| 
         @@ -191,8 +191,9 @@ module HexaPDF 
     | 
|
| 
       191 
191 
     | 
    
         
             
                  # Wraps the given data value in the PDF specific type class if it can be converted. Otherwise
         
     | 
| 
       192 
192 
     | 
    
         
             
                  # returns +nil+.
         
     | 
| 
       193 
193 
     | 
    
         
             
                  def self.convert(data, type, document)
         
     | 
| 
       194 
     | 
    
         
            -
                    return if data.kind_of?(type.first) || 
     | 
| 
       195 
     | 
    
         
            -
                      data.kind_of?(HexaPDF::Dictionary))
         
     | 
| 
      
 194 
     | 
    
         
            +
                    return if data.kind_of?(type.first) ||
         
     | 
| 
      
 195 
     | 
    
         
            +
                      !(data.kind_of?(Hash) || data.kind_of?(HexaPDF::Dictionary)) ||
         
     | 
| 
      
 196 
     | 
    
         
            +
                      (type.first <= HexaPDF::Stream && (data.kind_of?(Hash) || data.data.stream.nil?))
         
     | 
| 
       196 
197 
     | 
    
         
             
                    document.wrap(data, type: type.first)
         
     | 
| 
       197 
198 
     | 
    
         
             
                  end
         
     | 
| 
       198 
199 
     | 
    
         | 
    
        data/lib/hexapdf/document.rb
    CHANGED
    
    | 
         @@ -277,17 +277,22 @@ module HexaPDF 
     | 
|
| 
       277 
277 
     | 
    
         
             
                # needed.
         
     | 
| 
       278 
278 
     | 
    
         
             
                #
         
     | 
| 
       279 
279 
     | 
    
         
             
                # The class of the returned object is always a subclass of HexaPDF::Object (or of
         
     | 
| 
       280 
     | 
    
         
            -
                # HexaPDF::Stream if a +stream+ is given). Which subclass is used, depends on the values
         
     | 
| 
       281 
     | 
    
         
            -
                #  
     | 
| 
       282 
     | 
    
         
            -
                #  
     | 
| 
      
 280 
     | 
    
         
            +
                # HexaPDF::Stream if a +stream+ is given). Which subclass is used, depends on the values of the
         
     | 
| 
      
 281 
     | 
    
         
            +
                # +type+ and +subtype+ options as well as on the 'object.type_map' and 'object.subtype_map'
         
     | 
| 
      
 282 
     | 
    
         
            +
                # global configuration options:
         
     | 
| 
       283 
283 
     | 
    
         
             
                #
         
     | 
| 
       284 
     | 
    
         
            -
                # * First +type+ is used to try to determine the class. If it is  
     | 
| 
       285 
     | 
    
         
            -
                #    
     | 
| 
      
 284 
     | 
    
         
            +
                # * First +type+ is used to try to determine the class. If it is not provided and if +obj+ is a
         
     | 
| 
      
 285 
     | 
    
         
            +
                #   hash with a :Type field, the value of this field is used instead. If the resulting object is
         
     | 
| 
      
 286 
     | 
    
         
            +
                #   already a Class object, it is used, otherwise the type is looked up in 'object.type_map'.
         
     | 
| 
       286 
287 
     | 
    
         
             
                #
         
     | 
| 
       287 
288 
     | 
    
         
             
                # * If +subtype+ is provided or can be determined because +obj+ is a hash with a :Subtype or :S
         
     | 
| 
       288 
289 
     | 
    
         
             
                #   field, the type and subtype together are used to look up a special subtype class in
         
     | 
| 
       289 
290 
     | 
    
         
             
                #   'object.subtype_map'.
         
     | 
| 
       290 
291 
     | 
    
         
             
                #
         
     | 
| 
      
 292 
     | 
    
         
            +
                #   Additionally, if there is no +type+ but a +subtype+, all required fields of the subtype
         
     | 
| 
      
 293 
     | 
    
         
            +
                #   class need to have values; otherwise the subtype class is not used. This is done to better
         
     | 
| 
      
 294 
     | 
    
         
            +
                #   prevent invalid mappings when only partial knowledge (:Type key is missing) is available.
         
     | 
| 
      
 295 
     | 
    
         
            +
                #
         
     | 
| 
       291 
296 
     | 
    
         
             
                # * If there is no valid class after the above steps, HexaPDF::Stream is used if a stream is
         
     | 
| 
       292 
297 
     | 
    
         
             
                #   given, HexaPDF::Dictionary if the given objecct is a hash or else HexaPDF::Object is used.
         
     | 
| 
       293 
298 
     | 
    
         
             
                #
         
     | 
| 
         @@ -330,7 +335,11 @@ module HexaPDF 
     | 
|
| 
       330 
335 
     | 
    
         
             
                    subtype ||= deref(data.value[:Subtype]) || deref(data.value[:S])
         
     | 
| 
       331 
336 
     | 
    
         
             
                  end
         
     | 
| 
       332 
337 
     | 
    
         
             
                  if subtype
         
     | 
| 
       333 
     | 
    
         
            -
                     
     | 
| 
      
 338 
     | 
    
         
            +
                    sub_klass = GlobalConfiguration.constantize('object.subtype_map', type, subtype) { klass }
         
     | 
| 
      
 339 
     | 
    
         
            +
                    if type ||
         
     | 
| 
      
 340 
     | 
    
         
            +
                        sub_klass&.each_field&.none? {|name, field| field.required? && !data.value.key?(name) }
         
     | 
| 
      
 341 
     | 
    
         
            +
                      klass = sub_klass
         
     | 
| 
      
 342 
     | 
    
         
            +
                    end
         
     | 
| 
       334 
343 
     | 
    
         
             
                  end
         
     | 
| 
       335 
344 
     | 
    
         | 
| 
       336 
345 
     | 
    
         
             
                  klass ||= if data.stream
         
     | 
| 
         @@ -257,7 +257,7 @@ module HexaPDF 
     | 
|
| 
       257 
257 
     | 
    
         | 
| 
       258 
258 
     | 
    
         
             
                    key = object_key(obj.oid, obj.gen, string_algorithm)
         
     | 
| 
       259 
259 
     | 
    
         
             
                    each_string_in_object(obj.value) do |str|
         
     | 
| 
       260 
     | 
    
         
            -
                      next if str.empty?
         
     | 
| 
      
 260 
     | 
    
         
            +
                      next if str.empty? || (obj.type == :Sig && obj[:Contents].equal?(str))
         
     | 
| 
       261 
261 
     | 
    
         
             
                      str.replace(string_algorithm.decrypt(key, str))
         
     | 
| 
       262 
262 
     | 
    
         
             
                    end
         
     | 
| 
       263 
263 
     | 
    
         | 
| 
         @@ -275,7 +275,8 @@ module HexaPDF 
     | 
|
| 
       275 
275 
     | 
    
         
             
                  #
         
     | 
| 
       276 
276 
     | 
    
         
             
                  # See: PDF1.7 s7.6.2
         
     | 
| 
       277 
277 
     | 
    
         
             
                  def encrypt_string(str, obj)
         
     | 
| 
       278 
     | 
    
         
            -
                    return str if str.empty? || obj == document.trailer[:Encrypt] || obj.type == :XRef
         
     | 
| 
      
 278 
     | 
    
         
            +
                    return str if str.empty? || obj == document.trailer[:Encrypt] || obj.type == :XRef ||
         
     | 
| 
      
 279 
     | 
    
         
            +
                      (obj.type == :Sig && obj[:Contents].equal?(str))
         
     | 
| 
       279 
280 
     | 
    
         | 
| 
       280 
281 
     | 
    
         
             
                    key = object_key(obj.oid, obj.gen, string_algorithm)
         
     | 
| 
       281 
282 
     | 
    
         
             
                    string_algorithm.encrypt(key, str)
         
     | 
| 
         @@ -49,171 +49,171 @@ module HexaPDF 
     | 
|
| 
       49 
49 
     | 
    
         
             
                      super
         
     | 
| 
       50 
50 
     | 
    
         
             
                      @encoding_name = :MacExpertEncoding
         
     | 
| 
       51 
51 
     | 
    
         
             
                      @code_to_name = {
         
     | 
| 
       52 
     | 
    
         
            -
                        0276 
     | 
| 
       53 
     | 
    
         
            -
                        0207 
     | 
| 
       54 
     | 
    
         
            -
                        0211 
     | 
| 
       55 
     | 
    
         
            -
                        0047 
     | 
| 
       56 
     | 
    
         
            -
                        0212 
     | 
| 
       57 
     | 
    
         
            -
                        0210 
     | 
| 
       58 
     | 
    
         
            -
                        0214 
     | 
| 
       59 
     | 
    
         
            -
                        0141 
     | 
| 
       60 
     | 
    
         
            -
                        0213 
     | 
| 
       61 
     | 
    
         
            -
                        0363 
     | 
| 
       62 
     | 
    
         
            -
                        0142 
     | 
| 
       63 
     | 
    
         
            -
                        0256 
     | 
| 
       64 
     | 
    
         
            -
                        0215 
     | 
| 
       65 
     | 
    
         
            -
                        0311 
     | 
| 
       66 
     | 
    
         
            -
                        0136 
     | 
| 
       67 
     | 
    
         
            -
                        0143 
     | 
| 
       68 
     | 
    
         
            -
                        0254 
     | 
| 
       69 
     | 
    
         
            -
                        0372 
     | 
| 
       70 
     | 
    
         
            -
                        0144 
     | 
| 
       71 
     | 
    
         
            -
                        0216 
     | 
| 
       72 
     | 
    
         
            -
                        0220 
     | 
| 
       73 
     | 
    
         
            -
                        0221 
     | 
| 
       74 
     | 
    
         
            -
                        0217 
     | 
| 
       75 
     | 
    
         
            -
                        0145 
     | 
| 
       76 
     | 
    
         
            -
                        0104 
     | 
| 
       77 
     | 
    
         
            -
                        0146 
     | 
| 
       78 
     | 
    
         
            -
                        0140 
     | 
| 
       79 
     | 
    
         
            -
                        0147 
     | 
| 
       80 
     | 
    
         
            -
                        0150 
     | 
| 
       81 
     | 
    
         
            -
                        0042 
     | 
| 
       82 
     | 
    
         
            -
                        0222 
     | 
| 
       83 
     | 
    
         
            -
                        0224 
     | 
| 
       84 
     | 
    
         
            -
                        0225 
     | 
| 
       85 
     | 
    
         
            -
                        0223 
     | 
| 
       86 
     | 
    
         
            -
                        0151 
     | 
| 
       87 
     | 
    
         
            -
                        0152 
     | 
| 
       88 
     | 
    
         
            -
                        0153 
     | 
| 
       89 
     | 
    
         
            -
                        0302 
     | 
| 
       90 
     | 
    
         
            -
                        0154 
     | 
| 
       91 
     | 
    
         
            -
                        0364 
     | 
| 
       92 
     | 
    
         
            -
                        0155 
     | 
| 
       93 
     | 
    
         
            -
                        0156 
     | 
| 
       94 
     | 
    
         
            -
                        0226 
     | 
| 
       95 
     | 
    
         
            -
                        0317 
     | 
| 
       96 
     | 
    
         
            -
                        0227 
     | 
| 
       97 
     | 
    
         
            -
                        0231 
     | 
| 
       98 
     | 
    
         
            -
                        0232 
     | 
| 
       99 
     | 
    
         
            -
                        0362 
     | 
| 
       100 
     | 
    
         
            -
                        0230 
     | 
| 
       101 
     | 
    
         
            -
                        0277 
     | 
| 
       102 
     | 
    
         
            -
                        0157 
     | 
| 
       103 
     | 
    
         
            -
                        0233 
     | 
| 
       104 
     | 
    
         
            -
                        0160 
     | 
| 
       105 
     | 
    
         
            -
                        0161 
     | 
| 
       106 
     | 
    
         
            -
                        0373 
     | 
| 
       107 
     | 
    
         
            -
                        0162 
     | 
| 
       108 
     | 
    
         
            -
                        0247 
     | 
| 
       109 
     | 
    
         
            -
                        0163 
     | 
| 
       110 
     | 
    
         
            -
                        0271 
     | 
| 
       111 
     | 
    
         
            -
                        0176 
     | 
| 
       112 
     | 
    
         
            -
                        0164 
     | 
| 
       113 
     | 
    
         
            -
                        0234 
     | 
| 
       114 
     | 
    
         
            -
                        0236 
     | 
| 
       115 
     | 
    
         
            -
                        0237 
     | 
| 
       116 
     | 
    
         
            -
                        0235 
     | 
| 
       117 
     | 
    
         
            -
                        0165 
     | 
| 
       118 
     | 
    
         
            -
                        0166 
     | 
| 
       119 
     | 
    
         
            -
                        0167 
     | 
| 
       120 
     | 
    
         
            -
                        0170 
     | 
| 
       121 
     | 
    
         
            -
                        0264 
     | 
| 
       122 
     | 
    
         
            -
                        0330 
     | 
| 
       123 
     | 
    
         
            -
                        0171 
     | 
| 
       124 
     | 
    
         
            -
                        0275 
     | 
| 
       125 
     | 
    
         
            -
                        0172 
     | 
| 
       126 
     | 
    
         
            -
                        0046 
     | 
| 
       127 
     | 
    
         
            -
                        0201 
     | 
| 
       128 
     | 
    
         
            -
                        0365 
     | 
| 
       129 
     | 
    
         
            -
                        0251 
     | 
| 
       130 
     | 
    
         
            -
                        0043 
     | 
| 
       131 
     | 
    
         
            -
                        0202 
     | 
| 
       132 
     | 
    
         
            -
                        0072 
     | 
| 
       133 
     | 
    
         
            -
                        0173 
     | 
| 
       134 
     | 
    
         
            -
                        0054 
     | 
| 
       135 
     | 
    
         
            -
                        0262 
     | 
| 
       136 
     | 
    
         
            -
                        0370 
     | 
| 
       137 
     | 
    
         
            -
                        0266 
     | 
| 
       138 
     | 
    
         
            -
                        0044 
     | 
| 
       139 
     | 
    
         
            -
                        0045 
     | 
| 
       140 
     | 
    
         
            -
                        0353 
     | 
| 
       141 
     | 
    
         
            -
                        0245 
     | 
| 
       142 
     | 
    
         
            -
                        0070 
     | 
| 
       143 
     | 
    
         
            -
                        0241 
     | 
| 
       144 
     | 
    
         
            -
                        0344 
     | 
| 
       145 
     | 
    
         
            -
                        0326 
     | 
| 
       146 
     | 
    
         
            -
                        0041 
     | 
| 
       147 
     | 
    
         
            -
                        0126 
     | 
| 
       148 
     | 
    
         
            -
                        0131 
     | 
| 
       149 
     | 
    
         
            -
                        0132 
     | 
| 
       150 
     | 
    
         
            -
                        0127 
     | 
| 
       151 
     | 
    
         
            -
                        0320 
     | 
| 
       152 
     | 
    
         
            -
                        0114 
     | 
| 
       153 
     | 
    
         
            -
                        0260 
     | 
| 
       154 
     | 
    
         
            -
                        0065 
     | 
| 
       155 
     | 
    
         
            -
                        0336 
     | 
| 
       156 
     | 
    
         
            -
                        0130 
     | 
| 
       157 
     | 
    
         
            -
                        0242 
     | 
| 
       158 
     | 
    
         
            -
                        0064 
     | 
| 
       159 
     | 
    
         
            -
                        0335 
     | 
| 
       160 
     | 
    
         
            -
                        0057 
     | 
| 
       161 
     | 
    
         
            -
                        0055 
     | 
| 
       162 
     | 
    
         
            -
                        0137 
     | 
| 
       163 
     | 
    
         
            -
                        0321 
     | 
| 
       164 
     | 
    
         
            -
                        0351 
     | 
| 
       165 
     | 
    
         
            -
                        0361 
     | 
| 
       166 
     | 
    
         
            -
                        0367 
     | 
| 
       167 
     | 
    
         
            -
                        0273 
     | 
| 
       168 
     | 
    
         
            -
                        0071 
     | 
| 
       169 
     | 
    
         
            -
                        0341 
     | 
| 
       170 
     | 
    
         
            -
                        0366 
     | 
| 
       171 
     | 
    
         
            -
                        0053 
     | 
| 
       172 
     | 
    
         
            -
                        0112 
     | 
| 
       173 
     | 
    
         
            -
                        0174 
     | 
| 
       174 
     | 
    
         
            -
                        0110 
     | 
| 
       175 
     | 
    
         
            -
                        0301 
     | 
| 
       176 
     | 
    
         
            -
                        0061 
     | 
| 
       177 
     | 
    
         
            -
                        0107 
     | 
| 
       178 
     | 
    
         
            -
                        0332 
     | 
| 
       179 
     | 
    
         
            -
                        0116 
     | 
| 
       180 
     | 
    
         
            -
                        0257 
     | 
| 
       181 
     | 
    
         
            -
                        0133 
     | 
| 
       182 
     | 
    
         
            -
                        0050 
     | 
| 
       183 
     | 
    
         
            -
                        0135 
     | 
| 
       184 
     | 
    
         
            -
                        0051 
     | 
| 
       185 
     | 
    
         
            -
                        0056 
     | 
| 
       186 
     | 
    
         
            -
                        0263 
     | 
| 
       187 
     | 
    
         
            -
                        0371 
     | 
| 
       188 
     | 
    
         
            -
                        0300 
     | 
| 
       189 
     | 
    
         
            -
                        0077 
     | 
| 
       190 
     | 
    
         
            -
                        0345 
     | 
| 
       191 
     | 
    
         
            -
                        0175 
     | 
| 
       192 
     | 
    
         
            -
                        0073 
     | 
| 
       193 
     | 
    
         
            -
                        0115 
     | 
| 
       194 
     | 
    
         
            -
                        0246 
     | 
| 
       195 
     | 
    
         
            -
                        0067 
     | 
| 
       196 
     | 
    
         
            -
                        0340 
     | 
| 
       197 
     | 
    
         
            -
                        0244 
     | 
| 
       198 
     | 
    
         
            -
                        0066 
     | 
| 
       199 
     | 
    
         
            -
                        0337 
     | 
| 
       200 
     | 
    
         
            -
                        0040 
     | 
| 
       201 
     | 
    
         
            -
                        0352 
     | 
| 
       202 
     | 
    
         
            -
                        0113 
     | 
| 
       203 
     | 
    
         
            -
                        0243 
     | 
| 
       204 
     | 
    
         
            -
                        0063 
     | 
| 
       205 
     | 
    
         
            -
                        0111 
     | 
| 
       206 
     | 
    
         
            -
                        0075 
     | 
| 
       207 
     | 
    
         
            -
                        0334 
     | 
| 
       208 
     | 
    
         
            -
                        0346 
     | 
| 
       209 
     | 
    
         
            -
                        0052 
     | 
| 
       210 
     | 
    
         
            -
                        0252 
     | 
| 
       211 
     | 
    
         
            -
                        0062 
     | 
| 
       212 
     | 
    
         
            -
                        0333 
     | 
| 
       213 
     | 
    
         
            -
                        0117 
     | 
| 
       214 
     | 
    
         
            -
                        0274 
     | 
| 
       215 
     | 
    
         
            -
                        0060 
     | 
| 
       216 
     | 
    
         
            -
                        0342 
     | 
| 
      
 52 
     | 
    
         
            +
                        0276 => :AEsmall,
         
     | 
| 
      
 53 
     | 
    
         
            +
                        0207 => :Aacutesmall,
         
     | 
| 
      
 54 
     | 
    
         
            +
                        0211 => :Acircumflexsmall,
         
     | 
| 
      
 55 
     | 
    
         
            +
                        0047 => :Acutesmall,
         
     | 
| 
      
 56 
     | 
    
         
            +
                        0212 => :Adieresissmall,
         
     | 
| 
      
 57 
     | 
    
         
            +
                        0210 => :Agravesmall,
         
     | 
| 
      
 58 
     | 
    
         
            +
                        0214 => :Aringsmall,
         
     | 
| 
      
 59 
     | 
    
         
            +
                        0141 => :Asmall,
         
     | 
| 
      
 60 
     | 
    
         
            +
                        0213 => :Atildesmall,
         
     | 
| 
      
 61 
     | 
    
         
            +
                        0363 => :Brevesmall,
         
     | 
| 
      
 62 
     | 
    
         
            +
                        0142 => :Bsmall,
         
     | 
| 
      
 63 
     | 
    
         
            +
                        0256 => :Caronsmall,
         
     | 
| 
      
 64 
     | 
    
         
            +
                        0215 => :Ccedillasmall,
         
     | 
| 
      
 65 
     | 
    
         
            +
                        0311 => :Cedillasmall,
         
     | 
| 
      
 66 
     | 
    
         
            +
                        0136 => :Circumflexsmall,
         
     | 
| 
      
 67 
     | 
    
         
            +
                        0143 => :Csmall,
         
     | 
| 
      
 68 
     | 
    
         
            +
                        0254 => :Dieresissmall,
         
     | 
| 
      
 69 
     | 
    
         
            +
                        0372 => :Dotaccentsmall,
         
     | 
| 
      
 70 
     | 
    
         
            +
                        0144 => :Dsmall,
         
     | 
| 
      
 71 
     | 
    
         
            +
                        0216 => :Eacutesmall,
         
     | 
| 
      
 72 
     | 
    
         
            +
                        0220 => :Ecircumflexsmall,
         
     | 
| 
      
 73 
     | 
    
         
            +
                        0221 => :Edieresissmall,
         
     | 
| 
      
 74 
     | 
    
         
            +
                        0217 => :Egravesmall,
         
     | 
| 
      
 75 
     | 
    
         
            +
                        0145 => :Esmall,
         
     | 
| 
      
 76 
     | 
    
         
            +
                        0104 => :Ethsmall,
         
     | 
| 
      
 77 
     | 
    
         
            +
                        0146 => :Fsmall,
         
     | 
| 
      
 78 
     | 
    
         
            +
                        0140 => :Gravesmall,
         
     | 
| 
      
 79 
     | 
    
         
            +
                        0147 => :Gsmall,
         
     | 
| 
      
 80 
     | 
    
         
            +
                        0150 => :Hsmall,
         
     | 
| 
      
 81 
     | 
    
         
            +
                        0042 => :Hungarumlautsmall,
         
     | 
| 
      
 82 
     | 
    
         
            +
                        0222 => :Iacutesmall,
         
     | 
| 
      
 83 
     | 
    
         
            +
                        0224 => :Icircumflexsmall,
         
     | 
| 
      
 84 
     | 
    
         
            +
                        0225 => :Idieresissmall,
         
     | 
| 
      
 85 
     | 
    
         
            +
                        0223 => :Igravesmall,
         
     | 
| 
      
 86 
     | 
    
         
            +
                        0151 => :Ismall,
         
     | 
| 
      
 87 
     | 
    
         
            +
                        0152 => :Jsmall,
         
     | 
| 
      
 88 
     | 
    
         
            +
                        0153 => :Ksmall,
         
     | 
| 
      
 89 
     | 
    
         
            +
                        0302 => :Lslashsmall,
         
     | 
| 
      
 90 
     | 
    
         
            +
                        0154 => :Lsmall,
         
     | 
| 
      
 91 
     | 
    
         
            +
                        0364 => :Macronsmall,
         
     | 
| 
      
 92 
     | 
    
         
            +
                        0155 => :Msmall,
         
     | 
| 
      
 93 
     | 
    
         
            +
                        0156 => :Nsmall,
         
     | 
| 
      
 94 
     | 
    
         
            +
                        0226 => :Ntildesmall,
         
     | 
| 
      
 95 
     | 
    
         
            +
                        0317 => :OEsmall,
         
     | 
| 
      
 96 
     | 
    
         
            +
                        0227 => :Oacutesmall,
         
     | 
| 
      
 97 
     | 
    
         
            +
                        0231 => :Ocircumflexsmall,
         
     | 
| 
      
 98 
     | 
    
         
            +
                        0232 => :Odieresissmall,
         
     | 
| 
      
 99 
     | 
    
         
            +
                        0362 => :Ogoneksmall,
         
     | 
| 
      
 100 
     | 
    
         
            +
                        0230 => :Ogravesmall,
         
     | 
| 
      
 101 
     | 
    
         
            +
                        0277 => :Oslashsmall,
         
     | 
| 
      
 102 
     | 
    
         
            +
                        0157 => :Osmall,
         
     | 
| 
      
 103 
     | 
    
         
            +
                        0233 => :Otildesmall,
         
     | 
| 
      
 104 
     | 
    
         
            +
                        0160 => :Psmall,
         
     | 
| 
      
 105 
     | 
    
         
            +
                        0161 => :Qsmall,
         
     | 
| 
      
 106 
     | 
    
         
            +
                        0373 => :Ringsmall,
         
     | 
| 
      
 107 
     | 
    
         
            +
                        0162 => :Rsmall,
         
     | 
| 
      
 108 
     | 
    
         
            +
                        0247 => :Scaronsmall,
         
     | 
| 
      
 109 
     | 
    
         
            +
                        0163 => :Ssmall,
         
     | 
| 
      
 110 
     | 
    
         
            +
                        0271 => :Thornsmall,
         
     | 
| 
      
 111 
     | 
    
         
            +
                        0176 => :Tildesmall,
         
     | 
| 
      
 112 
     | 
    
         
            +
                        0164 => :Tsmall,
         
     | 
| 
      
 113 
     | 
    
         
            +
                        0234 => :Uacutesmall,
         
     | 
| 
      
 114 
     | 
    
         
            +
                        0236 => :Ucircumflexsmall,
         
     | 
| 
      
 115 
     | 
    
         
            +
                        0237 => :Udieresissmall,
         
     | 
| 
      
 116 
     | 
    
         
            +
                        0235 => :Ugravesmall,
         
     | 
| 
      
 117 
     | 
    
         
            +
                        0165 => :Usmall,
         
     | 
| 
      
 118 
     | 
    
         
            +
                        0166 => :Vsmall,
         
     | 
| 
      
 119 
     | 
    
         
            +
                        0167 => :Wsmall,
         
     | 
| 
      
 120 
     | 
    
         
            +
                        0170 => :Xsmall,
         
     | 
| 
      
 121 
     | 
    
         
            +
                        0264 => :Yacutesmall,
         
     | 
| 
      
 122 
     | 
    
         
            +
                        0330 => :Ydieresissmall,
         
     | 
| 
      
 123 
     | 
    
         
            +
                        0171 => :Ysmall,
         
     | 
| 
      
 124 
     | 
    
         
            +
                        0275 => :Zcaronsmall,
         
     | 
| 
      
 125 
     | 
    
         
            +
                        0172 => :Zsmall,
         
     | 
| 
      
 126 
     | 
    
         
            +
                        0046 => :ampersandsmall,
         
     | 
| 
      
 127 
     | 
    
         
            +
                        0201 => :asuperior,
         
     | 
| 
      
 128 
     | 
    
         
            +
                        0365 => :bsuperior,
         
     | 
| 
      
 129 
     | 
    
         
            +
                        0251 => :centinferior,
         
     | 
| 
      
 130 
     | 
    
         
            +
                        0043 => :centoldstyle,
         
     | 
| 
      
 131 
     | 
    
         
            +
                        0202 => :centsuperior,
         
     | 
| 
      
 132 
     | 
    
         
            +
                        0072 => :colon,
         
     | 
| 
      
 133 
     | 
    
         
            +
                        0173 => :colonmonetary,
         
     | 
| 
      
 134 
     | 
    
         
            +
                        0054 => :comma,
         
     | 
| 
      
 135 
     | 
    
         
            +
                        0262 => :commainferior,
         
     | 
| 
      
 136 
     | 
    
         
            +
                        0370 => :commasuperior,
         
     | 
| 
      
 137 
     | 
    
         
            +
                        0266 => :dollarinferior,
         
     | 
| 
      
 138 
     | 
    
         
            +
                        0044 => :dollaroldstyle,
         
     | 
| 
      
 139 
     | 
    
         
            +
                        0045 => :dollarsuperior,
         
     | 
| 
      
 140 
     | 
    
         
            +
                        0353 => :dsuperior,
         
     | 
| 
      
 141 
     | 
    
         
            +
                        0245 => :eightinferior,
         
     | 
| 
      
 142 
     | 
    
         
            +
                        0070 => :eightoldstyle,
         
     | 
| 
      
 143 
     | 
    
         
            +
                        0241 => :eightsuperior,
         
     | 
| 
      
 144 
     | 
    
         
            +
                        0344 => :esuperior,
         
     | 
| 
      
 145 
     | 
    
         
            +
                        0326 => :exclamdownsmall,
         
     | 
| 
      
 146 
     | 
    
         
            +
                        0041 => :exclamsmall,
         
     | 
| 
      
 147 
     | 
    
         
            +
                        0126 => :ff,
         
     | 
| 
      
 148 
     | 
    
         
            +
                        0131 => :ffi,
         
     | 
| 
      
 149 
     | 
    
         
            +
                        0132 => :ffl,
         
     | 
| 
      
 150 
     | 
    
         
            +
                        0127 => :fi,
         
     | 
| 
      
 151 
     | 
    
         
            +
                        0320 => :figuredash,
         
     | 
| 
      
 152 
     | 
    
         
            +
                        0114 => :fiveeighths,
         
     | 
| 
      
 153 
     | 
    
         
            +
                        0260 => :fiveinferior,
         
     | 
| 
      
 154 
     | 
    
         
            +
                        0065 => :fiveoldstyle,
         
     | 
| 
      
 155 
     | 
    
         
            +
                        0336 => :fivesuperior,
         
     | 
| 
      
 156 
     | 
    
         
            +
                        0130 => :fl,
         
     | 
| 
      
 157 
     | 
    
         
            +
                        0242 => :fourinferior,
         
     | 
| 
      
 158 
     | 
    
         
            +
                        0064 => :fouroldstyle,
         
     | 
| 
      
 159 
     | 
    
         
            +
                        0335 => :foursuperior,
         
     | 
| 
      
 160 
     | 
    
         
            +
                        0057 => :fraction,
         
     | 
| 
      
 161 
     | 
    
         
            +
                        0055 => :hyphen,
         
     | 
| 
      
 162 
     | 
    
         
            +
                        0137 => :hypheninferior,
         
     | 
| 
      
 163 
     | 
    
         
            +
                        0321 => :hyphensuperior,
         
     | 
| 
      
 164 
     | 
    
         
            +
                        0351 => :isuperior,
         
     | 
| 
      
 165 
     | 
    
         
            +
                        0361 => :lsuperior,
         
     | 
| 
      
 166 
     | 
    
         
            +
                        0367 => :msuperior,
         
     | 
| 
      
 167 
     | 
    
         
            +
                        0273 => :nineinferior,
         
     | 
| 
      
 168 
     | 
    
         
            +
                        0071 => :nineoldstyle,
         
     | 
| 
      
 169 
     | 
    
         
            +
                        0341 => :ninesuperior,
         
     | 
| 
      
 170 
     | 
    
         
            +
                        0366 => :nsuperior,
         
     | 
| 
      
 171 
     | 
    
         
            +
                        0053 => :onedotenleader,
         
     | 
| 
      
 172 
     | 
    
         
            +
                        0112 => :oneeighth,
         
     | 
| 
      
 173 
     | 
    
         
            +
                        0174 => :onefitted,
         
     | 
| 
      
 174 
     | 
    
         
            +
                        0110 => :onehalf,
         
     | 
| 
      
 175 
     | 
    
         
            +
                        0301 => :oneinferior,
         
     | 
| 
      
 176 
     | 
    
         
            +
                        0061 => :oneoldstyle,
         
     | 
| 
      
 177 
     | 
    
         
            +
                        0107 => :onequarter,
         
     | 
| 
      
 178 
     | 
    
         
            +
                        0332 => :onesuperior,
         
     | 
| 
      
 179 
     | 
    
         
            +
                        0116 => :onethird,
         
     | 
| 
      
 180 
     | 
    
         
            +
                        0257 => :osuperior,
         
     | 
| 
      
 181 
     | 
    
         
            +
                        0133 => :parenleftinferior,
         
     | 
| 
      
 182 
     | 
    
         
            +
                        0050 => :parenleftsuperior,
         
     | 
| 
      
 183 
     | 
    
         
            +
                        0135 => :parenrightinferior,
         
     | 
| 
      
 184 
     | 
    
         
            +
                        0051 => :parenrightsuperior,
         
     | 
| 
      
 185 
     | 
    
         
            +
                        0056 => :period,
         
     | 
| 
      
 186 
     | 
    
         
            +
                        0263 => :periodinferior,
         
     | 
| 
      
 187 
     | 
    
         
            +
                        0371 => :periodsuperior,
         
     | 
| 
      
 188 
     | 
    
         
            +
                        0300 => :questiondownsmall,
         
     | 
| 
      
 189 
     | 
    
         
            +
                        0077 => :questionsmall,
         
     | 
| 
      
 190 
     | 
    
         
            +
                        0345 => :rsuperior,
         
     | 
| 
      
 191 
     | 
    
         
            +
                        0175 => :rupiah,
         
     | 
| 
      
 192 
     | 
    
         
            +
                        0073 => :semicolon,
         
     | 
| 
      
 193 
     | 
    
         
            +
                        0115 => :seveneighths,
         
     | 
| 
      
 194 
     | 
    
         
            +
                        0246 => :seveninferior,
         
     | 
| 
      
 195 
     | 
    
         
            +
                        0067 => :sevenoldstyle,
         
     | 
| 
      
 196 
     | 
    
         
            +
                        0340 => :sevensuperior,
         
     | 
| 
      
 197 
     | 
    
         
            +
                        0244 => :sixinferior,
         
     | 
| 
      
 198 
     | 
    
         
            +
                        0066 => :sixoldstyle,
         
     | 
| 
      
 199 
     | 
    
         
            +
                        0337 => :sixsuperior,
         
     | 
| 
      
 200 
     | 
    
         
            +
                        0040 => :space,
         
     | 
| 
      
 201 
     | 
    
         
            +
                        0352 => :ssuperior,
         
     | 
| 
      
 202 
     | 
    
         
            +
                        0113 => :threeeighths,
         
     | 
| 
      
 203 
     | 
    
         
            +
                        0243 => :threeinferior,
         
     | 
| 
      
 204 
     | 
    
         
            +
                        0063 => :threeoldstyle,
         
     | 
| 
      
 205 
     | 
    
         
            +
                        0111 => :threequarters,
         
     | 
| 
      
 206 
     | 
    
         
            +
                        0075 => :threequartersemdash,
         
     | 
| 
      
 207 
     | 
    
         
            +
                        0334 => :threesuperior,
         
     | 
| 
      
 208 
     | 
    
         
            +
                        0346 => :tsuperior,
         
     | 
| 
      
 209 
     | 
    
         
            +
                        0052 => :twodotenleader,
         
     | 
| 
      
 210 
     | 
    
         
            +
                        0252 => :twoinferior,
         
     | 
| 
      
 211 
     | 
    
         
            +
                        0062 => :twooldstyle,
         
     | 
| 
      
 212 
     | 
    
         
            +
                        0333 => :twosuperior,
         
     | 
| 
      
 213 
     | 
    
         
            +
                        0117 => :twothirds,
         
     | 
| 
      
 214 
     | 
    
         
            +
                        0274 => :zeroinferior,
         
     | 
| 
      
 215 
     | 
    
         
            +
                        0060 => :zerooldstyle,
         
     | 
| 
      
 216 
     | 
    
         
            +
                        0342 => :zerosuperior,
         
     | 
| 
       217 
217 
     | 
    
         
             
                      }
         
     | 
| 
       218 
218 
     | 
    
         
             
                    end
         
     | 
| 
       219 
219 
     | 
    
         |