1
0
Fork 0
cl-sites/novaspec.org/cl/13_1_Character_Concepts.html
2025-02-05 18:52:26 +01:00

2145 lines
No EOL
49 KiB
HTML

<!DOCTYPE HTML>
<HTML LANG="en-us"
><HEAD
><TITLE
>13.1 Character Concepts | Common Lisp Nova Spec</TITLE
><META CHARSET="US-ASCII"
><LINK REL="canonical" HREF="13_1_Character_Concepts.html"
><LINK REL="next" HREF="13_2_Characters_Dictionary.html" TYPE="text/html" TITLE="13.2 Characters Dictionary"
><LINK REL="prev" HREF="13_Characters.html" TYPE="text/html" TITLE="13. Characters"
><LINK REL="up" HREF="13_Characters.html" TYPE="text/html" TITLE="13. Characters"
><LINK REL="start" HREF="index.html" TYPE="text/html" TITLE="Common Lisp Nova Spec"
><META NAME="VIEWPORT" CONTENT="width=device-width, initial-scale=1.0"
><LINK REL="STYLESHEET" HREF="dpans.css%3F3909942064.css"
><SCRIPT SRC="dpans.js%3F3909942064"
></SCRIPT
><SCRIPT SRC="apropos.js%3F3909942064"
></SCRIPT
></HEAD
><BODY
><DIV
><DIV CLASS="topnav"
><DIV CLASS="breadcrumb"
><SPAN CLASS="breadcrumb-item"
><A HREF="index.html"
>Common Lisp Nova Spec</A
></SPAN
> <SPAN CLASS="breadcrumb-item"
>&#8594; <A HREF="13_Characters.html"
>13. Characters</A
></SPAN
> <SPAN CLASS="breadcrumb-item"
>&#8594; <A HREF="13_1_Character_Concepts.html"
>13.1 Character Concepts</A
></SPAN
></DIV
><DIV CLASS="apropos"
><DIV CLASS="apropos-io"
><A HREF="13_Characters.html" CLASS="prev"
>&#8592;</A
><SPAN ID="apropos-label"
>Apropos </SPAN
><INPUT ID="apropos" AUTOFOCUS="AUTOFOCUS" PLACEHOLDER="Type here to search" ONINPUT="aproposInput(this);" ONKEYUP="aproposKeyup(event);" ONCHANGE="aproposChange(this);" ONFOCUS="aproposFocus(this);" ONFOCUSOUT="aproposFocusout(this);"
><A HREF="13_2_Characters_Dictionary.html" CLASS="next"
>&#8594;</A
></DIV
><DIV ID="apropos-res"
></DIV
></DIV
></DIV
><DIV CLASS="matter"
><SECTION
><H2 ID="sec_13_1" CLASS="HeadII"
>13.1 Character Concepts</H2
><UL CLASS="subtoc"
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_1"
>13.1.1 Introduction to Characters</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_2"
>13.1.2 Introduction to Scripts and Repertoires</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_2_1"
>13.1.2.1 Character Scripts</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_2_2"
>13.1.2.2 Character Repertoires</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_3"
>13.1.3 Character Attributes</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_4"
>13.1.4 Character Categories</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_4_1"
>13.1.4.1 Graphic Characters</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_4_2"
>13.1.4.2 Alphabetic Characters</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_4_3"
>13.1.4.3 Characters With Case</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_4_3_1"
>13.1.4.3.1 Uppercase Characters</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_4_3_2"
>13.1.4.3.2 Lowercase Characters</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_4_3_3"
>13.1.4.3.3 Corresponding Characters in the Other Case</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_4_3_4"
>13.1.4.3.4 Case of Implementation-Defined Characters</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_4_4"
>13.1.4.4 Numeric Characters</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_4_5"
>13.1.4.5 Alphanumeric Characters</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_4_6"
>13.1.4.6 Digits in a Radix</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_5"
>13.1.5 Identity of Characters</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_6"
>13.1.6 Ordering of Characters</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_7"
>13.1.7 Character Names</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_8"
>13.1.8 Treatment of Newline during Input and Output</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_9"
>13.1.9 Character Encodings</A
></LI
><LI
><A HREF="13_1_Character_Concepts.html#sec_13_1_10"
>13.1.10 Documentation of Implementation-Defined Scripts</A
></LI
></UL
><H3 ID="sec_13_1_1" CLASS="HeadIII"
>13.1.1 Introduction to Characters</H3
><P CLASS="j"
>A <DFN CLASS="newterm"
><SPAN CLASS="cmbxsl"
>character</SPAN
></DFN
> <SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="character"
></SPAN
>is an <A HREF="26_1_Glossary.html#object"
><EM CLASS="term"
>object</EM
></A
> that represents a unitary token (<I CLASS="i"
><I
>e.g.</I
></I
>, a letter, a special symbol, or a &#8220;control character&#8221;) in an aggregate quantity of text (<I CLASS="i"
><I
>e.g.</I
></I
>, a <A HREF="26_1_Glossary.html#string"
><EM CLASS="term"
>string</EM
></A
> or a text <A HREF="26_1_Glossary.html#stream"
><EM CLASS="term"
>stream</EM
></A
>). </P
><P CLASS="j"
>Common Lisp allows an implementation to provide support for international language <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> as well as <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> used in specialized arenas (<I CLASS="i"
><I
>e.g.</I
></I
>, mathematics). </P
><P CLASS="j"
>The following figures contain lists of <A HREF="26_1_Glossary.html#defined_name"
><EM CLASS="term"
>defined names</EM
></A
> applicable to <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>. </P
><P CLASS="j"
>Figure 13&#8211;1 lists some <A HREF="26_1_Glossary.html#defined_name"
><EM CLASS="term"
>defined names</EM
></A
> relating to <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> <A HREF="26_1_Glossary.html#attribute"
><EM CLASS="term"
>attributes</EM
></A
> and <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> <A HREF="26_1_Glossary.html#predicate"
><EM CLASS="term"
>predicates</EM
></A
>.</P
><DIV CLASS="displaythree"
><FIGURE CLASS="boxfig"
><DIV CLASS="figbody"
><TABLE CELLSPACING="0" CELLPADDING="0" RULES="GROUPS" STYLE="margin: 1ex 0" WIDTH="100%"
><TBODY
><TR
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE=";padding-right:1em"
><A HREF="f_alpha-char-p.html" CLASS="misc"
><B
>alpha-char-p</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;padding-right:1em"
> <A HREF="f_char_eq.html" CLASS="misc"
><B
>char-not-equal</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;"
> <A HREF="f_char_eq.html" CLASS="misc"
><B
>char</B
><SPAN CLASS="cmtt"
>&gt;</SPAN
></A
></TD
></TR
><TR
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE=";padding-right:1em"
> <A HREF="f_alphanumericp.html" CLASS="misc"
><B
>alphanumericp</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;padding-right:1em"
> <A HREF="f_char_eq.html" CLASS="misc"
><B
>char-not-greaterp</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;"
> <A HREF="f_char_eq.html" CLASS="misc"
><B
>char</B
><SPAN CLASS="cmtt"
>&gt;</SPAN
><B
>=</B
></A
></TD
></TR
><TR
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE=";padding-right:1em"
> <A HREF="f_upper-case-p.html" CLASS="misc"
><B
>both-case-p</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;padding-right:1em"
> <A HREF="f_char_eq.html" CLASS="misc"
><B
>char-not-lessp</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;"
> <A HREF="f_digit-char-p.html" CLASS="misc"
><B
>digit-char-p</B
></A
></TD
></TR
><TR
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE=";padding-right:1em"
> <A HREF="v_char-code-limit.html" CLASS="misc"
><B
>char-code-limit</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;padding-right:1em"
> <A HREF="f_char_eq.html" CLASS="misc"
><B
>char/=</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;"
> <A HREF="f_graphic-char-p.html" CLASS="misc"
><B
>graphic-char-p</B
></A
></TD
></TR
><TR
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE=";padding-right:1em"
> <A HREF="f_char_eq.html" CLASS="misc"
><B
>char-equal</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;padding-right:1em"
> <A HREF="f_char_eq.html" CLASS="misc"
><B
>char</B
><SPAN CLASS="cmtt"
>&lt;</SPAN
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;"
> <A HREF="f_upper-case-p.html" CLASS="misc"
><B
>lower-case-p</B
></A
></TD
></TR
><TR
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE=";padding-right:1em"
> <A HREF="f_char_eq.html" CLASS="misc"
><B
>char-greaterp</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;padding-right:1em"
> <A HREF="f_char_eq.html" CLASS="misc"
><B
>char</B
><SPAN CLASS="cmtt"
>&lt;</SPAN
><B
>=</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;"
> <A HREF="f_standard-char-p.html" CLASS="misc"
><B
>standard-char-p</B
></A
></TD
></TR
><TR
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE=";padding-right:1em"
> <A HREF="f_char_eq.html" CLASS="misc"
><B
>char-lessp</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;padding-right:1em"
> <A HREF="f_char_eq.html" CLASS="misc"
><B
>char=</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;"
> <A HREF="f_upper-case-p.html" CLASS="misc"
><B
>upper-case-p</B
></A
></TD
></TR
></TBODY
></TABLE
></DIV
><FIGCAPTION CLASS="caption"
><B
>Figure 13&#8211;1. Character defined names &#8211; 1</B
></FIGCAPTION
></FIGURE
></DIV
><P CLASS="j"
>Figure 13&#8211;2 lists some <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> construction and conversion <A HREF="26_1_Glossary.html#defined_name"
><EM CLASS="term"
>defined names</EM
></A
>.</P
><DIV CLASS="displaythree"
><FIGURE CLASS="boxfig"
><DIV CLASS="figbody"
><TABLE CELLSPACING="0" CELLPADDING="0" RULES="GROUPS" STYLE="margin: 1ex 0" WIDTH="100%"
><TBODY
><TR
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE=";padding-right:1em"
><A HREF="f_char-code.html" CLASS="misc"
><B
>char-code</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;padding-right:1em"
> <A HREF="f_char-name.html" CLASS="misc"
><B
>char-name</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;"
> <A HREF="f_code-char.html" CLASS="misc"
><B
>code-char</B
></A
></TD
></TR
><TR
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE=";padding-right:1em"
> <A HREF="f_char-upcase.html" CLASS="misc"
><B
>char-downcase</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;padding-right:1em"
> <A HREF="f_char-upcase.html" CLASS="misc"
><B
>char-upcase</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;"
> <A HREF="f_digit-char.html" CLASS="misc"
><B
>digit-char</B
></A
></TD
></TR
><TR
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE=";padding-right:1em"
> <A HREF="f_char-int.html" CLASS="misc"
><B
>char-int</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;padding-right:1em"
> <A HREF="f_character.html" CLASS="funref"
><B
>character</B
></A
></TD
><TD ALIGN="LEFT" VALIGN="BASELINE" NOWRAP="NOWRAP" STYLE="padding-left:1em;"
> <A HREF="f_name-char.html" CLASS="misc"
><B
>name-char</B
></A
></TD
></TR
></TBODY
></TABLE
></DIV
><FIGCAPTION CLASS="caption"
><B
>Figure 13&#8211;2. Character defined names &#8211; 2</B
></FIGCAPTION
></FIGURE
></DIV
><H3 ID="sec_13_1_2" CLASS="HeadIII"
>13.1.2 Introduction to Scripts and Repertoires</H3
><H4 ID="sec_13_1_2_1" CLASS="HeadIV"
>13.1.2.1 Character Scripts</H4
><P CLASS="j"
>A <A HREF="26_1_Glossary.html#script"
><EM CLASS="term"
>script</EM
></A
> is one of possibly several sets that form an <A HREF="26_1_Glossary.html#exhaustive_partition"
><EM CLASS="term"
>exhaustive partition</EM
></A
> of the type <A HREF="t_character.html" CLASS="typeref"
><B
>character</B
></A
>. </P
><P CLASS="j"
>The number of such sets and boundaries between them is <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
>. Common Lisp does not require these sets to be <A HREF="26_1_Glossary.html#type"
><EM CLASS="term"
>types</EM
></A
>, but an <A HREF="26_1_Glossary.html#implementation"
><EM CLASS="term"
>implementation</EM
></A
> is permitted to define such <A HREF="26_1_Glossary.html#type"
><EM CLASS="term"
>types</EM
></A
> as an extension. Since no <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> from one <A HREF="26_1_Glossary.html#script"
><EM CLASS="term"
>script</EM
></A
> can ever be a member of another <A HREF="26_1_Glossary.html#script"
><EM CLASS="term"
>script</EM
></A
>, it is generally more useful to speak about <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> <A HREF="26_1_Glossary.html#repertoire"
><EM CLASS="term"
>repertoires</EM
></A
>. </P
><P CLASS="j"
>Although the term &#8220;<A HREF="26_1_Glossary.html#script"
><EM CLASS="term"
>script</EM
></A
>&#8221; is chosen for definitional compatibility with ISO terminology, no <A HREF="26_1_Glossary.html#conforming_implementation"
><EM CLASS="term"
>conforming implementation</EM
></A
> is required to use any particular <A HREF="26_1_Glossary.html#script"
><EM CLASS="term"
>scripts</EM
></A
> standardized by ISO or by any other standards organization. </P
><P CLASS="j"
>Whether and how the <A HREF="26_1_Glossary.html#script"
><EM CLASS="term"
>script</EM
></A
> or <A HREF="26_1_Glossary.html#script"
><EM CLASS="term"
>scripts</EM
></A
> used by any given <A HREF="26_1_Glossary.html#implementation"
><EM CLASS="term"
>implementation</EM
></A
> are named is <A HREF="26_1_Glossary.html#implementation-dependent"
><EM CLASS="term"
>implementation-dependent</EM
></A
>.</P
><H4 ID="sec_13_1_2_2" CLASS="HeadIV"
>13.1.2.2 Character Repertoires</H4
><P CLASS="j"
>A <DFN CLASS="newterm"
><SPAN CLASS="cmbxsl"
>repertoire</SPAN
></DFN
> <SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="repertoire"
></SPAN
>is a <A HREF="26_1_Glossary.html#type_specifier"
><EM CLASS="term"
>type specifier</EM
></A
> for a <A HREF="26_1_Glossary.html#subtype"
><EM CLASS="term"
>subtype</EM
></A
> of <A HREF="26_1_Glossary.html#type"
><EM CLASS="term"
>type</EM
></A
> <A HREF="t_character.html" CLASS="typeref"
><B
>character</B
></A
>. This term is generally used when describing a collection of <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> independent of their coding. <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>Characters</EM
></A
> in <A HREF="26_1_Glossary.html#repertoire"
><EM CLASS="term"
>repertoires</EM
></A
> are only identified by name, by <A HREF="26_1_Glossary.html#glyph"
><EM CLASS="term"
>glyph</EM
></A
>, or by character description. </P
><P CLASS="j"
>A <A HREF="26_1_Glossary.html#repertoire"
><EM CLASS="term"
>repertoire</EM
></A
> can contain <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> from several <A HREF="26_1_Glossary.html#script"
><EM CLASS="term"
>scripts</EM
></A
>, and a <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> can appear in more than one <A HREF="26_1_Glossary.html#repertoire"
><EM CLASS="term"
>repertoire</EM
></A
>. </P
><P CLASS="j"
>For some examples of <A HREF="26_1_Glossary.html#repertoire"
><EM CLASS="term"
>repertoires</EM
></A
>, see the coded character standards ISO 8859/1, ISO 8859/2, and ISO 6937/2. Note, however, that although the term &#8220;<A HREF="26_1_Glossary.html#repertoire"
><EM CLASS="term"
>repertoire</EM
></A
>&#8221; is chosen for definitional compatibility with ISO terminology, no <A HREF="26_1_Glossary.html#conforming_implementation"
><EM CLASS="term"
>conforming implementation</EM
></A
> is required to use <A HREF="26_1_Glossary.html#repertoire"
><EM CLASS="term"
>repertoires</EM
></A
> standardized by ISO or any other standards organization.</P
><H3 ID="sec_13_1_3" CLASS="HeadIII"
>13.1.3 Character Attributes</H3
><P CLASS="j"
><A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>Characters</EM
></A
> have only one <A HREF="26_1_Glossary.html#standardized"
><EM CLASS="term"
>standardized</EM
></A
> <A HREF="26_1_Glossary.html#attribute"
><EM CLASS="term"
>attribute</EM
></A
>: a <A HREF="26_1_Glossary.html#code"
><EM CLASS="term"
>code</EM
></A
>. A <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
>&#8217;s <A HREF="26_1_Glossary.html#code"
><EM CLASS="term"
>code</EM
></A
> is a non-negative <A HREF="26_1_Glossary.html#integer"
><EM CLASS="term"
>integer</EM
></A
>. This <A HREF="26_1_Glossary.html#code"
><EM CLASS="term"
>code</EM
></A
> is composed from a character <A HREF="26_1_Glossary.html#script"
><EM CLASS="term"
>script</EM
></A
> and a character label in an <A HREF="26_1_Glossary.html#implementation-dependent"
><EM CLASS="term"
>implementation-dependent</EM
></A
> way. See the <A HREF="26_1_Glossary.html#function"
><EM CLASS="term"
>functions</EM
></A
> <A HREF="f_char-code.html" CLASS="funref"
><B
>char-code</B
></A
> and <A HREF="f_code-char.html" CLASS="funref"
><B
>code-char</B
></A
>. </P
><P CLASS="j"
>Additional, <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> <A HREF="26_1_Glossary.html#attribute"
><EM CLASS="term"
>attributes</EM
></A
> of <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> are also permitted so that, for example, two <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> with the same <A HREF="26_1_Glossary.html#code"
><EM CLASS="term"
>code</EM
></A
> may differ in some other, <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> way. </P
><P CLASS="j"
>For any <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> <A HREF="26_1_Glossary.html#attribute"
><EM CLASS="term"
>attribute</EM
></A
> there is a distinguished value called the <DFN CLASS="newterm"
><SPAN CLASS="cmbxsl"
>null</SPAN
></DFN
> <SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="null"
></SPAN
>value for that <A HREF="26_1_Glossary.html#attribute"
><EM CLASS="term"
>attribute</EM
></A
>. A <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> for which each <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> <A HREF="26_1_Glossary.html#attribute"
><EM CLASS="term"
>attribute</EM
></A
> has the null value for that <A HREF="26_1_Glossary.html#attribute"
><EM CLASS="term"
>attribute</EM
></A
> is called a <A HREF="26_1_Glossary.html#simple"
><EM CLASS="term"
>simple</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
>. If the <A HREF="26_1_Glossary.html#implementation"
><EM CLASS="term"
>implementation</EM
></A
> has no <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> <A HREF="26_1_Glossary.html#attribute"
><EM CLASS="term"
>attributes</EM
></A
>, then all <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> are <A HREF="26_1_Glossary.html#simple"
><EM CLASS="term"
>simple</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>.</P
><H3 ID="sec_13_1_4" CLASS="HeadIII"
>13.1.4 Character Categories</H3
><P CLASS="j"
>There are several (overlapping) categories of <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> that have no formally associated <A HREF="26_1_Glossary.html#type"
><EM CLASS="term"
>type</EM
></A
> but that are nevertheless useful to name. They include <A HREF="26_1_Glossary.html#graphic"
><EM CLASS="term"
>graphic</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>, <A HREF="26_1_Glossary.html#alphabetic"
><EM CLASS="term"
>alphabetic</EM
></A
><SPAN CLASS="meaning"
><SUB CLASS="sub"
><SPAN CLASS="cmr"
>1</SPAN
></SUB
></SPAN
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>, <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> with <A HREF="26_1_Glossary.html#case"
><EM CLASS="term"
>case</EM
></A
> (<A HREF="26_1_Glossary.html#uppercase"
><EM CLASS="term"
>uppercase</EM
></A
> and <A HREF="26_1_Glossary.html#lowercase"
><EM CLASS="term"
>lowercase</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>), <A HREF="26_1_Glossary.html#numeric"
><EM CLASS="term"
>numeric</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>, <A HREF="26_1_Glossary.html#alphanumeric"
><EM CLASS="term"
>alphanumeric</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>, and <A HREF="26_1_Glossary.html#digit"
><EM CLASS="term"
>digits</EM
></A
> (in a given <A HREF="26_1_Glossary.html#radix"
><EM CLASS="term"
>radix</EM
></A
>). </P
><P CLASS="j"
>For each <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> <A HREF="26_1_Glossary.html#attribute"
><EM CLASS="term"
>attribute</EM
></A
> of a <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
>, the documentation for that <A HREF="26_1_Glossary.html#implementation"
><EM CLASS="term"
>implementation</EM
></A
> must specify whether <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> that differ only in that <A HREF="26_1_Glossary.html#attribute"
><EM CLASS="term"
>attribute</EM
></A
> are permitted to differ in whether are not they are members of one of the aforementioned categories. </P
><P CLASS="j"
>Note that these terms are defined independently of any special syntax which might have been enabled in the <A HREF="26_1_Glossary.html#current_readtable"
><EM CLASS="term"
>current readtable</EM
></A
>.</P
><H4 ID="sec_13_1_4_1" CLASS="HeadIV"
>13.1.4.1 Graphic Characters</H4
><P CLASS="j"
><A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>Characters</EM
></A
> that are classified as <DFN CLASS="newterm"
><SPAN CLASS="cmbxsl"
>graphic</SPAN
></DFN
><SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="graphic"
></SPAN
>, or displayable, are each associated with a glyph, a visual representation of the <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
>. </P
><P CLASS="j"
>A <A HREF="26_1_Glossary.html#graphic"
><EM CLASS="term"
>graphic</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> is one that has a standard textual representation as a single <A HREF="26_1_Glossary.html#glyph"
><EM CLASS="term"
>glyph</EM
></A
>, such as <CODE CLASS="f"
>A</CODE
> or <CODE CLASS="f"
>*</CODE
> or <CODE CLASS="f"
>=</CODE
>. <A HREF="26_1_Glossary.html#space"
><EM CLASS="term"
>Space</EM
></A
>, which effectively has a blank <A HREF="26_1_Glossary.html#glyph"
><EM CLASS="term"
>glyph</EM
></A
>, is defined to be a <A HREF="26_1_Glossary.html#graphic"
><EM CLASS="term"
>graphic</EM
></A
>. </P
><P CLASS="j"
>Of the <A HREF="26_1_Glossary.html#standard_character"
><EM CLASS="term"
>standard characters</EM
></A
>, <A HREF="26_1_Glossary.html#newline"
><EM CLASS="term"
>newline</EM
></A
> is <A HREF="26_1_Glossary.html#non-graphic"
><EM CLASS="term"
>non-graphic</EM
></A
> and all others are <A HREF="26_1_Glossary.html#graphic"
><EM CLASS="term"
>graphic</EM
></A
>; see <A HREF="2_1_Character_Syntax.html#sec_2_1_3" CLASS="secref"
><SPAN CLASS="cmr"
>Section</SPAN
> <SPAN CLASS="cmr"
>2.1.3</SPAN
> <SPAN CLASS="cmr"
>(Standard</SPAN
> <SPAN CLASS="cmr"
>Characters)</SPAN
></A
>. </P
><P CLASS="j"
><A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>Characters</EM
></A
> that are not <A HREF="26_1_Glossary.html#graphic"
><EM CLASS="term"
>graphic</EM
></A
> are called <DFN CLASS="newterm"
><SPAN CLASS="cmbxsl"
>non-graphic</SPAN
></DFN
><SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="non-graphic"
></SPAN
>. <A HREF="26_1_Glossary.html#non-graphic"
><EM CLASS="term"
>Non-graphic</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> are sometimes informally called &#8220;formatting characters&#8221; or &#8220;control characters.&#8221; </P
><P CLASS="j"
><CODE CLASS="f"
>#\Backspace</CODE
>, <CODE CLASS="f"
>#\Tab</CODE
>, <CODE CLASS="f"
>#\Rubout</CODE
>, <CODE CLASS="f"
>#\Linefeed</CODE
>, <CODE CLASS="f"
>#\Return</CODE
>, and <CODE CLASS="f"
>#\Page</CODE
>, if they are supported by the <A HREF="26_1_Glossary.html#implementation"
><EM CLASS="term"
>implementation</EM
></A
>, are <A HREF="26_1_Glossary.html#non-graphic"
><EM CLASS="term"
>non-graphic</EM
></A
>.</P
><H4 ID="sec_13_1_4_2" CLASS="HeadIV"
>13.1.4.2 Alphabetic Characters</H4
><P CLASS="j"
>The <A HREF="26_1_Glossary.html#alphabetic"
><EM CLASS="term"
>alphabetic</EM
></A
><SPAN CLASS="meaning"
><SUB CLASS="sub"
><SPAN CLASS="cmr"
>1</SPAN
></SUB
></SPAN
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> are a subset of the <A HREF="26_1_Glossary.html#graphic"
><EM CLASS="term"
>graphic</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>. Of the <A HREF="26_1_Glossary.html#standard_character"
><EM CLASS="term"
>standard characters</EM
></A
>, only these are the <A HREF="26_1_Glossary.html#alphabetic"
><EM CLASS="term"
>alphabetic</EM
></A
><SPAN CLASS="meaning"
><SUB CLASS="sub"
><SPAN CLASS="cmr"
>1</SPAN
></SUB
></SPAN
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>: </P
><P CLASS="j"
><CODE CLASS="f"
>A B C D E F G H I J K L M N O P Q R S T U V W X Y Z</CODE
> </P
><P CLASS="j"
><CODE CLASS="f"
>a b c d e f g h i j k l m n o p q r s t u v w x y z</CODE
> </P
><P CLASS="j"
>Any <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> that has <A HREF="26_1_Glossary.html#case"
><EM CLASS="term"
>case</EM
></A
> must be <A HREF="26_1_Glossary.html#alphabetic"
><EM CLASS="term"
>alphabetic</EM
></A
><SPAN CLASS="meaning"
><SUB CLASS="sub"
><SPAN CLASS="cmr"
>1</SPAN
></SUB
></SPAN
>. For each <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> <A HREF="26_1_Glossary.html#graphic"
><EM CLASS="term"
>graphic</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> that has no <A HREF="26_1_Glossary.html#case"
><EM CLASS="term"
>case</EM
></A
>, it is <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> whether that <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> is <A HREF="26_1_Glossary.html#alphabetic"
><EM CLASS="term"
>alphabetic</EM
></A
><SPAN CLASS="meaning"
><SUB CLASS="sub"
><SPAN CLASS="cmr"
>1</SPAN
></SUB
></SPAN
>.</P
><H4 ID="sec_13_1_4_3" CLASS="HeadIV"
>13.1.4.3 Characters With Case</H4
><P CLASS="j"
>The <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> with <A HREF="26_1_Glossary.html#case"
><EM CLASS="term"
>case</EM
></A
> are a subset of the <A HREF="26_1_Glossary.html#alphabetic"
><EM CLASS="term"
>alphabetic</EM
></A
><SPAN CLASS="meaning"
><SUB CLASS="sub"
><SPAN CLASS="cmr"
>1</SPAN
></SUB
></SPAN
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>. A <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> with <A HREF="26_1_Glossary.html#case"
><EM CLASS="term"
>case</EM
></A
> has the property of being either <A HREF="26_1_Glossary.html#uppercase"
><EM CLASS="term"
>uppercase</EM
></A
> or <A HREF="26_1_Glossary.html#lowercase"
><EM CLASS="term"
>lowercase</EM
></A
>. Every <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> with <A HREF="26_1_Glossary.html#case"
><EM CLASS="term"
>case</EM
></A
> is in one-to-one correspondence with some other <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> with the opposite <A HREF="26_1_Glossary.html#case"
><EM CLASS="term"
>case</EM
></A
>.</P
><H5 ID="sec_13_1_4_3_1" CLASS="HeadV"
>13.1.4.3.1 Uppercase Characters</H5
><P CLASS="j"
>An uppercase <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> is one that has a corresponding <A HREF="26_1_Glossary.html#lowercase"
><EM CLASS="term"
>lowercase</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> that is <A HREF="26_1_Glossary.html#different"
><EM CLASS="term"
>different</EM
></A
> (and can be obtained using <A HREF="f_char-upcase.html" CLASS="funref"
><B
>char-downcase</B
></A
>). </P
><P CLASS="j"
>Of the <A HREF="26_1_Glossary.html#standard_character"
><EM CLASS="term"
>standard characters</EM
></A
>, only these are <A HREF="26_1_Glossary.html#uppercase"
><EM CLASS="term"
>uppercase</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>: </P
><P CLASS="j"
><CODE CLASS="f"
>A B C D E F G H I J K L M N O P Q R S T U V W X Y Z</CODE
></P
><H5 ID="sec_13_1_4_3_2" CLASS="HeadV"
>13.1.4.3.2 Lowercase Characters</H5
><P CLASS="j"
>A lowercase <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> is one that has a corresponding <A HREF="26_1_Glossary.html#uppercase"
><EM CLASS="term"
>uppercase</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> that is <A HREF="26_1_Glossary.html#different"
><EM CLASS="term"
>different</EM
></A
> (and can be obtained using <A HREF="f_char-upcase.html" CLASS="funref"
><B
>char-upcase</B
></A
>). </P
><P CLASS="j"
>Of the <A HREF="26_1_Glossary.html#standard_character"
><EM CLASS="term"
>standard characters</EM
></A
>, only these are <A HREF="26_1_Glossary.html#lowercase"
><EM CLASS="term"
>lowercase</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>: </P
><P CLASS="j"
><CODE CLASS="f"
>a b c d e f g h i j k l m n o p q r s t u v w x y z</CODE
></P
><H5 ID="sec_13_1_4_3_3" CLASS="HeadV"
>13.1.4.3.3 Corresponding Characters in the Other Case</H5
><P CLASS="j"
>The <A HREF="26_1_Glossary.html#uppercase"
><EM CLASS="term"
>uppercase</EM
></A
> <A HREF="26_1_Glossary.html#standard_character"
><EM CLASS="term"
>standard characters</EM
></A
> <CODE CLASS="f"
>A</CODE
> through <CODE CLASS="f"
>Z</CODE
> mentioned above respectively correspond to the <A HREF="26_1_Glossary.html#lowercase"
><EM CLASS="term"
>lowercase</EM
></A
> <A HREF="26_1_Glossary.html#standard_character"
><EM CLASS="term"
>standard characters</EM
></A
> <CODE CLASS="f"
>a</CODE
> through <CODE CLASS="f"
>z</CODE
> mentioned above. For example, the <A HREF="26_1_Glossary.html#uppercase"
><EM CLASS="term"
>uppercase</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> <CODE CLASS="f"
>E</CODE
> corresponds to the <A HREF="26_1_Glossary.html#lowercase"
><EM CLASS="term"
>lowercase</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> <CODE CLASS="f"
>e</CODE
>, and vice versa.</P
><H5 ID="sec_13_1_4_3_4" CLASS="HeadV"
>13.1.4.3.4 Case of Implementation-Defined Characters</H5
><P CLASS="j"
>An <A HREF="26_1_Glossary.html#implementation"
><EM CLASS="term"
>implementation</EM
></A
> may define that other <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> <A HREF="26_1_Glossary.html#graphic"
><EM CLASS="term"
>graphic</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> have <A HREF="26_1_Glossary.html#case"
><EM CLASS="term"
>case</EM
></A
>. Such definitions must always be done in pairs &#8212; one <A HREF="26_1_Glossary.html#uppercase"
><EM CLASS="term"
>uppercase</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> in one-to-one <EM CLASS="term"
>correspondence</EM
> with one <A HREF="26_1_Glossary.html#lowercase"
><EM CLASS="term"
>lowercase</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
>.</P
><H4 ID="sec_13_1_4_4" CLASS="HeadIV"
>13.1.4.4 Numeric Characters</H4
><P CLASS="j"
>The <A HREF="26_1_Glossary.html#numeric"
><EM CLASS="term"
>numeric</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> are a subset of the <A HREF="26_1_Glossary.html#graphic"
><EM CLASS="term"
>graphic</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>. Of the <A HREF="26_1_Glossary.html#standard_character"
><EM CLASS="term"
>standard characters</EM
></A
>, only these are <A HREF="26_1_Glossary.html#numeric"
><EM CLASS="term"
>numeric</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>: </P
><P CLASS="j"
><CODE CLASS="f"
>0 1 2 3 4 5 6 7 8 9</CODE
> </P
><P CLASS="j"
>For each <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> <A HREF="26_1_Glossary.html#graphic"
><EM CLASS="term"
>graphic</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> that has no <A HREF="26_1_Glossary.html#case"
><EM CLASS="term"
>case</EM
></A
>, the <A HREF="26_1_Glossary.html#implementation"
><EM CLASS="term"
>implementation</EM
></A
> must define whether or not it is a <A HREF="26_1_Glossary.html#numeric"
><EM CLASS="term"
>numeric</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
>.</P
><H4 ID="sec_13_1_4_5" CLASS="HeadIV"
>13.1.4.5 Alphanumeric Characters</H4
><P CLASS="j"
>The set of <A HREF="26_1_Glossary.html#alphanumeric"
><EM CLASS="term"
>alphanumeric</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> is the union of the set of <A HREF="26_1_Glossary.html#alphabetic"
><EM CLASS="term"
>alphabetic</EM
></A
><SPAN CLASS="meaning"
><SUB CLASS="sub"
><SPAN CLASS="cmr"
>1</SPAN
></SUB
></SPAN
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> and the set of <A HREF="26_1_Glossary.html#numeric"
><EM CLASS="term"
>numeric</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>.</P
><H4 ID="sec_13_1_4_6" CLASS="HeadIV"
>13.1.4.6 Digits in a Radix</H4
><P CLASS="j"
>What qualifies as a <A HREF="26_1_Glossary.html#digit"
><EM CLASS="term"
>digit</EM
></A
> depends on the <A HREF="26_1_Glossary.html#radix"
><EM CLASS="term"
>radix</EM
></A
> (an <A HREF="26_1_Glossary.html#integer"
><EM CLASS="term"
>integer</EM
></A
> between <CODE CLASS="f"
>2</CODE
> and <CODE CLASS="f"
>36</CODE
>, inclusive). The potential <A HREF="26_1_Glossary.html#digit"
><EM CLASS="term"
>digits</EM
></A
> are: </P
><P CLASS="j"
><CODE CLASS="f"
>0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z</CODE
> </P
><P CLASS="j"
>Their respective weights are <CODE CLASS="f"
>0</CODE
>, <CODE CLASS="f"
>1</CODE
>, <CODE CLASS="f"
>2</CODE
>, <I
>.</I
>&#8201;<I
>.</I
>&#8201;<I
>.</I
> <CODE CLASS="f"
>35</CODE
>. In any given radix <I
>n</I
>, only the first <I
>n</I
> potential <A HREF="26_1_Glossary.html#digit"
><EM CLASS="term"
>digits</EM
></A
> are considered to be <A HREF="26_1_Glossary.html#digit"
><EM CLASS="term"
>digits</EM
></A
>. For example, the digits in radix <CODE CLASS="f"
>2</CODE
> are <CODE CLASS="f"
>0</CODE
> and <CODE CLASS="f"
>1</CODE
>, the digits in radix <CODE CLASS="f"
>10</CODE
> are <CODE CLASS="f"
>0</CODE
> through <CODE CLASS="f"
>9</CODE
>, and the digits in radix <CODE CLASS="f"
>16</CODE
> are <CODE CLASS="f"
>0</CODE
> through <CODE CLASS="f"
>F</CODE
>. </P
><P CLASS="j"
><A HREF="26_1_Glossary.html#case"
><EM CLASS="term"
>Case</EM
></A
> is not significant in <A HREF="26_1_Glossary.html#digit"
><EM CLASS="term"
>digits</EM
></A
>; for example, in radix <CODE CLASS="f"
>16</CODE
>, both <CODE CLASS="f"
>F</CODE
> and <CODE CLASS="f"
>f</CODE
> are <A HREF="26_1_Glossary.html#digit"
><EM CLASS="term"
>digits</EM
></A
> with weight <CODE CLASS="f"
>15</CODE
>.</P
><H3 ID="sec_13_1_5" CLASS="HeadIII"
>13.1.5 Identity of Characters</H3
><P CLASS="j"
>Two <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> that are <A HREF="f_eql.html" CLASS="funref"
><B
>eql</B
></A
>, <A HREF="f_char_eq.html" CLASS="funref"
><B
>char=</B
></A
>, or <A HREF="f_char_eq.html" CLASS="funref"
><B
>char-equal</B
></A
> are not necessarily <A HREF="f_eq.html" CLASS="funref"
><B
>eq</B
></A
>.</P
><H3 ID="sec_13_1_6" CLASS="HeadIII"
>13.1.6 Ordering of Characters</H3
><P CLASS="j"
>The total ordering on <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> is guaranteed to have the following properties:</P
><UL
><LI
><P CLASS="j"
>If two <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> have the same <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> <A HREF="26_1_Glossary.html#attribute"
><EM CLASS="term"
>attributes</EM
></A
>, then their ordering by <A HREF="f_char_eq.html" CLASS="funref"
><B
>char</B
><SPAN CLASS="cmtt"
>&lt;</SPAN
></A
> is consistent with the numerical ordering by the predicate <A HREF="f__eq.html" CLASS="funref"
><SPAN CLASS="cmtt"
>&lt;</SPAN
></A
> on their code <A HREF="26_1_Glossary.html#attribute"
><EM CLASS="term"
>attributes</EM
></A
>.</P
></LI
><LI
><P CLASS="j"
>If two <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> differ in any <A HREF="26_1_Glossary.html#attribute"
><EM CLASS="term"
>attribute</EM
></A
>, then they are not <A HREF="f_char_eq.html" CLASS="funref"
><B
>char=</B
></A
>.</P
></LI
><LI
><P CLASS="j"
>The total ordering is not necessarily the same as the total ordering on the <A HREF="26_1_Glossary.html#integer"
><EM CLASS="term"
>integers</EM
></A
> produced by applying <A HREF="f_char-int.html" CLASS="funref"
><B
>char-int</B
></A
> to the <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>.</P
></LI
><LI
><P CLASS="j"
>While <A HREF="26_1_Glossary.html#alphabetic"
><EM CLASS="term"
>alphabetic</EM
></A
><SPAN CLASS="meaning"
><SUB CLASS="sub"
><SPAN CLASS="cmr"
>1</SPAN
></SUB
></SPAN
> <A HREF="26_1_Glossary.html#standard_character"
><EM CLASS="term"
>standard characters</EM
></A
> of a given <A HREF="26_1_Glossary.html#case"
><EM CLASS="term"
>case</EM
></A
> must obey a partial ordering, they need not be contiguous; it is permissible for <A HREF="26_1_Glossary.html#uppercase"
><EM CLASS="term"
>uppercase</EM
></A
> and <A HREF="26_1_Glossary.html#lowercase"
><EM CLASS="term"
>lowercase</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> to be interleaved. Thus <CODE CLASS="f"
>(char&lt;= #\a x #\z)</CODE
> is not a valid way of determining whether or not <CODE CLASS="f"
>x</CODE
> is a <A HREF="26_1_Glossary.html#lowercase"
><EM CLASS="term"
>lowercase</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
>.</P
></LI
></UL
><P CLASS="j"
>Of the <A HREF="26_1_Glossary.html#standard_character"
><EM CLASS="term"
>standard characters</EM
></A
>, those which are <A HREF="26_1_Glossary.html#alphanumeric"
><EM CLASS="term"
>alphanumeric</EM
></A
> obey the following partial ordering:</P
><PRE CLASS="screen"
>A&lt;B&lt;C&lt;D&lt;E&lt;F&lt;G&lt;H&lt;I&lt;J&lt;K&lt;L&lt;M&lt;N&lt;O&lt;P&lt;Q&lt;R&lt;S&lt;T&lt;U&lt;V&lt;W&lt;X&lt;Y&lt;Z
a&lt;b&lt;c&lt;d&lt;e&lt;f&lt;g&lt;h&lt;i&lt;j&lt;k&lt;l&lt;m&lt;n&lt;o&lt;p&lt;q&lt;r&lt;s&lt;t&lt;u&lt;v&lt;w&lt;x&lt;y&lt;z
0&lt;1&lt;2&lt;3&lt;4&lt;5&lt;6&lt;7&lt;8&lt;9
either 9&lt;A or Z&lt;0
either 9&lt;a or z&lt;0</PRE
><P CLASS="j"
>This implies that, for <A HREF="26_1_Glossary.html#standard_character"
><EM CLASS="term"
>standard characters</EM
></A
>, <A HREF="26_1_Glossary.html#alphabetic"
><EM CLASS="term"
>alphabetic</EM
></A
><SPAN CLASS="meaning"
><SUB CLASS="sub"
><SPAN CLASS="cmr"
>1</SPAN
></SUB
></SPAN
> ordering holds within each <A HREF="26_1_Glossary.html#case"
><EM CLASS="term"
>case</EM
></A
> (<A HREF="26_1_Glossary.html#uppercase"
><EM CLASS="term"
>uppercase</EM
></A
> and <A HREF="26_1_Glossary.html#lowercase"
><EM CLASS="term"
>lowercase</EM
></A
>), and that the <A HREF="26_1_Glossary.html#numeric"
><EM CLASS="term"
>numeric</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> as a group are not interleaved with <A HREF="26_1_Glossary.html#alphabetic"
><EM CLASS="term"
>alphabetic</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
>. However, the ordering or possible interleaving of <A HREF="26_1_Glossary.html#uppercase"
><EM CLASS="term"
>uppercase</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> and <A HREF="26_1_Glossary.html#lowercase"
><EM CLASS="term"
>lowercase</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> is <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
>.</P
><H3 ID="sec_13_1_7" CLASS="HeadIII"
>13.1.7 Character Names</H3
><P CLASS="j"
>The following <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> <A HREF="26_1_Glossary.html#name"
><EM CLASS="term"
>names</EM
></A
> must be present in all <A HREF="26_1_Glossary.html#conforming_implementation"
><EM CLASS="term"
>conforming implementations</EM
></A
>:</P
><DL
><DT
><CODE CLASS="f"
>Newline</CODE
></DT
><DD
><P CLASS="j"
>The character that represents the division between lines. An implementation must translate between <CODE CLASS="f"
>#\Newline</CODE
>, a single-character representation, and whatever external representation(s) may be used.</P
></DD
><DT
><CODE CLASS="f"
>Space</CODE
></DT
><DD
><P CLASS="j"
>The space or blank character.</P
></DD
></DL
><P CLASS="j"
>The following names are <A HREF="26_1_Glossary.html#semi-standard"
><EM CLASS="term"
>semi-standard</EM
></A
>; if an <A HREF="26_1_Glossary.html#implementation"
><EM CLASS="term"
>implementation</EM
></A
> supports them, they should be used for the described <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>characters</EM
></A
> and no others.</P
><DL
><DT
><CODE CLASS="f"
>Rubout</CODE
></DT
><DD
><P CLASS="j"
>The rubout or delete character.</P
></DD
><DT
><CODE CLASS="f"
>Page</CODE
></DT
><DD
><P CLASS="j"
>The form-feed or page-separator character.</P
></DD
><DT
><CODE CLASS="f"
>Tab</CODE
></DT
><DD
><P CLASS="j"
>The tabulate character.</P
></DD
><DT
><CODE CLASS="f"
>Backspace</CODE
></DT
><DD
><P CLASS="j"
>The backspace character.</P
></DD
><DT
><CODE CLASS="f"
>Return</CODE
></DT
><DD
><P CLASS="j"
>The carriage return character.</P
></DD
><DT
><CODE CLASS="f"
>Linefeed</CODE
></DT
><DD
><P CLASS="j"
>The line-feed character.</P
></DD
></DL
><P CLASS="j"
>In some <A HREF="26_1_Glossary.html#implementation"
><EM CLASS="term"
>implementations</EM
></A
>, one or more of these <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> <A HREF="26_1_Glossary.html#name"
><EM CLASS="term"
>names</EM
></A
> might denote a <A HREF="26_1_Glossary.html#standard_character"
><EM CLASS="term"
>standard character</EM
></A
>; for example, <CODE CLASS="f"
>#\Linefeed</CODE
> and <CODE CLASS="f"
>#\Newline</CODE
> might be the <A HREF="26_1_Glossary.html#same"
><EM CLASS="term"
>same</EM
></A
> <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> in some <A HREF="26_1_Glossary.html#implementation"
><EM CLASS="term"
>implementations</EM
></A
>.</P
><H3 ID="sec_13_1_8" CLASS="HeadIII"
>13.1.8 Treatment of Newline during Input and Output</H3
><P CLASS="j"
>When the character <CODE CLASS="f"
>#\Newline</CODE
> is written to an output file, the implementation must take the appropriate action to produce a line division. This might involve writing out a record or translating <CODE CLASS="f"
>#\Newline</CODE
> to a CR/LF sequence. When reading, a corresponding reverse transformation must take place.</P
><H3 ID="sec_13_1_9" CLASS="HeadIII"
>13.1.9 Character Encodings</H3
><P CLASS="j"
>A <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> is sometimes represented merely by its <A HREF="26_1_Glossary.html#code"
><EM CLASS="term"
>code</EM
></A
>, and sometimes by another <A HREF="26_1_Glossary.html#integer"
><EM CLASS="term"
>integer</EM
></A
> value which is composed from the <A HREF="26_1_Glossary.html#code"
><EM CLASS="term"
>code</EM
></A
> and all <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> <A HREF="26_1_Glossary.html#attribute"
><EM CLASS="term"
>attributes</EM
></A
> (in an <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> way that might vary between <A HREF="26_1_Glossary.html#Lisp_image"
><EM CLASS="term"
>Lisp images</EM
></A
> even in the same <A HREF="26_1_Glossary.html#implementation"
><EM CLASS="term"
>implementation</EM
></A
>). This <A HREF="26_1_Glossary.html#integer"
><EM CLASS="term"
>integer</EM
></A
>, returned by the function <A HREF="f_char-int.html" CLASS="funref"
><B
>char-int</B
></A
>, is called the character&#8217;s &#8220;encoding.&#8221; There is no corresponding function from a character&#8217;s encoding back to the <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
>, since its primary intended uses include things like hashing where an inverse operation is not really called for.</P
><H3 ID="sec_13_1_10" CLASS="HeadIII"
>13.1.10 Documentation of Implementation-Defined Scripts</H3
><P CLASS="j"
>An <A HREF="26_1_Glossary.html#implementation"
><EM CLASS="term"
>implementation</EM
></A
> must document the <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> <A HREF="26_1_Glossary.html#script"
><EM CLASS="term"
>scripts</EM
></A
> it supports. For each <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> <A HREF="26_1_Glossary.html#script"
><EM CLASS="term"
>script</EM
></A
> supported, the documentation must describe at least the following:</P
><UL
><LI
><P CLASS="j"
>Character labels, glyphs, and descriptions. Character labels must be uniquely named using only Latin capital letters A&#8211;Z, hyphen (-), and digits 0&#8211;9.</P
></LI
><LI
><P CLASS="j"
>Reader canonicalization. Any mechanisms by which <A HREF="f_read.html" CLASS="funref"
><B
>read</B
></A
> treats <A HREF="26_1_Glossary.html#different"
><EM CLASS="term"
>different</EM
></A
> characters as equivalent must be documented.</P
></LI
><LI
><P CLASS="j"
>The impact on <A HREF="f_char-upcase.html" CLASS="funref"
><B
>char-upcase</B
></A
>, <A HREF="f_char-upcase.html" CLASS="funref"
><B
>char-downcase</B
></A
>, and the case-sensitive <A HREF="26_1_Glossary.html#format_directive"
><EM CLASS="term"
>format directives</EM
></A
>. In particular, for each <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> with <A HREF="26_1_Glossary.html#case"
><EM CLASS="term"
>case</EM
></A
>, whether it is <A HREF="26_1_Glossary.html#uppercase"
><EM CLASS="term"
>uppercase</EM
></A
> or <A HREF="26_1_Glossary.html#lowercase"
><EM CLASS="term"
>lowercase</EM
></A
>, and which <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> is its equivalent in the opposite case.</P
></LI
><LI
><P CLASS="j"
>The behavior of the case-insensitive <A HREF="26_1_Glossary.html#function"
><EM CLASS="term"
>functions</EM
></A
> <A HREF="f_char_eq.html" CLASS="funref"
><B
>char-equal</B
></A
>, <A HREF="f_char_eq.html" CLASS="funref"
><B
>char-not-equal</B
></A
>, <A HREF="f_char_eq.html" CLASS="funref"
><B
>char-lessp</B
></A
>, <A HREF="f_char_eq.html" CLASS="funref"
><B
>char-greaterp</B
></A
>, <A HREF="f_char_eq.html" CLASS="funref"
><B
>char-not-greaterp</B
></A
>, and <A HREF="f_char_eq.html" CLASS="funref"
><B
>char-not-lessp</B
></A
>.</P
></LI
><LI
><P CLASS="j"
>The behavior of any <A HREF="26_1_Glossary.html#character"
><EM CLASS="term"
>character</EM
></A
> <A HREF="26_1_Glossary.html#predicate"
><EM CLASS="term"
>predicates</EM
></A
>; in particular, the effects of <A HREF="f_alpha-char-p.html" CLASS="funref"
><B
>alpha-char-p</B
></A
>, <A HREF="f_upper-case-p.html" CLASS="funref"
><B
>lower-case-p</B
></A
>, <A HREF="f_upper-case-p.html" CLASS="funref"
><B
>upper-case-p</B
></A
>, <A HREF="f_upper-case-p.html" CLASS="funref"
><B
>both-case-p</B
></A
>, <A HREF="f_graphic-char-p.html" CLASS="funref"
><B
>graphic-char-p</B
></A
>, and <A HREF="f_alphanumericp.html" CLASS="funref"
><B
>alphanumericp</B
></A
>.</P
></LI
><LI
><P CLASS="j"
>The interaction with file I/O, in particular, the supported coded character sets (for example, ISO8859/1-1987) and external encoding schemes supported are documented.</P
></LI
></UL
></SECTION
></DIV
><DIV CLASS="footer"
><DIV CLASS="btmnav"
><A HREF="13_Characters.html" CLASS="prev"
>&#8592;</A
><A HREF="13_2_Characters_Dictionary.html" CLASS="next"
>&#8594;</A
></DIV
><DIV CLASS="trail"
>Conversion to HTML copyright 2023 by Gilbert Baumann</DIV
></DIV
></DIV
><SCRIPT
>domReady();</SCRIPT
></BODY
></HTML
>