SC22/WG15 N385 Recommendations of Meeting Date: 23 April, 1993 To: ISO/IEC JTC1/SC22 cc: ISO/IEC JTC1/SC2 ISO/IEC JTC1/SC18 ISO/IEC JTC1/SC21 ISO/IEC JTC1/SC24 From: Ad Hoc Meeting on Character Sets, 21-23 April, 1993, Copenhagen, Denmark Subject: Meeting Report and Recommendations 1. Introduction 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 attached). 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 data. 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). 2. Issues. Issues identified by the ad hoc group were: 2.1. Terminology 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 some languages. 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 schemes. 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. Sub-problems: 2.2.3.1 canonical representation of ISO/IEC 10646 2.2.3.2 How to deal with multiple character sets in a system 2.2.3.3 character set identification 2.2.3.4 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 characters. 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 functionality. 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 character data. This means: - all coded characters in ISO/IEC 10646 level 3 are available for use by applications. - 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 set. 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. -- Keld Simonsen Keld@dkuug.dk