[统一码] 技术报告
 

Unicode®标准附件#44

Unicode字符数据库

版本 Unicode 15.1.0码
编辑 肯·惠斯勒(ken@unicode.org)
日期 2023-09-06
此版本 https://www.unicode网站.org/reports/tr44/tr44-32.html
上一版本 https://www.unicode.org/reports/tr44/tr44-30.html
最新版本 https://www.unicode.org/reports/tr44/
最新建议更新 https://www.unicode.org/reports/tr44/poposed.html网站
修订 32

总结

本附件提供了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。

1介绍

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变更历史

2一致性

Unicode字符数据库是Unicode标准的组成部分。

UCD包含以下方面所需的规范性属性和映射信息各种Unicode算法的实现,如Unicode双向算法、Unicode规范化和Unicode Casefolding。数据文件也包含附加的信息性和临时字符属性信息。

Unicode算法的每个规范,无论是否在[Unicode码]或使用Unicode之一标准附件,指定UCD中需要哪些数据文件提供该算法所需的规范性属性信息。

有关术语含义和应用的信息,规范性的,信息丰富的,出资人、和临时的,请参阅第3.5节,属性英寸[Unicode码].

有关适用的使用条款的信息UCD,请参阅Unicode使用条款

2.1简单属性和派生属性

2.1.1简单属性

UCD中的一些字符属性是简单属性。此状态与属性是否规范,但仅表明其价值不是从其他属性的某些组合中派生的。

2.1.2派生属性

导出其他字符属性。这意味着它们的值是根据规则从其他值中导出的属性的组合。一般来说,这些规则是表示为集合操作,可以包括也可以不包括单个字符的显式异常列表。

某些简单属性仅定义为使定义派生的性质更紧凑或更一般。这些属性是称为供款财产有时,这些辅助属性被定义为封装异常中固有的混乱列表。在其他时候,分摊财产可以定义以帮助稳定一个受稳定性约束的重要导出性质担保。

不考虑派生字符属性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中的文件,以及派生的属性作为集合定义规则数据文件中的列表应该总是被占领作为财产的规范性定义。如前所述在里面释放的稳定性财产在任何给定版本的数据文件中列出该版本的标准将永远不会改变。

2.1.3取决于外部规范的属性

在有限的情况下,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使用的表情符号属性依赖已正式注册从而使它们不再构成外部依赖。

外部依赖项可能会影响简单属性或派生属性。

2.2默认值的使用

Unicode字符属性具有默认值。违约值是字符属性采用的一个或多个值对于未分配的代码点,或在某些情况下,对于代码点的指定子范围,无论是指定的还是未分配。例如,二进制文件的默认值Unicode字符属性始终为“N”。

有关默认值的正式讨论,请参阅中的D26第3.5节,属性英寸[Unicode码].用于与各种数据文件中的默认值相关的约定UCD和有关特定默认值的文档单个Unicode字符属性,请参见默认值

2.3释放的稳定性

正如整个Unicode标准一样UCD一旦发布,将绝对稳定从未更改。每个发布的版本都存档在上的目录中Unicode网站,带有与那个版本。指向该版本目录的URL也稳定并将永久保持。

为UCD的发布版本发现的任何错误在中注明[勘误表],如果合适,将在后来的UCD的版本。

稳定性保证了限制Unicode字符的方式属性可以(或不能)在UCD版本之间更改记录在Unicode Consortium Stability中政策[稳定性].

2.3.1发布之间对特性的更改

可能需要更新Unicode字符数据库中的字符属性出于以下三个原因之一:

  1. 涵盖添加到标准中的新字符
  2. 向标准中添加新的字符特性的步骤
  3. 为标准中已有的某些字符更改特性的指定值

虽然Unicode联盟努力保持所有在不同版本之间,字符属性尽可能稳定,偶尔也会出现这种情况可能会出现需要更改的情况。特别是,作为文档不太完善的脚本当标准中增加了少数民族语言或历史文字时当脚本首次编码时,字符属性和行为可能并不完全已知。这些字符的属性可能会随着进一步信息的变化而变化可用或当实现在初始属性分配中出现问题时。尽可能根据不断增长的实施经验与既定实践相兼容。

规范性或信息性属性值、状态的所有更改或属性的类型,或属性或属性值别名,必须由批准Unicode技术委员会做出的明确决定。临时变更房地产价值受到的监管不那么严格。

有时,会更改字符属性值以防止不正确的泛化关于基于其标称属性值的字符使用。例如,U+200B ZEROWIDTH SPACE最初被归类为空格字符(General_Category=Z),但它被重新分类为格式字符(General_Category=Cf),以便与空格字符明确区分在其作为换行格式控件的功能中。

无法保证枚举属性将实际具有与其关联的字符。此外,因为标准版本之间属性值赋值的更改曾经具有与之关联的字符的属性值以后可能没有。这样的条件和更改很少,但实现不能假设所有属性值都与非null关联字符集。例如,当前特殊的Script属性值片假名_Or_Hiragana没有与之关联的字符。

2.3.2过时的属性

在某些情况下,整个属性可能会过时的例如ISO_注释属性曾用于保存用于生成姓名列表的字符注释的跟踪ISO/IEC 10646代码表。截至Unicode 5.2.0,该属性已过时,对于所有Unicode代码点,其值现在默认为空字符串。

过时的属性永远不会从UCD中删除。

2.3.3不推荐的属性

有时,过时的属性也可能是正式的已弃用。这表明不再建议使用该属性使用,可能是因为它的原始意图已被另一个属性取代或者因为它的规格有缺陷。另请参见一般性讨论折旧

从不从UCD中删除已弃用的属性。

表1列出自以下日期起正式弃用的属性此版本的Unicode标准。

表1。不推荐的属性

物业名称 弃用版本 原因
图形_链接 5.0.0 ccc=9的重复
连字符 6.0.0 由Line_Break属性值补充
ISO_注释 6.0.0 不再需要用于图表生成;否则就没用了
展开(_NFC) 6.0.0 不如UTF特定计算有用
展开_On_NFD 6.0.0 不如UTF特定计算有用
展开_On_NFKC 6.0.0 不如UTF特定计算有用
展开(_NFKD) 6.0.0 不如UTF特定计算有用
FC_NFKC_闭合 6.0.0 在使用中由补充NFKC_底座; 否则就没用了

 

2.3.4稳定特性

另一种可能性是过时的属性可能是宣布为稳定的。该决定并不表明应使用或不应使用该财产;相反,它是一个声明UTC(Unicode技术委员会)将不再积极维护该属性或将其新扩展编码字符。的属性值稳定的属性在标准的特定版本中被冻结。

稳定的特性永远不会从UCD中移除。

表2列出了自以下日期起正式稳定的属性此版本的Unicode标准。

表2。稳定特性

物业名称 稳定版本
连字符 4.0版本
ISO_注释 6.0.0

 

文档

本附件提供了UCD的核心文件,但有关字符属性的其他信息,请参阅标准的其他部分和附加文档文件包含在UCD中。

3.1标准中的字符属性

与所用字符属性相关的形式定义Unicode标准的第3.5节,属性英寸[Unicode码].理解这些定义和相关术语是对正确使用Unicode字符属性至关重要。

请参见第4.1节,Unicode字符数据库,英寸[Unicode码]对于一个将军讨论了UCD及其在定义属性中的应用。这个第4章的其余部分提供了关于各种规范字符属性的含义和用法。

3.2字符属性模型

关于作为基础的财产模型的一般性讨论与UCD相关的定义,请参见Unicode技术报告#23,“Unicode字符属性模型”[德国标准23].那份技术报告内容丰富,但多年来各种各样其内容已纳入规范部分Unicode标准的定义,特别是第3章。

UTR#23显示了重要区别在为字符串定义的属性之间(与为字符或代码点)和具有字符串值的字符属性。后者被称为字符串值属性在UTR#23中以及本附件中。UTR#23还讨论了字符串函数及其与字符属性。

3.3名称列表.html

NamesList.html正式描述了BNF中NamesList.txt数据文件的格式。该数据文件用于驱动PDF格式Unicode代码表和名称列表的。另请参见第24.1条,字符名称列表,英寸[Unicode码] 有关Unicode名称列表中使用的约定的详细讨论,请参见为联机代码图表格式化。

3.4标准化变量.html

StandardizedVariants.html已过时自UCD 9.0版起。此文件以前是记录的标准化变体,显示每个符号的代表符号。它与数据文件紧密相连,StandardizedVariants.txt,它规范地定义了这些序列。

StandardizedVariants.html显示代表性的功能标准化变体的符号已被取代。现在有更好的方法图示符号。显示了许多标准化的变异序列直接在Unicode代码表中,在包含它们的任何块的名称列表。标准化变体的符号兼容CJK的象形文字也直接以Unicode显示代码图表。

3.5表情符号变异序列

表情符号变异序列是一类特殊的变异包含表情符号字符的序列。它们分为两个子类型:一个表情符号表示序列,由后面的表情符号字符库组成通过变量选择器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标准].

3.6Unihan和UAX#38

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中列出。

3.7UTC-Source象形字和UAX#45

Unicode标准附件#45,“U源象形字”[UAX45型]描述了USourceData.txt的格式,其中列出了UTC-Source象形文字的所有信息。

3.8数据文件注释

除了UCD的特定文档文件外,个别数据文件通常包含大量的标题注释,描述其内容以及数据中使用的特殊约定。

在某些情况下,个人财产定义部分还包含关于属性如何可以导出。此类评论具有信息性;而它们是预定的以传达推导意图,以防两者之间出现任何不匹配注释字段中的派生语句和实际派生属性的列表,则该列表被视为确定的。请参见简单属性和派生属性

3.9过时的文档文件

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

4UCD文件

UCD的核心由数据文件本身组成。本节描述了UCD的目录结构、格式约定并为未记录的数据文件提供文档本附件其他部分。

4.1目录结构

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网站上的目录。

4.1.1UCD文件正确

UCD本体位于ucd公司编号版本的子目录目录。该目录包含所有文档文件和大多数UCD的数据文件,包括派生属性的一些数据文件。

尽管所有UCD数据文件都是特定于版本的版本,并且大多数包含内部日期和版本戳,则发布的数据文件的文件名不会版本不同。链接到特定于版本的数据文件时版本将由版本目录的版本号指示。

派生提取特性的所有文件都位于提取的子目录ucd公司子目录。请参见派生的提取属性对于有关这些数据文件及其内容的文档。

辅助的的子目录ucd公司子目录。它包含数据文件指定与Unicode标准附件#29,“Unicode文本分割”[UAX29型]Unicode标准附件#14,“Unicode换行算法”[UAX14型],以及这些算法的测试数据。请参见分段测试文件和文档有关测试数据的更多信息。

与表情符号属性关联的某些数据文件被维护在中表情符号的子目录ucd公司子目录。那些数据文件定义与表情符号字符相关联的简单字符属性,以及表情符号变异序列。与关联的其他数据文件表情符号,包括定义各种RGI(“建议用于通用互通式立交”)集合表情符号序列的类型以及表情符号测试数据保存在其他地方,并且不被正式视为UCD的一部分。请参见[UTS51标准]获取有关这些数据文件及其内容的文档。

4.1.2UCD XML文件

UCD的XML版本位于ucdxml的子目录编号的版本目录。请参阅XML中的UCD对于更多详细信息。

4.1.3图表

特定于Unicode版本的代码表已存档作为中的单个大PDF文件图表的子目录编号版本目录。查看该子目录中的readme.txt以及解释Unicode代码表对于更多细节。

4.1.4Beta审查注意事项

在正式发布UCD版本之前,起草文件在名为草案,在/公共Unicode服务器上的目录。此中的文件目录可能包括临时文件,包括以下内容之间差异的文档草稿版本。评论数量不固定-测试版评论将总是会发生,但alpha审查是可选的。

中ReadMe.txt文件中包含的通知草稿/UCD目录期间beta审查期还明确指出,该目录包含正在审查初步材料,而不是最终的稳定版本。

4.1.5早期版本的文件目录差异

这个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此外,对于这些早期版本,数据文件名包含显式版本数字。

4.2文件格式惯例

UCD中的文件使用中描述的格式约定本节,除非另有规定。

4.2.1数据字段

4.2.2代码点和序列

4.2.3代码点范围

4.2.4评论

4.2.5代码点标签

表3。代码点标签标签

标签 常规_类别 注释
保留 抄送 非字符代码点=F
非字符的 抄送 非字符代码点=T
控制 复写的副本  
私人用途 有限公司  
代理  

 

4.2.6一个数据文件中有多个属性

4.2.7二进制属性值

4.2.8属性的多个值

4.2.9默认值

通用目录、枚举和数字属性列在表4,沿具有异常的二进制属性Extended_Pictographic。下表提供了进一步的解释,见默认值为如第三列所示,它们是复杂的。

表4。属性的默认值

物业名称 默认值 复杂?
年龄 未分配(=NA)
Bidi_类 五十、 AL、R、BN、ET 是的
无块(_B)
标准组合类 未重新排序(=0)
分解_类型
东部_亚洲_宽度 中性(=N),宽(=W) 是的
扩展_图片 N(=假),Y(=真) 是的
常规_类别 抄送
折线(_B) 未知(=XX),ID,PR 是的
数字类型
数值 NaN公司
脚本 未知(=Zzzz)
垂直_方向 旋转(=R),垂直(=U) 是的

4.2.9.1复杂默认值

复杂默认值是指具有多个值的,视情况而定代码点范围或其他条件。复杂默认值,而不是“@missing”行在相关属性文件中明确列出,实例除外在本节中说明。这意味着解析器从UCD不应遇到属性的默认值不明确的情况对于特定的代码点尚不清楚。

4.2.10@缺少约定

带有关键字“@missing”的特殊格式注释行是用于定义未明确列出的代码点范围的默认属性值在数据文件中。这些行遵循常规惯例机器可读。

@missing行以注释字符“#”开头,后跟一个空格,然后是“@missing”关键字,后面是冒号、另一个空格、代码点范围和分号。然后行通常以分号分隔的一个或多个列表继续默认属性值。例如:

#@missing:0000..10FFFF;未知

通常,后面是代码点范围和分号分隔的列表与数据文件中出现@missing行的语法约定相同,因此任何解释该数据文件的解析器都可以很容易地适应解析并解释@missing行以获取代码点的默认属性值。

@文件中的许多属性也提供了缺失的行属性值别名.txt。在这种情况下,因为其中有许多@缺失行单个数据文件,该文件中的每个@缺失行使用语法模式codepointrange;属性名称;默认rop_val。

从不为二进制属性提供@缺失行,因为二进制属性的默认值始终为“N”,无需冗余定义对于每个二进制属性。

因为在PropertyValueAliases.txt中包含@missing行时添加属性名称,目前有两种语法模式用于@missing行,如概括如下:

  1. 代码点范围;默认提升值
  2. 代码点范围;属性名称;默认提升值

在这个示意图中,“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定义的值。此约定允许通用首先为整个Unicode码位范围指定默认值,然后是其他特定的默认值,用于更受约束的特定子范围。这使得处理方式易于理解和维护复杂的默认值,如Bidi_Class或Line_Break属性。(请参见复杂默认值.)以下East_Asian_Width的简单示例,摘自DerivedEastAsianWidth.txt说明了这种机制:

#@缺失:0000..10FFFF;中性#@missing:3400..4DBF;#@missing:4E00..9FFF;#@missing:F900..FAFF;#@missing:20000..2FFD;#@缺失:30000..3FFFD;

多个@missing行的解析实现单个属性很简单。每次遇到@missing行时,只需将给定的默认值指定给指定的范围。用这个策略,每个连续的@missing行将自动覆盖任何给定子范围的先前赋值。

4.2.11空字段

数据文件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映射为其自身的默认值。

4.2.12文本编码

4.2.13线路终端

4.2.14其他约定

4.2.15其他文件格式

4.3文件列表

与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象形文字的正式参考列表,以及有关他们的地位和来源。
美国资源Glyphs.pdf [UAX45型] 包含每个UTC-Source象形文字的代表符号的表格。
USourceRS图表.pdf [UAX45型] UTC-Source所有表意文字的激进中风指数。
TangutSources.txt文件 第18章 N个 指定的标准源映射西夏象形文字和部件。此数据该文件还包含用于编制Tangut区块的代码图。
kTGT_合并Src:到各种Tangut源引用的标准源映射
kRST尼科德:提供信息的根行程值
NushuSources.txt文件 第18章 N个 指定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.4压缩文件

从4.1.0版本开始,所有UCD文件的压缩版本,数据文件和文档文件都可以在公共/拉链Unicode网站上的目录。每个压缩文件集合都位于在对应于该版本UCD的编号子目录中。

每个版本都提供了两个不同的压缩文件:

这种分叉可以更好地管理特定版本的下载信息,因为Unihan.zip包含所有相关的CJK相关属性信息,而UCD.zip包含UCD的所有其余部分属性信息,适用于那些可能不需要大量CJK数据的人。

从6.1.0版开始,UCD的主版本目录也包含一个副本UCD.zip,方便访问。

在4.1.0版之前的UCD版本中Unihan数据文件(这些版本的数据文件是作为单个大文本文件Unihan.txt发布的)与UCD数据文件位于同一目录中。这些压缩文件只发布用于更新Unihan.txt的UCD版本。

4.5XML中的UCD

从5.1.0版开始,一组XML数据文件也随UCD的每个版本一起发布。那些数据文件使导入和处理UCD属性数据成为可能,使用标准XML解析工具,而不是UCD的各种单独数据文件。

4.5.142号UAX

Unicode标准附件#42,“XML格式的Unicode字符数据库”[UAX42型] 定义XML架构用于合并所有Unicode字符属性信息到UCD的XML版本中。有关关于的属性值分组的模式和约定更紧凑的表示。

4.5.2XML文件列表

UCD的XML版本包含在ucdxml子目录UCD的。这些文件都是压缩的。文件列表如所示表6

表6。XML文件列表

文件名 中日韩 非CJK
ucd.all.扁平.zip x个 x个
ucd.all.grouped.zip文件 x个 x个
ucd.nounihan.扁平.zip   x个
ucd.nounihan.grouped.zip网址   x个
ucd.unihan.扁平.zip x个  
ucd.unihan.分组.zip x个  

“平面”文件版本只列出所有属性,没有特殊压缩。“分组”文件版本应用中描述的分组机制[UAX42型]以减小数据文件的大小。

5属性

本节记录Unicode字符属性,并将其关联详细到指定它们的特定UCD数据文件。特别是对于枚举属性,本节还记录了这些属性可以具有的实际值。

5.1财产索引

表7提供了Unicode字符属性的摘要列表,不包括大多数特定于Unihan的数据文件[统汉字]. 对于可比较的CJK字符属性索引,见Unicode标准附录38,“Unicode Han数据库(Unihan)”[UAX38型].

这些属性大致分为几个组根据他们的使用情况。此分组主要是为了方便文档和除了供款财产,没有规范含义。贡献属性包括此索引中显示了一个灰色背景,以便更好地从视觉上区分它们普通(简单或衍生)属性。不推荐的属性和其他属性不建议公开支持API属性也显示了带有灰色背景每个属性上的链接都指向中的描述表9,属性表任何标记为已弃用在这个索引中是也自动考虑过时的

表7。按使用范围划分的财产索引

概述
姓名
姓名_别名
年龄
常规_类别
脚本
脚本_扩展
白色_空格
按字母顺序排列
汉古尔_音节_类型
非字符代码点
默认可忽略代码点
已弃用
逻辑订单异常
变体选择器
案例
大写
小写字母
小写_映射
标题栏_映射
大写字母映射
箱子_折叠
简单_小写_映射
简单标题集映射
简单_用例_映射
简单案例折叠
Soft_Dotted软件
外壳
案例_可忽略
更改_何时_小写
更改_When_Uppercased
更改_何时更改_标题
折叠时的更改
更改_何时映射案例
表情符号
表情符号
Emoji_演示
表情符号_修改器
表情符号_修改器_基础
表情符号_组件
扩展_图片
数字
数值
数字类型
六边形_数字
ASCII_Hex_数字
规范化
标准组合类
分解映射(_M)
成分_排除
完全复合排除
分解_类型
FC_NFKC_关闭(已弃用)
NFC_Quick_检查
NFKC_快速检查
NFD_Quick_检查
NFKD_快速检查
展开(_NFC)(已弃用)
展开_On_NFD(已弃用)
展开_On_NFKC(已弃用)
展开(_NFKD)(已弃用)
NFKC_底座
更改_When_NFKC_Casefold
NFKC_简单案例折叠
造型和渲染
连接控件(_C)
加入_组
联接类型
垂直_方向
东部_亚洲_宽度
前置连接标记
双向
Bidi_类
投标_控制
Bidi_镜像
Bidi_镜像_Glyph
Bidi_支架
投标_带括号_类型
标识符
ID_继续
ID_启动
XID_继续
XID_启动
ID_比较_路径_继续
ID_比较_路径_开始
模式_语法
图案_白色_空格
细分
线路中断(_B)
Grapheme_Cluster_Break(图形_簇_断开)
句子_中断
断字(_B)
中日韩
表意字符
统一_象形字
激进派
IDS_Unary_操作员
IDS_Binary_操作员
IDS_Trinary_操作员
单码_基本_笔划
等价统一象形字
其他
数学
报价_标记
虚线
连字符(已弃用,稳定)
句子_终端
端子_穿刺
音调批评家
扩展器
图形_基础
图形_扩展
图形_链接(已弃用)
Unicode_1_名称
ISO_注释(已弃用,稳定)
区域_指标
指数_连接_断裂
指数_位置_类别
索引_音节_类别
贡献属性
其他_字母
其他默认忽略代码点
其他_图形_扩展
其他ID_开始
其他_ID_继续
其他_小写
其他路径(_M)
其他机箱(_U)
Jamo_Short_姓名

 

5.2关于属性表

表9,属性表指定字符属性列表在UCD中定义。该表为每个数据分为单独的部分UCD中的文件。列出了定义单个特性或少量特性的数据文件首先,后面是定义大量属性:派生核心属性.txt,派生NormalizationProps.txt,属性列表.txt,Unicode数据.txt、和表情符号数据.txt在某些情况下,对于定义了许多属性的这些文件属性表中的条目按类型分组,以便于表达,而不是按字母顺序排列。

表9,属性表每个属性描述如下:

第一列。此列包含每个字符属性的名称在相应的数据文件中指定。财产的任何特殊状态,例如不管是不是过时的,已弃用,或稳定的,也显示在第一列。

第二列。本专栏根据键入表8

表8。属性类型键

属性类型 符号 示例
目录 C类 年龄,区块
枚举 E类 连接_类型,线条_断裂
二元的 B类 大写,White_Space
字符串值 S公司 大写_映射,案例_折叠
数字 N个 数值
其他 M(M) 姓名,Jamo_Short_Name

要更完整地讨论字符属性的类型,包括正式定义,请参阅Unicode技术报告23“Unicode字符属性模型“[德国标准23].

第三栏。此列指示物业状态:N个ormative或信息或C类供词P(P)流浪汉。

第四列。此列提供以下内容的描述属性。这包括有关派生的信息衍生特性,以及对标准中位置的引用详细定义或讨论属性的位置。

在表的部分中Unicode数据.txt, 描述的开头。

对于属性表中的几个条目数据文件只对Unicode字符属性的完整定义起作用。例如,中字段1(名称)中的值UnicodeData.txt未提供名称的所有值所有代码点的属性;Jamo.txt格式也必须使用,以及CJK统一表意文字、Tangut表意文字的Name属性,契丹小字表意文字,女书的表意文字是由规则派生出来的。

任何Unicode字符属性都不应仅用于属性表中描述的基础,而不咨询相关Unicode标准中的讨论。因为Unicode标准曲目中的字符,字符属性在应用中往往不是不言而喻的,即使在从使用规模小得多的遗产来看,属性似乎很熟悉字符编码。

5.3属性定义

本节包含描述每个字符属性并定义其状态的表,按UCD中的数据文件组织。表9提供了Unicode字符属性及其派生的一般描述,和/或其用法,以及指向标准中正式属性定义或附加可以找到有关属性的信息。属性状态列和派生的任何正式语句导出的属性是确定的;然而,表9不提供其他属性的正式定义不应被解释为这样。有关表的列和总体组织的详细信息,请参阅第5.2节关于特性表

表9。属性表

阿拉伯语造型.txt
连接_类型
加入组(_G)
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换行算法”[无人机14].

等效统一象形字.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公司 生产数据(结合简单的案例映射Unicode数据.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+其他_大写

外壳 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个 属性与标准韩语音节的定义一起使用块来定义“Grapheme base”。参见中的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=Yes的字符集Emoji_Modifier=是。请参见[阿联酋29]和[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:
    1. InCB=[S&\p{Indic_Syllabic_Category=Virama}]中的链接器iff C
    2. InCB=[S&\p{Indic_Syllabic_Category=辅音}]中的辅音iff C
    3. InCB=扩展iff C
      [[\p{gcb=扩展}-\p{ccc=0}]
      \p{gcb=ZWJ}
      -\p{Indic_Syllabic_Category=Virama}
      -\p{Indic_Syllabic_Category=辅音}]
    4. 否则,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
展开_On_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字符。
投标_控制 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型].
Soft_Dotted软件 B类 N个 带有“软点”的字符,如j.放在这些字符使圆点消失。一个显式上面的点可以添加到需要,例如立陶宛语。请参见第7.1节,拉丁语英寸[Unicode码].
端子_穿刺 B类 通常标记文本单位末尾的标点字符。
统一_象形字 B类 N个 用于指定标准中统一中日韩象形文字的精确集合。这一套不包括中日韩兼容象形文字(具有规范分解统一中日韩象形文字),以及来自中日韩的字符符号和标点符号块。的类别Unified_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

分解_类型
分解_映射
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=数字,然后数字——该数字的值用字段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开始,此字段不再包含任何非空值。

简单_大写_映射 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标准].

 

5.4派生的提取属性

许多Unicode字符属性被分离出来,重新格式化,并以范围格式列出,每个文件一个属性。这些文件位于提取UCD的目录。派生的提取文件及其提取属性的确切列表表示在中给出表10

提供了派生的解压缩文件主要是为其他数据文件中指定的属性重新格式化数据。对于无故障的属性值,如果有主要数据文件之间的任何意外不匹配指定这些属性和这些提取属性的列表,主要数据文件被视为确定性文件。然而,对于违约属性中,提取的数据文件是确定的。对于属性来说尤其如此其具有多个默认值;这些属性用星号标识在表中。见第4.2.9节,默认值

表10。提取的属性

文件 状态 财产 摘自
派生BidiClass.txt N个 Bidi_类* 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=Canonical为规范性。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。

5.5贡献属性

贡献属性包含在生成从中派生的其他属性。具体涉及的出资财产标识符和套管有助于维护属性和/或不变性关系的稳定性保证相关属性之间。其他出资财产只是定义为便于属性推导。

大多数出资财产的名称使用模式“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 其他_字母 按字母顺序排列
其他默认忽略代码点 默认_Ignorable_Code_Point
其他_图形_扩展 图形_扩展
其他ID_开始 ID_开始,XID_开始
其他_ID_继续 ID_继续,XID_继续
其他_小机箱 小写字母
其他路径(_M) 数学
其他机箱(_U) 大写

贡献属性包括自身不完整,不可单独使用。例如,返回Unicode属性值的API应实现派生的核心属性,如字母或Default_Ignorable_Code_Point,而不是相应的出资财产,Other_Alphabetic或Other_Default_Ignorable_Code_Point。

5.6案例和案例映射

两院制脚本的大小写和字符的大小写映射是Unicode标准中的复杂主题——两者都是因为它们固有的算法复杂性和字符数以及涉及的特殊边缘情况。

本节提供了关于这些问题的简要讨论路线图主题、规范和标准中的定义,以及解释UCD中定义的案例相关属性。

第3.13节,默认情况算法在里面[Unicode码]为许多与案例相关的概念提供了正式定义(装有箱子的,可识别的案例, ...), 对于案例转换(大写(X), ...), 和用于病例检测(大写(X), ...). 它还提供了形式定义标准的无案例匹配,采用标准化考虑在内。

第4.2节,案例在里面[Unicode码]介绍case和case映射属性。表4-3,来源用于案例映射信息英寸[Unicode码]描述了与案例相关的类型UCD各种数据文件中可用的信息。表11再次列出这些数据文件每个中定义的与案例相关的属性的明确列表。每个属性上的链接将其描述引向表9,属性表

表11。UCD文件和案例属性

文件名 案例属性
Unicode数据.txt 简单_大写_映射,简单_小写_映射,简单标题集映射
特殊外壳.txt 大写_映射,小写_映射,标题栏_映射
案例折叠.txt 简单案例折叠,箱子_折叠
派生核心属性.txt 大写,小写字母,外壳,案例_可忽略,更改_何时_小写,更改_When_Uppercased,更改_何时更改_标题,折叠时的更改,更改_何时映射案例
派生NormalizationProps.txt NFKC_折叠,更改_When_NFKC_Casefold
属性列表.txt Soft_Dotted软件,其他_大写,其他_小机箱

为了与现有解析器兼容,仅UnicodeData.txt包含构成一对一映射的字符的大小写映射;它还省略了有关上下文敏感大小写映射的信息。有关的信息这些特殊情况可以在单独的数据文件中找到,SpecialCasing.txt,表示为单独的属性。

第5.18节,案例映射,英寸[Unicode码]讨论处理案件的各种实施问题,包括特定于语言的案例映射,如希腊语和土耳其语。该部分还特别详细地描述了案例折叠。

与希腊案例映射相关的特殊套管条件,土耳其语和立陶宛语在特殊外壳.txt例如希腊语中sigma的小写映射因其位置而异总之。条件列表不构成正式字符属性,因为它是关于发生上下文的语句字符的大小写行为,而不是语义这些字符的属性。来自的UCD版本版本3.2.0至版本5.0.0列出属性别名对于Special_Case_Condition(scc),但这被确定为错误对UCD进行XML表示分析时;因此,自5.1.0版起,Special_Case_Condition属性别名已被删除。

无大小写匹配是许多文本特别关注的问题还详细讨论了处理算法在Unicode标准附件#31“Unicode标识符和模式语法”中[UAX31型]和在Unicode技术标准#10“Unicode排序算法”中[输出10].

有关特定于本地的大小写约定的更多信息可以在Unicode公共区域设置数据存储库中找到[CLDR公司].

5.7属性值列表

以下小节总结了某些枚举属性。其他属性值记录在其他专题性附录中;例如,Line_Break属性值记录在Unicode标准附件#14,“Unicode换行算法”[无人机14]和各种与分段相关的属性值记录在Unicode标准附件#29,“Unicode文本分段”[UAX29型].

5.7.1一般类别值

代码点的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码]了解更多信息。

5.7.2双向类值

UnicodeData.txt中Bidi_Class字段中的值使用简短的属性值别名用于Bidi_Class。为了便于参考,表13列出Bidi_Class值的所有缩写和长值别名,从属性值别名.txt, 以及每个类别的简要说明。

表13。Bidi_Class值

阿伯 描述
强类型
L(左) 左_右 任何从左到右的强字符
R(右) 右_左 任何强的从右向左(非阿拉伯语类型)字符
美国铝业公司 阿拉伯语_字母 任何强大的从右到左(阿拉伯语类型)字符
弱类型
ZH 欧洲_编号 任何ASCII数字或东阿拉伯-印度数字
ES公司 欧洲_分离器 加号和减号
电子技师 欧洲_端子 数字格式上下文中的终止符,包括货币符号
一个 阿拉伯_数字 任何阿拉伯-印度数字
加拿大 公用分离器 逗号、冒号和斜线
NSM公司 无间距标记 任何非间隔标记
BN编号 边界_中性 大多数格式字符、控制代码或非字符
中性类型
B类 段落_分隔符 各种换行符
S公司 段分隔器 各种与段相关的控制代码
操作系统 白色_空格 空格
打开 其他_中性 大多数其他符号和标点符号
显式格式类型
轻柴油发动机 左_右_嵌入 U+202A:LR嵌入控件
LRO公司 左_右_覆盖 U+202D:LR超越控制
RLE公司 右_左_嵌入 U+202B:RL嵌入控件
RLO公司 右_左_覆盖 U+202E:RL超越控制
PDF格式 弹出方向格式 U+202C:终止嵌入或覆盖控件
LRI公司 左_To_右_Isolate 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必须考虑在内。

5.7.3条字符分解映射

提供了字符的Decomposition_Mapping属性的值UnicodeData.txt的字段5中。这是一个字符串值属性,由序列组成一个或多个Unicode代码点。分解映射的默认值属性是字符本身的代码点。默认值的使用对于字符,在UnicodeData.txt中保留字段5为空。非正式地,字符的Decomposition_Mapping属性的值被简单地称为分解映射.当角色分解时映射不是默认值,则打印出分解映射在Unicode代码图表的名称列表中显式显示。

与分解映射子集一起提供的前缀标记通常表示格式信息。如果没有给出这样的标记,则映射是规范的。相反,存在格式化标记还指示映射是兼容性映射而不是规范映射映射。在兼容性映射中缺少其他格式信息时,标记为用于将其与规范映射区分开来。

在某些情况下,规范映射或兼容性映射可能由单个字符。对于规范映射,这表示字符是另一个单独的字符。对于兼容性映射,这表示字符是与另一个字符等效的兼容性。

规范映射也可以由一对字符组成,但决不是长度超过两个字符。当规范映射由一对字符组成时,第一个字符本身可能是具有分解映射的字符,但第二个字符从来没有分解映射。

兼容性映射可能比规范映射长得多。出于历史原因最长的兼容性映射是18个字符长。保证兼容性映射不超过18个字符,尽管大多数只包含几个字符。

兼容性格式UCD中使用的标签列于表14

表14。兼容性格式标记

标签 描述
<font> 字体变体(例如,黑色字体)
<无中断> 空格或连字符的无中断版本
<初始> 初始演示表单(阿拉伯语)
<中间> 词中表示形式(阿拉伯语)
<最终> 最终演示形式(阿拉伯语)
<隔离> 独立表示形式(阿拉伯语)
<圆圈> 环形形状
<超级> 上标形式
<子> 下标形式
<垂直> 垂直布局展示表
<宽> 宽(或zenkaku)兼容性字符
<窄> 窄(或汉字)兼容字符
<小> 小变型(CNS兼容性)
<方形> CJK方形字体变体
<分数> 普通分数形式
<兼容> 其他未指定的兼容字符

注:分解和Decomposition_Mapping属性。这个Decomposition_Mapping属性是一个字符串值属性,其值(映射)在UnicodeData.txt中定义,而分解(也称为“完全分解”)的定义第3.7节,分解在里面[Unicode码]使用这些映射递归地。

从Unicode 2.1.9开始Unicode数据.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系列].

5.7.4规范组合类值

UnicodeData.txt中Canonical_Combining_Class字段中的值是规范排序算法中使用的数值。一些这些数值也有明确的符号标签作为属性值别名,使其预期应用程序更容易理解。为了便于参考,表15列出了Canonical_Combining_Class值的长符号别名,从属性值别名.txt, 以及每个类别的简要说明。的列表具有“Ccc10”等形式的长符号别名的固定位置类是缩写,因为当这些标签出现时,它们的形式是可预测的,基于数值。

表15。标准组合类值

价值 描述
0 未重新排序 间距和封闭标记;也有许多元音和辅音符号,即使没有空格
1 覆盖 覆盖基本字母或符号的标记
6 汉字_阅读 中日韩统一表意文字的变音符号阅读标记
7 努克塔 婆罗门语衍生文字中的音调符号nukta
8 假名_发音 平假名/片假名发音标记
9 维拉玛 维拉马斯
10 抄送10 固定职位课程的开始
... ...  
199   固定位置类结束
200 左下方附加的 左下角有标记
202 以下附件(_B) 标记直接贴在下面
204   右下角有标记
208   标记附在左侧
210   右侧的标记
212   左上角的标记
214 上述附件 直接贴在上面的标记
216 右上方附件 标记附在右上角
218 左下方(_L) 左下角有明显的标记
220 下方 正下方有明显的标记
222 下方_右侧 右下角有明显的标记
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码].

5.7.5分解和归一化

分解在第3章,合规性第页,共页[Unicode码].这一章也指定分解和规范化之间的交互。

许多与Unicode规范化相关的派生属性被称为“Quick_Check”属性。这些是为了启用各种优化而定义的用于实现规范化,如中所述第9节,检测规范化表单,在Unicode标准附件#15中,“Unicode规范化格式”[无人机15].中列出了所有代码点的四个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码].

5.7.6条值为值集的属性

大多数属性都有一个与每个代码点关联的值。然而,某些属性可能会将一组多个每个代码点有不同的值。例如,临时kVietnam属性,其中列出了越南语发音对于统一的CJK表意文字,具有由一组零个或多个发音字符串。因此,Unihan数据库包含一个条目:

U+6258千越南人c thưc thưt吨

该行被解释为关联一组五个字符串值,{“thac”、“thach”和“thc“,”thưc“,”thư带有kVietnam属性的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标准]讨论如何处理处理正则表达式时的此类属性。

5.8属性和属性值别名

Unicode字符属性本身及其值都是给定的符号别名。提供了别名的正式列表,以便定义良好的符号值可用于UCD的XML格式数据,用于正则表达式属性测试,以及其他Unicode数据的编程文本描述。属性的别名在中定义属性别名.txt。属性值的别名在中定义属性值别名.txt。

表17。UCD中的Alias文件

文件名 状态 描述
属性别名.txt N个 属性的名称和缩写
属性值别名.txt N个 属性值的名称和缩写

别名定义为ASCII兼容标识符,只使用大写或小写A-Z、数字和下划线“_”。案例不重要比较别名时,但数据文件中使用的首选格式对于较长的别名,则将其命名。

别名可以在适当的环境中翻译别名在某些情况下可能有用。没有要求只有在以下情况下,才能使用UCD别名文件中定义的别名指Unicode字符属性或其值;然而,他们建议在数据格式或编程环境。

可以提供别名临时财产。属性别名和属性具有稳定性保证值别名,但临时属性或其他属性没有稳定性保证临时数据文件;因此,也可能有与临时属性相关的属性别名或属性值别名没有稳定性保证属性。

5.8.1属性别名

在PropertyAliases.txt中,第一个字段通常指定缩写属性的符号名称,第二个字段指定属性的长符号名称。这些是首选别名。一些属性的其他别名在第三个属性中指定或后续字段。

规范性和信息性别名Unihan数据文件中定义的属性包含在PropertyAliases.txt中,从5.2版开始。

长符号名称别名是自描述性的被视为的官方名称Unicode字符属性。为了清楚起见,尽可能使用当提到这个属性以及Unicode标准中的其他部分。例如:“Line_Break属性在Unicode标准附件#14中进行了讨论”,Unicode行中断算法”[UAX14型]."

缩写的符号名称别名通常很短,而且不太容易记忆,但对于数据或其他中的“lb=BA”等表达式很有用意思明确的上下文。请注意,尽管UCD文档将第一个符号名称别名称为“缩写”没有要求第一个字段是实际的缩写,甚至是那样吗它比“长”符号名称别名短。如果长符号名称别名为已经是一个短标识符,在许多情况下,“缩写”符号名称别名是与第二个字段中的值相同。还有一个原则性的阶层“缩写”字段实际上比“长”字段长-属性别名用于Unihan标记。在这种情况下,第二个字段故意匹配Unihan准确地标记,以便它可以作为官方财产价值发挥其功能标识符。然后,因为没有系统的方法来缩写Unihan标记,而仍然保留对他们的合理理解PropertyAliases.txt是通过在每个Unihan标记前系统地加上前缀“cj”来创建的,结果是在带有助记符“cjk”前缀的标签中。因此,在这种情况下如果第一个字段包含的字符串比第二个字段长。启动位置不应基于对这些符号名称别名的相对长度的假设。

PropertyAliases.txt中指定的属性别名构成唯一的命名空间。使用这些符号值时,没有一个属性的别名将与另一个属性别名匹配。

5.8.2属性值别名

在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属性。

财产脚本扩展名(_E)由脚本属性值的枚举集组成。这些集合的集合可能是开放式,并且没有为它们定义属性值别名。

5.9匹配规则

匹配Unicode字符属性名称时和价值观,强烈建议属性和属性值别名得到认可。为了获得最佳匹配结果,而不是使用精确的二进制比较,以下是松散的匹配规则应遵守。

5.9.1匹配数字属性值

对于所有数值属性,以及Unicode_Radical_Stroke等属性由组合而成在比较属性值时,请使用松散匹配规则UAX44-LM1。

UAX44-LM1型应用数值等效。

5.9.2匹配字符名

Unicode字符名是一种特殊情况。从形式上讲,它们是价值观Name属性的。指定字符的每个Unicode字符名保证是唯一的,名称的分配方式是空格的存在与否不能用来区分它们。此外,实现有时会从Unicode创建标识符通过为空格插入下划线来命名字符。为了获得最佳效果在比较Unicode字符名时,请使用松散匹配规则UAX44-LM2。

UAX44-LM2系列忽略大小写、空格、下划线('_')和除中的连字符外的所有中间连字符U+1180 HANGUL JUNGSEONG东。

在本规则中,“中间连字符”应解释为连字符发生在两人之间标准Unicode字符中的字母数字字符[A..Z,0..9]名称,发布在UCD中的Unicode名称列表中,而不是任何可能的连字符由于在中删除连字符之前删除了空白,因此暂时出现在中间匹配的特定实现。(请参见第4.8节,名称英寸[Unicode码]用于规范Unicode Name属性和名称唯一性的规范。)

因此,以下字符名称示例中的连字符是中间的,在松散匹配中应忽略:

相反,以下字符示例中的连字符姓名为中间,在松散匹配中不应忽略。

此松散匹配规则的实现可以获得通过以下三种方法比较两个字符串时的正确结果操作,顺序为:

  1. 删除所有中间连字符(U+1180名称中的中间连字符除外)
  2. 删除所有空白和下划线字符
  3. 将toLowercase()应用于两个字符串

应用这三个操作后,如果两个字符串比较二进制相等,则认为它们匹配。

这是关于规则如何工作的逻辑陈述。如果已编程仔细地说,匹配规则的实现可以将字符串转换为单次传递。也可以比较两个名称字符串以进行松散匹配同时增量转换每个字符串。

宽松的匹配规则UAX44-LM2也适用于匹配字符名称别名、命名字符序列的名称和代码点标签,它们都共享Unicode字符名的唯一名称空间(和匹配行为)。请参见第4.8节,名称英寸[Unicode码]

字符名称别名中的中间连字符示例包括:

以下示例-字符名别名中的中间连字符包括:

命名字符序列中的中间连字符示例包括:

实现名称匹配时应格外小心特殊字符的非标准替代名称。名称唯一性策略Unicode联盟稳定性政策[稳定性]保证Unicode标准永远不会添加名称与现有字符匹配的字符编码字符,根据匹配规则UAX44-LM2。然而,任何其他将来可能会使用字符的名称。

以下是可能发生的此类故障的具体示例。在Unicode 6.0之前,正则表达式的一些实现允许匹配控制代码U+0007。当Unicode 6.0添加不同的编码字符,U+1F514 BELL代表表情符号,这些正则表达式实现中断。

自Unicode标准6.1版起,最常见的控制代码的替代名称,以及许多常用的缩写Unicode格式字符已添加为字符名称别名。这是自动的从潜在的未来的Unicode字符名,因为名称唯一性是在命名空间上定义的其中包括字符名和字符名别名。这种排除应该减少类似于“BELL”案例的意外可能性,其中实施者假设控制代码的名称已经定义好了。

5.9.3匹配符号值

属性别名和属性值别名是符号值。什么时候?比较它们时,使用松散匹配规则UAX44-LM3。

UAX44-LM3系列忽略大小写、空格、下划线('_')、,连字符,以及任何初始前缀字符串“is”。

松散匹配通常适用于具有符号别名的目录、枚举和二进制属性为其值定义。字符串值属性的属性值不应进行松散匹配,没有为其值定义符号别名;准确的字符串值属性值的匹配很重要,因为这些价值观中的案例差异或其他差异可能很重要。

对于符号值的松散匹配,初始前缀字符串“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 General_Category属性:\p{General_Category=L}。有关的更多信息在正则表达式和其他环境中使用属性值,看见第1.2节,属性,在Unicode技术标准#18中,“Unicode正则表达式”[UTS18标准].

5.10不变式

UCD中的属性值可能会被更正在标准的后续版本中,发现了错误。此外,任何新版本的Unicode标准可能会为给定的属性,除非允许的值集是固定的属性类型(例如二进制属性),或其中一组允许值受Unicode规定的约束字符编码稳定性策略[稳定性]. 最后,新版本还可以在UCD中引入新属性或新数据文件。

UCD的实施者需要意识到更新到新版本时发生的此类更改。然而,一些属性值并且考虑了文件格式的一些方面不变。本节记录了这些不变量。

5.10.1字符属性不变量

属性或属性值的所有形式上保证的不变量在中进行了描述Unicode字符编码稳定性策略[稳定性].该策略及其枚举的不变量列表如下在Unicode标准本身的上下文之外维护。它们不是标准的一部分,而是约束关于标准在不同版本之间可以更改和不能更改的内容,以及Unicode技术委员会可以做出哪些决定关于标准,无法接受。

除了所描述的形式上保证的不变量之外在Unicode字符编码稳定性策略中,本节注意关于字符属性的一些附加点UCD中的不变量。

简单考虑了一些字符属性不可变的:一次分配后,它们永远不会改变。例如,角色的名称是不可变的,因为它在准确识别中的重要性角色的角色。Canonical_Combining_Class和字符的分解映射是不可变的,因为对Unicode规范化算法稳定性的重要性[无人机15].

不可变字符属性的列表如所示表19

表19。不可变属性

物业名称 缩写名称 默认值 是否可分配给新用户?
年龄 年龄 未分配 是的
姓名 空字符串 是的
姓名_别名 姓名_别名 空字符串 是(见注释)
Jamo_Short_姓名 日本标准 空字符串
标准组合类 中央控制中心 0 是的
分解映射(_M) 糖尿病 <代码点> 是的
模式_语法 Pat_Syn(_S)
图案_白色_空格 零件_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的字符集。

5.10.2UCD文件格式不变量

UCD文件的文件格式。一般来说文件格式约定尽可能少地更改,以将对解析机器可读数据文件的实现。然而,对允许的文件格式的一些限制变革超越了形式上的保守主义,而是不变量的状态。这些保证尤其适用到UnicodeData.txt,这是与UCD。

UnicodeData.txt中字段的数量和顺序是固定的。有关要添加的字符属性的任何其他信息未来的UCD显示在单独的数据文件中,而不是作为UnicodeData.txt的附加字段或通过重新解释任何现有字段。

5.10.3实现中的不变量

应用程序可能希望使用各种字符属性和文件格式在选择如何实现字符属性时要考虑不变量。

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数据类型。

5.11验证

Unicode字符UCD文件中的属性值可以通过常规方法进行验证表达。这种验证在测试返回属性值的实现。验证方法取决于属性的类型,如下所述。这些表达式使用Perl语法,但可能当然可以转换为其他正式约定使用使用其他正则表达式引擎。

适用于验证的正则表达式特定属性的更改可能会在UCD的每个后续版本中发生。然而,由于字符属性别名的稳定性保证的一个版本的正则表达式Unicode标准将匹配以前版本的有效值标准的要求。

5.11.1枚举属性和二进制属性

枚举和二进制字符属性可以通过验证使用PropertyValueAliases.txt文件生成正则表达式。因为枚举属性有一个定义的可能值列表,验证正则表达式将所有可能的值简单地OR在一起。二进制属性是枚举属性的特例,预定义的非常短可能值的列表。

例如,要验证中的East_Asian_Width属性UCD,或测试返回East_Asian_Width属性的实现,解析PropertyValueAliases.txt中的以下相关行并生成连接每个短属性别名和长属性别名的正则表达式值。

#东部_亚洲_宽度(ea)ea;A;模棱两可的ea;F;全宽ea;H;半宽度ea;N;中性ea;钠;ea;W;

然后,得到的正则表达式将是:

/A|模糊|F|全宽|H|半宽|N|中性|Na|窄|W|宽/

对于每个Unicode二进制字符属性,正则表达式可以简单地预计算为:

/N|否|F|错误|Y|是|T|正确/

目录属性(年龄、块和脚本)是另一个枚举字符属性的类型。这些属性的所有可能值对于任何给定版本的Unicode标准,都列在PropertyValueAliases.txt中,因此,对于给定版本的UCD,Catalog属性的验证正则表达式可以是通过连接值生成,如其他枚举属性。

5.11.2Canonical_COmbing_Class属性

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根据有关属性值别名的稳定性政策保留。

5.11.3Unihan属性

定义的每个属性标记的验证正则表达式Unihan数据库中的[UAX38系列].

5.11.4其他属性

验证String和Miscellaneous属性的正则表达式UCD中提供了表21。虽然目录属性可以使用严格测试,如第5.11.1节枚举属性和二进制属性,块的通用模式和脚本也在中提供表21

为了简化这些表达式的表示,通常出现的子表达式是第一个抽象为中定义的变量表20

表20。用于验证的通用子表达式

变量 价值 注释和示例
$位数 [0-9] "0", "3"
$六进制数字 [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点数 $code点(\s$code点)* 1到n个代码点的空格分隔列表
$codePoint0 ($codePoints)? 0到n个代码点的空格分隔列表

中列出的正则表达式表21其他属性值的所有简单情况。对于属性包含一些更不规则的值,例如年龄,ISO_注释、和Unicode_1_名称,有关验证的详细信息,请参阅[UAX42型].

表21。其他属性值的正则表达式

阿伯 姓名 Regex允许值
无价值 数值 /$十进制/ 字段2
/$可选十进制/ 字段3
/$理性/
黑色 /$名称2/
供应链 脚本
糖尿病 分解映射(_M) /$code点数/
FC_NFKC公司 FC_NFKC_关闭
中色KC_CF NFKC_折叠 /$codePoint0/
囊性纤维变性 箱子_折叠 /$代码点数/
信用证 小写_映射
总胆固醇 标题栏_映射
加州大学 大写_映射
标准立方英尺 简单案例折叠 /$code点/
slc公司 简单_小写_映射
机顶盒 简单标题集映射
成功 简单_大写_映射
bmg公司 Bidi_镜像_Glyph /$code点/
桶/桶 Bidi_支架 /$code点/
EqUIdeo公司 等价统一象形字 /$code点/
姓名 /$名称/
姓名_别名 姓名_别名
-- 命名序列的名称*
钠1 Unicode_1_名称 /$注释名/
JSN公司 Jamo_Short_姓名 /$短名称/

*Unicode命名字符序列构成一个字符串值枚举字符串集(给定名称的实际序列)的属性。它们遵循与Name和Name_Alias相同的语法属性值和构成同一命名空间的一部分。

5.11.5多值属性的验证

一些属性,如kGuangdong的Script_Extensions,具有属性值,每个值由一组元素值组成。在数据文件中,这些元素值用空格隔开。通过第一次拆分来验证属性值每个设置为空间中的元素值,然后验证每个元素值单独。例如,Script_Extensions的元素是脚本属性;根据脚本属性。另见第5.7.6节值为值集的属性

Name_Alias属性的值由一个或更多名称字符串。在该属性的数据文件中,每个元素值都出现在一个单独的行,可以作为单独的元素进行验证。

5.12折旧

在Unicode标准中,术语折旧有点用与其他一些标准不同。折旧用于表示强烈建议不要使用字符或其他功能。然而,这不应被视为表明从标准中删除,也没有任何内容计划用于拆卸根据标准。任何此类更改都受到Unicode联盟稳定性政策[稳定性].

对于Unicode字符数据库,有两种重要类型值得注意的折旧。首先,一个编码字符可能是已弃用。第二,a字符属性可能会被否决。

当强烈建议不使用编码字符时给定属性值Deprecated=True。这个已弃用财产是一个二进制属性,专门定义用于携带有关Unicode字符。很少有字符是正式的以这种方式弃用;一个字符不常见、过时、,不喜欢或不喜欢。只有那些曾经UTC确定存在严重的架构缺陷或已确定会导致重大实施问题曾经被否决过。即使在最严重的情况下,例如不推荐使用的格式控制字符(U+206A..U+206F),一种编码字符从未从标准中删除。此外,尽管已弃用强烈建议不要使用字符,应避免使用支持其他更合适的机制可以发生在数据中。Unicode过程的一致性实现,如Unicode规范化必须正确处理甚至不推荐使用的字符。

在Unicode字符数据库中,字符属性可以也变得非常沮丧——通常是因为它不再用于最初定义的目的。在这种情况下属性在中标记为“已弃用”表9,属性表例如,请参见图形_链接属性。不建议使用不推荐的属性在支持Unicode字符属性的公共API中公开。

5.13属性API

Unicode标准没有规定可能定义的API的确切形式在软件库中向应用程序显示Unicode字符属性。然而,这里需要遵循一些建议和一般准则,这些建议和准则应有助于减少潜在的混淆,并使用Unicode字符数据库。

在接下来的讨论中,术语美国石油学会用于指代特定的函数或方法,而术语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属性值。或者,API支持特定的私人使用协议可能会出现私人定义的财产用于指定范围的PUA字符。所有这些API的使用都应该考虑了使用UCD扩展API集合的一致方法。

支持Unicode字符属性的API集合的设计者必须还要注意,并非所有Unicode字符属性都是相等的。没有明示或暗示的要求全部的Unicode字符属性应在给定的API集合中支持。事实上,一种简单地解析UCD和表面全部的Unicode字符属性逐字为很可能导致糟糕的设计。字符属性需要在设计的各种Unicode算法的上下文中理解以支持。

的以下子类型Unicode字符属性通常应在API中公开,但在有限的情况下除外。它们可能没有用处,尤其是在公共API集合中,可能会被证明对用户具有误导性此类API集合的。

5.14角色年龄

这个年龄属性指示第一个版本指定了特定的Unicode字符。例如,U+20AC€EURO SIGN添加到Unicode标准的2.1版,因此它的年龄=2.1,而U+20B9号机组Unicode标准6.0版中增加了印度卢比标志,所以它的年龄=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”,因为由于代码点和1993年Unicode标准和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标准].

6测试文件

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个 单词边界确定
句子中断测试.txt [UAX29型] N个 句子边界的确定

这些测试文件的规范状态反映了其用于确定声明一致性的实现的正确性到表中列出的相应算法。没有要求任何特定的Unicode实现也例如,实现Unicode换行算法,但如果它正确地实现了该算法,应该是能够复制LineBreakTest.txt中的数据项。

6.1规范化测试.txt

此文件包含可用于测试Unicode规范化算法。(请参见[UAX15型]和[测试15])

数据文件的第一个字段中有一个Unicode字符串(可能包括仅针对单个代码点)。接下来的四个字段指定预期的将该字符串转换为Unicode规范化表单的输出结果NFC、NFD、NFKC和NFKD。有许多棘手的边缘情况包括在输入数据中,以确保实现正确实现了Unicode规范化的一些更复杂的细节算法。

NormalizationTest.txt的标题部分提供了其他信息关于任何共形的正规化不变关系实现应该能够复制。

Unicode规范化算法不可定制。一致性实现应该会产生中指定的结果NormalizationTest.txt,不应偏离这些结果。

6.2分段测试文件和文档

LineBreakTest.txt,位于UCD的辅助目录中,包含可以使用的数据测试Unicode换行算法的实现。(参见[UAX14型]和[测试14].) 的标题该文件指定数据格式和测试数据的使用指定换行机会。注意,使用了非ASCII字符在此测试数据中作为字段分隔符。

有一个关联的文档文件LineBreakTest.html,它显示以交互式图表形式显示折线算法的结果规则的文档列表。

Unicode文本分段测试数据文件也位于UCD的辅助目录。(请参见[测试29].) 他们包含可用于测试分段实现的数据中指定的算法[UAX29型].的标题这些文件指定了数据格式和测试数据的用途指定文本分段机会。注意,使用了非ASCII字符在此测试数据中用作字段分隔符。

还有相关的文档文件中显示分段算法的结果交互式图表形式,带有规则的文档列表:

与Unicode规范化算法不同,Unicode换行算法和各种文本分割算法都是可定制的,人们都期望实现可以调整这些根据需要生成结果的算法。测试数据文件仅测试这个违约算法的行为。测试定制的实现将需要适当地修改和/或扩展测试用例以匹配任何记录在案的裁剪。

6.3双向测试文件

这些文件包含数据可用于测试Unicode双向算法。(请参见[UAX9系列]和[测试9].)

BidiTest.txt中的数据旨在进行全面测试长度小于等于4的字符串的Bidi_Class值的所有可能组合。为了允许产生大量的测试用例,数据文件的格式有些复杂在标题中描述。基本上,对于每个输入字符串和每个可能的输入段落级别,测试数据指定生成的bidi级别和预期的重新排序。

BidiCharacterTest.txt中的数据用于测试各种算法的边缘情况。它包含一个额外的字段,允许显式对每个测试用例的总体方向上下文的控制。

Unicode双向算法可以在一定范围内进行裁剪。没有裁剪的一致性实现预期会产生如下结果在BidiTest.txt和BidiCharacterTest.txt中指定,并且不应偏离这些结果。定制实现还可以使用中的数据测试总体一致性的测试文件通过将属性赋值更改为字符来反映算法他们剪裁的细节。

7UCD变更历史

本节总结了最近的UCD变更,包括其文档文件,以及按Unicode版本组织。

变更历史中的参考通常是针对公共审查问题(PRI)。请参见https://www.unicode.org/review/resolved.html有关的详细信息每一种情况。


Unicode 15.1.0码

特定文件中的更改:

更新了适当的现有数据文件,以添加以Unicode 15.1编码的627个新字符。记录最有可能影响实现的主要更改在里面Unicode 15.1.0页面的M部分编码新字符和不同字符导致的重要数据文件更新下面总结了属性更改,使用的分组方式与Unicode 15.1.0的组件

请注意,这里没有记录派生和提取数据文件的微小编辑更新和更改。对于新编码字符的预期属性值的常规添加,在本摘要中也没有明确要求。

核心数据

Unihan数据库(Unihan.zip)

UAX#45数据

提取的数据

没有要突出显示的特定项目。

一致性测试数据

没有要突出显示的特定项目。

14号无人机和29号无人机的辅助数据

辅助数据文件

没有要突出显示的特定项目。

Emoji数据

没有要突出显示的特定项目。


Unicode 15.0.0码

特定文件中的更改:

更新了适当的现有数据文件,以添加4489个以Unicode 15.0编码的新字符。记录最有可能影响实现的主要更改在里面Unicode 15.0.0页的M部分编码新字符和不同字符导致的重要数据文件更新下面总结了属性更改,使用的分组方式与Unicode 15.0.0的组件

请注意,这里没有记录派生和提取数据文件的微小编辑更新和更改。对于新编码字符的预期属性值的常规添加,在本摘要中也没有明确要求。

核心数据

Unihan数据库(Unihan.zip)

UAX#45数据

提取的数据

一致性测试数据

没有要突出显示的特定项目。

UAX#14和UAX#29的辅助数据

辅助数据文件

没有要突出显示的特定项目。

表情符号数据

没有要突出显示的特定项目。


致谢

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]

先前版本的修改在相应版本中列出。