Unicode®标准附件#44
Unicode字符数据库
总结
本附件提供了Unicode字符数据库(UCD)。它描述了Unicode的布局和组织字符数据库及其如何指定Unicode字符属性的正式定义。
状态
本文档已由Unicode成员和其他感兴趣的人审阅并已由Unicode联盟批准发布。这是一份稳定的文件,可以用作参考材料或作为其他规范的标准参考。
Unicode标准附件(UAX)构成了Unicode标准,但作为单独的文档在线发布。这个Unicode标准可能要求符合Unicode中的规范性内容标准附件,如果该版本的一致性章节中有规定Unicode标准。UAX文档的版本号对应于它是其组成部分的Unicode标准的版本。
请随在线报告提交更正和其他评论形式[反馈]. 有助于理解本附录的相关信息见Unicode标准附录#41,“Unicode标准附件的通用参考.” 有关Unicode标准的最新版本,请参阅[Unicode码]. 有关当前Unicode技术报告的列表,请参阅[报告]. 有关Unicode标准版本的更多信息,请参阅[版本]. 有关适用于本附件的任何勘误表,请参见[勘误表].
目录
注:中的信息本附录并非详尽描述其使用和Unicode字符属性和行为的解释。它必须与Unicode字符数据库中其他文件中的数据,并依赖于符号和中提供的定义Unicode码标准所有章节参考均为版本除非另有说明,否则为标准的15.1.0。
Unicode标准远远不止是简单的字符编码。该标准还将一组丰富的语义与每个编码的语义相关联字符-属性是互操作性和正确行为所必需的实现以及Unicode一致性。这些语义在Unicode字符数据库(UCD)中编目,UCD是数据文件的集合其中包含Unicode字符代码点和字符名称。数据文件定义Unicode字符属性和之间的映射Unicode字符(例如大小写映射)。
本附录描述了UCD,并提供了各种与之关联的文档文件。其他信息关于字符属性及其使用的信息包含在Unicode标准及其附件。特别是,实现者应该熟悉自己详细说明了属性的形式定义和一致性要求在里面第3.5节,属性英寸[Unicode码]并将材料放入第4章,字符属性英寸[Unicode码]. 关于Unicode的其他讨论可以在中找到字符属性模型[德国标准23].
UCD的最新版本始终位于Unicode上网址:
https://www.unicode.org/Public/UCD/最新/
与此版本的关联的UCD的特定文件Unicode标准(15.1.0)位于:
https://www.unicode.org/Public/15.1.0/
与所有早期版本关联的UCD的稳定存档版本Unicode标准的版本可以从以下位置访问:
https://www.unicode网站.org/ucd/
有关UCD中更改的描述此版本和早期版本,请参见UCD变更历史.
Unicode字符数据库是Unicode标准的组成部分。
UCD包含以下方面所需的规范性属性和映射信息各种Unicode算法的实现,如Unicode双向算法、Unicode规范化和Unicode Casefolding。数据文件也包含附加的信息性和临时字符属性信息。
Unicode算法的每个规范,无论是在[Unicode码]或使用Unicode之一标准附件,指定UCD中需要哪些数据文件提供该算法所需的规范属性信息。
有关术语含义和应用的信息,规范性的,信息丰富的,共同出资人、和临时的,请参阅第3.5节,属性英寸[Unicode码].
有关适用的使用条款的信息UCD,请参阅Unicode使用条款.
UCD中的一些字符属性是简单属性。此状态与属性是否规范,但仅表明其价值不是从其他属性的某些组合中派生的。
导出其他字符属性。这意味着它们的值是根据规则从其他值中导出的属性的组合。一般来说,这些规则是表示为集合操作,可以包括也可以不包括单个字符的显式异常列表。
某些简单属性仅定义为使定义派生的更紧凑或更通用的属性。这些属性是称为供款财产.有时,这些辅助属性被定义为封装异常中固有的混乱列表。在其他时候,分摊财产可以定义以帮助稳定一个受稳定性约束的重要导出性质担保。
不考虑派生字符属性Unicode字符属性中的二等公民。它们的定义是使算法更容易表述。包括在一级派生属性对此类属性很重要实现包括:大写、小写、XID_Start、,XID_Continue、Math和Default_Ignorable_Code_Point,全部在DerivedCoreProperties.txt中定义,以及派生的规范化优化属性,定义在DerivedNormalizationProps.txt中。
实现应该只使用派生属性,不应该试图从简单列表中重新提取它们属性和规则集合,因为这样做时出现错误和分歧的可能性。
提供了属性派生的定义仅供参考,通常在注释字段中在数据文件中。这些定义可以重构,随着时间的推移而改进或修正。这些定义以修改后的集合表示法表示各种其他属性的固定加法和/或减法值。例如:
#派生属性:ID_Start#可以开始标识符的字符。#生成自:#Lu+Ll+Lt+Lm+Lo+Nl#+其他ID_Start#-模式_语法#-图案_白色_空格
解释派生属性的定义时在这种情况下,请记住集合减法不是可交换的操作。因此,“Lo+Lm-Pattern_Syntax”定义了不同的集合而不是“Lo-Pattern_Syntax+Lm”。属性集操作的顺序定义中所述影响派生集。
如果有任何不匹配的情况在派生属性的定义之间在DerivedCoreProperties.txt或类似数据中列出UCD中的文件,以及派生的属性作为集合定义规则数据文件中的列表应该总是被占领作为财产的规范定义。如前所述在里面释放的稳定性财产在任何给定版本的数据文件中列出对于那个版本,标准的永远不会改变。
在有限的情况下,在Unicode字符数据库中定义的Unicode字符属性可能对不属于Unicode标准的其他规范有外部依赖性,其数据不是UCD的正式组成部分。在这种情况下,UCD的版本稳定性通过以下方式实现要求依赖关系基于外部规范的已知已发布版本。
从UCD 10.0版开始,一直到12.1版,这种外部依赖的明显例子是一些与分段相关的字符属性的推导,部分基于与UTS#51,“Unicode表情符号”[UTS51标准]. 的详细信息推导过程在相应的附件中进行了描述[UAX14型]和[UAX29型],以及关联的UCD属性文件。请参见[数据14]和[道具].用于这些分段属性的UTS#51版本在UCD的每个相关版本中在这些附件和数据文件中确定。从开始然而,UCD版本13.0中,之前UCD使用的表情符号属性依赖已正式成立到UCD中,以便它们不再构成外部依赖关系。
外部依赖项可能会影响简单属性或派生属性。
Unicode字符属性具有默认值。违约值是字符属性采用的一个或多个值对于未分配的代码点,或在某些情况下,对于代码点的指定子范围,无论是指定的还是未分配。例如,二进制文件的默认值Unicode字符属性始终为“N”。
有关默认值的正式讨论,请参阅中的D26第3.5节,属性英寸[Unicode码].用于与各种数据文件中的默认值相关的约定的特定默认值的文件单个Unicode字符属性,请参见默认值.
就像Unicode标准作为一个整体一样UCD一旦发布,将绝对稳定从未更改。每个发布的版本都存档在Unicode网站,带有与那个版本。指向该版本目录的URL也稳定并将永久保持。
为UCD的发布版本发现的任何错误在中注明[勘误表],如果合适,将在后来的UCD的版本。
稳定性保证了限制Unicode字符的方式属性可以(或不能)在UCD版本之间更改记录在Unicode Consortium Stability中政策[稳定性].
可能需要更新Unicode字符数据库中的字符属性出于以下三个原因之一:
- 涵盖添加到标准中的新字符
- 将新字符特性添加到标准
- 为标准中已有的某些字符更改特性的指定值
虽然Unicode联盟努力保持所有在不同版本之间,字符属性尽可能稳定,偶尔也会出现这种情况可能会出现需要更改的情况。特别是,作为文档不太完善的脚本当标准中增加了少数民族语言或历史文字时当脚本首次编码时,字符属性和行为可能并不完全已知。这些字符的属性可能会随着进一步信息的变化而变化可用或当实现在初始属性分配中出现问题时。尽可能根据不断增长的实施经验与既定实践相兼容。
规范性或信息性属性值、状态的所有更改或属性类型,或属性或属性值别名,必须由Unicode技术委员会做出的明确决定。临时变更房地产价值受到的监管不那么严格。
有时,会更改字符属性值以防止不正确的泛化关于基于其标称属性值的字符使用。例如,U+200B ZEROWIDTH SPACE最初被归类为空格字符(General_Category=Z),但它被重新分类为格式字符(General_Category=Cf),以清楚地将其与空格字符区分开来在其作为换行格式控件的功能中。
无法保证枚举属性将实际具有与其关联的字符。此外,因为标准版本之间属性值赋值的更改曾经具有与之关联的字符的属性值以后可能没有。这样的条件和更改很少,但实现不能假设所有属性值都与非null关联字符集。例如,当前特殊的Script属性值片假名_Or_Hiragana没有与之关联的字符。
在某些情况下,整个属性可能会过时的.例如ISO_注释属性曾用于保存用于生成姓名列表的字符注释的跟踪ISO/IEC 10646代码表。从Unicode 5.2.0开始,该属性已过时,对于所有Unicode代码点,其值现在默认为空字符串。
过时的属性永远不会从UCD中删除。
有时,过时的属性也可能是正式的已弃用。这表明不再建议使用该属性使用,可能是因为它的原始意图已被另一个属性取代或者因为它的规格有缺陷。另请参见一般性讨论折旧.
从不从UCD中删除已弃用的属性。
表1列出自以下日期起正式弃用的属性此版本的Unicode标准。
表1。不推荐的属性
另一种可能性是过时的属性可能是宣布为稳定的。该决定并不表明应使用或不应使用该财产;相反,它是一个声明UTC(Unicode技术委员会)将不再积极维护该属性或将其新扩展编码字符。的属性值稳定的属性在标准的特定版本中被冻结。
稳定属性永远不会从UCD中移除。
表2列出了自以下日期起正式稳定的属性此版本的Unicode标准。
表2。稳定特性
本附件提供了UCD的核心文件,但有关字符属性的其他信息,请参阅标准的其他部分和附加文档文件包含在UCD中。
与所用字符属性相关的形式定义按照Unicode标准第3.5节,属性英寸[Unicode码].理解这些定义和相关术语是对于适当使用Unicode字符属性至关重要。
请参阅第4.1节,Unicode字符数据库,英寸[Unicode码]对于一个将军讨论UCD及其在定义属性中的使用。这个第4章的其余部分提供了关于各种规范字符属性的含义和用法。
对于以下属性模型的一般讨论与UCD相关的定义,请参见Unicode技术报告#23,“Unicode字符属性模型”[德国标准23].那份技术报告内容丰富,但多年来各种各样其内容已纳入规范部分Unicode标准的定义,特别是第3章。
UTR#23显示了重要区别在为字符串定义的属性之间(与为字符或代码点)和具有字符串值的字符属性。后者被称为字符串值属性UTR#23以及本附件中。UTR#23还讨论了字符串函数及其与字符属性。
NamesList.html正式描述了BNF中NamesList.txt数据文件的格式。该数据文件用于驱动PDF格式Unicode代码表和名称列表的。另请参见第24.1条,字符名称列表,英寸[Unicode码] 有关Unicode名称列表中使用的约定的详细讨论,请参见为联机代码图表格式化。
StandardizedVariants.html已过时自UCD 9.0版起。此文件以前记录的标准化变体,显示每个符号的代表符号。它与数据文件紧密相连,StandardizedVariants.txt,它规范地定义了这些序列。
StandardizedVariants.html显示代表性的功能标准化变体的符号已被取代。现在有更好的方法图示符号。显示了许多标准化的变化序列直接在Unicode代码表中,在包含它们的任何块的名称列表。标准化变体的符号兼容CJK的象形文字也直接以Unicode显示代码图表。
表情符号变异序列是一类特殊的变异包含表情符号字符的序列。它们分为两个子类型:一个表情符号表示序列,由后面的表情符号字符库组成通过变量选择器U+FE0F和文本表示序列,由表情符号字符库和变体选择器U+FE0E组成。这样的序列成对出现:显示的文本表示序列如Unicode代码表所示,以及带有彩色图标的表情符号演示序列,如通常出现在移动设备和其他地方的实现中。
从9.0.0版开始,以下页面使用Unicode表情符号子站点区域显示了所有表情符号变体的适当代表符号序列,具有单独的文本列表示序列和表情符号表示序列:
https://www.unicode.org/emoji/charts/emoji-variants.html
定义表情符号变体的确切列表的数据文件sequences是emoji-variation-sequences.txt。该文件保存在UCD,但表情符号变化序列记录在Unicode技术标准#51,Unicode表情符号[UTS51标准].
Unicode标准附件#38,“Unicode Han数据库(Unihan)”[UAX38系列]描述Unihan数据库的格式和内容[统汉字], 收集所有财产信息用于CJK统一表意文字。该附件还详细规定了哪些Unihan字符属性是规范的,信息性或临时性。
Unihan数据库包含广泛而详细的映射Unicode标准中编码的CJK统一表意文字信息,但它是有目的的只有那些表意文字,而不是东方使用的其他字符亚洲背景。相比之下,东亚传统字符集,包括重要的商业和国家字符集标准,包含许多非CJK字符。因此,必须从以下方面补充Unihan数据库为这些字符集建立映射表的其他源。
Unihan数据库的大部分内容是作为Unihan数据的集合,为每个版本的Unicode标准发布UCD中的文件。由于这些数据文件的大小很大,因此只能作为压缩文件Unihan.zip。Unihan.zip中特定数据文件的详细信息中提供了每个CJK属性[UAX38系列].对于版本5.2.0之前的UCD版本,所有CJK属性都是在一个很大的单一文件Unihan.txt中列出。
Unicode标准附件#45,“U源象形字”[UAX45型]描述了USourceData.txt的格式,其中列出了UTC-Source象形文字的所有信息。
除了UCD的特定文档文件外,个别数据文件通常包含大量的标题注释,描述其内容和任何数据中使用的特殊约定。
在某些情况下,个人财产定义部分还包含注释,其中包含有关属性如何使用的信息可以导出。这些评论内容丰富;当他们打算以传达推导意图,以防两者之间出现任何不匹配注释字段中的派生语句和实际派生属性的列表,则该列表被视为确定的。请参阅简单属性和派生属性.
UCD.html以前是UCD的主要文档文件。自5.2.0版起,其内容已完全纳入本文件。
Unihan.html以前是Unihan数据库。自5.1.0版起,其内容已完全纳入[UAX38系列].
Unicode标准的版本4.0.0之前的版本包含小型、集中的文档文件、UnicodeCharacterDatabase.html、PropList.html和DerivedProperties.html,后来合并为UCD.html。
自9.0.0版起,StandardizedVariants.html已被淘汰。请参阅第3.4节,标准化变量.html.
UCD的核心由数据文件本身组成。本节描述了UCD的目录结构、格式约定并为未记录的数据文件提供文档本附件其他部分。
UCD的每个版本都在单独的编号目录中发布在公共Unicode网站上的目录。内容该版本的目录已完成。它也是稳定释放的,它将以稳定的URL永久保存在该目录中,保持不变。
与此版本的关联的UCD的特定文件Unicode标准(15.1.0)位于:
https://www.unicode.org/Public/15.1.0/
最新发布的UCD版本始终可以通过以下稳定URL:
https://www.unicode.org/Public/UCD/最新/
UCD最新发布版本的压缩副本始终可以通过以下稳定URL:
https://www.unicode.org/Public/zipped/latest/
在6.3.0版之前,访问最新发布的版本UCD的是通过以下稳定的URL:
https://www.unicode.org/Public/UNIDATA/
将保留“UNIDATA”URL,但不再推荐,因为它指向ucd公司最新版本的子目录,而不是父目录发布的目录。“UNIDATA”命名约定也很古老,不遵循中其他数据版本当前使用的目录命名约定公共Unicode网站上的目录。
UCD本体位于ucd公司编号版本的子目录目录。该目录包含所有文档文件和大多数UCD的数据文件,包括派生属性的一些数据文件。
尽管所有UCD数据文件都是特定于版本的版本,并且大多数包含内部日期和版本戳,则发布的数据文件的文件名不会版本不同。链接到特定于版本的数据文件时版本将由版本目录的版本号指示。
派生提取特性的所有文件都位于提取的子目录ucd公司子目录。请参阅派生的提取属性对于有关这些数据文件及其内容的文档。
在辅助的的子目录ucd公司子目录。它包含数据文件指定与Unicode标准附件#29,“Unicode文本分割”[UAX29型]和Unicode标准附件#14,“Unicode换行算法”[UAX14型],以及这些算法的测试数据。请参阅分段测试文件和文档有关测试数据的更多信息。
与表情符号属性关联的某些数据文件被维护在中表情符号的子目录ucd公司子目录。那些数据文件定义与表情符号字符关联的简单字符属性,以及表情符号变异序列。与关联的其他数据文件表情符号,包括定义各种RGI(“建议用于通用互通式立交”)集合表情符号序列的类型以及表情符号测试数据保存在其他地方,并且不被正式视为UCD的一部分。请参见[UTS51标准]获取有关这些数据文件及其内容的文档。
UCD的XML版本位于ucdxml的子目录编号的版本目录。请参阅XML中的UCD对于更多详细信息。
4.1.3图表
特定于Unicode版本的代码表已存档作为中的单个大PDF文件图表的子目录编号的版本目录。查看该子目录中的readme.txt以及解释Unicode代码表对于更多详细信息。
在正式发布UCD版本之前,起草文件可在名为的子目录中查看草案,在/公共Unicode服务器上的目录。此中的文件目录可能包括临时文件,包括以下内容之间差异的文档草案版本。评论数量不固定-测试版评论将总是会发生,但alpha审查是可选的。
中ReadMe.txt文件中包含的通知草稿/UCD目录期间beta审查期还明确指出,该目录包含正在审查初步材料,而不是最终的稳定版本。
这个XML中的UCD在5.1.0版中引入,因此之前的UCD目录不包含ucdxml子目录。
版本13.0.0之前的UCD目录不包含表情符号子目录。
4.1.0版之前的UCD目录不包含辅助的子目录。
版本3.2.0之前的UCD目录不包含提取子目录。
UCD发布版本的文件目录的一般结构上述内容适用于4.1.0及更高版本。在4.1.0版之前,UCD的版本不是独立的、完整的数据文件集但只包含任何新数据文件或任何数据文件其中有改变自上一版本以来。
因此,给定版本的属性文件4.1.0版之前的版本可以分布在多个目录中。请咨询组件列表位于枚举的版本找出目录中包含完整数据集的文件该版本的文件。
目录命名约定和文件命名约定在4.1.0版之前有所不同。例如,UCD的4.0.0版包含在名为4.0-更新和4.0.1版名为的目录中的UCD4.0更新1此外,对于这些早期版本,数据文件名做包含显式版本数字。
UCD中的文件使用中描述的格式约定本节,除非另有规定。
- 每行数据由分号分隔的字段组成。字段已编号从零开始。
- Unicode字符数据库文件中每行的第一个字段(0)代表一个代码点或范围。其余字段(1..n)是与该代码点关联的属性。
- 字段中的前导和尾随空格不重要。但是,没有前导或尾随空格UnicodeData.txt的任何字段中都允许。出于传统原因,LineBreak.txt和EastAsianWidth.txt中的分号前后不允许有空格。
- Unihan数据文件[统汉字]在UCD中有单独的格式,使用制表符而不是用分号来分隔字段。请参见[UAX38系列]有关Unihan数据文件格式的详细规范。这个数据文件TangutSources.txt和NushuSources.tx也使用这种格式。
- 代码点表示为具有四到六位数字的十六进制数。(请参见附录A,符号惯例在里面[Unicode码]以获得本公约的完整、正式定义。)它们在中没有“U+”前缀除Unihan数据文件外的所有数据文件。Unihan数据文件使用“U+”前缀所有Unicode代码点,以区别于其他十进制和十六进制数据字段中出现的数字引用。
- 当数据字段包含一系列代码点时,用空格分隔代码点。
- 代码点的范围由“X.Y”形式指定。
- 范围中的每个代码点都具有在数据文件上指定的关联属性值。例如(来自Blocks.txt):
0000..007F;基础拉丁语0080..00FF;拉丁语-1补遗
- 为了向后兼容,文件UnicodeData.txt中的范围由的条目指定范围的开始和结束字符,而不是以“X.Y”的形式。起始字符由范围标识符表示,后跟逗号和尖括号中的字符串“First”。此条目需要将该行的常规字符名放置在字段1中。下一行显示的结束字符具有相同的范围标识符,后跟逗号和尖括号中的字符串“Last”:
4E00<中日韩表意字符,第一个>;Lo;0;五十、 ;;;;;N、 ;;;;;9FEF<中日韩象形字,最后一个>;Lo;0;五十、 ;;;;;N、 ;;;;;
对于使用此约定的字符范围,范围中所有字符的名称在算法上是可推导的。请参阅第4.8节,名称英寸[Unicode码]有关的详细信息此类范围的字符名派生。
4.2.4评论
- U+0023数字符号(“#”)用于表示注释:全部从数字符号到末尾的字符的行被视为注释的一部分,在解析数据时将被忽略。
- 在许多文件中,对数据的注释行使用通用格式,如下所示(来自Scripts.txt):
09B2;孟加拉语#Lo Bengali LETTER LA
- 使用此通用格式的注释的第一部分是General_Category值,提供信息。后面是的字符名第一个字段(0)中的代码点。
- 在以下情况下,禁止打印General_Category值对于DerivedGeneralCategory.txt,其中的值是多余的数据字段中属性值的已经是General_Category值。
- 符号“L&”表示General_Category Lu、Ll或Lt(大写、小写、,或标题字母)。例如:
0386;希腊语#L和Greek大写字母ALPHA WITH TONOS
这些注释中使用的L是的别名(&A)General_Category属性的派生LC值(大小写字母),如中所述属性值别名.txt。
- 当数据行包含一系列代码点时for注释还指示一系列字符名,以“..”分隔,如下所示如图所示(摘自DerivedNumericType.txt):
公元前00年。。00BE;数字#No[3]VULGAR分数四分之一。。VULGAR分数四分之三
- 通常,具有相同属性值的连续字符由单个代码点范围表示。在使用此注释约定,这样的范围被细分,以便范围中的字符具有相同的General_Category值(或LC)。虽然此约定导致的范围超出了严格必要的范围使范围的内容更清晰。
- 当出现代码点范围时,范围中的项目数为包括在注释(方括号中)中,紧跟在General_Category值之后。
- 注释仅供参考,可能会更改格式或在未来。不应对其进行内容分析。但是,请参见第4.2.10节@缺少约定.
- 代理代码点、专用字符、控制代码、非字符、,和未分配的代码点没有名称。当这样的代码点列在数据文件中,例如列出其General_Category值,注释使用代码点标签而不是字符名称。例如(来自DerivedCoreProperties.txt):
2065 ; 默认可忽略代码点#Cn
- 虽然代码点标签不是正式的字符名和不是字符的Name属性的值,它们是设计为在Unicode的命名空间中保持唯一值字符名称。因此,实现可以安全地将它们用作标识符用于不与实际字符名重叠的代码点。
- 代码点标签使用中记录的其中一个标签第4.8节,名称英寸[Unicode码]和,如所示表3, 后跟“-”,代码点用十六进制表示。这个当列在UCD的数据文件中。
表3。代码点标签标签
标签 |
常规_类别 |
注释 |
保留 |
抄送 |
非字符代码点=F |
非字符 |
抄送 |
非字符代码点=T |
控制 |
复写的副本 |
|
私人用途 |
有限公司 |
|
代理 |
铯 |
|
- 当文件包含多个属性的规范时,第二个字段指定名称属性,第三个字段指定属性值。例如(来自DerivedNormalizationProps.txt):
03D2;FC_NFKC;03C5#带挂钩符号的L和GREEK UPSILON03D3;FC_NFKC;03CD#L&GREEK UPSILON,带有急性和挂钩符号
- 对于二进制属性,第二个字段指定适用属性的名称属性的隐含值为“True”。只有二进制字符的范围将列出“Y”(=True)的属性值。例如(来自PropList.txt):
1680 ; 白色_空格#Zs OGHAM空格标记2000..200A;White_Space#Zs[11]EN四边形。。头发空间
- 当数据文件定义一个属性时,该属性可能对单个代码采用多个值点,多个值以空格分隔的列表表示。例如(来自ScriptExtensions.txt):
0640 ; Adlm Arab Mand Mani Phlp Rohg Sogd Syrc#Lm ARABIC TATWEEL公司
- 在某些情况下——但不是所有情况下——以空格分隔的多个元素的顺序列表可能很重要。当多个元素的顺序很重要时,将记录下来以及财产本身。例如(来自Unihan_Readings.txt),对于标记kMandarin,当代码点有两个值时,第一个值用于表示zh-Hans(CN)的首选发音,第二个azh-Hant(TW)的首选发音。
- 有关进一步讨论,请参见第5.7.6节值为值集的属性.
- 如果代码点具有相关属性的默认值。
- 对于大多数字符串值属性,包括折叠和映射的定义默认值是字符本身的代码点。
- 对于某些字符串值属性,这些属性定义了主要应用于一组定义好的小代码点,默认值为<none>,这被解释为未定义任何值。(此与包含空字符串。请参阅第4.2.11节空字段当前示例包括Bidi_支架以及一些Unihan相关的属性。
- 对于以字符串为值的其他属性,例如“Unicode名称”属性,默认值为空字符串。
- 对于二进制属性,除了扩展_图片, 默认值始终为“N”(=False)并且总是被省略。
- 对于枚举属性和目录属性,默认值列在注释中。对于示例(来自Scripts.txt):
#脚本未显式列出的所有代码点#值为Unknown(Zzzz)。
- 枚举类型的一些属性具有多个默认值。在在这些情况下,文件中的注释解释了适用值的代码点范围。另请参见表4.
- 默认值也列在特殊格式的注释行中,使用关键字“@missing”。提取和处理的分析器这些行可以通过算法确定所有代码点的默认值。请参阅@缺少约定有关这些行的语法和用法的详细信息。
- 由于UnicodeData.txt的传统格式约束文件不包含有关属性默认值的特定信息。记录UnicodeData.txt中字段的默认值在里面表4在下面如果它们不能从默认值的一般规则中派生属性。
- 文件ArabicShaping.txt也是例外,因为它省略了列表许多字符的属性值(jt=T)可以由规则导出。添加“@missing”行到该文件将导致对省略字符的Joining_Type值的错误解释。Joining_Type值的完整显式列表和正确的“@missing”行默认的Joining_Type值(jt=U)可以在文件DerivedJoiningType.txt中找到。
通用目录、枚举和数字属性列在表4,沿具有异常的二进制属性Extended_Pictographic。下表提供了进一步的解释,见默认值为如第三列所示,它们是复杂的。
表4。属性的默认值
属性名称 |
默认值 |
复杂? |
年龄 |
未分配(=NA) |
不 |
Bidi_类 |
L、 AL、R、BN等 |
是 |
阻止 |
无块(_B) |
不 |
标准组合类 |
未重新排序(=0) |
不 |
分解_类型 |
无 |
不 |
东部_亚洲_宽度 |
中性(=N),宽(=W) |
是 |
扩展_图片 |
N(=假),Y(=真) |
是 |
常规_类别 |
抄送 |
不 |
线路中断(_B) |
未知(=XX),ID,PR |
是 |
数字类型 |
无 |
不 |
数值 |
NaN公司 |
不 |
脚本 |
未知(=Zzzz) |
不 |
垂直_方向 |
旋转(=R),垂直(=U) |
是 |
复杂默认值是指具有多个值的,视情况而定代码点范围或其他条件。复杂默认值,而不是“@missing”行明确列在相关属性文件中,实例除外在本节中说明。这意味着解析器从UCD不应遇到属性的默认值不明确的情况对于特定的代码点尚不清楚。
- Bidi_类:
请参见Unicode标准附件#9,“Unicode双向算法”[UAX9系列]和DerivedBidiClass.txt以获取详细信息。
- 东部_亚洲_宽度:
对于大多数代码点,此属性默认为Neutral,但默认为Wide用于与CJK象形文字关联的块中的未分配代码点。参见Unicode标准附件#11,“东亚宽度”[UAX11型]和EastAsianWidth.txt,用于记录默认值和DerivedEastAsianWidth.txt以获取完整的值列表。
- 线路中断(_B):
对于大多数代码点,此属性默认为Unknown,但默认为ID用于与CJK象形文字相关的块中的未分配代码点,以及单位为块,范围为U+1F000..U+1FAFF和U+1FC00…U+1FFD。未分配代码的属性默认为PR货币符号块中的点。参见Unicode标准附件#14,“Unicode换行算法”[UAX14型]和LineBreak.txt,用于记录默认值和DerivedLineBreak.txt以获取完整的值列表。
- 扩展_图片:
对于大多数代码点,此属性默认为N(=False),但默认为Y(=True)表示范围为U+1F0000.U+1AFF和U+1FC000.U+1FFD的块中未分配的代码点。这些范围与Line_Break的默认值关联的范围相关属性,并具有相同的原理。它们有助于Unicode分段行为的未来验证代码点范围的算法最有可能用于未来分配新表情符号字符。
- 垂直_方向:
对于大多数代码点,此属性默认为Rotated(R),但默认为垂直(U)用于与脚本相关的块中未分配的代码点,这些脚本本身主要是直立,以块为单位一些符号系统,主要与象形文字有关符号和表情符号。参见Unicode标准附录#50,“Unicode垂直文本布局”[UAX50型]和VerticalOrientation.txt以获取完整的详细信息。
带有关键字“@missing”的特殊格式注释行是用于定义未明确列出的代码点范围的默认属性值在数据文件中。这些行遵循常规惯例机器可读。
@missing行以注释字符“#”开头,后跟一个空格,然后是“@missing”关键字,后面是冒号、另一个空格、代码点范围和分号。然后行通常以分号分隔的一个或多个列表继续默认属性值。例如:
#@missing:0000..10FFFF;未知
通常,代码点范围和分号分隔的列表如下与数据文件中出现@missing行的语法约定相同,因此任何解释该数据文件的解析器都可以很容易地适应解析并解释@missing行以获取代码点的默认属性值。
@文件中的许多属性也提供了缺少的行属性值别名.txt。在这种情况下,因为其中有许多@缺失行单个数据文件,该文件中的每个@缺失行使用语法模式codepointrange;属性名称;默认rop_val。
从不为二进制属性提供@缺失行,因为二进制属性的默认值总是“N”,不需要冗余定义对于每个二进制属性。
因为在PropertyValueAliases.txt中包含@missing行时添加属性名称,目前有两种语法模式用于@missing行,如概括如下:
- 代码点范围;默认提升值
- 代码点范围;属性名称;默认提升值
在这个示意图中,“default_prop_val”代表显式属性值或特殊标记(例如<none>或<脚本>。
模式#1用于大多数主UCD文件和派生UCD文件。例如:
#@missing:0000..10FFFF<无>
模式#2用于PropertyValueAliases.txt和DerivedNormalizationProps.txt,两者都包含与许多属性。例如:
#@missing:0000..10FFFF;NFD_QC;是
default_prop_val字段中可能出现的特殊标记值在@missing行中的解释如下:
标签 |
解释 |
<无> |
未定义值 |
<代码点> |
码位值的字符串表示 |
<脚本> |
该值等于此代码点的Script属性值 |
从版本15.0开始,UCD中的一些数据文件可能包含为相同的属性。什么时候?多个@missing行是这样定义的,它们被解释为如下所示:每个连续的@missing行指定一个重写范围之前所有@missing定义的值。此约定允许通用首先为整个Unicode码位范围指定默认值,然后是其他特定的默认值,用于更受约束的特定子范围。这使得处理方式易于理解和维护复杂的默认值,如Bidi_Class或Line_Break属性。(请参见复杂默认值.)以下是East_Asian_Width的简单示例,提取自DerivedEastAsianWidth.txt说明了这种机制:
#@missing:0000..10FFFF;中性#@失踪:3400..4DBF;宽#@missing:4E00..9FFF;宽#@失踪:F900..FAFF;宽#@missing:20000..2FFD;宽#@缺失:30000..3FFFD;宽
多个@missing行的解析实现单个属性很简单。每次遇到@missing行时,只需将给定的默认值指定给指定的范围。用这个策略,每个连续的@missing行将自动覆盖任何给定子范围的先前赋值。
数据文件UnicodeData.txt在每条记录中定义了许多属性值。当代码点的数据行中的字段为空,表示属性采用该代码点的默认值。例如:
0022;报价标记;Po;0;安宁;;;;;N、 ;;;;;
在该数据行中,空数值字段表示U+0022为NaN,Numeric_Type的值为None。空箱映射字段表示U+0022的Simple_Uppercase_Mapping值采用默认值,即代码点本身等等。
UCD其他数据文件中的空白字段的解释不同。在定义字符串值属性的数据文件的情况,代码点条目的省略指示属性采用该代码点的默认值。然而,如果有是代码点的条目,但该条目的属性值字段为空指示属性值是显式空字符串(“”)。例如,派生的财产NFKC_折叠可以将代码点映射到代码点序列,映射到单个不同的代码指向同一个代码点,或者根本没有代码点(一个空字符串)。请参阅以下条目数据文件DerivedNormalizationProps.txt:
00AA;NFKC_CF;0061#Lo女性体型指标公元00年;NFKC_CF;#Cf软HYPHEN00AF;NFKC_CF;0020 0304#Sk MACRON公司
U+00AD的空字段表示属性NFKC_Casefold映射SOFT HYPHEN空字符串。相比之下,数据文件中没有U+00AE条目表明属性NFKC_Casefold将U+00AE REGISTERED SIGN映射为其自身的默认值。
- 数据文件使用UTF-8。除非另有说明,否则仅限非ASCII字符出现在评论中。
- Unihan数据文件[统汉字]在UCD中,在数据字段中广泛使用UTF-8。(参见[UAX38系列]详细信息。)
- 由于传统原因,NamesList.txt是一个例外;它被编码了Unicode 6.2之前的拉丁语-1。对于Unicode 6.2及更高版本,编码为UTF-8。请参阅名称列表.html.
- 分段测试数据文件,如WordBreakTest.txt,make使用非ASCII(UTF-8)字符作为数据字段的分隔符。
- UCD中的所有数据文件都使用LF行终止(而不是CRLF行结束)。当复制到不同的系统时,这些行尾可能会自动更改为对该系统使用本机线路终止约定。确保您的编辑器(或解析器)可以处理线路终端样式。
- 在一些测试数据文件中,测试数据的分段通过一行来区分以“@”符号开头。例如(来自NormalizationTest.txt):
@第1部分#逐个字符测试
- Unihan数据文件的数据格式和TangutSources.txt和NushuSources.txtUCD中的不同于标准格式。请参阅的讨论Unihan和UAX#38更多信息,请参阅本附件前面的内容。
- NamesList.txt的格式,用于记录Unicode名称列表,它以编程方式用于驱动格式化用于Unicode代码图的程序也与常规UCD数据文件有很大不同。请参阅名称列表.html
- Index.txt是另一个例外。它使用制表符分隔格式,字段为0由索引项字符串和字段1组成,字段1是代码点。Index.txt用于维护Unicode字符名称索引.
- 各种分段测试数据文件使用“#”分隔注释,但它们的数据字段有不同的约定。请参阅文档在其标题部分中,了解那些文件。
- UCD的XML版本有自己的文件格式约定。在这些文件中,“#”用于表示算法上可派生的字符名,如CJK UNIFIED IDEOGRAPH-4E00或TANGUT IDEOGRAPH-1700,以便在更紧凑的数据表示中允许名称共享。参见Unicode标准附件#42,“XML中的Unicode字符数据库”[UAX42型]了解详细信息。
与UCD的任何特定版本相关的文件的确切列表为可在Unicode网站上查阅组件列表,网址为枚举的版本.
UCD中的大多数数据文件提供了以下规范Unicode字符的字符属性。这些文件及其内容详细记录在属性定义部分如下所示。
中的数据文件提取子目录构成重新格式化的列表从UnicodeData.txt或其他主文件中提取的单字符属性数据文件。提供重新格式化是为了更容易查看特定集合具有枚举属性特定值的字符,或分隔从一起定义的其他属性中获取该属性的语句在UnicodeData.txt中。这些文件还包括显式各个属性的默认值列表。这些提取的派生数据文件进一步记录在这个派生的提取属性第节。
UCD还包含许多测试数据文件,其目的是提供用于验证复杂Unicode实现的标准测试用例算法。请参阅测试文件下面的部分了解更多信息文档。
Unicode字符数据库中的其余文件不直接指定Unicode属性。其中列出了重要的功能表5.状态列指示是否考虑文件(及其内容)N个规范,我信息,或P(P)临时的。
表5。未指定字符属性的UCD文件
文件名 |
参考 |
状态 |
描述 |
CJK字典.txt |
[UAX38系列] |
我 |
对应的统一中日韩表意字符和中日韩字根列表CJK根式笔画计数中使用的特定根式数。 |
U源数据.txt |
[UAX45型] |
N个 |
UTC-Source象形文字的正式参考列表,以及有关他们的地位和来源。 |
USourceGlyphs.pdf |
[UAX45型] |
我 |
包含每个UTC-Source象形文字的代表符号的表格。 |
USourceRS图表.pdf |
[UAX45型] |
我 |
UTC-Source所有表意文字的激进中风指数。 |
TangutSources.txt文件 |
第18章 |
N个 |
指定的标准源映射探戈表意文字和组成部分。此数据该文件还包括用于编制Tangut区块的代码图。
kTGT_合并Src:到各种Tangut源引用的标准源映射
kRST尼科德:提供信息的根行程值 |
NushuSources.txt文件 |
第18章 |
N个 |
指定Nushu象形文字的标准源映射。此数据该文件还包括Nushu字符的信息读物。
kSrc_NushuDuben公司:Nushu Duben的标准源映射
k读数:信息示例语音阅读 |
表情资源.txt |
第22章 |
N个 |
为原始实现中的表情符号指定到SJIS值的源映射日本电信公司的这些符号。 |
索引.txt |
第24章 |
我 |
索引到Unicode字符。 |
姓名列表.txt |
第24章 |
我 |
用于生成代码图的名称列表,派生自UnicodeData.txt。它包含其他注释。 |
名称列表.html |
第24章 |
我 |
记录NamesList.txt的格式。 |
标准化变量.txt |
第23章 |
N个 |
列出所有已定义的标准化变量序列,以及他们想要的外观。 |
标准化变量.html |
第23章 |
N个 |
过时的派生文档文件。 |
名称序列.txt |
[UAX34型] |
N个 |
列出所有已批准的命名序列的名称。这是字符串的字符串值属性。 |
命名序列Prov.txt |
[UAX34型] |
P(P) |
列出所有临时命名序列的名称。这是字符串的(临时)字符串值属性。 |
emoji-variation-sequences.txt格式 |
[UTS51标准] |
N个 |
列出包含当前编码表情符号字符的所有表情符号表示序列和文本表示序列。 |
有关这些文件及其使用的更多信息,请参阅参考附件或Unicode标准的章节,或者,如果是表情符号序列数据[UTS51标准].
从4.1.0版开始,所有UCD文件的压缩版本,数据文件和文档文件都可以在公共/拉链Unicode网站上的目录。每个压缩文件集合都位于在对应于该版本UCD的编号子目录中。
每个版本都提供了两个不同的压缩文件:
- Unihan.zip拉链是非常大的Unihan数据的压缩版本文件夹
- UCD.zip文件拉链的吗所有其他UCD数据文件的版本,不包括Unihan数据文件。
这种分叉允许更好地管理特定版本的下载信息,因为Unihan.zip包含所有相关的CJK相关属性信息,而UCD.zip包含UCD的所有其余部分属性信息,适用于那些可能不需要大量CJK数据的人。
从6.1.0版开始,UCD的主版本目录也包含一个副本UCD.zip,方便访问。
在版本4.1.0之前的UCD版本中Unihan数据文件(这些版本的数据文件是作为单个大文本文件Unihan.txt发布的)与UCD数据文件位于同一目录中。这些压缩文件仅发布用于更新Unihan.txt的UCD版本。
从5.1.0版开始,一组XML数据文件也随UCD的每个版本一起发布。那些数据文件使导入和处理UCD属性数据成为可能,使用标准XML解析工具,而不是UCD的各种单独数据文件。
Unicode标准附件#42,“XML格式的Unicode字符数据库”[UAX42型] 定义XML架构用于合并所有Unicode字符属性信息到UCD的XML版本中。有关关于属性值分组的模式和约定更紧凑的表示。
UCD的XML版本包含在ucdxml子目录UCD的。这些文件都是压缩的。文件列表如所示表6.
表6。XML文件列表
文件名 |
中日韩 |
非CJK |
ucd.all.扁平.zip |
x个 |
x个 |
ucd.all.分组.zip |
x个 |
x个 |
ucd.nounihan.扁平.zip |
|
x个 |
ucd.nounihan.grouped.zip网址 |
|
x个 |
ucd.unihan.扁平.zip |
x个 |
|
ucd.unihan.分组.zip |
x个 |
|
“平面”文件版本只列出所有属性,没有特殊压缩。“分组”文件版本应用中描述的分组机制[UAX42型]以减小数据文件的大小。
本节记录Unicode字符属性,并将其关联起来详细到指定它们的特定UCD数据文件。特别是对于枚举属性,本节还记录了这些属性可以具有的实际值。
表7提供了Unicode字符属性的摘要列表,不包括大多数特定于Unihan的数据文件[统汉字]. 对于可比较的CJK字符属性索引,见Unicode标准附录38,“Unicode Han数据库(Unihan)”[UAX38系列].
这些属性大致分为几个组根据他们的使用情况。此分组主要是为了方便文档和除了供款财产,没有规范含义。贡献属性包括此索引中显示了一个灰色背景,以便更好地从视觉上区分它们普通(简单或衍生)属性。不推荐的属性和其他属性不建议公开支持API属性也显示了带有灰色背景.每个属性上的链接都指向中的描述表9,属性表.任何标记为已弃用在这个索引中是也自动考虑过时的.
表7。按使用范围划分的财产索引
表9,属性表指定字符属性列表在UCD中定义。该表为每个数据分为单独的部分UCD中的文件。列出了定义单个特性或少量特性的数据文件首先,后面是定义大量属性:派生核心属性.txt,派生NormalizationProps.txt,属性列表.txt,UnicodeData.txt文件、和表情符号数据.txt.在某些情况下,对于定义了许多属性的这些文件属性表中的条目按类型分组,以便于表达,而不是按字母顺序排列。
在表9,属性表每个属性描述如下:
第一列。此列包含每个字符属性的名称在相应的数据文件中指定。财产的任何特殊状态,例如不管是不是过时的,已弃用,或稳定的,也显示在第一列。
第二列。本专栏根据键入表8.
表8。属性类型键
属性类型 |
符号 |
示例 |
目录 |
C类 |
年龄,街区 |
枚举 |
E类 |
连接_类型,线条_断裂 |
二元的 |
B类 |
大写,White_Space |
字符串值 |
S公司 |
大写_映射,案例_折叠 |
数字 |
N个 |
数值 |
其他 |
M(M) |
姓名,Jamo_Short_Name |
- 目录属性具有预期的枚举值在Unicode标准的后续版本中定期扩展。这使他们与众不同来自枚举属性。
- 枚举属性具有枚举值它们构成一个逻辑分区空间;新值通常会不在标准的后续版本中添加。
- 二元的属性是枚举属性的一种特殊情况正好有两个值:Yes和No(或True和False)。
- 字符串值属性通常是从一个Unicode代码点到另一个Unicode代码点的映射或Unicode码位序列;示例包括案例映射和分解映射。
- 字符串的属性是为字符串定义的属性;在其他单词,它们的域是一组字符串,而不是一组字符或代码点。字符串的属性有时简称为“字符串属性”。对于例如,文件NamedSequences.txt定义名称(它们本身是字符串值)。字符串的属性未在中明确列出UCD属性表,因此不提供中的特定类型符号属性类型键.
- 数字属性指定实际数值用于以某种方式与数字关联的数字和其他字符。
- 其他属性是那些与其他属性不完全匹配的属性属性类别;目前包括字符名称、字符注释、,这个脚本_扩展属性,和单码_基本_笔划财产(数值的组合)记录在Unicode标准附录38“Unicode Han数据库(Unihan)”中[UAX38系列].
要更完整地讨论字符属性的类型,包括正式定义,请参阅Unicode技术报告23“Unicode字符属性模型“[德国标准23].
第三栏。此列指示物业状态:N个格式的或我信息或C类供词或P(P)临时的。
第四栏。此列提供以下内容的说明属性。这包括有关派生的信息衍生特性以及对标准中位置的引用详细定义或讨论属性的位置。
在表的部分中UnicodeData.txt文件, 在描述的开头。
对于属性表中的几个条目数据文件只对Unicode字符属性的完整定义起作用。例如,中字段1(名称)中的值UnicodeData.txt未提供名称的所有值所有代码点的属性;Jamo.txt格式也必须使用,以及CJK统一表意字符、Tangut表意字符的Name属性,契丹小字表意文字,女书的表意文字是由规则派生出来的。
任何Unicode字符属性都不应仅用于属性表中描述的基础,而不咨询相关Unicode标准中的讨论。因为Unicode标准曲目中的字符,字符属性在应用中往往不是不言而喻的,即使在从使用规模小得多的遗产来看,属性似乎很熟悉字符编码。
本节包含描述每个字符属性并定义其状态的表,按UCD中的数据文件组织。表9提供了Unicode字符属性及其派生的一般描述,和/或其用法,以及指向标准中正式属性定义或附加可以找到有关属性的信息。属性状态列和派生的任何正式语句导出的属性是确定的;然而,表9没有提供其他属性的正式定义不应被解释为这样。有关表的列和总体组织的详细信息,请参阅第5.2节关于属性表.
表9。属性表
阿拉伯形状.txt |
连接_类型
加入_组 |
E类 |
N个 |
基本的阿拉伯语和叙利亚语字符塑造属性,如首字母、中间字母和尾字母形状。请参阅第9.2节,阿拉伯语英寸[Unicode码]. |
Bidi括号.txt |
投标_带括号_类型 |
E类 |
N个 |
成对括号的类型,可以是左括号,也可以是右括号。此属性用于实现括号匹配。参见Unicode标准附录9“Unicode双向算法”[UAX9系列]. |
Bidi_支架 |
S公司 |
N个 |
对于左括号,是匹配的右括号的代码点。对于右括号匹配的左括号的代码点。此属性用于实现括号匹配。参见Unicode标准附录9“Unicode双向算法”[UAX9系列]. |
毕迪镜像.txt |
Bidi_镜像_Glyph |
S公司 |
我 |
用于在双向镜像实现中替换字符的信息映射。这会将具有Bidi_Mirrored属性的字符子集映射到其他通常与相应的镜像标志符一起显示的字符。当具有Bidi_Mirrored属性的字符具有Bidi_Mirroring_Glyph的默认值,这意味着没有其他字符存在其标志符适合基于字符的标志符镜像的标志符。然后,实现必须使用其他机制来实现这些机制的镜像字符表示Unicode双向算法。参见Unicode标准附录9“Unicode双向算法”[UAX9系列]. 不要将此属性与Bidi_镜像属性本身。 |
方块.txt |
阻止 |
C类 |
N个 |
Blocks.txt指定Block属性,该属性包括块名称列表的用于代码点的范围。请参阅D10b英寸第3.4节,字符和编码,第页,共页[Unicode码]. 另请参见中的代码图表[Unicode码]. |
合成排除.txt |
成分_排除 |
B类 |
N个 |
规范化中使用的属性。参见Unicode标准附录#15,“Unicode规范化表单”[UAX15型]. 与其他文件不同,CompositionExclusions.txt只是列出了相关的代码点。 |
案例折叠.txt |
简单机箱折叠
箱子_折叠 |
S公司 |
N个 |
从字符映射到其案例折叠形式。这是一个信息文件,包含标准衍生属性。 源自UnicodeData和SpecialCasing。
注:如果案例文件夹是与代码点本身相同。 |
派生代理.txt |
年龄 |
C类 |
N个 |
定义在后续版本中指定/分配各种代码点的时间的属性Unicode标准。有关Age属性的详细讨论,请参见第5.14节,角色年龄. |
东亚宽度.txt |
东部_亚洲_宽度 |
E类 |
N个 |
A财产用于确定东亚环境中宽字形与窄字形的选择。属性值在Unicode标准附录#11“东亚宽度”中进行了描述[UAX11型]. 注:East_Asian_Width属性的一些值用于推导线路中断(_B)属性值,因此与换行行为相关。请参阅Unicode标准附件#14,“Unicode换行算法”[UAX14型]. |
等效统一象形字.txt |
等价统一象形字 |
S公司 |
我 |
将大多数CJK部首和CJK笔划映射为最合理等效的属性中日韩统一表意文字。 |
韩国语音节类型.txt |
汉古尔_音节_类型 |
E类 |
N个 |
中使用的L、V、T、LV和LVT值第3章,合规性英寸[Unicode码]. |
索引位置类别.txt |
指数_位置_类别 |
E类 |
我 |
非正式定义职位类别用于从属元音、viramas、组合标记和印度文字中使用的其他字符。标题部分提供了属性值的一般说明数据文件IndicPositionalCategory.txt的。 |
索引音节分类.txt |
索引_音节_类别 |
E类 |
我 |
非正式定义结构类别的属性印度文字中的音节成分。标题部分提供了属性值的一般说明数据文件IndicSyllabicCategory.txt的。 |
Jamo.txt格式 |
Jamo_Short_姓名 |
M(M) |
C类 |
朝鲜文音节名称源自Jamo Short名称,如中所述第3章,合规性英寸[Unicode码]. |
换行.txt |
线路中断(_B) |
E类 |
N个 |
A财产用于换行。有关更多信息,请参阅Unicode标准附录#14,“Unicode换行算法“[UAX14型]. |
图形BreakProperty.txt |
Grapheme_Cluster_Break(图形_簇_断开) |
E类 |
我 |
参见Unicode标准附录#29,“Unicode文本分段”[UAX29型] |
句子中断属性.txt |
句子_中断 |
E类 |
我 |
参见Unicode标准附录#29,“Unicode文本分段”[UAX29型] |
分词属性.txt |
断字(_B) |
E类 |
我 |
参见Unicode标准附录#29,“Unicode文本分段”[UAX29型] |
名称别名.txt |
姓名_别名 |
M(M) |
N个 |
错误字符的规范形式别名名称,用于控制字符和一些格式字符,以及字符缩写,如中所述第4章,字符属性英寸[Unicode码]. 标有“correction”类型的别名以及其他类型的别名的选择在Unicode标准代码表中发布。 |
规范化更正.txt |
用于分解映射 |
S公司 |
N个 |
NormalizationCorrections列出的代码点差异
标准化勘误表.有关更多信息,请参阅Unicode标准附录#15,“Unicode规范化表单”[UAX15型]. |
脚本.txt |
脚本 |
C类 |
我 |
用于正则表达式和其他地方的脚本值。有关更多信息,请参阅Unicode标准附件#24,“Unicode脚本属性”[UAX24型]. |
脚本扩展.txt |
脚本_扩展 |
M(M) |
我 |
用于正则表达式和其他地方的脚本值的枚举集。有关更多信息,请参阅Unicode标准附件#24,“Unicode脚本属性”[UAX24型]. |
特殊外壳.txt |
大写_映射
小写_映射
标题栏_映射
|
S公司 |
我 |
生产数据(结合简单的案例映射从UnicodeData.txt文件)完整的案例映射。 |
统汉字数据文件[统汉字](更多信息信息,请参见[UAX38系列]) |
数字类型
数值 |
E类 |
我 |
用kPrimaryNumeric标记的字符,kAccountingNumeric或kOtherNumeric被赋予属性值数字类型=数字,以及指示的数值在这些标签中。 大多数字符都具有基于UnicodeData.txt中的值的这些数字属性。请参阅数字类型. |
单码_基本_笔划 |
M(M) |
我 |
基于标签的Unicode根冲程计数kRSUnicode。 |
垂直方向.txt |
垂直_方向 |
E类 |
我 |
用于为字符的正确方向建立默认值的属性如Unicode标准附录#50所述,用于垂直文本布局时,“Unicode垂直文本布局”[UAX50型]. |
派生核心属性.txt |
小写字母 |
B类 |
我 |
具有小写属性的字符。有关更多信息,请参阅第4章,字符属性英寸[Unicode码]. 生成自:Ll+其他_小机箱 |
大写 |
B类 |
我 |
具有大写属性的字符。有关更多信息,请参阅第4章,字符属性英寸[Unicode码]. 生成自:Lu+其他机箱(_U) |
套管 |
B类 |
我 |
被认为是大写或小写的字符或标题大小写字符。此属性与Changes_When_Casemapped属性。有关更多信息,请参阅中的D135第3.13节,违约情况算法英寸[Unicode码]. 生成自:小写字母+大写+左侧 |
案例_可忽略 |
B类 |
我 |
出于大小写目的而忽略的字符。更多信息信息,请参见中的D136第3.13节,违约情况算法英寸[Unicode码]. 生成自:Mn+Me+Cf+Lm+Sk+断字(_B)=中间字母+断字(_B)=MidNumLet+断字(_B)=单引号 |
更改_何时_小写 |
B类 |
我 |
规范化形式在toLowercase下不稳定的字符映射。有关更多信息,请参阅中的D139第3.13节,违约情况算法英寸[Unicode码]. 生成自:toLowercase(toNFD(X))!=到NFD(X) |
更改_When_Uppercased |
B类 |
我 |
规范化形式在toUppercase下不稳定的字符映射。有关更多信息,请参阅中的D140第3.13节,违约情况算法英寸[Unicode码]. 生成自:toUppercase(toNFD(X))!=到NFD(X) |
更改_何时更改_标题 |
B类 |
我 |
规范化形式在toTitlecase下不稳定的字符映射。有关更多信息,请参阅中的D141第3.13节,违约情况算法英寸[Unicode码]. 生成自:toTitlecase(toNFD(X))!=到NFD(X) |
折叠时的更改 |
B类 |
我 |
规格化形式在case下不稳定的字符折叠。有关更多信息,请参阅中的D142第3.13节,违约情况算法英寸[Unicode码]. 生成自:toCasefold(toNFD(X))!=到NFD(X) |
更改_何时映射案例 |
B类 |
我 |
进行大小写映射时可能会更改的字符。有关更多信息,请参阅中的D143第3.13节,违约情况算法英寸[Unicode码]. 生成自:Changes_When_Lowercased(X)或Changes_Fen_Uppercased(X)或更改_何时更改_标题(X) |
按字母顺序排列 |
B类 |
我 |
具有字母顺序属性的字符。有关更多信息,请参阅第4章,字符属性英寸[Unicode码]. 生成自:小写字母+大写+轻微+轻微+低+无+其他_字母 |
默认可忽略代码点 |
B类 |
N个 |
用于通过编程确定默认可忽略的代码点。新建将分配呈现时应忽略的字符(除非明确支持)在这些范围内,允许程序正确处理不支持的字符。有关更多信息,请参阅常见问题解答显示不支持的字符, 和第5.21节,处理时忽略字符英寸[Unicode码]. 生成自:
其他默认忽略代码点 +Cf(格式字符) +变量选择器 -白色_空格 -FFF9..FFFB(行间注释格式字符) -13430..1343F(埃及象形文字格式字符) -Prepended_Concatenation_Mark(应可见的异常格式字符) |
图形_基础 |
B类 |
N个 |
属性与标准韩语音节的定义一起使用块定义“图形库”。参见中的D58第3章,合规性英寸[Unicode码]. 生成自:[0..10FFFF]-Cc-Cf-Cs-Co-Cn-Zl-Zp-图形_扩展
注:Grapheme_Base是单个字符的属性。这种用法对比带有“grapheme-base”,这是Unicode字符串的属性;字素基可以包括韩国语音节本身由一系列连词jamos表示。 |
图形_扩展 |
B类 |
N个 |
使用的属性定义“图形扩展器”。参见中的D59第3章,合规性英寸[Unicode码]. 生成自:Me+Mn+其他_图形_扩展
注:Grapheme_Extend=Yes的字符集在中使用属性值Grapheme_Cluster_Break=Extend的派生。Grapheme_Cluster_Break=扩展由Grapheme_Extend=是的字符集或Emoji_Modifier=是。请参见[UAX29型]和[UTS51标准]. |
图形_链接(已弃用截至5.0.0) |
B类 |
我 |
以前提出用于程序化确定字素簇边界。 生成自:Canonical_Combining_Class=Virama |
指数_连接_断裂 |
E类 |
我 |
此属性定义在Grapheme Cluster Break算法中使用的值英寸[UAX29型]. 生成如下:
- 定义一组适用的脚本。对于Unicode 15.1,集合定义为
S=[\p{sc=Beng}\p{sc=Deva}\p}sc=Gujr}\p<sc=Mlym}\p>sc=Orya}\p[sc=Telu}]
- 那么对于任何字符C:
- InCB=[S&\p{Indic_Syllabic_Category=Virama}]中的链接器iff C
- InCB=[S&\p{Indic_Syllabic_Category=辅音}]中的辅音iff C
- InCB=扩展iff C
[[\p{gcb=扩展}-\p{ccc=0}] \p{gcb=ZWJ} -\p{Indic_Syllabic_Category=Virama} -\p{Indic_Syllabic_Category=辅音}]
- 否则,InCB=无(默认值)
|
数学 |
B类 |
我 |
具有Math属性的字符。有关更多信息,请参阅第4章,字符属性英寸[Unicode码]. 生成自:Sm+其他路径(_M) |
ID_启动 |
B类 |
我 |
用于确定编程标识符,如所述在Unicode标准附件#31“Unicode标识符和模式语法”中[UAX31型]. |
ID_继续 |
B类 |
我 |
XID_开始 |
B类 |
我 |
XID_继续 |
B类 |
我 |
派生NormalizationProps.txt |
完全复合排除 |
B类 |
N个 |
排除在合成之外的字符:中明确列出的字符CompositionExclusions.txt,加上单点分解和非起始分解,如该数据文件中所述。 |
展开(_NFC)
展开_On_NFD
展开_打开_NFKC
展开(_NFKD) (已弃用截至6.0.0) |
B类 |
N个 |
在指定的规范化形式。 |
FC_NFKC_关闭 (已弃用截至6.0.0) |
S公司 |
N个 |
需要额外映射才能在Case Folding plus下关闭的字符规范化表KC。 映射列在字段2中。
|
NFD_Quick_检查
NFKD_快速检查
NFC_Quick_检查
NFKC_快速检查 |
E类 |
N个 |
有关属性值,请参见分解和归一化.(缩写名称:NFD_QC、NFKD_QC、NFC_QC和NFKC_QC) |
NFKC_折叠 |
S公司 |
我 |
为无案例操作时的最佳行为而设计的映射作为标识符的字符串的匹配。(简称:NFKC_CF) 有关相关字符串的定义根据此映射转换为NFKC_Casefold(),请参见第3.13节,违约案例算法英寸[Unicode码].
映射列在字段2中。 |
更改_当NFKC_折叠时 |
B类 |
我 |
与NFKC_Casefold不相同的字符映射。 生成自:(cp!=NFKC_CaseFold(cp))
|
NFKC_简单_折叠 |
S公司 |
我 |
在执行简单无案例操作时,为最佳行为设计的映射作为标识符的字符串的匹配。(简称:NFKC_SCF) 映射列在字段2中。 |
属性列表.txt |
ASCII_Hex_数字 |
B类 |
N个 |
通常用于表示十六进制数的ASCII字符。 |
Bidi_控制 |
B类 |
N个 |
在中具有特定功能的格式控制字符Unicode双向算法[UAX9系列]. |
虚线 |
B类 |
我 |
标点字符在Unicode中显式地称为破折号标准,以及它们的等效兼容性。其中大多数具有General_Category值Pd,但是有些由于在数学中的使用而具有General_ Category值Sm。 |
已弃用 |
B类 |
N个 |
有关不推荐使用的字符的机器可读列表。永远不会有角色从标准中删除,但强烈反对使用不推荐使用的字符。 |
音调评论家 |
B类 |
我 |
用语言将另一个字符的意思修改为他们所应用的。有些音调符号不是组合字符,有些是组合字符不是变音符号。 |
扩展器 |
B类 |
我 |
其主要功能是扩展前面的字母字符或扩展相邻字符的形状。典型的是长度标记、迭代标记和阿拉伯语塔特维尔. |
六边形_数字 |
B类 |
我 |
通常用于表示十六进制数的字符,加上它们的兼容性等价物。 |
连字符(稳定的截至4.0.0;已弃用截至6.0.0) |
B类 |
我 |
用于标记单词之间连接的虚线,加上片假名中间点. The片假名中间点功能类似于连字符,但形状类似于点而不是破折号。 |
表意字符 |
B类 |
我 |
被视为CJKV的字符(中文、日语、韩语和越南语)或其他汉字(中文书写相关)。此属性大致定义了“中文字符”,不包括其他字符楔形文字或埃及象形文字等标识文字。这个表意字符属性用于定义表意字符描述序列。 |
ID_比较_路径_开始 |
B类 |
我 |
用于UAX#31中的数学标识符配置文件。 |
ID_比较_路径_继续 |
B类 |
我 |
用于UAX#31中的数学标识符配置文件。 |
IDS_Unary_操作员 |
B类 |
N个 |
用于表意字符描述序列。 |
IDS_Binary_操作员 |
B类 |
N个 |
用于表意字符描述序列。 |
IDS_Trinary_操作员 |
B类 |
N个 |
用于表意字符描述序列。 |
连接控件(_C) |
B类 |
N个 |
具有特定控制功能的格式控制字符草书连接和连接。 |
逻辑订单异常 |
B类 |
N个 |
出现在某些单词中的少量间隔元音字母东南亚脚本,如泰国和老挝,使用可视化顺序显示模型。这些字母存储在音节声母之前的文本中,并且需要对搜索和排序等过程进行特殊处理。 |
非字符代码点 |
B类 |
N个 |
代码点永久保留供内部使用。 |
其他_字母 |
B类 |
C类 |
用于派生字母属性。 |
其他默认忽略代码点 |
B类 |
C类 |
用于派生Default_Ignorable_Code_Point属性。 |
其他_图形_扩展 |
B类 |
C类 |
用于派生Grapheme_Extend属性。 |
其他_ID_继续 |
B类 |
C类 |
用于维护的向后兼容性ID_继续. |
其他ID_开始 |
B类 |
C类 |
用于维护的向后兼容性ID_启动. |
其他_小机箱 |
B类 |
C类 |
用于派生小写属性。 |
其他路径(_M) |
B类 |
C类 |
用于派生Math属性。 |
其他机箱(_U) |
B类 |
C类 |
用于派生大写属性。 |
模式_语法 |
B类 |
N个 |
用于Unicode标准附录#31“Unicode标识符”中描述的模式语法和模式语法“[UAX31型]. |
图案_白色_空格 |
B类 |
N个 |
前置连接标记 |
B类 |
我 |
一小类可见格式控件,位于前面,然后跨越其他字符的序列,通常是数字。这些也被称为“对向标记”,因为大多数标记都以视觉上延伸到下面的形式出现以下数字的序列。 |
报价_标记 |
B类 |
我 |
用作引号的标点字符。 |
激进派 |
B类 |
N个 |
用于表意文字描述序列的定义。 |
区域_指标 |
B类 |
N个 |
区域指示符字符的属性,U+1F1E6..U+1F1FF。这个属性在各种分割算法中被引用,以帮助更正打破表情符号序列。 |
句子_终端 |
B类 |
我 |
通常标记句子结尾的标点符号。用于Unicode标准附件#29“Unicode文本分割”[UAX29型]. |
已删除(_D) |
B类 |
N个 |
带有“软点”的字符,如我或j个.重音这些字符会导致圆点消失。一个显式上面的点可以添加到以下位置需要,例如立陶宛语。请参阅第7.1节,拉丁语英寸[Unicode码]. |
终点_计时 |
B类 |
我 |
通常标记文本单位末尾的标点字符。 |
统一的象形文字 |
B类 |
N个 |
用于指定标准中统一中日韩象形文字的精确集合。这一套不包括中日韩兼容象形文字(具有规范分解统一中日韩象形文字),以及来自中日韩的字符符号和标点符号块。The class ofUnified_Ideograph=Y字符是象形字=Y个字符。 |
变体选择器 |
B类 |
N个 |
表示变体选择器字符。对于有关这些字符行为的详细信息,请参见第23.4条,变体选择器英寸[Unicode码],和Unicode技术标准#37,“Unicode象形字变体数据库”[UTS37标准]. |
白色_空格 |
B类 |
N个 |
空格、分隔符和其他应处理的控制字符编程语言作为“空白”用于解析元素。另请参见线路中断(_B),Grapheme_Cluster_Break(图形_簇_断开),句子_中断,和断字(_B),对空间字符和相关控件的分类有所不同用于特定的文本分割上下文。 |
UnicodeData.txt文件 |
姓名 |
M(M) |
N个 |
(1) 当字符串值未括在<尖括号>中时出现在该字段中,它指定角色的Name属性值,该值与中发布的名称完全匹配代码图表。大多数表意字符的Name属性值和for Hangul音节由各种规则派生而来。请参阅第4.8节,名称英寸[Unicode码]对于这些产品的完整规格规则。此字段中包含在<尖括号>中的字符串提供标签名称派生规则中使用的信息,或在字符情况下使用的信息其Name属性值为空字符串,例如控制字符-provide有关其代码点类型的其他信息。 |
常规_类别 |
E类 |
N个 |
(2) 这是可以使用的各种字符类型的有用细分作为实现中的默认分类。有关属性值,请参见常规类别值. |
标准组合类 |
N个 |
N个 |
(3) Unicode中用于规范排序算法的类标准。此属性可以被视为枚举属性或数字属性:该属性的主要用途是数值项。有关与不同数值关联的属性值名称,请参见派生组合类.txt和规范组合类值. |
Bidi_类 |
E类 |
N个 |
(4) 这些是Unicode双向算法所需的类别。有关属性值,请参见双向类值。有关更多信息,请参阅Unicode标准附录9“Unicode双向算法”[UAX9系列]. 默认属性值取决于代码点,在中进行了解释派生BidiClass.txt |
分解_类型
分解映射(_M) |
E、 S公司 |
N个 |
(5) 此字段包含两个值,类型在尖括号中。这个分解映射与用字符发布的分解映射完全匹配Unicode标准中的名称。有关更多信息,请参阅角色分解映射. |
数字类型
数值 |
E、 N个 |
N个 |
(6) 如果角色具有属性值Numeric_Type=Decimal,然后数字——该数字的值用整数表示字段6、7和8中的值(限制在0..9范围内)。属性值为Numeric_Type=Decimal的字符是限于可用于十进制基数位置数字系统的数字,以及在标准中以连续的升序范围0..9编码。请参阅的讨论十进制数字在里面第4章,字符属性英寸[Unicode码]. |
E、 N个 |
N个 |
(7) 如果角色具有属性值Numeric_Type=Digit,则数字——该数字的值用字段7和8中的整数值(限制在0..9的范围内),并且字段6为空。这包括需要特殊处理的数字,例如兼容性上标数字。 从Unicode 6.3.0开始,没有新编码的数字字符给定Numeric_Type=数字,Numeric_Type=数值的现有字符也不会更改到Numeric_Type=数字。这两种类型之间的区别被认为没有用处。 |
E、 N个 |
N个 |
(8) 如果角色具有属性值Numeric_Type=Numeric,然后该字符的数值用正数或此字段中的负整数或有理数,以及字段6和7为空。这包括分数,例如,“1/5”表示U+2155 VULGAR分数五分之一。 某些字符具有基于Unihan数据文件中的值的这些属性。请参阅数字类型,汉字. |
Bidi_镜像 |
B类 |
N个 |
(9) 如果角色是中的“镜像”角色双向文本,此字段的值为“Y”;否则为“N”。请参阅第4.7节,Bidi镜像第页,共页[Unicode码].不要将此与这个Bidi_镜像_Glyph属性。 |
Unicode_1_名称(过时的截至6.2.0) |
M(M) |
我 |
(10) 以Unicode 1.0发布的旧名称或ISO 6429控制功能名称。此字段为空,除非它明显与角色的当前名称不同。不再用于代码图生成。请参阅姓名_别名. |
ISO_注释(过时的截至5.2.0;已弃用和稳定的截至6.0.0) |
M(M) |
我 |
(11) ISO 10646注释字段。它用于出现在10646个姓名列表,或包含星号以标记附录P注释。 从Unicode 5.2.0开始,此字段不再包含任何非null值。
|
简单_大写_映射 |
S公司 |
N个 |
(12) 简单的大写映射(单个字符结果)。如果一个角色字母表中有大小写区别的部分,并有一个简单的大写等价物,然后此字段中包含大写等效项。这个简单映射有一个单字符结果,其中完整映射可能有多字符结果。有关更多信息,请参阅案例和案例映射. |
简单_小写_映射 |
S公司 |
N个 |
(13) 简单的小写映射(单字符结果)。 |
简单标题集映射 |
S公司 |
N个 |
(14) 简单的标题页映射(单字符结果)。 注:如果这样字段为空,则Simple_Titlecase_Mapping与此字符的Simple_Uppercase_Mapping。 |
表情符号数据.txt |
表情符号 |
B类 |
N个 |
=是用于表情符号字符。 |
Emoji_演示 |
B类 |
N个 |
=是默认情况下具有表情符号表示的字符。 |
表情符号_修改器 |
B类 |
N个 |
=是用于作为表情符号修饰符的字符。目前这包括只有肤色修饰字符。 |
表情符号_修改器_基础 |
B类 |
N个 |
=是用于可以作为表情符号修饰语基础的字符。 |
表情符号_组件 |
B类 |
N个 |
=是用于表情符号序列中通常不会出现在表情符号键盘上的字符作为单独的选项,例如表情符号的基本字符。还包括区域_指标字符和U+FE0F变量选择器-16。 注:表情符号序列中的所有字符都是emoji=Yes或emoji_Component=Yes。但是,实现不能假设所有Emoji_Component=Yes字符are Emoji=是。有一些非表情符号字符用于各种表情符号序列,例如标记字符和ZWJ。 |
扩展_图片 |
B类 |
N个 |
=是用于象形符号,以及块中的保留范围主要与表情符号有关。这将启用涉及以下内容的分段规则表情符号要稳定地指定,即使在现有的非表情符号象形文字的情况下这个符号后来被当作表情符号处理。 注:此属性用于默认图形的正则表达式定义集群边界规范和GB11规则UAX#29,Unicode文本分段[UAX29型],在规则LB30b中UAX#14,Unicode换行算法[UAX14型]以及ED-4的定义在UTS#51中,Unicode表情符号[UTS51标准]. |
许多Unicode字符属性被分离出来,重新格式化,并以范围格式列出,每个文件一个属性。这些文件位于提取UCD的目录。派生的提取文件及其提取属性的确切列表表示在中给出表10.
提供了派生的解压缩文件主要是为其他数据文件中指定的属性重新格式化数据。对于非违约属性值,如果有主要数据文件之间的任何意外不匹配指定这些属性和这些提取属性的列表,主要数据文件被视为决定性的。然而,对于违约值属性中,提取的数据文件是确定的。对于属性来说尤其如此具有多个默认值;这些属性用星号标识在表中。见第4.2.9节,默认值.
表10。提取的属性
文件 |
状态 |
财产 |
摘自 |
派生BidiClass.txt |
N个 |
Bidi_Class类* |
Unicode数据.txt,字段4 |
派生二进制属性.txt |
N个 |
Bidi_镜像 |
Unicode数据.txt,字段9 |
派生组合类.txt |
N个 |
标准组合类 |
Unicode数据.txt,字段3 |
派生的分解类型.txt |
纯收入 |
分解_类型 |
UnicodeData.txt中的<tag>,字段5 |
导出东亚宽度.txt |
我 |
东部_亚洲_宽度* |
东亚宽度.txt,字段1 |
派生通用类别.txt |
N个 |
常规_类别 |
Unicode数据.txt,字段2 |
派生联接组.txt |
N个 |
加入_组 |
阿拉伯语Shaping.txt,字段3 |
派生联接类型.txt |
N个 |
连接_类型* |
阿拉伯语Shaping.txt,字段2 |
派生换行.txt |
N个 |
线路中断(_B)* |
LineBreak.txt,字段1 |
派生名称.txt |
N个 |
姓名 |
Unicode数据.txt,字段1 |
派生数字类型.txt |
N个 |
数字类型 |
UnicodeData.txt,字段6到8 |
派生数值.txt |
N个 |
数值 |
Unicode数据.txt,字段8 |
对于Decomposition_Type的提取UnicodeData.txt字段5中的分解映射没有标记。对于这些字符,提取的值为Decomposition_Type=Canonical。对于字符对于兼容性分解映射,有显式标记字段5中,以及Decomposition_Type的值等同于那些标签。值Decomposition_Type=规范为规范。Decomposition_Type的其他值仅供参考。
Name属性的值是基于实际字符串值提取的UnicodeData.txt字段1中的数据,省略任何代码点使用默认的空字符串值。然后,对于朝鲜文音节块,朝鲜文中定义的音节名称生成算法第3.12节,连接Jamo行为第页,共页[Unicode码] 应用,以创建显式形式所有朝鲜文音节的名称。名称按算法计算的字符基于将代码点后缀到特定标识来定义字符串前缀,如CJK UNIFIED IDEOGRAPH-4E00,与一起列出DerivedName.txt中的紧凑范围约定,使用星号“*”字符作为代码点的占位符。请参阅第4.8节,名称第页,共页[Unicode码]有关如何派生Name属性的详细信息。
数值是根据UnicodeData.txt字段8中的数据或值kPrimaryNumeric、kAccountingNumeric或kOtherNumeric标记的Unihan数据文件中列出的字符。
Numeric_Type提取如下。如果UnicodeData.txt中的字段6、7和8均为非空,则Numeric_Type=Decimal。否则,如果字段7和8都是非空,则Numeric_Type=数字。否则,如果字段8非空,则Numeric_Type=数字。对于Unihan数据文件中列出的字符,Numeric_Type=具有kPrimaryNumeric、kAccountingNumeric和,或kOtherNumeric标记。默认值为Numeric_Type=None。
贡献属性包含在生成从中派生的其他属性。具体涉及的出资财产标识符和外壳有助于维护属性和/或不变性关系的稳定性保证相关属性之间。其他出资财产只是定义为方便属性派生。
大多数出资财产的名称使用模式“Other_XXX”,并用于派生相应的“XXX”属性。例如,Other_Alphabetic属性用于派生按字母顺序排列属性。
贡献属性通常定义在属性列表.txt以及相应的派生属性然后在中列出派生核心属性.txt.
Jamo_Short_姓名是一个不寻常的贡献者属性,包括其名称和使用方式。其定义见它自己的属性文件Jamo.txt,用于派生Name根据规则,朝鲜文音节字符的属性值在第3.12节,连接Jamo行为在里面[Unicode码].
贡献者被认为是Unicode的一种独特状态字符属性。贡献属性既不是规范性的也不是信息丰富的。此不同状态标记为属性表中状态列中的符号“C”。为了便于参考,还列出了所有出资财产在里面表10a,以及它们对其派生有贡献的属性。
表10a。贡献属性
文件 |
财产 |
用于推导 |
Jamo.txt格式 |
Jamo_Short_姓名 |
姓名 |
属性列表.txt |
其他_字母 |
按字母顺序排列 |
其他默认忽略代码点 |
默认可忽略代码点 |
其他_图形_扩展 |
图形_扩展 |
其他ID_开始 |
ID_开始,XID_开始 |
其他_ID_继续 |
ID_继续,XID_继续 |
其他_小机箱 |
小写字母 |
其他路径(_M) |
数学 |
其他机箱(_U) |
大写 |
贡献属性包括其本身是不完整的,不打算单独使用。例如,返回Unicode属性值的API应实现派生的核心属性,如字母或Default_Ignorable_Code_Point,而不是相应的共同财产,Other_Alphabetic或Other_Default_Ignorable_Code_Point。
两院制脚本的大小写和字符的大小写映射是Unicode标准中的复杂主题——两者都是因为它们固有的算法复杂性和字符数以及涉及的特殊边缘情况。
本节提供了关于这些问题的简要讨论路线图主题、规范和标准中的定义,以及解释UCD中定义的案例相关属性。
第3.13节,默认情况算法在里面[Unicode码]为许多与案例相关的概念提供了正式定义(装有箱子的,可识别的案例, ...), 对于案例转换(至大写(X), ...), 和用于病例检测(大写(X), ...). 它还提供了形式定义标准的无案例匹配,采用标准化考虑到。
第4.2节,案例在里面[Unicode码]介绍case和case映射属性。表4-3,来源用于案例映射信息英寸[Unicode码]描述了与案例相关的类型UCD各种数据文件中可用的信息。表11再次列出这些数据文件每个中定义的与案例相关的属性的明确列表。每个属性上的链接将其描述引向表9,属性表.
表11。UCD文件和案例属性
为了与现有解析器兼容,仅UnicodeData.txt包含构成一对一映射的字符的大小写映射;它还省略了有关上下文敏感大小写映射的信息。有关的信息这些特殊情况可以在单独的数据文件中找到,SpecialCasing.txt,表示为单独的属性。
第5.18节,案例映射,英寸[Unicode码]讨论处理案件的各种实施问题,包括特定于语言的案例映射,如希腊语和土耳其语。该部分还详细介绍了箱子折叠。
与希腊案例映射相关的特殊套管条件,土耳其语和立陶宛语在特殊外壳.txt例如希腊语中sigma的小写映射因其位置而异总之。条件列表不构成正式字符属性,因为它是关于发生上下文的语句字符的大小写行为,而不是语义这些字符的属性。来自的UCD版本版本3.2.0至版本5.0.0做列出属性别名对于Special_Case_Condition(scc),但已确定这是一个错误对UCD进行XML表示分析时;因此,Special_Case_Condition属性别名已从5.1.0版本起删除。
无大小写匹配是许多文本特别关注的问题处理算法,因此也进行了一定长度的讨论在Unicode标准附件#31“Unicode标识符和模式语法”中[UAX31型]和在Unicode技术标准#10“Unicode排序算法”中[UTS10标准].
有关特定于本地的大小写约定的更多信息可以在Unicode公共区域设置数据存储库中找到[CLDR公司].
以下小节总结了某些枚举属性。其他属性值记录在其他专题性附录中;例如,Line_Break属性值记录在Unicode标准附件#14,“Unicode换行算法”[UAX14型]和各种与分段相关的属性值记录在Unicode标准附件#29,“Unicode文本分段”[UAX29型].
代码点的General_Category属性为该代码点的最一般分类。通常情况下根据指定的主要特征确定该代码点的字符。例如,字符是字母吗,标记、数字、标点符号或符号,如果是,表示什么类型?其他General_Category值定义了未分配给常规图形字符的代码点,包括私用、控制、代理代码等状态点,保留未分配。
许多字符有多种用途,并非所有此类情况可以完全由General_Category值捕获。例如,拉丁、希腊或希伯来文字母的General_Category值不试图涵盖(或排除)此类字母的数字用法罗马数字或其他数字系统。相反ASCII数字0..9作为Nd(十进制数字)的通用类别既不试图涵盖(或排除)偶尔使用这些数字在各种拼法中都是字母。常规类别只是一级,最常见的分类字符。
有关General_Category的更多信息属性,请参见第4章,字符属性英寸[Unicode码].
UnicodeData.txt中General_Category字段中的值使用简短的属性值别名用于General_Category。为了便于参考,表12列出了General_Category值的所有缩写和长值别名,从属性值别名.txt, 以及每个类别的简要说明。
表12。常规类别值
阿贝尔 |
长 |
描述 |
卢 |
大写字母(_L) |
大写字母 |
陆上通信线 |
小写_字母 |
小写字母 |
书信电报 |
标题栏_字母 |
编码为单个字符的有向图,第一部分大写 |
液晶显示器 |
外壳_字母 |
卢|Ll|Lt |
Lm(磅) |
修改人_字母 |
修饰字母 |
Lo(低) |
其他字母(_L) |
其他字母,包括音节和表意文字 |
L(左) |
信件 |
卢|Ll|Lt|Lm|Lo |
锰 |
无间距标记 |
非间隔组合标记(零前进宽度) |
麦克 |
间距标记(_M) |
间距组合标记(正前进宽度) |
我 |
封闭_标记 |
封闭组合标记 |
M(M) |
作记号 |
我是Mn|Mc|Me |
钕 |
小数 |
十进制数字 |
无 |
字母_编号 |
类似字母的数字字符 |
不 |
其他_编号 |
其他类型的数字字符 |
N个 |
编号 |
Nd|Nl|否 |
个人 |
连接器计时 |
连接标点符号,如领带 |
钯 |
仪表板_穿孔 |
破折号或连字符标点符号 |
Ps公司 |
打开_穿刺 |
(一对的)开头标点符号 |
体育课 |
关闭_穿刺 |
(一对的)结束标点符号 |
圆周率 |
缩写_穿刺 |
首引号 |
功率因数 |
最后_穿刺 |
最后的引号 |
Po公司 |
其他_穿刺 |
其他类型的标点符号 |
P(P) |
标点符号 |
Pc|Pd|Ps|Pe|Pi|Pf|Po |
钐 |
数学符号 |
数学应用的象征 |
Sc公司 |
货币_符号 |
货币符号 |
Sk公司 |
修改器_符号 |
非字母型修饰符符号 |
所以 |
其他符号 |
其他类型的符号 |
S公司 |
符号 |
Sm|Sc|Sk|So |
Z轴 |
太空分离器 |
(各种非零宽度的)空格字符 |
Zl公司 |
线路分离器 |
仅U+2028线路分离器 |
Zp公司 |
段落_分隔符 |
仅U+2029段落分隔符 |
Z轴 |
分离器 |
Zs|Zl|Zp |
复写的副本 |
控制 |
C0或C1控制代码 |
囊性纤维变性 |
格式 |
格式控制字符 |
铯 |
代理 |
代理代码点 |
有限公司 |
私人使用(_U) |
私用角色 |
抄送 |
未分配 |
保留的未分配代码点或非字符 |
C类 |
其他 |
抄送|Cf|Cs|Co|Cn |
请注意,值gc=Cn实际上并不是出现在UnicodeData.txt中,因为该数据文件未列出未分配的代码点。
一些General_Category值之间的区别对于边缘情况有点武断,特别是那些涉及符号和标点符号。例如,多功能ASCII字符(包括“@”、“#”、“%”和“&”)具有长被归类为其他针灸(gc=Po),尽管它们不是传统的标点符号西方印刷术。其他字符也可能在组织和划分文本单位(标点符号式)的功能或表示概念(象符号一样)。同样,它也可能不总是明确一些符号是否主要用于数学或者它们是否是数学中偶尔甚至常见的通用符号。例如,许多箭头符号被分类为Other_Symbol,尽管它们在数学中被广泛使用。这个General_Category值构成字符的大致分区对算法处理进行区分,但不要为这种重叠提供一个明确的分类或字符的模糊用法。
具有与报价相关的General_Category值的字符Pi或Pf的行为可能类似于开始标点(gc=Ps)或结束标点符号(gc=Pe),取决于用法和引号约定。
突出显示的表中的General_Category值浅蓝色(LC、L、M、N、P、S、Z、C)代表相关分组通用类别值。它们表示的类可以由相关简单值的并集,如表所示。缩写为了方便起见,提供了这些类的长值别名对于regex等可能希望匹配更通用的实现类别,例如“字母”或“数字”,而不是详细的General_Category的子类型。分组的这些别名UnicodeData.txt中不出现General_Category值的始终为字符的General_Category指定枚举的子类型。
符号“L&”是用于代表任何大写、小写或标题字母的组合(Lu、Ll或Lt),位于UCD数据文件注释的第一部分。它相当于gc=LC,但只是注释中的一个标签不应用作正则表达式匹配的标识符。
Unicode标准不指定非默认属性控制字符的值(gc=Cc),除了对于涉及Unicode双向算法的某些定义明确的异常,Unicode换行算法和Unicode文本分割。此外,实现通常会分配特定断线控制的行为字符——最显著的是U+000D和U+000A(CR和LF)——根据平台约定。请参阅第5.8节,新品指南英寸[Unicode码]了解更多信息。
UnicodeData.txt中Bidi_Class字段中的值使用简短的属性值别名用于Bidi_Class。为了便于参考,表13列出Bidi_Class值的所有缩写和长值别名,从属性值别名.txt, 以及每个类别的简要说明。
表13。Bidi_Class值
阿贝尔 |
长 |
描述 |
强类型 |
L(左) |
左_右 |
任何从左到右的强字符 |
R(右) |
右_To_左 |
任何强的从右向左(非阿拉伯语类型)字符 |
铝 |
阿拉伯语_字母 |
任何强大的从右到左(阿拉伯语类型)字符 |
弱类型 |
ZH |
欧洲_编号 |
任何ASCII数字或东阿拉伯-印度数字 |
锿 |
欧洲_分离器 |
加号和减号 |
电子技师 |
欧洲_端子 |
数字格式上下文中的终止符,包括货币符号 |
AN公司 |
阿拉伯数字 |
任何阿拉伯-印度数字 |
反恐精英 |
公用分离器 |
逗号、冒号和斜线 |
NSM公司 |
无间距标记 |
任何非间隔标记 |
BN编号 |
边界_中性 |
大多数格式字符、控制代码或非字符 |
中性类型 |
B类 |
段落_分隔符 |
各种换行符 |
S公司 |
段分隔器 |
各种与段相关的控制代码 |
WS公司 |
白色_空格 |
空格 |
在 |
其他_中性 |
大多数其他符号和标点符号 |
显式格式类型 |
轻柴油发动机 |
左_右_嵌入 |
U+202A:LR嵌入控件 |
LRO公司 |
左_右_覆盖 |
U+202D:LR超越控制 |
RLE公司 |
右_左_嵌入 |
U+202B:RL嵌入控件 |
RLO公司 |
右_左_覆盖 |
U+202E:RL超越控制 |
PDF格式 |
弹出方向格式 |
U+202C:终止嵌入或覆盖控件 |
LRI公司 |
左_右_隔离 |
U+2066:LR隔离控制 |
RLI公司 |
右_左_隔离 |
U+2067:RL隔离控制 |
金融服务机构 |
第一次强隔离 |
U+2068:第一个强大的隔离控制 |
交车前检查 |
弹出方向隔离 |
U+2069:终止隔离控件 |
请参阅Unicode标准附件#9“Unicode双向算法”[UAX9系列]的意义的解释设置双向文本格式时这些值的值。
添加了隔离控件的四个枚举值采用Unicode 6.3。这意味着Bidi_Class的枚举中存在不连续性Unicode 6.2和Unicode 6.3(及更高版本)之间的UnicodeData.txt和DerivedBidiClass.txt必须考虑在内。
提供了字符的Decomposition_Mapping属性的值UnicodeData.txt的字段5中。这是一个字符串值属性,由序列组成一个或多个Unicode代码点。分解映射的默认值属性是字符本身的代码点。默认值的使用UnicodeData.txt中的字段5为空表示字符的。非正式地,字符的Decomposition_Mapping属性的值被简单地称为分解映射.角色分解时映射不是默认值,则打印出分解映射在Unicode代码图表的名称列表中显式显示。
与分解映射子集一起提供的前缀标记通常表示格式信息。如果没有给出这样的标记,则映射是规范的。相反,存在格式化标记还指示映射是兼容性映射而不是规范映射映射。在兼容性映射中缺少其他格式信息时,标记为用于将其与规范映射区分开来。
在某些情况下,规范映射或兼容性映射可能由单个字符。对于规范映射,这表示字符是另一个字符。对于兼容性映射,这表示字符是与另一个字符的兼容性等效。
规范映射也可以由一对字符组成,但决不是长度超过两个字符。当规范映射由一对字符组成时,第一个字符本身可能是具有分解映射的字符,但是第二个字符从来没有分解映射。
兼容性映射可能比规范映射长得多。出于历史原因最长的兼容性映射长度为18个字符。保证兼容性映射不超过18个字符,尽管大多数字符只有几个字符。
兼容性格式UCD中使用的标签列于表14.
表14。兼容性格式标记
标签 |
描述 |
<字体> |
字体变体(例如,黑色字体) |
<无中断> |
空格或连字符的非中断版本 |
<初始> |
初始演示表单(阿拉伯语) |
<中间> |
中间表示形式(阿拉伯语) |
<最终> |
最终演示形式(阿拉伯语) |
<隔离> |
独立表示形式(阿拉伯语) |
<圆圈> |
环形形状 |
<超级> |
上标形式 |
<子> |
下标形式 |
<垂直> |
垂直布局展示表 |
<宽> |
宽(或zenkaku)兼容性字符 |
<窄> |
窄(或汉字)兼容字符 |
<小> |
小变型(CNS兼容性) |
<方形> |
CJK方形字体变体 |
<分数> |
普通分数形式 |
<兼容> |
其他未指定的兼容字符 |
注:分解和Decomposition_Mapping属性。这个Decomposition_Mapping属性是一个字符串值属性,其值(映射)在UnicodeData.txt中定义,而分解(也称为“完全分解”)的定义第3.7节,分解在里面[Unicode码]使用这些映射递归地。
- 正则分解是通过递归地应用正则映射来形成的,然后应用标准排序算法。
- 兼容性分解是通过递归应用规范和兼容性映射,然后应用规范排序算法。
从Unicode 2.1.9开始UnicodeData.txt文件可用于导出以规范顺序完全分解任何单个字符,无需需要单独应用规范排序算法。然而,组合字符序列的规范排序必须仍然适用在对包含任何组合标记的源文本进行标准化时进行分解。
朝鲜文连词jamos和朝鲜文音节的标准化取决于算法映射,如中所述第3.12节,连接Jamo行为英寸[Unicode码].该算法指定了所有预编的朝鲜文音节的完全分解,但它有效地等价于两两分解的递归应用映射,以及所有其他Unicode字符。形式上,分解映射朝鲜文音节的属性值是成对分解,而不是完整的分解。
每个字符都带有汉古尔_音节_类型值LVT将有一个Decomposition_Mapping,它由一个具有LV值的字符和一个具有T值的字符。因此,对于U+CE31,分解映射为<U+CE20,U+11B8>,而不是<U+110E、U+1173、U+11B8>。
Unihan属性kCompatibilityVariant包含规范分解——仅用于CJK兼容象形文字的映射属性值。因为它的值是派生自UnicodeData.txt,它被正式视为派生属性。确切的说法kCompatibilityVariant的派生词在Unicode标准附录38“Unicode Han数据库(Unihan)”中列出[UAX38系列].
UnicodeData.txt中Canonical_Combining_Class字段中的值是规范排序算法中使用的数值。一些这些数值也有明确的符号标签作为属性值别名,以使其预期应用程序更易于理解。为了便于参考,表15列出了Canonical_Combining_Class值的长符号别名,从属性值别名.txt, 以及每个类别的简要说明。的列表具有“Ccc10”等形式的长符号别名的固定位置类是缩写,因为当这些标签出现时,它们在形式上是可预测的,基于数值。
表15。标准组合类值
价值 |
长 |
描述 |
0 |
未排序(_R) |
间距和封闭标记;还有许多元音和辅音符号,即使不发音 |
1 |
覆盖 |
覆盖基本字母或符号的标记 |
6 |
汉字_阅读 |
中日韩统一表意文字的读音符号 |
7 |
努克塔 |
婆罗门语衍生文字中的音调符号nukta |
8 |
假名_发音 |
平假名/片假名发音标记 |
9 |
维拉玛 |
维拉马斯 |
10 |
抄送10 |
固定职位类别的开始 |
... |
... |
|
199 |
|
固定位置类结束 |
200 |
左下方附加的 |
左下角有标记 |
202 |
以下附件(_B) |
标记直接贴在下面 |
204 |
|
右下角有标记 |
208 |
|
标记附在左侧 |
210 |
|
右侧的标记 |
212 |
|
标记附在左上角 |
214 |
上述附件 |
直接贴在上面的标记 |
216 |
右上方附件 |
右上角的标记 |
218 |
左下方(_L) |
左下角有明显的标记 |
220 |
下面 |
正下方有明显的标记 |
222 |
右下方(_R) |
右下角有明显的标记 |
224 |
左侧 |
左侧有明显的标记 |
226 |
赖特 |
右侧有明显的标记 |
228 |
左上方(_L) |
左上角有明显标记 |
230 |
以上 |
正上方有明显的标记 |
232 |
右侧上方(_R) |
右上角有明显标记 |
233 |
双_下方 |
对向两个碱基的明显标记 |
234 |
双_以上 |
延伸至两个底座上方的明显标记 |
240 |
Iota_下标 |
仅希腊语iota下标 |
表中的某些Canonical_Combining_Class值当前未使用用于任何字符,但为了完整性在此处指定。一些值没有长的符号别名,并且未在PropertyValueAliases.txt中列出。不要假设缺少长符号别名意味着不使用特定的Canonical_Combining_Class。请参阅派生组合类.txt对于使用Canonical_Combining_Class值的完整列表UCD的任何特定版本。
用于正则表达式匹配的固定位置类(ccc=10到ccc=199),对于任何版本,实际出现在Unicode字符数据库中的是给定“Ccc10”、“Ccc11”等形式的可预测别名。此类别名的完整列表可以在PropertyValueAliases.txt中找到实际定义的。
关于Canonical_Combining_Class的字符属性不变量保证值一旦分配,就不会改变,以及所有使用的值都将在0..254范围内。请参阅实现中的不变量.
将标记与ccc=224(左)组合在一起,在存储中跟随其基本字符,对于所有组合标记,但在左侧进行视觉渲染侧面。对于所有过去版本的UCD和继续使用此版本的UCD,只有两个朝鲜文音节某些符号中使用的声调标记的ccc=224。这些标记实际上是在前面的字形簇,如果是朝鲜文音节由连体jamos序列产生。
将标记与ccc=Left组合的少数实例应该是与左侧元音的众多例子不同婆罗门语衍生文字中的符号和元音字母。两者的Canonical_Combining_Class值均为零(Not_Reordered)普通的左侧元音符号,如U+093F DEVANAGARI VOWEL SIGN I和泰式左侧(Logical_Order_Exception=是)元音字母,如U+0E40泰国角色萨拉E.ccc的“Not_Reordered”=Not_Reoordered指角色在规范中的行为排序算法作为Unicode规范化定义的一部分;确实如此不参考任何有关符号视觉重新排序的问题涉及显示和渲染。请参阅“规范排序算法“in第3.11条,规范化表单英寸[Unicode码].
分解在第3章,合规性第页,共页[Unicode码].这一章也指定分解和规范化之间的交互。
许多与Unicode规范化相关的派生属性被称为“Quick_Check”属性。这些是为了启用各种优化而定义的用于实现规范化,如中所述第9节,检测规范化表单,在Unicode标准附件#15中,“Unicode规范化格式”[UAX15型].中列出了所有代码点的四个Quick_Check属性的值派生NormalizationProps.txt。可能的财产价值的解释总结如下表16.
表16。快速检查属性值(_C)
财产 |
价值 |
描述 |
NFC_QC、NFKC_QC、NFD_QC和NFKD_QC |
不 |
不能以各自的规范化形式出现的字符。 |
NFC_QC、NFKC_QC |
也许 |
根据上下文,可能在相应规范化中出现的字符。 |
NFC_QC、NFKC_QC、NFD_QC和NFKD_QC |
是 |
所有其他字符。这是Quick_Check属性的默认值。 |
建议在公共库API中公开Quick_Check属性值它支持Unicode字符属性,因为它们可以用于优化需要规范化Unicode字符串的代码。它们可以快速检查一些输入字符串已经处于所需的规范化形式有可能绕过运行完整的Unicode规范化算法的调用越耗时在输入字符串上。
相反,一些与规范化相关的Unicode字符属性是不建议在公共图书馆API中公开。值得注意的是,这些包括分解映射(_M),成分_排除, 和派生的完全复合排除.这些属性仅在一致实现中内部使用Unicode规范化算法。在公共API中公开它们可能会导致API用户的混淆。特别是,分解映射非常很容易被误解为指定分解,分解一个角色,也称为角色的完全分解参见定义D62和D64在里面第3.7节,分解英寸[Unicode码].
大多数属性都有一个与每个代码点关联的值。然而,某些属性可能会将一组多个每个代码点有不同的值。例如,临时kVietnam属性,其中列出了越南语发音对于统一的CJK表意文字,具有由一组零个或多个发音字符串。因此,Unihan数据库包含一个条目:
U+6258千越南人
该行被解释为关联一组具有kVietnamese属性的五个字符串值,{“thác”、“thách”、“thŞc”、“thưc”、“thưt”}对于U+6258。
类似地,Script_Extensions属性的值由一组一个或多个脚本属性值组成。因此UCD中的属性文件ScriptExtensions.txt包含一个条目:
0640 ; Adlm Arab Mand Mani Phlp Rohg Sogd Syrc#Lm ARABIC TATWEEL公司
该行被解释为关联一组列举了八个带有Script_Extensions的脚本属性值{Adlm、Arab、Mand、Mani、Phlp、Rohg、Sogd、Syrc}U+0640的属性。
对于Script_Extensions,尤其是构成有意义的属性值相对较小,可以显式地针对任何特定的Unicode版本进行评估。例如:
{{Adlm,Arab,Mand,Mani,Phlp,Rohg,Sogd,Syrc},{Arab,Copt},}Arab,Rohg},[Arab,Syrc],{Arab
然而,这组设定值的枚举不太可能具有很大的实现价值,并且可能在标准的版本。在其他情况下,例如定义发音的属性统一CJK表意文字的阅读,这些集合是完全开放的没有必要尝试在UCD中提供此类集合的显式枚举。
这些集合中元素值的顺序可能重要,也可能不重要。例如,kGuangeon和For的元素值之间的顺序Script_Extensions不重要。相比之下,当kMandarin属性显示代码点的两个值,第一个值用于表示zh-Hans(CN)的首选发音,第二个azh-Hant(TW)的首选发音。
有关数据文件格式的注意事项值集,见第4.2.8节属性的多个值. 关于此类验证的考虑因素属性,见第5.11.5节多值属性的验证.另请参阅Unicode技术标准#18,“Unicode正则表达式”[UTS18标准]讨论如何处理处理正则表达式时的此类属性。
Unicode字符属性本身及其值都是给定的符号别名。提供了别名的正式列表,以便定义明确的符号值可用于UCD的XML格式数据,用于正则表达式属性测试,以及其他Unicode数据的程序化文本描述。属性的别名在中定义属性别名.txt。属性值的别名在中定义属性值别名.txt。
表17。UCD中的Alias文件
别名定义为ASCII兼容标识符,只使用大写或小写A-Z、数字和下划线“_”。案例不重要比较别名时,但数据文件中使用的首选格式对于较长的别名,则将其命名。
别名可以在适当的环境中翻译别名在某些情况下可能有用。没有要求只有在以下情况下,才能使用UCD别名文件中定义的别名指Unicode字符属性或其值;然而,他们建议使用以实现数据格式或编程环境。
可以提供别名临时财产。属性别名和属性具有稳定性保证值别名,但临时属性或其他属性没有稳定性保证临时数据文件;因此,也可能有与临时属性相关的属性别名或属性值别名没有稳定性保证属性。
在PropertyAliases.txt中,第一个字段通常指定缩写属性的符号名称,第二个字段指定属性的长符号名称。这些是首选别名。第三部分中指定了一些属性的其他别名或后续字段。
规范性和信息性别名Unihan数据文件中定义的属性包含在PropertyAliases.txt中,从5.2版开始。
长符号名称别名是自我描述的,并且是被视为Unicode字符属性。为了清楚起见,尽可能使用当提到这个属性。例如:“Line_Break属性在Unicode标准附件#14中进行了讨论”,Unicode行中断算法”[UAX14型]."
缩写的符号名称别名通常很短,而且不太容易记忆,但对于数据或其他中的“lb=BA”等表达式很有用意思明确的上下文。请注意,尽管UCD文档将第一个符号名称别名称为“缩写”没有要求第一个字段是实际的缩写,甚至是那样吗它比“长”符号名称别名短。如果长符号名称别名为已经是一个短标识符,在许多情况下,“缩写”符号名称别名是与第二个字段中的值相同。还有一个原则类,其中“缩写”字段实际上比“长”字段长-属性别名用于Unihan标记。在这种情况下,第二个字段故意匹配Unihan准确地标记,以便它可以作为官方财产价值发挥其功能标识符。然后,因为没有系统的方法来缩写Unihan标签,而仍然保留对他们的合理理解PropertyAliases.txt是通过在每个Unihan标记前系统地加上前缀“cj”来创建的,结果是在带有助记符“cjk”前缀的标签中。因此,在这种情况下如果第一个字段包含的字符串比第二个字段长。启动位置不应基于对这些符号名称别名的相对长度的假设。
PropertyAliases.txt中指定的属性别名构成唯一的命名空间。使用这些符号值时,否一个属性的别名将与另一个属性别名匹配。
在PropertyValueAliases.txt中,第一个字段包含Unicode属性的缩写别名,第二个字段指定该属性值的缩写符号名称,以及第三个字段指定该属性值的长符号名。这些是首选别名。某些属性值的其他别名可以在第四个属性值中指定或后续字段。例如,对于二进制属性True值的缩写别名为“Y”,长别名为为“是”,但每个条目还将“T”和“True”指定为该值的其他别名,如所示表18.
表18。二进制属性值别名
长 |
缩写 |
其他别名 |
是 |
年 |
没错,T |
不 |
N个 |
错误,F |
并非每个属性值都有关联的别名。属性值别名通常用于目录和枚举属性,这些属性具有定义良好的枚举值。它没有指定属性值别名很有意义,例如Numeric_Value属性,其值可以是任何数字,或对于字符串值属性(如Simple_Lowercase_Mapping),其值是从一个代码点到另一个代码点的映射。
Canonical_Combining_Class属性需要特殊处理在PropertyValueAliases.txt中。此属性的值为数字,但它们包含一组封闭的枚举值。更多这些值中很重要的一个是赋予符号名称别名。在PropertyValueAliases.txt中,第二个字段提供数字值,而第三个字段包含缩写符号name alias和第四个字段包含长符号该数值的名称别名。例如:
ccc;230; A;以上ccc;232; AR;右侧上方(_R)
属性值别名本身并不构成唯一的命名空间。特别是缩写别名,通常被重新用作不同属性值的别名。所有二进制属性值别名,例如make使用相同的“Y”、“Yes”、“T”、“True”符号。属性值别名还可能与用于属性别名的符号重叠。例如,“Sc”是General_Category属性的“Currency_Symbol”值,但它也是Script属性的缩写别名。然而,任何单个属性的值的别名都是在该属性的上下文中始终是唯一的。那个表示将属性别名和属性值别名,例如“lb=BA”或“gc=Sc”总是明确地只引用一个给定属性的一个值,并且不会匹配任何其他属性的任何其他值。
在6.1.0版之前,三个属性的属性值别名条目,年龄、块和联接组,使用特殊的元值缩写别名字段中的“n/a”。这应该是被理解为没有缩写别名为该属性的该值定义,而不是作为别名本身。从6.1.0版开始三个属性具有缩写别名,因此当前没有使用“n/a”元值。
在少数情况下,由于长期的传统做法通过短标识符引用属性值时,缩写别名和长别名是相同的。这个例如,可以在某些属性值别名中看到用于Line_Break属性和Grapheme_Cluster_Break属性。
财产脚本_扩展由脚本属性值的枚举集组成。这些集合的集合可能是开放的,并且没有为它们定义属性值别名。
匹配Unicode字符属性名称时和值,强烈建议所有属性和属性值别名得到认可。为了获得最佳匹配结果,而不是使用精确的二进制比较,以下是松散的匹配规则应遵守。
对于所有数值属性,以及Unicode_Radical_Stroke等属性由组合构成在比较属性值时,请使用松散匹配规则UAX44-LM1。
UAX44-LM1型.应用数值等效值。
- “01.00”相当于“1”。
- UCD中的“1.66666 7”是重复分数,并且相当于“10/6”或“5/3”。
Unicode字符名是一种特殊情况。从形式上讲,它们是价值观Name属性的。指定字符的每个Unicode字符名保证是唯一的,名称的分配方式是空格的存在与否不能用来区分它们。此外,实现有时会从Unicode创建标识符通过为空格插入下划线来命名字符。为了获得最佳效果在比较Unicode字符名时,请使用松散匹配规则UAX44-LM2。
UAX44-LM2系列.忽略大小写、空白、下划线('_')和除中的连字符外的所有中间连字符U+1180 HANGUL JUNGSEONG O-E,韩国正盛O-E。
- “零宽度空间”等同于“零宽度空格”或“零宽度间距”
- “字符-a”是不相当于“字符a”
在本规则中,“中间连字符”应解释为连字符发生在两人之间标准Unicode字符中的字母数字字符[A..Z,0..9]名称,发布在UCD中的Unicode名称列表中,而不是任何可能的连字符由于在中删除连字符之前删除了空白,因此暂时出现在中间匹配的特定实现。(请参见第4.8节,名称英寸[Unicode码]用于规范Unicode Name属性和名称唯一性的规范。)
因此,以下字符名称示例中的连字符是中间的,在松散匹配中应忽略:
- U+10089线性B构思图B107M HE-GOAT
- U+2F800 CJK兼容性构思图-2F800
- U+1FB23街区SEXTANT-136
- U+10749线性A标志A709-2 L2
- U+1F090 DOMINO垂直瓷砖-06-03
相反,以下字符示例中的连字符名称是不中间,在松散匹配中不应忽略。
- U+0F39西藏马克TSA-PHRU
- U+11C88三月信-A
此松散匹配规则的实现可以获得通过以下三种方法比较两个字符串时的正确结果操作,顺序为:
- 删除所有中间连字符(U+1180名称中的中间连字符除外)
- 删除所有空白和下划线字符
- 将toLowercase()应用于两个字符串
应用这三个操作后,如果两个字符串比较二进制相等,则认为它们匹配。
这是关于规则如何工作的逻辑陈述。如果已编程仔细地说,匹配规则的实现可以将字符串转换为单次传递。也可以比较两个名称字符串以进行松散匹配同时增量转换每个字符串。
宽松的匹配规则UAX44-LM2也适用于匹配字符名称别名、命名字符序列的名称和代码点标签,它们都共享Unicode字符名的唯一名称空间(和匹配行为)。请参阅第4.8节,名称英寸[Unicode码]
字符名称别名中的中间连字符示例包括:
- U+008E单班-2
- U+11秒HANGUL JONGSEONG yesiung-KIYEOK
以下示例非-字符名称别名中的中间连字符包括:
- U+0FD0西藏马克BKA-SHOG GI MGO RGYAN
命名字符序列中的中间连字符示例包括:
实现名称匹配时应格外小心特殊字符的非标准替代名称。名称唯一性策略Unicode联盟稳定性政策[稳定性]保证Unicode标准永远不会添加名称与现有字符匹配的字符编码字符,根据匹配规则UAX44-LM2。然而,任何其他将来可能会使用字符的名称。
以下是可能发生的此类故障的具体示例。在Unicode 6.0之前,正则表达式的一些实现允许匹配控制代码U+0007。当Unicode 6.0添加不同的编码字符,U+1F514 BELL代表表情符号,这些正则表达式实现中断。
截至Unicode标准6.1版,最常见的控制代码的替代名称,以及许多常用的缩写Unicode格式字符已添加为字符名称别名。这是自动的从潜在的未来的Unicode字符名,因为名称唯一性是在命名空间上定义的其中包括字符名和字符名别名。这种排除应该减少类似于“BELL”案例的意外可能性,其中实施者假设控制代码的名称已经定义好了。
属性别名和属性值别名是符号值。什么时候?比较它们时,使用松散匹配规则UAX44-LM3。
UAX44-LM3系列.忽略大小写、空格、下划线('_')、,连字符和任何初始前缀字符串“is”。
- “linebreak”等同于“Line_Break”或“Line-Break“
- “lb=BA”等同于“lb=BA”或“lb=BA”
- “Script=Greek”相当于“Script=isGreek”或“Script=is_Greek”
松散匹配通常适用于具有符号别名的目录、枚举和二进制属性为其值定义。字符串值属性的属性值不应进行松散匹配,其不具有针对其值定义的符号别名;准确的字符串值属性值的匹配很重要,因为这些价值观中的案例差异或其他差异可能很重要。
对于符号值的松散匹配,初始前缀字符串“is”为忽略。原因是返回属性值的API通常使用前缀“is”(或“is”或“is_”等)的约定命名为属性值。在loose期间忽略符号值上的任何初始“is”匹配可能会在应用领域产生最佳结果,例如正则表达式。删除仅用于松散匹配比较的初始“is”字符串需要对符号值执行一次,不需要递归测试。表单没有属性别名或属性值别名“isisistoconvoluted”的定义只是为了测试实现边缘案例。
现有和未来的属性别名和属性值别名在其相关名称空间内保证是唯一的,甚至如果忽略初始前缀字符串“is”。现有值得注意的案例以“is”开头的别名为:dt=Iso(分解类型=隔离)且lb=IS。Decomposition_Type值别名不会导致任何问题,因为没有对比值别名dt=o(分解类型=olated)。对于lb=IS,注意“IS”是整个的属性值别名,以及不是前缀。Line_Break属性没有空值与相比,但松散匹配的实现应该小心这样“lb=IS”就不会被误解为匹配null值。
实现有时使用其他语法结构与松散匹配相互作用。例如,属性匹配表达式\p{L}可以默认为引用Unicode通用类别属性:\p{General_Category=L}。有关的更多信息在正则表达式和其他环境中使用属性值,看见第1.2节,财产,在Unicode技术标准#18中,“Unicode正则表达式”[UTS18标准].
UCD中的财产价值可能会被更正在标准的后续版本中,发现了错误。此外,任何新版本的Unicode标准可能会为给定属性,除非允许值集是固定的属性类型(例如二进制属性),或其中一组允许值受Unicode规定的约束字符编码稳定性策略[稳定性]. 最后,新版本还可以在UCD中引入新属性或新数据文件。
UCD的实施者需要意识到更新到新版本时发生的此类更改。然而,一些属性值并且考虑了文件格式的一些方面不变量。本节记录了这些不变量。
属性或属性值的所有形式上保证的不变量在中进行了描述Unicode字符编码稳定性策略[稳定性].该策略及其枚举的不变量列表如下在Unicode标准本身的上下文之外维护。它们不是标准的一部分,而是约束关于标准在不同版本之间可以更改和不能更改的内容,以及Unicode技术委员会可以和关于标准不能接受。
除了所描述的形式上保证的不变量之外在Unicode字符编码稳定性策略中,本节注意关于字符属性的几个附加点UCD中的不变量。
简单考虑了一些字符属性不可变的:一次分配后,它们永远不会改变。例如,角色的名称是不可变的,因为它在精确识别中很重要角色的角色。Canonical_Combining_Class和字符的分解映射是不可变的,因为它们对Unicode规范化算法稳定性的重要性[UAX15型].
不可变字符属性的列表如所示表19.
表19。不可变属性
属性名称 |
缩写名称 |
默认值 |
是否可分配给新用户? |
年龄 |
年龄 |
未分配 |
是 |
姓名 |
纳 |
空字符串 |
是 |
姓名_别名 |
姓名_别名 |
空字符串 |
是(见注释) |
Jamo_Short_姓名 |
日本标准 |
空字符串 |
不 |
标准组合类 |
中央控制中心 |
0 |
是 |
分解映射(_M) |
糖尿病 |
<代码点> |
是 |
模式_语法 |
帕特同步 |
不 |
不 |
图案_白色_空格 |
补丁_WS |
不 |
不 |
非字符代码点 |
NChar公司 |
不 |
不 |
如果属性在“可分配给新对象?”列中有“是”在里面表19,这意味着属性值一次不可变它最初被分配给一个新编码的字符。的值保留的代码点采用默认值,如图所示在表的第三列中,但是可能会改变从默认值一旦字符被编码。另一方面,如果一个属性有“否”在“Assignable to New?”列中,这意味着它是绝对地不可变:所有代码点,包括保留的代码点,都有一个特定的属性值,如果新字符出现,该值不会更改在未来版本的标准。
Name_Alias属性是不寻常的,因为可以有更多指定给给定编码字符的多个正式名称别名。默认值Name_Alias的值为空字符串,但一旦指定了任何Name_Alia对于编码字符,该值是不可变的。如果不止一个正式的名称别名被分配给相同的编码字符,每个值都是不变的。
与标识符关联的一组二进制字符属性具有另一种不变性,可以描述为锁定为“是”.这是由于这些属性在标识符规范中的使用方式所致。Unicode标识符具有版本间稳定性的特点,因此一旦字符串被指定为属于特定的标识符类,它必须停留对于标准的未来版本,在该类中。因为这个要求对于标识符稳定性,有相关的约束相关字符属性如何更改。特别是与标识符相关的属性在中列出表19a可以为任何特定的指定字符设置值在标准版本之间从“否”更改为“是”,但一旦字符具有value是的,该值已锁定,无法再更改回No。
表19a:。是-锁定的属性
属性名称 |
缩写名称 |
默认值 |
ID_启动 |
入侵检测系统 |
不 |
ID_继续 |
国际数据中心 |
不 |
XID_开始 |
XIDS系统 |
不 |
XID_继续 |
XIDC公司 |
不 |
在某些情况下,属性不是不可变的,而是列表考虑到它可能具有的值不变量。例如,虽然至少有一些General_Category值可能会发生更改和更正,枚举集General_Category属性可以具有的可能值已修复,以后无法添加到。然而,并非所有枚举Unicode算法使用的属性具有不可变的属性值。例如,枚举的值列表与Line_Break和Word_Break属性关联的过去已更改,未来版本中可能会再次更改标准的要求。
除之外的所有字符保证General_Category Mn或Mc的类具有Canonical_Combining_Class=0。
在Unicode 4.0及以后的版本中,General_Category值小数(Nd),以及Numeric_Type值十进制的(de)被定义为共同扩展;也就是说,一套General_Category=Nd的字符将始终与NumericType=de的字符集。
在UCD文件的文件格式。一般来说文件格式约定是尽可能少地更改,以将对解析机器可读数据文件的实现。然而,对允许的文件格式的一些限制变革超越了形式上的保守主义,而是不变量的状态。这些保证尤其适用到UnicodeData.txt,这是与UCD。
UnicodeData.txt中字段的数量和顺序是固定的。关于要添加的字符属性的任何附加信息未来将提交给UCD显示在单独的数据文件中,而不是作为UnicodeData.txt的附加字段或通过重新解释任何现有字段。
应用程序可能希望使用各种字符属性和文件格式在选择如何实现字符属性时要考虑不变量。
Canonical_Combining_Class提供了一个很好的示例。这个关于Canonical_Combining_Class的字符属性不变量保证值一旦分配,就不会改变,以及所有使用的值都将在0..254范围内。这意味着Canonical_Combining_Class可以安全实现在无符号字节中,并且存储在表中的任何值现有字符不需要动态更新用于更高版本。
在实践中,对于Canonical_Combining_Class使用了256个以上的值。Unicode 3.0使用了53个值;Unicode 3.1到Unicode 4.1使用了54个值;和Unicode 5.0到Unicode 9.0使用了55个值。新的非零标准中很少添加Canonical_Combining_Class值。(有关此历史记录的详细信息,请参阅派生组合类.txt.) 实现可以利用这一事实进行压缩,因为只有非零值,而不是它们的绝对值,对规范排序算法。原则上是未来最多可以使用255个值,但实际值数超过128的可能性在这一点上是遥远的。有实施优势将内部类值的数量限制为128例如,能够使用有符号字节而无需在Java中隐式扩展到int数据类型。
Unicode字符UCD文件中的属性值可以通过常规方法进行验证表达。这种验证在测试返回属性值的实现。验证方法取决于属性的类型,如下所述。这些表达式使用Perl语法,但可能当然可以转换为其他正式约定使用使用其他正则表达式引擎。
适用于验证的正则表达式特定属性的更改可能会在UCD的每个后续版本中发生。然而,由于字符属性别名的稳定性保证的一个版本的正则表达式Unicode标准将匹配以前版本的有效值标准的要求。
枚举和二进制字符属性可以通过验证使用PropertyValueAliases.txt文件生成正则表达式。因为枚举属性有一个定义的可能值列表,验证正则表达式将所有可能的值简单地OR在一起。二进制属性是枚举属性的特例,预定义的非常短可能值的列表。
例如,要验证中的East_Asian_Width属性UCD,或测试返回East_Asian_Width属性的实现,解析PropertyValueAliases.txt中的以下相关行并生成连接每个短属性别名和长属性别名的正则表达式值。
#东部_亚洲_宽度(ea)ea;A;模棱两可的ea;F;全角(Fullwidth)ea;H;半宽度ea;N;中性ea;钠;窄ea;W;宽
然后,得到的正则表达式将是:
/A|模糊|F|全宽|H|半宽|N|中性|Na|窄|W|宽/
对于每个Unicode二进制字符属性,正则表达式可以简单地预计算为:
/N|否|F|错误|Y|是|T|正确/
目录属性(年龄、块和脚本)是另一个枚举字符属性的类型。这些属性的所有可能值对于任何给定版本的Unicode标准,在PropertyValueAliases.txt中列出,因此,对于给定版本的UCD,Catalog属性的验证正则表达式可以是通过连接值生成,如其他枚举属性。
Canonical_Combining_Class(ccc)属性是一种混合类型。这个在UnicodeData.txt中为其定义的可能值范围从0到254,并且是数字值。然而,Canonical_Combining_Class也为这些特定值定义了符号别名实际使用中的;这些符号别名列在PropertyValueAliases.txt中。要为Canonical_Combining_Class生成验证正则表达式,请连接将PropertyValueAliases.txt中的符号别名组合在一起,然后添加数字范围0..254。
值255保留供实现使用。当ccc值由字节表示,可以使用附加值255通过用于其他目的的实现。
保留值133。没有字符具有该值。属性值别名CCC133根据有关属性值别名的稳定性政策保留。
定义的每个属性标记的验证正则表达式Unihan数据库中的[UAX38系列].
验证String和Miscellaneous属性的正则表达式UCD中提供了表21。虽然目录属性可以使用严格测试,如第5.11.1节枚举属性和二进制属性,块的通用模式和脚本也在中提供表21.
为了简化这些表达式的表示,通常出现的子表达式是第一个抽象为中定义的变量表20.
表20。用于验证的通用子表达式
变量 |
价值 |
注释和示例 |
$位 |
[0-9] |
"0", "3" |
$hex数字 |
[0-9A-F](0-9A-F) |
“1”、“A” |
$字母数字 |
[0-9A-Za-z] |
“1”、“A”、“z” |
$位数 |
$位数+ |
"0", "12345" |
$标签 |
$字母数字+ |
“A”,“叙利亚文”,“NGKWAEN”,“123467”,“A005A” |
$正十进制 |
$位数\$数字 |
"3.1" |
$十进制 |
-?$正十进制 |
"3.5", "-0.5" |
$理性 |
-?$位数(/$位数)? |
"3/4", "-3/4" |
$可选十进制 |
-?$位数(\.$位数)? |
"3.5", "-0.5", "2", "1000" |
$名称 |
$标签((-|-|[-_])$标签)* |
名称,可能带有非中间连字符 |
$名称2 |
$标签([-_]$标签)* |
名称,不允许使用非中间连字符 |
$注释名 |
$name2(\(.*\))? |
带有可选括号注释的名称 |
$短名称 |
[A-Z]{0,3} |
“”“O”“WA”“WAE” |
$代码点 |
(10|$hexDigit)$十六进制数字{4} |
“00A0”、“E0100”、“10FFFF” |
$code点数 |
$codePoint(\s$codePoint)* |
1到n个代码点的空格分隔列表 |
$codePoint0 |
($codePoints)? |
0到n个代码点的空格分隔列表 |
中列出的正则表达式表21盖其他属性值的所有简单情况。对于属性包含一些更不规则的值,例如年龄,ISO_注释、和Unicode_1_名称,有关验证的详细信息,请参阅[UAX42型].
表21。其他属性值的正则表达式
阿贝尔 |
姓名 |
Regex允许值 |
无价值 |
数值 |
/$十进制/ |
字段2 |
/$可选十进制/ |
字段3 |
/$理性/ |
黑色 |
阻止 |
/$名称2/ |
供应链 |
脚本 |
糖尿病 |
分解映射(_M) |
/$code点数/ |
FC_NFKC公司 |
FC_NFKC_关闭 |
NFKC立方英尺 |
NFKC_折叠 |
/$codePoint0/ |
囊性纤维变性 |
箱子_折叠 |
/$code点数/ |
信用证 |
小写_映射 |
总胆固醇 |
标题栏_映射 |
加州大学 |
大写_映射 |
标准立方英尺 |
简单机箱折叠 |
/$code点/ |
slc公司 |
简单_小写_映射 |
机顶盒 |
简单标题集映射 |
苏克 |
简单_大写_映射 |
bmg公司 |
Bidi_镜像_Glyph |
/$code点/ |
业务流程图 |
Bidi_支架 |
/$code点/ |
EqUIdeo公司 |
等价统一象形字 |
/$code点/ |
纳 |
姓名 |
/$名称/ |
姓名_别名 |
姓名_别名 |
-- |
命名序列的名称* |
钠1 |
Unicode_1_名称 |
/$注释名/ |
JSN公司 |
Jamo_Short_姓名 |
/$短名称/ |
*Unicode命名字符序列构成一个字符串值枚举字符串集(给定名称的实际序列)的属性。它们遵循与Name和Name_Alias相同的语法属性值和构成同一命名空间的一部分。
某些属性(例如kGuangeon的Script_Extensions)具有属性值,每个值由一组元素值组成。在数据文件中,这些元素值用空格隔开。通过第一次拆分来验证属性值每个设置为空间中的元素值,然后验证每个元素值个别地。例如,Script_Extensions的元素是脚本属性;根据脚本属性。另见第5.7.6节值为值集的属性.
Name_Alias属性的值由一组或更多的名称字符串。在该属性的数据文件中,每个元素值都出现在一个单独的行,并且可以被验证为一个单独的元素。
在Unicode标准中,术语折旧有点用与其他一些标准不同。折旧用于表示强烈建议不要使用字符或其他功能。然而,这不应被视为表明从标准中删除,也没有任何内容计划用于拆卸根据标准。任何此类更改都受到Unicode联盟稳定性政策[稳定性].
对于Unicode字符数据库,有两种重要类型值得注意的折旧。首先,一个编码字符可能是已弃用。第二,a字符属性可能已弃用。
当强烈建议不使用编码字符时给定属性值Deprecated=True。这个已弃用财产是一个二进制属性,专门定义用于携带有关Unicode字符。很少有字符是正式的以这种方式弃用;一个字符不常见、过时、,不喜欢或不喜欢。只有那些曾经UTC确定存在严重的架构缺陷或已确定会导致重大实施问题曾经被否决过。即使在最严重的情况下,例如不推荐使用的格式控制字符(U+206A..U+206F),一种编码字符是从未从标准中删除。此外,尽管已弃用强烈建议不要使用字符,在支持其他更合适的机制可以发生在数据中。Unicode过程的一致性实现,如Unicode规范化必须正确处理甚至不推荐使用的字符。
在Unicode字符数据库中,字符属性可以也变得非常沮丧——通常是因为它不再用于最初定义的目的。在这种情况下属性在中标记为“已弃用”表9,属性表.例如,请参见图形_链接属性。不建议使用不推荐的属性在支持Unicode字符属性的公共API中公开。
Unicode标准没有规定可能定义的API的确切形式在软件库中向应用程序显示Unicode字符属性。然而,这里是否需要遵循一些建议和一般准则,以减少潜在的混淆,并使用Unicode字符数据库。
在接下来的讨论中,术语API程序是用于指代特定的函数或方法,而术语API集合用于引用一组相关的API,这些API可能构成一组函数从库、类定义或其他相关功能组导出。还区分了公共API,用于一般用途应用程序使用,以及专用API,可以隐藏在库中或类,用于内部使用。
首先,如果API显示特定Unicode字符属性的值和主旨该值表示Unicode字符属性,它应该遵循UCD中该属性的规范。该原则遵循Unicode标准一致性的一般方法:如果您说它是Unicode,那么它应该遵循Unicode标准规范。
其次,API应该清楚它的UCD版本支架。例如,可以通过外部文档或包含在源代码中的头文件、类定义注释等。对于API集合,更好的选择是包含一个API,该API显式地报告支持哪个版本的UCD。这一规定应减少对特定财产的混淆可能在不同版本的Unicode标准之间更改的值,以及它明确了要涵盖哪些编码字符的曲目。有API支持无原则约束不止一个UCD版本,只要因为它是如何做到这一点的。
第三,尽管API上没有约束声明它仅支持指定的Unicode字符子集,这是通用的最佳实践字符属性API的目的是支持整个Unicode范围代码点,为任何有效的Unicode提供行列式和有良好文档记录的属性值代码点输入。这包括为提供正确的默认属性值任何未分配的代码点。请参阅第2.2节,默认值的使用来解释这个概念。
第四,不排除Unicode字符属性API扩展或调整其对字符属性的支持,只要这样行为有明确的文档记录,以便应用程序了解它们的价值将通过调用API获得。例如,API可能会出现扩展的新属性,如IsDanda,它不是UCD指定的属性,但可以从Unicode标准的文档。支持特定Unicode换行算法的裁剪可以进行曲面裁剪支持该行为的Line_Break属性值。或者,一个支持特定的私人使用协议可能会出现私人定义的财产用于指定范围的PUA字符。所有此类API的使用都应考虑了使用UCD扩展API集合的一致方法。
支持Unicode字符属性的API集合的设计者必须还要注意,并非所有Unicode字符属性都是相等的。没有明示或暗示的要求全部的Unicode字符属性应在给定的API集合中支持。事实上,一种简单地解析UCD和表面全部的Unicode字符属性逐字为很可能导致糟糕的设计。字符属性需要在设计的各种Unicode算法的上下文中理解以支持。
以下子类型Unicode字符属性通常应不在API中公开,但在有限的情况下除外。它们可能没有用处,尤其是在公共API集合中,可能会被证明对用户具有误导性此类API集合的。
- 贡献属性不建议用于公共API。
- 不建议将Unicode规范化相关属性的子集用于公共API。请参阅第5.7.5节,分解和归一化.
- 不建议将不推荐使用的属性用于公共API。请参阅第5.12节,折旧.
这个年龄属性指示第一个版本指定了特定的Unicode字符。例如,U+20AC€EURO SIGN为添加到Unicode标准的2.1版中,因此其年龄为2.1,而Unicode标准6.0版中增加了U+20B9₹印度卢比标志,所以它的年龄=6.0。
从形式上讲,Age属性是目录财产其枚举值对应于包含的元组列表主版本整数和次版本整数。主要版本是限制在1..255范围内的正整数。次要版本是限制在0..255范围内的非负整数。这些范围限制这样可以保证所有实现都是有效的,分配的Age值可以用两个无符号字节的序列表示。不需要与Unicode更新版本对应的第三个值,因为在的更新版本中从未分配新字符标准。
PropertyValueAliases.txt中列出的简短值分配(指定)代码点的Age属性的格式为“m.n”,第一个字段对应主版本,第二个字段对应到次要版本。
PropertyValueAliases.txt中列出的长值对于指定代码点的Age属性,以开头“V”并使用下划线主版本号和次版本号之间的一个点:V2_1、V6_0,依此类推使长格式作为编程语言中的标识符更加有用。它是在正则表达式中也很有用,其中点具有其他意义。
Age属性的默认值,用于未指定(未指定)的代码点,用偏离数字版本方案的标签表示指定代码点的Age属性;默认值的缩写为“NA”,默认值的长格式为“Unassigned”。解析器的实现需要为这种特殊情况准备Age属性,而不是期望默认值以数字形式表示,例如“0.0”。
Age属性是基于字符在标准中的编码时间。它是规范的和不可变的,并且无法进行有意义的裁剪。
Age属性的最小值为“1.1”,而不是“1.0”,因为由于代码点和Unicode标准和1993年ISO/IEC 10646之间的字符名出版物。对于朝鲜文音节字符在Unicode 2.0中进行了大量扩展,Age值设置为“2.0”,甚至尽管朝鲜文音节的一个子集已在早期版本中发布,在不同的代码点。
专用字符、非字符代码点和代理代码点也会获得“年龄”值。专用字符和非字符代码BMP上的点年龄=1.1。然而,UTF-16和多架飞机的完整架构直到Unicode 2.0才有完整的文档记录,因此私用字符和补充平面上的非字符代码点以及代理D800.DFFF范围内的代码点的值为age=2.0。
Age属性不能从其他属性派生任何单一版本的Unicode字符数据库中的数据文件。它的派生而是通过比较指定字符的工具完成之间后续版本。数据文件派生代理.txt提供了自该版本的标准起,所有代码点的Age属性值。
正则表达式中Age属性的典型用例是搜索存在于给定版本中。因此,像“\p{age=V3_0}”这样的表达式是异常的定义为匹配所有代码3.0版中指定的点,即所有代码点a值小于或等于Age属性的值为3.0,而不是这些代码点的子集的值为3.0。这解释了“\p{age=V3_0}”作为从Unicode 3.0开始分配的所有字符集,而不是作为一组字符补充到Unicode 3.0早期版本。更多信息信息,请参阅Unicode技术标准#18,“Unicode正则表达式”[UTS18标准].
UCD包含许多测试数据文件。它们以标准格式提供数据,可用于测试Unicode算法的实现。测试数据文件随此版本的UCD一起分发,请参见表22.
表22。Unicode算法测试数据文件
文件名 |
规范 |
状态 |
Unicode算法 |
投标测试.txt |
[UAX9系列] |
N个 |
Unicode双向算法 |
Bidi角色测试.txt |
[UAX9系列] |
N个 |
Unicode双向算法 |
规范化测试.txt |
[UAX15型] |
N个 |
Unicode规范化算法 |
换行测试.txt |
[UAX14型] |
N个 |
Unicode换行算法 |
图形BreakTest.txt |
[UAX29型] |
N个 |
图素簇边界确定 |
断字测试.txt |
[UAX29型] |
N个 |
单词边界确定 |
句子BreakTest.txt |
[UAX29型] |
N个 |
句子边界的确定 |
这些测试文件的规范状态反映了其用于确定声明一致性的实现的正确性到表中列出的相应算法。没有要求任何特定的Unicode实现也例如,实现Unicode换行算法,但如果它正确地实现了该算法,应该是能够复制LineBreakTest.txt中的数据项。
此文件包含可用于测试Unicode规范化算法。(参见[UAX15型]和[测试15].)
数据文件的第一个字段中有一个Unicode字符串(可能包括仅针对单个代码点)。接下来的四个字段指定预期的将该字符串转换为Unicode规范化表单的输出结果NFC、NFD、NFKC和NFKD。有许多棘手的边缘情况包含在输入数据中,以确保实现正确实现了Unicode规范化的一些更复杂的细节算法。
NormalizationTest.txt的标题部分提供了其他信息关于任何共形的正规化不变关系实现应该能够复制。
Unicode规范化算法不可定制。一致性实现应该会产生中指定的结果NormalizationTest.txt,不应偏离这些结果。
LineBreakTest.txt,位于UCD的辅助目录中,包含可以使用的数据测试Unicode换行算法的实现。(参见[UAX14型]和[测试14].) 的标题该文件指定数据格式和测试数据的使用指定换行机会。注意,使用了非ASCII字符在此测试数据中用作字段分隔符。
有一个关联的文档文件LineBreakTest.html,它显示以交互式图表形式显示折线算法的结果规则的文档列表。
Unicode文本分段测试数据文件也位于UCD的辅助目录。(参见[测试29].) 他们包含可用于测试分段实现的数据中指定的算法[UAX29型].的标头这些文件指定数据格式和测试数据的使用指定文本分段机会。注意,使用了非ASCII字符在此测试数据中用作字段分隔符。
还有相关文档文件中显示分段算法的结果交互式图表形式,带有规则的文档列表:
- GraphemeBreakTest.html
- 句子中断测试.html
- 断字测试.html
与Unicode规范化算法不同,Unicode换行算法和各种文本分割算法都是可定制的,人们都期望实现可以调整这些根据需要生成结果的算法。测试数据文件仅测试这个违约算法的行为。测试定制的实现需要根据需要修改和/或扩展测试用例以匹配任何记录在案的裁剪。
这些文件包含数据可用于测试Unicode双向算法。(参见[UAX9系列]和[测试9].)
BidiTest.txt中的数据旨在进行全面测试长度小于等于4的字符串的Bidi_Class值的所有可能组合。为了允许产生大量的测试用例,数据文件的格式有些复杂在标题中描述。基本上,对于每个输入字符串和每个可能的输入段落级别,测试数据指定生成的bidi级别和预期的重新排序。
BidiCharacterTest.txt中的数据用于测试各种算法的边缘情况。它包含一个额外的字段,允许显式控制每个测试用例的总体方向上下文。
Unicode双向算法可以在一定范围内进行裁剪。没有裁剪的一致性实现预期会产生如下结果在BidiTest.txt和BidiCharacterTest.txt中指定,不应偏离这些结果。定制实现还可以使用中的数据用于测试总体一致性的测试文件通过将属性赋值更改为字符来反映算法他们剪裁的细节。
本节总结了最近的对UCD的更改,包括其文档文件和按Unicode版本组织。
变更历史中的参考通常是针对公共审查问题(PRI)。请参阅https://www.unicode.org/review/resolved.html有关的详细信息每一种情况。
特定文件中的更改:
更新了适当的现有数据文件,以添加以Unicode 15.1编码的627个新字符。记录最有可能影响实现的主要更改在里面Unicode 15.1.0页面的M部分.编码新字符和不同字符导致的重要数据文件更新下面总结了属性更改,使用的分组方式与Unicode 15.1.0的组件.
请注意,这里没有记录派生和提取数据文件的微小编辑更新和更改。对于新编码字符的预期属性值的常规添加,在本摘要中也没有明确要求。
核心数据
- 方块.txt
- 案例折叠.txt
- 为1FD3、1FE3和FB05添加了S(简单折叠)条目。
- CJK字典.txt
- 删除了162'的条目。
- 使用双撇号约定为激进变体添加了几个条目。
- 派生核心属性.txt
- 添加了新的派生属性Indic_Conjunct_Break(InCB)。
- 派生NormalizationProps.txt
- 添加了新的派生属性NFKC_Simple_Casefold(NFKC_SCF)。
- 换行.txt
- 为大量的Indi脚本添加了新的Line_Break类,匹配UAX#14的更新以支持正交分线音节边界。
- 姓名列表.txt
- 内容全部更新为新字符和注释,交叉引用、副标题和新评论。
- 属性别名.txt
- 添加了新的属性别名:IDSU、ID_Compat_Math_Start、ID_Compat_Math_Continue、,InCB和NFKC_SCF。
- 属性值别名.txt
- 别名为V15_1的15.1值已添加到目录属性Age中。
- CJK_Ext_I值别名已添加到Block特性。
- 添加了五个新的Line_Break属性值别名:AK、AP、AS、VF、VI。
- 为InCB的新值添加了别名。
- 新的二进制属性具有与其他二进制属性相同的默认别名。
- 属性列表.txt
- 将200C、200D、30FB和FF65添加到出资财产Other_ID_Continue,简化标识符相关属性的推导。
- 为ID_Compat_Math_Start和ID_Compac_Math_Continue添加了值。
- 17D4和17D5被添加到Sentence_Terminal。
- 额外的表意文字描述字符被赋予了预期的含义IDS_Binary_Operator属性值,但获得了两个新的表意文字描述字符新的IDS_Unary_Operator属性值。
- 脚本扩展.txt
- 一些吠陀梵语标记和北印度数字字符被添加到许多印度文字共享的大集合中。
Unihan数据库(Unihan.zip)
- Unihan_DictionaryIndices.txt(统一定义索引.txt)
- 新增临时kSMSZD2003Index属性,约11000条记录。
- 在临时kMorohashi财产中增加了约35000份记录。
- 更改了大约4000个临时kMorohashi属性值。
- 删除了临时kIRGDaiKanwaZiten财产及其记录。
- 统一词典LikeData.txt
- 新增临时kMojiJoho地产,约53000条记录。
- 向临时kFourCornerCode属性添加了大约650条记录。
- 向临时kPhonetic属性添加了一条记录。
- 在临时kStrange属性中添加了大约60条记录。
- 更改了七个临时kStrange属性值。
- Unihan_IRGSources.txt文件
- 为新的中日韩统一汉字扩展I块中的字符添加了kIRG_GSource、kRSUnicode和kTotalStrokes记录,其中包括新的“GIDC23-”前缀。
- 向kIRG_KPSource属性添加了三条新记录。
- 向kIRG_TSource属性添加了四条新记录。
- 向kIRG_USource属性添加了两条新记录。
- 向kIRG_VSource属性添加了六条新记录。
- 更改了一个kIRG_GSource属性值。
- 更改了四个kIRG_KPSource属性值。
- 更改了两个kIRG_VSource属性值。
- 更改了大约225 kRSUnicode属性值。
- 更改了大约275 kTotalStrokes属性值。
- 从kIRG_KPSource属性中删除了三条记录。
- 从kIRG_USource属性中删除了一条记录。
- Unihan_NumericValues.txt格式
- 添加了临时kVietnameseNumeric属性和50条记录。
- 新增临时kZhuangNumeric属性,共13条记录。
- 向临时kOtherNumeric属性添加了八条新记录。
- 向临时kPrimaryNumeric属性添加了三条新记录。
- 更改了一个临时kPrimaryNumeric属性值。
- 从临时kAccountingNumeric属性中删除了一条记录。
- Unihan_OtherMappings.txt(Unihan_OtherMappings.txt)
- 向临时kBigFive属性添加了两条新记录。
- 删除临时kHKSCS、kKPS0、kKPS1、kKSC0和kKSC1属性及其记录。
- Unihan_RadicalStrokecounts.txt格式
- Unihan_阅读.txt
- 增加了临时kJapanese财产,约有52000条记录。
- 新增临时kSMSZD2003Readings属性,约8000条记录。
- 在临时kGuangdong财产中增加了大约125条新记录。
- 向临时kDefinition属性添加了大约350条新记录。
- 向临时kXHC1983属性添加了大约250条新记录。
- 更改了大约20个临时kGuangeon属性值。
- 更改了大约150个临时kDefinition属性值。
- 更改了大约150个临时kXHC1983属性值。
- 从临时kDefinition属性中删除了一条记录。
- 从临时kXHC1983财产中删除了大约200条记录。
- Unihan_变量.txt
- 向临时kSemanticVariant属性添加了大约15条新记录。
- 向临时kSimplifiedVariant属性添加了大约50条新记录。
- 向临时kSpecializedSemanticVariant属性添加了六条新记录。
- 更改了大约125个临时kSemanticVariant属性值。
- 更改了11个临时kSimplifiedVariant属性值。
- 更改了两个临时的kSpecializedSemanticVariant属性值。
- 更改了大约60个临时kTraditionalVariant属性值。
- 从临时kTraditionalVariant属性中删除了两条记录。
UAX#45数据
- U源数据.txt
- 为新的UTC源表意文字添加了39条新记录。
- 添加了“ExtI”(Extension I)状态值。
- 将单字母状态值“N”、“V”、“W”和“X”更改为更具描述性的“FutureWS”、“Variant”、“Rejected”和“NoAction”状态值。
- 更新了各种记录的状态值,以便删除“UK-2015”和“WS-2017”状态值。
- 各种记录被更新,以添加或改进其表意文字描述序列。
- USourceGlyphs.pdf
- USourceData.txt中引入的39个新UTC-Source象形文字添加了符号。
- USourceRS图表.pdf
提取的数据
没有要突出显示的特定项目。
一致性测试数据
没有要突出显示的特定项目。
UAX#14和UAX#29的辅助数据
- 句子中断属性.txt
- 对于,许多前缀连接标记从sb=Format更改为sb=Numeric与数字一起使用可以更好地打破边界。
- 分词属性.txt
- 许多附加的串联标记从wb=Format更改为wb=Numeric,用于与数字一起使用可以更好地打破边界。
- 换行测试.txt
- 断行测试用例被显著扩展,以处理扩展LB算法处理正交音节中断。
辅助数据文件
没有要突出显示的特定项目。
Emoji数据
没有要突出显示的特定项目。
特定文件中的更改:
更新了适当的现有数据文件,以添加4489个以Unicode 15.0编码的新字符。记录最有可能影响实现的主要更改在里面Unicode 15.0.0页的M部分.编码新字符和不同字符导致的重要数据文件更新下面总结了属性更改,使用的分组方式与Unicode 15.0.0的组件.
请注意,这里没有记录派生和提取数据文件的微小编辑更新和更改。对于新编码字符的预期属性值的常规添加,在本摘要中也没有明确要求。
核心数据
- 方块.txt
- 增加了七个新块,其中六个分配在补充多语言平面中,还有一个在第三意识形态层面。其中包括两个新的15.0-Kawi和Nag Mundari版本中的编码脚本。
- 埃及象形文字格式控件的块范围已扩展到末尾1345F,而不是1343F。
- 索引位置类别.txt
- 0953和0954从InPC=Top中删除。
- InPC=Top中添加了五个克耶李元音符号A926..A92A。
- 索引音节分类.txt
- 增加了关于0A71 GURMUKHI ADDAK的澄清。
- 0AFB GUJARATI SIGN SHADDA已从InSC=Cantillation_Mark更改为InSC=宝石标记。
- 关于婆罗门加入数字类的注释被扩展。
- 换行.txt
- 双音调符号1DCD和1DFC从lb=CM改为lb=GL。
- 2057 QUADRUPLE PRIME从lb=AL更改为lb=PO。
- 名称别名.txt
- 为0019添加了一个类型缩写的正式名称别名。
- 为0616和1BBD添加了两个类型更正的正式名称别名。
- 姓名列表.txt
- 内容全部更新为新字符和注释,交叉引用、副标题和新评论。
- 属性值别名.txt
- 别名为V150的150值被添加到目录属性Age中。
- 为新的“脚本”和“块”特性值添加了别名。
- 删除了Bidi_Mirroring_Glyph的冗余@缺失行,等效统一象形字、NFKC_Casefold和Script_Extensions。
- 属性列表.txt
- 两个藏语bindus,0F82..0F83,被添加到Other_Alphabetic。
- 添加了几个被忽略的修饰字母10FC、A7F2..A7F4和AB69到Other_Lowercase,以与其他修饰字母保持一致。
- 标准化变量.txt
- 94个标准化变异序列被添加到埃及象形文字符号。
- 增加了4个标准化变异序列,用于埃及象形文字失去了符号。
Unihan数据库(Unihan.zip)
- Unihan_DictionaryIndices.txt(统一定义索引.txt)
- 添加了一个新的kCheungBauerIndex记录。
- 为kCihaiT属性添加了大约14000条记录(从Unihan_DictionaryLikeData.txt中删除)。
- 更改了两个kDaeJaweon属性值。
- 从kIRG_GSource和kIRGKangXi属性派生的kKangXi属性中添加了大约50000条新记录,更改了大约250 kKangXi属性值,删除了大约30条属性值无意义的记录。
- 删除了具有无意义属性值的kMorohashi属性的大约300条记录。
- 统一词典LikeData.txt
- 添加了带有大约100条记录的kAlternateTotalStrokes属性。
- 删除了kCihaiT属性的大约14000条记录(移至Unihan_DictionaryIndices.txt)。
- 更改了极少数kHKGlyph属性值。
- 删除了kPhonetic属性的大约400条记录。
- Unihan_IRGSources.txt文件
- 在kIRG_GSource属性中添加了“GXM-”和“GZA-”前缀以及新记录。
- 在kIRG_TSource属性中添加了“T12-”前缀以及新记录。
- 将新记录添加到kIRG_HSource、kIRG_ KSource和kIRG _USource属性中。
- 由于不统一,更改了单个kIRG_VSource属性值。
- 更改了极少数kRSUnicode和kTotalStrokes属性值。
- 移动了单个kIRG_UKSource源引用。
- 为添加到CJK Unified Ideographs Extension C块的单个新字符添加了IRG源数据、kRSUnicode和kTotalStrokes记录。
- 为新编码的CJK Unified Ideographs Extension H块中的字符添加了IRG源数据、kRSUnicode和kTotalStrokes记录。
- Unihan_RadicalStrokecounts.txt格式
- Unihan_阅读.txt
- 更改了约150个粤语属性值,并添加了约150个新的粤语记录。
- 更改了大约800 kDefinition属性值,并添加了大约1500条新的kDefinity记录。
- 更改了单个kVietnam属性值,并添加了少量新的kVietnames记录。
- Unihan_变量.txt
- 更改了少量kSemanticVariant属性值,并添加了大约100条新的kSemantiVariant记录。
- 更改了极少量的kSimplifiedVariant属性值,并添加了大约400条新的kSimpleifiedVAriant记录。
- 更改了少量kSpecializedSemanticVariant属性值,并添加了更少数量的新kSpecialisedSemanicVariant记录。
- 删除了极少数kSpoofingVariant记录。
- 更改了大约400 kTraditionalVariant属性值,并添加了少量新的kTraditionalVariant记录。
- 添加了少量新的kZVariant记录,删除了更少的kZVariant记录。
UAX#45数据
- U源数据.txt
- 为新的UTC-Source象形文字添加了59个新条目。
- 更新了各种条目,以反映它们作为CJK扩展H的一部分的编码。
- 各种CJK扩展的状态字段值都已从单个字母更改值转换为四个字母的值(“A”→“ExtA”等),如UAX#45中所述。
- USourceGlyphs.pdf
- USourceData.txt中引入的59个新UTC-Source象形文字添加了符号。
- USourceRS图表.pdf
提取的数据
- 派生BidiClass.txt
- 添加了多个@missing行,以处理所有默认值范围分配。
- 删除了以前显式分配给未分配代码点的值,因为它们现在是多余的。
- 派生换行.txt
- 添加了多个@missing行,以处理所有默认值范围分配。
- 删除了以前显式分配给未分配代码点的值,因为它们现在是多余的。
一致性测试数据
没有要突出显示的特定项目。
UAX#14和UAX#29的辅助数据
- 句子中断属性.txt
- OLetter中更改了几个修饰字母(10FC、A7F2..A7F4和AB69到Lower,这是将它们添加到Other_Lowercase的结果。
辅助数据文件
没有要突出显示的特定项目。
Emoji数据
没有要突出显示的特定项目。
Mark Davis和Ken Whistler是最初版本的作者,并在和中添加了保留本附件的文本。劳伦·伊恩库协助在版本6.3.0到13.0.0的UCD更改文档中。Ken Lunde和John Jenkins协助在Unihan版本更改文档中13.0.0到15.0.0,Ken Lunde继续这项工作用于版本15.1.0。Julie Allen和Asmus Freytag提供了社论对课文改进的建议。多年来,许多UTC成员参与了UCD的审查及其文件。
有关本附件的参考,请参阅Unicode标准附件#41,“通用Unicode标准附件参考."
以下总结了之前版本的修改附件。
修订版32[KW]
先前版本的修改在相应版本中列出。
©2023 Unicode,Inc.保留所有权利。Unicode码联合体不做任何形式的明示或暗示保证,不对错误承担任何责任或遗漏。对于与以下事项相关的附带和间接损害不承担任何责任或因使用本技术文件中包含或附带的信息或程序而产生的报告。Unicode码使用条款适用。
Unicode和Unicode徽标是Unicode,Inc.的商标在某些司法管辖区注册。