tr33
rev 7UNICODE CONFORMANCE MODEL
Open HTMLUpstream
tr33-7.html
1480 lines
Open Raw
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head><base href="https://www.unicode.org/reports/tr33/tr33-7.html">
	
	
	<link rel="stylesheet" href="https://www.unicode.org/reports/reports-v2.css" type="text/css">
	<title>UTR #33 - Conformance Model</title>
</head>

<body>

	<table class="header">
		<tr>
			<td class="icon" style="width:38px; height:35px">
			<a href="https://www.unicode.org/">
			<img border="0" src="https://www.unicode.org/webscripts/logo60s2.gif" align="middle" 
			alt="[Unicode]" width="34" height="33"></a>
			</td>

			<td class="icon" style="vertical-align:middle">
			<a class="bar"> </a>
			<a class="bar" href="https://www.unicode.org/reports/"><font size="3">Technical Reports</font></a>
			</td>
		</tr>
		<tr>
			<td class="gray">&nbsp;</td>
		</tr>
	</table>
	<div class="body">
		<h2 class="uaxtitle">Unicode Technical Report #33</h2>
		<h1>UNICODE CONFORMANCE MODEL</h1>
		<table class="simple" width="90%">
			<tr>
				<td width="20%">Editors</td>
				<td>Ken Whistler and Asmus Freytag (<a
						href="mailto:asmus@unicode.org">asmus@unicode.org</a>)</td>
			</tr>
			<tr>
				<td>Date</td>
				<td>2025-05-05</td>
			</tr>
			<tr>
				<td>This Version</td>
				<td>
					<a href="https://www.unicode.org/reports/tr33/tr33-7.html">
							https://www.unicode.org/reports/tr33/tr33-7.html</a>
				</td>
			</tr>
			<tr>
				<td>Previous Version</td>
				<td>
					<a href="https://www.unicode.org/reports/tr33/tr33-5.html">
						https://www.unicode.org/reports/tr33/tr33-5.html</a>
				</td>
			</tr>
			<tr>
				<td>Latest Version</td>
				<td><a href="https://www.unicode.org/reports/tr33/">https://www.unicode.org/reports/tr33/</a>
				</td>
			</tr>
			<tr>
				<td>Latest Proposed Update</td>
				<td><a
						href="https://www.unicode.org/reports/tr33/proposed.html">https://www.unicode.org/reports/tr33/proposed.html</a>
				</td>
			</tr>
			<tr>
				<td>Revision</td>
				<td><a href="#Modifications">7</a></td>
			</tr>
		</table>
		<!-- BEGIN OF DOCUMENT FRONT MATTER -->
		<h4>Summary</h4>
		<p><i>This report defines conformance terminology, specifies different areas
				and levels of conformance, and describes what it means to make a claim of
				conformance or &quot;support&quot; of the standard. This conformance model presented
				here is not a framework for conformance verification testing.</i></p>
		<h4>Status</h4>
		<!-- NOT YET APPROVED 
		<p class="changed"><i>This is a<b>
					<font color="#ff3333"> draft </font>
				</b>document
				which may be updated, replaced, or superseded by other documents at
				any time. Publication does not imply endorsement by the Unicode
				Consortium. This is not a stable document; it is inappropriate to
				cite this document as other than a work in progress.
			</i></p>
		        END NOT YET APPROVED -->
		<!-- APPROVED -->    
	<p><i>This document has been reviewed by Unicode members 
	and other interested
	parties, and has been approved for publication by the Unicode Consortium.
	This is a stable document and may be used as reference material or cited as
	a normative reference by other specifications.</i></p>
      <!-- END APPROVED -->

		<blockquote>
			<p><i><b>A Unicode Technical Report (UTR)</b> contains informative
					material. Conformance to the Unicode Standard does not imply conformance
					to any UTR. Other specifications, however, are free to make normative
					references to a UTR.</i></p>
		</blockquote>
  <p><i>Please submit corrigenda and other comments with the online reporting 
  form [<a href="https://www.unicode.org/reporting.html">Feedback</a>]. 
  Related information that is useful in understanding this document is found in the
  <a href="#References">References</a>. 
  For the latest version of the Unicode Standard, see [<a href="https://www.unicode.org/versions/latest/">Unicode</a>]. 
  For a list of current Unicode Technical Reports, see [<a href="https://www.unicode.org/reports/">Reports</a>]. 
  For more information about versions of the Unicode Standard, see [<a href="https://www.unicode.org/versions/">Versions</a>].</i></p>
		<h4><i>Contents</i></h4>
		<ul class="toc">
			<li>1&nbsp; <a href="#Overview">Overview</a></li>
			<li>2&nbsp; <a href="#Terminology">Terminology</a>
				<ul class="toc">
					<li>2.1&nbsp; <a href="#Conformance">Conformance</a></li>
					<li>2.2&nbsp; <a href="#Compliance">Compliance</a></li>
					<li>2.3&nbsp; <a href="#Normative">Normative and Informative</a></li>
					<li>2.4&nbsp; <a href="#Testing">Conformance Testing</a>
					<ul class="toc">
						<li>2.4.1&nbsp;<a href="#Testable">Testable Conformance Claims</a></li>
						<li>2.4.2&nbsp;<a href="#Tests">Conformance Tests</a></li>
						<li>2.4.3&nbsp;<a href="#Verification_Tests">Conformance Verification Tests</a></li>
					</ul>
					</li>
					<li>2.5&nbsp; <a href="#Verification">Conformance Verification and
							Certification</a></li>
					<li>2.6&nbsp; <a href="#Support">Support</a></li>
					<li>2.7&nbsp; <a href="#Versioning">Versioning</a></li>
					<li>2.8&nbsp; <a href="#Corrigenda">Corrigenda and Errata</a></li>
					<li>2.9&nbsp; <a href="#Invariance">Stability and Invariance</a>
					<ul class="toc">
						<li>2.9.1 <a href="#Version_Stability">Stability of Published Version</a></li>
						<li>2.9.2 <a href="#Invariance_Stability">Invariance or Stability Across Versions</a></li>
					</ul>
					</li>
				</ul>
			</li>
			<li>3&nbsp; <a href="#Structure">Structure of Unicode Conformance</a>
				<ul class="toc">
					<li>3.1&nbsp; <a href="#Definitions">Definitions</a></li>
					<li>3.2&nbsp; <a href="#Rules">Rules</a></li>
					<li>3.3&nbsp; <a href="#Clauses">Conformance Clauses</a></li>
					<li>3.4&nbsp; <a href="#Annexes">Unicode Standard Annexes</a></li>
					<li>3.5&nbsp; <a href="#Identification">Identification of Normative
							Content</a></li>
					<li>3.6&nbsp; <a href="#Properties">Properties</a></li>
					<li>3.7&nbsp; <a href="#Algorithms">Algorithms</a></li>
					<li>3.8&nbsp; <a href="#Tailoring">Tailoring</a></li>
					<li>3.9&nbsp; <a href="#Profiles">Profiles</a></li>
					<li>3.10&nbsp; <a href="#Relation">Relation to 10646 Conformance</a></li>
				</ul>
			</li>
			<li>4&nbsp; <a href="#Areas">Areas of Conformance</a>
				<ul class="toc">
					<li>4.1&nbsp; <a href="#Representation">Representation</a></li>
					<li>4.2&nbsp; <a href="#Transcoding">Transcoding</a></li>
					<li>4.3&nbsp; <a href="#Processing">String Processing</a></li>
					<li>4.4&nbsp; <a href="#Layout">Text Layout, Including Display and Selection</a></li>
					<li>4.5&nbsp; <a href="#Fonts">Fonts</a></li>
					<li>4.6&nbsp; <a href="#Input">Input</a></li>
				</ul>
			</li>
			<li>5&nbsp; <a href="#Levels">Levels of Support</a>
				<ul class="toc">
					<li>5.1&nbsp; <a href="#Repertoire_Coverage">Repertoire Coverage</a></li>
					<li>5.2&nbsp; <a href="#Full_Support">Full Support</a></li>
					<li>5.3&nbsp; <a href="#Partial_Support">Levels of Support Defined</a></li>
				</ul>
			</li>
			<li>6&nbsp; <a href="#Interoperability">Interoperability</a>
				<ul class="toc">
					<li>6.1&nbsp; <a href="#Inter-level">Inter-level Compatibility Issues</a></li>
					<li>6.2&nbsp; <a href="#Repertoire_Matching">Repertoire Matching</a></li>
					<li>6.3&nbsp; <a href="#Matching_Areas">Matching Areas and Levels of
							Conformance between Implementation and Components</a></li>
				</ul>
			</li>
		</ul>
		<ul class="toc">
			<li><a href="#References">References</a> </li>
			<li><a href="#Acknowledgements">Acknowledgements</a> </li>
			<li><a href="#Modifications">Modifications</a> </li>
		</ul>
		<hr>
		<!-- BEGIN OF DOCUMENT CONTENTS PROPER -->
		<h2>1 <a id="Overview">Overview</a></h2>

		<p>The Unicode Standard [<a href="#Unicode">Unicode</a>] is a very large and
			complex standard. Because of this complexity, and because of the nature and role of the
			standard, it is often rather difficult to determine, in any particular case,
			just exactly what conformance to the Unicode Standard means.</p>
		<p>The Unicode Standard forms the foundation supporting a large variety
			of operations on textual data, from data interchange protocols to complex tasks
			like sorting, rendering or content analysis. All of these processes expose implementations
			to the complexities of human languages and writing systems.</p>
		<p>Earlier character sets were small or had a clearly limited field
			of application (such as by geographical area) or both. By contrast, the Unicode
			Standard aims to be universal. A universal character encoding standard cannot
			rely on implicit agreements about the nature and behavior of the characters
			it encodes; it must provide explicit constraints on their identity and intended
			use. This affects not only how characters are interchanged, but the
			specification of many common text processes as well. At the same time, the standard must allow
			implementations the necessary
			flexibility to address the expectations of its users, while providing enough
			constraints to guarantee predictable interchange of data and consistency and interoperability between
			implementations.</p>
		<p>This Conformance Model explains the issue of conformance relating to the
			Unicode Standard so that users better understand the contexts in which products
			are making claims for support of the Unicode Standard, and implementers better
			understand how to meet the formal conformance requirements while satisfying
			the expectations of their users. It does not alter, augment or override the
			actual Unicode conformance requirements found in the text of the Unicode Standard, including its annexes.
			Rather it attempts to provide a conceptual framework to make it easier for users
			and implementers to identify and understand the specific conformance requirements of
			[<a href="#Unicode">Unicode</a>].
		</p>
		<p>This model defines conformance terminology, specifies different areas and
			levels of conformance, and describes what it means to make a claim of conformance
			or &quot;support&quot; of the standard. Although it discusses the 
			concept of conformance testing and data or sample algorithms that can be used as 
			conformance tests, this model does not present a framework for conformance
			verification testing. However, it could be used to develop such a framework,
			should that prove desirable. At this time no such framework has been developed
			by the Unicode Consortium, nor have any conformance verification tests been
			required or sanctioned.</p>
		<p>Many of the concepts presented here are equally applicable to other standards
			developed by the Unicode Consortium, such as the
			Unicode Collation Algorithm
			[<a href="#UTS10">UTS10</a>], and the specification for Unicode support in regular
			expressions [<a href="#UTS18">UTS18</a>]. Other technical specifications authored by
				the Unicode Consortium also have applied this conformance model; they are identified by the inclusion of
				explicit conformance clauses.</p>

		<h2>2 <a id="Terminology">Terminology</a></h2>

		<p>This section introduces basic terminology that will be discussed
			in more detail in sections below.</p>
		<p>A great number and variety of standards exist. Standards may be
			regulatory, mandatory or voluntary. For the purposes of this document, a
			standard is defined to be a formally developed specification. The
			organization developing that standard is then called a Standards Developing
			Organization or SDO. </p>

		<h3>2.1 <a id="Conformance">Conformance</a></h3>

		<p>In the context of formal standards, <i>conformance requirements</i> refer
			to a set of rules or criteria that allow a relevant entity such as an element of information
			interchange, a device, an application, or a piece of hardware, to be evaluated
			as either meeting or not meeting the specification in the standard. </p>
		<p>In general,
			a formal standard will have a conformance clause or clauses, which will be stated
			in terms of conditionals, such as &quot;X conforms to Y specification
			of this standard if Z&quot;, or modals, often in uppercase, such as &quot;An X that conforms
			to Y specification of this standard SHALL Z&quot;. The modal verbs that standards
			language commonly associates with such statements are often carefully defined
			to avoid any ambiguities in interpretation. In common practice, they involve
			specialized usage of &quot;SHALL&quot; and &quot;MUST&quot; for requirements, but also &quot;MAY&quot; for
			permitted deviations and &quot;SHOULD&quot; for non-binding recommendations.
			(The Unicode Standard or other technical specifications published by 
			the Unicode Consortium do not use the convention of uppercasing
			these terms).</p>
		<p>If a standard is complex, its conformance clause or clauses may
			also be complex. Occasionally, a conformance clause may simply be stated along
			the lines of &quot;X conforms to this standard if it follows the specification
			in section W&quot; where section W may consist of hundreds of pages and constitute
			most of the rest of the standard. </p>
		<p>A standard that incorporates a claim of conformance to provisions of another standard
				can be referred to as a <i>derived standard</i>. Implementations conformant to it, will also be
				conformant to the selected conformance requirements of the base standard.</p>
		<p>An implementation is said to be conformant if it meets all applicable
			conformance requirements.</p>

		<h3>2.2 <a id="Compliance">Compliance</a></h3>

		<p>The term <i>compliance</i> is often used synonymously with the term conformance
			and will be used that way in this model. </p>

		<h3>2.3 <a id="Normative">Normative and Informative</a></h3>

		<p>Formal standards often distinguish between <i>normative</i> and <i>informative</i>
			content. This distinction may be highly conventionalized, or even subject to
			rules specified in other standards, such as for ISO standards, or the distinction
			may be less formally maintained.</p>

		<p>Normative content of a standard is content which is required for any or all of the
			conformance requirements to be meaningful. Typically a standard will have normative
			definitions for terms used in the rest of the specification, normative
			references to other standards or sources whose content is referred to indirectly,
			and normative clauses, specifications, or sections, which define the
			content of the standard to which the conformance clauses apply.</p>
		<p>Informative content of a standard is material which has been added for
			clarification, but which, in the judgment of the standard&#39;s maintainers, could
			be omitted without materially affecting the specification to which
			the conformance clauses refer. If a standard is changed over time, the status
			of some particular content could change from informative to normative, or vice
			versa, depending on whether it became required for conformance or was no longer
			required for conformance.</p>

		<h3>2.4 <a id="Testing">Conformance Testing</a></h3>

		<h4>2.4.1 <a id="Testable">Testable Conformance Claims</a></h4>

		<p>It should be possible to manually validate or mechanically test a conformance claim, as
				otherwise the claim would be largely meaningless. In the case of a derived standard, it may not
				be possible to perform any validation or testing of its conformance to a base standard, but the
				same is not true for <i>implementations</i> that claim conformance to the derived standard.</p>

		<p>A standard may include tests or &quot;benchmarks&quot; as part of the text of the standard,
			or as external documents associated with the standard, designed to assist in testing
			and verifying that an implementation is indeed conformant. While there is some overlap
			in general usage of the terms &quot;conformance test&quot; and &quot;conformance verification
			tests&quot;, a systematic distinction is drawn between the two in the Unicode Conformance
			Model.</p>

		<h4>2.4.2 <a id="Tests">Conformance Tests</a></h4>

		<p>A <i>conformance test</i> for the Unicode Standard and related
			standards is a list of data certified by the Unicode Technical Committee
			[<a href="#UTC">UTC</a>] to be &quot;correct&quot;
			with regard to some particular requirement for conformance to the standard.
			Many of the algorithms published by the Unicode Consortium
			are specified in terms of character classes (or characters sharing common character properties),
			and in such cases conformance tests may cover each such class by use of an exemplar character.
		</p>
		<p> In some instances, as for example, the implementation of the Unicode Bidirectional Algorithm,
			producing a definitive list of correct results is difficult or impossible, and
			in such cases, a conformance test may consist of an implemented algorithm certified
			by the UTC to produce correct results for any pertinent input data. Conformance
			tests for the Unicode Standard are essentially benchmarks that someone can use
			to determine if their algorithm or API, claiming to conform to some requirement
			of the standard, does in fact match the data that the UTC asserts define such
			conformance.</p>

		<h4>2.4.3 <a id="Verification_Tests">Conformance Verification Tests</a></h4>

		<p>A <i>conformance verification test</i> for the Unicode Standard is a test,
			usually designed and implemented by a third party not associated with the Unicode
			Consortium or its technical committees, intended to test a product which claims
			conformance to
			one or more aspects of the Unicode Standard or a related standard, for actual
			conformance to the standard.
			Thus a conformance verification test is a <i>test of a product</i>. Such a test,
			may, of course, make use of one or more of the Unicode conformance tests to
			determine the results of its conformance verification.</p>

		<h3>2.5 <a id="Verification">Conformance Verification and Certification</a></h3>
		<p>In the context of the Unicode Conformance Model, <i>conformance verification</i> means an external (third
			party) determination that an entity meets one or more requirements of the conformance
			clauses of the standard under some specified set of circumstances. In other words, while conformance clauses
			are merely
			a logical statement of requirements, conformance verification implies the existence
			of conformance verification tests that have been applied to entities in order
			to make such determinations. </p>
		<ul>
			<li>A conformance claim can simply be stated. It is an assertion that entity
				X meets a requirement of the standard. </li>
			<li>A verification of a conformance claim, on the other hand, is the result
				of the specific application of a test designed to determine the validity
				of a conformance claim. Such tests are called conformance verification tests.</li>
			<li>A certification of a conformance claim is the verification of a
				conformance claim by a certification authority.</li>
		</ul>
		<p>The Unicode Consortium does not endorse a particular methodology for conformance
			verification.</p>
		<h3>2.6 <a id="Support">Support</a></h3>

		<p>In the context of the Unicode Conformance Model, the term <i>support</i>
			refers to a more generalized claim of intent to conform to one or another requirement
			of the standard. A claim of Unicode support may be difficult to verify,
			because its statement can be vague or lack detail. However, it indicates
			that the developer or user of an entity intends conformance. More specifically,
			support often refers to a claim of particular repertoire coverage. For example,
			an application may claim support for Unicode Greek. That should be interpreted
			as meaning that Unicode Greek characters will be handled in conformance with
			the Unicode Standard, and that all other relevant aspects of processing of those characters
			with which that particular application is concerned, will be done in such a
			way as not to violate the conformance clauses of the Unicode Standard.</p>

		<h3>2.7 <a id="Versioning">Versioning</a></h3>

		<p>The Unicode Standard is regularly versioned, as new characters are added.
			A formal system of versioning is in place, involving three levels of versions:</p>
		<ol>
			<li>major versions</li>
			<li>minor versions</li>
			<li>update versions</li>
		</ol>
		<p>All three levels have carefully controlled rules for the type of documentation
			required, handling of the associated data files, and allowable types of change
			between versions. For more information about Unicode versioning see [<a href="#Versions">Versions</a>].
			Other standards developed by the Unicode Consortium may use a single-level versioning
			scheme; however, some standards are synchronized with the major and minor versions of the 
			Unicode Standard, usually because they reflect changes necesssitated by additions to the repertoire.</p>

		<p>Conformance claims must be specific to versions of the Unicode Standard,
			but the level of specificity needed for a claim may vary according to the nature
			of the particular conformance claim. Some standards developed
			by the Unicode Consortium require separate conformance to a specific version
			(or later), of the Unicode Standard. This version is sometimes called the <i>
			base version</i>. In such cases, the version of the standard and the version
			of the Unicode Standard to which the conformance claim refers must be compatible.</p>

		<p>Some algorithms and other features of the Unicode Standard and related standards are
			immutable or stable across versions (see Section 2.9, <a href="#Invariance">Stability and Invariance</a>). For example: a string of assigned
			characters that has been normalized into
			one of the Unicode Normalization Forms in one version of the Unicode Standard remains normalized under all
			later versions. Therefore, it may not be necessary to specify the version of the Unicode Standard under
			which a string was normalized, as long as the string contained only assigned characters under the version of
			the standard supported by the process performing the normalization.

		<p>Some products are regularly and promptly updated with each release of the Unicode Standard.
			In such cases, a versionless claim of conformance would imply the promise that the latest version of the
			product is conformant to the latest available version of the Unicode standard. However, to guarantee
			interoperability, it is still necessary to identify how each version of such product relates to a version of
			the Unicode Standard. Although each part or library associated with a product may make an unversioned claim of
			support, some overall conformance claim would note the applicable version to which these conformance
			claims apply.</p>

		<h3>2.8 <a id="Corrigenda">Corrigenda and Errata</a></h3>

		<p>If a technical deficiency in the specifications of the Unicode Standard is
			identified, it may be corrected by a change in the next version, or, if sufficiently
			important, by a formally numbered, named and dated corrigendum. A corrigendum often applies to
			several earlier
			versions, but, unlike the practice for other SDOs, does not retroactively change them. Implementations can
			claim
			conformance to any of these versions with the given corrigendum applied. For
			more on corrigenda see [<a href="#Versions">Versions</a>].</p>
		<p>Errata are used to describe other known defects in the text. Unlike corrigenda
			they they are not named or numbered in a way that is intended to be referenced in a conformance claim. For more information on errata
			see [<a href="#Errata">Errata</a>].</p>

		<h3>2.9 <a id="Invariance">Stability and Invariance</a></h3>

		<h4>2.9.1 <a id="Version_Stability">Stability of Published Version</a></h4>

		<p>Each version of the Unicode Standard, including all annexes, data files, and code charts, once
			published, is absolutely stable
			and will never change. A similar guarantee of stability is true for other standards published by the Unicode
				Consortium. Implementations or specifications that refer to a specific
			version of the Unicode Standard and related standards can rely upon this stability. If future versions
			of these implementations or specifications upgrade to a future version of the
			Unicode Standard, then some changes may be necessary. If errata or corrigenda are
				found for any version of a standard, they do not modify the standard as published, but are
				published separately. Where relevant, corrigenda may be referenced in a conformance
				claim.</p>
		<p>Note that this concept of stability of the published versions of the Unicode Standard
				and related standards is different from the issue of invariance across versions, which, confusingly, may
				also be referred to with the term &quot;stability&quot;.</p>

		<h4>2.9.2 <a id="Invariance_Stability">Invariance or Stability Across Versions</a></h4>

		<p>Some formal standards are developed once and then are essentially frozen
			and stable forever. For such standards, stability of content and the corresponding
			stability of conformance claims is not an issue. </p>
		<p>For a standard aimed at the universal encoding of characters, such stability
			is not possible. The Unicode Standard
			necessarily evolves and expands over time,
			to extend its coverage to include all the writing systems of the world.
			Because of the interaction between the way characters are processed and the
			definition (or identity) of the characters that have been encoded, many
			aspects of character processing must be specified in conjunction with
			encoding the characters, to guarantee predictable interpretation
			and reliable interchange of text. As experience in implementing the Unicode
			Standard accumulates, further aspects of character
			processing are added to the formal content of the Unicode Standard as needed.</p>
		<p>This fundamentally
			dynamic quality of the Unicode Standard complicates issues of conformance: the
			content to which conformance requirements pertain is continually expanding.
			This expansion is both an expansion in breadth by adding more characters and
			scripts, and an expansion in depth by adding more aspects of character processing,
				such as new Unicode algorithms.</p>
		<p>Invariance refers to those aspects of the content of the Unicode Standard
			that have been formally defined as unchangeable, even as the standard continues
			its development. The guarantee of the stability of the formal Unicode
			character names is a fairly trivial example. While in principle such names
			<i>could</i> be changed, and were changed once between Version 1.0 and Version
			1.1, the [<a href="#UTC">UTC</a>] has determined that such changes are too disruptive
			and have too little benefit to be tolerated. Accordingly, the stability of character
			names has been promoted to the status of an invariant in the standard.
		</p>
		<p>A further discussion of invariance and invariants can be found in [<a
				href="#UTR23">UTR23</a>].
			Invariants guard against change for the sake of change, or technological drift,
			but they also prevent the correction of some types of clerical errors, which is not a negligible
			issue in a standard as large and complex as the Unicode Standard. For a current
			list of invariants and a discussion of the tradeoffs, see the
			<a href="https://www.unicode.org/policies/stability_policy.html">Unicode
				Character Encoding Stability Policy</a> [<a href="#Stability">Stability</a>].
		</p>
		<p>Conformance claims need to be distinguished in terms of their relationship
			to invariants and non-invariants in the standard because of their different
			risk levels for stability.</p>

		<h2>3 <a id="Structure">Structure of Unicode Conformance</a></h2>

		<p>This section will serve as a guide to the particular way that the Unicode
			Standard expresses conformance requirements, both in terms of where they are
			located and how they are expressed. It also explores the peculiar aspects of
			conformance related to the synchronized status of the Unicode Standard and the
			independent but closely aligned International Standard ISO/IEC 10646, which
			has its own conformance clauses expressed using ISO conventions. </p>
		<h3>3.1 <a id="Definitions">Definitions</a></h3>
		<p>Chapter 3, &quot;Conformance&quot; of [<a href="#Unicode">Unicode</a>] contains formal
			definitions of terms referenced in the conformance clauses. While modifications
			of these definitions between versions of the Unicode Standard have been, and
			will continue to be necessary, every effort is made to keep the numbering of
			the definitions stable. This makes it easier to maintain external specifications
			that cite a particular definition. (In Version 5.0 of the Unicode Standard,
			all definitions were renumbered, with a cross reference table linking the
			new numbers to the earlier numbering.)</p>
		<p>Several of the Unicode Standard Annexes and the Unicode Technical Standards
				contain their own definitions, or at times explicitly cite definitions from <i>Chapter 3,
				Conformance</i>. Other definitions may be used implicitly, particularly those for
				frequently-used fundamental terms, such as &quot;character&quot;. Definitions in annexes or other standards
				are numbered with a prefix identifying the annex or standard.</p>

		<h3>3.2 <a id="Rules">Rules</a></h3>

		<p>The specification of a Unicode algorithm may make use of numbered rules, each describing one aspect or
			step of an algorithm. Every effort is made to keep the numbering of rules stable. This makes it easier
			to maintain external specifications
			that cite a particular rule. </p>
		<p>Several of the Unicode Standard Annexes&nbsp;and the Unicode Technical Standards contain
			their own rules. Rule numbers are only unique within the description of a particular algorithm, and
			generally lack a prefix identifying the annex or standard.</p>

		<h3>3.3 <a id="Clauses">Conformance Clauses</a></h3>

		<p>The conformance clauses in <i>Section 3.2, Conformance Requirements</i> of [<a
				href="#Unicode">Unicode</a>]
			define the requirements for a conformant implementation. They are expressed
			in terms of the definitions and rules, but also refer to additional
			specifications contained
			in Unicode Standard Annexes. While modifications of these clauses between versions
			of the Unicode Standard have been, and will continue to be necessary, every
			effort is made to keep the numbering of the clauses stable. This makes it easier
			to maintain external specifications that cite a particular clause. (In
			Version 5.0 of the Unicode Standard, all clauses were renumbered, with a
			cross reference table linking the new numbers to the earlier numbering.)</p>
		<p>Several of the Unicode Standard Annexes and the Unicode Technical Standards
				contain their own conformance clauses; these may or may not be related to conformance clauses in <i>Section
				3.2, Conformance Requirements</i>. They are numbered with a prefix identifying the annex or
				standard. In addition to definitions, whether from the Unicode Standard, or from the given annex or Unicode
				Technical Standard, they may also reference rules defined in the given context.</p>

		<h3>3.4 <a id="Annexes">Unicode Standard Annexes</a></h3>

		<p>A Unicode Standard Annex (UAX) contains part of the Unicode Standard, published
			online as
			a standalone document. The relation between conformance to the Unicode Standard
			and conformance to each of the Unicode Standard Annexes is spelled out in detail
			in <i>Section 3.2, Conformance Requirements</i> of [<a href="#Unicode">Unicode</a>].
			Some of the conformance clauses refer explicitly to specifications contained
			in UAXs, such as UAX #9: <i>Unicode Bidirectional
				Algorithm</i> [<a href="#UAX9">UAX9</a>] or
			UAX #15: <i>Unicode Normalization Forms</i> [<a href="#UAX15">UAX15</a>].
			Normative material in other UAXs is defined by any of the mechanisms described
			<a href="#Identification">below</a>.
		</p>
		<p>Other standards developed by the Unicode Consortium have their own conformance
			specification that may adhere more or less closely to the Conformance
				Model described here.
		</p>

		<h3>3.5 <a id="Identification">Identification of Normative Content </a></h3>

		<p>In the Unicode Standard, Chapter 3, <i>Conformance</i>
			contains a set of numbered conformance clauses, as well a set of numbered definitions
			that are referenced by these clauses. For algorithms, a numbered set of rules
			is defined as well. Unicode Standard Annexes containing normative material make
			use of the same convention. The conformance clauses use the letter C with a number;
			definitions use the letter D with a number. Rules for algorithms are numbered
			using one or more prefixes,
				depending on the algorithm; these prefixes are not globally unique.</p>
		<p>Bullets and other textual devices are used to separate
			explanatory and informative text from the normative text of the conformance
			clauses, definitions and rules. Such explanatory and informative text does not
			form part of the actual conformance clauses, definitions or rules. Noteworthy
			text is set off by the use of &quot;Note:&quot;, but unlike the usage in other standards,
			where this device is required to identify informative material, there is no
			set scheme for labeling informative statements in the Unicode Standard. In a
			few cases, an entire
			section of text is identified as containing normative or informative material
		</p>
		<p>Several of the Unicode Technical Standards contain their own conformance clauses,
				definitions and rules; they closely follow the same model for numbering and differentiation of normative
				and informative text.</p>
		<p>For ease of reference, the numbering (including prefix) of definitions, rules and
				clauses is kept as stable as practical&#x2014;for example, by not reassigning a number when a rule has been
				removed. Over time, additional prefixes identifying the particular annex or technical standard have been added for
				clarification. In context, such prefixes may not always be necessary to clearly
			    identify the item in question.</p>

		<h3>3.6 <a id="Properties">Properties</a> </h3>

		<p>The Unicode Character Database [<a href="#UCD">UCD</a>] is described in [<a href="#UAX44">UAX44</a>], with a table specifying
			which properties
			and property files are normative. Other databases of character
				properties are described by their corresponding annexes or technical standards, for example, the
				Unihan Database [<a href="#UAX38">UAX38</a>]. For more information on the concept of normative
			properties, see UTR #23: <i>The Unicode Character
				Property Model</i> [<a href="#UTR23">UTR23</a>].</p>
		<p>The contents of normative files and normative
			fields within data files are formally decided by the Unicode Technical
			Committee. In particular, any fields listing properties on which conformance requirements
			depend are normative.</p>
		<p>In principle, the contents of informative files
			and informative fields within data files are similar to all other
			informative material in the Unicode Standard, which may be changed by its
			editors without formal review by the
			Unicode Technical Committee. However, for
			some properties considered informative the practice is nevertheless to get
			binding committee decision on the values. Conformance requirements do not
			depend on informative material.
			There is an additional,
				<i>provisional</i> status defined, which not only indicates that the
				property information may be preliminary and susceptible to change whenever better
				information becomes available, but also that there will be no efforts at backwards
				compatibility for such properties.
		</p>
		<p>Several of the Unicode Technical Standards or
				Unicode Technical Reports encompass their own data files. Where practical, their description and presentation
				follows precedents established for the [<a href="#UCD">UCD</a>].</p>

		<h3>3.7 <a id="Algorithms">Algorithms</a></h3>

		<p>Unicode algorithms are specified as a series of logical steps. Conformance
			to a Unicode algorithm does not require repeating the steps as described, but
			rather requires achieving the same outputs for the same inputs. This provides
			the necessary flexibility for implementations to pursue optimizations. Whether
			or not conformance to a given algorithm is required by Unicode conformance,
			implementations claiming to implement one of these algorithms must do so in
		</p>
		<p>In many cases, the input to the algorithm is defined in terms of an ordered
			list of character property values: in other words, the results of the algorithm
			are identical for different input strings, as long as each input string maps
			to the same ordered list of character property values. Examples of such algorithms
			include the Unicode Bidirectional Algorithm
			[<a href="#UAX9">UAX9</a>] and the Unicode Line Breaking Algorithm defined in [<a
				href="#UAX14">UAX14</a>].
			In such cases, conformance claims can be tested
			separately for the mapping of characters to property values and for the
			operation on ordered lists of property values.</p>
		<p>Unicode algorithms are specified to apply to
			all code points, and are usually expected to gracefully handle the case of
			receiving input from an up-level version of the standard. The Unicode
			Standard provides for the concept of a default value for properties, to
			improve the forward compatibility of Unicode algorithms. A default value
			applies to unassigned characters, or whenever no specific property value has
			been assigned, as described in [<a href="#UTR23">UTR23</a>]
			In some cases, the use of specific default values is binding, in other cases
			it is merely recommended best practice.</p>

		<h3>3.8 <a id="Tailoring">Tailoring</a></h3>

		<p>A <i>tailoring</i> is any customization of an algorithm for the needs of a specific language, locality or application. Conformance clauses for some algorithms disallow any tailoring, or restrict what aspects may be tailored, or provide explicit methods for tailoring. A tailoring that violates these constraints is non-conformant. Whether or not conformance to a given algorithm is required by Unicode conformance, implementations claiming to implement one of these algorithms may only use conformant tailorings.</p>

		<p>When claiming conformance to an algorithm, implementations must specify the tailoring or customization used. What additional specifications are needed to completely express the tailoring or customization used may depend on the nature of the algorithm, or even the specific conformance clause. In some cases, the requirements are called out in the conformance clause for the tailorable version of an algorithm.</p>

		<p>Some algorithms simply describe the best default practice, and customization
			is assumed for any practical application. An example of this is the
			tailorable part of the line breaking
			algorithm in [<a href="#UAX14">UAX14</a>]. For this and similar cases, it is neither practical nor customary 
			to supply a full specification of the tailoring. Instead, the purpose or context for the tailoring
			would be indicated (such as the applicable locale). In these cases, the claim of conformance reduces to the claim 
			of using a conformant tailoring.</p>

		<h3>3.9 <a id="Profiles">Profiles</a></h3>

		<p>When a conformance clause specifies optional features, a conformance claim that selects one or more of these options is called a <i>profile</i>. Several of the Unicode algorithms ([<a href="#UAX31">UAX31</a>], [<a href="#UTS39">UTS39</a>]) contain conformance clauses that allow either conformance to a default specification of the algorithm or to a tailored version, where different tailorings are possible. In such cases, each distinct tailoring constitutes its own profile. If multiple conformance clauses have options, a profile corresponds to the combined selection of options across any clauses to which an implementation claims conformance.</p>

		<p>The conformance clause may impose some constraints on the profiles:</p>

		<ol>
			<li>No profiles allowed</li>
			<li>Profile allowed
				<ol type="a">
					<li><i>enumerated options</i> - the conformance claim selects from predefined optional features</li>
					<li><i>limited</i> - some parts of the algorithm may not be tailored, but the remainder allows restricted or unrestricted tailoring</li>
					<li><i>restricted by structure</i> - allowable tailoring is limited by the structure of the algorithm</li>
					<li><i>unrestricted</i> - tailoring can achieve a wide range of behaviors</li>
				</ol> 
			</li>
		</ol>

		<h3>3.10> <a id="Relation">Relation to 10646 Conformance</a></h3>

		<p>The Unicode Standard and ISO/IEC 10646 share the same repertoire of coded
			characters, including the character code position, character name and identity.
			However, the two standards differ in the precise terms of their conformance
			specifications. Any conformant Unicode implementation will conform to ISO/IEC
			10646, but because the Unicode Standard imposes additional constraints on character
			semantics and transmittability, not all implementations that are compliant with
			ISO/IEC 10646 will be compliant with the Unicode Standard. For a detailed description
			see <i>Appendix C, Relationship to ISO/IEC 10646</i> of [<a href="#Unicode">Unicode</a>].</p>

		<h2>4 <a id="Areas">Areas of Conformance</a></h2>

		<p>There are several broad areas of application where Unicode conformance makes
			specific types of requirements. Because not all applications and implementations
			cover all these areas, some aspects of Unicode conformance may not be applicable
			to them. Certain aspects may have requirements that are limited to specific subsets of
				the repertoire. If a claim of support is limited to a subrepertoire that does not contain any of
				the affected characters, then any requirements related to them may not be applicable.</p>

		<h3>4.1 <a id="Representation">Representation</a></h3>

		<p>Representation covers all aspects of being able to express and transmit Unicode
			data. It is a requirement applicable to certain protocols (for example, XML),
			but might apply to the storage aspects of databases and other file formats as
			well. Conformant representation applies to correct use of encoding forms and
			encoding schemes, as well as the ability to represent all Unicode code points.
			In addition, issues related to Unicode normalization [<a href="#UAX15">UAX15</a>]
			are important.</p>

		<h3>4.2 <a id="Transcoding">Transcoding</a></h3>

		<p>Conformant transcoding between Unicode and all other so-called <i>legacy
			</i>character encodings, retains the identity of the transcoded characters.
			In addition, it may claim to retain a specific normalization form for the converted
			data. See [<a href="#UAX15">UAX15</a>]. A separate Unicode Technical
			Standard, UTS #22: <i>Character Mapping
				Markup Language</i> [<a href="#UTS22">UTS22</a>], discusses many
			issues relevant to character transcoding and defines a format for expressing
			character mappings. Implementations may choose to conform to that format in
			order to be able to interchange mapping tables.</p>

		<h3>4.3 <a id="Processing">String Processing</a></h3>

		<p>String processing covers all operations on Unicode texts that can be carried
			out without considering layout and specifically without considering fonts. String
			processing encompasses a large variety of operations including, but not limited
			to, text segmentation, text parsing, handling regular expressions, case mapping and
				folding, searching,
			and sorting, as well as creating formatted text representation of data types.
			For a number of these operations, model algorithms and other specifications exist
			to which an implementation may claim conformance, such as [<a href="#UTS10">UTS10</a>],
			[<a href="#UTS18">UTS18</a>], [<a href="#UAX29">UAX29</a>], and [<a
				href="#UAX14">UAX14</a>].</p>

		<h3>4.4 <a id="Layout">Text Layout, Including Display and Selection</a></h3>

		<p>Layout comprises all operations that go from backing store to displayed text.
			The same operations are run in reverse for text selection. These operations are dependent
			on font data, but are considered separately from fonts because the same implementation
			typically can work with a range of different fonts. Some operations, such as
			suppressing the display of certain ignorable code points, are typically handled
			by the layout system without involving fonts. Conformance issues for layout
			processes include reordering from logical to display ordering, as well as positional
			shape selection. For bidirectional reordering, conformance to the Unicode Bidirectional Algorithm [<a href="#UAX9">UAX9</a>]
			is required. For positional shaping and script-specific layout, model algorithms
			exist, or are being developed for Arabic and Syriac, Devanagari, Tamil and other
			Indic Scripts, as well as Mongolian. </p>
		<p>
			All these scripts occasionally require the use of
			<i>join controls</i> (ZWJ or ZWNJ) to override
			default rendering of certain character sequences to achieve a specific
			appearance required by orthographic rules. This is different from
			purely stylistic variations in rendered forms.
		</p>
		<p>Conformance requires a relation between specific constructs in the
			writing system and corresponding character code sequences, so that these
			constructs can be interchanged reliably; therefore
			the conformance requirements include support for both the generic rendering
			and these types of basic and required orthographic variations. </p>
		<p>In contrast, the requirements of high-end typography
			for any scripts typically exceed the basic rendering specifications put
			forth in the Unicode Standard. Conformance to the
			Unicode standard does not limit or prescribe high-end typographical features
			that an implementation can support.</p>

		<h3>4.5 <a id="Fonts">Fonts</a></h3>

		<p>The Unicode Standard does not standardize the appearance of characters,
			but instead expects them to be depicted within a customary range of
			design interpretations. Conformance to the Unicode Standard therefore primarily
			refers to those tables in the fonts that correlate character codes with the
			glyphs in the font, for example cmap tables, and to claims of &quot;coverage&quot; of
			the Unicode repertoire by fonts.</p>

		<h3>4.6 <a id="Input">Input</a></h3>

		<p>Conformance-related issues for character input consist of coverage of Unicode
			repertoire, conversion of input to Unicode character values for storage, and
			consistency with the text models required for particular scripts and text layout.
			The entities here are mostly IMEs and keyboards (drivers).</p>

		<h2>5 <a id="Levels">Levels of Support</a></h2>

		<p>Unicode Technical Standard #18:<i> Unicode Regular Expressions</i> [<a href="#UTS18">UTS18</a>]
			is an example of a standard that has well-defined levels of conformance. Each
			implementation can claim conformance to a specific level, and each level has
			specific conformance requirements. By contrast, conformance to the Unicode Standard
			is not organized into such discrete levels. However, there are some areas where
			the standard allows limited, or partial support of some requirements.</p>

		<h3>5.1 <a id="Repertoire_Coverage">Repertoire Coverage</a></h3>

		<p>The Unicode Standard explicitly does not require that all implementations
			support all Unicode characters. Any implementation may support an arbitrary
			subset of Unicode characters, and in fact, may support different sets of characters
			for different operations.</p>
		<p>However, for certain algorithms, any implementation that claims conformance
			is required to support the full range of Unicode code points covered by that
			algorithm. For example, an implementation of normalization, or&nbsp;a UTF-8
			converter is required to support the entire range of Unicode code points.</p>
		<blockquote>
			<p><b>Note:</b> An implementation may define an algorithm, such as identifier
				matching, that uses normalization as part of the algorithm but also restricts
				the allowable set of input characters. In that case, any implementation
				of that algorithm is free to use a limited implementation of normalization
				because the limit on the input makes it impossible to distinguish between
				a full and limited implementation of normalization.</p>
		</blockquote>
		<p>An implementation may support a certain repertoire of characters, but may
			not support all sequences of characters from that repertoire. For example, an
			implementation may support combining marks, but may not be able to render combining
			sequences that contain more than one combining mark.</p>
		<blockquote>
			<p><b>Note:</b> Some algorithms are specified in a way that they apply to
				all Unicode characters and all possible sequences. A complete and conformant
				implementation of such an algorithm would support all possible sequences.</p>
		</blockquote>
		<p>Unlike some other character encoding standards, [<a href="#Unicode">Unicode</a>]
			does not provide a formal method for
			specifying sub-repertoires, nor announcement techniques that would indicate
			the support for specific sub-repertoires.</p>

		<h3>5.2 <a id="Full_Support">Full Support</a></h3>

		<p>Conformance in a given area is not necessarily the same as full support for
			that area, as conformance requirements in many cases are minimal requirements.
			Exceptions are certain well-defined areas such as encoding forms or normalization
			that have few or no options and few or no levels.</p>

		<h3>5.3 <a id="Partial_Support">Levels of Support Defined</a></h3>

		<p>While conformance means not violating any of the conformance clauses applicable
			to an area, it does not necessarily require that a specific feature be implemented
			or that it be implemented in its most fancy realization.</p>
		<p>Given the aim of the Unicode Standard of
			universal coverage and of universal applicability for text encoding,
			few implementations will attempt to exhaustively support the
			entire repertoire of the standard. Support of a limited repertoire is
			typical, and in many cases will deliver better results to users. For example, for
			most purposes, a font supporting a particular set of characters or scripts
			with high quality is going to be more useful than a font supporting most or
			all Unicode characters with minimal quality.</p>
		<p>The Unicode Standard does not define particular
			levels of support.</p>
		<blockquote>
			<p><b>Note:</b> Some Unicode algorithms
				require that the entire range of code points be supported by a
				conformant implementation. Examples include Unicode normalization [<a href="#UAX15">UAX15</a>]
				and encoding form conversion, for example, conversion between UTF-8 and
				UTF-32. An exception would be a situation where another feature of an
				implementation restricts the available input—in such cases an
				implementation that acts only on a subset of code points would be
				conformant if evaluated <i>in the context of a conformant overall
					implementation.</i></p>
		</blockquote>

		<h2>6 <a id="Interoperability">Interoperability</a></h2>

		<h3>6.1 <a id="Inter-level">Inter-level Compatibility Issues</a></h3>

		<p>Conformant implementations will have to interact with both down-level and
			up-level implementations. This creates particular issues. The Unicode conformance
			requirements are structured to encourage implementations to passively support
			data containing characters assigned in future versions of the standard.</p>

		<h4>6.1.1 <a id="Down-level">Down-level Compatibility</a></h4>

		<p>For several important properties, [<a href="#Unicode">Unicode</a>] provides explicit support for
			implementations that need to be compatible with a down-level version of the
			relevant algorithm. This is usually done by guaranteeing the stability of property
			assignments [<a href="#Stability">Stability</a>]. In some cases, specific properties
			are introduced that isolate an algorithm from changes in a character&#39;s General
			Category. For an example, see the section on backwards compatibility in UAX #31:
			<i>Unicode Identifiers and Syntax</i> [<a href="#UAX31">UAX31</a>].
		</p>

		<h4>6.1.2 <a id="Up-level">Up-level Compatibility</a></h4>

		<p>For most properties, there is a single default value that down-level systems
			can apply to unassigned characters when present in data sent from up-level systems.
			Where the fallback represented by such single default value would give
			particularly
			poor results, the [<a href="#UCD">UCD</a>] or [<a href="#Unicode">Unicode</a>]
			provide for several ranges with different default values. Such default values
			increase the chance that an actual property assigned to a new character will
			be the same as the default value for its code point in the down-level version
			of [<a href="#Unicode">Unicode</a>].&nbsp; An example are the bidirectional properties,
			which default to strong right-to-left for areas of the code space earmarked
			for RTL scripts.</p>
		<p>A common implementation technique is to use dynamic assignment of implementation
			specific default values, based on the actual property values of characters surrounding
			an unassigned code point. Such interpolation of character properties can further
			increase the chance that any given code point is treated compatibly by a down-level
			system. At the same time, it can increase
			performance by creating longer contiguous runs of code points with the same
			property. </p>

		<h3>6.2 <a id="Repertoire_Matching">Repertoire Matching</a></h3>

		<p>It is generally not helpful to tag data created by an implementation with
			the version level of Unicode supported by that implementation. Because the repertoire
			of that version of Unicode is far larger than the actual set of characters used
			in the data, a large part of text data created and interchanged worldwide can
			be represented in <i>all</i> versions of Unicode. Therefore, the version level
			of the implementation bears little relation to the repertoire needed to cover
			the data. </p>
		<p>Most implementations will not equally support the entire repertoire of Unicode
			characters for a given version. In fact, there is no conformance requirement
			to support any specific part of the repertoire. Therefore, even if the version
			level of a receiving implementation is higher than that of the creating implementation
			there is no guarantee that both support the repertoire covered by the data,
			or support it equally well.</p>
		<p>The Unicode Standard [<a href="#Unicode">Unicode</a>] defines no method for enumerating or identifying
			common sub-repertoires of the standard, but ISO/IEC 10646 does so. Implementations
			can use the [<a href="#DerivedAge">DerivedAge</a>] for each character code to
			avoid sending character codes to a down-level system which lacks a definition
			for them. Because character coding is strictly additive, implementations receiving
			data can easily identify characters that are not defined in the version of the
			standard to which they conform and take appropriate action. In many cases, appropriate
			action consists of passing through such data, or treating them as characters
			possessing default properties. (See UTR #23: <i>The
				Unicode Character Property Model</i> [<a href="#UTR23">UTR23</a>] for more details
			on default properties).</p>

		<h3>6.3 <a id="Matching_Areas">Matching Areas and Levels of Conformance
			between Implementations and Components</a></h3>

		<p>A mere matching of version numbers between an implementation and components
			it relies on will not be sufficient to determine the conformance status of the
				implementation. A principal reason is
				that components may subset the repertoire
			they support or choose a different level of conformance, where available.</p>

		<h2><a id="Appendix_1">Appendix 1 - ECMA Report on the Meaning of Conformance to Standards</a></h2>

		<p>This appendix contains observations on the
			meaning of conformance to standards excerpted and abridged with permission from a September 1983 report by
			ECMA.
			These observations highlight the differences between traditional standards,
			for example for industrial products based on mechanical processes, on the one hand, and software related
			standards, for example for computer languages, on the other hand. From the
			text it becomes clear that the issues related to conformance discussed in
			the present report are neither novel, nor unique to the Unicode Standard. In a few instances
			emphasis has been added.</p>
		<blockquote>
			<p>[...]</p>
			<p><b>THE MEANING OF CONFORMANCE TO STANDARDS</b></p>
			<p>September 1983</p>
			<p>[...]</p>
			<p>It is helpful to distinguish very clearly between conformance and certification.</p>
			<p>Conformance to a standard may be claimed for a computer product (hardware
				or software) if: </p>
			<ul style="list-style-type: none">
				<li>i) the standard is intended to cover entities of the class to
					which the product belongs, and </li>
				<li>ii) the product satisfies all the mandatory clauses including chosen
					alternative clauses of the standard, if any, and </li>
				<li>iii) the product satisfies any chosen optional clauses, and </li>
				<li>iv) a clear declaration is provided of the standard alternatives and/or
					options to which the product is claimed to conform. </li>
			</ul>
			<p><b>Certification</b> </p>
			<p>Certification means the issue of a document declaring that a particular (sample
				of a) product has been checked for conformance to a standard or standards. Certification
				is, as is known, mandatory in some countries for some standards e.g. related
				to human safety or connections to PTT services. </p>
			<p>The process of certification implies some form of product examination and
				checking. Any body can issue a certificate. If the certificate is issued by
				the supplier of the product, the procedure is called &quot;self-certification&quot;; if
				by an independent body, neither supplier nor purchaser, it is called &quot;third
				party certification&quot;. </p>
			<p>The status and validity of a certificate clearly depend on the reputation
				and/or authority of its issuer and his evident competence to declare the conformance
				of the product, whether from a knowledge or inspection of its design, results
				of tests or otherwise. To be of value to a user, a certificate of product conformance
				obviously demands some assurance that all samples of a product actually supplied
				thereafter, conform as strictly as the test sample. </p>
			<p>Ideally, conformance should result from the product design; it should be
				a matter of technically ascertainable facts that can be established unambiguously
				by reproducible tests or checks. <b>However, establishing conformance quite unambiguously
					by tests or checks, is, in some cases, beyond the state of the art</b>. </p>
			<p>For a wide range of standards, suppliers themselves are obviously well placed
				to make statements with varying degrees of commitment as to the conformance
				of their products to particular standards. </p>
			<p>[...]</p>
			<p>[The] choice [of
				whether or not third party tests are advisable] is entirely dependent
				on a variety of customer considerations, among which are government regulations.
				However, ... third party tests do need considerable expertise, whereas such expertise as well as
				knowledge
				of the design is in most cases available at suppliers&#39; level. Thus third party
				tests can add considerable administrative complexity and often delay, to say
				nothing of significantly adding to cost. </p>
			<p><b>2. PRINCIPLES OF CONFORMANCE </b></p>
			<p>Any organization publishing standards in any field does so on the assumption
				that they will benefit both suppliers and users of products....
			</p>
			<p>Historically, the earliest standards were probably physical standards for
				weights and measures. Obviously, these benefited both merchants and their customers;
				the customers avoided short measure and honest merchants giving full measure
				were not driven out of business by less scrupulous competitors. Broadly
				similar considerations
				apply today to most standards, including computer standards. </p>
			<p>Innumerable standards are now relied upon in business and industry, for example,
				to ensure interchangeability of parts in producing and repairing machinery and
				plant in the factory and in the home. Not merely must the parts fit so that
				mechanism can be assembled (and spare parts procured), they must be made of
				suitable materials so that they do not wear out too fast or fail, say to provide
				the correct degree of friction, as in brake lining. In such cases, a hierarchy
				of standards is needed, starting with the primary ones for length mass and time,
				then going on to more complex matters such as the form of screw threads and
				including others defining methods for measurement of hardness, say of escapement
				parts in a watch. The actual design of any particular watch would then also
				call for a set of manufacturers&#39; internal standards defining the dimensions
				and other characteristics of its parts. Checking the conformance of any component
				part will involve checking its conformance within defined limits of tolerance
				to each clause of each of the relevant standards. </p>
			<p>Obviously many such general considerations will apply to the setting of standards
				for computer products. For instance, consider the set of standards required
				to make sure that it is possible to interchange data on magnetic tape between
				two computer systems. Clearly it is necessary to stipulate (with acceptable
				tolerance levels) the physical characteristics of the tape, its width, thickness
				and magnetic properties and also the dimensions and material of the reel on
				which the tape is wound. Then the limits of size, position and magnetic strength
				of the recorded elements on the tape must be defined. Given conformance with
				these criteria, one could feel confident that individual magnetic elements recorded
				on a tape by one tape transport could be successfully read by another. </p>
			<p>However, unless there is also agreement about the meaning of certain recorded
				bit combinations, it may still not be possible even to stop the tape correctly
				between blocks. Alternatively, if one simply relies on the absence of recorded
				signals in inter-block gaps, then those gaps must be of defined sizes and (in general) free from
				spurious signals and so on. Again, there must be some agreed way of recognizing
				the start and end of the tape to avoid breaking it or unwinding it completely
				from the reel. </p>
			<p>Further, if a computer attached to a transport reading an interchange tape
				is to make sense of the elements recorded on the tape, the bit combinations
				in the recorded elements must conform to some agreed code. There must also be
				information on the tape to identify both the tape itself and the data written
				on it, in other words a label. So certain elements of a procedural protocol
				for the reading and writing processes must be incorporated into a magnetic tape
				interchange standard.</p>
			<p>Thus, the successful interchange of data, on magnetic tape say, is likely
				to depend on conformance not merely to one but to a whole set of particular
				specialized standards for character codes, for recording these on magnetic tape,
				for labeling or identifying the tape, for the format of the data and so on.
				These in turn rely for their validity on certain primary standards, not only
				of physical measurement, e.g. of length or magnetic properties, but also of
				sets of characters in the case of codes. As was stressed above, this is so well
				known and even obvious as to be commonly forgotten or ignored. </p>
			<p>But it is very important to be clear what may properly be said for instance
				about conformance to data interchange standards. In other words what it is that
				is actually required to conform. </p>
			<p>A question as to whether a particular magnetic tape transport&nbsp; conforms
				to a certain set of data interchange standards, can thus be answered only by
				a statement about its capability of recording and reading tapes in accordance
				with those standards, since the standards in fact say nothing explicitly about
				tape transport as such. </p>
			<p>When checking for conformance to a magnetic tape interchange standard, one
				should look upon the transport, the computer driving it, and the computer software
				together as equivalent to a piece of test equipment. It is convenient, indeed
				it may be essential, to make use of a transport in determining conformance to
				a tape interchange standard, although the transport itself is not the subject
				of that standard. This type of distinction will be seen to be even more important
				in later discussion of conformance to other kind of standard. What is implied
				is that when either drafting or reading a standard one must be very clear as
				to precisely what entities are and what entities are not affected directly by
				that standard. </p>
			<p><b>3. SOME PROBLEMS OF CONFORMANCE </b></p>
			<p>In this section some of the problems that have arisen in establishing conformance
				are examined. Ideally, any standard ought to be written in such a way that conformance
				can be established, if not unambiguously, at least to the joint satisfaction
				of a typical vendor and a typical purchaser. Conformance would be checked with
				one hundred per cent certainty either by a set of physical measurements, by
				direct inspection or by performing certain functional tests that give yes or
				no answers, or some combination of the three. But not all standards are amenable
				to this approach. For example, <b>particular difficulties have arisen in defining
					conformance, notably in connection with programming language standards</b>. An early
				example of such a standard would apply only to the language, and would consist
				of definitions of what could legitimately be said in that language and how it
				was to be expressed. Typically, it would prescribe a set of commands that could
				be written and made to apply to certain defined classes of variable or operand,
				what those commands meant and what the proper results of executing the commands
				should be. In effect, such language definitions postulated a hypothetical machine
				that could execute directly programs written in the language, though usually
				such a machine did not exist. </p>
			<p>The difficulties that arose in deciding conformance led to the introduction
				of conformance clauses in language specifications. These clauses often stated
				both the conditions to be satisfied by a program purporting to be written in
				the language and by an implementation in the form of a compiler/computer combination.
			</p>
			<p>If one were asked whether a language standard can or ought to be applicable
				to a compiler, one should consider the precision with which it is possible to
				determine whether the compiler, together with the hardware on which it is designed
				to run, precisely emulates the hypothetical machine implied by the standard,
				command by command. In the strictest sense, this cannot be done by testing.
				High-level commands are written in terms of general operands described by symbols,
				whereas any real (emulating) machine operates logically and arithmetically on
				bit patterns. A correspondence between the transformation of actual bit patterns
				and the transformation of the ideal operands is difficult to define precisely
				and unambiguously.</p>
			<p>For this reason if for no other, it is usually impractical to verify exactly
				the operations of individual commands. Moreover, unless the emulation is by
				an interpretive process one command at a time, the sequence of machine level
				instructions generated by a compiler for each high level command will depend
				on the sequence of other high level commands in which it is embedded. It is
				thus possible in practice to verify only the results of several commands taken
				as a sequence on selected ranges of operands. The combinations of sets of machine,
				level sequences of instructions and of values of operands are limitless, and
				only a small fraction of all possible command sequences can be explored in the
				testing. Experience has shown that extensive testing is necessary if troublesome
				misinterpretations of a language standard are to be detected. </p>
			<p>Other more mundane reasons why it may not be completely straightforward to
				determine whether a given product conforms to a specific standard include:
			</p>
			<p>i) the drafting of the standard itself may not be clear or complete, (e.g.
				the test limits have not been defined),
				so that its very interpretation is contentious, </p>
			<p>ii) no satisfactory method of testing conformance was (or could have been)
				laid down so that technical disputes arise in interpreting test results, </p>
			<p>iii) the product in question fails to embody every aspect of the standard,
				even though it conforms in respect of those aspects it does embody, </p>
			<p>iv) the product does conform in every defined respect but it incorporates
				additional features of a similar kind to those specified and which could, for
				example, affect interchanges of data or programs, interworking between equipments
				or interchange of units of equipment, </p>
			<p>v) the standard left options to the implementor that mean that a desired
				form of interworking can be frustrated. </p>
			<p>The first two of these reasons imply some weaknesses in standards that could
				possibly have been eliminated in the drafting process and that in future are
				more likely to be avoided now that stress is being placed on the importance
				of doing so. However, as has been explained in connection with programming languages,
				comprehensive testing for conformance may be strictly impossible, so that while
				the position can certainly be improved, absolute conformance may not be a valid
				concept in every instance. </p>
			<p>The last three reasons however relate to decisions by the designer or supplier
				of a product intended to conform to, or to interwork with, other products in
				accordance with some standardized protocols or procedures. The level of standardization
				achieved may be entirely adequate and acceptable in some contexts, but not others.
				It is also clear that both the force and the value of statements of conformance
				depend on the extent to which the standard was drafted with a clear intention
				of making conforming products identical, interchangeable or interworkable. Very often the variation in
				the
				drafters&#39; intentions here has been enormous. In the case of programming language
				standards, the drafters were clearly unable to meet the objective of completely
				standard entities (programs or compilers) that would interwork with no difficulty
				at all. </p>
			<p>In these circumstances, it becomes specially important that statements made
				by different suppliers are on similar lines, so that one does not claim conformance
				in circumstances where another would not feel justified in doing so. ...
				But it is equally important
				that users understand clearly what manufacturers&#39; statements about conformance
				mean, and if confirmed, what benefits they as users can expect to derive from
				the level of standardization implied. </p>
			<p>[...]</p>
			<p><b>5. SIGNIFICANCE OF CONFORMANCE CLAIMS </b></p>
			<p>In this section are given some idealized meanings of conformance to standards
				in each of the above categories. It is accepted that a claim to conform may
				be substantiated by the passing of certain checks or tests. Ultimately the claim
				rests on the product having been correctly designed to conform. F<b>or many reasons,
					such ideal meanings may not always be applicable today.</b> Consideration of deviations
				from these ideals does, however, lead to practical recommendations. </p>
			<p>[...]</p>
			<p><b>5.5 Significance of a Claim to Conform to Standards of the Proposed Classes
				</b></p>
			<p>The following are statements of the ideal, not necessarily of current practice.</p>
			<p><i>5.51 Class I -Physical Standards including Safety Standards <br>
				</i>Conformance involves checking to mandatory clauses of the standard; the result
				of each check gives a clear indication of pass or fail and there is no need
				to do tests or checks in any particular sequence or combination. The results
				will be the same. Conformance means passing all tests or checks. </p>
			<p><i>5.5.2 Class II -Codes and Formats <br></i>The standard will distinguish mandatory from optional
				features and define both
				the tests or checks applicable as well as the category or categories of object
				covered by the standards. Checking will involve establishing: </p>
			<p>i) conformance with all mandatory features including declared alternatives,
			</p>
			<p>ii) that in respect of each optional feature, a declaration has been made of the option selected,
			</p>
			<p>iii) conformance to chosen options. </p>
		</blockquote>
		<p>In the Unicode context, an alternative
			would be the choice of an encoding form, while an option might be
			whether or not to support a particular script, or to provide tailoring where
			permissible.</p>
		<blockquote>
			<p><i>5.5.3 Class III -Programming languages <br></i>A programming language standard defines a programming
				language and not its compilers
				which are means by which programs written in that language are converted for
				execution. The standard does not define a compiler explicitly though in practice
				the problem is to test compilers. </p>
			<p>One can envisage high-level test programs or suite of test programs so
				devised that all features of a language are systematically exercised. If
				these test programs when submitted to a compiler produced a machine level
				program that ran and produced the intended results, one could infer that the
				compiler was (in general) capable of compiling source code written in accordance with the language
				standard.
			</p>
			<p>For compilers the term &quot;validation&quot; is used increasingly to mean checking
				to see that a compiler will properly handle programs written in a given high-level
				language. The issue is not one of testing for absolute conformance since
				that is not achievable. Obviously a validation process will not often give an unequivocal result, more a
				quality rating. The only
				unequivocal result would be an abject failure. The reasons for this were explained
				in section 3 above. </p>
			<p>To test a claim that a program has been written in a specified programming
				language, the program could be submitted to a compiler known to be effective
				for that language and for a particular computer. If the compiler a) compiled
				the program, and b) the program ran and gave the intended results for each of
				a set of carefully chosen input parameters, it might then reasonably be deduced
				that the program submitted was correctly written in that language. </p>
			<p><i>5.5.4 Class IV -Communication Protocols <br></i>Establishment of conformance rules for standards for
				communication protocols has been handicapped by:
			</p>
			<ul>
				<li>the new architectural approach needed, </li>
				<li>the consequent lack of working experience, </li>
				<li>the inherent complexity of the functions to be performed. </li>
			</ul>
			<p>Thus procedures for conformance testing are immature and, indeed, the very meaning of conformance in this
				context is still under discussion.
			</p>
			<p>[...]</p>
		</blockquote>
		<p>The Unicode Standard has features of both
			Class III (if one views a programming language as example of an
			algorithmic transformations of input to output) and Class IV (for example,
			the character encoding forms, Unicode Normalization Algorithm, and
			Unicode Bidirectional Algorithm are all more or
			less concerned with the consistency of interchange of text data).</p>

		<h2><a id="References">References</a></h2>
		<table class="noborder" cellpadding="8">
			<tr>
				<td class="noborder" valign="top" width="1">[10646]</td>
				<td class="noborder" valign="top">International Organization for Standardization.
					<i>Information Technology--Universal Multiple-Octet Coded Character
						Set (UCS)</i>.&nbsp; (ISO/IEC 10646:2020).<br>
						<i>For availability see <a href="https://www.iso.org">https://www.iso.org</a></i>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[14651]</td>
				<td class="noborder" valign="top">International Organization for Standardization.
					<i>Information Technology--International String ordering and comparison--Method
						for comparing character strings and description of the common template
						tailorable ordering.&nbsp; </i>(ISO/IEC 14651:2020).<br>
						<i>For availability see <a href="https://www.iso.org">https://www.iso.org</a></i>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="Charts">Charts</a>]</td>
				<td class="noborder" valign="top">The online code charts can be found
					at <a href="https://www.unicode.org/charts/">https://www.unicode.org/charts/</a><br>
					An index to characters names with links to the corresponding chart is
					found at: <a
						href="https://www.unicode.org/charts/charindex.html">https://www.unicode.org/charts/charindex.html</a>
				</td>
			</tr>
			<tr>
				<td class="nb" valign="top" width="1">[<a id="DerivedAge">DerivedAge</a>]</td>
				<td class="nb" valign="top">The version for which a given character
					was added to the Unicode Standard is listed in:<br>
					<a
						href="https://www.unicode.org/Public/UCD/latest/ucd/DerivedAge.txt">https://www.unicode.org/Public/UCD/latest/ucd/DerivedAge.txt</a>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[ECMA1983]</td>
				<td class="noborder" valign="top"><i>The Meaning of Conformance to
						Standards</i>, ECMA TR/18, September 1983, ECMA, Geneva.</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1" height="42">[<a id="Errata">Errata</a>]</td>
				<td class="noborder" valign="top" height="42">Updates and errata to the Unicode
					Standard, as well as other technical standards developed by the Unicode
					Consortium can be found at <a href="https://www.unicode.org/errata/">
						https://www.unicode.org/errata/</a></td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="FAQ">FAQ</a>]</td>
				<td class="noborder" valign="top">Unicode Frequently Asked Questions<br>
					<a href="https://www.unicode.org/faq/">https://www.unicode.org/faq/</a><br>
					<i>For answers to common questions on technical issues.</i>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="Glossary">Glossary</a>]</td>
				<td class="noborder" valign="top">Unicode Glossary<br>
					<a href="https://www.unicode.org/glossary/">
						https://www.unicode.org/glossary/</a><i> <br>
						For explanations of terminology
						used in this and other documents.</i>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="Stability">Stability</a>]</td>
				<td class="noborder" valign="top">Unicode Character
					Encoding Stability Policy
					<a
						href="https://www.unicode.org/policies/stability_policy.html">https://www.unicode.org/policies/stability_policy.html</a>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="UAX9">UAX9</a>]</td>
				<td class="noborder" valign="top">Unicode Standard Annex #9: <i>
						Unicode Bidirectional Algorithm<br>
					</i>
					<a href="https://www.unicode.org/reports/tr9/">https://www.unicode.org/reports/tr9/</a>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="UAX14">UAX14</a>]</td>
				<td class="noborder" valign="top"><i>Unicode Standard Annex #14: Unicode Line
						Breaking Algorithm</i><br>
					<a href="https://www.unicode.org/reports/tr14/">https://www.unicode.org/reports/tr14/</a>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="UAX15">UAX15</a>]</td>
				<td class="noborder" valign="top"><i>Unicode Standard Annex #15: Unicode Normalization
						Forms</i><br>
					<a href="https://www.unicode.org/reports/tr15/">https://www.unicode.org/reports/tr15/</a>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="UAX29">UAX29</a>]</td>
				<td class="noborder" valign="top"><i>Unicode Standard Annex #29: 
						Unicode Text Segmentation</i><br>
					<a href="https://www.unicode.org/reports/tr29/">https://www.unicode.org/reports/tr29/</a>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="UAX31">UAX31</a>]</td>
				<td class="noborder" valign="top"><i>Unicode Standard Annex #31: Unicode Identifiers and Syntax</i><br>
					<a href="https://www.unicode.org/reports/tr31/">https://www.unicode.org/reports/tr31/</a>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="UAX38">UAX38</a>]</td>
				<td class="noborder" valign="top"><i>Unicode Standard Annex #38: Unicode Han Database (Unihan)</i><br>
					<a href="https://www.unicode.org/reports/tr38/">https://www.unicode.org/reports/tr38/</a>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="UAX44">UAX44</a>]</td>
				<td class="noborder" valign="top"><i>Unicode Standard Annex #44: Unicode Character Database</i><br>
					<a href="https://www.unicode.org/reports/tr44/">https://www.unicode.org/reports/tr44/</a>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="UCD">UCD</a>]</td>
				<td class="noborder" valign="top">Unicode Character Database,
					<a href="https://www.unicode.org/ucd/">https://www.unicode.org/ucd/
					</a><i><br>
						For an overview of the Unicode Character Database and a list of its
						associated files</i>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="Unicode">Unicode</a>]</td>
				<td class="noborder" valign="top">The Unicode Standard<br>
						Latest version:<br>
					<a href="https://www.unicode.org/versions/latest/">https://www.unicode.org/versions/latest/</a>.
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="UTC">UTC</a>]</td>
				<td class="noborder" valign="top">The Unicode Technical Committee, see
					<a href="https://www.unicode.org/consortium/utc.html">https://www.unicode.org/consortium/utc.html</a>
					for more information on procedures.
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="UTR23">UTR23</a>]</td>
				<td class="noborder" valign="top"><i>Unicode Technical Report #23: The
						Unicode Character Property Model</i><br>
					<a href="https://www.unicode.org/reports/tr23/">https://www.unicode.org/reports/tr23/</a>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="UTS10">UTS10</a>]</td>
				<td class="noborder" valign="top"><i>Unicode Technical Standard #10: 
						Unicode Collation Algorithm</i><br>
					<a href="https://www.unicode.org/reports/tr10/">https://www.unicode.org/reports/tr10/</a>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="UTS18">UTS18</a>]</td>
				<td class="noborder" valign="top"><i>Unicode Technical Standard #18: 
						Unicode Regular Expressions</i><br>
					<a href="https://www.unicode.org/reports/tr18/">https://www.unicode.org/reports/tr18/</a>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="UTS22">UTS22</a>]</td>
				<td class="noborder" valign="top"><i>Unicode Technical Standard #22: 
						Character Mapping Markup Language (CharMapML)</i><br>
					<a href="https://www.unicode.org/reports/tr22/">https://www.unicode.org/reports/tr22/</a>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="UTS39">UTS39</a>]</td>
				<td class="noborder" valign="top"><i>Unicode Technical Standard #39: 
						Unicode Security Mechanisms</i><br>
					<a href="https://www.unicode.org/reports/tr39/">https://www.unicode.org/reports/tr39/</a>
				</td>
			</tr>
			<tr>
				<td class="noborder" valign="top" width="1">[<a id="Versions">Versions</a>]</td>
				<td class="noborder" valign="top">Versions of the Unicode Standard,
					<a href="https://www.unicode.org/standard/versions/">
						https://www.unicode.org/standard/versions/</a><i><br>
						For information on version numbering, and citing and referencing the
						Unicode Standard, the Unicode Character Database, and Unicode Technical
						Reports.</i>
				</td>
			</tr>
		</table>
		<h2><a id="Acknowledgements">Acknowledgements</a></h2>
		<p>Thanks to Dr. Julie Allen for extensive copy-editing. Thanks to ECMA for
			giving permission to reproduce excerpts of their report on the meaning of conformance to
			standards.</p>
		<h2><a id="Modifications">Modifications</a></h2>
		<p>The following summarizes modifications from the previous version of this
			document.</p>
		<p><b>Revision 7</b></p>
		<ul>
			<li>Updated text format and styles to current UTR practice. [KW]</li>
			<li>Changes to the text throughout to track evolving practice since 2008. [AF]</li>
			<li>Additional clarification. [AF]</li>
			<li>Minor restructuring of the section on Conformance Testing. [AF]</li>
			<li>New section on Rules. [AF]</li>
		</ul>
		<p>Revision 6 being a proposed update, only changes between revisions 5 and 7 are noted here.</p>
		<p><b>Revision 5</b></p>
		<ul>
			<li>Minor edits to the text. [KW]</li>
			<li>Corrected titles of UAXs and UTRs. [KW]</li>
			<li>Removed reference to withdrawn UTR #32. [KW]</li>
		</ul>
		<p>Revision 4 being a proposed update, only changes between revisions 3 and 5 are noted here.</p>
		<p><b>Revision 3</b></p>
		<ul>
			<li>Updated for publication as Unicode Technical Report. [AF]</li>
		</ul>
		<p><b>Revision 2</b></p>
		<ul>
			<li>Updated to Draft version incorporating input from reviewers. [AF]</li>
		</ul>
		<p><b>Revision 1</b></p>
		<ul>
			<li>Initial proposed Draft. [AF]</li>
		</ul>
		<hr>
		<p>
			<font size="-1">Copyright © 2025 Unicode, Inc. All Rights Reserved.
				The Unicode Consortium makes no expressed or implied warranty of any kind, and
				assumes no liability for errors or omissions. No liability is assumed for incidental
				and consequential damages in connection with or arising out of the use of the
				information or programs contained or accompanying this technical report. The
				Unicode <a href="https://www.unicode.org/copyright.html">Terms of Use</a> apply.</font>
		</p>
		<p>
			<font size="-1">Unicode and the Unicode logo are trademarks of Unicode, Inc.,
				and are registered in some jurisdictions.</font>
		</p>
		<p>&nbsp;</p>
	</div>

</body>

</html>
Rendered documentLive HTML preview