An ad hoc working group of ISO/IEC JTC1 recently held a meeting to
discuss the implications of the imminent ISO 10646 multi-octet
character set standard for existing and future standards developed
elsewhere in JTC1. As this certainly bears on SGML, I am, with
permission, cross-posting the group's recommendations from a mail
list to which I subscribe to a couple of other relevant mail lists.
If you're burning to discuss these issues with those who must act
in response to them, probably the best thing to do is to get in touch
with your national standards organization, and seek out those
concerned with SC18, the JTC1 subcommittee under which SGML was
----- Begin Included Message -----
Recommendations of Meeting
Date: 23 April, 1993
To: ISO/IEC JTC1/SC22
cc: ISO/IEC JTC1/SC2
From: Ad Hoc Meeting on Character Sets, 21-23 April, 1993,
Subject: Meeting Report and Recommendations
The Ad Hoc meeting on character sets was called to address issues
associated with the implementation of ISO/IEC 10646, Universal
Multiple-Octet Coded Character Set (UCS). The meeting was attended by
twenty-one representatives from six working groups of SC22, SC2, SC18,
XOPEN, and POSIX (attendance list, and document register are
ISO/IEC 10646 has been approved and forwarded to ISO ITTF for
publication as an International Standard. It has a far reaching impact
on programming languages and information technology standards in
general, opening the door to extended natural language processing,
improved international communication, and presentation.
The necessity for some computer applications to now support many (or
almost all) of the world's scripts and languages has led to the
realization that coded characters and glyphs are distinct.
Processing of the sequence of coded characters is part of the
programming language API and therefore is a concern to SC22.
Programming language standards produced by SC22 working groups should,
therefore, support a more general model than the simple byte equal
coded character equal glyph model. A model general enough to support
ISO/IEC 10646 encodings is appropriate; such a model would support not
only ISO/IEC 10646, but other encodings as well.
In addition to requirements on individual working groups and
programming language standards, SC22 should also be concerned with
interoperability between those programming language standards. While
difficult for practices already standardized, SC22 should require that
the models for encoded character data incorporated into programming
language standards provide for the interchange of ISO/IEC 10646 encoded
Concerns have been raised about the compatibility of ISO/IEC 10646 to
other standards and with implementation difficulties. These concerns
appear to be a natural consequence of making a major technological step
forward. The specific issues identified by the Ad Hoc meeting
attendees and their recommendations are provided below.
The members wish to express their appreciation to Msrs. Mike Ksar and
Glenn Adams (SC2) for their presentations on ISO/IEC 10646, Alan
Griffee (SC18) for his presentation on character/glyph relationship,
and Gary Miller for his presentation on the XPG/POSIX model. The
members also wish to express their appreciation to Danish Standards and
their staff for hosting a pleasant and well supported meeting.
The goal of the meeting was to identify policies and principles
regarding the use of character sets, with emphasis on ISO/IEC 10646,
and to identify areas of concerns including at least those presented at
the SC22 Plenary at Ellevuori, Finland, 1992, as documented in SC22
N1239 (see Hellerup 16).
Issues identified by the ad hoc group were:
The SC22 working groups use different terminology for the character set
related terms, including the "character" term itself. This causes
problems when the programming languages interoperate, and also problems
for cross language products like WG11 binding standards and POSIX
operating system standards.
Also standards from other JTC1 SC's using SC22 standards will have
problems if the terminology and definitions are not aligned at the JTC1
level. The phrase "graphic library" is a case in point. The problem
is accentuated with ISO/IEC 10646 which is more complex than the usual
series of SC2 standards, and introduces some new terminology.
2.2. Current High Level Language data types
There are problems in handling the various forms of ISO/IEC 10646 in
2.2.1 C, C++ and POSIX have problems handling the NUL octet in UCS-2
and UCS-4 in current implementations, as an octet with this value is
the string terminator. Many current POSIX implementations cannot handle
UCS-2 and UCS-4 in file names and text files.
2.2.2. POSIX uses / (solidus) as the delimiter for separation of a path
name in several parts. Due to misinterpretation of character data, many
implementations will regard any occurrence of an octet with a value
equal to the / to be the separator. This value will occur as part of
UCS-2/4 data and also UTF data - it will also occur in other encoding
2.2.3 ISO/IEC 10646 introduces a number of ways of encoding the
characters including UCS-2, UCS-4 and UTF and a number of levels (1, 2,
3) where some characters may be forbidden or have restricted use.
An application may have use for one or more of these encodings and also
other character set encodings - for example, when reading or writing
data in communication with other programs, possibly written in other
languages. Current SC22 standards seldom have provisions for
specifying the precise encoding, nor provisions for converting between
the possible encodings.
22.214.171.124 canonical representation of ISO/IEC 10646
126.96.36.199 How to deal with multiple character sets in a system
188.8.131.52 character set identification
184.108.40.206 character set selection
2.2.4. Many programming languages do not have provisions to handle in a
standardized and portable manner a large character repertoire like
ISO/IEC 10646. In this context compiler support is many times lacking
for string literals, comments, identifiers, and run-time support is
many times lacking for classification of characters (upper, lower,
numeric, stroke-count, and so on), collating and equivalence - which
may be culturally dependent.
2.2.5. There may be problems in utilizing the facilities of a large
character repertoire such as ISO/IEC 10646, as there may be limits in
hardware or software in special areas that hinders the application in
other areas. For example, there may be problems with the input and the
editing of files, which are perfectly able of being presented at some
equipment, while also there may be smaller or greater difficulties at
presenting the text on other equipment.
2.2.6 There is no awareness of positioning of variably sized
characters in formatted reports, or in formatted records.
2.3. Handling large Character sets
2.3.1. Handling of characters are often done by indexing by the
character value. With a range of the character type of about 65.000 or
2.000.000.000 possible values (for UCS-2 or UCS-4 respectively) this
may become impractical. Level 1 of ISO/IEC 10646 defines 33.426
2.3.2. An application will often only want to handle a subset of
ISO/IEC 10646, for example, a subset used in a given language
environment. There are currently no ways to specify such a subset in
many programming languages and operating systems. If such a smaller
repertoire can be specified it could significantly reduce the system
requirements for the application.
2.4. Composite sequences
ISO/IEC 10646 introduces the concept of "composite sequences" where
characters can be combined with following "combining characters" to
form a graphical symbol, and a potentially equally-looking graphical
symbol can be present too in the standard.
2.4.1. this introduces a number of ways to code the same graphical
symbol. Testing for equality of strings is not normally specified to
handle such alternatives in the character encoding.
2.4.2. The composite sequences may require read ahead of a potentially
unlimited number of character before a program can determine the
graphical symbol read. Also the requirement of read ahead implies that
an interactive program may have to wait for a possibly nonexisting
character before further processing can be initiated.
2.4.3. Storage requirements for a string of a given external length (in
columns on a screen for example) is not determinable.
2.5. Natural language dependent character handling
2.5.1 Many operations on character data are language dependent, for
example collating, transformation between upper and lower case. For this
it will be necessary to handle the data in units like "text elements"
consisting possibly of more characters, for example "ll" and "ch" when
collating Spanish. Most SC22 standards lack specifications for this.
2.5.2 There is no standardized way of identifying what language or
orthography is being used, to apply the correct language dependent
3 Recommended solutions
Based on above definition of issues, the character set ad hoc group has
prepared a set of recommendations to the SC22 working groups. We
realize that the implementation of recommendations that require the
change of existing programming language standards will take a long
time; for example, the next release of the COBOL standard will not be
issued before 1997. We therefore decided to break our recommendations
down into such which can be implemented on a short term basis and such
which will have to be implemented in the next revision of the standard
and thus can be considered long term plans.
3.1. Near term (1-3 years)
3.1.1 We recommend that support be provided for ISO/IEC 10646 where the
unit of processing is exactly one coded character - as defined in
ISO/IEC 10646. "Unit of processing" is the smallest unit a programming
language or operating system can process for ISO/IEC 10646 coded
- all coded characters in ISO/IEC 10646 level 3 are available for use
- this minimum level does not require the interpretation of composite
sequences semantically as logical processing units.
3.1.2 We recommend that SC22 address interlanguage communication of
ISO/IEC 10646 coded data.
3.1.3 We recommend that FSS-UTF be registered within ISO 2375 (ECMA).
3.2 Long term solutions:
3.2.1 We recommend that programming languages and supporting
environments provide support for composite sequences and
CC-data-elements of ISO/IEC 10646 as logical processing units.
Considerations should be given to the relation between logical
processing units and natural language and orthography, and as such may
require a mechanism for their identification.
3.2.2 We recommend that WG15 or WG20 address the need for announcement
mechanisms for the different encodings, levels and subrepertoires of
ISO/IEC 10646 (see section 17.1 of ISO/IEC 10646, second sentence).
The same mechanisms may also be used to announce other coded character
3.3. Consistent terminology:
3.3.1 We recommend that the terms defined by SC2 in the context of
ISO/IEC 10646 be adopted by SC22.
3.3.2 The relationship among characters, graphic symbols, and glyphs,
and the terminology that surrounds this relationship is currently under
joint study by SC2 and SC18.
3.3.3 The requirements of internationalization and text processing
suggest the need for additional terminology. Terminology which is not
currently defined by JTC1 standards is required. For example, a term is
needed to describe the unit of logical processing of written language
and/or the units of particular text processes such as sorting,
searching, and so on.
----- End Included Message -----