##
## This is a modified version of ucd/PropertyValueAliases.txt
## It is maintained by hand to make sure enum values don't change
## over time, and so that the default value is 0 for most enums.
## Additionally, specify "short" or "long" to indicate which should
## be the primary enum specifier.
##

# Bidi_Class (bc) short

bc ; L         ; Left_To_Right
bc ; AL        ; Arabic_Letter
bc ; AN        ; Arabic_Number
bc ; B         ; Paragraph_Separator
bc ; BN        ; Boundary_Neutral
bc ; CS        ; Common_Separator
bc ; EN        ; European_Number
bc ; ES        ; European_Separator
bc ; ET        ; European_Terminator
bc ; LRE       ; Left_To_Right_Embedding
bc ; LRO       ; Left_To_Right_Override
bc ; NSM       ; Nonspacing_Mark
bc ; ON        ; Other_Neutral
bc ; PDF       ; Pop_Directional_Format
bc ; R         ; Right_To_Left
bc ; RLE       ; Right_To_Left_Embedding
bc ; RLO       ; Right_To_Left_Override
bc ; S         ; Segment_Separator
bc ; WS        ; White_Space

# Block (blk) long

blk; n/a       ; No_Block
blk; n/a       ; Aegean_Numbers
blk; n/a       ; Alphabetic_Presentation_Forms
blk; n/a       ; Ancient_Greek_Musical_Notation
blk; n/a       ; Ancient_Greek_Numbers
blk; n/a       ; Arabic
blk; n/a       ; Arabic_Presentation_Forms-A
blk; n/a       ; Arabic_Presentation_Forms-B
blk; n/a       ; Arabic_Supplement
blk; n/a       ; Armenian
blk; n/a       ; Arrows
blk; n/a       ; Basic_Latin
blk; n/a       ; Bengali
blk; n/a       ; Block_Elements
blk; n/a       ; Bopomofo
blk; n/a       ; Bopomofo_Extended
blk; n/a       ; Box_Drawing
blk; n/a       ; Braille_Patterns
blk; n/a       ; Buginese
blk; n/a       ; Buhid
blk; n/a       ; Byzantine_Musical_Symbols
blk; n/a       ; Cherokee
blk; n/a       ; CJK_Compatibility
blk; n/a       ; CJK_Compatibility_Forms
blk; n/a       ; CJK_Compatibility_Ideographs
blk; n/a       ; CJK_Compatibility_Ideographs_Supplement
blk; n/a       ; CJK_Radicals_Supplement
blk; n/a       ; CJK_Strokes
blk; n/a       ; CJK_Symbols_and_Punctuation
blk; n/a       ; CJK_Unified_Ideographs
blk; n/a       ; CJK_Unified_Ideographs_Extension_A
blk; n/a       ; CJK_Unified_Ideographs_Extension_B
blk; n/a       ; Combining_Diacritical_Marks
blk; n/a       ; Combining_Diacritical_Marks_for_Symbols
blk; n/a       ; Combining_Diacritical_Marks_Supplement
blk; n/a       ; Combining_Half_Marks
blk; n/a       ; Control_Pictures
blk; n/a       ; Coptic
blk; n/a       ; Currency_Symbols
blk; n/a       ; Cypriot_Syllabary
blk; n/a       ; Cyrillic
blk; n/a       ; Cyrillic_Supplement
blk; n/a       ; Deseret
blk; n/a       ; Devanagari
blk; n/a       ; Dingbats
blk; n/a       ; Enclosed_Alphanumerics
blk; n/a       ; Enclosed_CJK_Letters_and_Months
blk; n/a       ; Ethiopic
blk; n/a       ; Ethiopic_Extended
blk; n/a       ; Ethiopic_Supplement
blk; n/a       ; General_Punctuation
blk; n/a       ; Geometric_Shapes
blk; n/a       ; Georgian
blk; n/a       ; Georgian_Supplement
blk; n/a       ; Glagolitic
blk; n/a       ; Gothic
blk; n/a       ; Greek_and_Coptic
blk; n/a       ; Greek_Extended
blk; n/a       ; Gujarati
blk; n/a       ; Gurmukhi
blk; n/a       ; Halfwidth_and_Fullwidth_Forms
blk; n/a       ; Hangul_Compatibility_Jamo
blk; n/a       ; Hangul_Jamo
blk; n/a       ; Hangul_Syllables
blk; n/a       ; Hanunoo
blk; n/a       ; Hebrew
blk; n/a       ; High_Private_Use_Surrogates
blk; n/a       ; High_Surrogates
blk; n/a       ; Hiragana
blk; n/a       ; Ideographic_Description_Characters
blk; n/a       ; IPA_Extensions
blk; n/a       ; Kanbun
blk; n/a       ; Kangxi_Radicals
blk; n/a       ; Kannada
blk; n/a       ; Katakana
blk; n/a       ; Katakana_Phonetic_Extensions
blk; n/a       ; Kharoshthi
blk; n/a       ; Khmer
blk; n/a       ; Khmer_Symbols
blk; n/a       ; Lao
blk; n/a       ; Latin-1_Supplement
blk; n/a       ; Latin_Extended-A
blk; n/a       ; Latin_Extended-B
blk; n/a       ; Latin_Extended_Additional
blk; n/a       ; Letterlike_Symbols
blk; n/a       ; Limbu
blk; n/a       ; Linear_B_Ideograms
blk; n/a       ; Linear_B_Syllabary
blk; n/a       ; Low_Surrogates
blk; n/a       ; Malayalam
blk; n/a       ; Mathematical_Alphanumeric_Symbols
blk; n/a       ; Mathematical_Operators
blk; n/a       ; Miscellaneous_Mathematical_Symbols-A
blk; n/a       ; Miscellaneous_Mathematical_Symbols-B
blk; n/a       ; Miscellaneous_Symbols
blk; n/a       ; Miscellaneous_Symbols_and_Arrows
blk; n/a       ; Miscellaneous_Technical
blk; n/a       ; Modifier_Tone_Letters
blk; n/a       ; Mongolian
blk; n/a       ; Musical_Symbols
blk; n/a       ; Myanmar
blk; n/a       ; New_Tai_Lue
blk; n/a       ; Number_Forms
blk; n/a       ; Ogham
blk; n/a       ; Old_Italic
blk; n/a       ; Old_Persian
blk; n/a       ; Optical_Character_Recognition
blk; n/a       ; Oriya
blk; n/a       ; Osmanya
blk; n/a       ; Phonetic_Extensions
blk; n/a       ; Phonetic_Extensions_Supplement
blk; n/a       ; Private_Use_Area
blk; n/a       ; Runic
blk; n/a       ; Shavian
blk; n/a       ; Sinhala
blk; n/a       ; Small_Form_Variants
blk; n/a       ; Spacing_Modifier_Letters
blk; n/a       ; Specials
blk; n/a       ; Superscripts_and_Subscripts
blk; n/a       ; Supplemental_Arrows-A
blk; n/a       ; Supplemental_Arrows-B
blk; n/a       ; Supplemental_Mathematical_Operators
blk; n/a       ; Supplemental_Punctuation
blk; n/a       ; Supplementary_Private_Use_Area-A
blk; n/a       ; Supplementary_Private_Use_Area-B
blk; n/a       ; Syloti_Nagri
blk; n/a       ; Syriac
blk; n/a       ; Tagalog
blk; n/a       ; Tagbanwa
blk; n/a       ; Tags
blk; n/a       ; Tai_Le
blk; n/a       ; Tai_Xuan_Jing_Symbols
blk; n/a       ; Tamil
blk; n/a       ; Telugu
blk; n/a       ; Thaana
blk; n/a       ; Thai
blk; n/a       ; Tibetan
blk; n/a       ; Tifinagh
blk; n/a       ; Ugaritic
blk; n/a       ; Unified_Canadian_Aboriginal_Syllabics
blk; n/a       ; Variation_Selectors
blk; n/a       ; Variation_Selectors_Supplement
blk; n/a       ; Vertical_Forms
blk; n/a       ; Yi_Radicals
blk; n/a       ; Yi_Syllables
blk; n/a       ; Yijing_Hexagram_Symbols
blk; n/a       ; Balinese
blk; n/a       ; Counting_Rod_Numerals
blk; n/a       ; Cuneiform
blk; n/a       ; Cuneiform_Numbers_and_Punctuation
blk; n/a       ; Latin_Extended-C
blk; n/a       ; Latin_Extended-D
blk; n/a       ; NKo
blk; n/a       ; Phags-pa
blk; n/a       ; Phoenician

# Canonical_Combining_Class (ccc) short

ccc;   0; NR   ; Not_Reordered
ccc;   1; OV   ; Overlay
ccc;   7; NK   ; Nukta
ccc;   8; KV   ; Kana_Voicing
ccc;   9; VR   ; Virama
ccc; 200; ATBL ; Attached_Below_Left
ccc; 202; ATB  ; Attached_Below
ccc; 216; ATAR ; Attached_Above_Right
ccc; 218; BL   ; Below_Left
ccc; 220; B    ; Below
ccc; 222; BR   ; Below_Right
ccc; 224; L    ; Left
ccc; 226; R    ; Right
ccc; 228; AL   ; Above_Left
ccc; 230; A    ; Above
ccc; 232; AR   ; Above_Right
ccc; 233; DB   ; Double_Below
ccc; 234; DA   ; Double_Above
ccc; 240; IS   ; Iota_Subscript

# Decomposition_Type (dt) long

dt ; none      ; None
dt ; can       ; Canonical
dt ; com       ; Compat
dt ; enc       ; Circle
dt ; fin       ; Final
dt ; font      ; Font
dt ; fra       ; Fraction
dt ; init      ; Initial
dt ; iso       ; Isolated
dt ; med       ; Medial
dt ; nar       ; Narrow
dt ; nb        ; Nobreak
dt ; sml       ; Small
dt ; sqr       ; Square
dt ; sub       ; Sub
dt ; sup       ; Super
dt ; vert      ; Vertical
dt ; wide      ; Wide

# East_Asian_Width (ea) short

ea ; N         ; Neutral
ea ; A         ; Ambiguous
ea ; F         ; Fullwidth
ea ; H         ; Halfwidth
ea ; Na        ; Narrow
ea ; W         ; Wide

# General_Category (gc) short

gc ; Cn        ; Unassigned
gc ; Cc        ; Control
gc ; Cf        ; Format
gc ; Co        ; Private_Use
gc ; Cs        ; Surrogate
gc ; Ll        ; Lowercase_Letter
gc ; Lm        ; Modifier_Letter
gc ; Lo        ; Other_Letter
gc ; Lt        ; Titlecase_Letter
gc ; Lu        ; Uppercase_Letter
gc ; Mc        ; Spacing_Mark
gc ; Me        ; Enclosing_Mark
gc ; Mn        ; Nonspacing_Mark
gc ; Nd        ; Decimal_Number
gc ; Nl        ; Letter_Number
gc ; No        ; Other_Number
gc ; Pc        ; Connector_Punctuation
gc ; Pd        ; Dash_Punctuation
gc ; Pe        ; Close_Punctuation
gc ; Pf        ; Final_Punctuation
gc ; Pi        ; Initial_Punctuation
gc ; Po        ; Other_Punctuation
gc ; Ps        ; Open_Punctuation
gc ; Sc        ; Currency_Symbol
gc ; Sk        ; Modifier_Symbol
gc ; Sm        ; Math_Symbol
gc ; So        ; Other_Symbol
gc ; Zl        ; Line_Separator
gc ; Zp        ; Paragraph_Separator
gc ; Zs        ; Space_Separator

# Grapheme_Cluster_Break (GCB) long

GCB; XX        ; Other
GCB; CN        ; Control
GCB; CR        ; CR
GCB; EX        ; Extend
GCB; L         ; L
GCB; LF        ; LF
GCB; LV        ; LV
GCB; LVT       ; LVT
GCB; T         ; T
GCB; V         ; V

# Hangul_Syllable_Type (hst) short

hst; NA        ; Not_Applicable
hst; L         ; Leading_Jamo
hst; LV        ; LV_Syllable
hst; LVT       ; LVT_Syllable
hst; T         ; Trailing_Jamo
hst; V         ; Vowel_Jamo

# Joining_Group (jg) long

jg ; n/a       ; No_Joining_Group
jg ; n/a       ; Ain
jg ; n/a       ; Alaph
jg ; n/a       ; Alef
jg ; n/a       ; Beh
jg ; n/a       ; Beth
jg ; n/a       ; Dal
jg ; n/a       ; Dalath_Rish
jg ; n/a       ; E
jg ; n/a       ; Fe
jg ; n/a       ; Feh
jg ; n/a       ; Final_Semkath
jg ; n/a       ; Gaf
jg ; n/a       ; Gamal
jg ; n/a       ; Hah
jg ; n/a       ; Hamza_On_Heh_Goal
jg ; n/a       ; He
jg ; n/a       ; Heh
jg ; n/a       ; Heh_Goal
jg ; n/a       ; Heth
jg ; n/a       ; Kaf
jg ; n/a       ; Kaph
jg ; n/a       ; Khaph
jg ; n/a       ; Knotted_Heh
jg ; n/a       ; Lam
jg ; n/a       ; Lamadh
jg ; n/a       ; Meem
jg ; n/a       ; Mim
jg ; n/a       ; Noon
jg ; n/a       ; Nun
jg ; n/a       ; Pe
jg ; n/a       ; Qaf
jg ; n/a       ; Qaph
jg ; n/a       ; Reh
jg ; n/a       ; Reversed_Pe
jg ; n/a       ; Sad
jg ; n/a       ; Sadhe
jg ; n/a       ; Seen
jg ; n/a       ; Semkath
jg ; n/a       ; Shin
jg ; n/a       ; Swash_Kaf
jg ; n/a       ; Syriac_Waw
jg ; n/a       ; Tah
jg ; n/a       ; Taw
jg ; n/a       ; Teh_Marbuta
jg ; n/a       ; Teth
jg ; n/a       ; Waw
jg ; n/a       ; Yeh
jg ; n/a       ; Yeh_Barree
jg ; n/a       ; Yeh_With_Tail
jg ; n/a       ; Yudh
jg ; n/a       ; Yudh_He
jg ; n/a       ; Zain
jg ; n/a       ; Zhain

# Joining_Type (jt) short

jt ; U         ; Non_Joining
jt ; T         ; Transparent
jt ; C         ; Join_Causing
jt ; D         ; Dual_Joining
jt ; L         ; Left_Joining
jt ; R         ; Right_Joining

# Line_Break (lb) short

lb ; XX        ; Unknown
lb ; AI        ; Ambiguous
lb ; AL        ; Alphabetic
lb ; B2        ; Break_Both
lb ; BA        ; Break_After
lb ; BB        ; Break_Before
lb ; BK        ; Mandatory_Break
lb ; CB        ; Contingent_Break
lb ; CL        ; Close_Punctuation
lb ; CM        ; Combining_Mark
lb ; CR        ; Carriage_Return
lb ; EX        ; Exclamation
lb ; GL        ; Glue
lb ; H2        ; H2
lb ; H3        ; H3
lb ; HY        ; Hyphen
lb ; ID        ; Ideographic
lb ; IN        ; Inseparable
lb ; IS        ; Infix_Numeric
lb ; JL        ; JL
lb ; JT        ; JT
lb ; JV        ; JV
lb ; LF        ; Line_Feed
lb ; NL        ; Next_Line
lb ; NS        ; Nonstarter
lb ; NU        ; Numeric
lb ; OP        ; Open_Punctuation
lb ; PO        ; Postfix_Numeric
lb ; PR        ; Prefix_Numeric
lb ; QU        ; Quotation
lb ; SA        ; Complex_Context
lb ; SG        ; Surrogate
lb ; SP        ; Space
lb ; SY        ; Break_Symbols
lb ; WJ        ; Word_Joiner
lb ; ZW        ; ZWSpace

## Note: as ordered here, these form a hierarchy.
# Numeric_Type (nt) long

nt ; None      ; None
nt ; Nu        ; Numeric
nt ; Di        ; Digit
nt ; De        ; Decimal

# Script (sc) long

sc ; Zyyy      ; Common
sc ; Arab      ; Arabic
sc ; Armn      ; Armenian
sc ; Beng      ; Bengali
sc ; Bopo      ; Bopomofo
sc ; Brai      ; Braille
sc ; Bugi      ; Buginese
sc ; Buhd      ; Buhid
sc ; Cans      ; Canadian_Aboriginal
sc ; Cher      ; Cherokee
sc ; Copt      ; Coptic                           ; Qaac
sc ; Cprt      ; Cypriot
sc ; Cyrl      ; Cyrillic
sc ; Deva      ; Devanagari
sc ; Dsrt      ; Deseret
sc ; Ethi      ; Ethiopic
sc ; Geor      ; Georgian
sc ; Glag      ; Glagolitic
sc ; Goth      ; Gothic
sc ; Grek      ; Greek
sc ; Gujr      ; Gujarati
sc ; Guru      ; Gurmukhi
sc ; Hang      ; Hangul
sc ; Hani      ; Han
sc ; Hano      ; Hanunoo
sc ; Hebr      ; Hebrew
sc ; Hira      ; Hiragana
sc ; Hrkt      ; Katakana_Or_Hiragana
sc ; Ital      ; Old_Italic
sc ; Kana      ; Katakana
sc ; Khar      ; Kharoshthi
sc ; Khmr      ; Khmer
sc ; Knda      ; Kannada
sc ; Laoo      ; Lao
sc ; Latn      ; Latin
sc ; Limb      ; Limbu
sc ; Linb      ; Linear_B
sc ; Mlym      ; Malayalam
sc ; Mong      ; Mongolian
sc ; Mymr      ; Myanmar
sc ; Ogam      ; Ogham
sc ; Orya      ; Oriya
sc ; Osma      ; Osmanya
sc ; Qaai      ; Inherited
sc ; Runr      ; Runic
sc ; Shaw      ; Shavian
sc ; Sinh      ; Sinhala
sc ; Sylo      ; Syloti_Nagri
sc ; Syrc      ; Syriac
sc ; Tagb      ; Tagbanwa
sc ; Tale      ; Tai_Le
sc ; Talu      ; New_Tai_Lue
sc ; Taml      ; Tamil
sc ; Telu      ; Telugu
sc ; Tfng      ; Tifinagh
sc ; Tglg      ; Tagalog
sc ; Thaa      ; Thaana
sc ; Thai      ; Thai
sc ; Tibt      ; Tibetan
sc ; Ugar      ; Ugaritic
sc ; Xpeo      ; Old_Persian
sc ; Yiii      ; Yi
sc ; Bali      ; Balinese
sc ; Nkoo      ; Nko
sc ; Phag      ; Phags_Pa
sc ; Phnx      ; Phoenician
sc ; Xsux      ; Cuneiform

# Sentence_Break (SB) long

SB ; XX        ; Other
SB ; AT        ; ATerm
SB ; CL        ; Close
SB ; FO        ; Format
SB ; LE        ; OLetter
SB ; LO        ; Lower
SB ; NU        ; Numeric
SB ; SE        ; Sep
SB ; SP        ; Sp
SB ; ST        ; STerm
SB ; UP        ; Upper

# Word_Break (WB) long

WB ; XX        ; Other
WB ; EX        ; ExtendNumLet
WB ; FO        ; Format
WB ; KA        ; Katakana
WB ; LE        ; ALetter
WB ; ML        ; MidLetter
WB ; MN        ; MidNum
WB ; NU        ; Numeric
