anchor.diff:  the absence of such a character on input, input data is assumed
   to be in big-endian order.  Output is written in native byte
   order with a leading byte-order mark."
  +  :aliases '(:ucs-4)
     :max-units-per-char 1
     :code-unit-size 32
     :native-endianness t ; not necessarily true when decoding
  
positive.code:            (the (unsigned-byte 10)
               (- ,u2 #xdc00)))))))
  
  (define-character-encoding :utf-16
      "A 16-bit, variable-length encoding in which characters with
  code points less than #x10000 can be encoded in a single 16-bit
  
negative.code:   :nul-encoding #(0 0 0 0)
    :ambiguous #+little-endian t #+big-endian nil)
  
  (define-ucs :utf-32 4)
  
  (define-character-encoding :utf-32le
     "A 32-bit, fixed-length encoding in which all Unicode
  characters can be encoded in a single 32-bit word. Input data is assumed
  to be in little-endian order.  Output is also written in little-endian byte
  order without a leading byte-order mark."
    :max-units-per-char 1
    :code-unit-size 32
    :aliases '(:utf-32/le :ucs-4le :ucs-4/le)
    :native-endianness #+little-endian t #+big-endian nil
    :literal-char-code-limit #x110000
    :nul-encoding #(0 0 0 0))
  
  (define-ucs :utf-32le 4 :le)
  
  (define-character-encoding :utf-32be
     "A 32-bit, fixed-length encoding in which all Unicode
  characters can be encoded in a single 32-bit word. Input data is assumed
  to be in big-endian order.  Output is also written in big-endian byte
  order without a leading byte-order mark."
    :max-units-per-char 1
    :code-unit-size 32
    :aliases '(:utf-32/be :ucs-4be :ucs-4/be)
    :native-endianness #+little-endian nil #+big-endian t
    :literal-char-code-limit #x110000
    :nul-encoding #(0 0 0 0))
  
  (define-ucs :utf-32be 4 :be)
  
  ;; UCS-2
  
  (define-character-encoding :ucs-2
     "A 16-bit, fixed-length encoding in which all Unicode
  characters can be encoded in a single 16-bit word.  The
  endianness of the encoded data is indicated by the endianness of
  a byte-order-mark character (#\u+feff) prepended to the data; in
  the absence of such a character on input, input data is assumed
  to be in big-endian order.  Output is written in native byte
  order with a leading byte-order mark."
    :aliases '(:ucs-2)
    :max-units-per-char 1
    :code-unit-size 16
    :native-endianness t ; not necessarily true when decoding
    :literal-char-code-limit #x10000
    :use-bom #+little-endian :ucs-2le #+big-endian :ucs-2be
    :bom-encoding
    #+big-endian #(#xfe #xff)
    #+little-endian #(#xff #xfe)
    :nul-encoding #(0 0)
    :ambiguous #+little-endian t #+big-endian nil)
  
  (define-ucs :ucs-2 2 nil #x10000)
  
  (define-character-encoding :ucs-2le
     "A 16-bit, fixed-length encoding in which all Unicode
  characters can be encoded in a single 16-bit word. Input data is assumed
  to be in little-endian order.  Output is also written in little-endian byte
  order without a leading byte-order mark."
    :max-units-per-char 1
    :code-unit-size 16
    :aliases '(:ucs-2/le)
    :native-endianness #+little-endian t #+big-endian nil
    :literal-char-code-limit #x10000
    :nul-encoding #(0 0))
  
  (define-ucs :ucs-2le 2 :le #x10000)
  
  (define-character-encoding :ucs-2be
     "A 16-bit, fixed-length encoding in which all Unicode
  characters can be encoded in a single 16-bit word. Input data is assumed
  to be in big-endian order.  Output is also written in big-endian byte
  order without a leading byte-order mark."
    :max-units-per-char 1
    :code-unit-size 16
    :aliases '(:ucs-2/be)
    :native-endianness #+little-endian nil #+big-endian t
    :literal-char-code-limit #x10000
    :nul-encoding #(0 0))
  
  (define-ucs :ucs-2be 2 :be #x10000)
  