wiki:ru/UCDReorganization

Version 5 (modified by vadim.godunko, 7 years ago) ( diff )

--

Реорганизация UCD

Назрел очередной пересмотр структуры данных UCD, поскольку размер таблиц данных превысил способности компилятора на 32-битных платформах.

Первой рассматриваемой возможностью является вынос всех "неизменных" свойств в отдельные таблицы. Это имеет несколько преимуществ:

  • разделение всех таблиц на две независимые группы;
  • сохранение "статического" хранение и доступа к неизменным свойствам;
  • упрощение последующей реализации локалей, которые могут переопределять значения свойств, доспускающих такую возможность.

Первый этап работ - пересмотр всех свойств в UCD на предмет допустимости переопределения и выделение свойств не допускающих переопределения.

Свойства UCD

На основании UAX #44 имеем нижеприведённые таблицы.

Все нормативные свойства собраны в первую таблицу. Все остальные - во вторую. Для нормативных свойств указано где в стандарте определяется, что они не могут быть переопределены реализацией. Для остальных свойств указывается где определяется, что они могут быть переопределены.

Стандарт упоминает также некоторые важные характеристики групп свойcтв (свойства этих групп вынесены в отдельные таблицы):

  • все нормативный casing свойства переопределяемы;
  • все normalization свойства непереопределяемы.
ИмяСтатусТип Использовано
Joining_Type N
Joining_Group N
Bidi_Paired_Bracket_Type N
Bidi_Paired_Bracket N
Block N
Hangul_Syllable_Type N
Line_Break N +
Name_Alias N
Default_Ignorable_Code_Point N B +
Grapheme_Base N B +
Grapheme_Extend N B +
Grapheme_Link N B +
ASCII_Hex_Digit N B +
Bidi_Control N B +
Deprecated N B +
IDS_Binary_Operator N B +
IDS_Trinary_Operator N B +
Join_Control N B +
Logical_Order_Exception N B +
Noncharacter_Code_Point N B not +
Pattern_Syntax N B +
Pattern_White_Space N B +
Radical N B +
Unified_Ideograph N B +
Variation_Selector N B +
White_Space N B +
Name N
General_Category N can be +
Bidi_Class N
Numeric_Type N
Numeric_Value N
Bidi_Mirrored N B
Bidi_Mirroring_Glyph I
Age N/I
East_Asian_Width I +
Indic_Matra_Category P
Indic_Syllabic_Category P
Jamo_Short_Name C
Grapheme_Cluster_Break I +
Sentence_Break I +
Word_Break I +
Script I
Script_Extensions I
Numeric_Type I
Numeric_Value I
Unicode_Radical_Stroke I
Alphabetic I B +
Math I B +
ID_Start I B +
ID_Continue I B +
XID_Start I B +
XID_Continue I B +
Dash I B +
Diacritic I B +
Extender I B +
Hex_Digit I B +
Hyphen I B +
Ideographic I B +
Other_Alphabetic C B +
Other_Default_Ignorable_Code_Point C B +
Other_Grapheme_Extend C B +
Other_ID_Continue C B +
Other_ID_Start C B +
Other_Math C B +
Quotation_Mark I B +
STerm I B +
Terminal_Punctuation I B +
Unicode_1_Name I
ISO_Comment I

Normalization

ИмяСтатус Использовано
Canonical_Combining_Class N not +
Composition_Exclusion N B not +
Decomposition_Type N not +
Decomposition_Mapping N not +
Full_Composition_Exclusion N B not +
NFD_Quick_Check N not +
NFKD_Quick_Check N not +
NFC_Quick_Check N not +
NFKC_Quick_Check N not +
Expands_On_NFC N B not +
Expands_On_NFD N B not +
Expands_On_NFKC N B not +
Expands_On_NFKD N B not +

Casing

ИмяСтатусТип Использовано
Case_Folding N can be +
Simple_Case_Folding N can be +
Simple_Uppercase_Mapping N can be +
Simple_Lowercase_Mapping N can be +
Simple_Titlecase_Mapping N can be +
Soft_Dotted N B +
ИмяСтатусТип Использовано
Cased I B +
Case_Ignorable I B +
Changes_When_Lowercased I B +
Changes_When_Uppercased I B +
Changes_When_Titlecased I B +
Changes_When_Casefolded I B +
Changes_When_Casemapped I B +
Lowercase I B +
Other_Lowercase C B +
Other_Uppercase C B +
Uppercase I B +
Uppercase_Mapping I
Lowercase_Mapping I
Titlecase_Mapping I

Предоставляют свойства нормализации, но в контексте case mapping

FC_NFKC_Closure N
NFKC_Casefold I
Changes_When_NFKC_Casefolded I B +
Note: See TracWiki for help on using the wiki.