view Side-By-Side changes
draft-hoffman-i18n-terms-01.txtdraft-hoffman-i18n-terms-02.txt IMC & VPNCJanuary 17,July 18, 2001 Expires in six months Terminology Used in Internationalization in the IETF Status of this memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. Abstract This document provides a glossary of terms used in the IETF when discussing internationalization. The purpose is to help frame discussions of internationalization in the various areas of the IETF and to help introduce the main concepts to IETF participants. 1. Introduction As [RFC2277] summarizes: "Internationalization is for humans. This means that protocols are not subject to internationalization; text strings are." Many protocols throughout the IETF use text strings that are entered by, or are visible to, humans. It should be possibleto makefor anyone can enter or read these textstrings readable to anyone,strings, which means that the text must be able to be entered in typical input methods and displayed in any human language. This is the challenge of internationalization. 1.1 About this document Internationalization is discussed in many working groups of the IETF. However, few working groups have internationalization experts. When designing or updating protocols, the question often comes up "should we internationalize this" (or, more likely, "do we have to internationalize this"). This document gives an overview of internationalization as it applies to IETF standards work by covering lightly the many aspects of internationalization and the vocabulary associated with those topics. It is not meant to be a complete description of internationalization. The definitions in this document are not normative for IETF standards; however, they are useful and standards may make non-nomative reference to this document after it becomes an RFC. Some of the definitions in this document come from many earlier IETF documents and books. As in many fields, there is disagreement in the internationalization community on definitions for many words. The topic of language brings up particularly passionate opinions for experts and non-experts alike. This document attempts to define terms that will be most useful to the IETF audience. This document uses definitions from many documents that have been developed outside the IETF. The primary documents used are: - ISO/IEC 10646 [ISOIEC10646] - The Unicode Standard [UNICODE] - W3C Character Model [CHARMOD] - IETF RFCs, including [RFC2277] In the body of this document, the source for the definition is shown in angle brackets, such as <ISOIEC10646>. Note that many definitions are shown as <NONE>, which means that the definitions were crafted originally for this document. For some terms, there is avery early draft ofcommentary and examples after thedocument. Many definitions here will likely change,definitions. In those cases, the part before the angle brackets is the definition that comes from the original source, andsomethe part after the angle brackets is non-definition commentary. 2. Fundamental Terms This section covers basic topicsmay be added. Discussionthat are needed for almost anyone who is involved with internationalization of IETF protocols. Many terms in thisdocument is encouraged. Informationsection are based onthe mailing list for this document can be found at <http://www.imc.org/ietf-i18n-terms/>. 1.2 Foundations for internationalization[IDN-REQ]. language A language is a way that humans interact. The use of language occurs in many forms, the most common of which are speech, writing,vocal,andvisual. Each language form is independent: somesigning. <NONE> Some languages have a close relationship between the written andvocalspoken forms, while others have a looser relationship.[RFC1766] and [RFC1766bis] discuss[RFC3066] discusses languages in more detail. script Ascript is a collectionset ofsymbolsgraphic characters usedto represent textual information infor the written form of one or morewriting systems. A script can have many attributes, such as the numberlanguages. <ISOIEC10646> Examples ofwritten charactersscripts are Latin, Cyrillic, Greek, Arabic, andthe rules for combining written characters. Most IETF protocols that deal with languages deal only with scripts, not spoken or visual forms.Han (the ideographs used in writing Chinese, Japanese, and Korean). [RFC2277] discusses scripts inmoredetail. It is common for internationalization novices to mix up the terms "language" and "script". This can be a problem in protocols that differentiate thetwo, such as mail content protocols.two. Almost all internationalized protocols deal with scripts (the written systems), while fewer deal with languages.Many languagesA single name canbe expressed using different scripts. grapheme, phoneme, alphabet A grapheme is an abstract, atomic written entity ofmean either ascript. A phoneme is an abstract, atomic spoken entity oflanguage or aspoken language. An alphabetscript; for example, "Arabic" is both the name of ascript that maps between graphemeslanguage andphonemes. internationalization In the IETF, the verb "internationalize" means to add or improvethehandlingname ofinternational information inaprotocol. Many protocols that handle text only handle one script, the one that contains the lettersscript. Some scripts are usedin English text. Internationalizing such a protocol allows the protocol to handle more scripts, hopefully all offor many languages; for example, theones useful to anyoneRussian and Bulgarian languages are written in theworld. localization Internationalized applicationsCyrillic script. Some languages canhandle a wide variety of languages. Typical users only understand a small number of languages, so the program mustbetailored to interact with users in just the languages they know. Localization involves not only changingexpressed using different scripts; the Mongolian languageinteraction, but also other relevant changes such as display of numbers, dates, currency, and so on. i18n, l10n These are abbreviations for "internationalization" and "localization". "18"is written in both thenumber of characters between the "i"Mongolian and Cyrillic scripts. Further, some languages are normally expressed with many scripts at the"n" in "internationalization", and "10" issame time; for example, thenumber of characters betweenJapanese language is normally expressed in the"l"Han, Katakana, andthe "n"Hiragana scripts in"localization". 2. Fundamental Terms This section covers basic topics that are needed for almost anyone who is involved with internationalizationa single string ofIETF protocols. Many terms in this section are based on [IDN-REQ]. characters Atext. characteris aA member of a set of elements used for the organization, control, or representation of data.In written form,<ISOIEC10646> There are two definitions of the word "character": - alanguage is expressed in characters. The same setgeneral description ofcharacters can often be used to express many languages. In ISO 10646 [ISO10646],a text entity - the encoded entity itself When people talk about characters, they are mostly using the first definition. Standards, however, mostly use the second definition. A particular character is identified by its name, not by its shape. A name may suggest a meaning, but the character may be used for representing other meanings as well. A name may suggest a shape, but that does not imply that just that is commonly used in print. coded character Acoded character is acharacter together with its coded representation. <ISOIEC10646> coded character set A coded character set (CCS) is a set of unambiguous rules thatestablishestablishes a character set and the relationship between the characters of the set and their coded representation.The specified set of characters in<ISOIEC10646> character encoding form A character encoding form is aCCSmapping from a character set definition to the actual code units used to represent the data. <UNICODE> transcoding Transcoding isoften calledthe"repertoire".process of converting text data from one character encoding form to another. Transcoders work only at the level of character encoding and do not parse the text. Note: Transcoding may involve one-to-one, many-to-one, one-to-many or many-to-many mappings. Because some legacy mappings are glyphic, they may not only be many-to-many, but also discontinuous: thus XYZ may map to yxz. <CHARMOD> character encoding scheme A character encoding scheme (CES) is amapping from one or more codedcharactersets to a set of octets.encoding form plus byte serialization. There are many character encoding schemes in Unicode, such as UTF-8 and UTF-16. <UNICODE> Some CESs are associated with a single CCS; for example, UTF-8 [RFC2279] applies only toISOISO/IEC 10646. Other CESs, such as ISO 2022, are associated with many CCSs. charset A charset is a method of mapping a sequence of octets to a sequence of abstract characters. A charset is, in effect, a combination of one or more CCS with a CES. Charset names are registered by the IANA according to procedures documented in [RFC2278]. <NONE> Many protocol definitions use the term "character set" in their descriptions. The term "charset" is strongly preferred over the term "character set" because "character set" has many other definitions in other contexts and can ths be confusing. internationalization In the IETF, the verb "internationalize" means to add or improve the handling of international information in a protocol. <NONE> Many protocols that handle text only handle one script (often, the one that contains the letters used in English text), or leaves the question of what character set used up to local guesswork (which leads, of course, to interoperability problems). Internationalizing such a protocol allows the protocol to handle more scripts, hopefully all of the ones useful to anyone in the world. localization Aparticular charsetprocess of adapting an internationalized application platform or application to a specific cultural environment. In localization, the same semantics are preserved while the syntax mayhave different glyphs depending onbe changed. [FRAMEWORK] Localization is the act of tailoring an application for a different languagebeing used. transfer encoding syntax A transfer encoding syntax (TES) (sometimes calledor script. Some internationalized applications can handle atransfer encoding scheme) iswide variety of languages. Typical users only understand areversible transformsmall number ofalready-encoded data representedlanguages, so the program must be tailored to interact with users inone or more character encoding schemes. TESsjust the languages they know. The major work of localization is translating the user interface and documentation, not dealing with localization of protocols. Localization involves not only changing the language interaction, but also other relevant changes such as display of numbers, dates, currency, and so on. Do not confuse "localization" with "locale", which is described later in this document. i18n, l10n These areusefulabbreviations forencoding types"internationalization" and "localization". <NONE> "18" is the number of characters between the "i" and the "n" in "internationalization", and "10" is the number of characters between the "l" and the "n" in "localization". multilingual The term "multilingual" has many widely-varying definitions and thus is not recommended for use in standards. Some of the definitions relate to the ability to handle international characters; other definitions relate to the ability to handle multiple charsets; and still others relate to the ability to handle multiple languages. <NONE> displaying and rendering text To display text, a system puts characters on a visual display device such as a screen or a printer. To render text, a system analyzes the characterdata into an another format, usually for allowing new types of datainput tobe transmitted over legacy protocols. Examples of TESsdetermine how to display the text. The terms "display" and "render" are sometimes used interchangeably. <NONE> Combining characters modify the display of the character (or, in some cases, characters) that precede them. When rendering such text, theIETF include Base64 and quoted-printable (describeddisplay engine must either find the glyph inmore detailthe font that represents the base character and all of the combining characters, or it must render the combination itself. Such rendering can be straight-forward, but it is sometimes complicated when the combining marks interact with each other, such as when there are two combining marks that would appear above the same character. Formatting characters can also change the way that a renderer would display text. Note that text might be rendered as audio and/or tactile output, such as inChapter 6).systems that have been designed for people with visual disabilities. 3. Standards Bodies and Standards This section describes some of the standards bodies and standards that appear in discussions of internationalization in the IETF. This is an incomplete and possibly over-full list; listing too few bodies or standards can be just as politically dangerous as listing too many. Note that there are many other bodies that deal with internationalization; however, none of them appear commonly in IETF standards work. 3.1 Standards bodies ISO The International Organization for Standardization has been involved with standards forscriptscharacters since before the IETF was started. ISO is a non-governmental group made up of national bodies. ISO has many diverse standards in the internationalscriptscharacters area; the one that is most used in the IETF is commonly referred to as"ISO"ISO/IEC 10646", although its official name has more qualifications.ISO(The IEC is International Electrotechnical Commission). ISO/IEC 10646 describes a CCS that covers almost all known written characters in use today.ISOISO/IEC 10646 is controlled by the group known as "ISO/IEC JTC 1/SC 2 WG2", often called "WG2" for short. ISO standards go through many steps before being finished, and years often go by between changes toISOISO/IEC 10646. Information on WG2, and its work products, can be found at <http://anubis.dkuug.dk/JTC1/SC2/WG2/>. The standard can be purchased in both print and CD-ROM versions. It comes in multiple parts, and is amended quite often. This leads to difficulty in citing a specific instantiation of the standard in IETF documents. Unicode Consortium The second important group for international character standards is the Unicode Consortium. The Unicode Consortium is a trade association ofcompaniescompanies, governments, andgovernmentsother groups interested in promoting the Unicode Standard [Unicode3]. The Unicode Standard is a CCS whose repertoire is identical toISOISO/IEC 10646. The Unicode Consortium has added features to the base CCS which make it more useful in protocols, such as defining attributes for each character. The Unicode Consortium publishes addenda to the Unicode Standard asUnicode Technical Reports. ThereUnicode Technical Reports. There are many types of technical reports at various stages of maturity. The Unicode Standard and affiliated technical reports can be found at <http://www.unicode.org/>. World Wide Web Consortium Commonly known as the "W3C", this group created and maintains the standard for XML, the markup language for text that has become very popular. XML has always been fully internationalized so that there has never needed to be a new version to handle international text. local and regional standards organizations Just as there are manytypes of technical reports at various stagesnative CCSs and charsets, there are many local and regional standards organizations to create and support them. Common examples ofmaturity. The Unicode Standardthese are ANSI (United States), andaffiliated technical reports can be found at <http://www.unicode.org/> encodingsCEN/ISSS (Europe). 3.2 Encodings andtransformationstransformation formats ofISOISO/IEC 10646 Characters in theISOISO/IEC 10646 CCS can be expressed in many ways. Encoding forms are direct addressing methods, while transformation formats are methods for expressing encoding forms as bits on the wire.TwoBasic Multilingual Plane (BMP) The BMP is the first 2^16 code points in ISO/IEC 10646. The BMP is also called "plane 0". <NONE> UCS-2 and UCS-4 UCS-2 and UCS-4 are the two encoding formsaredefined forISO 10646:ISO/IEC 10646. UCS-2 addresses only thefirst 2^15BMP. Because charactersas 16-bit values. This range is also calledhave been defined outside of the"Basic Multilingual Plane" (BMP), and is also called "plane 0".BMP, many would consider UCS-2 to be dead. UCS-4 addresses the entire range of 2^31characterscode points from ISO/IEC 10646 as 32-bit values.Many transformation formats of the CCS are used in IETF standards. The two most common are:<NONE> UTF-8 UTF-8, a transformation format defined in [RFC2279], is the preferred encoding for IETF protocols. Characters in the BMP are encoded as one, two, or three octets.UTF-16 (BE & LE),Characters outside the BMP are encoded as four octets. UTF-16, UTF-16BE, and UTF-16LE UTF-16, UTF-16BE, and UTF-16LE, three transformation formats defined in [RFC2781],isare not required by any IETF standards, and are thus used much less often than UTF-8. Characters in the BMP are always encoded as two octets, and many characters outside the BMP are encoded as four octets.nativeThe three formats differ based on the order of the octets and the presence of a special lead-in mark. 3.3 Native CCSs and charsets BeforeISOISO/IEC 10646 was developed, many countries developed their own CCSs and charsets. Many dozen of these are in common use on the Internet today. Examples include ISO 8859-5(Russia)for Cyrillic and Shift-JIS(Japan).for Japanese scripts. The official list of the registered charsettagsnames for use with IETF protocols is maintained byIANA. ASCIIIANA and can be found at <http://www.iana.org/assignments/character-sets>. The list contains preferred names and aliases. Probably the most well-known native CCS is ASCII [US-ASCII]. This CCS is used in numerous IETF protocols that have not yetbeen internationalized. local and regional standards organizations Just as there are many native CCSs and charsets, there are many local and regional standards organizations to create and support them. Common examples of these are ANSI (United States), JIS (Japan), GB (China), and CEN/ISSS (Europe).been internationalized. 4.LinguisticCharacter Issues This section contains terms and topics that are commonly used inlinguisticscharacter handling and therefore are of concern to people internationalizing protocols. These topics are standardized outside the IETF.compositioncombining character A member of an identified subset of the coded character set of ISO/IEC 10646 intended for combination with the preceding non-combining graphic character, or with a sequence of combining characters preceded by a non-combining character. <ISOIEC10646> composite sequence A sequence of graphic characters consisting of a non-combining character followed by one or more combining characters. A graphic symbol for a composite sequence generally consists of the combination of the graphic symbols of each character in the sequence. A composite sequence is not a character anddecompositiontherefore is not a member of the repertoire of ISO/IEC 10646. <ISOIEC10646> In some CCSs, some characters consist of combinations of other characters. For example, the letter "a with acute" might be a combination of the two characters "a" and "combining acute". The rules for combining two or more characters are called"composition","composition rules", and the rules for taking apart a character into other characters is called"decomposition"."decomposition rules". The results of composition is called a "precomposed character"; the results of decomposition is called a "decomposed character". normalization Normalization is the transformation of data to a normal form, for example, to unify spelling. <UNICODE> Note that the phrase "unify spelling" in the definition above does not mean unifying different words with the same meaning (such as "color" and "colour"). Instead, it means unifying different character sequences that are intended to form the same composite characters (such as "<a><n><combining tilde><o>" and "<a><n with tilde><o>"). The purpose of normalization is to allow two strings to be compared for equivalence. The strings "<a><n><combining tilde><o>" andcanonicalization These"<a><n with tilde><o>" would be shown identically on a text display device. If a protocol designer wants those two strings to be considered equivalent during comparison, the protocol must include normalization. The terms "normalization" and "canonicalization" are often usedinterchangeably in internationalization.interchangeably. Generally, they both mean to convert a string of one or more characters into another string based on standardized rules. Some CCSs allow multiple equivalent representations for a written string; normalization selects one among multiple equivalent representations as a base for reference purposes in comparing strings. In internationalized text, these rules are usually based on decomposing combined characters or composing characters with combining characters. [UTR15] describes the process and many forms of normalization in detail. Normalization is important when comparing strings to see if they are the same.locale and region Because languages differ from country to country (and even region to region within a country), the locale ofcase Case is theuserfeature ofinternationalized text can often be an important factor. Typically, the locale information for a user includescertain alphabets where thelanguage(s) used. Locale issues go beyond character use,letters have two distinct forms. These variants, which may differ markedly in shape andcan include things such assize, are called thedisplay format for currency, dates,uppercase letter (also known as capital or majuscule) andtimes. case In many scripts, particularly those fromthe lowercase letter (also known as small orbased on European alphabets, there are two forms for letters:minuscule). Case mapping is the association of the uppercase andlowercase.lowercase forms of a letter. <UNICODE> There is usually (but not always) a one-to-one mapping between the same letter in the two cases. However, there are many examples of characters which exist in one case but for which there is no corresponding character in the other case. Caseconversionmapping can even be dependant on locale. Convertingbetween the two casestext to have only one case issometimescalled"folding"."case folding". sorting and collation Collating is the process of ordering units of textual information. Collation is usually specific to a particular language. It is also known as alphabetizing. <UNICODE> Many processes have a need to order strings in a consistent sequence (sorted). For some CCS/CES combinations, there is an obvious sort order that can be done without reference to the linguistic meaning of the characters: the codepoint order is sufficient. That is, the codepoint order is also the order that a person would use in sorting the characters. For other CCS/CES (such as the ISO 2022family) there is no suchfamily), the codepoint orderthat works well.would make no sense to a person and therefore is not useful for sorting if the results will be displayed to a person. Codepoint order is usually not how any human educated by a local school system expects to see strings ordered; if one orders to the expectations of a human, one has a localized sort. Sorting to codepoint order will seem inconsistent if the strings are not normalized before sorting because different representations of the same character will sort differently. This problem may be smaller with a localized sort.glyphcode table Agraphic character or glyphcode table is acharacter, other than a control function, that has a visual representation (normally handwritten, printed, or displayed). It istable showing the characters allocated to the octets in arecognizable abstract graphic symbol which is independentcode. <ISOIEC10646> 4.1 Types ofany specific design. Therecharacters The following definitions of types of characters do not clearly delineate each character into one type, nor do they allow someone to accurately predict what types would apply to a particular character. The definitions are useful for application designers to think about the manytypes(sometimes confusing) properties ofglyphs, includingtext. alphabeticcharacters, digits, punctuation, diacritics, and symbols. font A collection of glyph images havingAn informative Unicode property. Characters that are thesame basic design. code table or code page A tabular representationprimary units of alphabets and/or syllabaries, whether combining or noncombining. This includes composite characters that are canonical equivalents to acodedcombining characterset, also showing the coded representations. code space The numeric domain occupied by all bit combinations used for the codingsequence ofa codedan alphabetic base characterset. 4.1 Typesplus one or more combining characters: letter diagraphs; contextual variant ofcharactersalphabeticCharacters from the spoken partcharacters; ligatures ofphonetic or syllabic scripts. Examples include Latin letters a through z, Arabic letters,alphabetic characters; contextual variants of ligatures; modifier letters; letterlike symbols that are compatibility equivalents of single alphabetic letters; andKatakana characters from Japanese.miscellaneous letter elements. <UNICODE> ideographicCharacters that, by themselves, represent words or concepts (as comparedAny symbol that primarily denotes an idea (or meaning) in contrast tophonetic sounds). Examples includea sound (or pronunciation), for example, a symbol showing a telephone or the Han characters used in Chinese, Japanese, and Korean. <UNICODE> punctuationNon-alphabetic charactersCharacters thatare used to delimit sounds, sentences,separate units of text, such as sentences andphrases. Examples includephrases, thus clarifying theperiod, comma,meaning of the text. The use of punctuation marks is not limited to prose; they are also used in mathematical andhyphen. symbols Charactersscientific formulae, for example. <UNICODE> symbol A character thatrepresent picturesrepresents a picture oriconsicon (as compared toonesone thatrepresent lettersrepresents a letter or punctuation). <NONE> Examples of symbols include characters for arrows, faces, and geometric shapes.spacing[UNICODE] has a property that defines charactersCharactersas symbols. nonspacing character A character thatrepresent horizontal or vertical spacesis not a combining character but does not cause a change inwritten text.position in display. <NONE> Examples of non-spacing characters includethe space character, the tab character,U+FEFF (the zero-width no-break space), control characters such as U+0007 (bell), andthe paragraph mark. diacritics Charactersformatting characters such as U+200C (zero width non-joiner). diacritic A mark applied or attached to a symbol to create a new symbol thatcombine with alphabetic characters, usuallyrepresents a modified or new value. They can also be marks applied tochange the spoken pronunciationa symbol irrespective of whether it changes thebase alphabetic character. Examples include the combining acute accent, combining tilde, and combining ring above. combining character Charactersvalue of thatvisually changesymbol. In thecharacters that precede them. Examples include combining diacritics, many Arabic alphabetic letters, and many letters fromlatter case, theIndic scripts.diacritic usually represents an independent value (for example, an accent, tone, or some other linguistic information). Also called diacritical mark or diacritical. <UNICODE> control characterNon-displayingThe 65 charactersthat cause changes in the systemsinwhich they are entered. Examples include the null character,thedelete character,ranges U+0000..U+001F andthe bell character.U+007F..U+009F. They are also known as control codes. <UNICODE> formatting characterNon-displaying characterCharacters thathasare inherently invisible but that have an effect on the surrounding characters. <UNICODE> Examples of formatting characters include characters for specifying the direction of text, letter-spacing characters, and characters for specifying joining. compatibility character A graphic character included as a coded character of ISO/IEC 10646 primarily for compatibility with existing coded character sets. <ISOIEC10646> 5. User interface for internationalized text Although the IETF does not standardize user interfaces, many protocols make assumptions about how a user will enter or see text that is used in the protocol.Many protocols make inherent assumptions such as that text will be typed on a standard (that is, US-centric) keyboard, or that text will be displayed on a character-based monitor.Internationalization challenges assumptionslike these,about the type anditlimitations of the input and output devices that may be used with applications that use various protocols. It is therefore useful to consider how users typically interact with internationalized text. input methods An input method is a mechanism for a person to enter text into an application. <NONE> Text can be entered into a computer in many ways. Keyboards are by far the most commonmethoddevice used, but many characters cannot be entered on typical computerkeyboards.keyboards in a single stroke. Many operating systems come with system software that lets users input characters outside the range of what is allowed by keyboards. For example, there are dozens of different inputmethodmethods for Han characters in Chinese, Japanese, and Korean. Some start with phonetic input through the keyboard, while others use the number of strokes in the character. Input methods are also needed for scripts that have many diacritics, such as European characters that have two or three diacritics on a single alphabetic character. rendering rules A rendering rule is an algorithm that a system uses to decide how to displaymethodsa string of text. <NONE> Many scripts can be directly displayed with fonts, where each character from an input stream can simply be copied from a font system and put on thescreen.screen or printed page. Other scripts need rules that are based on the input stream in order todisplay text.render text for display. Some examples of thesedisplayrendering rules include: - Scripts such as Arabic (and many others), where the form of the letter changes depending on the adjacent letters, whether the letter is standing alone, at the beginning of a word, in the middle of a word, or at the end of awordword. The rendering rules must choose between two or more characters. - Scripts such as the Indic scripts, where consonants may change their form if they are adjacent to certain other consonants or may be displayed in an order different from the way they are stored and pronounced. The rendering rules must choose between two or more characters. - Arabic and Hebrewscript,scripts, where the order of the characters displayed can be changed by the bidirectional properties of the alphabetic characters and with right-to-left and left-to-right orderingmarksmarks. The rendering rules must choose the order that charactersCombining characters modifyare displayed. graphic symbol A graphic symbol is thedisplayvisual representation ofthea graphic character(or, in some cases, characters)or of a composite sequence. <ISOIEC10646> glyph A glyph is an abstract form thatprecede them. When rendering such text,represents one or more glyph images. The term "glyph" is often a synonym for glyph image, which is the actual, concrete image of a glyph representation having been rasterized or otherwise imaged onto some display surface. In displaying character data, one or more glyphs may be selected to depict a particular character. These glyphs are selected by a rendering enginemust either findduring composition and layout processing. <UNICODE> glyph code A glyph code is a numeric code that refers to a glyph. Usually, thecharacterglyphs contained inthea font are referenced by their glyph code. Glyph codes are local to a particular font; thatcontainsis, a different font containing thebase character and allsame glyphs may use different codes. <UNICODE> font A font is a collection of glyphs used for thecombining characters, or it must render the combination itself. Such rendering can be straight-forward, but itvisual depiction of character data. A font issometimes complicated when the combining marks interactoften associated witheach other, such asa set of parameters (for example, size, posture, weight, and serifness), which, whenthere are two combining marks that would appear above one character.set to particular values, generate a collection of imagable glyphs. <UNICODE> bidirectionalscriptsdisplay The process or result of mixing left-to-right oriented text and right-to-left oriented text in a single line is called bidirectional display. <UNICODE> Most of the world's written languages are displayed left-to-right. However, many widely-used written languages such asHebrew andones based on the Hebrew or Arabicscriptscripts are displayed right-to-left. Right-to-left text often confounds protocol writers because they have to keep thinking in terms of the order of characters in a string in memory, and that order might be different than what they see on the screen. (Note that some scripts in some languages are written both horizontally and vertically.) Bidirectional text can cause even more confusion because there are formatting characters inISOISO/IEC 10646 which cause the order of display of text to change. These formatting characters are needed so that one can properly display right-to-left characters with left-to-right characters at the same time without forcing the one of the strings to be stored in reverse order. It is common to see strings with text in both directions, such as strings that include both text and numbers, or strings that contain a mixture of scripts. [Unicode3] has a long and incredibly detaileddiscussion ofalgorithm for displaying bidirectional text. undisplayablecharacters Some characters havecharacter A character that has no displayable form. <NONE> For instance, the zero-width space (U+200B) cannot be displayed because it takes up no horizontal space. Formatting characters such as those for setting the direction of text are also undisplayable. Note, however, that every character in [Unicode3] has a glyph associated with it, and that the glyphs for undisplayable characters use are enclosed in a dashed square as an indication that the actual character is undisplayable 6. Text in current IETF protocols Many IETF protocols started off being fully internationalized, while others have been internationalized as they were revised. In this process, IETF members have seen patterns in the way that many protocols use text. This section describes some specific protocol interactions with text. protocol elements [[ No definition yet. ]] <NONE> Almost every protocol has named elements, such as "source port" in TCP. In some protocols, the names of the elements (or text aliases for the names) are transmitted within the protocol. For example, in SMTP, the names of the verbs are part of thecommand stream. The names of protocol elements are not normally seen by end users. on-the-wire encoding Characters exist as codepoints in a charset. Before being transmitted in a protocol, they must first be encoded. Similarly, when characters are received in a transmission, they have been encoded, and a protocol that needs to process the individual characters needs to decode them before processing.command stream. Theencoding and decoding used before and after transmission is often called the "on-the-wire" (or sometimes just "wire") format.names of protocol elements are not normally seen by end users. name spaces [[ No definition yet. ]] <NONE> Many items in Internet protocols use names to identify content. The field of names for particular item is called its name space. The names in a name space may be controlled centrally (such as by IANA) or may have distributed control, such as the names in the DNS. on-the-wire encoding The encoding and decoding used before and after transmission is often called the "on-the-wire" (or sometimes just "wire") format. <NONE> Characters are identified by codepoints. Before being transmitted in a protocol, they must first be encoded. Similarly, when characters are received in a transmission, they have been encoded, and a protocol that needs to process the individual characters needs to decode them before processing. parsed text Text strings that searched for subparts. <NONE> In some protocols, free text in text fields might be parsed. For example, many mail user agents will parse the words in the text of the Subject: field to attempt to thread based on the "Re:" prefix. charsettaggingidentification Specification of the charset used on a string of text. <NONE> Protocols that allow more than one charset to be usedon text that is meant for human consumptionusually require that the text betaggedidentified with the appropriate charset. Without thistagging,identification, a program looking at the text cannot definitively discern the charset of the text. Charset identification is also called "charset tagging". language identification Specification of the human languagetaggingused on a string of text. <NONE> Some protocols allow text that is meant for machine processing to betaggedidentified with the language used in the text. Suchtaggingidentification is important for machine-processing of the text, such as by systems that"display"render the text by speaking it. Language identification is also called "language tagging". MIME MIME (Multipurpose Internet Mail Extensions) is a message format that allows for textual message bodies and headers in character sets other than US-ASCII in formats that require ASCII (most notably, RFC822).2822, the standard for Internet mail headers). MIME is described in RFCs 2045 through 2049. <NONE> transfer encoding syntax A transfer encoding syntax (TES) (sometimes called a transfer encoding scheme) is a reversible transform of already-encoded data represented in one or more character encoding schemes. <NONE> TESs are useful for encoding types of character data into an another format, usually for allowing new types of data to be transmitted over legacy protocols. Examples of TESs used in the IETF include Base64 and quoted-printable. Base64 Base64 is a transfer encoding syntax that allows binary data to be represented by the ASCII characters A through Z, a through z, 0 through 9, +, /, and =. It isdescribeddefined in RFC 2045. <NONE> quoted printableThe original design of the quotedQuoted printable is a transfer encoding syntaxwas to allowthat allows strings thathad somehave non-ASCIIprintablecharacters mixed in with mostly ASCII printable characters to be somewhat human readable. It is described in RFC 2047. <NONE> The quoted printable syntax is generally considered to generally be a failure at being readable. It isgenerally considered to be somewhat ofjokingly referred to as "quoted unreadable". XML XML (which is an approximate abbreviation for Extensible Markup Language) is afailurepopular method for structuring text. XML text is explicitly tagged with charsets. The specification for XML can be found atbeing readable.<http://www.w3.org/XML/>. <NONE> ASN.1 text formats The ASN.1 data description language has many formats for text items. The formats allow for different repertoires and different encodings. Some of the formats that appear in IETF standards based on ASN.1 include IA5String (all ASCII characters), PrintableString (most ASCII characters, but missing many punctuation characters), BMPString (characters fromISOISO/IEC 10646 plane 0 in UTF-16BE format), UTF8String (just as the name implies), and TeletexString (also called T61String; the repertoire changes over time). ASCII-compatible encoding (ACE) Starting in2000,1996, many ASCII-compatible encoding schemes (which are actually transfer encoding syntaxes) have been proposed as possible solutions for internationalizing host names. Their goal is to be able to encode any string ofISOISO/IEC 10646 characters as legal DNS host names (as described in STD 13). At the time of this writing,nonno ACE has become an IETF standard. 7. Other Common Terms In Internationalization This is a hodge-podge of other terms that have appeared in internationalization discussions in the IETF. It is likely that additional terms will be added as this document matures. locale and region Because languages differ from country to country (and even region to region within a country), the locale of the user of internationalized text can often be an important factor. Typically, the locale information for a user includes the language(s) used. <NONE> Locale issues go beyond character use, and can include things such as the display format for currency, dates, and times. Some locales (especially the popular "C" and "POSIX" locales) do NOT include language information. Latin characters "Latin characters" is a not-precise term for charactersderived fromhistorically related to ancient Greek script and currently used throughout the world. The base Latin characters make up the ASCII repertoire and have been augmented by many single and multiplediacritics.diacritics and quite a few other characters. ISO/IEC 10646 encodes the Latin characters in the ranges U+0020..U+024F, U+1E00..U+1EFF, and other ranges. <NONE> romanization The transliteration of a non-Latin script into Latin characters. <NONE> Because of the widespread use of Latin characters, people have tried to represent many languages that are not based on a Latin repertoire in Latin.This process is called "romanization".For example, there are two popular romanizations of Chinese: Wade-Giles and Pinyin, the latter of which is by far more common today. Most romanization systems are inexact and do not give perfect round trip mappings between the native script and the Latin characters. CJK characters and Han characters The ideographic characters used in Chinese, Japanese, Korean, and traditional Vietnamese scripts are often called"CJK" characters"CJK characters" after the initial letters of the script names in English. They are also called"Han" characters,"Han characters", after the romanized translation of the term in Chinese that is often used for these characters. <NONE> Note that CJK and Han characters do not include the phonetic characters of the Japanese or Korean alphabets. translation The process of converting one language toanother, or one script to another, is called translation.another. <NONE> Most language translation systems are inexact and do not give one-to-one round trip mappings between the languages. transliteration The process of converting one script to another. <NONE> Most scripttranslationstransliterations are exact, and many have perfect round-trip mappings. regular expressions Regular expressions are a language used to search for text within strings, and possibly modify the text found with other text. <NONE> Pattern matching for text involves being able to represent one or more code points in an abstract notation, such as searching for all capital Latin letters or all punctuation. The most common mechanism in IETF protocols for naming such patterns is the use of regular expressions. There is no single regular expression language, but there are numerous very similar dialects. private usecharacters Many CCSs haveISO/IEC 10646 code pointsthatfrom U+E000 to U+F8FF, U+F0000 to U+FFFFD, and U+100000 to U+10FFFD aredefined as existing characters that haveavailable for private use. This refers to code points of the standard whose interpretation is notdefined semantics.specified by the standard and whose use may be determined by private agreement among cooperating users. <UNICODE> The use of these "private use" characters is defined by the parties who transmit and receive them, and is thus not appropriate for standardization. 8. Security Considerations Security is not discussed in this document. 9. References [CHARMOD] Character Model for the World Wide Web 1.0, W3C, http://www.w3.org/TR/charmod/ [FRAMEWORK] ISO/IEC TR 11017:1997(E). Information technology - Framework for internationalization, prepared by ISO/IEC JTC 1/SC 22/WG 20. [IDN-REQ] "Requirements of Internationalized Domain Names", work in progress (draft-ietf-idn-requirements), Z. Wenzel and J. Seng.[ISO10646][ISOIEC10646] ISO/IEC 10646-1:2000. International Standard -- Information technology -- Universal Multiple-Octet Coded Character Set (UCS)-- Part 1: Architecture and Basic Multilingual Plane. [RFC1766] "Tags for the Identification of Languages", RFC 1766, H. Alvestrand. [RFC1766bis] "Tags for the Identification of Languages", work in progress (draft-alvestrand-lang-tag-v2), H. Alvestrand.-- Part 1: Architecture and Basic Multilingual Plane. [RFC2277] "IETF Policy on Character Sets and Languages", RFC 2277, H. Alvestrand. [RFC2279] "UTF-8, a transformation format of ISO 10646", RFC 2279, F. Yergeau. [RFC2781] "UTF-16, an encoding of ISO 10646", RFC 2781, P. Hoffman and F. Yergeau.[Unicode3][RFC3066] "Tags for the Identification of Languages", RFC 3066, H. Alvestrand. [UNICODE] The Unicode Consortium, "The Unicode Standard -- Version 3.0", ISBN 0-201-61633-5. Described at <http://www.unicode.org/unicode/standard/versions/Unicode3.0.html>. [US-ASCII] Coded Character Set -- 7-bit American Standard Code for Information Interchange, ANSI X3.4-1986. [UTR15] "Unicode Normalization Forms", Unicode Technical Report #15, M. Davis & M. Duerst. 10. Additional Interesting Reading ALA-LC Romanization Tables, Randall Barry (ed.), ISBN 0844409405 Blackwell Encyclopedia of Writing Systems, Florian Coulmas, ISBN 063121481XUnicode Standard version 3.0, Unicode Consortium,The World's Writing Systems, Peter Daniels and William Bright, ISBN02016163350195079930 Writing Systems of the World, Akira Nakanishi, ISBN 0804816549 11. Index alphabetic -- 4.1 ASCII-compatible encoding (ACE) -- 6 ASN.1 text formats -- 6 Base64 -- 6 Basic Multilingual Plane (BMP) -- 3.2 bidirectional display -- 5 case -- 4 character -- 2 character encoding form -- 2 character encoding scheme -- 2 charset -- 2 charset identification -- 6 CJK characters and Han characters -- 7 code table -- 4 coded character -- 2 coded character set -- 2 combining character -- 4 compatibility character -- 4.1 composite sequence -- 4 control character -- 4.1 diacritic -- 4.1 displaying and rendering text -- 2 font -- 5 formatting character -- 4.1 glyph -- 5 glyph code -- 5 graphic symbol -- 5 i18n, l10n -- 2 ideographic -- 4.1 input methods -- 5 internationalization -- 2 ISO -- 3.1 language -- 2 language identification -- 6 Latin characters -- 7 local and regional standards organizations -- 3.1 locale and region -- 7 localization -- 2 MIME -- 6 multilingual -- 2 name spaces -- 6 nonspacing character -- 4.1 normalization -- 4 on-the-wire encoding -- 6 parsed text -- 6 private use -- 7 protocol elements -- 6 punctuation -- 4.1 quoted printable -- 6 regular expressions -- 7 rendering rules -- 5 romanization -- 7 script -- 2 sorting and collation -- 4 symbol -- 4.1 transcoding -- 2 transfer encoding syntax -- 6 translation -- 7 transliteration -- 7 UCS-2 and UCS-4 -- 3.2 undisplayable character -- 5 Unicode Consortium -- 3.1 UTF-16, UTF-16BE, and UTF-16LE -- 3.2 UTF-8 -- 3.2 World Wide Web Consortium -- 3.1 XML -- 6 A. Acknowledgements The definitions in this document come from many sources, including a wide variety of IETF documents. James Seng contributed to the initial outline of this document. Harald Alvestrand and Martin Duerst made extensive useful comments on an early version. Others who contributed to the development include: Jacob Palme Susan HarrisHarald AlvestrandJohan van Wingen Yuri Demchenko Peter Constable Zita Wenzel B. Changes between versions -01 and -02 Radical restructuring. Scrapped many terms that are not used in the IETF context. Changed definitions to those from ISO and Unicode. Essentially an almost complete rewrite. C. Author Contact Information Paul Hoffman Internet Mail Consortium and VPN Consortium 127 Segre Place Santa Cruz, CA 95060 USA paul.hoffman@imc.org and paul.hoffman@vpnc.org ----