1 Introduction

1.1 Summary of software changes

Several major changes are required to allow Liquid Common Lisp to support international character sets. The following summary introduces the required changes and the motivation for them; these changes are discussed in detail later in this guide.

To accommodate multibyte characters, Liquid Common Lisp supports double-byte character data. Double-byte character data can be read from and written to files and saved in strings. A double-byte character is considered one character object so that it can be treated in the same manner as single-byte characters. For efficiency, single-byte character streams and strings can be used when double-byte character data are not needed.

This change requires modifications to the data type hierarchy, including the introduction of specialized subtypes of characters and strings. The new data types are described in Chapter 2, "Data Types and Type Specifiers".

In addition, Liquid Common Lisp includes new functions to construct and access characters and strings. These functions are described in Chapter 3, "Using Characters and Strings".

To support multiple character sets, stream and I/O operations must allow user programs to specify which of several possible external character encoding schemes is being used, and Lisp must correctly map the character data from the external codes to the character objects.

Liquid Common Lisp now provides a default encoding scheme and allows you to specify different encoding schemes when a file is opened. This change requires the addition of new variables as well as new keyword arguments to the Common Lisp functionopen. These changes are described in Chapter 3, "Using Characters and Strings".

The Character Subcommittee of X3J13 has dropped the bits and font attributes of characters from the Common Lisp standard; instead, characters can have implementation-defined character attributes. All types, functions, and constants that handle bits and font attributes have been removed from the Common Lisp specification; the existing character-handling functions can accept implementation-defined character attributes as constrained by Common Lisp: The Language, 2nd edition, by Guy L. Steele, Jr. (hereafter referred to as CLtL2).

To minimize the disruption caused by this change, Liquid Common Lisp will retain bits and font attributes as an extension to Common Lisp. Character objects can have bits and font attributes. The new character data typeaugmented-character has been added, which is equivalent tocharacter except for character I/O operations. Specifically, whenaugmented-character is specified as the value of the:element-type keyword argument toopen and tomake-lisp-stream, bits and font attributes of the character are preserved; for all other element types, bits and font attributes are ignored.

The new type specifier and changes to character-handling operations are described in Chapter 3, "Using Characters and Strings".

International Character Sets - 9 SEP 1996

Generated with Harlequin WebMaker