Browse Source

unicode and ansi fixes/mods

master
Julian Noble 1 year ago
parent
commit
acf2f1e479
  1. 188
      src/modules/overtype-1.4.tm
  2. 121
      src/modules/punk-0.1.tm
  3. 689
      src/modules/punk/ansi-999999.0a1.0.tm
  4. 3
      src/modules/punk/ansi-buildversion.txt
  5. 983
      src/modules/punk/char-999999.0a1.0.tm
  6. 5855
      src/modules/punk/char/codepages/cp437.bdf
  7. 254
      src/modules/punk/char/codepages/cp437.txt
  8. 5142
      src/modules/punk/char/codepages/cp850.bdf
  9. 223
      src/modules/punk/char/codepages/cp850.txt
  10. 3692
      src/modules/punk/char/nerd-fonts-glyph-list.txt
  11. 993
      src/modules/punk/char/unicode15.1/ArabicShaping.txt
  12. 193
      src/modules/punk/char/unicode15.1/BidiBrackets.txt
  13. 96463
      src/modules/punk/char/unicode15.1/BidiCharacterTest.txt
  14. 633
      src/modules/punk/char/unicode15.1/BidiMirroring.txt
  15. 497589
      src/modules/punk/char/unicode15.1/BidiTest.txt
  16. 364
      src/modules/punk/char/unicode15.1/Blocks.txt
  17. 283
      src/modules/punk/char/unicode15.1/CJKRadicals.txt
  18. 1627
      src/modules/punk/char/unicode15.1/CaseFolding.txt
  19. 221
      src/modules/punk/char/unicode15.1/CompositionExclusions.txt
  20. 2006
      src/modules/punk/char/unicode15.1/DerivedAge.txt
  21. 12832
      src/modules/punk/char/unicode15.1/DerivedCoreProperties.txt
  22. 16089
      src/modules/punk/char/unicode15.1/DerivedNormalizationProps.txt
  23. 2621
      src/modules/punk/char/unicode15.1/EastAsianWidth.txt
  24. 763
      src/modules/punk/char/unicode15.1/EmojiSources.txt
  25. 408
      src/modules/punk/char/unicode15.1/EquivalentUnifiedIdeograph.txt
  26. 858
      src/modules/punk/char/unicode15.1/HangulSyllableType.txt
  27. 6117
      src/modules/punk/char/unicode15.1/Index.txt
  28. 808
      src/modules/punk/char/unicode15.1/IndicPositionalCategory.txt
  29. 1347
      src/modules/punk/char/unicode15.1/IndicSyllabicCategory.txt
  30. 93
      src/modules/punk/char/unicode15.1/Jamo.txt
  31. 3608
      src/modules/punk/char/unicode15.1/LineBreak.txt
  32. 570
      src/modules/punk/char/unicode15.1/NameAliases.txt
  33. 612
      src/modules/punk/char/unicode15.1/NamedSequences.txt
  34. 63
      src/modules/punk/char/unicode15.1/NamedSequencesProv.txt
  35. 776
      src/modules/punk/char/unicode15.1/NamesList.html
  36. 55743
      src/modules/punk/char/unicode15.1/NamesList.txt
  37. 52
      src/modules/punk/char/unicode15.1/NormalizationCorrections.txt
  38. 19129
      src/modules/punk/char/unicode15.1/NormalizationTest.txt
  39. 824
      src/modules/punk/char/unicode15.1/NushuSources.txt
  40. 1827
      src/modules/punk/char/unicode15.1/PropList.txt
  41. 217
      src/modules/punk/char/unicode15.1/PropertyAliases.txt
  42. 1653
      src/modules/punk/char/unicode15.1/PropertyValueAliases.txt
  43. 16
      src/modules/punk/char/unicode15.1/ReadMe.txt
  44. 635
      src/modules/punk/char/unicode15.1/ScriptExtensions.txt
  45. 3033
      src/modules/punk/char/unicode15.1/Scripts.txt
  46. 281
      src/modules/punk/char/unicode15.1/SpecialCasing.txt
  47. 1383
      src/modules/punk/char/unicode15.1/StandardizedVariants.txt
  48. 12348
      src/modules/punk/char/unicode15.1/TangutSources.txt
  49. 3391
      src/modules/punk/char/unicode15.1/USourceData.txt
  50. BIN
      src/modules/punk/char/unicode15.1/USourceGlyphs.pdf
  51. BIN
      src/modules/punk/char/unicode15.1/USourceRSChart.pdf
  52. 34931
      src/modules/punk/char/unicode15.1/UnicodeData.txt
  53. 2444
      src/modules/punk/char/unicode15.1/VerticalOrientation.txt
  54. 1475
      src/modules/punk/char/unicode15.1/auxiliary/GraphemeBreakProperty.txt
  55. 231
      src/modules/punk/char/unicode15.1/auxiliary/GraphemeBreakTest.html
  56. 1215
      src/modules/punk/char/unicode15.1/auxiliary/GraphemeBreakTest.txt
  57. 1028
      src/modules/punk/char/unicode15.1/auxiliary/LineBreakTest.html
  58. 10306
      src/modules/punk/char/unicode15.1/auxiliary/LineBreakTest.txt
  59. 2923
      src/modules/punk/char/unicode15.1/auxiliary/SentenceBreakProperty.txt
  60. 300
      src/modules/punk/char/unicode15.1/auxiliary/SentenceBreakTest.html
  61. 540
      src/modules/punk/char/unicode15.1/auxiliary/SentenceBreakTest.txt
  62. 1468
      src/modules/punk/char/unicode15.1/auxiliary/WordBreakProperty.txt
  63. 248
      src/modules/punk/char/unicode15.1/auxiliary/WordBreakTest.html
  64. 1854
      src/modules/punk/char/unicode15.1/auxiliary/WordBreakTest.txt
  65. 22
      src/modules/punk/char/unicode15.1/emoji/ReadMe.txt
  66. 1320
      src/modules/punk/char/unicode15.1/emoji/emoji-data.txt
  67. 1
      src/modules/punk/char/unicode15.1/emoji/emoji-variation-sequences.txt
  68. 2518
      src/modules/punk/char/unicode15.1/extracted/DerivedBidiClass.txt
  69. 241
      src/modules/punk/char/unicode15.1/extracted/DerivedBinaryProperties.txt
  70. 2788
      src/modules/punk/char/unicode15.1/extracted/DerivedCombiningClass.txt
  71. 1025
      src/modules/punk/char/unicode15.1/extracted/DerivedDecompositionType.txt
  72. 2611
      src/modules/punk/char/unicode15.1/extracted/DerivedEastAsianWidth.txt
  73. 4233
      src/modules/punk/char/unicode15.1/extracted/DerivedGeneralCategory.txt
  74. 745
      src/modules/punk/char/unicode15.1/extracted/DerivedJoiningGroup.txt
  75. 573
      src/modules/punk/char/unicode15.1/extracted/DerivedJoiningType.txt
  76. 3875
      src/modules/punk/char/unicode15.1/extracted/DerivedLineBreak.txt
  77. 44181
      src/modules/punk/char/unicode15.1/extracted/DerivedName.txt
  78. 291
      src/modules/punk/char/unicode15.1/extracted/DerivedNumericType.txt
  79. 2634
      src/modules/punk/char/unicode15.1/extracted/DerivedNumericValues.txt
  80. 3
      src/modules/punk/config-0.1.tm
  81. 651
      src/modules/punk/console-999999.0a1.0.tm
  82. 41
      src/modules/punk/repl-0.1.tm
  83. 8
      src/modules/punkcheck-0.1.0.tm
  84. 221
      src/modules/shellfilter-0.1.8.tm
  85. 57
      src/modules/shellrun-0.1.tm
  86. 29
      src/modules/textblock-999999.0a1.0.tm
  87. 3
      src/punk86.vfs/lib/app-shellspy/shellspy.tcl
  88. 3
      src/vendormodules/natsort-0.1.1.5.tm
  89. 527
      src/vendormodules/overtype-1.5.0.tm

188
src/modules/overtype-1.4.tm

@ -1,188 +0,0 @@
#Julian Noble <julian@precisium.com.au> - 2003
#Released under standard 'BSD license' conditions.
#
#todo - ellipsis truncation indicator for center,right
#v1.4 2023-07 - naive ansi color handling - todo - fix string range
# - need to extract and replace ansi codes?
namespace eval overtype {
namespace export *
}
proc overtype::about {} {
return "Simple text formatting. Author JMN. BSD-License"
}
proc overtype::stripcodes {text} {
if {[set posn [string first "\033\[" $text]] >= 0} {
set mnext [string first m [string range $text $posn end]]
if {$mnext >= 0} {
set mpos [expr {$posn + $mnext}]
set stripped1 [string range $text 0 $posn-1][string range $text $mpos+1 end]
#return [stripcodes $stripped1] ;#recurse to get any others
tailcall ::shellfilter::ansi::stripcodes $stripped1
} else {
#partial or not actually an ansi code.. pass it all through
return $text
}
} else {
return $text
}
}
#length of text for printing characters only
#review - unicode and other non-printing chars?
proc overtype::printing_length {str} {
string length [overtype::stripcodes $str]
}
proc overtype::left {args} {
# @c overtype starting at left (overstrike)
# @c can/should we use something like this?: 'format "%-*s" $len $overtext
if {[llength $args] < 2} {
error {usage: ?-overflow [1|0]? ?-ellipsis [1|0]? ?-ellipsistext ...? undertext overtext}
}
foreach {undertext overtext} [lrange $args end-1 end] break
set opt(-ellipsis) 0
set opt(-ellipsistext) {...}
set opt(-overflow) 0
array set opt [lrange $args 0 end-2]
set len [printing_length $undertext]
set overlen [printing_length $overtext]
set diff [expr {$overlen - $len}]
if {$diff > 0} {
if {$opt(-overflow)} {
return $overtext
} else {
if {$opt(-ellipsis)} {
return [overtype::right [string range $overtext 0 [expr {$len -1}]] $opt(-ellipsistext)]
} else {
return [string range $overtext 0 [expr {$len -1}]]
}
}
} else {
return "$overtext[string range $undertext $overlen end]"
}
}
# test - use more tcl8.5 features.
proc overtype::left2 {args} {
# @c overtype starting at left (overstrike)
# @c can/should we use something like this?: 'format "%-*s" $len $overtext
if {[llength $args] < 2} {
error {usage: ?-overflow [1|0]? ?-ellipsis [1|0]? ?-ellipsistext ...? undertext overtext}
}
foreach {undertext overtext} [lrange $args end-1 end] break
set opt(-ellipsis) 0
set opt(-ellipsistext) {...}
set opt(-overflow) 0
array set opt [lrange $args 0 end-2]
set len [printing_length $undertext]
set overlen [printing_length $overtext]
set diff [expr {$overlen - $len}]
if {$diff > 0} {
if {$opt(-overflow)} {
return $overtext
} else {
if {$opt(-ellipsis)} {
return [overtype::right [string range $overtext 0 $len-1] $opt(-ellipsistext)]
} else {
return [string range $overtext 0 $len-1 ]
}
}
} else {
#return "$overtext[string range $undertext $overlen end]"
return [string replace $undertext 0 $overlen-1 $overtext]
}
}
proc overtype::centre {args} {
if {[llength $args] < 2} {
error {usage: ?-bias [left|right]? ?-overflow [1|0]? undertext overtext}
}
foreach {undertext overtext} [lrange $args end-1 end] break
set opt(-bias) left
set opt(-overflow) 0
array set opt [lrange $args 0 end-2]
set olen [printing_length $overtext]
set ulen [printing_length $undertext]
set diff [expr {$ulen - $olen}]
if {$diff > 0} {
set half [expr {round(int($diff / 2))}]
if {[string match right $opt(-bias)]} {
if {[expr {2 * $half}] < $diff} {
incr half
}
}
set rhs [expr {$diff - $half - 1}]
set lhs [expr {$half - 1}]
set a [string range $undertext 0 $lhs]
set b $overtext
set c [string range $undertext end-$rhs end]
return $a$b$c
} else {
if {$diff < 0} {
if {$opt(-overflow)} {
return $overtext
} else {
return [string range $overtext 0 [expr {$ulen - 1}]]
}
} else {
return $overtext
}
}
}
proc overtype::right {args} {
# @d !todo - implement overflow, length checks etc
if {[llength $args] < 2} {
error {usage: ?-overflow [1|0]? undertext overtext}
}
foreach {undertext overtext} [lrange $args end-1 end] break
set opt(-overflow) 0
array set opt [lrange $args 0 end-2]
set olen [printing_length $overtext]
set ulen [printing_length $undertext]
if {$opt(-overflow)} {
return [string range $undertext 0 end-$olen]$overtext
} else {
if {$olen > $ulen} {
set diff [expr {$olen - $ulen}]
return [string range $undertext 0 end-$olen][string range $overtext 0 end-$diff]
} else {
return [string range $undertext 0 end-$olen]$overtext
}
}
}
namespace eval overtype {
interp alias {} ::overtype::center {} ::overtype::centre
}
#breaks in tcl9 due to variable scoping change (fix of 'creative writing' problem)
#package provide [lassign {overtype 1.4} pkg ver]$pkg [namespace eval $pkg[set pkg {}] {list [variable version $ver[set ver {}]]$version}]
package provide overtype [namespace eval overtype {
variable version
set version 1.4
}]

121
src/modules/punk-0.1.tm

@ -70,6 +70,8 @@ namespace eval ::repl {
variable running 0 variable running 0
} }
package require punk::config package require punk::config
package require punk::ansi
package require punk::console
package require punk::ns package require punk::ns
package require punk::winpath ;# for windows paths - but has functions that can be called on unix systems package require punk::winpath ;# for windows paths - but has functions that can be called on unix systems
package require punk::repo package require punk::repo
@ -121,13 +123,8 @@ namespace eval punk {
variable last_run_display [list] variable last_run_display [list]
variable colour_disabled 0
# https://no-color.org
if {[info exists ::env(NO_COLOR)]} {
if {$::env(NO_COLOR) ne ""} {
set colour_disabled 1
}
}
#variable re_headvar1 {([a-zA-Z:@.(),]+?)(?![^(]*\))(,.*)*$} #variable re_headvar1 {([a-zA-Z:@.(),]+?)(?![^(]*\))(,.*)*$}
#load package and move to namespace of same name #load package and move to namespace of same name
@ -3559,12 +3556,12 @@ namespace eval punk {
set max_iterations 100 ;# configurable? -1 for no limit ? This is primarily here to aid debugging of runaway loops in initial development .. should probably set to no-limit in final version. set max_iterations 100 ;# configurable? -1 for no limit ? This is primarily here to aid debugging of runaway loops in initial development .. should probably set to no-limit in final version.
while {$more_pipe_segments == 1} { while {$more_pipe_segments == 1} {
#--------------------------------- #---------------------------------
debug.punk.pipe {[a+ yellow bold]i$i SEGMENT MEMBERS([llength $segment_members]): $segment_members[a+]} 4 debug.punk.pipe {[a yellow bold]i$i SEGMENT MEMBERS([llength $segment_members]): $segment_members[a]} 4
debug.punk.pipe {[a+ yellow bold]i$i TAIL REMAINING([llength $tailremaining]): $tailremaining[a+]} 4 debug.punk.pipe {[a yellow bold]i$i TAIL REMAINING([llength $tailremaining]): $tailremaining[a]} 4
debug.punk.pipe {[a+] inpipespec(prev [a+ yellow bold]|$pipespec($i,in)[a+]>) outpipespec(next [a+ yellow bold]|$pipespec($i,out)>[a+])} 4 debug.punk.pipe {[a] inpipespec(prev [a yellow bold]|$pipespec($i,in)[a]>) outpipespec(next [a+ yellow bold]|$pipespec($i,out)>[a])} 4
debug.punk.pipe {[a+ cyan bold] segment_first_is_script:$segment_first_is_script} 4 debug.punk.pipe {[a cyan bold] segment_first_is_script:$segment_first_is_script} 4
if {$segment_first_is_script} { if {$segment_first_is_script} {
debug.punk.pipe {[a+ cyan bold] script segment: [lindex $segment_members 0][a+]} 4 debug.punk.pipe {[a cyan bold] script segment: [lindex $segment_members 0][a]} 4
} }
@ -3593,7 +3590,7 @@ namespace eval punk {
set prevr $inpipespec_result ;# leftmost spec in |> needs to affect pipeline flow of 'data' set prevr $inpipespec_result ;# leftmost spec in |> needs to affect pipeline flow of 'data'
#puts stdout "inpipespec:|$pipespec($i,in)> prevr:$prevr setvars: $pipedvars" #puts stdout "inpipespec:|$pipespec($i,in)> prevr:$prevr setvars: $pipedvars"
} }
debug.punk.pipe {[a+] previous_iteration_result: $prevr[a+]} 6 debug.punk.pipe {[a] previous_iteration_result: $prevr[a]} 6
debug.punk.pipe.rep {rep previous_iteration_result [rep $prevr]} debug.punk.pipe.rep {rep previous_iteration_result [rep $prevr]}
@ -3639,7 +3636,7 @@ namespace eval punk {
set script "" set script ""
if {!$segment_has_insertions} { if {!$segment_has_insertions} {
#debug.punk.pipe.var {[a+ cyan]SEGMENT has no tags[a+]} 7 #debug.punk.pipe.var {[a cyan]SEGMENT has no tags[a]} 7
#add previous_result as data in end position by default, only if *no* insertions specified (data is just list-wrapped previous_result) #add previous_result as data in end position by default, only if *no* insertions specified (data is just list-wrapped previous_result)
#set segment_members_filled [concat $segment_members [dict get $dict_tagval %data%]] ;# data flows through by default as single element - not args - because some strings are not valid lists #set segment_members_filled [concat $segment_members [dict get $dict_tagval %data%]] ;# data flows through by default as single element - not args - because some strings are not valid lists
#insertion-specs with a trailing * can be used to insert data in args format #insertion-specs with a trailing * can be used to insert data in args format
@ -3744,11 +3741,11 @@ namespace eval punk {
if {(!$segment_first_is_script ) && $segment_op eq ".="} { if {(!$segment_first_is_script ) && $segment_op eq ".="} {
#no scriptiness detected #no scriptiness detected
#debug.punk.pipe.rep {[a+ yellow bold][rep_listname segment_members_filled][a+]} 4 #debug.punk.pipe.rep {[a yellow bold][rep_listname segment_members_filled][a]} 4
set cmdlist_result [uplevel 1 $segment_members_filled] set cmdlist_result [uplevel 1 $segment_members_filled]
#debug.punk.pipe {[a+ green bold]forward_result: $forward_result[a+]} 4 #debug.punk.pipe {[a green bold]forward_result: $forward_result[a]} 4
#debug.punk.pipe.rep {[a+ yellow bold]forward_result REP: [rep $forward_result][a+]} 4 #debug.punk.pipe.rep {[a yellow bold]forward_result REP: [rep $forward_result][a]} 4
#set d [_multi_bind_result $returnvarspec [punk::K $cmdlist_result [unset cmdlist_result]]] #set d [_multi_bind_result $returnvarspec [punk::K $cmdlist_result [unset cmdlist_result]]]
set d [_multi_bind_result $returnvarspec [lindex [list $cmdlist_result [unset cmdlist_result ]] 0]] set d [_multi_bind_result $returnvarspec [lindex [list $cmdlist_result [unset cmdlist_result ]] 0]]
@ -3786,7 +3783,7 @@ namespace eval punk {
} elseif {$segment_first_is_script || $segment_op eq "script"} { } elseif {$segment_first_is_script || $segment_op eq "script"} {
#script #script
debug.punk.pipe {[a+ cyan bold].. evaluating as script[a+]} 2 debug.punk.pipe {[a+ cyan bold].. evaluating as script[a]} 2
set script [lindex $segment_members 0] set script [lindex $segment_members 0]
@ -3992,7 +3989,7 @@ namespace eval punk {
} else { } else {
#?? two pipes in a row ? #?? two pipes in a row ?
debug.punk.pipe {[a+ yellow bold]WARNING: no segment members found[a+]} 0 debug.punk.pipe {[a+ yellow bold]WARNING: no segment members found[a]} 0
set segment_members return set segment_members return
set segment_first_word return set segment_first_word return
} }
@ -4000,7 +3997,7 @@ namespace eval punk {
#set forward_result $segment_result #set forward_result $segment_result
set previous_result $segment_result set previous_result $segment_result
} else { } else {
debug.punk.pipe {[a+ cyan bold]End of pipe segments ($i)[a+]} 4 debug.punk.pipe {[a+ cyan bold]End of pipe segments ($i)[a]} 4
#output pipe spec at tail of pipeline #output pipe spec at tail of pipeline
set pipedvars [dict create] set pipedvars [dict create]
@ -4460,7 +4457,7 @@ namespace eval punk {
} elseif {[regexp $re_assign $assign _ returnvarspecs rhs]} { } elseif {[regexp $re_assign $assign _ returnvarspecs rhs]} {
set cmdlist [list ::punk::pipeline = $returnvarspecs $rhs {*}$arglist] set cmdlist [list ::punk::pipeline = $returnvarspecs $rhs {*}$arglist]
} else { } else {
debug.punk.pipe {[a+ yellow bold] Unexpected arg following pipenomatchvar variable [a+]} 0 debug.punk.pipe {[a+ yellow bold] Unexpected arg following pipenomatchvar variable [a]} 0
set cmdlist $args set cmdlist $args
#return [dict create error [dict create reason [dict create pipematch bad_first_word value $assign pipeline [list pipematch $assign {*}$args]]]] #return [dict create error [dict create reason [dict create pipematch bad_first_word value $assign pipeline [list pipematch $assign {*}$args]]]]
} }
@ -4471,7 +4468,7 @@ namespace eval punk {
upvar 1 $varname nomatchvar upvar 1 $varname nomatchvar
if {[catch {uplevel 1 $cmdlist} result erroptions]} { if {[catch {uplevel 1 $cmdlist} result erroptions]} {
set ecode [dict get $erroptions -errorcode] set ecode [dict get $erroptions -errorcode]
debug.punk.pipe {[a+ yellow bold]pipematchnomatch error $result[a+]} 3 debug.punk.pipe {[a+ yellow bold]pipematchnomatch error $result[a]} 3
if {[lindex $ecode 0] eq "pipesyntax"} { if {[lindex $ecode 0] eq "pipesyntax"} {
set errordict [dict create error [dict create pipesyntax $result]] set errordict [dict create error [dict create pipesyntax $result]]
set nomatchvar $errordict set nomatchvar $errordict
@ -4664,34 +4661,6 @@ namespace eval punk {
return $r return $r
} }
#todo - implement colour resets like the perl module:
#https://metacpan.org/pod/Text::ANSI::Util
#(saves up all ansi color codes since previus color reset and replays the saved codes after our highlighting is done)
proc ansi+ {args} {
variable colour_disabled
if {$colour_disabled == 1} {
return
}
tailcall ::shellfilter::ansi::+ {*}$args
}
proc colour {{onoff {}}} {
variable colour_disabled
if {[string length $onoff]} {
set onoff [string tolower $onoff]
if {$onoff in [list 1 on true yes]} {
interp alias "" a+ "" punk::ansi+
set colour_disabled 0
} elseif {$onoff in [list 0 off false no]} {
interp alias "" a+ "" control::no-op
set colour_disabled 1
} else {
error "punk::colour expected 0|1|on|off|true|false|yes|no"
}
}
catch {repl::reset_prompt}
return [expr {!$colour_disabled}]
}
proc scriptlibpath {{shortname {}} args} { proc scriptlibpath {{shortname {}} args} {
upvar ::punk::config::running running_config upvar ::punk::config::running running_config
@ -5283,9 +5252,9 @@ namespace eval punk {
set col1 [string repeat " " [expr {$widest1 + 2}]] set col1 [string repeat " " [expr {$widest1 + 2}]]
foreach d $dirs filerec $finfo { foreach d $dirs filerec $finfo {
set d1 [a+ cyan bold] set d1 [a+ cyan bold]
set d2 [a+] set d2 [a+ defaultfg defaultbg]
set f1 [a+ white bold] set f1 [a+ white bold]
set f2 [a+] set f2 [a+ defaultfg defaultbg]
set fdisp "" set fdisp ""
if {[string length $d]} { if {[string length $d]} {
if {$d in $flaggedhidden} { if {$d in $flaggedhidden} {
@ -5569,9 +5538,9 @@ namespace eval punk {
set out [punk::dirfiles_dict_as_lines $matchinfo -stripbase 1] set out [punk::dirfiles_dict_as_lines $matchinfo -stripbase 1]
#puts stdout $out #puts stdout $out
#puts stderr [a+ white]$out[a+] #puts stderr [a+ white]$out[a]
set chunklist [list] set chunklist [list]
lappend chunklist [list stdout "[a+ white light]$out[a+]\n"] lappend chunklist [list stdout "[a+ white light]$out[a]\n"]
lappend chunklist [list result $result] lappend chunklist [list result $result]
set ::punk::last_run_display $chunklist set ::punk::last_run_display $chunklist
if {[llength [info commands ::repl::term::set_console_title]]} { if {[llength [info commands ::repl::term::set_console_title]]} {
@ -5611,7 +5580,7 @@ namespace eval punk {
if {$::repl::running} { if {$::repl::running} {
set out [punk::dirfiles_dict_as_lines $matchinfo -stripbase 1] set out [punk::dirfiles_dict_as_lines $matchinfo -stripbase 1]
set chunklist [list] set chunklist [list]
lappend chunklist [list stdout "[a+ white light]$out[a+]\n"] lappend chunklist [list stdout "[a+ white light]$out[a]\n"]
lappend chunklist [list result $result] lappend chunklist [list result $result]
set ::punk::last_run_display $chunklist set ::punk::last_run_display $chunklist
@ -5692,7 +5661,7 @@ namespace eval punk {
set out [punk::dirfiles_dict_as_lines $matchinfo -stripbase 1] set out [punk::dirfiles_dict_as_lines $matchinfo -stripbase 1]
#return $out\n[pwd] #return $out\n[pwd]
set chunklist [list] set chunklist [list]
lappend chunklist [list stdout "[a+ white light]$out[a+]\n"] lappend chunklist [list stdout "[a+ white light]$out[a]\n"]
lappend chunklist [list result $result] lappend chunklist [list result $result]
set ::punk::last_run_display $chunklist set ::punk::last_run_display $chunklist
repl::term::set_console_title $result repl::term::set_console_title $result
@ -6075,8 +6044,6 @@ namespace eval punk {
# -- --- --- --- --- --- # -- --- --- --- --- ---
set opt_commandprefix [dict get $opts -commandprefix] set opt_commandprefix [dict get $opts -commandprefix]
# -- --- --- --- --- --- # -- --- --- --- --- ---
set lineval verbatim
if {$lineval ni [list verbatim trimmed]} {error "linelist 2nd argument valid values are 'verbatim' or 'trimmed'"}
set linelist [list] set linelist [list]
if {[string first \n $text] < 0} { if {[string first \n $text] < 0} {
return $text return $text
@ -6378,7 +6345,7 @@ namespace eval punk {
} }
if {$showcount} { if {$showcount} {
set displaycount "[a+ purple bold]($count)[a+] " set displaycount "[a purple bold]($count)[a] "
if {$showcount} { if {$showcount} {
set countspace [expr {[string length $count] + 3}] ;#lhs margin size of count number plus brackets and one space set countspace [expr {[string length $count] + 3}] ;#lhs margin size of count number plus brackets and one space
set margin [string repeat " " $countspace] set margin [string repeat " " $countspace]
@ -6388,9 +6355,9 @@ namespace eval punk {
set displaycount "" set displaycount ""
} }
if {![string length $more]} { if {![string length $more]} {
puts $channel "$displaycount$label[a+ green bold]$displayval[a+]" puts $channel "$displaycount$label[a green bold]$displayval[a]"
} else { } else {
puts $channel "$displaycount$label[a+ green bold]$displayval[a+][a+ yellow bold]$more[a+]" puts $channel "$displaycount$label[a green bold]$displayval[a yellow bold]$more[a]"
} }
return $val return $val
} }
@ -6556,9 +6523,6 @@ namespace eval punk {
interp alias {} hide {} punkapp::hide_console ;#will only work if controllable toplevels exist interp alias {} hide {} punkapp::hide_console ;#will only work if controllable toplevels exist
interp alias {} colour {} punk::colour
interp alias {} color {} punk::colour
interp alias {} a+ {} punk::ansi+
#sh style 'test' and 'exitcode' (0 is false) #sh style 'test' and 'exitcode' (0 is false)
interp alias {} sh_test {} punk::sh_test interp alias {} sh_test {} punk::sh_test
@ -6575,20 +6539,41 @@ namespace eval punk {
interp alias {} echo {} punk::sh_echo interp alias {} echo {} punk::sh_echo
interp alias {} ECHO {} punk::sh_ECHO interp alias {} ECHO {} punk::sh_ECHO
#interp alias {} c {} clear ;#external executable 'clear' may not always be available
interp alias {} clear {} repl::term::reset
interp alias {} c {} repl::term::reset
interp alias {} help {} punk::help interp alias {} help {} punk::help
interp alias {} aliases {} punk::aliases interp alias {} aliases {} punk::aliases
interp alias {} alias {} punk::alias interp alias {} alias {} punk::alias
interp alias {} treemore {} punk::xmore tree interp alias {} treemore {} punk::xmore tree
interp alias {} tmhere {} .= pwd |path> {::tcl::tm::add {*}$data; set path} |> inspect -label added_to_module_path <0/#| interp alias {} tmhere {} .= pwd |path> {::tcl::tm::add {*}$data; set path} |> inspect -label added_to_module_path <0/#|
#interp alias {} c {} clear ;#external executable 'clear' may not always be available
#todo - review
#repl::term notifies prompt system of reset
interp alias {} clear {} repl::term::reset
interp alias {} c {} repl::term::reset
interp alias {} colour {} punk::console::colour
interp alias {} color {} punk::console::colour
interp alias {} a+ {} punk::console::get_ansi+
interp alias {} a= {} punk::console::get_ansi
interp alias {} a {} punk::console::get_ansi
interp alias {} a? {} punk::console::get_ansi?
proc dict_getdef {dictValue args} {
if {[llength $args] < 2} {
error {wrong # args: should be "dict_getdef dictValue ?key ...? key default"}
}
set keys [lrange $args 0 end-1]
if {[dict exists $dictValue {*}$keys]} {
return [dict get $dictValue {*}$keys]
} else {
return [lindex $args end]
}
}

689
src/modules/punk/ansi-999999.0a1.0.tm

@ -0,0 +1,689 @@
# -*- tcl -*-
# Maintenance Instruction: leave the 999999.xxx.x as is and use 'pmix make' or src/make.tcl to update from <pkg>-buildversion.txt
#
# Please consider using a BSD or MIT style license for greatest compatibility with the Tcl ecosystem.
# Code using preferred Tcl licenses can be eligible for inclusion in Tcllib, Tklib and the punk package repository.
# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++
# (C) 2023
#
# @@ Meta Begin
# Application punk::ansi 999999.0a1.0
# Meta platform tcl
# Meta license <unspecified>
# @@ Meta End
# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++
## Requirements
##e.g package require frobz
#punk::ansi functions return their values - no implicit emission to console/stdout
# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++
namespace eval punk::ansi {
#see also ansicolor page on wiki https://wiki.tcl-lang.org/page/ANSI+color+control
variable test "blah\033\[1;33mETC\033\[0;mOK"
#Note that a? is actually a pattern. We can't explicitly match it without also matcing a+ ab etc. Presumably this won't matter here.
namespace export\
{a?} {a+} a \
convert*\
clear*\
cursor_*\
detect*\
get_*\
move*\
reset*\
strip*\
test_decaln\
titleset\
variable escape_terminals
#single "final byte" in the range 0x40–0x7E (ASCII @A–Z[\]^_`a–z{|}~).
dict set escape_terminals CSI [list @ \\ ^ _ ` | ~ a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z "\{" "\}"]
#dict set escape_terminals CSI [list J K m n A B C D E F G s u] ;#basic
dict set escape_terminals OSC [list \007 \033\\] ;#note mix of 1 and 2-byte terminals
#self-contained 2 byte ansi escape sequences - review more?
variable ansi_2byte_codes_dict
set ansi_2byte_codes_dict [dict create\
"reset_terminal" "\u001bc"\
"save_cursor_posn" "\u001b7"\
"restore_cursor_posn" "\u001b8"\
"cursor_up_one" "\u001bM"\
"NEL - Next Line" "\u001bE"\
"IND - Down one line" "\u001bD"\
"HTS - Set Tab Stop" "\u001bH"\
]
#debatable whether strip should reveal the somethinghidden - some terminals don't hide it anyway.
# "PM - Privacy Message" "\u001b^somethinghidden\033\\"\
#The intent is that it's not rendered to the terminal - so on balance it seems best to strip it out.
#todo - review - printing_length calculations affected by whether terminal honours PMs or not. detect and accomodate.
proc stripansi {text} {
variable escape_terminals ;#dict
variable ansi_2byte_codes_dict
set text [convert_g0 $text]
#we process char by char - line-endings whether \r\n or \n should be processed as per any other character.
#line endings can theoretically occur within an ansi escape sequence (review e.g title?)
set inputlist [split $text ""]
set outputlist [list]
set 2bytecodes [dict values $ansi_2byte_codes_dict]
set in_escapesequence 0
#assumption - undertext already 'rendered' - ie no backspaces or carriagereturns or other cursor movement controls
set i 0
foreach u $inputlist {
set v [lindex $inputlist $i+1]
set uv ${u}${v}
if {$in_escapesequence eq "2b"} {
#2nd byte - done.
set in_escapesequence 0
} elseif {$in_escapesequence != 0} {
set escseq [dict get $escape_terminals $in_escapesequence]
if {$u in $escseq} {
set in_escapesequence 0
} elseif {$uv in $escseq} {
set in_escapseequence 2b ;#flag next byte as last in sequence
}
} else {
#handle both 7-bit and 8-bit CSI and OSC
if {[regexp {^(?:\033\[|\u009b)} $uv]} {
set in_escapesequence CSI
} elseif {[regexp {^(?:\033\]|\u009c)} $uv]} {
set in_escapesequence OSC
} elseif {$uv in $2bytecodes} {
#self-contained e.g terminal reset - don't pass through.
set in_escapesequence 2b
} else {
lappend outputlist $u
}
}
incr i
}
return [join $outputlist ""]
}
#review - what happens when no terminator?
#todo - map other chars to unicode equivs
proc convert_g0 {text} {
#using not \033 inside to stop greediness - review how does it compare to ".*?"
set re {\033\(0[^\033]*\033\(B}
set re2 {\033\(0(.*)\033\(B} ;#capturing
set parts [::punk::ansi::ta::_perlish_split $re $text]
set out ""
foreach {pt g} $parts {
append out $pt
if {$g ne ""} {
#puts --$g--
#box sample
#lqk
#x x
#mqj
#m = boxd_lur
#set map [list l \u250f k \u2513] ;#heavy
set map [list l \u250c q \u2500 k \u2510 x \u2502 m \u2514 j \u2518] ;#light
regexp $re2 $g _match contents
append out [string map $map $contents]
}
}
return $out
}
#todo - convert esc(0 graphics sequences to single char unicode equivalents e.g box drawing set
# esc) ??
proc stripansi_gx {text} {
#e.g "\033(0" - select VT100 graphics for character set G0
#e.g "\033(B" - reset
#e.g "\033)0" - select VT100 graphics for character set G1
#e.g "\033)X" - where X is any char other than 0 to reset ??
return [convert_g0 $text]
}
#CSI <n> m = SGR (Select Graphic Rendition)
variable SGR_setting_map {
bold 1 dim 2 blink 5 fastblink 6 noblink 25 hide 8 normal 22
underline 4 doubleunderline 21 nounderline 24 strike 9 nostrike 29 italic 3 noitalic 23
reverse 7 noreverse 27 defaultfg 39 defaultbg 49
overline 53 nooverline 55 frame 51 framecircle 52 noframe 54
}
variable SGR_colour_map {
black 30 red 31 green 32 yellow 33 blue 4 purple 35 cyan 36 white 37
Black 40 Red 41 Green 42 Yellow 43 Blue 44 Purple 45 Cyan 46 White 47
BLACK 100 RED 101 GREEN 102 YELLOW 103 BLUE 104 PURPLE 105 CYAN 106 WHITE 107
}
variable SGR_map
set SGR_map [dict merge $SGR_colour_map $SGR_setting_map]
proc colourmap1 {{bgname White}} {
package require textblock
set bg [textblock::block 3 33 "[a+ $bgname] [a]"]
set colormap ""
for {set i 0} {$i <= 7} {incr i} {
append colormap "_[a+ white bold 48\;5\;$i] $i [a]"
}
set map1 [overtype::left -transparent _ $bg "\n$colormap"]
return $map1
}
proc colourmap2 {{bgname White}} {
package require textblock
set bg [textblock::block 3 39 "[a+ $bgname] [a]"]
set colormap ""
for {set i 8} {$i <= 15} {incr i} {
append colormap "_[a+ black normal 48\;5\;$i] $i [a]" ;#black normal is blacker than black bold - which often displays as a grey
}
set map2 [overtype::left -transparent _ $bg "\n$colormap"]
return $map2
}
proc a? {args} {
variable SGR_setting_map
variable SGR_colour_map
if {![llength $args]} {
set out ""
append out $SGR_setting_map \n
append out $SGR_colour_map \n
try {
package require overtype ;# circular dependency - many components require overtype. Here we only need it for nice layout in the a? query proc - so we'll do a soft-dependency by only loading when needed and also wrapping in a try
set bgname "White"
set map1 [colourmap1 $bgname]
set map1 [overtype::centre -transparent 1 $map1 "[a black $bgname]Standard colours[a]"]
set map2 [colourmap2 $bgname]
set map2 [overtype::centre -transparent 1 $map2 "[a black $bgname]High-intensity colours[a]"]
append out [textblock::join [textblock::join $map1 " "] $map2] \n
#append out $map1[a] \n
#append out $map2[a] \n
} on error {result options} {
puts stderr "Failed to draw colormap"
puts stderr "$result"
} finally {
return $out
}
} else {
set result [list]
set rmap [lreverse $map]
foreach i $args {
if {[string is integer -strict $i]} {
if {[dict exists $rmap $i]} {
lappend result $i [dict get $rmap $i]
}
} else {
if {[dict exists $map $i]} {
lappend result $i [dict get $map $i]
}
}
}
return $result
}
}
proc a+ {args} {
#don't disable ansi here.
#we want this to be available to call even if ansi is off
variable SGR_map
set t [list]
foreach i $args {
if {[string is integer -strict $i]} {
lappend t $i
} elseif {[string first ";" $i] >=0} {
#literal with params
lappend t $i
} else {
if {[dict exists $SGR_map $i]} {
lappend t [dict get $SGR_map $i]
} else {
#accept examples for foreground
# 256f-# or 256fg-# or 256f#
# rgbf-<r>-<g>-<b> or rgbfg-<r>-<g>-<b> or rgbf<r>-<g>-<b>
if {[string match -nocase "256f*" $i]} {
set cc [string trim [string range $i 4 end] -gG]
lappend t "38;5;$cc"
} elseif {[string match -nocase 256b* $i]} {
set cc [string trim [string range $i 4 end] -gG]
lappend t "48;5;$cc"
} elseif {[string match -nocase rgbf* $i]} {
set rgb [string trim [string range $i 4 end] -gG]
lassign [split $rgb -] r g b
lappend t "38;2;$r;$g;$b"
} elseif {[string match -nocase rgbb* $i]} {
set rgb [string trim [string range $i 4 end] -gG]
lassign [split $rgb -] r g b
lappend t "48;2;$r;$g;$b"
}
}
}
}
# \033 - octal. equivalently \x1b in hex which is more common in documentation
if {![llength $t]} {
return "" ;# a+ nonexistent should return nothing rather than a reset ( \033\[\;m is a reset even without explicit zero(s))
}
return "\x1b\[[join $t {;}]m"
}
proc a {args} {
#don't disable ansi here.
#we want this to be available to call even if ansi is off
variable SGR_map
set t [list]
foreach i $args {
if {[string is integer -strict $i]} {
lappend t $i
} elseif {[string first ";" $i] >=0} {
#literal with params
lappend t $i
} else {
if {[dict exists $SGR_map $i]} {
lappend t [dict get $SGR_map $i]
} else {
#accept examples for foreground
# 256f-# or 256fg-# or 256f#
# rgbf-<r>-<g>-<b> or rgbfg-<r>-<g>-<b> or rgbf<r>-<g>-<b>
if {[string match -nocase "256f*" $i]} {
set cc [string trim [string range $i 4 end] -gG]
lappend t "38;5;$cc"
} elseif {[string match -nocase 256b* $i]} {
set cc [string trim [string range $i 4 end] -gG]
lappend t "48;5;$cc"
} elseif {[string match -nocase rgbf* $i]} {
set rgb [string trim [string range $i 4 end] -gG]
lassign [split $rgb -] r g b
lappend t "38;2;$r;$g;$b"
} elseif {[string match -nocase rgbb* $i]} {
set rgb [string trim [string range $i 4 end] -gG]
lassign [split $rgb -] r g b
lappend t "48;2;$r;$g;$b"
}
}
}
}
# \033 - octal. equivalently \x1b in hex which is more common in documentation
# empty list [a=] should do reset - same for [a= nonexistant]
# explicit reset at beginning of parameter list for a= (as opposed to a+)
set t [linsert $t 0 0]
return "\x1b\[[join $t {;}]m"
}
proc get_code_name {code} {
variable SGR_map
set res [list]
foreach i [split $code ";"] {
set ix [lsearch -exact $SGR_map $i]
if {$ix>-1} {lappend res [lindex $SGR_map [incr ix -1]]}
}
set res
}
proc reset {} {
return "\x1bc" ;#reset console
}
proc reset_soft {} {
return \x1b\[!p
}
proc reset_colour {} {
return "\x1b\[0m" ;#reset color only
}
# -- --- --- --- ---
proc clear {} {
return "\033\[2J"
}
proc clear_above {} {
return \033\[1J
}
proc clear_below {} {
return \033\[0J
}
proc clear_all {} {
return \033\[3J
}
#see also erase_ functions
# -- --- --- --- ---
proc cursor_on {} {
return "\033\[?25h"
}
proc cursor_off {} {
return "\033\[?25l"
}
# -- --- --- --- ---
proc move {row col} {
#aka cursor home
return \033\[${row}\;${col}H
}
proc move_emit {row col data args} {
set out ""
append out \033\[${row}\;${col}H$data
foreach {row col data} $args {
append out \033\[${row}\;${col}H$data
}
return $out
}
proc move_forward {{n 1}} {
return \033\[${n}C
}
proc move_back {{n 1}} {
return \033\[${n}D
}
proc move_up {{n 1}} {
return \033\[${n}A
}
proc move_down {{n 1}} {
return \033\[${n}B
}
# -- --- --- --- ---
# -- --- --- --- ---
proc erase_line {} {
return \033\[2K
}
proc erase_sol {} {
return \033\[1K
}
proc erase_eol {} {
return \033\[K
}
#see also clear_above clear_below
# -- --- --- --- ---
#cursor_pos unlikely to be useful on it's own like this
#Use punk::console::get_cursor_pos to emit and read result
proc cursor_pos {} {
#this function used by punk::console::get_cursor_pos
return \033\[6n
}
proc titleset {windowtitle} {
#alternative to string terminator is \007 -
return "\033\]2;$windowtitle\033\\" ;#works for xterm and most derivatives
}
#titleget - https://invisible-island.net/xterm/xterm.faq.html#how2_title
#no cross-platform ansi-only mechanism ?
proc test_decaln {} {
#Screen Alignment Test
#Reset margins, move cursor to the top left, and fill the screen with 'E'
#(doesn't work on many terminals - seems to work in FreeBSD 13.2 and wezterm on windows)
return \x1b#8
}
namespace eval internal {
proc splitn {str {len 1}} {
#from textutil::split::splitn
if {$len <= 0} {
return -code error "len must be > 0"
}
if {$len == 1} {
return [split $str {}]
}
set result [list]
set max [string length $str]
set i 0
set j [expr {$len -1}]
while {$i < $max} {
lappend result [string range $str $i $j]
incr i $len
incr j $len
}
return $result
}
#string to 2digit hex - e.g used by XTGETTCAP
proc str2hex {input} {
set 2hex ""
foreach ch [split $input ""] {
append 2hex [format %02X [scan $ch %c]]
}
return $2hex
}
proc hex2str {2digithexchars} {
set 2digithexchars [string map [list _ ""] $2digithexchars] ;#compatibility with tcl tip 551 (compatibility in the sense that users might expect to be able to use underscores and it's nice to support the syntax here too - not that it's required)
if {$2digithexchars eq ""} {
return ""
}
if {[string length $2digithexchars] % 2 != 0} {
error "hex2str requires an even number of hex digits (2 per character)"
}
set 2str ""
foreach pair [splitn $2digithexchars 2] {
append 2str [format %c 0x$pair]
}
return $2str
}
}
# -- --- --- --- --- ---
#XTGETTCAP
# xterm responds with
# DCS 1 + r Pt ST for valid requests, adding to Pt an = , and
# the value of the corresponding string that xterm would send,
# or
# DCS 0 + r ST for invalid requests.
# The strings are encoded in hexadecimal (2 digits per
# character). If more than one name is given, xterm replies
# with each name/value pair in the same response. An invalid
# name (one not found in xterm's tables) ends processing of the
# list of names.
proc xtgetcap {keylist} {
#ESC P = 0x90 = DCS = Device Control String
set hexkeys [list]
foreach k $keylist {
lappend hexkeys [util::str2hex $k]
}
set payload [join $hexkeys ";"]
return "\x1bP+q$payload\x1b\\"
}
proc xtgetcap2 {keylist} {
#ESC P = 0x90 = DCS = Device Control String
set hexkeys [list]
foreach k $keylist {
lappend hexkeys [util::str2hex $k]
}
set payload [join $hexkeys ";"]
return "\u0090+q$payload\u009c"
}
namespace eval codetype {
proc is_sgr {code} {
#SGR (Select Graphic Rendition) - codes ending in 'm' - e.g colour/underline
#we will accept and pass through the less common colon separator (ITU Open Document Architecture)
#Terminals should generally ignore it if they don't use it
regexp {\033\[[0-9;:]*m$} $code
}
proc is_cursor_move_in_line {code} {
#review - what about CSI n : m H where row n happens to be current line?
regexp {\033\[[0-9]*(:?C|D|G)$}
}
#pure SGR reset
proc is_sgr_reset {code} {
#todo 8-bit csi
regexp {\033\[0*m$} $code
}
#whether this code has 0 (or equivalently empty) parameter (but may set others)
#if an SGR code as a reset in it - we don't need to carry forward any previous SGR codes
#it generally only makes sense for the reset to be the first entry - otherwise the code has ineffective portions
#However - detecting zero or empty parameter in other positions requires knowing all other codes that may allow zero or empty params.
#We will only look at initial parameter as this is the well-formed normal case.
#Review - consider normalizing sgr codes to remove other redundancies such as setting fg or bg color twice in same code
proc has_sgr_leadingreset {code} {
set params ""
regexp {\033\[(.*)m} $code _match params
set plist [split $params ";"]
if {[string trim [lindex $plist 0] 0] eq ""} {
#e.g \033\[m \033\[0\;...m \033\[0000...m
return 1
} else {
return 0
}
}
}
namespace eval sequence_type {
proc is_Fe {code} {
if {[regexp {^\033\[[\u0040-\u005F]}]} {
#7bit - typical case
return 1
}
#8bit
#todo - all C1 escapes ? 0x80-0x90F
#This is possibly problematic as it is affected by encoding.
#According to https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
#"However, in character encodings used on modern devices such as UTF-8 or CP-1252, those codes are often used for other purposes, so only the 2-byte sequence is typically used."
return 0
}
proc is_Fs {code} {
}
}
# -- --- --- --- --- --- --- --- --- --- ---
#todo - implement colour resets like the perl module:
#https://metacpan.org/pod/Text::ANSI::Util
#(saves up all ansi color codes since previous color reset and replays the saved codes after our highlighting is done)
namespace eval ta {
namespace path ::punk::ansi
#*based* on but not identical to:
#https://github.com/perlancar/perl-Text-ANSI-Util/blob/master/lib/Text/ANSI/BaseUtil.pm
#handle both 7-bit and 8-bit csi
#review - does codepage affect this? e.g ebcdic has 8bit csi in different position
#CSI
#variable re_csi_open {(?:\033\[|\u009b)[0-9;]+} ;#too specific - doesn't detect \033\[m
variable re_csi_open {(?:\033\[|\u009b])}
#colour and style
variable re_csi_colour {(?:\033\[|\u009b)[0-9;]*m} ;#e.g \033\[31m \033\[m \033\[0m \033\[m0000m
#single "final byte" in the range 0x40–0x7E (ASCII @A–Z[\]^_`a–z{|}~).
variable re_csi_code {(?:\033\[|\u009b])[0-9;]*[a-zA-Z\\@^_|~`]}
#OSC - termnate with BEL (\a \007) or ST (string terminator \033\\)
#variable re_esc_osc1 {(?:\033\]|\u009c).*\007}
#variable re_esc_osc2 {(?:\033\]|\u009c).*\033\\}
#test - non-greedy
variable re_esc_osc1 {(?:\033\]|\u009c).*?\007}
variable re_esc_osc2 {(?:\033\]|\u009c).*?\033\\}
variable re_ansi_detect "${re_csi_open}|${re_esc_osc1}|${re_esc_osc2}"
#detect any ansi escapes
#review - only detect 'complete' codes - or just use the opening escapes for performance?
proc detect {text} {
variable re_ansi_detect
#variable re_csi_open
#variable re_esc_osc1
#variable re_esc_osc2
#todo - other escape sequences
#expr {[regexp $re_csi_open $text] || [regexp $re_esc_osc1 $text] || [regexp $re_esc_osc2 $text]}
expr {[regexp $re_ansi_detect $text]}
}
#not in perl ta
proc detect_csi {text} {
variable re_csi_colour
expr {[regexp $re_csi_colour $text]}
}
proc strip {text} {
tailcall stripansi $text
}
#note this is character length after stripping ansi codes - not the printing length
proc length {text} {
string length [stripansi $text]
}
#todo - handle newlines
#not in perl ta
proc printing_length {text} {
}
proc trunc {text width args} {
}
#not in perl ta
#returns just the plaintext portions in a list
proc split_at_codes {text} {
variable re_esc_osc1
variable re_esc_osc2
variable re_csi_code
textutil::splitx $text "${re_csi_code}|${re_esc_osc1}|${re_esc_osc2}"
}
# -- --- --- --- --- ---
#Split $text to a list containing alternating ANSI color codes and text.
#ANSI color codes are always on the second element, fourth, and so on.
#(ie plaintext on odd list-indices ansi on even indices)
# Example:
#ta_split_codes "" # => ""
#ta_split_codes "a" # => "a"
#ta_split_codes "a\e[31m" # => {"a" "\e[31m"}
#ta_split_codes "\e[31ma" # => {"" "\e[31m" "a"}
#ta_split_codes "\e[31ma\e[0m" # => {"" "\e[31m" "a" "\e[0m"}
#ta_split_codes "\e[31ma\e[0mb" # => {"" "\e[31m" "a" "\e[0m", "b"}
#ta_split_codes "\e[31m\e[0mb" # => {"" "\e[31m\e[0m" "b"}
#
proc split_codes {text} {
variable re_esc_osc1
variable re_esc_osc2
variable re_csi_code
set re "(?:${re_csi_code}|${re_esc_osc1}|${re_esc_osc2})+"
return [_perlish_split $re $text]
}
#like split_codes - but each ansi-escape is split out separately (with empty string of plaintext between codes so odd/even plain ansi still holds)
proc split_codes_single {text} {
variable re_esc_osc1
variable re_esc_osc2
variable re_csi_code
set re "${re_csi_code}|${re_esc_osc1}|${re_esc_osc2}"
return [_perlish_split $re $text]
}
#review - tcl greedy expressions may match multiple in one element
proc _perlish_split {re text} {
if {[string length $text] == 0} {
return {}
}
set list [list]
set start 0
while {[regexp -start $start -indices -- $re $text match]} {
lassign $match matchStart matchEnd
lappend list [string range $text $start $matchStart-1] [string range $text $matchStart $matchEnd]
set start [expr {$matchEnd+1}]
}
lappend list [string range $text $start end]
return $list
}
proc _ws_split {text} {
regexp -all -inline {(?:\S+)|(?:\s+)} $text
}
# -- --- --- --- --- ---
}
# -- --- --- --- --- --- --- --- --- --- ---
}
# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++
## Ready
package provide punk::ansi [namespace eval punk::ansi {
variable version
set version 999999.0a1.0
}]
return

3
src/modules/punk/ansi-buildversion.txt

@ -0,0 +1,3 @@
0.1.0
#First line must be a semantic version number
#all other lines are ignored.

983
src/modules/punk/char-999999.0a1.0.tm

File diff suppressed because it is too large Load Diff

5855
src/modules/punk/char/codepages/cp437.bdf

File diff suppressed because it is too large Load Diff

254
src/modules/punk/char/codepages/cp437.txt

@ -0,0 +1,254 @@
=01 U+263A WHITE SMILING FACE
=02 U+263B BLACK SMILING FACE
=03 U+2665 BLACK HEART SUIT
=04 U+2666 BLACK DIAMOND SUIT
=05 U+2663 BLACK CLUB SUIT
=06 U+2660 BLACK SPADE SUIT
=07 U+2022 BULLET
=08 U+25D8 INVERSE BULLET
=09 U+25E6 WHITE BULLET
=0A U+25D9 INVERSE WHITE CIRCLE
=0B U+2642 MALE SIGN
=0C U+2640 FEMALE SIGN
=0D U+266A EIGHTH NOTE
=0E U+266B BEAMED EIGHTH NOTES
=0F U+263C WHITE SUN WITH RAYS
=10 U+25B6 BLACK RIGHT-POINTING TRIANGLE
=11 U+25C0 BLACK LEFT-POINTING TRIANGLE
=12 U+2195 UP DOWN ARROW
=13 U+203C DOUBLE EXCLAMATION MARK
=14 U+00B6 PILCROW SIGN
=15 U+00A7 SECTION SIGN
=16 U+25AC BLACK RECTANGLE
=17 U+21A8 UP DOWN ARROW WITH BASE
=18 U+2191 UPWARDS ARROW
=19 U+2193 DOWNWARDS ARROW
=1A U+2192 RIGHTWARDS ARROW
=1B U+2190 LEFTWARDS ARROW
=1C U+2310 REVERSED NOT SIGN
=1D U+2194 LEFT RIGHT ARROW
=1E U+25B2 BLACK UP-POINTING TRIANGLE
=1F U+25BC BLACK DOWN-POINTING TRIANGLE
=20 U+0020 SPACE
=21 U+0021 EXCLAMATION MARK
=22 U+0022 QUOTATION MARK
=23 U+0023 NUMBER SIGN
=24 U+0024 DOLLAR SIGN
=25 U+0025 PERCENT SIGN
=26 U+0026 AMPERSAND
=27 U+0027 APOSTROPHE
=28 U+0028 LEFT PARENTHESIS
=29 U+0029 RIGHT PARENTHESIS
=2A U+002A ASTERISK
=2B U+002B PLUS SIGN
=2C U+002C COMMA
=2D U+002D HYPHEN-MINUS
=2E U+002E FULL STOP
=2F U+002F SOLIDUS
=30 U+0030 DIGIT ZERO
=31 U+0031 DIGIT ONE
=32 U+0032 DIGIT TWO
=33 U+0033 DIGIT THREE
=34 U+0034 DIGIT FOUR
=35 U+0035 DIGIT FIVE
=36 U+0036 DIGIT SIX
=37 U+0037 DIGIT SEVEN
=38 U+0038 DIGIT EIGHT
=39 U+0039 DIGIT NINE
=3A U+003A COLON
=3B U+003B SEMICOLON
=3C U+003C LESS-THAN SIGN
=3D U+003D EQUALS SIGN
=3E U+003E GREATER-THAN SIGN
=3F U+003F QUESTION MARK
=40 U+0040 COMMERCIAL AT
=41 U+0041 LATIN CAPITAL LETTER A
=42 U+0042 LATIN CAPITAL LETTER B
=43 U+0043 LATIN CAPITAL LETTER C
=44 U+0044 LATIN CAPITAL LETTER D
=45 U+0045 LATIN CAPITAL LETTER E
=46 U+0046 LATIN CAPITAL LETTER F
=47 U+0047 LATIN CAPITAL LETTER G
=48 U+0048 LATIN CAPITAL LETTER H
=49 U+0049 LATIN CAPITAL LETTER I
=4A U+004A LATIN CAPITAL LETTER J
=4B U+004B LATIN CAPITAL LETTER K
=4C U+004C LATIN CAPITAL LETTER L
=4D U+004D LATIN CAPITAL LETTER M
=4E U+004E LATIN CAPITAL LETTER N
=4F U+004F LATIN CAPITAL LETTER O
=50 U+0050 LATIN CAPITAL LETTER P
=51 U+0051 LATIN CAPITAL LETTER Q
=52 U+0052 LATIN CAPITAL LETTER R
=53 U+0053 LATIN CAPITAL LETTER S
=54 U+0054 LATIN CAPITAL LETTER T
=55 U+0055 LATIN CAPITAL LETTER U
=56 U+0056 LATIN CAPITAL LETTER V
=57 U+0057 LATIN CAPITAL LETTER W
=58 U+0058 LATIN CAPITAL LETTER X
=59 U+0059 LATIN CAPITAL LETTER Y
=5A U+005A LATIN CAPITAL LETTER Z
=5B U+005B LEFT SQUARE BRACKET
=5C U+005C REVERSE SOLIDUS
=5D U+005D RIGHT SQUARE BRACKET
=5E U+005E CIRCUMFLEX ACCENT
=5F U+005F LOW LINE
=60 U+0060 GRAVE ACCENT
=61 U+0061 LATIN SMALL LETTER A
=62 U+0062 LATIN SMALL LETTER B
=63 U+0063 LATIN SMALL LETTER C
=64 U+0064 LATIN SMALL LETTER D
=65 U+0065 LATIN SMALL LETTER E
=66 U+0066 LATIN SMALL LETTER F
=67 U+0067 LATIN SMALL LETTER G
=68 U+0068 LATIN SMALL LETTER H
=69 U+0069 LATIN SMALL LETTER I
=6A U+006A LATIN SMALL LETTER J
=6B U+006B LATIN SMALL LETTER K
=6C U+006C LATIN SMALL LETTER L
=6D U+006D LATIN SMALL LETTER M
=6E U+006E LATIN SMALL LETTER N
=6F U+006F LATIN SMALL LETTER O
=70 U+0070 LATIN SMALL LETTER P
=71 U+0071 LATIN SMALL LETTER Q
=72 U+0072 LATIN SMALL LETTER R
=73 U+0073 LATIN SMALL LETTER S
=74 U+0074 LATIN SMALL LETTER T
=75 U+0075 LATIN SMALL LETTER U
=76 U+0076 LATIN SMALL LETTER V
=77 U+0077 LATIN SMALL LETTER W
=78 U+0078 LATIN SMALL LETTER X
=79 U+0079 LATIN SMALL LETTER Y
=7A U+007A LATIN SMALL LETTER Z
=7B U+007B LEFT CURLY BRACKET
=7C U+007C VERTICAL LINE
=7D U+007D RIGHT CURLY BRACKET
=7E U+007E TILDE
=80 U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA
=81 U+00FC LATIN SMALL LETTER U WITH DIAERESIS
=82 U+00E9 LATIN SMALL LETTER E WITH ACUTE
=83 U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
=84 U+00E4 LATIN SMALL LETTER A WITH DIAERESIS
=85 U+00E0 LATIN SMALL LETTER A WITH GRAVE
=86 U+00E5 LATIN SMALL LETTER A WITH RING ABOVE
=87 U+00E7 LATIN SMALL LETTER C WITH CEDILLA
=88 U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
=89 U+00EB LATIN SMALL LETTER E WITH DIAERESIS
=8A U+00E8 LATIN SMALL LETTER E WITH GRAVE
=8B U+00EF LATIN SMALL LETTER I WITH DIAERESIS
=8C U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
=8D U+00EC LATIN SMALL LETTER I WITH GRAVE
=8E U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
=8F U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
=90 U+00C9 LATIN CAPITAL LETTER E WITH ACUTE
=91 U+00E6 LATIN SMALL LETTER AE
=92 U+00C6 LATIN CAPITAL LETTER AE
=93 U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
=94 U+00F6 LATIN SMALL LETTER O WITH DIAERESIS
=95 U+00F2 LATIN SMALL LETTER O WITH GRAVE
=96 U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
=97 U+00F9 LATIN SMALL LETTER U WITH GRAVE
=98 U+00FF LATIN SMALL LETTER Y WITH DIAERESIS
=99 U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
=9A U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS
=9B U+00A2 CENT SIGN
=9C U+00A3 POUND SIGN
=9D U+00A5 YEN SIGN
=9E U+20A7 PESETA SIGN
=9F U+0192 LATIN SMALL LETTER F WITH HOOK
=A0 U+00E1 LATIN SMALL LETTER A WITH ACUTE
=A1 U+00ED LATIN SMALL LETTER I WITH ACUTE
=A2 U+00F3 LATIN SMALL LETTER O WITH ACUTE
=A3 U+00FA LATIN SMALL LETTER U WITH ACUTE
=A4 U+00F1 LATIN SMALL LETTER N WITH TILDE
=A5 U+00D1 LATIN CAPITAL LETTER N WITH TILDE
=A6 U+00AA FEMININE ORDINAL INDICATOR
=A7 U+00BA MASCULINE ORDINAL INDICATOR
=A8 U+00BF INVERTED QUESTION MARK
=A9 U+2310 REVERSED NOT SIGN
=AA U+00AC NOT SIGN
=AB U+00BD VULGAR FRACTION ONE HALF
=AC U+00BC VULGAR FRACTION ONE QUARTER
=AD U+00A1 INVERTED EXCLAMATION MARK
=AE U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
=AF U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
=B0 U+2591 LIGHT SHADE
=B1 U+2592 MEDIUM SHADE
=B2 U+2593 DARK SHADE
=B3 U+2502 BOX DRAWINGS LIGHT VERTICAL
=B4 U+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT
=B5 U+2561 BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
=B6 U+2562 BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
=B7 U+2556 BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
=B8 U+2555 BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
=B9 U+2563 BOX DRAWINGS DOUBLE VERTICAL AND LEFT
=BA U+2551 BOX DRAWINGS DOUBLE VERTICAL
=BB U+2557 BOX DRAWINGS DOUBLE DOWN AND LEFT
=BC U+255D BOX DRAWINGS DOUBLE UP AND LEFT
=BD U+255C BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
=BE U+255B BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
=BF U+2510 BOX DRAWINGS LIGHT DOWN AND LEFT
=C0 U+2514 BOX DRAWINGS LIGHT UP AND RIGHT
=C1 U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL
=C2 U+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
=C3 U+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT
=C4 U+2500 BOX DRAWINGS LIGHT HORIZONTAL
=C5 U+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
=C6 U+255E BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
=C7 U+255F BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
=C8 U+255A BOX DRAWINGS DOUBLE UP AND RIGHT
=C9 U+2554 BOX DRAWINGS DOUBLE DOWN AND RIGHT
=CA U+2569 BOX DRAWINGS DOUBLE UP AND HORIZONTAL
=CB U+2566 BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
=CC U+2560 BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
=CD U+2550 BOX DRAWINGS DOUBLE HORIZONTAL
=CE U+256C BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
=CF U+2567 BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
=D0 U+2568 BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
=D1 U+2564 BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
=D2 U+2565 BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
=D3 U+2559 BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
=D4 U+2558 BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
=D5 U+2552 BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
=D6 U+2553 BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
=D7 U+256B BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
=D8 U+256A BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
=D9 U+2518 BOX DRAWINGS LIGHT UP AND LEFT
=DA U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT
=DB U+2588 FULL BLOCK
=DC U+2584 LOWER HALF BLOCK
=DD U+258C LEFT HALF BLOCK
=DE U+2590 RIGHT HALF BLOCK
=DF U+2580 UPPER HALF BLOCK
=E0 U+03B1 GREEK SMALL LETTER ALPHA
=E1 U+03B2 GREEK SMALL LETTER BETA
=E2 U+0393 GREEK CAPITAL LETTER GAMMA
=E3 U+03C0 GREEK SMALL LETTER PI
=E4 U+03A3 GREEK CAPITAL LETTER SIGMA
=E5 U+03C3 GREEK SMALL LETTER SIGMA
=E6 U+03BC GREEK SMALL LETTER MU
=E7 U+03C4 GREEK SMALL LETTER TAU
=E8 U+03A6 GREEK CAPITAL LETTER PHI
=E9 U+0398 GREEK CAPITAL LETTER THETA
=EA U+03A9 GREEK CAPITAL LETTER OMEGA
=EB U+03B4 GREEK SMALL LETTER DELTA
=EC U+221E INFINITY
=ED U+2205 EMPTY SET
=EE U+2208 ELEMENT OF
=EF U+2229 INTERSECTION
=F0 U+2261 IDENTICAL TO
=F1 U+00B1 PLUS-MINUS SIGN
=F2 U+2265 GREATER-THAN OR EQUAL TO
=F3 U+2264 LESS-THAN OR EQUAL TO
=F4 U+2320 TOP HALF INTEGRAL
=F5 U+2321 BOTTOM HALF INTEGRAL
=F6 U+00F7 DIVISION SIGN
=F7 U+2248 ALMOST EQUAL TO
=F8 U+00B0 DEGREE SIGN
=F9 U+2219 BULLET OPERATOR
=FA U+00B7 MIDDLE DOT
=FB U+221A SQUARE ROOT
=FC U+207F SUPERSCRIPT LATIN SMALL LETTER N
=FD U+00B2 SUPERSCRIPT TWO
=FE U+25A0 BLACK SQUARE
=FF U+00A0 NO-BREAK SPACE

5142
src/modules/punk/char/codepages/cp850.bdf

File diff suppressed because it is too large Load Diff

223
src/modules/punk/char/codepages/cp850.txt

@ -0,0 +1,223 @@
=20 U+0020 SPACE
=21 U+0021 EXCLAMATION MARK
=22 U+0022 QUOTATION MARK
=23 U+0023 NUMBER SIGN
=24 U+0024 DOLLAR SIGN
=25 U+0025 PERCENT SIGN
=26 U+0026 AMPERSAND
=27 U+0027 APOSTROPHE
=28 U+0028 LEFT PARENTHESIS
=29 U+0029 RIGHT PARENTHESIS
=2A U+002A ASTERISK
=2B U+002B PLUS SIGN
=2C U+002C COMMA
=2D U+002D HYPHEN-MINUS
=2E U+002E FULL STOP
=2F U+002F SOLIDUS
=30 U+0030 DIGIT ZERO
=31 U+0031 DIGIT ONE
=32 U+0032 DIGIT TWO
=33 U+0033 DIGIT THREE
=34 U+0034 DIGIT FOUR
=35 U+0035 DIGIT FIVE
=36 U+0036 DIGIT SIX
=37 U+0037 DIGIT SEVEN
=38 U+0038 DIGIT EIGHT
=39 U+0039 DIGIT NINE
=3A U+003A COLON
=3B U+003B SEMICOLON
=3C U+003C LESS-THAN SIGN
=3D U+003D EQUALS SIGN
=3E U+003E GREATER-THAN SIGN
=3F U+003F QUESTION MARK
=40 U+0040 COMMERCIAL AT
=41 U+0041 LATIN CAPITAL LETTER A
=42 U+0042 LATIN CAPITAL LETTER B
=43 U+0043 LATIN CAPITAL LETTER C
=44 U+0044 LATIN CAPITAL LETTER D
=45 U+0045 LATIN CAPITAL LETTER E
=46 U+0046 LATIN CAPITAL LETTER F
=47 U+0047 LATIN CAPITAL LETTER G
=48 U+0048 LATIN CAPITAL LETTER H
=49 U+0049 LATIN CAPITAL LETTER I
=4A U+004A LATIN CAPITAL LETTER J
=4B U+004B LATIN CAPITAL LETTER K
=4C U+004C LATIN CAPITAL LETTER L
=4D U+004D LATIN CAPITAL LETTER M
=4E U+004E LATIN CAPITAL LETTER N
=4F U+004F LATIN CAPITAL LETTER O
=50 U+0050 LATIN CAPITAL LETTER P
=51 U+0051 LATIN CAPITAL LETTER Q
=52 U+0052 LATIN CAPITAL LETTER R
=53 U+0053 LATIN CAPITAL LETTER S
=54 U+0054 LATIN CAPITAL LETTER T
=55 U+0055 LATIN CAPITAL LETTER U
=56 U+0056 LATIN CAPITAL LETTER V
=57 U+0057 LATIN CAPITAL LETTER W
=58 U+0058 LATIN CAPITAL LETTER X
=59 U+0059 LATIN CAPITAL LETTER Y
=5A U+005A LATIN CAPITAL LETTER Z
=5B U+005B LEFT SQUARE BRACKET
=5C U+005C REVERSE SOLIDUS
=5D U+005D RIGHT SQUARE BRACKET
=5E U+005E CIRCUMFLEX ACCENT
=5F U+005F LOW LINE
=60 U+0060 GRAVE ACCENT
=61 U+0061 LATIN SMALL LETTER A
=62 U+0062 LATIN SMALL LETTER B
=63 U+0063 LATIN SMALL LETTER C
=64 U+0064 LATIN SMALL LETTER D
=65 U+0065 LATIN SMALL LETTER E
=66 U+0066 LATIN SMALL LETTER F
=67 U+0067 LATIN SMALL LETTER G
=68 U+0068 LATIN SMALL LETTER H
=69 U+0069 LATIN SMALL LETTER I
=6A U+006A LATIN SMALL LETTER J
=6B U+006B LATIN SMALL LETTER K
=6C U+006C LATIN SMALL LETTER L
=6D U+006D LATIN SMALL LETTER M
=6E U+006E LATIN SMALL LETTER N
=6F U+006F LATIN SMALL LETTER O
=70 U+0070 LATIN SMALL LETTER P
=71 U+0071 LATIN SMALL LETTER Q
=72 U+0072 LATIN SMALL LETTER R
=73 U+0073 LATIN SMALL LETTER S
=74 U+0074 LATIN SMALL LETTER T
=75 U+0075 LATIN SMALL LETTER U
=76 U+0076 LATIN SMALL LETTER V
=77 U+0077 LATIN SMALL LETTER W
=78 U+0078 LATIN SMALL LETTER X
=79 U+0079 LATIN SMALL LETTER Y
=7A U+007A LATIN SMALL LETTER Z
=7B U+007B LEFT CURLY BRACKET
=7C U+007C VERTICAL LINE
=7D U+007D RIGHT CURLY BRACKET
=7E U+007E TILDE
=80 U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA
=81 U+00FC LATIN SMALL LETTER U WITH DIAERESIS
=82 U+00E9 LATIN SMALL LETTER E WITH ACUTE
=83 U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
=84 U+00E4 LATIN SMALL LETTER A WITH DIAERESIS
=85 U+00E0 LATIN SMALL LETTER A WITH GRAVE
=86 U+00E5 LATIN SMALL LETTER A WITH RING ABOVE
=87 U+00E7 LATIN SMALL LETTER C WITH CEDILLA
=88 U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
=89 U+00EB LATIN SMALL LETTER E WITH DIAERESIS
=8A U+00E8 LATIN SMALL LETTER E WITH GRAVE
=8B U+00EF LATIN SMALL LETTER I WITH DIAERESIS
=8C U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
=8D U+00EC LATIN SMALL LETTER I WITH GRAVE
=8E U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
=8F U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
=90 U+00C9 LATIN CAPITAL LETTER E WITH ACUTE
=91 U+00E6 LATIN SMALL LETTER AE
=92 U+00C6 LATIN CAPITAL LETTER AE
=93 U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
=94 U+00F6 LATIN SMALL LETTER O WITH DIAERESIS
=95 U+00F2 LATIN SMALL LETTER O WITH GRAVE
=96 U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
=97 U+00F9 LATIN SMALL LETTER U WITH GRAVE
=98 U+00FF LATIN SMALL LETTER Y WITH DIAERESIS
=99 U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
=9A U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS
=9B U+00F8 LATIN SMALL LETTER O WITH STROKE
=9C U+00A3 POUND SIGN
=9D U+00D8 LATIN CAPITAL LETTER O WITH STROKE
=9E U+00D7 MULTIPLICATION SIGN
=9F U+0192 LATIN SMALL LETTER F WITH HOOK
=A0 U+00E1 LATIN SMALL LETTER A WITH ACUTE
=A1 U+00ED LATIN SMALL LETTER I WITH ACUTE
=A2 U+00F3 LATIN SMALL LETTER O WITH ACUTE
=A3 U+00FA LATIN SMALL LETTER U WITH ACUTE
=A4 U+00F1 LATIN SMALL LETTER N WITH TILDE
=A5 U+00D1 LATIN CAPITAL LETTER N WITH TILDE
=A6 U+00AA FEMININE ORDINAL INDICATOR
=A7 U+00BA MASCULINE ORDINAL INDICATOR
=A8 U+00BF INVERTED QUESTION MARK
=A9 U+00AE REGISTERED SIGN
=AA U+00AC NOT SIGN
=AB U+00BD VULGAR FRACTION ONE HALF
=AC U+00BC VULGAR FRACTION ONE QUARTER
=AD U+00A1 INVERTED EXCLAMATION MARK
=AE U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
=AF U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
=B0 U+2591 LIGHT SHADE
=B1 U+2592 MEDIUM SHADE
=B2 U+2593 DARK SHADE
=B3 U+2502 BOX DRAWINGS LIGHT VERTICAL
=B4 U+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT
=B5 U+00C1 LATIN CAPITAL LETTER A WITH ACUTE
=B6 U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
=B7 U+00C0 LATIN CAPITAL LETTER A WITH GRAVE
=B8 U+00A9 COPYRIGHT SIGN
=B9 U+2563 BOX DRAWINGS DOUBLE VERTICAL AND LEFT
=BA U+2551 BOX DRAWINGS DOUBLE VERTICAL
=BB U+2557 BOX DRAWINGS DOUBLE DOWN AND LEFT
=BC U+255D BOX DRAWINGS DOUBLE UP AND LEFT
=BD U+00A2 CENT SIGN
=BE U+00A5 YEN SIGN
=BF U+2510 BOX DRAWINGS LIGHT DOWN AND LEFT
=C0 U+2514 BOX DRAWINGS LIGHT UP AND RIGHT
=C1 U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL
=C2 U+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
=C3 U+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT
=C4 U+2500 BOX DRAWINGS LIGHT HORIZONTAL
=C5 U+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
=C6 U+00E3 LATIN SMALL LETTER A WITH TILDE
=C7 U+00C3 LATIN CAPITAL LETTER A WITH TILDE
=C8 U+255A BOX DRAWINGS DOUBLE UP AND RIGHT
=C9 U+2554 BOX DRAWINGS DOUBLE DOWN AND RIGHT
=CA U+2569 BOX DRAWINGS DOUBLE UP AND HORIZONTAL
=CB U+2566 BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
=CC U+2560 BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
=CD U+2550 BOX DRAWINGS DOUBLE HORIZONTAL
=CE U+256C BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
=CF U+00A4 CURRENCY SIGN
=D0 U+00F0 LATIN SMALL LETTER ETH
=D1 U+00D0 LATIN CAPITAL LETTER ETH
=D2 U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX
=D3 U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS
=D4 U+00C8 LATIN CAPITAL LETTER E WITH GRAVE
=D5 U+0131 LATIN SMALL LETTER DOTLESS I
=D6 U+00CD LATIN CAPITAL LETTER I WITH ACUTE
=D7 U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
=D8 U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS
=D9 U+2518 BOX DRAWINGS LIGHT UP AND LEFT
=DA U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT
=DB U+2588 FULL BLOCK
=DC U+2584 LOWER HALF BLOCK
=DD U+00A6 BROKEN BAR
=DE U+00CC LATIN CAPITAL LETTER I WITH GRAVE
=DF U+2580 UPPER HALF BLOCK
=E0 U+00D3 LATIN CAPITAL LETTER O WITH ACUTE
=E1 U+00DF LATIN SMALL LETTER SHARP S
=E2 U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
=E3 U+00D2 LATIN CAPITAL LETTER O WITH GRAVE
=E4 U+00F5 LATIN SMALL LETTER O WITH TILDE
=E5 U+00D5 LATIN CAPITAL LETTER O WITH TILDE
=E6 U+00B5 MICRO SIGN
=E7 U+00FE LATIN SMALL LETTER THORN
=E8 U+00DE LATIN CAPITAL LETTER THORN
=E9 U+00DA LATIN CAPITAL LETTER U WITH ACUTE
=EA U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX
=EB U+00D9 LATIN CAPITAL LETTER U WITH GRAVE
=EC U+00FD LATIN SMALL LETTER Y WITH ACUTE
=ED U+00DD LATIN CAPITAL LETTER Y WITH ACUTE
=EE U+00AF MACRON
=EF U+00B4 ACUTE ACCENT
=F0 U+00AD SOFT HYPHEN
=F1 U+00B1 PLUS-MINUS SIGN
=F2 U+2017 DOUBLE LOW LINE
=F3 U+00BE VULGAR FRACTION THREE QUARTERS
=F4 U+00B6 PILCROW SIGN
=F5 U+00A7 SECTION SIGN
=F6 U+00F7 DIVISION SIGN
=F7 U+00B8 CEDILLA
=F8 U+00B0 DEGREE SIGN
=F9 U+00A8 DIAERESIS
=FA U+00B7 MIDDLE DOT
=FB U+00B9 SUPERSCRIPT ONE
=FC U+00B3 SUPERSCRIPT THREE
=FD U+00B2 SUPERSCRIPT TWO
=FE U+25A0 BLACK SQUARE
=FF U+00A0 NO-BREAK SPACE

3692
src/modules/punk/char/nerd-fonts-glyph-list.txt

File diff suppressed because it is too large Load Diff

993
src/modules/punk/char/unicode15.1/ArabicShaping.txt

@ -0,0 +1,993 @@
# ArabicShaping-15.1.0.txt
# Date: 2023-01-05
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# This file is a normative contributory data file in the
# Unicode Character Database.
#
# This file defines the Joining_Type and Joining_Group property
# values for Arabic, Syriac, N'Ko, Mandaic, and Manichaean positional
# shaping, repeating in machine readable form the information
# exemplified in Tables 9-3, 9-8, 9-9, 9-10, 9-14, 9-15, 9-16, 9-19,
# 9-20, 10-4, 10-5, 10-6, 10-7, and 19-5 of The Unicode Standard core
# specification. This file also defines Joining_Type values for
# Mongolian, Phags-pa, Psalter Pahlavi, Sogdian, Old Uyghur, Chorasmian,
# and Adlam positional shaping,
# and Joining_Type and Joining_Group values for Hanifi Rohingya positional shaping,
# which are not listed in tables in the standard.
#
# See Sections 9.2, 9.3, 9.5, 10.5, 10.6, 13.5, 14.4, 14.10, 14.11, 16.14, 19.4, and 19.9
# of The Unicode Standard core specification for more information.
#
# Each line contains four fields, separated by a semicolon.
#
# Field 0: the code point, in 4-digit hexadecimal
# form, of a character.
#
# Field 1: gives a short schematic name for that character.
# The schematic name is descriptive of the shape, based as
# consistently as possible on a name for the skeleton and
# then the diacritic marks applied to the skeleton, if any.
# Note that this schematic name is considered a comment,
# and does not constitute a formal property value.
#
# Field 2: defines the joining type (property name: Joining_Type)
# R Right_Joining
# L Left_Joining
# D Dual_Joining
# C Join_Causing
# U Non_Joining
# T Transparent
#
# See Section 9.2, Arabic for more information on these joining types.
# Note that for cursive joining scripts which are typically rendered
# top-to-bottom, rather than right-to-left, Joining_Type=L conventionally
# refers to bottom joining, and Joining_Type=R conventionally refers
# to top joining. See Section 14.4, Phags-pa for more information on the
# interpretation of joining types in vertical layout.
#
# Field 3: defines the joining group (property name: Joining_Group)
#
# The values of the joining group are based schematically on character
# names. Where a schematic character name consists of two or more parts
# separated by spaces, the formal Joining_Group property value, as specified in
# PropertyValueAliases.txt, consists of the same name parts joined by
# underscores. Hence, the entry:
#
# 0629; TEH MARBUTA; R; TEH MARBUTA
#
# corresponds to [Joining_Group = Teh_Marbuta].
#
# Note: The property value now designated [Joining_Group = Teh_Marbuta_Goal]
# used to apply to both of the following characters
# in earlier versions of the standard:
#
# U+06C2 ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
# U+06C3 ARABIC LETTER TEH MARBUTA GOAL
#
# However, it currently applies only to U+06C3, and *not* to U+06C2.
# To avoid destabilizing existing Joining_Group property aliases, the
# prior Joining_Group value for U+06C3 (Hamza_On_Heh_Goal) has been
# retained as a property value alias, despite the fact that it
# no longer applies to its namesake character, U+06C2.
# See PropertyValueAliases.txt.
#
# When other cursive scripts are added to the Unicode Standard in the
# future, the joining group value of all its letters will default to
# jg=No_Joining_Group in this data file. Other, more specific
# joining group values will be defined only if an explicit proposal
# to define those values exactly has been approved by the UTC. This
# is the convention exemplified by the N'Ko, Mandaic, Mongolian,
# Phags-pa, Psalter Pahlavi, Sogdian, Old Uyghur, Chorasmian, and Adlam scripts.
# Only the Arabic, Manichaean, and Syriac scripts currently have
# explicit joining group values defined for all characters, including
# those which have only a single character in a particular Joining_Group
# class. Hanifi Rohingya has explicit Joining_Group values assigned only for
# the few characters which share a particular Joining_Group class, but
# assigns jg=No_Joining_Group to all the singletons.
#
# Note: Code points that are not explicitly listed in this file are
# either of joining type T or U:
#
# - Those that are not explicitly listed and that are of General Category Mn, Me, or Cf
# have joining type T.
# - All others not explicitly listed have joining type U.
#
# For an explicit listing of all characters of joining type T, see
# the derived property file DerivedJoiningType.txt.
#
# #############################################################
# Unicode; Schematic Name; Joining Type; Joining Group
# Arabic Characters
0600; ARABIC NUMBER SIGN; U; No_Joining_Group
0601; ARABIC SIGN SANAH; U; No_Joining_Group
0602; ARABIC FOOTNOTE MARKER; U; No_Joining_Group
0603; ARABIC SIGN SAFHA; U; No_Joining_Group
0604; ARABIC SIGN SAMVAT; U; No_Joining_Group
0605; ARABIC NUMBER MARK ABOVE; U; No_Joining_Group
0608; ARABIC RAY; U; No_Joining_Group
060B; AFGHANI SIGN; U; No_Joining_Group
0620; DOTLESS YEH WITH SEPARATE RING BELOW; D; YEH
0621; HAMZA; U; No_Joining_Group
0622; ALEF WITH MADDA ABOVE; R; ALEF
0623; ALEF WITH HAMZA ABOVE; R; ALEF
0624; WAW WITH HAMZA ABOVE; R; WAW
0625; ALEF WITH HAMZA BELOW; R; ALEF
0626; DOTLESS YEH WITH HAMZA ABOVE; D; YEH
0627; ALEF; R; ALEF
0628; BEH; D; BEH
0629; TEH MARBUTA; R; TEH MARBUTA
062A; DOTLESS BEH WITH 2 DOTS ABOVE; D; BEH
062B; DOTLESS BEH WITH 3 DOTS ABOVE; D; BEH
062C; HAH WITH DOT BELOW; D; HAH
062D; HAH; D; HAH
062E; HAH WITH DOT ABOVE; D; HAH
062F; DAL; R; DAL
0630; DAL WITH DOT ABOVE; R; DAL
0631; REH; R; REH
0632; REH WITH DOT ABOVE; R; REH
0633; SEEN; D; SEEN
0634; SEEN WITH 3 DOTS ABOVE; D; SEEN
0635; SAD; D; SAD
0636; SAD WITH DOT ABOVE; D; SAD
0637; TAH; D; TAH
0638; TAH WITH DOT ABOVE; D; TAH
0639; AIN; D; AIN
063A; AIN WITH DOT ABOVE; D; AIN
063B; KEHEH WITH 2 DOTS ABOVE; D; GAF
063C; KEHEH WITH 3 DOTS BELOW; D; GAF
063D; FARSI YEH WITH INVERTED V ABOVE; D; FARSI YEH
063E; FARSI YEH WITH 2 DOTS ABOVE; D; FARSI YEH
063F; FARSI YEH WITH 3 DOTS ABOVE; D; FARSI YEH
0640; TATWEEL; C; No_Joining_Group
0641; FEH; D; FEH
0642; QAF; D; QAF
0643; KAF; D; KAF
0644; LAM; D; LAM
0645; MEEM; D; MEEM
0646; NOON; D; NOON
0647; HEH; D; HEH
0648; WAW; R; WAW
0649; DOTLESS YEH; D; YEH
064A; YEH; D; YEH
066E; DOTLESS BEH; D; BEH
066F; DOTLESS QAF; D; QAF
0671; ALEF WITH WASLA ABOVE; R; ALEF
0672; ALEF WITH WAVY HAMZA ABOVE; R; ALEF
0673; ALEF WITH WAVY HAMZA BELOW; R; ALEF
0674; HIGH HAMZA; U; No_Joining_Group
0675; HIGH HAMZA ALEF; R; ALEF
0676; HIGH HAMZA WAW; R; WAW
0677; HIGH HAMZA WAW WITH COMMA ABOVE; R; WAW
0678; HIGH HAMZA DOTLESS YEH; D; YEH
0679; DOTLESS BEH WITH TAH ABOVE; D; BEH
067A; DOTLESS BEH WITH VERTICAL 2 DOTS ABOVE; D; BEH
067B; DOTLESS BEH WITH VERTICAL 2 DOTS BELOW; D; BEH
067C; DOTLESS BEH WITH ATTACHED RING BELOW AND 2 DOTS ABOVE; D; BEH
067D; DOTLESS BEH WITH INVERTED 3 DOTS ABOVE; D; BEH
067E; DOTLESS BEH WITH 3 DOTS BELOW; D; BEH
067F; DOTLESS BEH WITH 4 DOTS ABOVE; D; BEH
0680; DOTLESS BEH WITH 4 DOTS BELOW; D; BEH
0681; HAH WITH HAMZA ABOVE; D; HAH
0682; HAH WITH VERTICAL 2 DOTS ABOVE; D; HAH
0683; HAH WITH 2 DOTS BELOW; D; HAH
0684; HAH WITH VERTICAL 2 DOTS BELOW; D; HAH
0685; HAH WITH 3 DOTS ABOVE; D; HAH
0686; HAH WITH 3 DOTS BELOW; D; HAH
0687; HAH WITH 4 DOTS BELOW; D; HAH
0688; DAL WITH TAH ABOVE; R; DAL
0689; DAL WITH ATTACHED RING BELOW; R; DAL
068A; DAL WITH DOT BELOW; R; DAL
068B; DAL WITH DOT BELOW AND TAH ABOVE; R; DAL
068C; DAL WITH 2 DOTS ABOVE; R; DAL
068D; DAL WITH 2 DOTS BELOW; R; DAL
068E; DAL WITH 3 DOTS ABOVE; R; DAL
068F; DAL WITH INVERTED 3 DOTS ABOVE; R; DAL
0690; DAL WITH 4 DOTS ABOVE; R; DAL
0691; REH WITH TAH ABOVE; R; REH
0692; REH WITH V ABOVE; R; REH
0693; REH WITH ATTACHED RING BELOW; R; REH
0694; REH WITH DOT BELOW; R; REH
0695; REH WITH V BELOW; R; REH
0696; REH WITH DOT BELOW AND DOT WITHIN; R; REH
0697; REH WITH 2 DOTS ABOVE; R; REH
0698; REH WITH 3 DOTS ABOVE; R; REH
0699; REH WITH 4 DOTS ABOVE; R; REH
069A; SEEN WITH DOT BELOW AND DOT ABOVE; D; SEEN
069B; SEEN WITH 3 DOTS BELOW; D; SEEN
069C; SEEN WITH 3 DOTS BELOW AND 3 DOTS ABOVE; D; SEEN
069D; SAD WITH 2 DOTS BELOW; D; SAD
069E; SAD WITH 3 DOTS ABOVE; D; SAD
069F; TAH WITH 3 DOTS ABOVE; D; TAH
06A0; AIN WITH 3 DOTS ABOVE; D; AIN
06A1; DOTLESS FEH; D; FEH
06A2; DOTLESS FEH WITH DOT BELOW; D; FEH
06A3; FEH WITH DOT BELOW; D; FEH
06A4; DOTLESS FEH WITH 3 DOTS ABOVE; D; FEH
06A5; DOTLESS FEH WITH 3 DOTS BELOW; D; FEH
06A6; DOTLESS FEH WITH 4 DOTS ABOVE; D; FEH
06A7; DOTLESS QAF WITH DOT ABOVE; D; QAF
06A8; DOTLESS QAF WITH 3 DOTS ABOVE; D; QAF
06A9; KEHEH; D; GAF
06AA; SWASH KAF; D; SWASH KAF
06AB; KEHEH WITH ATTACHED RING BELOW; D; GAF
06AC; KAF WITH DOT ABOVE; D; KAF
06AD; KAF WITH 3 DOTS ABOVE; D; KAF
06AE; KAF WITH 3 DOTS BELOW; D; KAF
06AF; GAF; D; GAF
06B0; GAF WITH ATTACHED RING BELOW; D; GAF
06B1; GAF WITH 2 DOTS ABOVE; D; GAF
06B2; GAF WITH 2 DOTS BELOW; D; GAF
06B3; GAF WITH VERTICAL 2 DOTS BELOW; D; GAF
06B4; GAF WITH 3 DOTS ABOVE; D; GAF
06B5; LAM WITH V ABOVE; D; LAM
06B6; LAM WITH DOT ABOVE; D; LAM
06B7; LAM WITH 3 DOTS ABOVE; D; LAM
06B8; LAM WITH 3 DOTS BELOW; D; LAM
06B9; NOON WITH DOT BELOW; D; NOON
06BA; DOTLESS NOON; D; NOON
06BB; DOTLESS NOON WITH TAH ABOVE; D; NOON
06BC; NOON WITH ATTACHED RING BELOW; D; NOON
06BD; NYA; D; NYA
06BE; KNOTTED HEH; D; KNOTTED HEH
06BF; HAH WITH 3 DOTS BELOW AND DOT ABOVE; D; HAH
06C0; DOTLESS TEH MARBUTA WITH HAMZA ABOVE; R; TEH MARBUTA
06C1; HEH GOAL; D; HEH GOAL
06C2; HEH GOAL WITH HAMZA ABOVE; D; HEH GOAL
06C3; TEH MARBUTA GOAL; R; TEH MARBUTA GOAL
06C4; WAW WITH ATTACHED RING WITHIN; R; WAW
06C5; WAW WITH LOOP; R; WAW
06C6; WAW WITH V ABOVE; R; WAW
06C7; WAW WITH COMMA ABOVE; R; WAW
06C8; WAW WITH ALEF ABOVE; R; WAW
06C9; WAW WITH INVERTED V ABOVE; R; WAW
06CA; WAW WITH 2 DOTS ABOVE; R; WAW
06CB; WAW WITH 3 DOTS ABOVE; R; WAW
06CC; FARSI YEH; D; FARSI YEH
06CD; YEH WITH TAIL; R; YEH WITH TAIL
06CE; FARSI YEH WITH V ABOVE; D; FARSI YEH
06CF; WAW WITH DOT ABOVE; R; WAW
06D0; DOTLESS YEH WITH VERTICAL 2 DOTS BELOW; D; YEH
06D1; DOTLESS YEH WITH 3 DOTS BELOW; D; YEH
06D2; YEH BARREE; R; YEH BARREE
06D3; YEH BARREE WITH HAMZA ABOVE; R; YEH BARREE
06D5; DOTLESS TEH MARBUTA; R; TEH MARBUTA
06DD; ARABIC END OF AYAH; U; No_Joining_Group
06EE; DAL WITH INVERTED V ABOVE; R; DAL
06EF; REH WITH INVERTED V ABOVE; R; REH
06FA; SEEN WITH DOT BELOW AND 3 DOTS ABOVE; D; SEEN
06FB; SAD WITH DOT BELOW AND DOT ABOVE; D; SAD
06FC; AIN WITH DOT BELOW AND DOT ABOVE; D; AIN
06FF; KNOTTED HEH WITH INVERTED V ABOVE; D; KNOTTED HEH
# Syriac Characters
070F; SYRIAC ABBREVIATION MARK; T; No_Joining_Group
0710; ALAPH; R; ALAPH
0712; BETH; D; BETH
0713; GAMAL; D; GAMAL
0714; GAMAL GARSHUNI; D; GAMAL
0715; DALATH; R; DALATH RISH
0716; DOTLESS DALATH RISH; R; DALATH RISH
0717; HE; R; HE
0718; WAW; R; SYRIAC WAW
0719; ZAIN; R; ZAIN
071A; HETH; D; HETH
071B; TETH; D; TETH
071C; TETH GARSHUNI; D; TETH
071D; YUDH; D; YUDH
071E; YUDH HE; R; YUDH HE
071F; KAPH; D; KAPH
0720; LAMADH; D; LAMADH
0721; MIM; D; MIM
0722; NUN; D; NUN
0723; SEMKATH; D; SEMKATH
0724; FINAL SEMKATH; D; FINAL SEMKATH
0725; E; D; E
0726; PE; D; PE
0727; REVERSED PE; D; REVERSED PE
0728; SADHE; R; SADHE
0729; QAPH; D; QAPH
072A; RISH; R; DALATH RISH
072B; SHIN; D; SHIN
072C; TAW; R; TAW
072D; PERSIAN BHETH; D; BETH
072E; PERSIAN GHAMAL; D; GAMAL
072F; PERSIAN DHALATH; R; DALATH RISH
074D; SOGDIAN ZHAIN; R; ZHAIN
074E; SOGDIAN KHAPH; D; KHAPH
074F; SOGDIAN FE; D; FE
# Arabic Supplement Characters
0750; DOTLESS BEH WITH HORIZONTAL 3 DOTS BELOW; D; BEH
0751; BEH WITH 3 DOTS ABOVE; D; BEH
0752; DOTLESS BEH WITH INVERTED 3 DOTS BELOW; D; BEH
0753; DOTLESS BEH WITH INVERTED 3 DOTS BELOW AND 2 DOTS ABOVE; D; BEH
0754; DOTLESS BEH WITH 2 DOTS BELOW AND DOT ABOVE; D; BEH
0755; DOTLESS BEH WITH INVERTED V BELOW; D; BEH
0756; DOTLESS BEH WITH V ABOVE; D; BEH
0757; HAH WITH 2 DOTS ABOVE; D; HAH
0758; HAH WITH INVERTED 3 DOTS BELOW; D; HAH
0759; DAL WITH VERTICAL 2 DOTS BELOW AND TAH ABOVE; R; DAL
075A; DAL WITH INVERTED V BELOW; R; DAL
075B; REH WITH BAR; R; REH
075C; SEEN WITH 4 DOTS ABOVE; D; SEEN
075D; AIN WITH 2 DOTS ABOVE; D; AIN
075E; AIN WITH INVERTED 3 DOTS ABOVE; D; AIN
075F; AIN WITH VERTICAL 2 DOTS ABOVE; D; AIN
0760; DOTLESS FEH WITH 2 DOTS BELOW; D; FEH
0761; DOTLESS FEH WITH INVERTED 3 DOTS BELOW; D; FEH
0762; KEHEH WITH DOT ABOVE; D; GAF
0763; KEHEH WITH 3 DOTS ABOVE; D; GAF
0764; KEHEH WITH INVERTED 3 DOTS BELOW; D; GAF
0765; MEEM WITH DOT ABOVE; D; MEEM
0766; MEEM WITH DOT BELOW; D; MEEM
0767; NOON WITH 2 DOTS BELOW; D; NOON
0768; NOON WITH TAH ABOVE; D; NOON
0769; NOON WITH V ABOVE; D; NOON
076A; LAM WITH BAR; D; LAM
076B; REH WITH VERTICAL 2 DOTS ABOVE; R; REH
076C; REH WITH HAMZA ABOVE; R; REH
076D; SEEN WITH VERTICAL 2 DOTS ABOVE; D; SEEN
076E; HAH WITH TAH BELOW; D; HAH
076F; HAH WITH TAH AND 2 DOTS BELOW; D; HAH
0770; SEEN WITH 2 DOTS AND TAH ABOVE; D; SEEN
0771; REH WITH 2 DOTS AND TAH ABOVE; R; REH
0772; HAH WITH TAH ABOVE; D; HAH
0773; ALEF WITH DIGIT TWO ABOVE; R; ALEF
0774; ALEF WITH DIGIT THREE ABOVE; R; ALEF
0775; FARSI YEH WITH DIGIT TWO ABOVE; D; FARSI YEH
0776; FARSI YEH WITH DIGIT THREE ABOVE; D; FARSI YEH
0777; DOTLESS YEH WITH DIGIT FOUR BELOW; D; YEH
0778; WAW WITH DIGIT TWO ABOVE; R; WAW
0779; WAW WITH DIGIT THREE ABOVE; R; WAW
077A; BURUSHASKI YEH BARREE WITH DIGIT TWO ABOVE; D; BURUSHASKI YEH BARREE
077B; BURUSHASKI YEH BARREE WITH DIGIT THREE ABOVE; D; BURUSHASKI YEH BARREE
077C; HAH WITH DIGIT FOUR BELOW; D; HAH
077D; SEEN WITH DIGIT FOUR ABOVE; D; SEEN
077E; SEEN WITH INVERTED V ABOVE; D; SEEN
077F; KAF WITH 2 DOTS ABOVE; D; KAF
# N'Ko Characters
07CA; NKO A; D; No_Joining_Group
07CB; NKO EE; D; No_Joining_Group
07CC; NKO I; D; No_Joining_Group
07CD; NKO E; D; No_Joining_Group
07CE; NKO U; D; No_Joining_Group
07CF; NKO OO; D; No_Joining_Group
07D0; NKO O; D; No_Joining_Group
07D1; NKO DAGBASINNA; D; No_Joining_Group
07D2; NKO N; D; No_Joining_Group
07D3; NKO BA; D; No_Joining_Group
07D4; NKO PA; D; No_Joining_Group
07D5; NKO TA; D; No_Joining_Group
07D6; NKO JA; D; No_Joining_Group
07D7; NKO CHA; D; No_Joining_Group
07D8; NKO DA; D; No_Joining_Group
07D9; NKO RA; D; No_Joining_Group
07DA; NKO RRA; D; No_Joining_Group
07DB; NKO SA; D; No_Joining_Group
07DC; NKO GBA; D; No_Joining_Group
07DD; NKO FA; D; No_Joining_Group
07DE; NKO KA; D; No_Joining_Group
07DF; NKO LA; D; No_Joining_Group
07E0; NKO NA WOLOSO; D; No_Joining_Group
07E1; NKO MA; D; No_Joining_Group
07E2; NKO NYA; D; No_Joining_Group
07E3; NKO NA; D; No_Joining_Group
07E4; NKO HA; D; No_Joining_Group
07E5; NKO WA; D; No_Joining_Group
07E6; NKO YA; D; No_Joining_Group
07E7; NKO NYA WOLOSO; D; No_Joining_Group
07E8; NKO JONA JA; D; No_Joining_Group
07E9; NKO JONA CHA; D; No_Joining_Group
07EA; NKO JONA RA; D; No_Joining_Group
07FA; NKO LAJANYALAN; C; No_Joining_Group
# Mandaic Characters
0840; MANDAIC HALQA; R; No_Joining_Group
0841; MANDAIC AB; D; No_Joining_Group
0842; MANDAIC AG; D; No_Joining_Group
0843; MANDAIC AD; D; No_Joining_Group
0844; MANDAIC AH; D; No_Joining_Group
0845; MANDAIC USHENNA; D; No_Joining_Group
0846; MANDAIC AZ; R; No_Joining_Group
0847; MANDAIC IT; R; No_Joining_Group
0848; MANDAIC ATT; D; No_Joining_Group
0849; MANDAIC AKSA; R; No_Joining_Group
084A; MANDAIC AK; D; No_Joining_Group
084B; MANDAIC AL; D; No_Joining_Group
084C; MANDAIC AM; D; No_Joining_Group
084D; MANDAIC AN; D; No_Joining_Group
084E; MANDAIC AS; D; No_Joining_Group
084F; MANDAIC IN; D; No_Joining_Group
0850; MANDAIC AP; D; No_Joining_Group
0851; MANDAIC ASZ; D; No_Joining_Group
0852; MANDAIC AQ; D; No_Joining_Group
0853; MANDAIC AR; D; No_Joining_Group
0854; MANDAIC ASH; R; No_Joining_Group
0855; MANDAIC AT; D; No_Joining_Group
0856; MANDAIC DUSHENNA; R; No_Joining_Group
0857; MANDAIC KAD; R; No_Joining_Group
0858; MANDAIC AIN; R; No_Joining_Group
# Syriac Supplement Characters
0860; MALAYALAM NGA; D; MALAYALAM NGA
0861; MALAYALAM JA; U; MALAYALAM JA
0862; MALAYALAM NYA; D; MALAYALAM NYA
0863; MALAYALAM TTA; D; MALAYALAM TTA
0864; MALAYALAM NNA; D; MALAYALAM NNA
0865; MALAYALAM NNNA; D; MALAYALAM NNNA
0866; MALAYALAM BHA; U; MALAYALAM BHA
0867; MALAYALAM RA; R; MALAYALAM RA
0868; MALAYALAM LLA; D; MALAYALAM LLA
0869; MALAYALAM LLLA; R; MALAYALAM LLLA
086A; MALAYALAM SSA; R; MALAYALAM SSA
# Arabic Extended-B Characters
0870; ALEF WITH ATTACHED FATHA; R; ALEF
0871; ALEF WITH ATTACHED TOP RIGHT FATHA; R; ALEF
0872; ALEF WITH RIGHT MIDDLE STROKE; R; ALEF
0873; ALEF WITH LEFT MIDDLE STROKE; R; ALEF
0874; ALEF WITH ATTACHED KASRA; R; ALEF
0875; ALEF WITH ATTACHED BOTTOM RIGHT KASRA; R; ALEF
0876; ALEF WITH ATTACHED ROUND DOT ABOVE; R; ALEF
0877; ALEF WITH ATTACHED RIGHT ROUND DOT; R; ALEF
0878; ALEF WITH ATTACHED LEFT ROUND DOT; R; ALEF
0879; ALEF WITH ATTACHED ROUND DOT BELOW; R; ALEF
087A; ALEF WITH DOT ABOVE; R; ALEF
087B; ALEF WITH ATTACHED TOP RIGHT FATHA AND DOT ABOVE; R; ALEF
087C; ALEF WITH RIGHT MIDDLE STROKE AND DOT ABOVE; R; ALEF
087D; ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND DOT ABOVE; R; ALEF
087E; ALEF WITH ATTACHED TOP RIGHT FATHA AND LEFT RING; R; ALEF
087F; ALEF WITH RIGHT MIDDLE STROKE AND LEFT RING; R; ALEF
0880; ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND LEFT RING; R; ALEF
0881; ALEF WITH ATTACHED RIGHT HAMZA; R; ALEF
0882; ALEF WITH ATTACHED LEFT HAMZA; R; ALEF
0883; TATWEEL WITH OVERSTRUCK HAMZA; C; No_Joining_Group
0884; TATWEEL WITH OVERSTRUCK WAW; C; No_Joining_Group
0885; TATWEEL WITH TWO DOTS BELOW; C; No_Joining_Group
0886; THIN YEH; D; THIN YEH
0887; ARABIC BASELINE ROUND DOT; U; No_Joining_Group
0888; ARABIC RAISED ROUND DOT; U; No_Joining_Group
0889; DOTLESS NOON WITH INVERTED V ABOVE; D; NOON
088A; HAH WITH INVERTED V BELOW; D; HAH
088B; TAH WITH DOT BELOW; D; TAH
088C; TAH WITH 3 DOTS BELOW; D; TAH
088D; KEHEH WITH VERTICAL 2 DOTS BELOW; D; GAF
088E; VERTICAL TAIL; R; VERTICAL TAIL
0890; ARABIC POUND MARK ABOVE; U; No_Joining_Group
0891; ARABIC PIASTRE MARK ABOVE; U; No_Joining_Group
# Arabic Extended-A Characters
08A0; DOTLESS BEH WITH V BELOW; D; BEH
08A1; BEH WITH HAMZA ABOVE; D; BEH
08A2; HAH WITH DOT BELOW AND 2 DOTS ABOVE; D; HAH
08A3; TAH WITH 2 DOTS ABOVE; D; TAH
08A4; DOTLESS FEH WITH DOT BELOW AND 3 DOTS ABOVE; D; FEH
08A5; QAF WITH DOT BELOW; D; QAF
08A6; LAM WITH DOUBLE BAR; D; LAM
08A7; MEEM WITH 3 DOTS ABOVE; D; MEEM
08A8; YEH WITH HAMZA ABOVE; D; YEH
08A9; YEH WITH DOT ABOVE; D; YEH
08AA; REH WITH LOOP; R; REH
08AB; WAW WITH DOT WITHIN; R; WAW
08AC; ROHINGYA YEH; R; ROHINGYA YEH
08AD; LOW ALEF; U; No_Joining_Group
08AE; DAL WITH 3 DOTS BELOW; R; DAL
08AF; SAD WITH 3 DOTS BELOW; D; SAD
08B0; KEHEH WITH STROKE BELOW; D; GAF
08B1; STRAIGHT WAW; R; STRAIGHT WAW
08B2; REH WITH DOT AND INVERTED V ABOVE; R; REH
08B3; AIN WITH 3 DOTS BELOW; D; AIN
08B4; KAF WITH DOT BELOW; D; KAF
08B5; DOTLESS QAF WITH DOT BELOW; D; QAF
08B6; BEH WITH MEEM ABOVE; D; BEH
08B7; DOTLESS BEH WITH 3 DOTS BELOW AND MEEM ABOVE; D; BEH
08B8; DOTLESS BEH WITH TEH ABOVE; D; BEH
08B9; REH WITH NOON ABOVE; R; REH
08BA; YEH WITH NOON ABOVE; D; YEH
08BB; AFRICAN FEH; D; AFRICAN FEH
08BC; AFRICAN QAF; D; AFRICAN QAF
08BD; AFRICAN NOON; D; AFRICAN NOON
08BE; DOTLESS BEH WITH 3 DOTS BELOW AND V ABOVE; D; BEH
08BF; DOTLESS BEH WITH 2 DOTS AND V ABOVE; D; BEH
08C0; DOTLESS BEH WITH TAH AND V ABOVE; D; BEH
08C1; HAH WITH 3 DOTS BELOW AND V ABOVE; D; HAH
08C2; KEHEH WITH V ABOVE; D; GAF
08C3; AIN WITH DIAMOND 4 DOTS ABOVE; D; AIN
08C4; AFRICAN QAF WITH 3 DOTS ABOVE; D; AFRICAN QAF
08C5; HAH WITH DOT BELOW AND 3 DOTS ABOVE; D; HAH
08C6; HAH WITH DIAMOND 4 DOTS BELOW; D; HAH
08C7; LAM WITH TAH ABOVE; D; LAM
08C8; KEHEH WITH ELONGATED HAMZA ABOVE; D; GAF
08E2; ARABIC DISPUTED END OF AYAH; U; No_Joining_Group
# Mongolian Characters
1806; MONGOLIAN TODO SOFT HYPHEN; U; No_Joining_Group
1807; MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER; D; No_Joining_Group
180A; MONGOLIAN NIRUGU; C; No_Joining_Group
180E; MONGOLIAN VOWEL SEPARATOR; U; No_Joining_Group
1820; MONGOLIAN A; D; No_Joining_Group
1821; MONGOLIAN E; D; No_Joining_Group
1822; MONGOLIAN I; D; No_Joining_Group
1823; MONGOLIAN O; D; No_Joining_Group
1824; MONGOLIAN U; D; No_Joining_Group
1825; MONGOLIAN OE; D; No_Joining_Group
1826; MONGOLIAN UE; D; No_Joining_Group
1827; MONGOLIAN EE; D; No_Joining_Group
1828; MONGOLIAN NA; D; No_Joining_Group
1829; MONGOLIAN ANG; D; No_Joining_Group
182A; MONGOLIAN BA; D; No_Joining_Group
182B; MONGOLIAN PA; D; No_Joining_Group
182C; MONGOLIAN QA; D; No_Joining_Group
182D; MONGOLIAN GA; D; No_Joining_Group
182E; MONGOLIAN MA; D; No_Joining_Group
182F; MONGOLIAN LA; D; No_Joining_Group
1830; MONGOLIAN SA; D; No_Joining_Group
1831; MONGOLIAN SHA; D; No_Joining_Group
1832; MONGOLIAN TA; D; No_Joining_Group
1833; MONGOLIAN DA; D; No_Joining_Group
1834; MONGOLIAN CHA; D; No_Joining_Group
1835; MONGOLIAN JA; D; No_Joining_Group
1836; MONGOLIAN YA; D; No_Joining_Group
1837; MONGOLIAN RA; D; No_Joining_Group
1838; MONGOLIAN WA; D; No_Joining_Group
1839; MONGOLIAN FA; D; No_Joining_Group
183A; MONGOLIAN KA; D; No_Joining_Group
183B; MONGOLIAN KHA; D; No_Joining_Group
183C; MONGOLIAN TSA; D; No_Joining_Group
183D; MONGOLIAN ZA; D; No_Joining_Group
183E; MONGOLIAN HAA; D; No_Joining_Group
183F; MONGOLIAN ZRA; D; No_Joining_Group
1840; MONGOLIAN LHA; D; No_Joining_Group
1841; MONGOLIAN ZHI; D; No_Joining_Group
1842; MONGOLIAN CHI; D; No_Joining_Group
1843; MONGOLIAN TODO LONG VOWEL SIGN; D; No_Joining_Group
1844; MONGOLIAN TODO E; D; No_Joining_Group
1845; MONGOLIAN TODO I; D; No_Joining_Group
1846; MONGOLIAN TODO O; D; No_Joining_Group
1847; MONGOLIAN TODO U; D; No_Joining_Group
1848; MONGOLIAN TODO OE; D; No_Joining_Group
1849; MONGOLIAN TODO UE; D; No_Joining_Group
184A; MONGOLIAN TODO ANG; D; No_Joining_Group
184B; MONGOLIAN TODO BA; D; No_Joining_Group
184C; MONGOLIAN TODO PA; D; No_Joining_Group
184D; MONGOLIAN TODO QA; D; No_Joining_Group
184E; MONGOLIAN TODO GA; D; No_Joining_Group
184F; MONGOLIAN TODO MA; D; No_Joining_Group
1850; MONGOLIAN TODO TA; D; No_Joining_Group
1851; MONGOLIAN TODO DA; D; No_Joining_Group
1852; MONGOLIAN TODO CHA; D; No_Joining_Group
1853; MONGOLIAN TODO JA; D; No_Joining_Group
1854; MONGOLIAN TODO TSA; D; No_Joining_Group
1855; MONGOLIAN TODO YA; D; No_Joining_Group
1856; MONGOLIAN TODO WA; D; No_Joining_Group
1857; MONGOLIAN TODO KA; D; No_Joining_Group
1858; MONGOLIAN TODO GAA; D; No_Joining_Group
1859; MONGOLIAN TODO HAA; D; No_Joining_Group
185A; MONGOLIAN TODO JIA; D; No_Joining_Group
185B; MONGOLIAN TODO NIA; D; No_Joining_Group
185C; MONGOLIAN TODO DZA; D; No_Joining_Group
185D; MONGOLIAN SIBE E; D; No_Joining_Group
185E; MONGOLIAN SIBE I; D; No_Joining_Group
185F; MONGOLIAN SIBE IY; D; No_Joining_Group
1860; MONGOLIAN SIBE UE; D; No_Joining_Group
1861; MONGOLIAN SIBE U; D; No_Joining_Group
1862; MONGOLIAN SIBE ANG; D; No_Joining_Group
1863; MONGOLIAN SIBE KA; D; No_Joining_Group
1864; MONGOLIAN SIBE GA; D; No_Joining_Group
1865; MONGOLIAN SIBE HA; D; No_Joining_Group
1866; MONGOLIAN SIBE PA; D; No_Joining_Group
1867; MONGOLIAN SIBE SHA; D; No_Joining_Group
1868; MONGOLIAN SIBE TA; D; No_Joining_Group
1869; MONGOLIAN SIBE DA; D; No_Joining_Group
186A; MONGOLIAN SIBE JA; D; No_Joining_Group
186B; MONGOLIAN SIBE FA; D; No_Joining_Group
186C; MONGOLIAN SIBE GAA; D; No_Joining_Group
186D; MONGOLIAN SIBE HAA; D; No_Joining_Group
186E; MONGOLIAN SIBE TSA; D; No_Joining_Group
186F; MONGOLIAN SIBE ZA; D; No_Joining_Group
1870; MONGOLIAN SIBE RAA; D; No_Joining_Group
1871; MONGOLIAN SIBE CHA; D; No_Joining_Group
1872; MONGOLIAN SIBE ZHA; D; No_Joining_Group
1873; MONGOLIAN MANCHU I; D; No_Joining_Group
1874; MONGOLIAN MANCHU KA; D; No_Joining_Group
1875; MONGOLIAN MANCHU RA; D; No_Joining_Group
1876; MONGOLIAN MANCHU FA; D; No_Joining_Group
1877; MONGOLIAN MANCHU ZHA; D; No_Joining_Group
1878; MONGOLIAN MANCHU CHA WITH 2 DOTS; D; No_Joining_Group
1880; MONGOLIAN ALI GALI ANUSVARA ONE; U; No_Joining_Group
1881; MONGOLIAN ALI GALI VISARGA ONE; U; No_Joining_Group
1882; MONGOLIAN ALI GALI DAMARU; U; No_Joining_Group
1883; MONGOLIAN ALI GALI UBADAMA; U; No_Joining_Group
1884; MONGOLIAN ALI GALI INVERTED UBADAMA; U; No_Joining_Group
1885; MONGOLIAN ALI GALI BALUDA; T; No_Joining_Group
1886; MONGOLIAN ALI GALI THREE BALUDA; T; No_Joining_Group
1887; MONGOLIAN ALI GALI A; D; No_Joining_Group
1888; MONGOLIAN ALI GALI I; D; No_Joining_Group
1889; MONGOLIAN ALI GALI KA; D; No_Joining_Group
188A; MONGOLIAN ALI GALI NGA; D; No_Joining_Group
188B; MONGOLIAN ALI GALI CA; D; No_Joining_Group
188C; MONGOLIAN ALI GALI TTA; D; No_Joining_Group
188D; MONGOLIAN ALI GALI TTHA; D; No_Joining_Group
188E; MONGOLIAN ALI GALI DDA; D; No_Joining_Group
188F; MONGOLIAN ALI GALI NNA; D; No_Joining_Group
1890; MONGOLIAN ALI GALI TA; D; No_Joining_Group
1891; MONGOLIAN ALI GALI DA; D; No_Joining_Group
1892; MONGOLIAN ALI GALI PA; D; No_Joining_Group
1893; MONGOLIAN ALI GALI PHA; D; No_Joining_Group
1894; MONGOLIAN ALI GALI SSA; D; No_Joining_Group
1895; MONGOLIAN ALI GALI ZHA; D; No_Joining_Group
1896; MONGOLIAN ALI GALI ZA; D; No_Joining_Group
1897; MONGOLIAN ALI GALI AH; D; No_Joining_Group
1898; MONGOLIAN TODO ALI GALI TA; D; No_Joining_Group
1899; MONGOLIAN TODO ALI GALI ZHA; D; No_Joining_Group
189A; MONGOLIAN MANCHU ALI GALI GHA; D; No_Joining_Group
189B; MONGOLIAN MANCHU ALI GALI NGA; D; No_Joining_Group
189C; MONGOLIAN MANCHU ALI GALI CA; D; No_Joining_Group
189D; MONGOLIAN MANCHU ALI GALI JHA; D; No_Joining_Group
189E; MONGOLIAN MANCHU ALI GALI TTA; D; No_Joining_Group
189F; MONGOLIAN MANCHU ALI GALI DDHA; D; No_Joining_Group
18A0; MONGOLIAN MANCHU ALI GALI TA; D; No_Joining_Group
18A1; MONGOLIAN MANCHU ALI GALI DHA; D; No_Joining_Group
18A2; MONGOLIAN MANCHU ALI GALI SSA; D; No_Joining_Group
18A3; MONGOLIAN MANCHU ALI GALI CYA; D; No_Joining_Group
18A4; MONGOLIAN MANCHU ALI GALI ZHA; D; No_Joining_Group
18A5; MONGOLIAN MANCHU ALI GALI ZA; D; No_Joining_Group
18A6; MONGOLIAN ALI GALI HALF U; D; No_Joining_Group
18A7; MONGOLIAN ALI GALI HALF YA; D; No_Joining_Group
18A8; MONGOLIAN MANCHU ALI GALI BHA; D; No_Joining_Group
18AA; MONGOLIAN MANCHU ALI GALI LHA; D; No_Joining_Group
# Other
200C; ZERO WIDTH NON-JOINER; U; No_Joining_Group
200D; ZERO WIDTH JOINER; C; No_Joining_Group
202F; NARROW NO-BREAK SPACE; U; No_Joining_Group
2066; LEFT-TO-RIGHT ISOLATE; U; No_Joining_Group
2067; RIGHT-TO-LEFT ISOLATE; U; No_Joining_Group
2068; FIRST STRONG ISOLATE; U; No_Joining_Group
2069; POP DIRECTIONAL ISOLATE; U; No_Joining_Group
# Phags-Pa Characters
A840; PHAGS-PA KA; D; No_Joining_Group
A841; PHAGS-PA KHA; D; No_Joining_Group
A842; PHAGS-PA GA; D; No_Joining_Group
A843; PHAGS-PA NGA; D; No_Joining_Group
A844; PHAGS-PA CA; D; No_Joining_Group
A845; PHAGS-PA CHA; D; No_Joining_Group
A846; PHAGS-PA JA; D; No_Joining_Group
A847; PHAGS-PA NYA; D; No_Joining_Group
A848; PHAGS-PA TA; D; No_Joining_Group
A849; PHAGS-PA THA; D; No_Joining_Group
A84A; PHAGS-PA DA; D; No_Joining_Group
A84B; PHAGS-PA NA; D; No_Joining_Group
A84C; PHAGS-PA PA; D; No_Joining_Group
A84D; PHAGS-PA PHA; D; No_Joining_Group
A84E; PHAGS-PA BA; D; No_Joining_Group
A84F; PHAGS-PA MA; D; No_Joining_Group
A850; PHAGS-PA TSA; D; No_Joining_Group
A851; PHAGS-PA TSHA; D; No_Joining_Group
A852; PHAGS-PA DZA; D; No_Joining_Group
A853; PHAGS-PA WA; D; No_Joining_Group
A854; PHAGS-PA ZHA; D; No_Joining_Group
A855; PHAGS-PA ZA; D; No_Joining_Group
A856; PHAGS-PA SMALL A; D; No_Joining_Group
A857; PHAGS-PA YA; D; No_Joining_Group
A858; PHAGS-PA RA; D; No_Joining_Group
A859; PHAGS-PA LA; D; No_Joining_Group
A85A; PHAGS-PA SHA; D; No_Joining_Group
A85B; PHAGS-PA SA; D; No_Joining_Group
A85C; PHAGS-PA HA; D; No_Joining_Group
A85D; PHAGS-PA A; D; No_Joining_Group
A85E; PHAGS-PA I; D; No_Joining_Group
A85F; PHAGS-PA U; D; No_Joining_Group
A860; PHAGS-PA E; D; No_Joining_Group
A861; PHAGS-PA O; D; No_Joining_Group
A862; PHAGS-PA QA; D; No_Joining_Group
A863; PHAGS-PA XA; D; No_Joining_Group
A864; PHAGS-PA FA; D; No_Joining_Group
A865; PHAGS-PA GGA; D; No_Joining_Group
A866; PHAGS-PA EE; D; No_Joining_Group
A867; PHAGS-PA SUBJOINED WA; D; No_Joining_Group
A868; PHAGS-PA SUBJOINED YA; D; No_Joining_Group
A869; PHAGS-PA TTA; D; No_Joining_Group
A86A; PHAGS-PA TTHA; D; No_Joining_Group
A86B; PHAGS-PA DDA; D; No_Joining_Group
A86C; PHAGS-PA NNA; D; No_Joining_Group
A86D; PHAGS-PA ALTERNATE YA; D; No_Joining_Group
A86E; PHAGS-PA VOICELESS SHA; D; No_Joining_Group
A86F; PHAGS-PA VOICED HA; D; No_Joining_Group
A870; PHAGS-PA ASPIRATED FA; D; No_Joining_Group
A871; PHAGS-PA SUBJOINED RA; D; No_Joining_Group
A872; PHAGS-PA SUPERFIXED RA; L; No_Joining_Group
A873; PHAGS-PA CANDRABINDU; U; No_Joining_Group
# Manichaean Characters
10AC0; MANICHAEAN ALEPH; D; MANICHAEAN ALEPH
10AC1; MANICHAEAN BETH; D; MANICHAEAN BETH
10AC2; MANICHAEAN BETH WITH 2 DOTS ABOVE; D; MANICHAEAN BETH
10AC3; MANICHAEAN GIMEL; D; MANICHAEAN GIMEL
10AC4; MANICHAEAN GIMEL WITH ATTACHED RING BELOW; D; MANICHAEAN GIMEL
10AC5; MANICHAEAN DALETH; R; MANICHAEAN DALETH
10AC6; MANICHAEAN HE; U; No_Joining_Group
10AC7; MANICHAEAN WAW; R; MANICHAEAN WAW
10AC8; MANICHAEAN UD; U; No_Joining_Group
10AC9; MANICHAEAN ZAYIN; R; MANICHAEAN ZAYIN
10ACA; MANICHAEAN ZAYIN WITH 2 DOTS ABOVE; R; MANICHAEAN ZAYIN
10ACB; MANICHAEAN JAYIN; U; No_Joining_Group
10ACC; MANICHAEAN JAYIN WITH 2 DOTS ABOVE; U; No_Joining_Group
10ACD; MANICHAEAN HETH; L; MANICHAEAN HETH
10ACE; MANICHAEAN TETH; R; MANICHAEAN TETH
10ACF; MANICHAEAN YODH; R; MANICHAEAN YODH
10AD0; MANICHAEAN KAPH; R; MANICHAEAN KAPH
10AD1; MANICHAEAN KAPH WITH DOT ABOVE; R; MANICHAEAN KAPH
10AD2; MANICHAEAN KAPH WITH 2 DOTS ABOVE; R; MANICHAEAN KAPH
10AD3; MANICHAEAN LAMEDH; D; MANICHAEAN LAMEDH
10AD4; MANICHAEAN DHAMEDH; D; MANICHAEAN DHAMEDH
10AD5; MANICHAEAN THAMEDH; D; MANICHAEAN THAMEDH
10AD6; MANICHAEAN MEM; D; MANICHAEAN MEM
10AD7; MANICHAEAN NUN; L; MANICHAEAN NUN
10AD8; MANICHAEAN SAMEKH; D; MANICHAEAN SAMEKH
10AD9; MANICHAEAN AYIN; D; MANICHAEAN AYIN
10ADA; MANICHAEAN AYIN WITH 2 DOTS ABOVE; D; MANICHAEAN AYIN
10ADB; MANICHAEAN PE; D; MANICHAEAN PE
10ADC; MANICHAEAN PE WITH DOT ABOVE; D; MANICHAEAN PE
10ADD; MANICHAEAN SADHE; R; MANICHAEAN SADHE
10ADE; MANICHAEAN QOPH; D; MANICHAEAN QOPH
10ADF; MANICHAEAN QOPH WITH DOT ABOVE; D; MANICHAEAN QOPH
10AE0; MANICHAEAN QOPH WITH 2 DOTS ABOVE; D; MANICHAEAN QOPH
10AE1; MANICHAEAN RESH; R; MANICHAEAN RESH
10AE2; MANICHAEAN SHIN; U; No_Joining_Group
10AE3; MANICHAEAN SHIN WITH 2 DOTS ABOVE; U; No_Joining_Group
10AE4; MANICHAEAN TAW; R; MANICHAEAN TAW
10AEB; MANICHAEAN ONE; D; MANICHAEAN ONE
10AEC; MANICHAEAN FIVE; D; MANICHAEAN FIVE
10AED; MANICHAEAN TEN; D; MANICHAEAN TEN
10AEE; MANICHAEAN TWENTY; D; MANICHAEAN TWENTY
10AEF; MANICHAEAN HUNDRED; R; MANICHAEAN HUNDRED
# Psalter Pahlavi Characters
10B80; PSALTER PAHLAVI ALEPH; D; No_Joining_Group
10B81; PSALTER PAHLAVI BETH; R; No_Joining_Group
10B82; PSALTER PAHLAVI GIMEL; D; No_Joining_Group
10B83; PSALTER PAHLAVI DALETH; R; No_Joining_Group
10B84; PSALTER PAHLAVI HE; R; No_Joining_Group
10B85; PSALTER PAHLAVI WAW-AYIN-RESH; R; No_Joining_Group
10B86; PSALTER PAHLAVI ZAYIN; D; No_Joining_Group
10B87; PSALTER PAHLAVI HETH; D; No_Joining_Group
10B88; PSALTER PAHLAVI YODH; D; No_Joining_Group
10B89; PSALTER PAHLAVI KAPH; R; No_Joining_Group
10B8A; PSALTER PAHLAVI LAMEDH; D; No_Joining_Group
10B8B; PSALTER PAHLAVI MEM-QOPH; D; No_Joining_Group
10B8C; PSALTER PAHLAVI NUN; R; No_Joining_Group
10B8D; PSALTER PAHLAVI SAMEKH; D; No_Joining_Group
10B8E; PSALTER PAHLAVI PE; R; No_Joining_Group
10B8F; PSALTER PAHLAVI SADHE; R; No_Joining_Group
10B90; PSALTER PAHLAVI SHIN; D; No_Joining_Group
10B91; PSALTER PAHLAVI TAW; R; No_Joining_Group
10BA9; PSALTER PAHLAVI ONE; R; No_Joining_Group
10BAA; PSALTER PAHLAVI TWO; R; No_Joining_Group
10BAB; PSALTER PAHLAVI THREE; R; No_Joining_Group
10BAC; PSALTER PAHLAVI FOUR; R; No_Joining_Group
10BAD; PSALTER PAHLAVI TEN; D; No_Joining_Group
10BAE; PSALTER PAHLAVI TWENTY; D; No_Joining_Group
10BAF; PSALTER PAHLAVI HUNDRED; U; No_Joining_Group
# Hanifi Rohingya Characters
10D00; HANIFI ROHINGYA A; L; No_Joining_Group
10D01; HANIFI ROHINGYA BA; D; No_Joining_Group
10D02; HANIFI ROHINGYA PA; D; HANIFI ROHINGYA PA
10D03; HANIFI ROHINGYA TA; D; No_Joining_Group
10D04; HANIFI ROHINGYA TTA; D; No_Joining_Group
10D05; HANIFI ROHINGYA JA; D; No_Joining_Group
10D06; HANIFI ROHINGYA CA; D; No_Joining_Group
10D07; HANIFI ROHINGYA HA; D; No_Joining_Group
10D08; HANIFI ROHINGYA KHA; D; No_Joining_Group
10D09; HANIFI ROHINGYA PA WITH DOT ABOVE; D; HANIFI ROHINGYA PA
10D0A; HANIFI ROHINGYA DA; D; No_Joining_Group
10D0B; HANIFI ROHINGYA DDA; D; No_Joining_Group
10D0C; HANIFI ROHINGYA RA; D; No_Joining_Group
10D0D; HANIFI ROHINGYA RRA; D; No_Joining_Group
10D0E; HANIFI ROHINGYA ZA; D; No_Joining_Group
10D0F; HANIFI ROHINGYA SA; D; No_Joining_Group
10D10; HANIFI ROHINGYA SHA; D; No_Joining_Group
10D11; HANIFI ROHINGYA KA; D; No_Joining_Group
10D12; HANIFI ROHINGYA GA; D; No_Joining_Group
10D13; HANIFI ROHINGYA LA; D; No_Joining_Group
10D14; HANIFI ROHINGYA MA; D; No_Joining_Group
10D15; HANIFI ROHINGYA NA; D; No_Joining_Group
10D16; HANIFI ROHINGYA WA; D; No_Joining_Group
10D17; HANIFI ROHINGYA KINNA WA; D; No_Joining_Group
10D18; HANIFI ROHINGYA YA; D; No_Joining_Group
10D19; HANIFI ROHINGYA KINNA YA; D; HANIFI ROHINGYA KINNA YA
10D1A; HANIFI ROHINGYA NGA; D; No_Joining_Group
10D1B; HANIFI ROHINGYA NYA; D; No_Joining_Group
10D1C; HANIFI ROHINGYA PA WITH 3 DOTS ABOVE; D; HANIFI ROHINGYA PA
10D1D; HANIFI ROHINGYA VOWEL A; D; No_Joining_Group
10D1E; HANIFI ROHINGYA DOTLESS KINNA YA WITH LEFT-FACING HOOK BELOW; D; HANIFI ROHINGYA KINNA YA
10D1F; HANIFI ROHINGYA VOWEL U; D; No_Joining_Group
10D20; HANIFI ROHINGYA DOTLESS KINNA YA WITH RIGHT-FACING HOOK BELOW; D; HANIFI ROHINGYA KINNA YA
10D21; HANIFI ROHINGYA VOWEL O; D; No_Joining_Group
10D22; HANIFI ROHINGYA SAKIN; R; No_Joining_Group
10D23; HANIFI ROHINGYA DOTLESS KINNA YA WITH DOT ABOVE; D; HANIFI ROHINGYA KINNA YA
# Sogdian Characters
10F30; SOGDIAN ALEPH; D; No_Joining_Group
10F31; SOGDIAN BETH; D; No_Joining_Group
10F32; SOGDIAN GIMEL; D; No_Joining_Group
10F33; SOGDIAN HE; R; No_Joining_Group
10F34; SOGDIAN WAW; D; No_Joining_Group
10F35; SOGDIAN ZAYIN; D; No_Joining_Group
10F36; SOGDIAN HETH; D; No_Joining_Group
10F37; SOGDIAN YODH; D; No_Joining_Group
10F38; SOGDIAN KAPH; D; No_Joining_Group
10F39; SOGDIAN LAMEDH; D; No_Joining_Group
10F3A; SOGDIAN MEM; D; No_Joining_Group
10F3B; SOGDIAN NUN; D; No_Joining_Group
10F3C; SOGDIAN SAMEKH; D; No_Joining_Group
10F3D; SOGDIAN AYIN; D; No_Joining_Group
10F3E; SOGDIAN PE; D; No_Joining_Group
10F3F; SOGDIAN SADHE; D; No_Joining_Group
10F40; SOGDIAN RESH-AYIN; D; No_Joining_Group
10F41; SOGDIAN SHIN; D; No_Joining_Group
10F42; SOGDIAN TAW; D; No_Joining_Group
10F43; SOGDIAN FETH; D; No_Joining_Group
10F44; SOGDIAN LESH; D; No_Joining_Group
10F45; SOGDIAN INDEPENDENT SHIN; U; No_Joining_Group
10F51; SOGDIAN ONE; D; No_Joining_Group
10F52; SOGDIAN TEN; D; No_Joining_Group
10F53; SOGDIAN TWENTY; D; No_Joining_Group
10F54; SOGDIAN ONE HUNDRED; R; No_Joining_Group
# Old Uyghur Characters
10F70; OLD UYGHUR ALEPH; D; No_Joining_Group
10F71; OLD UYGHUR BETH; D; No_Joining_Group
10F72; OLD UYGHUR GIMEL-HETH; D; No_Joining_Group
10F73; OLD UYGHUR WAW; D; No_Joining_Group
10F74; OLD UYGHUR ZAYIN; R; No_Joining_Group
10F75; OLD UYGHUR FINAL HETH; R; No_Joining_Group
10F76; OLD UYGHUR YODH; D; No_Joining_Group
10F77; OLD UYGHUR KAPH; D; No_Joining_Group
10F78; OLD UYGHUR LAMEDH; D; No_Joining_Group
10F79; OLD UYGHUR MEM; D; No_Joining_Group
10F7A; OLD UYGHUR NUN; D; No_Joining_Group
10F7B; OLD UYGHUR SAMEKH; D; No_Joining_Group
10F7C; OLD UYGHUR PE; D; No_Joining_Group
10F7D; OLD UYGHUR SADHE; D; No_Joining_Group
10F7E; OLD UYGHUR RESH; D; No_Joining_Group
10F7F; OLD UYGHUR SHIN; D; No_Joining_Group
10F80; OLD UYGHUR TAW; D; No_Joining_Group
10F81; OLD UYGHUR LESH; D; No_Joining_Group
# Chorasmian Characters
10FB0; CHORASMIAN ALEPH; D; No_Joining_Group
10FB1; CHORASMIAN SMALL ALEPH; U; No_Joining_Group
10FB2; CHORASMIAN BETH; D; No_Joining_Group
10FB3; CHORASMIAN GIMEL; D; No_Joining_Group
10FB4; CHORASMIAN DALETH; R; No_Joining_Group
10FB5; CHORASMIAN HE; R; No_Joining_Group
10FB6; CHORASMIAN WAW; R; No_Joining_Group
10FB7; CHORASMIAN CURLED WAW; U; No_Joining_Group
10FB8; CHORASMIAN ZAYIN; D; No_Joining_Group
10FB9; CHORASMIAN HETH; R; No_Joining_Group
10FBA; CHORASMIAN YODH; R; No_Joining_Group
10FBB; CHORASMIAN KAPH; D; No_Joining_Group
10FBC; CHORASMIAN LAMEDH; D; No_Joining_Group
10FBD; CHORASMIAN MEM; R; No_Joining_Group
10FBE; CHORASMIAN NUN; D; No_Joining_Group
10FBF; CHORASMIAN SAMEKH; D; No_Joining_Group
10FC0; CHORASMIAN AYIN; U; No_Joining_Group
10FC1; CHORASMIAN PE; D; No_Joining_Group
10FC2; CHORASMIAN RESH; R; No_Joining_Group
10FC3; CHORASMIAN SHIN; R; No_Joining_Group
10FC4; CHORASMIAN TAW; D; No_Joining_Group
10FC5; CHORASMIAN ONE; U; No_Joining_Group
10FC6; CHORASMIAN TWO; U; No_Joining_Group
10FC7; CHORASMIAN THREE; U; No_Joining_Group
10FC8; CHORASMIAN FOUR; U; No_Joining_Group
10FC9; CHORASMIAN TEN; R; No_Joining_Group
10FCA; CHORASMIAN TWENTY; D; No_Joining_Group
10FCB; CHORASMIAN ONE HUNDRED; L; No_Joining_Group
# Kaithi Number Signs
# These are prepended concatenation marks, comparable
# to the number signs in the Arabic script.
# Listed here for consistency in property values.
110BD; KAITHI NUMBER SIGN; U; No_Joining_Group
110CD; KAITHI NUMBER SIGN ABOVE; U; No_Joining_Group
# Adlam Characters
1E900;ADLAM CAPITAL ALIF; D; No_Joining_Group
1E901;ADLAM CAPITAL DAALI; D; No_Joining_Group
1E902;ADLAM CAPITAL LAAM; D; No_Joining_Group
1E903;ADLAM CAPITAL MIIM; D; No_Joining_Group
1E904;ADLAM CAPITAL BA; D; No_Joining_Group
1E905;ADLAM CAPITAL SINNYIIYHE; D; No_Joining_Group
1E906;ADLAM CAPITAL PE; D; No_Joining_Group
1E907;ADLAM CAPITAL BHE; D; No_Joining_Group
1E908;ADLAM CAPITAL RA; D; No_Joining_Group
1E909;ADLAM CAPITAL E; D; No_Joining_Group
1E90A;ADLAM CAPITAL FA; D; No_Joining_Group
1E90B;ADLAM CAPITAL I; D; No_Joining_Group
1E90C;ADLAM CAPITAL O; D; No_Joining_Group
1E90D;ADLAM CAPITAL DHA; D; No_Joining_Group
1E90E;ADLAM CAPITAL YHE; D; No_Joining_Group
1E90F;ADLAM CAPITAL WAW; D; No_Joining_Group
1E910;ADLAM CAPITAL NUN; D; No_Joining_Group
1E911;ADLAM CAPITAL KAF; D; No_Joining_Group
1E912;ADLAM CAPITAL YA; D; No_Joining_Group
1E913;ADLAM CAPITAL U; D; No_Joining_Group
1E914;ADLAM CAPITAL JIIM; D; No_Joining_Group
1E915;ADLAM CAPITAL CHI; D; No_Joining_Group
1E916;ADLAM CAPITAL HA; D; No_Joining_Group
1E917;ADLAM CAPITAL QAAF; D; No_Joining_Group
1E918;ADLAM CAPITAL GA; D; No_Joining_Group
1E919;ADLAM CAPITAL NYA; D; No_Joining_Group
1E91A;ADLAM CAPITAL TU; D; No_Joining_Group
1E91B;ADLAM CAPITAL NHA; D; No_Joining_Group
1E91C;ADLAM CAPITAL VA; D; No_Joining_Group
1E91D;ADLAM CAPITAL KHA; D; No_Joining_Group
1E91E;ADLAM CAPITAL GBE; D; No_Joining_Group
1E91F;ADLAM CAPITAL ZAL; D; No_Joining_Group
1E920;ADLAM CAPITAL KPO; D; No_Joining_Group
1E921;ADLAM CAPITAL SHA; D; No_Joining_Group
1E922;ADLAM SMALL ALIF; D; No_Joining_Group
1E923;ADLAM SMALL DAALI; D; No_Joining_Group
1E924;ADLAM SMALL LAAM; D; No_Joining_Group
1E925;ADLAM SMALL MIIM; D; No_Joining_Group
1E926;ADLAM SMALL BA; D; No_Joining_Group
1E927;ADLAM SMALL SINNYIIYHE; D; No_Joining_Group
1E928;ADLAM SMALL PE; D; No_Joining_Group
1E929;ADLAM SMALL BHE; D; No_Joining_Group
1E92A;ADLAM SMALL RA; D; No_Joining_Group
1E92B;ADLAM SMALL E; D; No_Joining_Group
1E92C;ADLAM SMALL FA; D; No_Joining_Group
1E92D;ADLAM SMALL I; D; No_Joining_Group
1E92E;ADLAM SMALL O; D; No_Joining_Group
1E92F;ADLAM SMALL DHA; D; No_Joining_Group
1E930;ADLAM SMALL YHE; D; No_Joining_Group
1E931;ADLAM SMALL WAW; D; No_Joining_Group
1E932;ADLAM SMALL NUN; D; No_Joining_Group
1E933;ADLAM SMALL KAF; D; No_Joining_Group
1E934;ADLAM SMALL YA; D; No_Joining_Group
1E935;ADLAM SMALL U; D; No_Joining_Group
1E936;ADLAM SMALL JIIM; D; No_Joining_Group
1E937;ADLAM SMALL CHI; D; No_Joining_Group
1E938;ADLAM SMALL HA; D; No_Joining_Group
1E939;ADLAM SMALL QAAF; D; No_Joining_Group
1E93A;ADLAM SMALL GA; D; No_Joining_Group
1E93B;ADLAM SMALL NYA; D; No_Joining_Group
1E93C;ADLAM SMALL TU; D; No_Joining_Group
1E93D;ADLAM SMALL NHA; D; No_Joining_Group
1E93E;ADLAM SMALL VA; D; No_Joining_Group
1E93F;ADLAM SMALL KHA; D; No_Joining_Group
1E940;ADLAM SMALL GBE; D; No_Joining_Group
1E941;ADLAM SMALL ZAL; D; No_Joining_Group
1E942;ADLAM SMALL KPO; D; No_Joining_Group
1E943;ADLAM SMALL SHA; D; No_Joining_Group
1E94B;ADLAM NASALIZATION MARK; T; No_Joining_Group
# EOF

193
src/modules/punk/char/unicode15.1/BidiBrackets.txt

@ -0,0 +1,193 @@
# BidiBrackets-15.1.0.txt
# Date: 2023-01-18
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# Bidi_Paired_Bracket and Bidi_Paired_Bracket_Type Properties
#
# This file is a normative contributory data file in the Unicode
# Character Database.
#
# Bidi_Paired_Bracket is a normative property
# which establishes a mapping between characters that are treated as
# bracket pairs by the Unicode Bidirectional Algorithm.
#
# Bidi_Paired_Bracket_Type is a normative property
# which classifies characters into opening and closing paired brackets
# for the purposes of the Unicode Bidirectional Algorithm.
#
# This file lists the set of code points with Bidi_Paired_Bracket_Type
# property values Open and Close. The set is derived from the character
# properties General_Category (gc), Bidi_Class (bc), Bidi_Mirrored (Bidi_M),
# and Bidi_Mirroring_Glyph (bmg), as follows: two characters, A and B,
# form a bracket pair if A has gc=Ps and B has gc=Pe, both have bc=ON and
# Bidi_M=Y, and bmg of A is B. Bidi_Paired_Bracket (bpb) maps A to B and
# vice versa, and their Bidi_Paired_Bracket_Type (bpt) property values are
# Open (o) and Close (c), respectively.
#
# The brackets with ticks U+298D LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
# through U+2990 RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER are paired the
# same way their glyphs form mirror pairs, according to their bmg property
# values. They are not paired on the basis of a diagonal or antidiagonal
# matching of the corner ticks inferred from code point order.
#
# For legacy reasons, the characters U+FD3E ORNATE LEFT PARENTHESIS and
# U+FD3F ORNATE RIGHT PARENTHESIS do not mirror in bidirectional display
# and therefore do not form a bracket pair.
#
# The Unicode property value stability policy guarantees that characters
# which have bpt=o or bpt=c also have bc=ON and Bidi_M=Y. As a result, an
# implementation can optimize the lookup of the Bidi_Paired_Bracket_Type
# property values Open and Close by restricting the processing to characters
# with bc=ON.
#
# The format of the file is three fields separated by a semicolon.
# Field 0: Unicode code point value, represented as a hexadecimal value
# Field 1: Bidi_Paired_Bracket property value, a code point value or <none>
# Field 2: Bidi_Paired_Bracket_Type property value, one of the following:
# o Open
# c Close
# n None
# The names of the characters in field 0 are given in comments at the end
# of each line.
#
# For information on bidirectional paired brackets, see UAX #9: Unicode
# Bidirectional Algorithm, at https://www.unicode.org/reports/tr9/
#
# This file was originally created by Andrew Glass and Laurentiu Iancu
# for Unicode 6.3.
0028; 0029; o # LEFT PARENTHESIS
0029; 0028; c # RIGHT PARENTHESIS
005B; 005D; o # LEFT SQUARE BRACKET
005D; 005B; c # RIGHT SQUARE BRACKET
007B; 007D; o # LEFT CURLY BRACKET
007D; 007B; c # RIGHT CURLY BRACKET
0F3A; 0F3B; o # TIBETAN MARK GUG RTAGS GYON
0F3B; 0F3A; c # TIBETAN MARK GUG RTAGS GYAS
0F3C; 0F3D; o # TIBETAN MARK ANG KHANG GYON
0F3D; 0F3C; c # TIBETAN MARK ANG KHANG GYAS
169B; 169C; o # OGHAM FEATHER MARK
169C; 169B; c # OGHAM REVERSED FEATHER MARK
2045; 2046; o # LEFT SQUARE BRACKET WITH QUILL
2046; 2045; c # RIGHT SQUARE BRACKET WITH QUILL
207D; 207E; o # SUPERSCRIPT LEFT PARENTHESIS
207E; 207D; c # SUPERSCRIPT RIGHT PARENTHESIS
208D; 208E; o # SUBSCRIPT LEFT PARENTHESIS
208E; 208D; c # SUBSCRIPT RIGHT PARENTHESIS
2308; 2309; o # LEFT CEILING
2309; 2308; c # RIGHT CEILING
230A; 230B; o # LEFT FLOOR
230B; 230A; c # RIGHT FLOOR
2329; 232A; o # LEFT-POINTING ANGLE BRACKET
232A; 2329; c # RIGHT-POINTING ANGLE BRACKET
2768; 2769; o # MEDIUM LEFT PARENTHESIS ORNAMENT
2769; 2768; c # MEDIUM RIGHT PARENTHESIS ORNAMENT
276A; 276B; o # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
276B; 276A; c # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
276C; 276D; o # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
276D; 276C; c # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
276E; 276F; o # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
276F; 276E; c # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
2770; 2771; o # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
2771; 2770; c # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
2772; 2773; o # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
2773; 2772; c # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
2774; 2775; o # MEDIUM LEFT CURLY BRACKET ORNAMENT
2775; 2774; c # MEDIUM RIGHT CURLY BRACKET ORNAMENT
27C5; 27C6; o # LEFT S-SHAPED BAG DELIMITER
27C6; 27C5; c # RIGHT S-SHAPED BAG DELIMITER
27E6; 27E7; o # MATHEMATICAL LEFT WHITE SQUARE BRACKET
27E7; 27E6; c # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
27E8; 27E9; o # MATHEMATICAL LEFT ANGLE BRACKET
27E9; 27E8; c # MATHEMATICAL RIGHT ANGLE BRACKET
27EA; 27EB; o # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
27EB; 27EA; c # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
27EC; 27ED; o # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
27ED; 27EC; c # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
27EE; 27EF; o # MATHEMATICAL LEFT FLATTENED PARENTHESIS
27EF; 27EE; c # MATHEMATICAL RIGHT FLATTENED PARENTHESIS
2983; 2984; o # LEFT WHITE CURLY BRACKET
2984; 2983; c # RIGHT WHITE CURLY BRACKET
2985; 2986; o # LEFT WHITE PARENTHESIS
2986; 2985; c # RIGHT WHITE PARENTHESIS
2987; 2988; o # Z NOTATION LEFT IMAGE BRACKET
2988; 2987; c # Z NOTATION RIGHT IMAGE BRACKET
2989; 298A; o # Z NOTATION LEFT BINDING BRACKET
298A; 2989; c # Z NOTATION RIGHT BINDING BRACKET
298B; 298C; o # LEFT SQUARE BRACKET WITH UNDERBAR
298C; 298B; c # RIGHT SQUARE BRACKET WITH UNDERBAR
298D; 2990; o # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
298E; 298F; c # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
298F; 298E; o # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
2990; 298D; c # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
2991; 2992; o # LEFT ANGLE BRACKET WITH DOT
2992; 2991; c # RIGHT ANGLE BRACKET WITH DOT
2993; 2994; o # LEFT ARC LESS-THAN BRACKET
2994; 2993; c # RIGHT ARC GREATER-THAN BRACKET
2995; 2996; o # DOUBLE LEFT ARC GREATER-THAN BRACKET
2996; 2995; c # DOUBLE RIGHT ARC LESS-THAN BRACKET
2997; 2998; o # LEFT BLACK TORTOISE SHELL BRACKET
2998; 2997; c # RIGHT BLACK TORTOISE SHELL BRACKET
29D8; 29D9; o # LEFT WIGGLY FENCE
29D9; 29D8; c # RIGHT WIGGLY FENCE
29DA; 29DB; o # LEFT DOUBLE WIGGLY FENCE
29DB; 29DA; c # RIGHT DOUBLE WIGGLY FENCE
29FC; 29FD; o # LEFT-POINTING CURVED ANGLE BRACKET
29FD; 29FC; c # RIGHT-POINTING CURVED ANGLE BRACKET
2E22; 2E23; o # TOP LEFT HALF BRACKET
2E23; 2E22; c # TOP RIGHT HALF BRACKET
2E24; 2E25; o # BOTTOM LEFT HALF BRACKET
2E25; 2E24; c # BOTTOM RIGHT HALF BRACKET
2E26; 2E27; o # LEFT SIDEWAYS U BRACKET
2E27; 2E26; c # RIGHT SIDEWAYS U BRACKET
2E28; 2E29; o # LEFT DOUBLE PARENTHESIS
2E29; 2E28; c # RIGHT DOUBLE PARENTHESIS
2E55; 2E56; o # LEFT SQUARE BRACKET WITH STROKE
2E56; 2E55; c # RIGHT SQUARE BRACKET WITH STROKE
2E57; 2E58; o # LEFT SQUARE BRACKET WITH DOUBLE STROKE
2E58; 2E57; c # RIGHT SQUARE BRACKET WITH DOUBLE STROKE
2E59; 2E5A; o # TOP HALF LEFT PARENTHESIS
2E5A; 2E59; c # TOP HALF RIGHT PARENTHESIS
2E5B; 2E5C; o # BOTTOM HALF LEFT PARENTHESIS
2E5C; 2E5B; c # BOTTOM HALF RIGHT PARENTHESIS
3008; 3009; o # LEFT ANGLE BRACKET
3009; 3008; c # RIGHT ANGLE BRACKET
300A; 300B; o # LEFT DOUBLE ANGLE BRACKET
300B; 300A; c # RIGHT DOUBLE ANGLE BRACKET
300C; 300D; o # LEFT CORNER BRACKET
300D; 300C; c # RIGHT CORNER BRACKET
300E; 300F; o # LEFT WHITE CORNER BRACKET
300F; 300E; c # RIGHT WHITE CORNER BRACKET
3010; 3011; o # LEFT BLACK LENTICULAR BRACKET
3011; 3010; c # RIGHT BLACK LENTICULAR BRACKET
3014; 3015; o # LEFT TORTOISE SHELL BRACKET
3015; 3014; c # RIGHT TORTOISE SHELL BRACKET
3016; 3017; o # LEFT WHITE LENTICULAR BRACKET
3017; 3016; c # RIGHT WHITE LENTICULAR BRACKET
3018; 3019; o # LEFT WHITE TORTOISE SHELL BRACKET
3019; 3018; c # RIGHT WHITE TORTOISE SHELL BRACKET
301A; 301B; o # LEFT WHITE SQUARE BRACKET
301B; 301A; c # RIGHT WHITE SQUARE BRACKET
FE59; FE5A; o # SMALL LEFT PARENTHESIS
FE5A; FE59; c # SMALL RIGHT PARENTHESIS
FE5B; FE5C; o # SMALL LEFT CURLY BRACKET
FE5C; FE5B; c # SMALL RIGHT CURLY BRACKET
FE5D; FE5E; o # SMALL LEFT TORTOISE SHELL BRACKET
FE5E; FE5D; c # SMALL RIGHT TORTOISE SHELL BRACKET
FF08; FF09; o # FULLWIDTH LEFT PARENTHESIS
FF09; FF08; c # FULLWIDTH RIGHT PARENTHESIS
FF3B; FF3D; o # FULLWIDTH LEFT SQUARE BRACKET
FF3D; FF3B; c # FULLWIDTH RIGHT SQUARE BRACKET
FF5B; FF5D; o # FULLWIDTH LEFT CURLY BRACKET
FF5D; FF5B; c # FULLWIDTH RIGHT CURLY BRACKET
FF5F; FF60; o # FULLWIDTH LEFT WHITE PARENTHESIS
FF60; FF5F; c # FULLWIDTH RIGHT WHITE PARENTHESIS
FF62; FF63; o # HALFWIDTH LEFT CORNER BRACKET
FF63; FF62; c # HALFWIDTH RIGHT CORNER BRACKET
# EOF

96463
src/modules/punk/char/unicode15.1/BidiCharacterTest.txt

File diff suppressed because it is too large Load Diff

633
src/modules/punk/char/unicode15.1/BidiMirroring.txt

@ -0,0 +1,633 @@
# BidiMirroring-15.1.0.txt
# Date: 2023-01-05
# © 2023 Unicode®, Inc.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# Bidi_Mirroring_Glyph Property
#
# This file is an informative contributory data file in the
# Unicode Character Database.
#
# This data file lists characters that have the Bidi_Mirrored=Yes property
# value, for which there is another Unicode character that typically has a glyph
# that is the mirror image of the original character's glyph.
#
# The repertoire covered by the file is Unicode 15.1.0.
#
# The file contains a list of lines with mappings from one code point
# to another one for character-based mirroring.
# Note that for "real" mirroring, a rendering engine needs to select
# appropriate alternative glyphs, and that many Unicode characters do not
# have a mirror-image Unicode character.
#
# Each mapping line contains two fields, separated by a semicolon (';').
# Each of the two fields contains a code point represented as a
# variable-length hexadecimal value with 4 to 6 digits.
# A comment indicates where the characters are "BEST FIT" mirroring.
#
# Code points for which Bidi_Mirrored=Yes, but for which no appropriate
# characters exist with mirrored glyphs, are
# listed as comments at the end of the file.
#
# Formally, the default value of the Bidi_Mirroring_Glyph property
# for each code point is <none>, unless a mapping to
# some other character is specified in this data file. When a code
# point has the default value for the Bidi_Mirroring_Glyph property,
# that means that no other character exists whose glyph is suitable
# for character-based mirroring.
#
# For information on bidi mirroring, see UAX #9: Unicode Bidirectional Algorithm,
# at https://www.unicode.org/reports/tr9/
#
# This file was originally created by Markus Scherer.
# Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler,
# and for subsequent versions by Ken Whistler, Laurentiu Iancu, and Roozbeh Pournader.
#
# Historical and Compatibility Information:
#
# The OpenType Mirroring Pairs List (OMPL) is frozen to match the
# Unicode 5.1 version of the Bidi_Mirroring_Glyph property (2008).
# See https://www.microsoft.com/typography/otspec/ompl.txt
#
# The Unicode 6.1 version of the Bidi_Mirroring_Glyph property (2011)
# added one mirroring pair: 27CB <--> 27CD.
#
# The Unicode 11.0 version of the Bidi_Mirroring_Glyph property (2018)
# underwent a substantial revision, to formally recognize all of the
# exact mirroring pairs and "BEST FIT" mirroring pairs that had been
# added after the freezing of the OMPL list. As a result, starting
# with Unicode 11.0, the bmg mapping values more accurately reflect
# the current status of glyphs for Bidi_Mirrored characters in
# the Unicode Standard, but this listing now extends significantly
# beyond the frozen OMPL list. Implementers should be aware of this
# intentional distinction.
#
# ############################################################
#
# Property: Bidi_Mirroring_Glyph
#
# @missing: 0000..10FFFF; <none>
0028; 0029 # LEFT PARENTHESIS
0029; 0028 # RIGHT PARENTHESIS
003C; 003E # LESS-THAN SIGN
003E; 003C # GREATER-THAN SIGN
005B; 005D # LEFT SQUARE BRACKET
005D; 005B # RIGHT SQUARE BRACKET
007B; 007D # LEFT CURLY BRACKET
007D; 007B # RIGHT CURLY BRACKET
00AB; 00BB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
00BB; 00AB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0F3A; 0F3B # TIBETAN MARK GUG RTAGS GYON
0F3B; 0F3A # TIBETAN MARK GUG RTAGS GYAS
0F3C; 0F3D # TIBETAN MARK ANG KHANG GYON
0F3D; 0F3C # TIBETAN MARK ANG KHANG GYAS
169B; 169C # OGHAM FEATHER MARK
169C; 169B # OGHAM REVERSED FEATHER MARK
2039; 203A # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
203A; 2039 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
2045; 2046 # LEFT SQUARE BRACKET WITH QUILL
2046; 2045 # RIGHT SQUARE BRACKET WITH QUILL
207D; 207E # SUPERSCRIPT LEFT PARENTHESIS
207E; 207D # SUPERSCRIPT RIGHT PARENTHESIS
208D; 208E # SUBSCRIPT LEFT PARENTHESIS
208E; 208D # SUBSCRIPT RIGHT PARENTHESIS
2208; 220B # ELEMENT OF
2209; 220C # [BEST FIT] NOT AN ELEMENT OF
220A; 220D # SMALL ELEMENT OF
220B; 2208 # CONTAINS AS MEMBER
220C; 2209 # [BEST FIT] DOES NOT CONTAIN AS MEMBER
220D; 220A # SMALL CONTAINS AS MEMBER
2215; 29F5 # DIVISION SLASH
221F; 2BFE # RIGHT ANGLE
2220; 29A3 # ANGLE
2221; 299B # MEASURED ANGLE
2222; 29A0 # SPHERICAL ANGLE
2224; 2AEE # DOES NOT DIVIDE
223C; 223D # TILDE OPERATOR
223D; 223C # REVERSED TILDE
2243; 22CD # ASYMPTOTICALLY EQUAL TO
2245; 224C # APPROXIMATELY EQUAL TO
224C; 2245 # ALL EQUAL TO
2252; 2253 # APPROXIMATELY EQUAL TO OR THE IMAGE OF
2253; 2252 # IMAGE OF OR APPROXIMATELY EQUAL TO
2254; 2255 # COLON EQUALS
2255; 2254 # EQUALS COLON
2264; 2265 # LESS-THAN OR EQUAL TO
2265; 2264 # GREATER-THAN OR EQUAL TO
2266; 2267 # LESS-THAN OVER EQUAL TO
2267; 2266 # GREATER-THAN OVER EQUAL TO
2268; 2269 # [BEST FIT] LESS-THAN BUT NOT EQUAL TO
2269; 2268 # [BEST FIT] GREATER-THAN BUT NOT EQUAL TO
226A; 226B # MUCH LESS-THAN
226B; 226A # MUCH GREATER-THAN
226E; 226F # [BEST FIT] NOT LESS-THAN
226F; 226E # [BEST FIT] NOT GREATER-THAN
2270; 2271 # [BEST FIT] NEITHER LESS-THAN NOR EQUAL TO
2271; 2270 # [BEST FIT] NEITHER GREATER-THAN NOR EQUAL TO
2272; 2273 # [BEST FIT] LESS-THAN OR EQUIVALENT TO
2273; 2272 # [BEST FIT] GREATER-THAN OR EQUIVALENT TO
2274; 2275 # [BEST FIT] NEITHER LESS-THAN NOR EQUIVALENT TO
2275; 2274 # [BEST FIT] NEITHER GREATER-THAN NOR EQUIVALENT TO
2276; 2277 # LESS-THAN OR GREATER-THAN
2277; 2276 # GREATER-THAN OR LESS-THAN
2278; 2279 # [BEST FIT] NEITHER LESS-THAN NOR GREATER-THAN
2279; 2278 # [BEST FIT] NEITHER GREATER-THAN NOR LESS-THAN
227A; 227B # PRECEDES
227B; 227A # SUCCEEDS
227C; 227D # PRECEDES OR EQUAL TO
227D; 227C # SUCCEEDS OR EQUAL TO
227E; 227F # [BEST FIT] PRECEDES OR EQUIVALENT TO
227F; 227E # [BEST FIT] SUCCEEDS OR EQUIVALENT TO
2280; 2281 # [BEST FIT] DOES NOT PRECEDE
2281; 2280 # [BEST FIT] DOES NOT SUCCEED
2282; 2283 # SUBSET OF
2283; 2282 # SUPERSET OF
2284; 2285 # [BEST FIT] NOT A SUBSET OF
2285; 2284 # [BEST FIT] NOT A SUPERSET OF
2286; 2287 # SUBSET OF OR EQUAL TO
2287; 2286 # SUPERSET OF OR EQUAL TO
2288; 2289 # [BEST FIT] NEITHER A SUBSET OF NOR EQUAL TO
2289; 2288 # [BEST FIT] NEITHER A SUPERSET OF NOR EQUAL TO
228A; 228B # [BEST FIT] SUBSET OF WITH NOT EQUAL TO
228B; 228A # [BEST FIT] SUPERSET OF WITH NOT EQUAL TO
228F; 2290 # SQUARE IMAGE OF
2290; 228F # SQUARE ORIGINAL OF
2291; 2292 # SQUARE IMAGE OF OR EQUAL TO
2292; 2291 # SQUARE ORIGINAL OF OR EQUAL TO
2298; 29B8 # CIRCLED DIVISION SLASH
22A2; 22A3 # RIGHT TACK
22A3; 22A2 # LEFT TACK
22A6; 2ADE # ASSERTION
22A8; 2AE4 # TRUE
22A9; 2AE3 # FORCES
22AB; 2AE5 # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
22B0; 22B1 # PRECEDES UNDER RELATION
22B1; 22B0 # SUCCEEDS UNDER RELATION
22B2; 22B3 # NORMAL SUBGROUP OF
22B3; 22B2 # CONTAINS AS NORMAL SUBGROUP
22B4; 22B5 # NORMAL SUBGROUP OF OR EQUAL TO
22B5; 22B4 # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
22B6; 22B7 # ORIGINAL OF
22B7; 22B6 # IMAGE OF
22B8; 27DC # MULTIMAP
22C9; 22CA # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
22CA; 22C9 # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
22CB; 22CC # LEFT SEMIDIRECT PRODUCT
22CC; 22CB # RIGHT SEMIDIRECT PRODUCT
22CD; 2243 # REVERSED TILDE EQUALS
22D0; 22D1 # DOUBLE SUBSET
22D1; 22D0 # DOUBLE SUPERSET
22D6; 22D7 # LESS-THAN WITH DOT
22D7; 22D6 # GREATER-THAN WITH DOT
22D8; 22D9 # VERY MUCH LESS-THAN
22D9; 22D8 # VERY MUCH GREATER-THAN
22DA; 22DB # LESS-THAN EQUAL TO OR GREATER-THAN
22DB; 22DA # GREATER-THAN EQUAL TO OR LESS-THAN
22DC; 22DD # EQUAL TO OR LESS-THAN
22DD; 22DC # EQUAL TO OR GREATER-THAN
22DE; 22DF # EQUAL TO OR PRECEDES
22DF; 22DE # EQUAL TO OR SUCCEEDS
22E0; 22E1 # [BEST FIT] DOES NOT PRECEDE OR EQUAL
22E1; 22E0 # [BEST FIT] DOES NOT SUCCEED OR EQUAL
22E2; 22E3 # [BEST FIT] NOT SQUARE IMAGE OF OR EQUAL TO
22E3; 22E2 # [BEST FIT] NOT SQUARE ORIGINAL OF OR EQUAL TO
22E4; 22E5 # [BEST FIT] SQUARE IMAGE OF OR NOT EQUAL TO
22E5; 22E4 # [BEST FIT] SQUARE ORIGINAL OF OR NOT EQUAL TO
22E6; 22E7 # [BEST FIT] LESS-THAN BUT NOT EQUIVALENT TO
22E7; 22E6 # [BEST FIT] GREATER-THAN BUT NOT EQUIVALENT TO
22E8; 22E9 # [BEST FIT] PRECEDES BUT NOT EQUIVALENT TO
22E9; 22E8 # [BEST FIT] SUCCEEDS BUT NOT EQUIVALENT TO
22EA; 22EB # [BEST FIT] NOT NORMAL SUBGROUP OF
22EB; 22EA # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP
22EC; 22ED # [BEST FIT] NOT NORMAL SUBGROUP OF OR EQUAL TO
22ED; 22EC # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
22F0; 22F1 # UP RIGHT DIAGONAL ELLIPSIS
22F1; 22F0 # DOWN RIGHT DIAGONAL ELLIPSIS
22F2; 22FA # ELEMENT OF WITH LONG HORIZONTAL STROKE
22F3; 22FB # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
22F4; 22FC # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
22F6; 22FD # ELEMENT OF WITH OVERBAR
22F7; 22FE # SMALL ELEMENT OF WITH OVERBAR
22FA; 22F2 # CONTAINS WITH LONG HORIZONTAL STROKE
22FB; 22F3 # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
22FC; 22F4 # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
22FD; 22F6 # CONTAINS WITH OVERBAR
22FE; 22F7 # SMALL CONTAINS WITH OVERBAR
2308; 2309 # LEFT CEILING
2309; 2308 # RIGHT CEILING
230A; 230B # LEFT FLOOR
230B; 230A # RIGHT FLOOR
2329; 232A # LEFT-POINTING ANGLE BRACKET
232A; 2329 # RIGHT-POINTING ANGLE BRACKET
2768; 2769 # MEDIUM LEFT PARENTHESIS ORNAMENT
2769; 2768 # MEDIUM RIGHT PARENTHESIS ORNAMENT
276A; 276B # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
276B; 276A # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
276C; 276D # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
276D; 276C # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
276E; 276F # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
276F; 276E # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
2770; 2771 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
2771; 2770 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
2772; 2773 # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
2773; 2772 # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
2774; 2775 # MEDIUM LEFT CURLY BRACKET ORNAMENT
2775; 2774 # MEDIUM RIGHT CURLY BRACKET ORNAMENT
27C3; 27C4 # OPEN SUBSET
27C4; 27C3 # OPEN SUPERSET
27C5; 27C6 # LEFT S-SHAPED BAG DELIMITER
27C6; 27C5 # RIGHT S-SHAPED BAG DELIMITER
27C8; 27C9 # REVERSE SOLIDUS PRECEDING SUBSET
27C9; 27C8 # SUPERSET PRECEDING SOLIDUS
27CB; 27CD # MATHEMATICAL RISING DIAGONAL
27CD; 27CB # MATHEMATICAL FALLING DIAGONAL
27D5; 27D6 # LEFT OUTER JOIN
27D6; 27D5 # RIGHT OUTER JOIN
27DC; 22B8 # LEFT MULTIMAP
27DD; 27DE # LONG RIGHT TACK
27DE; 27DD # LONG LEFT TACK
27E2; 27E3 # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
27E3; 27E2 # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
27E4; 27E5 # WHITE SQUARE WITH LEFTWARDS TICK
27E5; 27E4 # WHITE SQUARE WITH RIGHTWARDS TICK
27E6; 27E7 # MATHEMATICAL LEFT WHITE SQUARE BRACKET
27E7; 27E6 # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
27E8; 27E9 # MATHEMATICAL LEFT ANGLE BRACKET
27E9; 27E8 # MATHEMATICAL RIGHT ANGLE BRACKET
27EA; 27EB # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
27EB; 27EA # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
27EC; 27ED # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
27ED; 27EC # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
27EE; 27EF # MATHEMATICAL LEFT FLATTENED PARENTHESIS
27EF; 27EE # MATHEMATICAL RIGHT FLATTENED PARENTHESIS
2983; 2984 # LEFT WHITE CURLY BRACKET
2984; 2983 # RIGHT WHITE CURLY BRACKET
2985; 2986 # LEFT WHITE PARENTHESIS
2986; 2985 # RIGHT WHITE PARENTHESIS
2987; 2988 # Z NOTATION LEFT IMAGE BRACKET
2988; 2987 # Z NOTATION RIGHT IMAGE BRACKET
2989; 298A # Z NOTATION LEFT BINDING BRACKET
298A; 2989 # Z NOTATION RIGHT BINDING BRACKET
298B; 298C # LEFT SQUARE BRACKET WITH UNDERBAR
298C; 298B # RIGHT SQUARE BRACKET WITH UNDERBAR
298D; 2990 # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
298E; 298F # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
298F; 298E # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
2990; 298D # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
2991; 2992 # LEFT ANGLE BRACKET WITH DOT
2992; 2991 # RIGHT ANGLE BRACKET WITH DOT
2993; 2994 # LEFT ARC LESS-THAN BRACKET
2994; 2993 # RIGHT ARC GREATER-THAN BRACKET
2995; 2996 # DOUBLE LEFT ARC GREATER-THAN BRACKET
2996; 2995 # DOUBLE RIGHT ARC LESS-THAN BRACKET
2997; 2998 # LEFT BLACK TORTOISE SHELL BRACKET
2998; 2997 # RIGHT BLACK TORTOISE SHELL BRACKET
299B; 2221 # MEASURED ANGLE OPENING LEFT
29A0; 2222 # SPHERICAL ANGLE OPENING LEFT
29A3; 2220 # REVERSED ANGLE
29A4; 29A5 # ANGLE WITH UNDERBAR
29A5; 29A4 # REVERSED ANGLE WITH UNDERBAR
29A8; 29A9 # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
29A9; 29A8 # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
29AA; 29AB # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
29AB; 29AA # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
29AC; 29AD # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
29AD; 29AC # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
29AE; 29AF # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
29AF; 29AE # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
29B8; 2298 # CIRCLED REVERSE SOLIDUS
29C0; 29C1 # CIRCLED LESS-THAN
29C1; 29C0 # CIRCLED GREATER-THAN
29C4; 29C5 # SQUARED RISING DIAGONAL SLASH
29C5; 29C4 # SQUARED FALLING DIAGONAL SLASH
29CF; 29D0 # LEFT TRIANGLE BESIDE VERTICAL BAR
29D0; 29CF # VERTICAL BAR BESIDE RIGHT TRIANGLE
29D1; 29D2 # BOWTIE WITH LEFT HALF BLACK
29D2; 29D1 # BOWTIE WITH RIGHT HALF BLACK
29D4; 29D5 # TIMES WITH LEFT HALF BLACK
29D5; 29D4 # TIMES WITH RIGHT HALF BLACK
29D8; 29D9 # LEFT WIGGLY FENCE
29D9; 29D8 # RIGHT WIGGLY FENCE
29DA; 29DB # LEFT DOUBLE WIGGLY FENCE
29DB; 29DA # RIGHT DOUBLE WIGGLY FENCE
29E8; 29E9 # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
29E9; 29E8 # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
29F5; 2215 # REVERSE SOLIDUS OPERATOR
29F8; 29F9 # BIG SOLIDUS
29F9; 29F8 # BIG REVERSE SOLIDUS
29FC; 29FD # LEFT-POINTING CURVED ANGLE BRACKET
29FD; 29FC # RIGHT-POINTING CURVED ANGLE BRACKET
2A2B; 2A2C # MINUS SIGN WITH FALLING DOTS
2A2C; 2A2B # MINUS SIGN WITH RISING DOTS
2A2D; 2A2E # PLUS SIGN IN LEFT HALF CIRCLE
2A2E; 2A2D # PLUS SIGN IN RIGHT HALF CIRCLE
2A34; 2A35 # MULTIPLICATION SIGN IN LEFT HALF CIRCLE
2A35; 2A34 # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
2A3C; 2A3D # INTERIOR PRODUCT
2A3D; 2A3C # RIGHTHAND INTERIOR PRODUCT
2A64; 2A65 # Z NOTATION DOMAIN ANTIRESTRICTION
2A65; 2A64 # Z NOTATION RANGE ANTIRESTRICTION
2A79; 2A7A # LESS-THAN WITH CIRCLE INSIDE
2A7A; 2A79 # GREATER-THAN WITH CIRCLE INSIDE
2A7B; 2A7C # [BEST FIT] LESS-THAN WITH QUESTION MARK ABOVE
2A7C; 2A7B # [BEST FIT] GREATER-THAN WITH QUESTION MARK ABOVE
2A7D; 2A7E # LESS-THAN OR SLANTED EQUAL TO
2A7E; 2A7D # GREATER-THAN OR SLANTED EQUAL TO
2A7F; 2A80 # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
2A80; 2A7F # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
2A81; 2A82 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
2A82; 2A81 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
2A83; 2A84 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
2A84; 2A83 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
2A85; 2A86 # [BEST FIT] LESS-THAN OR APPROXIMATE
2A86; 2A85 # [BEST FIT] GREATER-THAN OR APPROXIMATE
2A87; 2A88 # [BEST FIT] LESS-THAN AND SINGLE-LINE NOT EQUAL TO
2A88; 2A87 # [BEST FIT] GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
2A89; 2A8A # [BEST FIT] LESS-THAN AND NOT APPROXIMATE
2A8A; 2A89 # [BEST FIT] GREATER-THAN AND NOT APPROXIMATE
2A8B; 2A8C # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
2A8C; 2A8B # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
2A8D; 2A8E # [BEST FIT] LESS-THAN ABOVE SIMILAR OR EQUAL
2A8E; 2A8D # [BEST FIT] GREATER-THAN ABOVE SIMILAR OR EQUAL
2A8F; 2A90 # [BEST FIT] LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
2A90; 2A8F # [BEST FIT] GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
2A91; 2A92 # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
2A92; 2A91 # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
2A93; 2A94 # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
2A94; 2A93 # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
2A95; 2A96 # SLANTED EQUAL TO OR LESS-THAN
2A96; 2A95 # SLANTED EQUAL TO OR GREATER-THAN
2A97; 2A98 # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
2A98; 2A97 # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
2A99; 2A9A # DOUBLE-LINE EQUAL TO OR LESS-THAN
2A9A; 2A99 # DOUBLE-LINE EQUAL TO OR GREATER-THAN
2A9B; 2A9C # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
2A9C; 2A9B # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
2A9D; 2A9E # [BEST FIT] SIMILAR OR LESS-THAN
2A9E; 2A9D # [BEST FIT] SIMILAR OR GREATER-THAN
2A9F; 2AA0 # [BEST FIT] SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
2AA0; 2A9F # [BEST FIT] SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
2AA1; 2AA2 # DOUBLE NESTED LESS-THAN
2AA2; 2AA1 # DOUBLE NESTED GREATER-THAN
2AA6; 2AA7 # LESS-THAN CLOSED BY CURVE
2AA7; 2AA6 # GREATER-THAN CLOSED BY CURVE
2AA8; 2AA9 # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
2AA9; 2AA8 # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
2AAA; 2AAB # SMALLER THAN
2AAB; 2AAA # LARGER THAN
2AAC; 2AAD # SMALLER THAN OR EQUAL TO
2AAD; 2AAC # LARGER THAN OR EQUAL TO
2AAF; 2AB0 # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
2AB0; 2AAF # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
2AB1; 2AB2 # [BEST FIT] PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
2AB2; 2AB1 # [BEST FIT] SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
2AB3; 2AB4 # PRECEDES ABOVE EQUALS SIGN
2AB4; 2AB3 # SUCCEEDS ABOVE EQUALS SIGN
2AB5; 2AB6 # [BEST FIT] PRECEDES ABOVE NOT EQUAL TO
2AB6; 2AB5 # [BEST FIT] SUCCEEDS ABOVE NOT EQUAL TO
2AB7; 2AB8 # [BEST FIT] PRECEDES ABOVE ALMOST EQUAL TO
2AB8; 2AB7 # [BEST FIT] SUCCEEDS ABOVE ALMOST EQUAL TO
2AB9; 2ABA # [BEST FIT] PRECEDES ABOVE NOT ALMOST EQUAL TO
2ABA; 2AB9 # [BEST FIT] SUCCEEDS ABOVE NOT ALMOST EQUAL TO
2ABB; 2ABC # DOUBLE PRECEDES
2ABC; 2ABB # DOUBLE SUCCEEDS
2ABD; 2ABE # SUBSET WITH DOT
2ABE; 2ABD # SUPERSET WITH DOT
2ABF; 2AC0 # SUBSET WITH PLUS SIGN BELOW
2AC0; 2ABF # SUPERSET WITH PLUS SIGN BELOW
2AC1; 2AC2 # SUBSET WITH MULTIPLICATION SIGN BELOW
2AC2; 2AC1 # SUPERSET WITH MULTIPLICATION SIGN BELOW
2AC3; 2AC4 # SUBSET OF OR EQUAL TO WITH DOT ABOVE
2AC4; 2AC3 # SUPERSET OF OR EQUAL TO WITH DOT ABOVE
2AC5; 2AC6 # SUBSET OF ABOVE EQUALS SIGN
2AC6; 2AC5 # SUPERSET OF ABOVE EQUALS SIGN
2AC7; 2AC8 # [BEST FIT] SUBSET OF ABOVE TILDE OPERATOR
2AC8; 2AC7 # [BEST FIT] SUPERSET OF ABOVE TILDE OPERATOR
2AC9; 2ACA # [BEST FIT] SUBSET OF ABOVE ALMOST EQUAL TO
2ACA; 2AC9 # [BEST FIT] SUPERSET OF ABOVE ALMOST EQUAL TO
2ACB; 2ACC # [BEST FIT] SUBSET OF ABOVE NOT EQUAL TO
2ACC; 2ACB # [BEST FIT] SUPERSET OF ABOVE NOT EQUAL TO
2ACD; 2ACE # SQUARE LEFT OPEN BOX OPERATOR
2ACE; 2ACD # SQUARE RIGHT OPEN BOX OPERATOR
2ACF; 2AD0 # CLOSED SUBSET
2AD0; 2ACF # CLOSED SUPERSET
2AD1; 2AD2 # CLOSED SUBSET OR EQUAL TO
2AD2; 2AD1 # CLOSED SUPERSET OR EQUAL TO
2AD3; 2AD4 # SUBSET ABOVE SUPERSET
2AD4; 2AD3 # SUPERSET ABOVE SUBSET
2AD5; 2AD6 # SUBSET ABOVE SUBSET
2AD6; 2AD5 # SUPERSET ABOVE SUPERSET
2ADE; 22A6 # SHORT LEFT TACK
2AE3; 22A9 # DOUBLE VERTICAL BAR LEFT TURNSTILE
2AE4; 22A8 # VERTICAL BAR DOUBLE LEFT TURNSTILE
2AE5; 22AB # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
2AEC; 2AED # DOUBLE STROKE NOT SIGN
2AED; 2AEC # REVERSED DOUBLE STROKE NOT SIGN
2AEE; 2224 # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
2AF7; 2AF8 # TRIPLE NESTED LESS-THAN
2AF8; 2AF7 # TRIPLE NESTED GREATER-THAN
2AF9; 2AFA # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
2AFA; 2AF9 # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
2BFE; 221F # REVERSED RIGHT ANGLE
2E02; 2E03 # LEFT SUBSTITUTION BRACKET
2E03; 2E02 # RIGHT SUBSTITUTION BRACKET
2E04; 2E05 # LEFT DOTTED SUBSTITUTION BRACKET
2E05; 2E04 # RIGHT DOTTED SUBSTITUTION BRACKET
2E09; 2E0A # LEFT TRANSPOSITION BRACKET
2E0A; 2E09 # RIGHT TRANSPOSITION BRACKET
2E0C; 2E0D # LEFT RAISED OMISSION BRACKET
2E0D; 2E0C # RIGHT RAISED OMISSION BRACKET
2E1C; 2E1D # LEFT LOW PARAPHRASE BRACKET
2E1D; 2E1C # RIGHT LOW PARAPHRASE BRACKET
2E20; 2E21 # LEFT VERTICAL BAR WITH QUILL
2E21; 2E20 # RIGHT VERTICAL BAR WITH QUILL
2E22; 2E23 # TOP LEFT HALF BRACKET
2E23; 2E22 # TOP RIGHT HALF BRACKET
2E24; 2E25 # BOTTOM LEFT HALF BRACKET
2E25; 2E24 # BOTTOM RIGHT HALF BRACKET
2E26; 2E27 # LEFT SIDEWAYS U BRACKET
2E27; 2E26 # RIGHT SIDEWAYS U BRACKET
2E28; 2E29 # LEFT DOUBLE PARENTHESIS
2E29; 2E28 # RIGHT DOUBLE PARENTHESIS
2E55; 2E56 # LEFT SQUARE BRACKET WITH STROKE
2E56; 2E55 # RIGHT SQUARE BRACKET WITH STROKE
2E57; 2E58 # LEFT SQUARE BRACKET WITH DOUBLE STROKE
2E58; 2E57 # RIGHT SQUARE BRACKET WITH DOUBLE STROKE
2E59; 2E5A # TOP HALF LEFT PARENTHESIS
2E5A; 2E59 # TOP HALF RIGHT PARENTHESIS
2E5B; 2E5C # BOTTOM HALF LEFT PARENTHESIS
2E5C; 2E5B # BOTTOM HALF RIGHT PARENTHESIS
3008; 3009 # LEFT ANGLE BRACKET
3009; 3008 # RIGHT ANGLE BRACKET
300A; 300B # LEFT DOUBLE ANGLE BRACKET
300B; 300A # RIGHT DOUBLE ANGLE BRACKET
300C; 300D # [BEST FIT] LEFT CORNER BRACKET
300D; 300C # [BEST FIT] RIGHT CORNER BRACKET
300E; 300F # [BEST FIT] LEFT WHITE CORNER BRACKET
300F; 300E # [BEST FIT] RIGHT WHITE CORNER BRACKET
3010; 3011 # LEFT BLACK LENTICULAR BRACKET
3011; 3010 # RIGHT BLACK LENTICULAR BRACKET
3014; 3015 # LEFT TORTOISE SHELL BRACKET
3015; 3014 # RIGHT TORTOISE SHELL BRACKET
3016; 3017 # LEFT WHITE LENTICULAR BRACKET
3017; 3016 # RIGHT WHITE LENTICULAR BRACKET
3018; 3019 # LEFT WHITE TORTOISE SHELL BRACKET
3019; 3018 # RIGHT WHITE TORTOISE SHELL BRACKET
301A; 301B # LEFT WHITE SQUARE BRACKET
301B; 301A # RIGHT WHITE SQUARE BRACKET
FE59; FE5A # SMALL LEFT PARENTHESIS
FE5A; FE59 # SMALL RIGHT PARENTHESIS
FE5B; FE5C # SMALL LEFT CURLY BRACKET
FE5C; FE5B # SMALL RIGHT CURLY BRACKET
FE5D; FE5E # SMALL LEFT TORTOISE SHELL BRACKET
FE5E; FE5D # SMALL RIGHT TORTOISE SHELL BRACKET
FE64; FE65 # SMALL LESS-THAN SIGN
FE65; FE64 # SMALL GREATER-THAN SIGN
FF08; FF09 # FULLWIDTH LEFT PARENTHESIS
FF09; FF08 # FULLWIDTH RIGHT PARENTHESIS
FF1C; FF1E # FULLWIDTH LESS-THAN SIGN
FF1E; FF1C # FULLWIDTH GREATER-THAN SIGN
FF3B; FF3D # FULLWIDTH LEFT SQUARE BRACKET
FF3D; FF3B # FULLWIDTH RIGHT SQUARE BRACKET
FF5B; FF5D # FULLWIDTH LEFT CURLY BRACKET
FF5D; FF5B # FULLWIDTH RIGHT CURLY BRACKET
FF5F; FF60 # FULLWIDTH LEFT WHITE PARENTHESIS
FF60; FF5F # FULLWIDTH RIGHT WHITE PARENTHESIS
FF62; FF63 # [BEST FIT] HALFWIDTH LEFT CORNER BRACKET
FF63; FF62 # [BEST FIT] HALFWIDTH RIGHT CORNER BRACKET
# The following characters have no appropriate mirroring character.
# For these characters it is up to the rendering system
# to provide mirrored glyphs.
# 2140; DOUBLE-STRUCK N-ARY SUMMATION
# 2201; COMPLEMENT
# 2202; PARTIAL DIFFERENTIAL
# 2203; THERE EXISTS
# 2204; THERE DOES NOT EXIST
# 2211; N-ARY SUMMATION
# 2216; SET MINUS
# 221A; SQUARE ROOT
# 221B; CUBE ROOT
# 221C; FOURTH ROOT
# 221D; PROPORTIONAL TO
# 2226; NOT PARALLEL TO
# 222B; INTEGRAL
# 222C; DOUBLE INTEGRAL
# 222D; TRIPLE INTEGRAL
# 222E; CONTOUR INTEGRAL
# 222F; SURFACE INTEGRAL
# 2230; VOLUME INTEGRAL
# 2231; CLOCKWISE INTEGRAL
# 2232; CLOCKWISE CONTOUR INTEGRAL
# 2233; ANTICLOCKWISE CONTOUR INTEGRAL
# 2239; EXCESS
# 223B; HOMOTHETIC
# 223E; INVERTED LAZY S
# 223F; SINE WAVE
# 2240; WREATH PRODUCT
# 2241; NOT TILDE
# 2242; MINUS TILDE
# 2244; NOT ASYMPTOTICALLY EQUAL TO
# 2246; APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
# 2247; NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
# 2248; ALMOST EQUAL TO
# 2249; NOT ALMOST EQUAL TO
# 224A; ALMOST EQUAL OR EQUAL TO
# 224B; TRIPLE TILDE
# 225F; QUESTIONED EQUAL TO
# 2260; NOT EQUAL TO
# 2262; NOT IDENTICAL TO
# 228C; MULTISET
# 22A7; MODELS
# 22AA; TRIPLE VERTICAL BAR RIGHT TURNSTILE
# 22AC; DOES NOT PROVE
# 22AD; NOT TRUE
# 22AE; DOES NOT FORCE
# 22AF; NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
# 22BE; RIGHT ANGLE WITH ARC
# 22BF; RIGHT TRIANGLE
# 22F5; ELEMENT OF WITH DOT ABOVE
# 22F8; ELEMENT OF WITH UNDERBAR
# 22F9; ELEMENT OF WITH TWO HORIZONTAL STROKES
# 22FF; Z NOTATION BAG MEMBERSHIP
# 2320; TOP HALF INTEGRAL
# 2321; BOTTOM HALF INTEGRAL
# 27C0; THREE DIMENSIONAL ANGLE
# 27CC; LONG DIVISION
# 27D3; LOWER RIGHT CORNER WITH DOT
# 27D4; UPPER LEFT CORNER WITH DOT
# 299C; RIGHT ANGLE VARIANT WITH SQUARE
# 299D; MEASURED RIGHT ANGLE WITH DOT
# 299E; ANGLE WITH S INSIDE
# 299F; ACUTE ANGLE
# 29A2; TURNED ANGLE
# 29A6; OBLIQUE ANGLE OPENING UP
# 29A7; OBLIQUE ANGLE OPENING DOWN
# 29C2; CIRCLE WITH SMALL CIRCLE TO THE RIGHT
# 29C3; CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
# 29C9; TWO JOINED SQUARES
# 29CE; RIGHT TRIANGLE ABOVE LEFT TRIANGLE
# 29DC; INCOMPLETE INFINITY
# 29E1; INCREASES AS
# 29E3; EQUALS SIGN AND SLANTED PARALLEL
# 29E4; EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
# 29E5; IDENTICAL TO AND SLANTED PARALLEL
# 29F4; RULE-DELAYED
# 29F6; SOLIDUS WITH OVERBAR
# 29F7; REVERSE SOLIDUS WITH HORIZONTAL STROKE
# 2A0A; MODULO TWO SUM
# 2A0B; SUMMATION WITH INTEGRAL
# 2A0C; QUADRUPLE INTEGRAL OPERATOR
# 2A0D; FINITE PART INTEGRAL
# 2A0E; INTEGRAL WITH DOUBLE STROKE
# 2A0F; INTEGRAL AVERAGE WITH SLASH
# 2A10; CIRCULATION FUNCTION
# 2A11; ANTICLOCKWISE INTEGRATION
# 2A12; LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
# 2A13; LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
# 2A14; LINE INTEGRATION NOT INCLUDING THE POLE
# 2A15; INTEGRAL AROUND A POINT OPERATOR
# 2A16; QUATERNION INTEGRAL OPERATOR
# 2A17; INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
# 2A18; INTEGRAL WITH TIMES SIGN
# 2A19; INTEGRAL WITH INTERSECTION
# 2A1A; INTEGRAL WITH UNION
# 2A1B; INTEGRAL WITH OVERBAR
# 2A1C; INTEGRAL WITH UNDERBAR
# 2A1E; LARGE LEFT TRIANGLE OPERATOR
# 2A1F; Z NOTATION SCHEMA COMPOSITION
# 2A20; Z NOTATION SCHEMA PIPING
# 2A21; Z NOTATION SCHEMA PROJECTION
# 2A24; PLUS SIGN WITH TILDE ABOVE
# 2A26; PLUS SIGN WITH TILDE BELOW
# 2A29; MINUS SIGN WITH COMMA ABOVE
# 2A3E; Z NOTATION RELATIONAL COMPOSITION
# 2A57; SLOPING LARGE OR
# 2A58; SLOPING LARGE AND
# 2A6A; TILDE OPERATOR WITH DOT ABOVE
# 2A6B; TILDE OPERATOR WITH RISING DOTS
# 2A6C; SIMILAR MINUS SIMILAR
# 2A6D; CONGRUENT WITH DOT ABOVE
# 2A6F; ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
# 2A70; APPROXIMATELY EQUAL OR EQUAL TO
# 2A73; EQUALS SIGN ABOVE TILDE OPERATOR
# 2A74; DOUBLE COLON EQUAL
# 2AA3; DOUBLE NESTED LESS-THAN WITH UNDERBAR
# 2ADC; FORKING
# 2AE2; VERTICAL BAR TRIPLE RIGHT TURNSTILE
# 2AE6; LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
# 2AF3; PARALLEL WITH TILDE OPERATOR
# 2AFB; TRIPLE SOLIDUS BINARY RELATION
# 2AFD; DOUBLE SOLIDUS OPERATOR
# 1D6DB; MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
# 1D715; MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
# 1D74F; MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
# 1D789; MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
# 1D7C3; MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
# EOF

497589
src/modules/punk/char/unicode15.1/BidiTest.txt

File diff suppressed because it is too large Load Diff

364
src/modules/punk/char/unicode15.1/Blocks.txt

@ -0,0 +1,364 @@
# Blocks-15.1.0.txt
# Date: 2023-07-28, 15:47:20 GMT
# © 2023 Unicode®, Inc.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# Format:
# Start Code..End Code; Block Name
# ================================================
# Note: When comparing block names, casing, whitespace, hyphens,
# and underbars are ignored.
# For example, "Latin Extended-A" and "latin extended a" are equivalent.
# For more information on the comparison of property values,
# see UAX #44: https://www.unicode.org/reports/tr44/
#
# All block ranges start with a value where (cp MOD 16) = 0,
# and end with a value where (cp MOD 16) = 15. In other words,
# the last hexadecimal digit of the start of range is ...0
# and the last hexadecimal digit of the end of range is ...F.
# This constraint on block ranges guarantees that allocations
# are done in terms of whole columns, and that code chart display
# never involves splitting columns in the charts.
#
# All code points not explicitly listed for Block
# have the value No_Block.
# Property: Block
#
# @missing: 0000..10FFFF; No_Block
0000..007F; Basic Latin
0080..00FF; Latin-1 Supplement
0100..017F; Latin Extended-A
0180..024F; Latin Extended-B
0250..02AF; IPA Extensions
02B0..02FF; Spacing Modifier Letters
0300..036F; Combining Diacritical Marks
0370..03FF; Greek and Coptic
0400..04FF; Cyrillic
0500..052F; Cyrillic Supplement
0530..058F; Armenian
0590..05FF; Hebrew
0600..06FF; Arabic
0700..074F; Syriac
0750..077F; Arabic Supplement
0780..07BF; Thaana
07C0..07FF; NKo
0800..083F; Samaritan
0840..085F; Mandaic
0860..086F; Syriac Supplement
0870..089F; Arabic Extended-B
08A0..08FF; Arabic Extended-A
0900..097F; Devanagari
0980..09FF; Bengali
0A00..0A7F; Gurmukhi
0A80..0AFF; Gujarati
0B00..0B7F; Oriya
0B80..0BFF; Tamil
0C00..0C7F; Telugu
0C80..0CFF; Kannada
0D00..0D7F; Malayalam
0D80..0DFF; Sinhala
0E00..0E7F; Thai
0E80..0EFF; Lao
0F00..0FFF; Tibetan
1000..109F; Myanmar
10A0..10FF; Georgian
1100..11FF; Hangul Jamo
1200..137F; Ethiopic
1380..139F; Ethiopic Supplement
13A0..13FF; Cherokee
1400..167F; Unified Canadian Aboriginal Syllabics
1680..169F; Ogham
16A0..16FF; Runic
1700..171F; Tagalog
1720..173F; Hanunoo
1740..175F; Buhid
1760..177F; Tagbanwa
1780..17FF; Khmer
1800..18AF; Mongolian
18B0..18FF; Unified Canadian Aboriginal Syllabics Extended
1900..194F; Limbu
1950..197F; Tai Le
1980..19DF; New Tai Lue
19E0..19FF; Khmer Symbols
1A00..1A1F; Buginese
1A20..1AAF; Tai Tham
1AB0..1AFF; Combining Diacritical Marks Extended
1B00..1B7F; Balinese
1B80..1BBF; Sundanese
1BC0..1BFF; Batak
1C00..1C4F; Lepcha
1C50..1C7F; Ol Chiki
1C80..1C8F; Cyrillic Extended-C
1C90..1CBF; Georgian Extended
1CC0..1CCF; Sundanese Supplement
1CD0..1CFF; Vedic Extensions
1D00..1D7F; Phonetic Extensions
1D80..1DBF; Phonetic Extensions Supplement
1DC0..1DFF; Combining Diacritical Marks Supplement
1E00..1EFF; Latin Extended Additional
1F00..1FFF; Greek Extended
2000..206F; General Punctuation
2070..209F; Superscripts and Subscripts
20A0..20CF; Currency Symbols
20D0..20FF; Combining Diacritical Marks for Symbols
2100..214F; Letterlike Symbols
2150..218F; Number Forms
2190..21FF; Arrows
2200..22FF; Mathematical Operators
2300..23FF; Miscellaneous Technical
2400..243F; Control Pictures
2440..245F; Optical Character Recognition
2460..24FF; Enclosed Alphanumerics
2500..257F; Box Drawing
2580..259F; Block Elements
25A0..25FF; Geometric Shapes
2600..26FF; Miscellaneous Symbols
2700..27BF; Dingbats
27C0..27EF; Miscellaneous Mathematical Symbols-A
27F0..27FF; Supplemental Arrows-A
2800..28FF; Braille Patterns
2900..297F; Supplemental Arrows-B
2980..29FF; Miscellaneous Mathematical Symbols-B
2A00..2AFF; Supplemental Mathematical Operators
2B00..2BFF; Miscellaneous Symbols and Arrows
2C00..2C5F; Glagolitic
2C60..2C7F; Latin Extended-C
2C80..2CFF; Coptic
2D00..2D2F; Georgian Supplement
2D30..2D7F; Tifinagh
2D80..2DDF; Ethiopic Extended
2DE0..2DFF; Cyrillic Extended-A
2E00..2E7F; Supplemental Punctuation
2E80..2EFF; CJK Radicals Supplement
2F00..2FDF; Kangxi Radicals
2FF0..2FFF; Ideographic Description Characters
3000..303F; CJK Symbols and Punctuation
3040..309F; Hiragana
30A0..30FF; Katakana
3100..312F; Bopomofo
3130..318F; Hangul Compatibility Jamo
3190..319F; Kanbun
31A0..31BF; Bopomofo Extended
31C0..31EF; CJK Strokes
31F0..31FF; Katakana Phonetic Extensions
3200..32FF; Enclosed CJK Letters and Months
3300..33FF; CJK Compatibility
3400..4DBF; CJK Unified Ideographs Extension A
4DC0..4DFF; Yijing Hexagram Symbols
4E00..9FFF; CJK Unified Ideographs
A000..A48F; Yi Syllables
A490..A4CF; Yi Radicals
A4D0..A4FF; Lisu
A500..A63F; Vai
A640..A69F; Cyrillic Extended-B
A6A0..A6FF; Bamum
A700..A71F; Modifier Tone Letters
A720..A7FF; Latin Extended-D
A800..A82F; Syloti Nagri
A830..A83F; Common Indic Number Forms
A840..A87F; Phags-pa
A880..A8DF; Saurashtra
A8E0..A8FF; Devanagari Extended
A900..A92F; Kayah Li
A930..A95F; Rejang
A960..A97F; Hangul Jamo Extended-A
A980..A9DF; Javanese
A9E0..A9FF; Myanmar Extended-B
AA00..AA5F; Cham
AA60..AA7F; Myanmar Extended-A
AA80..AADF; Tai Viet
AAE0..AAFF; Meetei Mayek Extensions
AB00..AB2F; Ethiopic Extended-A
AB30..AB6F; Latin Extended-E
AB70..ABBF; Cherokee Supplement
ABC0..ABFF; Meetei Mayek
AC00..D7AF; Hangul Syllables
D7B0..D7FF; Hangul Jamo Extended-B
D800..DB7F; High Surrogates
DB80..DBFF; High Private Use Surrogates
DC00..DFFF; Low Surrogates
E000..F8FF; Private Use Area
F900..FAFF; CJK Compatibility Ideographs
FB00..FB4F; Alphabetic Presentation Forms
FB50..FDFF; Arabic Presentation Forms-A
FE00..FE0F; Variation Selectors
FE10..FE1F; Vertical Forms
FE20..FE2F; Combining Half Marks
FE30..FE4F; CJK Compatibility Forms
FE50..FE6F; Small Form Variants
FE70..FEFF; Arabic Presentation Forms-B
FF00..FFEF; Halfwidth and Fullwidth Forms
FFF0..FFFF; Specials
10000..1007F; Linear B Syllabary
10080..100FF; Linear B Ideograms
10100..1013F; Aegean Numbers
10140..1018F; Ancient Greek Numbers
10190..101CF; Ancient Symbols
101D0..101FF; Phaistos Disc
10280..1029F; Lycian
102A0..102DF; Carian
102E0..102FF; Coptic Epact Numbers
10300..1032F; Old Italic
10330..1034F; Gothic
10350..1037F; Old Permic
10380..1039F; Ugaritic
103A0..103DF; Old Persian
10400..1044F; Deseret
10450..1047F; Shavian
10480..104AF; Osmanya
104B0..104FF; Osage
10500..1052F; Elbasan
10530..1056F; Caucasian Albanian
10570..105BF; Vithkuqi
10600..1077F; Linear A
10780..107BF; Latin Extended-F
10800..1083F; Cypriot Syllabary
10840..1085F; Imperial Aramaic
10860..1087F; Palmyrene
10880..108AF; Nabataean
108E0..108FF; Hatran
10900..1091F; Phoenician
10920..1093F; Lydian
10980..1099F; Meroitic Hieroglyphs
109A0..109FF; Meroitic Cursive
10A00..10A5F; Kharoshthi
10A60..10A7F; Old South Arabian
10A80..10A9F; Old North Arabian
10AC0..10AFF; Manichaean
10B00..10B3F; Avestan
10B40..10B5F; Inscriptional Parthian
10B60..10B7F; Inscriptional Pahlavi
10B80..10BAF; Psalter Pahlavi
10C00..10C4F; Old Turkic
10C80..10CFF; Old Hungarian
10D00..10D3F; Hanifi Rohingya
10E60..10E7F; Rumi Numeral Symbols
10E80..10EBF; Yezidi
10EC0..10EFF; Arabic Extended-C
10F00..10F2F; Old Sogdian
10F30..10F6F; Sogdian
10F70..10FAF; Old Uyghur
10FB0..10FDF; Chorasmian
10FE0..10FFF; Elymaic
11000..1107F; Brahmi
11080..110CF; Kaithi
110D0..110FF; Sora Sompeng
11100..1114F; Chakma
11150..1117F; Mahajani
11180..111DF; Sharada
111E0..111FF; Sinhala Archaic Numbers
11200..1124F; Khojki
11280..112AF; Multani
112B0..112FF; Khudawadi
11300..1137F; Grantha
11400..1147F; Newa
11480..114DF; Tirhuta
11580..115FF; Siddham
11600..1165F; Modi
11660..1167F; Mongolian Supplement
11680..116CF; Takri
11700..1174F; Ahom
11800..1184F; Dogra
118A0..118FF; Warang Citi
11900..1195F; Dives Akuru
119A0..119FF; Nandinagari
11A00..11A4F; Zanabazar Square
11A50..11AAF; Soyombo
11AB0..11ABF; Unified Canadian Aboriginal Syllabics Extended-A
11AC0..11AFF; Pau Cin Hau
11B00..11B5F; Devanagari Extended-A
11C00..11C6F; Bhaiksuki
11C70..11CBF; Marchen
11D00..11D5F; Masaram Gondi
11D60..11DAF; Gunjala Gondi
11EE0..11EFF; Makasar
11F00..11F5F; Kawi
11FB0..11FBF; Lisu Supplement
11FC0..11FFF; Tamil Supplement
12000..123FF; Cuneiform
12400..1247F; Cuneiform Numbers and Punctuation
12480..1254F; Early Dynastic Cuneiform
12F90..12FFF; Cypro-Minoan
13000..1342F; Egyptian Hieroglyphs
13430..1345F; Egyptian Hieroglyph Format Controls
14400..1467F; Anatolian Hieroglyphs
16800..16A3F; Bamum Supplement
16A40..16A6F; Mro
16A70..16ACF; Tangsa
16AD0..16AFF; Bassa Vah
16B00..16B8F; Pahawh Hmong
16E40..16E9F; Medefaidrin
16F00..16F9F; Miao
16FE0..16FFF; Ideographic Symbols and Punctuation
17000..187FF; Tangut
18800..18AFF; Tangut Components
18B00..18CFF; Khitan Small Script
18D00..18D7F; Tangut Supplement
1AFF0..1AFFF; Kana Extended-B
1B000..1B0FF; Kana Supplement
1B100..1B12F; Kana Extended-A
1B130..1B16F; Small Kana Extension
1B170..1B2FF; Nushu
1BC00..1BC9F; Duployan
1BCA0..1BCAF; Shorthand Format Controls
1CF00..1CFCF; Znamenny Musical Notation
1D000..1D0FF; Byzantine Musical Symbols
1D100..1D1FF; Musical Symbols
1D200..1D24F; Ancient Greek Musical Notation
1D2C0..1D2DF; Kaktovik Numerals
1D2E0..1D2FF; Mayan Numerals
1D300..1D35F; Tai Xuan Jing Symbols
1D360..1D37F; Counting Rod Numerals
1D400..1D7FF; Mathematical Alphanumeric Symbols
1D800..1DAAF; Sutton SignWriting
1DF00..1DFFF; Latin Extended-G
1E000..1E02F; Glagolitic Supplement
1E030..1E08F; Cyrillic Extended-D
1E100..1E14F; Nyiakeng Puachue Hmong
1E290..1E2BF; Toto
1E2C0..1E2FF; Wancho
1E4D0..1E4FF; Nag Mundari
1E7E0..1E7FF; Ethiopic Extended-B
1E800..1E8DF; Mende Kikakui
1E900..1E95F; Adlam
1EC70..1ECBF; Indic Siyaq Numbers
1ED00..1ED4F; Ottoman Siyaq Numbers
1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols
1F000..1F02F; Mahjong Tiles
1F030..1F09F; Domino Tiles
1F0A0..1F0FF; Playing Cards
1F100..1F1FF; Enclosed Alphanumeric Supplement
1F200..1F2FF; Enclosed Ideographic Supplement
1F300..1F5FF; Miscellaneous Symbols and Pictographs
1F600..1F64F; Emoticons
1F650..1F67F; Ornamental Dingbats
1F680..1F6FF; Transport and Map Symbols
1F700..1F77F; Alchemical Symbols
1F780..1F7FF; Geometric Shapes Extended
1F800..1F8FF; Supplemental Arrows-C
1F900..1F9FF; Supplemental Symbols and Pictographs
1FA00..1FA6F; Chess Symbols
1FA70..1FAFF; Symbols and Pictographs Extended-A
1FB00..1FBFF; Symbols for Legacy Computing
20000..2A6DF; CJK Unified Ideographs Extension B
2A700..2B73F; CJK Unified Ideographs Extension C
2B740..2B81F; CJK Unified Ideographs Extension D
2B820..2CEAF; CJK Unified Ideographs Extension E
2CEB0..2EBEF; CJK Unified Ideographs Extension F
2EBF0..2EE5F; CJK Unified Ideographs Extension I
2F800..2FA1F; CJK Compatibility Ideographs Supplement
30000..3134F; CJK Unified Ideographs Extension G
31350..323AF; CJK Unified Ideographs Extension H
E0000..E007F; Tags
E0100..E01EF; Variation Selectors Supplement
F0000..FFFFF; Supplementary Private Use Area-A
100000..10FFFF; Supplementary Private Use Area-B
# EOF

283
src/modules/punk/char/unicode15.1/CJKRadicals.txt

@ -0,0 +1,283 @@
# CJKRadicals-15.1.0.txt
# Date: 2023-01-25, 21:54:00 GMT
# © 2023 Unicode®, Inc.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# Mapping from CJK radical numbers to characters
#
# This data file provides a mapping from the CJK radical numbers used
# in the kRSUnicode property to the corresponding character in
# the Kangxi Radicals block or the CJK Radicals Supplement block,
# as well as to a CJK unified ideograph which is formed from that
# radical only.
#
# There is one line per CJK radical number. Each line contains three
# fields, separated by a semicolon (';'). The first field is the
# CJK radical number. The second field is the CJK radical character,
# which may be empty if the CJK radical character is not included in
# the Kangxi Radicals block or the CJK Radicals Supplement block.
# The third field is the CJK unified ideograph.
#
# CJK radical numbers match the regular expression [1-9][0-9]{0,2}\'{0,2}
# and in particular they can end with one or two U+0027 ' APOSTROPHE characters.
#
# For more information, see UAX #38: Unicode Han Database (Unihan),
# at https://www.unicode.org/reports/tr38/
#
# This file was created for Unicode 5.2 by Richard Cook.
# Updated for Unicode 6.0 by Richard Cook.
# Updated for Unicode 6.1 and 6.2 by Ken Whistler,
# and for subsequent versions by Ken Whistler and Laurentiu Iancu.
#
# ####################################################
1; 2F00; 4E00
2; 2F01; 4E28
3; 2F02; 4E36
4; 2F03; 4E3F
5; 2F04; 4E59
6; 2F05; 4E85
7; 2F06; 4E8C
8; 2F07; 4EA0
9; 2F08; 4EBA
10; 2F09; 513F
11; 2F0A; 5165
12; 2F0B; 516B
13; 2F0C; 5182
14; 2F0D; 5196
15; 2F0E; 51AB
16; 2F0F; 51E0
17; 2F10; 51F5
18; 2F11; 5200
19; 2F12; 529B
20; 2F13; 52F9
21; 2F14; 5315
22; 2F15; 531A
23; 2F16; 5338
24; 2F17; 5341
25; 2F18; 535C
26; 2F19; 5369
27; 2F1A; 5382
28; 2F1B; 53B6
29; 2F1C; 53C8
30; 2F1D; 53E3
31; 2F1E; 56D7
32; 2F1F; 571F
33; 2F20; 58EB
34; 2F21; 5902
35; 2F22; 590A
36; 2F23; 5915
37; 2F24; 5927
38; 2F25; 5973
39; 2F26; 5B50
40; 2F27; 5B80
41; 2F28; 5BF8
42; 2F29; 5C0F
43; 2F2A; 5C22
44; 2F2B; 5C38
45; 2F2C; 5C6E
46; 2F2D; 5C71
47; 2F2E; 5DDB
48; 2F2F; 5DE5
49; 2F30; 5DF1
50; 2F31; 5DFE
51; 2F32; 5E72
52; 2F33; 5E7A
53; 2F34; 5E7F
54; 2F35; 5EF4
55; 2F36; 5EFE
56; 2F37; 5F0B
57; 2F38; 5F13
58; 2F39; 5F50
59; 2F3A; 5F61
60; 2F3B; 5F73
61; 2F3C; 5FC3
62; 2F3D; 6208
63; 2F3E; 6236
64; 2F3F; 624B
65; 2F40; 652F
66; 2F41; 6534
67; 2F42; 6587
68; 2F43; 6597
69; 2F44; 65A4
70; 2F45; 65B9
71; 2F46; 65E0
72; 2F47; 65E5
73; 2F48; 66F0
74; 2F49; 6708
75; 2F4A; 6728
76; 2F4B; 6B20
77; 2F4C; 6B62
78; 2F4D; 6B79
79; 2F4E; 6BB3
80; 2F4F; 6BCB
81; 2F50; 6BD4
82; 2F51; 6BDB
83; 2F52; 6C0F
84; 2F53; 6C14
85; 2F54; 6C34
86; 2F55; 706B
87; 2F56; 722A
88; 2F57; 7236
89; 2F58; 723B
90; 2F59; 723F
90'; 2EA6; 4E2C
91; 2F5A; 7247
92; 2F5B; 7259
93; 2F5C; 725B
94; 2F5D; 72AC
95; 2F5E; 7384
96; 2F5F; 7389
97; 2F60; 74DC
98; 2F61; 74E6
99; 2F62; 7518
100; 2F63; 751F
101; 2F64; 7528
102; 2F65; 7530
103; 2F66; 758B
104; 2F67; 7592
105; 2F68; 7676
106; 2F69; 767D
107; 2F6A; 76AE
108; 2F6B; 76BF
109; 2F6C; 76EE
110; 2F6D; 77DB
111; 2F6E; 77E2
112; 2F6F; 77F3
113; 2F70; 793A
114; 2F71; 79B8
115; 2F72; 79BE
116; 2F73; 7A74
117; 2F74; 7ACB
118; 2F75; 7AF9
119; 2F76; 7C73
120; 2F77; 7CF8
120'; 2EB0; 7E9F
121; 2F78; 7F36
122; 2F79; 7F51
123; 2F7A; 7F8A
124; 2F7B; 7FBD
125; 2F7C; 8001
126; 2F7D; 800C
127; 2F7E; 8012
128; 2F7F; 8033
129; 2F80; 807F
130; 2F81; 8089
131; 2F82; 81E3
132; 2F83; 81EA
133; 2F84; 81F3
134; 2F85; 81FC
135; 2F86; 820C
136; 2F87; 821B
137; 2F88; 821F
138; 2F89; 826E
139; 2F8A; 8272
140; 2F8B; 8278
141; 2F8C; 864D
142; 2F8D; 866B
143; 2F8E; 8840
144; 2F8F; 884C
145; 2F90; 8863
146; 2F91; 897E
147; 2F92; 898B
147'; 2EC5; 89C1
148; 2F93; 89D2
149; 2F94; 8A00
149'; 2EC8; 8BA0
150; 2F95; 8C37
151; 2F96; 8C46
152; 2F97; 8C55
153; 2F98; 8C78
154; 2F99; 8C9D
154'; 2EC9; 8D1D
155; 2F9A; 8D64
156; 2F9B; 8D70
157; 2F9C; 8DB3
158; 2F9D; 8EAB
159; 2F9E; 8ECA
159'; 2ECB; 8F66
160; 2F9F; 8F9B
161; 2FA0; 8FB0
162; 2FA1; 8FB5
163; 2FA2; 9091
164; 2FA3; 9149
165; 2FA4; 91C6
166; 2FA5; 91CC
167; 2FA6; 91D1
167'; 2ED0; 9485
168; 2FA7; 9577
168'; 2ED3; 957F
169; 2FA8; 9580
169'; 2ED4; 95E8
170; 2FA9; 961C
171; 2FAA; 96B6
172; 2FAB; 96B9
173; 2FAC; 96E8
174; 2FAD; 9751
175; 2FAE; 975E
176; 2FAF; 9762
177; 2FB0; 9769
178; 2FB1; 97CB
178'; 2ED9; 97E6
179; 2FB2; 97ED
180; 2FB3; 97F3
181; 2FB4; 9801
181'; 2EDA; 9875
182; 2FB5; 98A8
182'; 2EDB; 98CE
182''; ; 322C4
183; 2FB6; 98DB
183'; 2EDC; 98DE
184; 2FB7; 98DF
184'; 2EE0; 9963
185; 2FB8; 9996
186; 2FB9; 9999
187; 2FBA; 99AC
187'; 2EE2; 9A6C
188; 2FBB; 9AA8
189; 2FBC; 9AD8
190; 2FBD; 9ADF
191; 2FBE; 9B25
192; 2FBF; 9B2F
193; 2FC0; 9B32
194; 2FC1; 9B3C
195; 2FC2; 9B5A
195'; 2EE5; 9C7C
196; 2FC3; 9CE5
196'; 2EE6; 9E1F
197; 2FC4; 9E75
197'; 2EE7; 5364
198; 2FC5; 9E7F
199; 2FC6; 9EA5
199'; 2EE8; 9EA6
200; 2FC7; 9EBB
201; 2FC8; 9EC3
201'; 2EE9; 9EC4
202; 2FC9; 9ECD
203; 2FCA; 9ED1
204; 2FCB; 9EF9
205; 2FCC; 9EFD
205'; 2EEA; 9EFE
206; 2FCD; 9F0E
207; 2FCE; 9F13
208; 2FCF; 9F20
208''; ; 9F21
209; 2FD0; 9F3B
210; 2FD1; 9F4A
210'; 2EEC; 9F50
210''; 2EEB; 6589
211; 2FD2; 9F52
211'; 2EEE; 9F7F
211''; 2EED; 6B6F
212; 2FD3; 9F8D
212'; 2EF0; 9F99
212''; 2EEF; 7ADC
213; 2FD4; 9F9C
213'; 2EF3; 9F9F
213''; 2EF2; 4E80
214; 2FD5; 9FA0
# EOF

1627
src/modules/punk/char/unicode15.1/CaseFolding.txt

File diff suppressed because it is too large Load Diff

221
src/modules/punk/char/unicode15.1/CompositionExclusions.txt

@ -0,0 +1,221 @@
# CompositionExclusions-15.1.0.txt
# Date: 2023-01-05
# © 2023 Unicode®, Inc.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# This file lists the characters for the Composition Exclusion Table
# defined in UAX #15, Unicode Normalization Forms.
#
# This file is a normative contributory data file in the
# Unicode Character Database.
#
# For more information, see
# https://www.unicode.org/reports/tr15/#Primary_Exclusion_List_Table
#
# For a full derivation of composition exclusions, see the derived property
# Full_Composition_Exclusion in DerivedNormalizationProps.txt
#
# ================================================
# (1) Script Specifics
#
# This list of characters cannot be derived from the UnicodeData.txt file.
#
# Included are the following subcategories:
#
# - Many precomposed characters using a nukta diacritic in the Devanagari,
# Bangla/Bengali, Gurmukhi, or Odia/Oriya scripts.
# - Tibetan letters and subjoined letters with decompositions including
# U+0FB7 TIBETAN SUBJOINED LETTER HA or U+0FB5 TIBETAN SUBJOINED LETTER SSA.
# - Two two-part Tibetan vowel signs involving top and bottom pieces.
# - A large collection of compatibility precomposed characters for Hebrew
# involving dagesh and/or other combining marks.
#
# This list is unlikely to grow.
#
# ================================================
0958 # DEVANAGARI LETTER QA
0959 # DEVANAGARI LETTER KHHA
095A # DEVANAGARI LETTER GHHA
095B # DEVANAGARI LETTER ZA
095C # DEVANAGARI LETTER DDDHA
095D # DEVANAGARI LETTER RHA
095E # DEVANAGARI LETTER FA
095F # DEVANAGARI LETTER YYA
09DC # BENGALI LETTER RRA
09DD # BENGALI LETTER RHA
09DF # BENGALI LETTER YYA
0A33 # GURMUKHI LETTER LLA
0A36 # GURMUKHI LETTER SHA
0A59 # GURMUKHI LETTER KHHA
0A5A # GURMUKHI LETTER GHHA
0A5B # GURMUKHI LETTER ZA
0A5E # GURMUKHI LETTER FA
0B5C # ORIYA LETTER RRA
0B5D # ORIYA LETTER RHA
0F43 # TIBETAN LETTER GHA
0F4D # TIBETAN LETTER DDHA
0F52 # TIBETAN LETTER DHA
0F57 # TIBETAN LETTER BHA
0F5C # TIBETAN LETTER DZHA
0F69 # TIBETAN LETTER KSSA
0F76 # TIBETAN VOWEL SIGN VOCALIC R
0F78 # TIBETAN VOWEL SIGN VOCALIC L
0F93 # TIBETAN SUBJOINED LETTER GHA
0F9D # TIBETAN SUBJOINED LETTER DDHA
0FA2 # TIBETAN SUBJOINED LETTER DHA
0FA7 # TIBETAN SUBJOINED LETTER BHA
0FAC # TIBETAN SUBJOINED LETTER DZHA
0FB9 # TIBETAN SUBJOINED LETTER KSSA
FB1D # HEBREW LETTER YOD WITH HIRIQ
FB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH
FB2A # HEBREW LETTER SHIN WITH SHIN DOT
FB2B # HEBREW LETTER SHIN WITH SIN DOT
FB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
FB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
FB2E # HEBREW LETTER ALEF WITH PATAH
FB2F # HEBREW LETTER ALEF WITH QAMATS
FB30 # HEBREW LETTER ALEF WITH MAPIQ
FB31 # HEBREW LETTER BET WITH DAGESH
FB32 # HEBREW LETTER GIMEL WITH DAGESH
FB33 # HEBREW LETTER DALET WITH DAGESH
FB34 # HEBREW LETTER HE WITH MAPIQ
FB35 # HEBREW LETTER VAV WITH DAGESH
FB36 # HEBREW LETTER ZAYIN WITH DAGESH
FB38 # HEBREW LETTER TET WITH DAGESH
FB39 # HEBREW LETTER YOD WITH DAGESH
FB3A # HEBREW LETTER FINAL KAF WITH DAGESH
FB3B # HEBREW LETTER KAF WITH DAGESH
FB3C # HEBREW LETTER LAMED WITH DAGESH
FB3E # HEBREW LETTER MEM WITH DAGESH
FB40 # HEBREW LETTER NUN WITH DAGESH
FB41 # HEBREW LETTER SAMEKH WITH DAGESH
FB43 # HEBREW LETTER FINAL PE WITH DAGESH
FB44 # HEBREW LETTER PE WITH DAGESH
FB46 # HEBREW LETTER TSADI WITH DAGESH
FB47 # HEBREW LETTER QOF WITH DAGESH
FB48 # HEBREW LETTER RESH WITH DAGESH
FB49 # HEBREW LETTER SHIN WITH DAGESH
FB4A # HEBREW LETTER TAV WITH DAGESH
FB4B # HEBREW LETTER VAV WITH HOLAM
FB4C # HEBREW LETTER BET WITH RAFE
FB4D # HEBREW LETTER KAF WITH RAFE
FB4E # HEBREW LETTER PE WITH RAFE
# Total code points: 67
# ================================================
# (2) Post Composition Version precomposed characters
#
# These characters cannot be derived solely from the UnicodeData.txt file
# in this version of Unicode.
#
# Note that characters added to the standard after the
# Composition Version and which have canonical decomposition mappings
# are not automatically added to this list of Post Composition
# Version precomposed characters.
# ================================================
2ADC # FORKING
1D15E # MUSICAL SYMBOL HALF NOTE
1D15F # MUSICAL SYMBOL QUARTER NOTE
1D160 # MUSICAL SYMBOL EIGHTH NOTE
1D161 # MUSICAL SYMBOL SIXTEENTH NOTE
1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE
1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE
1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
1D1BB # MUSICAL SYMBOL MINIMA
1D1BC # MUSICAL SYMBOL MINIMA BLACK
1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE
1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK
1D1BF # MUSICAL SYMBOL FUSA WHITE
1D1C0 # MUSICAL SYMBOL FUSA BLACK
# Total code points: 14
# ================================================
# (3) Singleton Decompositions
#
# These characters can be derived from the UnicodeData.txt file
# by including all canonically decomposable characters whose
# canonical decomposition consists of a single character.
#
# These characters are simply quoted here for reference.
# See also Full_Composition_Exclusion in DerivedNormalizationProps.txt
# ================================================
# 0340..0341 [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
# 0343 COMBINING GREEK KORONIS
# 0374 GREEK NUMERAL SIGN
# 037E GREEK QUESTION MARK
# 0387 GREEK ANO TELEIA
# 1F71 GREEK SMALL LETTER ALPHA WITH OXIA
# 1F73 GREEK SMALL LETTER EPSILON WITH OXIA
# 1F75 GREEK SMALL LETTER ETA WITH OXIA
# 1F77 GREEK SMALL LETTER IOTA WITH OXIA
# 1F79 GREEK SMALL LETTER OMICRON WITH OXIA
# 1F7B GREEK SMALL LETTER UPSILON WITH OXIA
# 1F7D GREEK SMALL LETTER OMEGA WITH OXIA
# 1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA
# 1FBE GREEK PROSGEGRAMMENI
# 1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA
# 1FCB GREEK CAPITAL LETTER ETA WITH OXIA
# 1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
# 1FDB GREEK CAPITAL LETTER IOTA WITH OXIA
# 1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
# 1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA
# 1FEE..1FEF [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA
# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA
# 1FFD GREEK OXIA
# 2000..2001 [2] EN QUAD..EM QUAD
# 2126 OHM SIGN
# 212A..212B [2] KELVIN SIGN..ANGSTROM SIGN
# 2329 LEFT-POINTING ANGLE BRACKET
# 232A RIGHT-POINTING ANGLE BRACKET
# F900..FA0D [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10
# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12
# FA15..FA1E [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20
# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22
# FA25..FA26 [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
# FA2A..FA6D [68] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA6D
# FA70..FAD9 [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
# 2F800..2FA1D [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
# Total code points: 1035
# ================================================
# (4) Non-Starter Decompositions
#
# These characters can be derived from the UnicodeData.txt file
# by including each expanding canonical decomposition
# (i.e., those which canonically decompose to a sequence
# of characters instead of a single character), such that:
#
# A. The character is not a Starter.
#
# OR (inclusive)
#
# B. The character's canonical decomposition begins
# with a character that is not a Starter.
#
# Note that a "Starter" is any character with a zero combining class.
#
# These characters are simply quoted here for reference.
# See also Full_Composition_Exclusion in DerivedNormalizationProps.txt
# ================================================
# 0344 COMBINING GREEK DIALYTIKA TONOS
# 0F73 TIBETAN VOWEL SIGN II
# 0F75 TIBETAN VOWEL SIGN UU
# 0F81 TIBETAN VOWEL SIGN REVERSED II
# Total code points: 4
# EOF

2006
src/modules/punk/char/unicode15.1/DerivedAge.txt

File diff suppressed because it is too large Load Diff

12832
src/modules/punk/char/unicode15.1/DerivedCoreProperties.txt

File diff suppressed because it is too large Load Diff

16089
src/modules/punk/char/unicode15.1/DerivedNormalizationProps.txt

File diff suppressed because it is too large Load Diff

2621
src/modules/punk/char/unicode15.1/EastAsianWidth.txt

File diff suppressed because it is too large Load Diff

763
src/modules/punk/char/unicode15.1/EmojiSources.txt

@ -0,0 +1,763 @@
# EmojiSources-15.1.0.txt
# Date: 2023-01-05
# © 2023 Unicode®, Inc.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# This file provides historical mappings between Unicode code points and sequences on one hand
# and Shift-JIS codes for cell phone carrier symbols on the other hand.
# Each mapping is symmetric ("round trip"), for equivalent Unicode and carrier
# symbols or sequences. This file does not include best-fit ("fallback")
# mappings to similar but not equivalent symbols in either mapping direction.
#
# Created for Unicode 6.0 by Markus Scherer.
# Updated for subsequent versions by Ken Whistler (no changes to mappings).
#
# Format: Semicolon-delimited file with a fixed number of fields.
# Note that the format, including the number of fields, may change in the future.
#
# Fields:
# 0: Unicode code point or sequence
# 1: DoCoMo Shift-JIS code
# 2: KDDI Shift-JIS code
# 3: SoftBank Shift-JIS code
#
# Each field 1..3 contains a code if and only if the vendor character set
# has a symbol which is equivalent to the Unicode character or sequence.
# ================================================
# Keycap sequences for telephone keypad.
# The following 11 mappings are historical. The combining character sequences
# in these mappings do not include variation selectors for emoji presentation.
# Thus they do not match the named character sequences with keycaps listed in
# NamedSequences.txt.
# For modern data used in emoji support, see https://www.unicode.org/Public/emoji/latest/
0023 20E3;F985;F489;F7B0
0030 20E3;F990;F7C9;F7C5
0031 20E3;F987;F6FB;F7BC
0032 20E3;F988;F6FC;F7BD
0033 20E3;F989;F740;F7BE
0034 20E3;F98A;F741;F7BF
0035 20E3;F98B;F742;F7C0
0036 20E3;F98C;F743;F7C1
0037 20E3;F98D;F744;F7C2
0038 20E3;F98E;F745;F7C3
0039 20E3;F98F;F746;F7C4
00A9;F9D6;F774;F7EE
00AE;F9DB;F775;F7EF
2002;;F7AA;
2003;;F7A9;
2005;;F7AB;
203C;F9A9;F3F1;
2049;F9A8;F3F0;
2122;F9D7;F76A;FBD7
2139;;F74F;
2194;F9E1;F47E;
2195;F9E2;F480;
2196;F8F8;F768;F7D7
2197;F8D9;F771;F7D6
2198;F8F7;F769;F7D8
2199;F949;F772;F7D9
21A9;F97E;F779;
21AA;;F778;
231A;F9C4;F797;
231B;;F798;
23E9;;F74C;F7DC
23EA;;F74B;F7DD
23EB;;F761;
23EC;;F760;
23F0;F95E;F7B1;
23F3;F9C1;F654;
24C2;F8BD;;
25AA;;F74E;
25AB;;F74D;
25B6;;F74A;F7DA
25C0;;F749;F7DB
25FB;;F754;
25FC;;F755;
25FD;;F750;
25FE;;F751;
2600;F89F;F660;F98B
2601;F8A0;F665;F98A
260E;F8E8;F7B3;F949
2611;;F7D9;
2614;F8A1;F664;F98C
2615;F8D1;F7B4;F986
261D;;F6CF;F94F
263A;;F6D4;FB54
2648;F8A7;F667;F7DF
2649;F8A8;F668;F7E0
264A;F8A9;F669;F7E1
264B;F8AA;F66A;F7E2
264C;F8AB;F66B;F7E3
264D;F8AC;F66C;F7E4
264E;F8AD;F66D;F7E5
264F;F8AE;F66E;F7E6
2650;F8AF;F66F;F7E7
2651;F8B0;F670;F7E8
2652;F8B1;F671;F7E9
2653;F8B2;F672;F7EA
2660;F8EF;F7BE;F7AE
2663;F8F1;F7C0;F7AF
2665;F8EE;F378;F7AC
2666;F8F0;F7BF;F7AD
2668;F99C;F695;F763
267B;F9DA;F47D;
267F;F8FC;F657;F7AA
2693;;F682;
26A0;F9DC;F659;F7F2
26A1;F8A3;F65F;F77D
26AA;;F756;
26AB;;F757;
26BD;F8B7;F68F;F958
26BE;F8B4;F693;F956
26C4;F8A2;F65D;F989
26C5;;F666;
26CE;;F673;F7EB
26D4;;F65C;
26EA;;F7EB;F977
26F2;;F342;F761
26F3;F8B5;F7B6;F954
26F5;F947;F68D;F95C
26FA;;F343;F762
26FD;F8CC;F78E;F97A
2702;F8D6;F6EF;F9B3
2705;;F77A;
2708;F8C3;F68C;F95D
2709;F977;F6FA;
270A;F8F4;F488;F950
270B;F8F6;F7C4;F952
270C;F8F5;F7C3;F951
270F;F9BE;F679;
2712;F952;F7DA;
2714;;F773;
2716;;F76B;
2728;F99F;F37E;F9CE
2733;;F75A;F7A6
2734;;F651;F7A5
2744;;F662;
2747;;F644;
274C;;F76C;F9D3
274E;;F76D;
2753;;F65B;F960
2754;;;F9D6
2755;;;F9D7
2757;F9A7;F65A;F961
2764;F991;F7B2;F962
2795;;F758;
2796;;F759;
2797;;F770;
27A1;;F76E;F7D4
27B0;F9AF;F3F2;
2934;F99A;F3EE;
2935;F9A5;F3EF;
2B05;;F76F;F7D5
2B06;;F75B;F7D2
2B07;;F75C;F7D3
2B1B;;F765;
2B1C;;F764;
2B50;;F663;F9CF
2B55;;F381;F9D2
3030;F9AE;;
303D;;;F76C
3297;;F36C;F9AD
3299;F9D9;F6CA;F9B5
1F004;;F344;F76D
1F0CF;;F473;
1F170;;F3E7;FBD2
1F171;;F3E8;FBD3
1F17E;;F3E9;FBD5
1F17F;F8CD;F67E;F790
1F18E;;F3EA;FBD4
1F191;F980;F7C8;
1F192;;F358;F7B4
1F193;F97B;F795;
1F194;F97C;F35B;F7C9
1F195;F982;F7E5;F7B2
1F196;F9D4;;
1F197;F9B0;F7CA;F7ED
1F198;;F6C1;
1F199;;F6E8;F7B3
1F19A;;F345;F76E
1F1E8 1F1F3;;F3D2;FBB3
1F1E9 1F1EA;;F3CF;FBAE
1F1EA 1F1F8;;F348;FBB1
1F1EB 1F1F7;;F3CE;FBAD
1F1EC 1F1E7;;F3D1;FBB0
1F1EE 1F1F9;;F3D0;FBAF
1F1EF 1F1F5;;F6A5;FBAB
1F1F0 1F1F7;;F3D3;FBB4
1F1F7 1F1FA;;F349;FBB2
1F1FA 1F1F8;;F790;FBAC
1F201;;;F7A3
1F202;;F35A;F7C8
1F21A;;;F7B6
1F22F;;F35E;F7CC
1F232;F9DD;;
1F233;F9DE;F35D;F7CB
1F234;F9DF;;
1F235;F9E0;F35C;F7CA
1F236;;;F7B5
1F237;;;F7B7
1F238;;;F7B8
1F239;;F359;F7C7
1F23A;;F35F;F7CD
1F250;;F6D0;F7C6
1F251;;F7D8;
1F300;F8A4;F641;FB84
1F301;F8A5;F7B5;
1F302;F8A6;F3BC;FB7C
1F303;F957;F3C5;FB8C
1F304;;;F98E
1F305;;F3C8;FB8A
1F306;;F34D;F787
1F307;;;FB8B
1F308;;F3C6;FB8D
1F309;;F698;
1F30A;F9E4;F481;FB7E
1F30B;;F457;
1F30C;;F463;
1F30F;;F7D0;
1F311;F940;F7C5;
1F313;F942;F7C7;
1F314;F941;F7C6;
1F315;F944;;
1F319;F943;F65E;F98D
1F31B;;F661;
1F31F;;;F9D5
1F320;;F640;
1F330;;F3F9;
1F331;F9EB;F482;
1F334;;F6BB;F9A7
1F335;;F369;F9A8
1F337;F9E8;F6BD;F9A4
1F338;F9ED;F6A3;F970
1F339;;F7EA;F972
1F33A;;F367;F9A3
1F33B;;F6BC;F9A5
1F33C;;F44D;
1F33D;;F3F7;
1F33E;;;FB85
1F33F;;F487;
1F340;F9E6;F6EC;F750
1F341;F9EC;F6A7;F758
1F342;;F340;F759
1F343;;;FB88
1F344;;F3F8;
1F345;;F38F;F9E9
1F346;;F390;F9EA
1F347;;F3F5;
1F348;;F3F3;
1F349;;F6A6;F9E8
1F34A;;F38E;F9E6
1F34C;F9E9;F3F6;
1F34D;;F3F4;
1F34E;F9EA;F38D;F9E5
1F34F;;F45E;
1F351;;F3FA;
1F352;F9E7;F6AB;
1F353;;F6AD;F9E7
1F354;F8D4;F6AF;F760
1F355;;F3FC;
1F356;;F69D;
1F357;;F440;
1F358;;F387;F9DD
1F359;F9EE;F6AE;F9E2
1F35A;;F388;F9DE
1F35B;;F38A;F9E1
1F35C;F9F1;F7D1;F9E0
1F35D;;F389;F9DF
1F35E;F9F2;F383;F9D9
1F35F;;F385;F9DB
1F360;;F3FB;
1F361;;F386;F9DC
1F362;;F38B;F9E3
1F363;;F38C;F9E4
1F364;;F474;
1F365;;F6C6;
1F366;;F384;F9DA
1F367;;F3BE;FB80
1F368;;F44E;
1F369;;F44F;
1F36A;;F450;
1F36B;;F451;
1F36C;;F452;
1F36D;;F453;
1F36E;;F45A;
1F36F;;F45D;
1F370;F9EF;F6A9;F987
1F371;;F391;F9EC
1F372;;F392;F9ED
1F373;;F6AA;F788
1F374;F8D0;F685;F984
1F375;F9C3;F382;F9D8
1F376;F9F0;F36A;F9AB
1F377;F9FB;F69A;
1F378;F8D2;F69B;F985
1F379;;F442;
1F37A;F8D3;F69C;F988
1F37B;;F36B;F9AC
1F380;F8E5;F7BC;F9B4
1F381;F8E6;F6A8;F752
1F382;F8E7;F7BD;F9EB
1F383;;F3C2;FB86
1F384;F948;F6A2;F973
1F385;;F3C4;FB89
1F386;;F7FC;F757
1F387;;F3BF;FB81
1F388;;F36E;F9B0
1F389;;F36F;F9B2
1F38A;;F647;
1F38B;;F441;
1F38C;;F34C;F784
1F38D;;F3B7;FB76
1F38E;;F3B8;FB78
1F38F;;F3BB;FB7B
1F390;;F3C1;FB83
1F391;;F3C3;FB87
1F392;;F3BA;FB7A
1F393;;F3B9;FB79
1F3A0;F8DA;;
1F3A1;;F645;F764
1F3A2;;F3B6;FB73
1F3A3;;F446;
1F3A4;F8D7;F6DC;F97C
1F3A5;F8D8;F6F0;F97D
1F3A6;;;FBA7
1F3A7;F8DB;F6E1;F9AA
1F3A8;F8DC;F7B9;FBA2
1F3A9;F8DD;F3C9;FBA3
1F3AA;F8DE;F7BB;
1F3AB;F8DF;F676;F765
1F3AC;F950;F697;F9C4
1F3AD;;F7BA;
1F3AE;F8EC;F69F;
1F3AF;;F69E;F770
1F3B0;;F646;F773
1F3B1;;F3B1;FB6C
1F3B2;;F6A1;
1F3B3;;F447;
1F3B4;;F472;
1F3B5;F99B;F7EE;F97E
1F3B6;F9A4;F6DE;F9C6
1F3B7;;;F981
1F3B8;;F6DF;F982
1F3B9;;F444;
1F3BA;;F3B0;F983
1F3BB;;F6E0;
1F3BC;;F3A0;
1F3BD;F8B3;;
1F3BE;F8B6;F690;F955
1F3BF;F8B8;F380;F953
1F3C0;F8B9;F7B7;FB6A
1F3C1;F8BA;F692;F772
1F3C2;F9B7;F691;
1F3C3;F9D8;F643;F755
1F3C4;;F445;F957
1F3C6;;F346;F771
1F3C8;;F694;FB6B
1F3CA;;F3B2;FB6D
1F3E0;F8C4;F684;F976
1F3E1;;F7E0;
1F3E2;F8C5;F686;F978
1F3E3;F8C6;F351;F794
1F3E5;F8C7;F352;F796
1F3E6;F8C8;F683;F78E
1F3E7;F8C9;F67B;F795
1F3E8;F8CA;F354;F799
1F3E9;;F3C7;FBA1
1F3EA;F8CB;F67C;F797
1F3EB;F9E3;F353;F798
1F3EC;;F3CA;FBA4
1F3ED;;F3CD;FBA8
1F3EE;;F696;
1F3EF;;F3CB;FBA5
1F3F0;;F3CC;FBA6
1F40C;F9F3;F483;
1F40D;;F3E3;FBCD
1F40E;;;F774
1F411;;;FBC9
1F412;;;FBC8
1F414;;F3E4;FBCE
1F417;;F3E5;FBCF
1F418;;F3E0;FBC6
1F419;;F7F7;F74A
1F41A;;F3C0;FB82
1F41B;;F3DF;FBC5
1F41C;;F6B6;
1F41D;;F45B;
1F41E;;F45C;
1F41F;F9F6;;F959
1F420;;F3DE;FBC2
1F421;;F6AC;
1F422;;F347;
1F423;;F34E;
1F424;F9F4;F6B9;FBC3
1F425;;F47A;
1F426;;;FBC1
1F427;F9F5;F6B5;F996
1F428;;F3E1;FBC7
1F429;;F6B8;
1F42B;;F3E6;FBD0
1F42C;;F3DC;FBC0
1F42D;;F7F2;F994
1F42E;;F3E2;FBCB
1F42F;;F7F0;F991
1F430;;F6B0;FBCC
1F431;F946;F6B4;F990
1F432;;F443;
1F433;;F648;F995
1F434;F9F9;F6B1;F95A
1F435;;F6B2;F749
1F436;F945;F6BA;F993
1F437;F9FA;F6B7;F74B
1F438;;F6B3;FBD1
1F439;;;FBC4
1F43A;;;FBCA
1F43B;;F7F1;F992
1F43C;;F44A;
1F43D;;F44C;
1F43E;;F6C7;
1F440;F8F2;F7C1;FB59
1F442;F8F3;F7C2;FB5B
1F443;;F3A4;FB5A
1F444;;F3A5;FB5C
1F445;;F44B;
1F446;;F360;F7CE
1F447;;F361;F7CF
1F448;;F6D8;F7D0
1F449;;F6D9;F7D1
1F44A;F9A2;F6CC;F94D
1F44B;;F3AA;FB5E
1F44C;;F3A8;FB60
1F44D;F9CC;F6D2;F94E
1F44E;;F3A9;FB61
1F44F;;F3A7;FB5F
1F450;;;FB62
1F451;F9BF;F7F9;F74E
1F452;;F371;F9B8
1F453;F8FB;F6D7;
1F454;;F366;F9A2
1F455;F9B3;F7E6;F946
1F456;F9B6;F47B;
1F457;;F46F;F9B9
1F458;;F376;F9C1
1F459;;F377;F9C2
1F45A;;F6E6;
1F45B;F9B4;F6DD;
1F45C;F8E3;F674;F9C3
1F45D;F951;;
1F45E;;F7E7;
1F45F;F8FA;F3EC;F947
1F460;F8D5;F6F3;F77E
1F461;;;F9BA
1F462;;F372;F9BB
1F463;F8F9;F3EB;FBD6
1F464;F955;;
1F466;;;F941
1F467;;;F942
1F468;;F6D5;F944
1F469;;F6D3;F945
1F46A;;F6DA;
1F46B;;;FB68
1F46E;;F350;F793
1F46F;;F3AF;FB69
1F470;;F3BD;
1F471;;F3D4;FBB5
1F472;;F3D5;FBB6
1F473;;F3D6;FBB7
1F474;;F3D7;FBB8
1F475;;F3D8;FBB9
1F476;;F3D9;FBBA
1F477;;F3DA;FBBB
1F478;;F3DB;FBBC
1F479;;F448;
1F47A;;F449;
1F47B;;F6A4;F75B
1F47C;;F7EF;F98F
1F47D;;F6E7;F74C
1F47E;;F6C5;F76B
1F47F;;F6C8;F75A
1F480;;F6D1;F75C
1F481;;;F7F3
1F482;;;FBBE
1F483;;F3DD;FBBF
1F484;F9B5;F6E2;F9BC
1F485;;F373;F9BD
1F486;;F6E4;F9BE
1F487;;F374;F9BF
1F488;;F375;F9C0
1F489;;F6E9;F77B
1F48A;;F36D;F9AF
1F48B;F99E;F6C4;F943
1F48C;F9BC;F47C;
1F48D;F9C0;F6ED;F974
1F48E;;;F975
1F48F;;F7FA;F751
1F490;;F368;F9A6
1F491;;F3AE;FB65
1F492;;;FB7D
1F493;F992;F479;F9C7
1F494;F993;F64F;F963
1F495;F994;F650;
1F496;;F379;
1F497;;;F9C8
1F498;;F6C3;F9C9
1F499;;F37A;F9CA
1F49A;;F37B;F9CB
1F49B;;F37C;F9CC
1F49C;;F37D;F9CD
1F49D;;F458;FB77
1F49E;;F7CC;
1F49F;;;F7A4
1F4A0;F99D;;
1F4A1;F9A0;F64E;F74F
1F4A2;F9A1;F6BE;F9D4
1F4A3;F9A3;F652;F9B1
1F4A4;F9A6;F64D;F77C
1F4A5;F9AA;F7CD;
1F4A6;F9AB;F7CE;F9D1
1F4A7;F9AC;F6BF;
1F4A8;F9AD;F6CD;F9D0
1F4A9;;F6CE;F99B
1F4AA;;F6C2;F78D
1F4AB;;F460;
1F4AC;;F6D6;
1F4AE;;F6C9;
1F4AF;;F6CB;
1F4B0;F9BA;F6A0;F76F
1F4B1;;;F78A
1F4B2;;F796;
1F4B3;;F799;
1F4B4;F97A;F79A;
1F4B5;;F7A2;
1F4B8;;F45F;
1F4B9;;F34F;F78B
1F4BA;F956;;F75F
1F4BB;F9BB;F7E8;F94C
1F4BC;;F341;F75E
1F4BD;;F79F;F9B6
1F4BE;;F77E;
1F4BF;F8ED;F6E5;F766
1F4C0;;;F767
1F4C1;;F7AC;
1F4C2;;F7AD;
1F4C3;;F77D;
1F4C4;;F786;
1F4C5;;F780;
1F4C6;;F787;
1F4C7;;F789;
1F4C8;;F792;
1F4C9;;F793;
1F4CA;;F791;
1F4CB;;F781;
1F4CC;;F78A;
1F4CD;;F77C;
1F4CE;F9D5;F678;
1F4CF;;F78D;
1F4D0;;F67A;
1F4D1;;F7E2;
1F4D2;;F78B;
1F4D3;;F788;
1F4D4;;F675;
1F4D5;;F785;
1F4D6;F8E4;F677;F789
1F4D7;;F782;
1F4D8;;F783;
1F4D9;;F784;
1F4DA;;F78C;
1F4DB;;F6F6;
1F4DC;;F77B;
1F4DD;F8EA;F365;F9A1
1F4DE;;F6F7;
1F4DF;F8BB;F7B8;
1F4E0;F974;F6F9;F94B
1F4E1;;F681;F78C
1F4E2;;;F783
1F4E3;;;F9B7
1F4E4;;F7AF;
1F4E5;;F7B0;
1F4E6;;F6F8;
1F4E7;;F475;
1F4E8;;F7AE;
1F4E9;F973;F466;F743
1F4EA;;F6F4;
1F4EB;;F7E1;F741
1F4EE;;;F742
1F4F0;;F7A8;
1F4F1;F8E9;F7A5;F94A
1F4F2;F972;F7DF;F744
1F4F3;;F363;F7F0
1F4F4;;F364;F7F1
1F4F6;;F357;F7AB
1F4F7;F8E2;F6EE;F948
1F4F9;;F79B;
1F4FA;F8EB;F6DB;F76A
1F4FB;;F7E9;F768
1F4FC;;F79D;F769
1F503;;F7E4;
1F50A;;F6EA;F782
1F50B;;F7A1;
1F50C;;F7A6;
1F50D;F981;F6F1;F754
1F50E;;F7DC;
1F50F;;F7E3;
1F510;;F7D3;
1F511;F97D;F6F2;F980
1F512;;F6F5;F785
1F513;;;F786
1F514;F9B8;F6EB;F9C5
1F516;;F7DE;
1F517;;F7A7;
1F518;;F7DB;
1F519;;F7DD;
1F51A;F95D;;
1F51B;F95C;;
1F51C;F95B;;
1F51D;;;F7EC
1F51E;;F356;F7A7
1F51F;;F747;
1F520;;F7D4;
1F521;;F7D5;
1F522;;F7D6;
1F523;;F7D7;
1F524;;F459;
1F525;;F653;F75D
1F526;;F7A0;
1F527;F9BD;F7A4;
1F528;;F7FB;F756
1F529;;F79E;
1F52A;;F79C;
1F52B;;F6E3;F753
1F52E;;F362;
1F52F;;;F7DE
1F530;;F658;F7A9
1F531;;;F971
1F532;;;F7BA
1F533;;;F7BB
1F534;;F766;F7B9
1F535;;F767;
1F536;;F762;
1F537;;F763;
1F538;;F752;
1F539;;F753;
1F53A;;F776;
1F53B;;F777;
1F53C;;F75F;
1F53D;;F75E;
1F550;;;F964
1F551;;;F965
1F552;;;F966
1F553;;;F967
1F554;;;F968
1F555;;;F969
1F556;;;F96A
1F557;;;F96B
1F558;;;F96C
1F559;;;F96D
1F55A;;;F96E
1F55B;;;F96F
1F5FB;F9E5;F7ED;F97B
1F5FC;;F699;FBA9
1F5FD;;;FBBD
1F5FE;;F78F;
1F5FF;;F470;
1F601;F9F8;F485;FB44
1F602;;F468;FB52
1F603;F995;F649;F998
1F604;;;FB55
1F605;F9C7;;
1F606;F9CF;;
1F609;F9CE;F7F3;FB45
1F60A;;F3A1;F997
1F60B;F9F7;;
1F60C;F9C6;F399;FB4A
1F60D;F9CB;F7F4;F746
1F60F;F9D1;F393;FB42
1F612;F9CA;F39D;FB4E
1F613;F9C8;F7F6;F748
1F614;F9C5;F394;FB43
1F616;F998;F397;FB47
1F618;;F3A3;FB58
1F61A;;F3A2;FB57
1F61C;F9CD;F6C0;F745
1F61D;;;FB49
1F61E;F997;;F999
1F620;F996;F64A;F99A
1F621;F9C9;F461;FB56
1F622;F9D3;F46D;FB53
1F623;F9D0;F396;FB46
1F624;;F395;
1F625;;;FB41
1F628;;F39A;FB4B
1F629;;F46B;
1F62A;;F398;FB48
1F62B;;F64C;
1F62D;F9D2;F64B;FB51
1F630;;F39F;FB4F
1F631;F9FC;F7F5;F747
1F632;;F39E;FB50
1F633;;F39C;FB4D
1F635;F999;F7CB;
1F637;;F39B;FB4C
1F638;;F484;
1F639;;F467;
1F63A;;F465;
1F63B;;F469;
1F63C;;F46E;
1F63D;;F464;
1F63E;;F462;
1F63F;;F46C;
1F640;;F46A;
1F645;;F3AB;FB63
1F646;;F3AC;FB64
1F647;;F3AD;FB66
1F648;;F454;
1F649;;F456;
1F64A;;F455;
1F64B;;F48A;
1F64C;;F48B;FB67
1F64D;;F48C;
1F64E;;F48D;
1F64F;;F3A6;FB5D
1F680;;F7F8;F74D
1F683;F8BC;F68E;F95E
1F684;F8BE;;FB75
1F685;;F689;F95F
1F687;;F7EC;FB74
1F689;;F471;F979
1F68C;F8C1;F688;F79A
1F68F;;F680;F791
1F691;;F3B4;FB71
1F692;;F3B3;FB70
1F693;;F3B5;FB72
1F695;;;F79B
1F697;F8BF;F68A;F95B
1F699;F8C0;;FB6E
1F69A;;F68B;FB6F
1F6A2;F8C2;F355;F7A2
1F6A4;;;F775
1F6A5;F8CE;F642;F78F
1F6A7;;F34A;F777
1F6A8;;F477;
1F6A9;F983;F3ED;
1F6AA;F9B9;;
1F6AB;;F75D;
1F6AC;F8E0;F655;F9AE
1F6AD;F8E1;F656;F7A8
1F6B2;F9C2;F687;F776
1F6B6;;F476;F7A1
1F6B9;;;F778
1F6BA;;;F779
1F6BB;F8CF;F67D;F792
1F6BC;;;F77A
1F6BD;;;F781
1F6BE;;;F9A9
1F6C0;;F34B;F780
# EOF

408
src/modules/punk/char/unicode15.1/EquivalentUnifiedIdeograph.txt

@ -0,0 +1,408 @@
# EquivalentUnifiedIdeograph-15.1.0.txt
# Date: 2023-01-05
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# For documentation, see UAX #44: Unicode Character Database,
# at https://www.unicode.org/reports/tr44/
#
# This file defines the following property:
#
# Equivalent_Unified_Ideograph
#
# This data file lists CJK radicals and CJK strokes (aka characters
# that have the Radical=Yes property or are in the CJK Strokes block)
# for which there are reasonably equivalent CJK unified ideographs in
# that they are visually identical or near-identical.
#
# The file contains a list of lines with mappings from one code point
# or code point range to an equivalent CJK unified ideograph.
#
# Each mapping line contains two fields, separated by a semicolon (';').
# The first field contains a code point or code point range represented
# as a variable-length hexadecimal value with 4 to 6 digits. The second
# field contains a code point represented as a variable-length
# hexadecimal value with 4 to 6 digits.
#
# CJK radicals and CJK strokes for which no reasonably equivalent CJK
# unified ideographs exist are listed as comments at the end of the file.
#
# Formally, the default value of the Equivalent_Unified_Ideograph
# property for each code point is <none>, unless a mapping to some
# other character is specified in this data file. When a code point
# has the default value for the Equivalent_Unified_Ideograph property,
# that means that no other character exists whose representative glyph
# is a reasonably equivalent CJK unified ideograph.
#
# This file was originally created by Ken Lunde.
#
# ############################################################
#
# Property: Equivalent_Unified_Ideograph
#
# @missing: 0000..10FFFF; <none>
2E81 ; 5382 # CJK RADICAL CLIFF
2E82 ; 4E5B # CJK RADICAL SECOND ONE
2E83 ; 4E5A # CJK RADICAL SECOND TWO
2E84 ; 4E59 # CJK RADICAL SECOND THREE
2E85 ; 4EBB # CJK RADICAL PERSON
2E86 ; 5182 # CJK RADICAL BOX
2E87 ; 20628 # CJK RADICAL TABLE
2E88 ; 5200 # CJK RADICAL KNIFE ONE
2E89 ; 5202 # CJK RADICAL KNIFE TWO
2E8A ; 535C # CJK RADICAL DIVINATION
2E8B ; 353E # CJK RADICAL SEAL
2E8C..2E8D ; 5C0F # [2] CJK RADICAL SMALL ONE..CJK RADICAL SMALL TWO
2E8E ; 5140 # CJK RADICAL LAME ONE
2E8F ; 5C23 # CJK RADICAL LAME TWO
2E90 ; 5C22 # CJK RADICAL LAME THREE
2E91 ; 21BC2 # CJK RADICAL LAME FOUR
2E92 ; 5DF3 # CJK RADICAL SNAKE
2E93 ; 5E7A # CJK RADICAL THREAD
2E94 ; 5F51 # CJK RADICAL SNOUT ONE
2E95 ; 2B739 # CJK RADICAL SNOUT TWO
2E96 ; 5FC4 # CJK RADICAL HEART ONE
2E97 ; 5FC3 # CJK RADICAL HEART TWO
2E98 ; 624C # CJK RADICAL HAND
2E99 ; 6535 # CJK RADICAL RAP
2E9B ; 65E1 # CJK RADICAL CHOKE
2E9C ; 65E5 # CJK RADICAL SUN
2E9D ; 6708 # CJK RADICAL MOON
2E9E ; 6B7A # CJK RADICAL DEATH
2E9F ; 6BCD # CJK RADICAL MOTHER
2EA0 ; 6C11 # CJK RADICAL CIVILIAN
2EA1 ; 6C35 # CJK RADICAL WATER ONE
2EA2 ; 6C3A # CJK RADICAL WATER TWO
2EA3 ; 706C # CJK RADICAL FIRE
2EA4..2EA5 ; 722B # [2] CJK RADICAL PAW ONE..CJK RADICAL PAW TWO
2EA6 ; 4E2C # CJK RADICAL SIMPLIFIED HALF TREE TRUNK
2EA7 ; 725B # CJK RADICAL COW
2EA8 ; 72AD # CJK RADICAL DOG
2EA9 ; 738B # CJK RADICAL JADE
2EAA ; 24D14 # CJK RADICAL BOLT OF CLOTH
2EAB ; 76EE # CJK RADICAL EYE
2EAC ; 793A # CJK RADICAL SPIRIT ONE
2EAD ; 793B # CJK RADICAL SPIRIT TWO
2EAE ; 25AD7 # CJK RADICAL BAMBOO
2EAF ; 7CF9 # CJK RADICAL SILK
2EB0 ; 7E9F # CJK RADICAL C-SIMPLIFIED SILK
2EB1 ; 7F53 # CJK RADICAL NET ONE
2EB2 ; 7F52 # CJK RADICAL NET TWO
2EB3 ; 34C1 # CJK RADICAL NET THREE
2EB4 ; 5197 # CJK RADICAL NET FOUR
2EB5 ; 2626B # CJK RADICAL MESH
2EB6 ; 7F8A # CJK RADICAL SHEEP
2EB7 ; 2634C # CJK RADICAL RAM
2EB8 ; 2634B # CJK RADICAL EWE
2EB9 ; 8002 # CJK RADICAL OLD
2EBA ; 8080 # CJK RADICAL BRUSH ONE
2EBB ; 807F # CJK RADICAL BRUSH TWO
2EBC ; 8089 # CJK RADICAL MEAT
2EBD ; 26951 # CJK RADICAL MORTAR
2EBE..2EC0 ; 8279 # [3] CJK RADICAL GRASS ONE..CJK RADICAL GRASS THREE
2EC1 ; 864E # CJK RADICAL TIGER
2EC2 ; 8864 # CJK RADICAL CLOTHES
2EC3 ; 8980 # CJK RADICAL WEST ONE
2EC4 ; 897F # CJK RADICAL WEST TWO
2EC5 ; 89C1 # CJK RADICAL C-SIMPLIFIED SEE
2EC6 ; 89D2 # CJK RADICAL SIMPLIFIED HORN
2EC7 ; 278B2 # CJK RADICAL HORN
2EC8 ; 8BA0 # CJK RADICAL C-SIMPLIFIED SPEECH
2EC9 ; 8D1D # CJK RADICAL C-SIMPLIFIED SHELL
2ECA ; 27FB7 # CJK RADICAL FOOT
2ECB ; 8F66 # CJK RADICAL C-SIMPLIFIED CART
2ECC..2ECE ; 8FB6 # [3] CJK RADICAL SIMPLIFIED WALK..CJK RADICAL WALK TWO
2ECF ; 9091 # CJK RADICAL CITY
2ED0 ; 9485 # CJK RADICAL C-SIMPLIFIED GOLD
2ED1 ; 9577 # CJK RADICAL LONG ONE
2ED2 ; 9578 # CJK RADICAL LONG TWO
2ED3 ; 957F # CJK RADICAL C-SIMPLIFIED LONG
2ED4 ; 95E8 # CJK RADICAL C-SIMPLIFIED GATE
2ED5 ; 28E0F # CJK RADICAL MOUND ONE
2ED6 ; 961D # CJK RADICAL MOUND TWO
2ED7 ; 96E8 # CJK RADICAL RAIN
2ED8 ; 9752 # CJK RADICAL BLUE
2ED9 ; 97E6 # CJK RADICAL C-SIMPLIFIED TANNED LEATHER
2EDA ; 9875 # CJK RADICAL C-SIMPLIFIED LEAF
2EDB ; 98CE # CJK RADICAL C-SIMPLIFIED WIND
2EDC ; 98DE # CJK RADICAL C-SIMPLIFIED FLY
2EDD ; 98DF # CJK RADICAL EAT ONE
2EDE ; 2967F # CJK RADICAL EAT TWO
2EDF ; 98E0 # CJK RADICAL EAT THREE
2EE0 ; 9963 # CJK RADICAL C-SIMPLIFIED EAT
2EE1 ; 29810 # CJK RADICAL HEAD
2EE2 ; 9A6C # CJK RADICAL C-SIMPLIFIED HORSE
2EE3 ; 9AA8 # CJK RADICAL BONE
2EE4 ; 9B3C # CJK RADICAL GHOST
2EE5 ; 9C7C # CJK RADICAL C-SIMPLIFIED FISH
2EE6 ; 9E1F # CJK RADICAL C-SIMPLIFIED BIRD
2EE7 ; 5364 # CJK RADICAL C-SIMPLIFIED SALT
2EE8 ; 9EA6 # CJK RADICAL SIMPLIFIED WHEAT
2EE9 ; 9EC4 # CJK RADICAL SIMPLIFIED YELLOW
2EEA ; 9EFE # CJK RADICAL C-SIMPLIFIED FROG
2EEB ; 6589 # CJK RADICAL J-SIMPLIFIED EVEN
2EEC ; 9F50 # CJK RADICAL C-SIMPLIFIED EVEN
2EED ; 6B6F # CJK RADICAL J-SIMPLIFIED TOOTH
2EEE ; 9F7F # CJK RADICAL C-SIMPLIFIED TOOTH
2EEF ; 7ADC # CJK RADICAL J-SIMPLIFIED DRAGON
2EF0 ; 9F99 # CJK RADICAL C-SIMPLIFIED DRAGON
2EF1 ; 9F9C # CJK RADICAL TURTLE
2EF2 ; 4E80 # CJK RADICAL J-SIMPLIFIED TURTLE
2EF3 ; 9F9F # CJK RADICAL C-SIMPLIFIED TURTLE
2F00 ; 4E00 # KANGXI RADICAL ONE
2F01 ; 4E28 # KANGXI RADICAL LINE
2F02 ; 4E36 # KANGXI RADICAL DOT
2F03 ; 4E3F # KANGXI RADICAL SLASH
2F04 ; 4E59 # KANGXI RADICAL SECOND
2F05 ; 4E85 # KANGXI RADICAL HOOK
2F06 ; 4E8C # KANGXI RADICAL TWO
2F07 ; 4EA0 # KANGXI RADICAL LID
2F08 ; 4EBA # KANGXI RADICAL MAN
2F09 ; 513F # KANGXI RADICAL LEGS
2F0A ; 5165 # KANGXI RADICAL ENTER
2F0B ; 516B # KANGXI RADICAL EIGHT
2F0C ; 5182 # KANGXI RADICAL DOWN BOX
2F0D ; 5196 # KANGXI RADICAL COVER
2F0E ; 51AB # KANGXI RADICAL ICE
2F0F ; 51E0 # KANGXI RADICAL TABLE
2F10 ; 51F5 # KANGXI RADICAL OPEN BOX
2F11 ; 5200 # KANGXI RADICAL KNIFE
2F12 ; 529B # KANGXI RADICAL POWER
2F13 ; 52F9 # KANGXI RADICAL WRAP
2F14 ; 5315 # KANGXI RADICAL SPOON
2F15 ; 531A # KANGXI RADICAL RIGHT OPEN BOX
2F16 ; 5338 # KANGXI RADICAL HIDING ENCLOSURE
2F17 ; 5341 # KANGXI RADICAL TEN
2F18 ; 535C # KANGXI RADICAL DIVINATION
2F19 ; 5369 # KANGXI RADICAL SEAL
2F1A ; 5382 # KANGXI RADICAL CLIFF
2F1B ; 53B6 # KANGXI RADICAL PRIVATE
2F1C ; 53C8 # KANGXI RADICAL AGAIN
2F1D ; 53E3 # KANGXI RADICAL MOUTH
2F1E ; 56D7 # KANGXI RADICAL ENCLOSURE
2F1F ; 571F # KANGXI RADICAL EARTH
2F20 ; 58EB # KANGXI RADICAL SCHOLAR
2F21 ; 5902 # KANGXI RADICAL GO
2F22 ; 590A # KANGXI RADICAL GO SLOWLY
2F23 ; 5915 # KANGXI RADICAL EVENING
2F24 ; 5927 # KANGXI RADICAL BIG
2F25 ; 5973 # KANGXI RADICAL WOMAN
2F26 ; 5B50 # KANGXI RADICAL CHILD
2F27 ; 5B80 # KANGXI RADICAL ROOF
2F28 ; 5BF8 # KANGXI RADICAL INCH
2F29 ; 5C0F # KANGXI RADICAL SMALL
2F2A ; 5C22 # KANGXI RADICAL LAME
2F2B ; 5C38 # KANGXI RADICAL CORPSE
2F2C ; 5C6E # KANGXI RADICAL SPROUT
2F2D ; 5C71 # KANGXI RADICAL MOUNTAIN
2F2E ; 5DDB # KANGXI RADICAL RIVER
2F2F ; 5DE5 # KANGXI RADICAL WORK
2F30 ; 5DF1 # KANGXI RADICAL ONESELF
2F31 ; 5DFE # KANGXI RADICAL TURBAN
2F32 ; 5E72 # KANGXI RADICAL DRY
2F33 ; 5E7A # KANGXI RADICAL SHORT THREAD
2F34 ; 5E7F # KANGXI RADICAL DOTTED CLIFF
2F35 ; 5EF4 # KANGXI RADICAL LONG STRIDE
2F36 ; 5EFE # KANGXI RADICAL TWO HANDS
2F37 ; 5F0B # KANGXI RADICAL SHOOT
2F38 ; 5F13 # KANGXI RADICAL BOW
2F39 ; 5F50 # KANGXI RADICAL SNOUT
2F3A ; 5F61 # KANGXI RADICAL BRISTLE
2F3B ; 5F73 # KANGXI RADICAL STEP
2F3C ; 5FC3 # KANGXI RADICAL HEART
2F3D ; 6208 # KANGXI RADICAL HALBERD
2F3E ; 6236 # KANGXI RADICAL DOOR
2F3F ; 624B # KANGXI RADICAL HAND
2F40 ; 652F # KANGXI RADICAL BRANCH
2F41 ; 6534 # KANGXI RADICAL RAP
2F42 ; 6587 # KANGXI RADICAL SCRIPT
2F43 ; 6597 # KANGXI RADICAL DIPPER
2F44 ; 65A4 # KANGXI RADICAL AXE
2F45 ; 65B9 # KANGXI RADICAL SQUARE
2F46 ; 65E0 # KANGXI RADICAL NOT
2F47 ; 65E5 # KANGXI RADICAL SUN
2F48 ; 66F0 # KANGXI RADICAL SAY
2F49 ; 6708 # KANGXI RADICAL MOON
2F4A ; 6728 # KANGXI RADICAL TREE
2F4B ; 6B20 # KANGXI RADICAL LACK
2F4C ; 6B62 # KANGXI RADICAL STOP
2F4D ; 6B79 # KANGXI RADICAL DEATH
2F4E ; 6BB3 # KANGXI RADICAL WEAPON
2F4F ; 6BCB # KANGXI RADICAL DO NOT
2F50 ; 6BD4 # KANGXI RADICAL COMPARE
2F51 ; 6BDB # KANGXI RADICAL FUR
2F52 ; 6C0F # KANGXI RADICAL CLAN
2F53 ; 6C14 # KANGXI RADICAL STEAM
2F54 ; 6C34 # KANGXI RADICAL WATER
2F55 ; 706B # KANGXI RADICAL FIRE
2F56 ; 722A # KANGXI RADICAL CLAW
2F57 ; 7236 # KANGXI RADICAL FATHER
2F58 ; 723B # KANGXI RADICAL DOUBLE X
2F59 ; 723F # KANGXI RADICAL HALF TREE TRUNK
2F5A ; 7247 # KANGXI RADICAL SLICE
2F5B ; 7259 # KANGXI RADICAL FANG
2F5C ; 725B # KANGXI RADICAL COW
2F5D ; 72AC # KANGXI RADICAL DOG
2F5E ; 7384 # KANGXI RADICAL PROFOUND
2F5F ; 7389 # KANGXI RADICAL JADE
2F60 ; 74DC # KANGXI RADICAL MELON
2F61 ; 74E6 # KANGXI RADICAL TILE
2F62 ; 7518 # KANGXI RADICAL SWEET
2F63 ; 751F # KANGXI RADICAL LIFE
2F64 ; 7528 # KANGXI RADICAL USE
2F65 ; 7530 # KANGXI RADICAL FIELD
2F66 ; 758B # KANGXI RADICAL BOLT OF CLOTH
2F67 ; 7592 # KANGXI RADICAL SICKNESS
2F68 ; 7676 # KANGXI RADICAL DOTTED TENT
2F69 ; 767D # KANGXI RADICAL WHITE
2F6A ; 76AE # KANGXI RADICAL SKIN
2F6B ; 76BF # KANGXI RADICAL DISH
2F6C ; 76EE # KANGXI RADICAL EYE
2F6D ; 77DB # KANGXI RADICAL SPEAR
2F6E ; 77E2 # KANGXI RADICAL ARROW
2F6F ; 77F3 # KANGXI RADICAL STONE
2F70 ; 793A # KANGXI RADICAL SPIRIT
2F71 ; 79B8 # KANGXI RADICAL TRACK
2F72 ; 79BE # KANGXI RADICAL GRAIN
2F73 ; 7A74 # KANGXI RADICAL CAVE
2F74 ; 7ACB # KANGXI RADICAL STAND
2F75 ; 7AF9 # KANGXI RADICAL BAMBOO
2F76 ; 7C73 # KANGXI RADICAL RICE
2F77 ; 7CF8 # KANGXI RADICAL SILK
2F78 ; 7F36 # KANGXI RADICAL JAR
2F79 ; 7F51 # KANGXI RADICAL NET
2F7A ; 7F8A # KANGXI RADICAL SHEEP
2F7B ; 7FBD # KANGXI RADICAL FEATHER
2F7C ; 8001 # KANGXI RADICAL OLD
2F7D ; 800C # KANGXI RADICAL AND
2F7E ; 8012 # KANGXI RADICAL PLOW
2F7F ; 8033 # KANGXI RADICAL EAR
2F80 ; 807F # KANGXI RADICAL BRUSH
2F81 ; 8089 # KANGXI RADICAL MEAT
2F82 ; 81E3 # KANGXI RADICAL MINISTER
2F83 ; 81EA # KANGXI RADICAL SELF
2F84 ; 81F3 # KANGXI RADICAL ARRIVE
2F85 ; 81FC # KANGXI RADICAL MORTAR
2F86 ; 820C # KANGXI RADICAL TONGUE
2F87 ; 821B # KANGXI RADICAL OPPOSE
2F88 ; 821F # KANGXI RADICAL BOAT
2F89 ; 826E # KANGXI RADICAL STOPPING
2F8A ; 8272 # KANGXI RADICAL COLOR
2F8B ; 8278 # KANGXI RADICAL GRASS
2F8C ; 864D # KANGXI RADICAL TIGER
2F8D ; 866B # KANGXI RADICAL INSECT
2F8E ; 8840 # KANGXI RADICAL BLOOD
2F8F ; 884C # KANGXI RADICAL WALK ENCLOSURE
2F90 ; 8863 # KANGXI RADICAL CLOTHES
2F91 ; 897E # KANGXI RADICAL WEST
2F92 ; 898B # KANGXI RADICAL SEE
2F93 ; 89D2 # KANGXI RADICAL HORN
2F94 ; 8A00 # KANGXI RADICAL SPEECH
2F95 ; 8C37 # KANGXI RADICAL VALLEY
2F96 ; 8C46 # KANGXI RADICAL BEAN
2F97 ; 8C55 # KANGXI RADICAL PIG
2F98 ; 8C78 # KANGXI RADICAL BADGER
2F99 ; 8C9D # KANGXI RADICAL SHELL
2F9A ; 8D64 # KANGXI RADICAL RED
2F9B ; 8D70 # KANGXI RADICAL RUN
2F9C ; 8DB3 # KANGXI RADICAL FOOT
2F9D ; 8EAB # KANGXI RADICAL BODY
2F9E ; 8ECA # KANGXI RADICAL CART
2F9F ; 8F9B # KANGXI RADICAL BITTER
2FA0 ; 8FB0 # KANGXI RADICAL MORNING
2FA1 ; 8FB5 # KANGXI RADICAL WALK
2FA2 ; 9091 # KANGXI RADICAL CITY
2FA3 ; 9149 # KANGXI RADICAL WINE
2FA4 ; 91C6 # KANGXI RADICAL DISTINGUISH
2FA5 ; 91CC # KANGXI RADICAL VILLAGE
2FA6 ; 91D1 # KANGXI RADICAL GOLD
2FA7 ; 9577 # KANGXI RADICAL LONG
2FA8 ; 9580 # KANGXI RADICAL GATE
2FA9 ; 961C # KANGXI RADICAL MOUND
2FAA ; 96B6 # KANGXI RADICAL SLAVE
2FAB ; 96B9 # KANGXI RADICAL SHORT TAILED BIRD
2FAC ; 96E8 # KANGXI RADICAL RAIN
2FAD ; 9751 # KANGXI RADICAL BLUE
2FAE ; 975E # KANGXI RADICAL WRONG
2FAF ; 9762 # KANGXI RADICAL FACE
2FB0 ; 9769 # KANGXI RADICAL LEATHER
2FB1 ; 97CB # KANGXI RADICAL TANNED LEATHER
2FB2 ; 97ED # KANGXI RADICAL LEEK
2FB3 ; 97F3 # KANGXI RADICAL SOUND
2FB4 ; 9801 # KANGXI RADICAL LEAF
2FB5 ; 98A8 # KANGXI RADICAL WIND
2FB6 ; 98DB # KANGXI RADICAL FLY
2FB7 ; 98DF # KANGXI RADICAL EAT
2FB8 ; 9996 # KANGXI RADICAL HEAD
2FB9 ; 9999 # KANGXI RADICAL FRAGRANT
2FBA ; 99AC # KANGXI RADICAL HORSE
2FBB ; 9AA8 # KANGXI RADICAL BONE
2FBC ; 9AD8 # KANGXI RADICAL TALL
2FBD ; 9ADF # KANGXI RADICAL HAIR
2FBE ; 9B25 # KANGXI RADICAL FIGHT
2FBF ; 9B2F # KANGXI RADICAL SACRIFICIAL WINE
2FC0 ; 9B32 # KANGXI RADICAL CAULDRON
2FC1 ; 9B3C # KANGXI RADICAL GHOST
2FC2 ; 9B5A # KANGXI RADICAL FISH
2FC3 ; 9CE5 # KANGXI RADICAL BIRD
2FC4 ; 9E75 # KANGXI RADICAL SALT
2FC5 ; 9E7F # KANGXI RADICAL DEER
2FC6 ; 9EA5 # KANGXI RADICAL WHEAT
2FC7 ; 9EBB # KANGXI RADICAL HEMP
2FC8 ; 9EC3 # KANGXI RADICAL YELLOW
2FC9 ; 9ECD # KANGXI RADICAL MILLET
2FCA ; 9ED1 # KANGXI RADICAL BLACK
2FCB ; 9EF9 # KANGXI RADICAL EMBROIDERY
2FCC ; 9EFD # KANGXI RADICAL FROG
2FCD ; 9F0E # KANGXI RADICAL TRIPOD
2FCE ; 9F13 # KANGXI RADICAL DRUM
2FCF ; 9F20 # KANGXI RADICAL RAT
2FD0 ; 9F3B # KANGXI RADICAL NOSE
2FD1 ; 9F4A # KANGXI RADICAL EVEN
2FD2 ; 9F52 # KANGXI RADICAL TOOTH
2FD3 ; 9F8D # KANGXI RADICAL DRAGON
2FD4 ; 9F9C # KANGXI RADICAL TURTLE
2FD5 ; 9FA0 # KANGXI RADICAL FLUTE
31C6 ; 200CC # CJK STROKE HZG
31CF ; 4E40 # CJK STROKE N
31D0 ; 4E00 # CJK STROKE H
31D1 ; 4E28 # CJK STROKE S
31D2..31D3 ; 4E3F # [2] CJK STROKE P..CJK STROKE SP
31D4 ; 4E36 # CJK STROKE D
31D5 ; 200CD # CJK STROKE HZ
31D6 ; 4E5B # CJK STROKE HG
31D7 ; 200CA # CJK STROKE SZ
31D8 ; 200CE # CJK STROKE SWZ
31D9 ; 2010C # CJK STROKE ST
31DA ; 4E85 # CJK STROKE SG
31DB ; 21FE8 # CJK STROKE PD
31DC ; 200CB # CJK STROKE PZ
31DD ; 4E40 # CJK STROKE TN
31DE ; 200D1 # CJK STROKE SZZ
31DF ; 4E5A # CJK STROKE SWG
31E0 ; 4E59 # CJK STROKE HXWG
31E1 ; 2010E # CJK STROKE HZZZG
# The following characters have no equivalent CJK unified ideograph.
# 2E80; CJK RADICAL REPEAT
# 31C0; CJK STROKE T
# 31C1; CJK STROKE WG
# 31C2; CJK STROKE XG
# 31C3; CJK STROKE BXG
# 31C4; CJK STROKE SW
# 31C5; CJK STROKE HZZ
# 31C7; CJK STROKE HP
# 31C8; CJK STROKE HZWG
# 31C9; CJK STROKE SZWG
# 31CA; CJK STROKE HZT
# 31CB; CJK STROKE HZZP
# 31CC; CJK STROKE HPWG
# 31CD; CJK STROKE HZW
# 31CE; CJK STROKE HZZZ
# 31E2; CJK STROKE PG
# 31E3; CJK STROKE Q
# EOF

858
src/modules/punk/char/unicode15.1/HangulSyllableType.txt

@ -0,0 +1,858 @@
# HangulSyllableType-15.1.0.txt
# Date: 2023-01-05, 20:34:42 GMT
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
# ================================================
# Property: Hangul_Syllable_Type
# All code points not explicitly listed for Hangul_Syllable_Type
# have the value Not_Applicable (NA).
# @missing: 0000..10FFFF; Not_Applicable
# ================================================
# Hangul_Syllable_Type=Leading_Jamo
1100..115F ; L # Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER
A960..A97C ; L # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
# Total code points: 125
# ================================================
# Hangul_Syllable_Type=Vowel_Jamo
1160..11A7 ; V # Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE
D7B0..D7C6 ; V # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
# Total code points: 95
# ================================================
# Hangul_Syllable_Type=Trailing_Jamo
11A8..11FF ; T # Lo [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN
D7CB..D7FB ; T # Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
# Total code points: 137
# ================================================
# Hangul_Syllable_Type=LV_Syllable
AC00 ; LV # Lo HANGUL SYLLABLE GA
AC1C ; LV # Lo HANGUL SYLLABLE GAE
AC38 ; LV # Lo HANGUL SYLLABLE GYA
AC54 ; LV # Lo HANGUL SYLLABLE GYAE
AC70 ; LV # Lo HANGUL SYLLABLE GEO
AC8C ; LV # Lo HANGUL SYLLABLE GE
ACA8 ; LV # Lo HANGUL SYLLABLE GYEO
ACC4 ; LV # Lo HANGUL SYLLABLE GYE
ACE0 ; LV # Lo HANGUL SYLLABLE GO
ACFC ; LV # Lo HANGUL SYLLABLE GWA
AD18 ; LV # Lo HANGUL SYLLABLE GWAE
AD34 ; LV # Lo HANGUL SYLLABLE GOE
AD50 ; LV # Lo HANGUL SYLLABLE GYO
AD6C ; LV # Lo HANGUL SYLLABLE GU
AD88 ; LV # Lo HANGUL SYLLABLE GWEO
ADA4 ; LV # Lo HANGUL SYLLABLE GWE
ADC0 ; LV # Lo HANGUL SYLLABLE GWI
ADDC ; LV # Lo HANGUL SYLLABLE GYU
ADF8 ; LV # Lo HANGUL SYLLABLE GEU
AE14 ; LV # Lo HANGUL SYLLABLE GYI
AE30 ; LV # Lo HANGUL SYLLABLE GI
AE4C ; LV # Lo HANGUL SYLLABLE GGA
AE68 ; LV # Lo HANGUL SYLLABLE GGAE
AE84 ; LV # Lo HANGUL SYLLABLE GGYA
AEA0 ; LV # Lo HANGUL SYLLABLE GGYAE
AEBC ; LV # Lo HANGUL SYLLABLE GGEO
AED8 ; LV # Lo HANGUL SYLLABLE GGE
AEF4 ; LV # Lo HANGUL SYLLABLE GGYEO
AF10 ; LV # Lo HANGUL SYLLABLE GGYE
AF2C ; LV # Lo HANGUL SYLLABLE GGO
AF48 ; LV # Lo HANGUL SYLLABLE GGWA
AF64 ; LV # Lo HANGUL SYLLABLE GGWAE
AF80 ; LV # Lo HANGUL SYLLABLE GGOE
AF9C ; LV # Lo HANGUL SYLLABLE GGYO
AFB8 ; LV # Lo HANGUL SYLLABLE GGU
AFD4 ; LV # Lo HANGUL SYLLABLE GGWEO
AFF0 ; LV # Lo HANGUL SYLLABLE GGWE
B00C ; LV # Lo HANGUL SYLLABLE GGWI
B028 ; LV # Lo HANGUL SYLLABLE GGYU
B044 ; LV # Lo HANGUL SYLLABLE GGEU
B060 ; LV # Lo HANGUL SYLLABLE GGYI
B07C ; LV # Lo HANGUL SYLLABLE GGI
B098 ; LV # Lo HANGUL SYLLABLE NA
B0B4 ; LV # Lo HANGUL SYLLABLE NAE
B0D0 ; LV # Lo HANGUL SYLLABLE NYA
B0EC ; LV # Lo HANGUL SYLLABLE NYAE
B108 ; LV # Lo HANGUL SYLLABLE NEO
B124 ; LV # Lo HANGUL SYLLABLE NE
B140 ; LV # Lo HANGUL SYLLABLE NYEO
B15C ; LV # Lo HANGUL SYLLABLE NYE
B178 ; LV # Lo HANGUL SYLLABLE NO
B194 ; LV # Lo HANGUL SYLLABLE NWA
B1B0 ; LV # Lo HANGUL SYLLABLE NWAE
B1CC ; LV # Lo HANGUL SYLLABLE NOE
B1E8 ; LV # Lo HANGUL SYLLABLE NYO
B204 ; LV # Lo HANGUL SYLLABLE NU
B220 ; LV # Lo HANGUL SYLLABLE NWEO
B23C ; LV # Lo HANGUL SYLLABLE NWE
B258 ; LV # Lo HANGUL SYLLABLE NWI
B274 ; LV # Lo HANGUL SYLLABLE NYU
B290 ; LV # Lo HANGUL SYLLABLE NEU
B2AC ; LV # Lo HANGUL SYLLABLE NYI
B2C8 ; LV # Lo HANGUL SYLLABLE NI
B2E4 ; LV # Lo HANGUL SYLLABLE DA
B300 ; LV # Lo HANGUL SYLLABLE DAE
B31C ; LV # Lo HANGUL SYLLABLE DYA
B338 ; LV # Lo HANGUL SYLLABLE DYAE
B354 ; LV # Lo HANGUL SYLLABLE DEO
B370 ; LV # Lo HANGUL SYLLABLE DE
B38C ; LV # Lo HANGUL SYLLABLE DYEO
B3A8 ; LV # Lo HANGUL SYLLABLE DYE
B3C4 ; LV # Lo HANGUL SYLLABLE DO
B3E0 ; LV # Lo HANGUL SYLLABLE DWA
B3FC ; LV # Lo HANGUL SYLLABLE DWAE
B418 ; LV # Lo HANGUL SYLLABLE DOE
B434 ; LV # Lo HANGUL SYLLABLE DYO
B450 ; LV # Lo HANGUL SYLLABLE DU
B46C ; LV # Lo HANGUL SYLLABLE DWEO
B488 ; LV # Lo HANGUL SYLLABLE DWE
B4A4 ; LV # Lo HANGUL SYLLABLE DWI
B4C0 ; LV # Lo HANGUL SYLLABLE DYU
B4DC ; LV # Lo HANGUL SYLLABLE DEU
B4F8 ; LV # Lo HANGUL SYLLABLE DYI
B514 ; LV # Lo HANGUL SYLLABLE DI
B530 ; LV # Lo HANGUL SYLLABLE DDA
B54C ; LV # Lo HANGUL SYLLABLE DDAE
B568 ; LV # Lo HANGUL SYLLABLE DDYA
B584 ; LV # Lo HANGUL SYLLABLE DDYAE
B5A0 ; LV # Lo HANGUL SYLLABLE DDEO
B5BC ; LV # Lo HANGUL SYLLABLE DDE
B5D8 ; LV # Lo HANGUL SYLLABLE DDYEO
B5F4 ; LV # Lo HANGUL SYLLABLE DDYE
B610 ; LV # Lo HANGUL SYLLABLE DDO
B62C ; LV # Lo HANGUL SYLLABLE DDWA
B648 ; LV # Lo HANGUL SYLLABLE DDWAE
B664 ; LV # Lo HANGUL SYLLABLE DDOE
B680 ; LV # Lo HANGUL SYLLABLE DDYO
B69C ; LV # Lo HANGUL SYLLABLE DDU
B6B8 ; LV # Lo HANGUL SYLLABLE DDWEO
B6D4 ; LV # Lo HANGUL SYLLABLE DDWE
B6F0 ; LV # Lo HANGUL SYLLABLE DDWI
B70C ; LV # Lo HANGUL SYLLABLE DDYU
B728 ; LV # Lo HANGUL SYLLABLE DDEU
B744 ; LV # Lo HANGUL SYLLABLE DDYI
B760 ; LV # Lo HANGUL SYLLABLE DDI
B77C ; LV # Lo HANGUL SYLLABLE RA
B798 ; LV # Lo HANGUL SYLLABLE RAE
B7B4 ; LV # Lo HANGUL SYLLABLE RYA
B7D0 ; LV # Lo HANGUL SYLLABLE RYAE
B7EC ; LV # Lo HANGUL SYLLABLE REO
B808 ; LV # Lo HANGUL SYLLABLE RE
B824 ; LV # Lo HANGUL SYLLABLE RYEO
B840 ; LV # Lo HANGUL SYLLABLE RYE
B85C ; LV # Lo HANGUL SYLLABLE RO
B878 ; LV # Lo HANGUL SYLLABLE RWA
B894 ; LV # Lo HANGUL SYLLABLE RWAE
B8B0 ; LV # Lo HANGUL SYLLABLE ROE
B8CC ; LV # Lo HANGUL SYLLABLE RYO
B8E8 ; LV # Lo HANGUL SYLLABLE RU
B904 ; LV # Lo HANGUL SYLLABLE RWEO
B920 ; LV # Lo HANGUL SYLLABLE RWE
B93C ; LV # Lo HANGUL SYLLABLE RWI
B958 ; LV # Lo HANGUL SYLLABLE RYU
B974 ; LV # Lo HANGUL SYLLABLE REU
B990 ; LV # Lo HANGUL SYLLABLE RYI
B9AC ; LV # Lo HANGUL SYLLABLE RI
B9C8 ; LV # Lo HANGUL SYLLABLE MA
B9E4 ; LV # Lo HANGUL SYLLABLE MAE
BA00 ; LV # Lo HANGUL SYLLABLE MYA
BA1C ; LV # Lo HANGUL SYLLABLE MYAE
BA38 ; LV # Lo HANGUL SYLLABLE MEO
BA54 ; LV # Lo HANGUL SYLLABLE ME
BA70 ; LV # Lo HANGUL SYLLABLE MYEO
BA8C ; LV # Lo HANGUL SYLLABLE MYE
BAA8 ; LV # Lo HANGUL SYLLABLE MO
BAC4 ; LV # Lo HANGUL SYLLABLE MWA
BAE0 ; LV # Lo HANGUL SYLLABLE MWAE
BAFC ; LV # Lo HANGUL SYLLABLE MOE
BB18 ; LV # Lo HANGUL SYLLABLE MYO
BB34 ; LV # Lo HANGUL SYLLABLE MU
BB50 ; LV # Lo HANGUL SYLLABLE MWEO
BB6C ; LV # Lo HANGUL SYLLABLE MWE
BB88 ; LV # Lo HANGUL SYLLABLE MWI
BBA4 ; LV # Lo HANGUL SYLLABLE MYU
BBC0 ; LV # Lo HANGUL SYLLABLE MEU
BBDC ; LV # Lo HANGUL SYLLABLE MYI
BBF8 ; LV # Lo HANGUL SYLLABLE MI
BC14 ; LV # Lo HANGUL SYLLABLE BA
BC30 ; LV # Lo HANGUL SYLLABLE BAE
BC4C ; LV # Lo HANGUL SYLLABLE BYA
BC68 ; LV # Lo HANGUL SYLLABLE BYAE
BC84 ; LV # Lo HANGUL SYLLABLE BEO
BCA0 ; LV # Lo HANGUL SYLLABLE BE
BCBC ; LV # Lo HANGUL SYLLABLE BYEO
BCD8 ; LV # Lo HANGUL SYLLABLE BYE
BCF4 ; LV # Lo HANGUL SYLLABLE BO
BD10 ; LV # Lo HANGUL SYLLABLE BWA
BD2C ; LV # Lo HANGUL SYLLABLE BWAE
BD48 ; LV # Lo HANGUL SYLLABLE BOE
BD64 ; LV # Lo HANGUL SYLLABLE BYO
BD80 ; LV # Lo HANGUL SYLLABLE BU
BD9C ; LV # Lo HANGUL SYLLABLE BWEO
BDB8 ; LV # Lo HANGUL SYLLABLE BWE
BDD4 ; LV # Lo HANGUL SYLLABLE BWI
BDF0 ; LV # Lo HANGUL SYLLABLE BYU
BE0C ; LV # Lo HANGUL SYLLABLE BEU
BE28 ; LV # Lo HANGUL SYLLABLE BYI
BE44 ; LV # Lo HANGUL SYLLABLE BI
BE60 ; LV # Lo HANGUL SYLLABLE BBA
BE7C ; LV # Lo HANGUL SYLLABLE BBAE
BE98 ; LV # Lo HANGUL SYLLABLE BBYA
BEB4 ; LV # Lo HANGUL SYLLABLE BBYAE
BED0 ; LV # Lo HANGUL SYLLABLE BBEO
BEEC ; LV # Lo HANGUL SYLLABLE BBE
BF08 ; LV # Lo HANGUL SYLLABLE BBYEO
BF24 ; LV # Lo HANGUL SYLLABLE BBYE
BF40 ; LV # Lo HANGUL SYLLABLE BBO
BF5C ; LV # Lo HANGUL SYLLABLE BBWA
BF78 ; LV # Lo HANGUL SYLLABLE BBWAE
BF94 ; LV # Lo HANGUL SYLLABLE BBOE
BFB0 ; LV # Lo HANGUL SYLLABLE BBYO
BFCC ; LV # Lo HANGUL SYLLABLE BBU
BFE8 ; LV # Lo HANGUL SYLLABLE BBWEO
C004 ; LV # Lo HANGUL SYLLABLE BBWE
C020 ; LV # Lo HANGUL SYLLABLE BBWI
C03C ; LV # Lo HANGUL SYLLABLE BBYU
C058 ; LV # Lo HANGUL SYLLABLE BBEU
C074 ; LV # Lo HANGUL SYLLABLE BBYI
C090 ; LV # Lo HANGUL SYLLABLE BBI
C0AC ; LV # Lo HANGUL SYLLABLE SA
C0C8 ; LV # Lo HANGUL SYLLABLE SAE
C0E4 ; LV # Lo HANGUL SYLLABLE SYA
C100 ; LV # Lo HANGUL SYLLABLE SYAE
C11C ; LV # Lo HANGUL SYLLABLE SEO
C138 ; LV # Lo HANGUL SYLLABLE SE
C154 ; LV # Lo HANGUL SYLLABLE SYEO
C170 ; LV # Lo HANGUL SYLLABLE SYE
C18C ; LV # Lo HANGUL SYLLABLE SO
C1A8 ; LV # Lo HANGUL SYLLABLE SWA
C1C4 ; LV # Lo HANGUL SYLLABLE SWAE
C1E0 ; LV # Lo HANGUL SYLLABLE SOE
C1FC ; LV # Lo HANGUL SYLLABLE SYO
C218 ; LV # Lo HANGUL SYLLABLE SU
C234 ; LV # Lo HANGUL SYLLABLE SWEO
C250 ; LV # Lo HANGUL SYLLABLE SWE
C26C ; LV # Lo HANGUL SYLLABLE SWI
C288 ; LV # Lo HANGUL SYLLABLE SYU
C2A4 ; LV # Lo HANGUL SYLLABLE SEU
C2C0 ; LV # Lo HANGUL SYLLABLE SYI
C2DC ; LV # Lo HANGUL SYLLABLE SI
C2F8 ; LV # Lo HANGUL SYLLABLE SSA
C314 ; LV # Lo HANGUL SYLLABLE SSAE
C330 ; LV # Lo HANGUL SYLLABLE SSYA
C34C ; LV # Lo HANGUL SYLLABLE SSYAE
C368 ; LV # Lo HANGUL SYLLABLE SSEO
C384 ; LV # Lo HANGUL SYLLABLE SSE
C3A0 ; LV # Lo HANGUL SYLLABLE SSYEO
C3BC ; LV # Lo HANGUL SYLLABLE SSYE
C3D8 ; LV # Lo HANGUL SYLLABLE SSO
C3F4 ; LV # Lo HANGUL SYLLABLE SSWA
C410 ; LV # Lo HANGUL SYLLABLE SSWAE
C42C ; LV # Lo HANGUL SYLLABLE SSOE
C448 ; LV # Lo HANGUL SYLLABLE SSYO
C464 ; LV # Lo HANGUL SYLLABLE SSU
C480 ; LV # Lo HANGUL SYLLABLE SSWEO
C49C ; LV # Lo HANGUL SYLLABLE SSWE
C4B8 ; LV # Lo HANGUL SYLLABLE SSWI
C4D4 ; LV # Lo HANGUL SYLLABLE SSYU
C4F0 ; LV # Lo HANGUL SYLLABLE SSEU
C50C ; LV # Lo HANGUL SYLLABLE SSYI
C528 ; LV # Lo HANGUL SYLLABLE SSI
C544 ; LV # Lo HANGUL SYLLABLE A
C560 ; LV # Lo HANGUL SYLLABLE AE
C57C ; LV # Lo HANGUL SYLLABLE YA
C598 ; LV # Lo HANGUL SYLLABLE YAE
C5B4 ; LV # Lo HANGUL SYLLABLE EO
C5D0 ; LV # Lo HANGUL SYLLABLE E
C5EC ; LV # Lo HANGUL SYLLABLE YEO
C608 ; LV # Lo HANGUL SYLLABLE YE
C624 ; LV # Lo HANGUL SYLLABLE O
C640 ; LV # Lo HANGUL SYLLABLE WA
C65C ; LV # Lo HANGUL SYLLABLE WAE
C678 ; LV # Lo HANGUL SYLLABLE OE
C694 ; LV # Lo HANGUL SYLLABLE YO
C6B0 ; LV # Lo HANGUL SYLLABLE U
C6CC ; LV # Lo HANGUL SYLLABLE WEO
C6E8 ; LV # Lo HANGUL SYLLABLE WE
C704 ; LV # Lo HANGUL SYLLABLE WI
C720 ; LV # Lo HANGUL SYLLABLE YU
C73C ; LV # Lo HANGUL SYLLABLE EU
C758 ; LV # Lo HANGUL SYLLABLE YI
C774 ; LV # Lo HANGUL SYLLABLE I
C790 ; LV # Lo HANGUL SYLLABLE JA
C7AC ; LV # Lo HANGUL SYLLABLE JAE
C7C8 ; LV # Lo HANGUL SYLLABLE JYA
C7E4 ; LV # Lo HANGUL SYLLABLE JYAE
C800 ; LV # Lo HANGUL SYLLABLE JEO
C81C ; LV # Lo HANGUL SYLLABLE JE
C838 ; LV # Lo HANGUL SYLLABLE JYEO
C854 ; LV # Lo HANGUL SYLLABLE JYE
C870 ; LV # Lo HANGUL SYLLABLE JO
C88C ; LV # Lo HANGUL SYLLABLE JWA
C8A8 ; LV # Lo HANGUL SYLLABLE JWAE
C8C4 ; LV # Lo HANGUL SYLLABLE JOE
C8E0 ; LV # Lo HANGUL SYLLABLE JYO
C8FC ; LV # Lo HANGUL SYLLABLE JU
C918 ; LV # Lo HANGUL SYLLABLE JWEO
C934 ; LV # Lo HANGUL SYLLABLE JWE
C950 ; LV # Lo HANGUL SYLLABLE JWI
C96C ; LV # Lo HANGUL SYLLABLE JYU
C988 ; LV # Lo HANGUL SYLLABLE JEU
C9A4 ; LV # Lo HANGUL SYLLABLE JYI
C9C0 ; LV # Lo HANGUL SYLLABLE JI
C9DC ; LV # Lo HANGUL SYLLABLE JJA
C9F8 ; LV # Lo HANGUL SYLLABLE JJAE
CA14 ; LV # Lo HANGUL SYLLABLE JJYA
CA30 ; LV # Lo HANGUL SYLLABLE JJYAE
CA4C ; LV # Lo HANGUL SYLLABLE JJEO
CA68 ; LV # Lo HANGUL SYLLABLE JJE
CA84 ; LV # Lo HANGUL SYLLABLE JJYEO
CAA0 ; LV # Lo HANGUL SYLLABLE JJYE
CABC ; LV # Lo HANGUL SYLLABLE JJO
CAD8 ; LV # Lo HANGUL SYLLABLE JJWA
CAF4 ; LV # Lo HANGUL SYLLABLE JJWAE
CB10 ; LV # Lo HANGUL SYLLABLE JJOE
CB2C ; LV # Lo HANGUL SYLLABLE JJYO
CB48 ; LV # Lo HANGUL SYLLABLE JJU
CB64 ; LV # Lo HANGUL SYLLABLE JJWEO
CB80 ; LV # Lo HANGUL SYLLABLE JJWE
CB9C ; LV # Lo HANGUL SYLLABLE JJWI
CBB8 ; LV # Lo HANGUL SYLLABLE JJYU
CBD4 ; LV # Lo HANGUL SYLLABLE JJEU
CBF0 ; LV # Lo HANGUL SYLLABLE JJYI
CC0C ; LV # Lo HANGUL SYLLABLE JJI
CC28 ; LV # Lo HANGUL SYLLABLE CA
CC44 ; LV # Lo HANGUL SYLLABLE CAE
CC60 ; LV # Lo HANGUL SYLLABLE CYA
CC7C ; LV # Lo HANGUL SYLLABLE CYAE
CC98 ; LV # Lo HANGUL SYLLABLE CEO
CCB4 ; LV # Lo HANGUL SYLLABLE CE
CCD0 ; LV # Lo HANGUL SYLLABLE CYEO
CCEC ; LV # Lo HANGUL SYLLABLE CYE
CD08 ; LV # Lo HANGUL SYLLABLE CO
CD24 ; LV # Lo HANGUL SYLLABLE CWA
CD40 ; LV # Lo HANGUL SYLLABLE CWAE
CD5C ; LV # Lo HANGUL SYLLABLE COE
CD78 ; LV # Lo HANGUL SYLLABLE CYO
CD94 ; LV # Lo HANGUL SYLLABLE CU
CDB0 ; LV # Lo HANGUL SYLLABLE CWEO
CDCC ; LV # Lo HANGUL SYLLABLE CWE
CDE8 ; LV # Lo HANGUL SYLLABLE CWI
CE04 ; LV # Lo HANGUL SYLLABLE CYU
CE20 ; LV # Lo HANGUL SYLLABLE CEU
CE3C ; LV # Lo HANGUL SYLLABLE CYI
CE58 ; LV # Lo HANGUL SYLLABLE CI
CE74 ; LV # Lo HANGUL SYLLABLE KA
CE90 ; LV # Lo HANGUL SYLLABLE KAE
CEAC ; LV # Lo HANGUL SYLLABLE KYA
CEC8 ; LV # Lo HANGUL SYLLABLE KYAE
CEE4 ; LV # Lo HANGUL SYLLABLE KEO
CF00 ; LV # Lo HANGUL SYLLABLE KE
CF1C ; LV # Lo HANGUL SYLLABLE KYEO
CF38 ; LV # Lo HANGUL SYLLABLE KYE
CF54 ; LV # Lo HANGUL SYLLABLE KO
CF70 ; LV # Lo HANGUL SYLLABLE KWA
CF8C ; LV # Lo HANGUL SYLLABLE KWAE
CFA8 ; LV # Lo HANGUL SYLLABLE KOE
CFC4 ; LV # Lo HANGUL SYLLABLE KYO
CFE0 ; LV # Lo HANGUL SYLLABLE KU
CFFC ; LV # Lo HANGUL SYLLABLE KWEO
D018 ; LV # Lo HANGUL SYLLABLE KWE
D034 ; LV # Lo HANGUL SYLLABLE KWI
D050 ; LV # Lo HANGUL SYLLABLE KYU
D06C ; LV # Lo HANGUL SYLLABLE KEU
D088 ; LV # Lo HANGUL SYLLABLE KYI
D0A4 ; LV # Lo HANGUL SYLLABLE KI
D0C0 ; LV # Lo HANGUL SYLLABLE TA
D0DC ; LV # Lo HANGUL SYLLABLE TAE
D0F8 ; LV # Lo HANGUL SYLLABLE TYA
D114 ; LV # Lo HANGUL SYLLABLE TYAE
D130 ; LV # Lo HANGUL SYLLABLE TEO
D14C ; LV # Lo HANGUL SYLLABLE TE
D168 ; LV # Lo HANGUL SYLLABLE TYEO
D184 ; LV # Lo HANGUL SYLLABLE TYE
D1A0 ; LV # Lo HANGUL SYLLABLE TO
D1BC ; LV # Lo HANGUL SYLLABLE TWA
D1D8 ; LV # Lo HANGUL SYLLABLE TWAE
D1F4 ; LV # Lo HANGUL SYLLABLE TOE
D210 ; LV # Lo HANGUL SYLLABLE TYO
D22C ; LV # Lo HANGUL SYLLABLE TU
D248 ; LV # Lo HANGUL SYLLABLE TWEO
D264 ; LV # Lo HANGUL SYLLABLE TWE
D280 ; LV # Lo HANGUL SYLLABLE TWI
D29C ; LV # Lo HANGUL SYLLABLE TYU
D2B8 ; LV # Lo HANGUL SYLLABLE TEU
D2D4 ; LV # Lo HANGUL SYLLABLE TYI
D2F0 ; LV # Lo HANGUL SYLLABLE TI
D30C ; LV # Lo HANGUL SYLLABLE PA
D328 ; LV # Lo HANGUL SYLLABLE PAE
D344 ; LV # Lo HANGUL SYLLABLE PYA
D360 ; LV # Lo HANGUL SYLLABLE PYAE
D37C ; LV # Lo HANGUL SYLLABLE PEO
D398 ; LV # Lo HANGUL SYLLABLE PE
D3B4 ; LV # Lo HANGUL SYLLABLE PYEO
D3D0 ; LV # Lo HANGUL SYLLABLE PYE
D3EC ; LV # Lo HANGUL SYLLABLE PO
D408 ; LV # Lo HANGUL SYLLABLE PWA
D424 ; LV # Lo HANGUL SYLLABLE PWAE
D440 ; LV # Lo HANGUL SYLLABLE POE
D45C ; LV # Lo HANGUL SYLLABLE PYO
D478 ; LV # Lo HANGUL SYLLABLE PU
D494 ; LV # Lo HANGUL SYLLABLE PWEO
D4B0 ; LV # Lo HANGUL SYLLABLE PWE
D4CC ; LV # Lo HANGUL SYLLABLE PWI
D4E8 ; LV # Lo HANGUL SYLLABLE PYU
D504 ; LV # Lo HANGUL SYLLABLE PEU
D520 ; LV # Lo HANGUL SYLLABLE PYI
D53C ; LV # Lo HANGUL SYLLABLE PI
D558 ; LV # Lo HANGUL SYLLABLE HA
D574 ; LV # Lo HANGUL SYLLABLE HAE
D590 ; LV # Lo HANGUL SYLLABLE HYA
D5AC ; LV # Lo HANGUL SYLLABLE HYAE
D5C8 ; LV # Lo HANGUL SYLLABLE HEO
D5E4 ; LV # Lo HANGUL SYLLABLE HE
D600 ; LV # Lo HANGUL SYLLABLE HYEO
D61C ; LV # Lo HANGUL SYLLABLE HYE
D638 ; LV # Lo HANGUL SYLLABLE HO
D654 ; LV # Lo HANGUL SYLLABLE HWA
D670 ; LV # Lo HANGUL SYLLABLE HWAE
D68C ; LV # Lo HANGUL SYLLABLE HOE
D6A8 ; LV # Lo HANGUL SYLLABLE HYO
D6C4 ; LV # Lo HANGUL SYLLABLE HU
D6E0 ; LV # Lo HANGUL SYLLABLE HWEO
D6FC ; LV # Lo HANGUL SYLLABLE HWE
D718 ; LV # Lo HANGUL SYLLABLE HWI
D734 ; LV # Lo HANGUL SYLLABLE HYU
D750 ; LV # Lo HANGUL SYLLABLE HEU
D76C ; LV # Lo HANGUL SYLLABLE HYI
D788 ; LV # Lo HANGUL SYLLABLE HI
# Total code points: 399
# ================================================
# Hangul_Syllable_Type=LVT_Syllable
AC01..AC1B ; LVT # Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH
AC1D..AC37 ; LVT # Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH
AC39..AC53 ; LVT # Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH
AC55..AC6F ; LVT # Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH
AC71..AC8B ; LVT # Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH
AC8D..ACA7 ; LVT # Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH
ACA9..ACC3 ; LVT # Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH
ACC5..ACDF ; LVT # Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH
ACE1..ACFB ; LVT # Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH
ACFD..AD17 ; LVT # Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH
AD19..AD33 ; LVT # Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH
AD35..AD4F ; LVT # Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH
AD51..AD6B ; LVT # Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH
AD6D..AD87 ; LVT # Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH
AD89..ADA3 ; LVT # Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH
ADA5..ADBF ; LVT # Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH
ADC1..ADDB ; LVT # Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH
ADDD..ADF7 ; LVT # Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH
ADF9..AE13 ; LVT # Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH
AE15..AE2F ; LVT # Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH
AE31..AE4B ; LVT # Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH
AE4D..AE67 ; LVT # Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH
AE69..AE83 ; LVT # Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH
AE85..AE9F ; LVT # Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH
AEA1..AEBB ; LVT # Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH
AEBD..AED7 ; LVT # Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH
AED9..AEF3 ; LVT # Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH
AEF5..AF0F ; LVT # Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH
AF11..AF2B ; LVT # Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH
AF2D..AF47 ; LVT # Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH
AF49..AF63 ; LVT # Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH
AF65..AF7F ; LVT # Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH
AF81..AF9B ; LVT # Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH
AF9D..AFB7 ; LVT # Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH
AFB9..AFD3 ; LVT # Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH
AFD5..AFEF ; LVT # Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH
AFF1..B00B ; LVT # Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH
B00D..B027 ; LVT # Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH
B029..B043 ; LVT # Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH
B045..B05F ; LVT # Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH
B061..B07B ; LVT # Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH
B07D..B097 ; LVT # Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH
B099..B0B3 ; LVT # Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH
B0B5..B0CF ; LVT # Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH
B0D1..B0EB ; LVT # Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH
B0ED..B107 ; LVT # Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH
B109..B123 ; LVT # Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH
B125..B13F ; LVT # Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH
B141..B15B ; LVT # Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH
B15D..B177 ; LVT # Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH
B179..B193 ; LVT # Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH
B195..B1AF ; LVT # Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH
B1B1..B1CB ; LVT # Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH
B1CD..B1E7 ; LVT # Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH
B1E9..B203 ; LVT # Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH
B205..B21F ; LVT # Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH
B221..B23B ; LVT # Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH
B23D..B257 ; LVT # Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH
B259..B273 ; LVT # Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH
B275..B28F ; LVT # Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH
B291..B2AB ; LVT # Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH
B2AD..B2C7 ; LVT # Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH
B2C9..B2E3 ; LVT # Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH
B2E5..B2FF ; LVT # Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH
B301..B31B ; LVT # Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH
B31D..B337 ; LVT # Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH
B339..B353 ; LVT # Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH
B355..B36F ; LVT # Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH
B371..B38B ; LVT # Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH
B38D..B3A7 ; LVT # Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH
B3A9..B3C3 ; LVT # Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH
B3C5..B3DF ; LVT # Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH
B3E1..B3FB ; LVT # Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH
B3FD..B417 ; LVT # Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH
B419..B433 ; LVT # Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH
B435..B44F ; LVT # Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH
B451..B46B ; LVT # Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH
B46D..B487 ; LVT # Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH
B489..B4A3 ; LVT # Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH
B4A5..B4BF ; LVT # Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH
B4C1..B4DB ; LVT # Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH
B4DD..B4F7 ; LVT # Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH
B4F9..B513 ; LVT # Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH
B515..B52F ; LVT # Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH
B531..B54B ; LVT # Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH
B54D..B567 ; LVT # Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH
B569..B583 ; LVT # Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH
B585..B59F ; LVT # Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH
B5A1..B5BB ; LVT # Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH
B5BD..B5D7 ; LVT # Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH
B5D9..B5F3 ; LVT # Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH
B5F5..B60F ; LVT # Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH
B611..B62B ; LVT # Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH
B62D..B647 ; LVT # Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH
B649..B663 ; LVT # Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH
B665..B67F ; LVT # Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH
B681..B69B ; LVT # Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH
B69D..B6B7 ; LVT # Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH
B6B9..B6D3 ; LVT # Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH
B6D5..B6EF ; LVT # Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH
B6F1..B70B ; LVT # Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH
B70D..B727 ; LVT # Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH
B729..B743 ; LVT # Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH
B745..B75F ; LVT # Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH
B761..B77B ; LVT # Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH
B77D..B797 ; LVT # Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH
B799..B7B3 ; LVT # Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH
B7B5..B7CF ; LVT # Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH
B7D1..B7EB ; LVT # Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH
B7ED..B807 ; LVT # Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH
B809..B823 ; LVT # Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH
B825..B83F ; LVT # Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH
B841..B85B ; LVT # Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH
B85D..B877 ; LVT # Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH
B879..B893 ; LVT # Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH
B895..B8AF ; LVT # Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH
B8B1..B8CB ; LVT # Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH
B8CD..B8E7 ; LVT # Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH
B8E9..B903 ; LVT # Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH
B905..B91F ; LVT # Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH
B921..B93B ; LVT # Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH
B93D..B957 ; LVT # Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH
B959..B973 ; LVT # Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH
B975..B98F ; LVT # Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH
B991..B9AB ; LVT # Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH
B9AD..B9C7 ; LVT # Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH
B9C9..B9E3 ; LVT # Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH
B9E5..B9FF ; LVT # Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH
BA01..BA1B ; LVT # Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH
BA1D..BA37 ; LVT # Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH
BA39..BA53 ; LVT # Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH
BA55..BA6F ; LVT # Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH
BA71..BA8B ; LVT # Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH
BA8D..BAA7 ; LVT # Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH
BAA9..BAC3 ; LVT # Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH
BAC5..BADF ; LVT # Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH
BAE1..BAFB ; LVT # Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH
BAFD..BB17 ; LVT # Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH
BB19..BB33 ; LVT # Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH
BB35..BB4F ; LVT # Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH
BB51..BB6B ; LVT # Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH
BB6D..BB87 ; LVT # Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH
BB89..BBA3 ; LVT # Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH
BBA5..BBBF ; LVT # Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH
BBC1..BBDB ; LVT # Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH
BBDD..BBF7 ; LVT # Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH
BBF9..BC13 ; LVT # Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH
BC15..BC2F ; LVT # Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH
BC31..BC4B ; LVT # Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH
BC4D..BC67 ; LVT # Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH
BC69..BC83 ; LVT # Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH
BC85..BC9F ; LVT # Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH
BCA1..BCBB ; LVT # Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH
BCBD..BCD7 ; LVT # Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH
BCD9..BCF3 ; LVT # Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH
BCF5..BD0F ; LVT # Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH
BD11..BD2B ; LVT # Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH
BD2D..BD47 ; LVT # Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH
BD49..BD63 ; LVT # Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH
BD65..BD7F ; LVT # Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH
BD81..BD9B ; LVT # Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH
BD9D..BDB7 ; LVT # Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH
BDB9..BDD3 ; LVT # Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH
BDD5..BDEF ; LVT # Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH
BDF1..BE0B ; LVT # Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH
BE0D..BE27 ; LVT # Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH
BE29..BE43 ; LVT # Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH
BE45..BE5F ; LVT # Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH
BE61..BE7B ; LVT # Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH
BE7D..BE97 ; LVT # Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH
BE99..BEB3 ; LVT # Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH
BEB5..BECF ; LVT # Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH
BED1..BEEB ; LVT # Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH
BEED..BF07 ; LVT # Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH
BF09..BF23 ; LVT # Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH
BF25..BF3F ; LVT # Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH
BF41..BF5B ; LVT # Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH
BF5D..BF77 ; LVT # Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH
BF79..BF93 ; LVT # Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH
BF95..BFAF ; LVT # Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH
BFB1..BFCB ; LVT # Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH
BFCD..BFE7 ; LVT # Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH
BFE9..C003 ; LVT # Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH
C005..C01F ; LVT # Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH
C021..C03B ; LVT # Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH
C03D..C057 ; LVT # Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH
C059..C073 ; LVT # Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH
C075..C08F ; LVT # Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH
C091..C0AB ; LVT # Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH
C0AD..C0C7 ; LVT # Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH
C0C9..C0E3 ; LVT # Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH
C0E5..C0FF ; LVT # Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH
C101..C11B ; LVT # Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH
C11D..C137 ; LVT # Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH
C139..C153 ; LVT # Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH
C155..C16F ; LVT # Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH
C171..C18B ; LVT # Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH
C18D..C1A7 ; LVT # Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH
C1A9..C1C3 ; LVT # Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH
C1C5..C1DF ; LVT # Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH
C1E1..C1FB ; LVT # Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH
C1FD..C217 ; LVT # Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH
C219..C233 ; LVT # Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH
C235..C24F ; LVT # Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH
C251..C26B ; LVT # Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH
C26D..C287 ; LVT # Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH
C289..C2A3 ; LVT # Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH
C2A5..C2BF ; LVT # Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH
C2C1..C2DB ; LVT # Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH
C2DD..C2F7 ; LVT # Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH
C2F9..C313 ; LVT # Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH
C315..C32F ; LVT # Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH
C331..C34B ; LVT # Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH
C34D..C367 ; LVT # Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH
C369..C383 ; LVT # Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH
C385..C39F ; LVT # Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH
C3A1..C3BB ; LVT # Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH
C3BD..C3D7 ; LVT # Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH
C3D9..C3F3 ; LVT # Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH
C3F5..C40F ; LVT # Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH
C411..C42B ; LVT # Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH
C42D..C447 ; LVT # Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH
C449..C463 ; LVT # Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH
C465..C47F ; LVT # Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH
C481..C49B ; LVT # Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH
C49D..C4B7 ; LVT # Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH
C4B9..C4D3 ; LVT # Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH
C4D5..C4EF ; LVT # Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH
C4F1..C50B ; LVT # Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH
C50D..C527 ; LVT # Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH
C529..C543 ; LVT # Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH
C545..C55F ; LVT # Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH
C561..C57B ; LVT # Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH
C57D..C597 ; LVT # Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH
C599..C5B3 ; LVT # Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH
C5B5..C5CF ; LVT # Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH
C5D1..C5EB ; LVT # Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH
C5ED..C607 ; LVT # Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH
C609..C623 ; LVT # Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH
C625..C63F ; LVT # Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH
C641..C65B ; LVT # Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH
C65D..C677 ; LVT # Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH
C679..C693 ; LVT # Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH
C695..C6AF ; LVT # Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH
C6B1..C6CB ; LVT # Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH
C6CD..C6E7 ; LVT # Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH
C6E9..C703 ; LVT # Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH
C705..C71F ; LVT # Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH
C721..C73B ; LVT # Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH
C73D..C757 ; LVT # Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH
C759..C773 ; LVT # Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH
C775..C78F ; LVT # Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH
C791..C7AB ; LVT # Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH
C7AD..C7C7 ; LVT # Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH
C7C9..C7E3 ; LVT # Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH
C7E5..C7FF ; LVT # Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH
C801..C81B ; LVT # Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH
C81D..C837 ; LVT # Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH
C839..C853 ; LVT # Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH
C855..C86F ; LVT # Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH
C871..C88B ; LVT # Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH
C88D..C8A7 ; LVT # Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH
C8A9..C8C3 ; LVT # Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH
C8C5..C8DF ; LVT # Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH
C8E1..C8FB ; LVT # Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH
C8FD..C917 ; LVT # Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH
C919..C933 ; LVT # Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH
C935..C94F ; LVT # Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH
C951..C96B ; LVT # Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH
C96D..C987 ; LVT # Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH
C989..C9A3 ; LVT # Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH
C9A5..C9BF ; LVT # Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH
C9C1..C9DB ; LVT # Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH
C9DD..C9F7 ; LVT # Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH
C9F9..CA13 ; LVT # Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH
CA15..CA2F ; LVT # Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH
CA31..CA4B ; LVT # Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH
CA4D..CA67 ; LVT # Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH
CA69..CA83 ; LVT # Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH
CA85..CA9F ; LVT # Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH
CAA1..CABB ; LVT # Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH
CABD..CAD7 ; LVT # Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH
CAD9..CAF3 ; LVT # Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH
CAF5..CB0F ; LVT # Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH
CB11..CB2B ; LVT # Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH
CB2D..CB47 ; LVT # Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH
CB49..CB63 ; LVT # Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH
CB65..CB7F ; LVT # Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH
CB81..CB9B ; LVT # Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH
CB9D..CBB7 ; LVT # Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH
CBB9..CBD3 ; LVT # Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH
CBD5..CBEF ; LVT # Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH
CBF1..CC0B ; LVT # Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH
CC0D..CC27 ; LVT # Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH
CC29..CC43 ; LVT # Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH
CC45..CC5F ; LVT # Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH
CC61..CC7B ; LVT # Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH
CC7D..CC97 ; LVT # Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH
CC99..CCB3 ; LVT # Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH
CCB5..CCCF ; LVT # Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH
CCD1..CCEB ; LVT # Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH
CCED..CD07 ; LVT # Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH
CD09..CD23 ; LVT # Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH
CD25..CD3F ; LVT # Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH
CD41..CD5B ; LVT # Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH
CD5D..CD77 ; LVT # Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH
CD79..CD93 ; LVT # Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH
CD95..CDAF ; LVT # Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH
CDB1..CDCB ; LVT # Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH
CDCD..CDE7 ; LVT # Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH
CDE9..CE03 ; LVT # Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH
CE05..CE1F ; LVT # Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH
CE21..CE3B ; LVT # Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH
CE3D..CE57 ; LVT # Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH
CE59..CE73 ; LVT # Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH
CE75..CE8F ; LVT # Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH
CE91..CEAB ; LVT # Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH
CEAD..CEC7 ; LVT # Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH
CEC9..CEE3 ; LVT # Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH
CEE5..CEFF ; LVT # Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH
CF01..CF1B ; LVT # Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH
CF1D..CF37 ; LVT # Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH
CF39..CF53 ; LVT # Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH
CF55..CF6F ; LVT # Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH
CF71..CF8B ; LVT # Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH
CF8D..CFA7 ; LVT # Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH
CFA9..CFC3 ; LVT # Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH
CFC5..CFDF ; LVT # Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH
CFE1..CFFB ; LVT # Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH
CFFD..D017 ; LVT # Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH
D019..D033 ; LVT # Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH
D035..D04F ; LVT # Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH
D051..D06B ; LVT # Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH
D06D..D087 ; LVT # Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH
D089..D0A3 ; LVT # Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH
D0A5..D0BF ; LVT # Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH
D0C1..D0DB ; LVT # Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH
D0DD..D0F7 ; LVT # Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH
D0F9..D113 ; LVT # Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH
D115..D12F ; LVT # Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH
D131..D14B ; LVT # Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH
D14D..D167 ; LVT # Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH
D169..D183 ; LVT # Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH
D185..D19F ; LVT # Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH
D1A1..D1BB ; LVT # Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH
D1BD..D1D7 ; LVT # Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH
D1D9..D1F3 ; LVT # Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH
D1F5..D20F ; LVT # Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH
D211..D22B ; LVT # Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH
D22D..D247 ; LVT # Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH
D249..D263 ; LVT # Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH
D265..D27F ; LVT # Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH
D281..D29B ; LVT # Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH
D29D..D2B7 ; LVT # Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH
D2B9..D2D3 ; LVT # Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH
D2D5..D2EF ; LVT # Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH
D2F1..D30B ; LVT # Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH
D30D..D327 ; LVT # Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH
D329..D343 ; LVT # Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH
D345..D35F ; LVT # Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH
D361..D37B ; LVT # Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH
D37D..D397 ; LVT # Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH
D399..D3B3 ; LVT # Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH
D3B5..D3CF ; LVT # Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH
D3D1..D3EB ; LVT # Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH
D3ED..D407 ; LVT # Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH
D409..D423 ; LVT # Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH
D425..D43F ; LVT # Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH
D441..D45B ; LVT # Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH
D45D..D477 ; LVT # Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH
D479..D493 ; LVT # Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH
D495..D4AF ; LVT # Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH
D4B1..D4CB ; LVT # Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH
D4CD..D4E7 ; LVT # Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH
D4E9..D503 ; LVT # Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH
D505..D51F ; LVT # Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH
D521..D53B ; LVT # Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH
D53D..D557 ; LVT # Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH
D559..D573 ; LVT # Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH
D575..D58F ; LVT # Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH
D591..D5AB ; LVT # Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH
D5AD..D5C7 ; LVT # Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH
D5C9..D5E3 ; LVT # Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH
D5E5..D5FF ; LVT # Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH
D601..D61B ; LVT # Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH
D61D..D637 ; LVT # Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH
D639..D653 ; LVT # Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH
D655..D66F ; LVT # Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH
D671..D68B ; LVT # Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH
D68D..D6A7 ; LVT # Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH
D6A9..D6C3 ; LVT # Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH
D6C5..D6DF ; LVT # Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH
D6E1..D6FB ; LVT # Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH
D6FD..D717 ; LVT # Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH
D719..D733 ; LVT # Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH
D735..D74F ; LVT # Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH
D751..D76B ; LVT # Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH
D76D..D787 ; LVT # Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH
D789..D7A3 ; LVT # Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH
# Total code points: 10773
# EOF

6117
src/modules/punk/char/unicode15.1/Index.txt

File diff suppressed because it is too large Load Diff

808
src/modules/punk/char/unicode15.1/IndicPositionalCategory.txt

@ -0,0 +1,808 @@
# IndicPositionalCategory-15.1.0.txt
# Date: 2023-01-05
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# For documentation, see UAX #44: Unicode Character Database,
# at https://www.unicode.org/reports/tr44/
#
# This file defines the following property:
#
# Indic_Positional_Category enumerated property
#
# Scope: This property is aimed at the problem of
# the specification of syllabic structure for Indic scripts.
# Because dependent vowels (matras), visible viramas, and other
# characters are placed in notional slots around the consonant (or
# consonant cluster) core of an Indic syllable, there may be
# cooccurrence constraints or other interactions. Also, it may be
# desirable, in cases where more than one such character may occur in
# sequence, as for example, in a top slot and a bottom slot, to
# specify preferred orders for spelling. As such, this property
# is designed primarily to supplement the Indic_Syllabic_Category
# property.
#
# In addition to combining marks associated with Indic scripts, the
# Indic_Positional_Category has non-trivial values for special signs
# associated with Indic_Syllabic_Category=Consonant_Prefixed
# or Indic_Syllabic_Category=Consonant_Preceding_Repha. Those signs
# have General_Category=Lo, rather than being combining marks.
# They occur in initial position in syllabic structure. However, when
# rendered, they appear as marks positioned with respect to another
# base letter (usually above it). Hence, having an explicit value for
# Indic_Positional_Category for those signs can be helpful.
#
# Note that this property is *not* intended as
# a prescriptive property regarding display or font design,
# for a number of reasons. Good font design requires information
# that is outside the context of a character encoding standard,
# and is best handled in other venues. For Indic dependent
# vowels and similar characters, in particular:
#
# 1. Matra placement may vary somewhat based on typeface design.
# 2. Matra placement, even within a single script, may vary
# somewhat according to historic period or local conventions.
# 3. Matra placement may be changed by explicit orthographic reform
# decisions.
# 4. Matras may ligate in various ways with a consonant (or even
# other elements of a syllable) instead of occurring in a
# discrete location.
# 5. Matra display may be contextually determined. This is
# notable, for example, in the Tamil script, where the shape
# and placement of -u and -uu vowels depends strongly on
# which consonant they adjoin.
#
# Format:
# Field 0 Unicode code point value or range of code point values
# Field 1 Indic_Positional_Category property value
#
# Field 1 is followed by a comment field, starting with the number sign '#',
# which shows the General_Category property value, the Unicode character name
# or names, and, in lines with ranges of code points, the code point count in
# square brackets.
#
# The scripts assessed as containing dependent vowels or similar characters
# in the structural sense used for the Indic_Positional_Category are the
# following:
#
# Ahom, Balinese, Batak, Bengali, Bhaiksuki, Brahmi, Buginese, Buhid,
# Chakma, Cham, Devanagari, Dives Akuru, Dogra, Grantha, Gujarati,
# Gunjala Gondi, Gurmukhi, Hanunoo, Javanese, Kaithi, Kannada, Kawi,
# Kayah Li, Kharoshthi, Khmer, Khojki, Khudawadi, Lao, Lepcha, Limbu,
# Makasar, Malayalam, Marchen, Masaram Gondi, Meetei Mayek, Modi,
# Myanmar, Nandinagari, Newa, New Tai Lue, Oriya, Rejang, Saurashtra,
# Sharada, Siddham, Sinhala, Soyombo, Sundanese, Syloti Nagri,
# Tagalog, Tagbanwa, Tai Tham, Tai Viet, Takri, Tamil, Telugu, Thai,
# Tibetan, Tirhuta, and Zanabazar Square.
#
# All characters for all other scripts not in that list
# take the default value for this property.
#
# See IndicSyllabicCategory.txt for a slightly more extended
# list of Indic scripts, including those which do not have
# positional characters. Currently, those additional
# Indic scripts without positional characters are
# Multani, Phags-pa, and Tai Le.
#
# Notes:
#
# 1. The following characters are all assigned the positional category Right,
# but may have different positions in some cases:
# * U+0BC1 TAMIL VOWEL SIGN U and U+0BC2 TAMIL VOWEL SIGN UU have
# contextually variable placement in Tamil.
# * U+0D41 MALAYALAM VOWEL SIGN U and U+0D42 MALAYALAM VOWEL SIGN UU form
# complex ligatures with consonants in older Malayalam orthography.
# * U+11341 GRANTHA VOWEL SIGN U and U+11342 GRANTHA VOWEL SIGN UU have
# contextually variable placement in Grantha.
# * U+11440 NEWA VOWEL SIGN O and U+11441 NEWA VOWEL SIGN AU have contextually
# variable placement in Newa.
#
# 2. The following characters are all assigned the positional category Top,
# but may have different positions in some cases:
# * U+1143E NEWA VOWEL SIGN E and U+1143F NEWA VOWEL SIGN AI have contextually
# variable placement in Newa.
#
# 3. The following characters are all assigned the positional category Bottom,
# but may have different positions in some cases:
# * U+102F MYANMAR VOWEL SIGN U and U+1030 MYANMAR VOWEL SIGN UU have
# contextually variable placement in Myanmar.
# * U+1A69 TAI THAM VOWEL SIGN U and U+1A6A TAI THAM VOWEL SIGN UU have
# contextually variable placement in Tai Tham.
#
# 4. The following character is assigned the positional category Left, but
# may have different positions in different styles:
# * U+119D2 NANDINAGARI VOWEL SIGN I has stylistically variable placement
# in Nandinagari.
# ================================================
# Property: Indic_Positional_Category
#
# All code points not explicitly listed for Indic_Positional_Category
# have the value NA (not applicable).
#
# @missing: 0000..10FFFF; NA
# ------------------------------------------------
# Indic_Positional_Category=Right
0903 ; Right # Mc DEVANAGARI SIGN VISARGA
093B ; Right # Mc DEVANAGARI VOWEL SIGN OOE
093E ; Right # Mc DEVANAGARI VOWEL SIGN AA
0940 ; Right # Mc DEVANAGARI VOWEL SIGN II
0949..094C ; Right # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
094F ; Right # Mc DEVANAGARI VOWEL SIGN AW
0982..0983 ; Right # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
09BE ; Right # Mc BENGALI VOWEL SIGN AA
09C0 ; Right # Mc BENGALI VOWEL SIGN II
09D7 ; Right # Mc BENGALI AU LENGTH MARK
0A03 ; Right # Mc GURMUKHI SIGN VISARGA
0A3E ; Right # Mc GURMUKHI VOWEL SIGN AA
0A40 ; Right # Mc GURMUKHI VOWEL SIGN II
0A83 ; Right # Mc GUJARATI SIGN VISARGA
0ABE ; Right # Mc GUJARATI VOWEL SIGN AA
0AC0 ; Right # Mc GUJARATI VOWEL SIGN II
0ACB..0ACC ; Right # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
0B02..0B03 ; Right # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
0B3E ; Right # Mc ORIYA VOWEL SIGN AA
0B40 ; Right # Mc ORIYA VOWEL SIGN II
0BBE..0BBF ; Right # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
0BC1..0BC2 ; Right # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
0BD7 ; Right # Mc TAMIL AU LENGTH MARK
0C01..0C03 ; Right # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
0C41..0C44 ; Right # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
0C82..0C83 ; Right # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
0CBE ; Right # Mc KANNADA VOWEL SIGN AA
0CC1..0CC4 ; Right # Mc [4] KANNADA VOWEL SIGN U..KANNADA VOWEL SIGN VOCALIC RR
0CD5..0CD6 ; Right # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
0CF3 ; Right # Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
0D02..0D03 ; Right # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
0D3E..0D40 ; Right # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
0D41..0D42 ; Right # Mn [2] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN UU
0D57 ; Right # Mc MALAYALAM AU LENGTH MARK
0D82..0D83 ; Right # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
0DCF..0DD1 ; Right # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
0DD8 ; Right # Mc SINHALA VOWEL SIGN GAETTA-PILLA
0DDF ; Right # Mc SINHALA VOWEL SIGN GAYANUKITTA
0DF2..0DF3 ; Right # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
0E30 ; Right # Lo THAI CHARACTER SARA A
0E32..0E33 ; Right # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
0E45 ; Right # Lo THAI CHARACTER LAKKHANGYAO
0EB0 ; Right # Lo LAO VOWEL SIGN A
0EB2..0EB3 ; Right # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
0F3E ; Right # Mc TIBETAN SIGN YAR TSHES
0F7F ; Right # Mc TIBETAN SIGN RNAM BCAD
102B..102C ; Right # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA
1038 ; Right # Mc MYANMAR SIGN VISARGA
103B ; Right # Mc MYANMAR CONSONANT SIGN MEDIAL YA
1056..1057 ; Right # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
1062..1064 ; Right # Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO
1067..106D ; Right # Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5
1083 ; Right # Mc MYANMAR VOWEL SIGN SHAN AA
1087..108C ; Right # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
108F ; Right # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5
109A..109C ; Right # Mc [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A
1715 ; Right # Mc TAGALOG SIGN PAMUDPOD
1734 ; Right # Mc HANUNOO SIGN PAMUDPOD
17B6 ; Right # Mc KHMER VOWEL SIGN AA
17C7..17C8 ; Right # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
1923..1924 ; Right # Mc [2] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AI
1929..192B ; Right # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
1930..1931 ; Right # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
1933..1938 ; Right # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
19B0..19B4 ; Right # Lo [5] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN UU
19B8..19B9 ; Right # Lo [2] NEW TAI LUE VOWEL SIGN OA..NEW TAI LUE VOWEL SIGN UE
19BB..19C0 ; Right # Lo [6] NEW TAI LUE VOWEL SIGN AAY..NEW TAI LUE VOWEL SIGN IY
19C8..19C9 ; Right # Lo [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2
1A1A ; Right # Mc BUGINESE VOWEL SIGN O
1A57 ; Right # Mc TAI THAM CONSONANT SIGN LA TANG LAI
1A61 ; Right # Mc TAI THAM VOWEL SIGN A
1A63..1A64 ; Right # Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA
1A6D ; Right # Mc TAI THAM VOWEL SIGN OY
1B04 ; Right # Mc BALINESE SIGN BISAH
1B35 ; Right # Mc BALINESE VOWEL SIGN TEDUNG
1B44 ; Right # Mc BALINESE ADEG ADEG
1B82 ; Right # Mc SUNDANESE SIGN PANGWISAD
1BA1 ; Right # Mc SUNDANESE CONSONANT SIGN PAMINGKAL
1BA7 ; Right # Mc SUNDANESE VOWEL SIGN PANOLONG
1BAA ; Right # Mc SUNDANESE SIGN PAMAAEH
1BE7 ; Right # Mc BATAK VOWEL SIGN E
1BEA..1BEC ; Right # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O
1BEE ; Right # Mc BATAK VOWEL SIGN U
1BF2..1BF3 ; Right # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN
1C24..1C26 ; Right # Mc [3] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN AA
1C2A..1C2B ; Right # Mc [2] LEPCHA VOWEL SIGN U..LEPCHA VOWEL SIGN UU
1CE1 ; Right # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
1CF7 ; Right # Mc VEDIC SIGN ATIKRAMA
A823..A824 ; Right # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
A827 ; Right # Mc SYLOTI NAGRI VOWEL SIGN OO
A880..A881 ; Right # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
A8B4..A8C3 ; Right # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
A952..A953 ; Right # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
A983 ; Right # Mc JAVANESE SIGN WIGNYAN
A9B4..A9B5 ; Right # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
AA33 ; Right # Mc CHAM CONSONANT SIGN YA
AA4D ; Right # Mc CHAM CONSONANT SIGN FINAL H
AA7B ; Right # Mc MYANMAR SIGN PAO KAREN TONE
AA7D ; Right # Mc MYANMAR SIGN TAI LAING TONE-5
AAB1 ; Right # Lo TAI VIET VOWEL AA
AABA ; Right # Lo TAI VIET VOWEL UA
AABD ; Right # Lo TAI VIET VOWEL AN
AAEF ; Right # Mc MEETEI MAYEK VOWEL SIGN AAU
AAF5 ; Right # Mc MEETEI MAYEK VOWEL SIGN VISARGA
ABE3..ABE4 ; Right # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP
ABE6..ABE7 ; Right # Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP
ABE9..ABEA ; Right # Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG
ABEC ; Right # Mc MEETEI MAYEK LUM IYEK
11000 ; Right # Mc BRAHMI SIGN CANDRABINDU
11002 ; Right # Mc BRAHMI SIGN VISARGA
11082 ; Right # Mc KAITHI SIGN VISARGA
110B0 ; Right # Mc KAITHI VOWEL SIGN AA
110B2 ; Right # Mc KAITHI VOWEL SIGN II
110B7..110B8 ; Right # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU
11145..11146 ; Right # Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
11182 ; Right # Mc SHARADA SIGN VISARGA
111B3 ; Right # Mc SHARADA VOWEL SIGN AA
111B5 ; Right # Mc SHARADA VOWEL SIGN II
111C0 ; Right # Mc SHARADA SIGN VIRAMA
1122C..1122E ; Right # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II
11235 ; Right # Mc KHOJKI SIGN VIRAMA
112E0 ; Right # Mc KHUDAWADI VOWEL SIGN AA
112E2 ; Right # Mc KHUDAWADI VOWEL SIGN II
11302..11303 ; Right # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
1133E..1133F ; Right # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I
11341..11344 ; Right # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
1134D ; Right # Mc GRANTHA SIGN VIRAMA
11357 ; Right # Mc GRANTHA AU LENGTH MARK
11362..11363 ; Right # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
11435 ; Right # Mc NEWA VOWEL SIGN AA
11437 ; Right # Mc NEWA VOWEL SIGN II
11440..11441 ; Right # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
11445 ; Right # Mc NEWA SIGN VISARGA
114B0 ; Right # Mc TIRHUTA VOWEL SIGN AA
114B2 ; Right # Mc TIRHUTA VOWEL SIGN II
114BD ; Right # Mc TIRHUTA VOWEL SIGN SHORT O
114C1 ; Right # Mc TIRHUTA SIGN VISARGA
115AF ; Right # Mc SIDDHAM VOWEL SIGN AA
115B1 ; Right # Mc SIDDHAM VOWEL SIGN II
115BE ; Right # Mc SIDDHAM SIGN VISARGA
11630..11632 ; Right # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II
1163B..1163C ; Right # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU
1163E ; Right # Mc MODI SIGN VISARGA
116AC ; Right # Mc TAKRI SIGN VISARGA
116AF ; Right # Mc TAKRI VOWEL SIGN II
116B6 ; Right # Mc TAKRI SIGN VIRAMA
11720..11721 ; Right # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
1182C ; Right # Mc DOGRA VOWEL SIGN AA
1182E ; Right # Mc DOGRA VOWEL SIGN II
11838 ; Right # Mc DOGRA SIGN VISARGA
11930..11934 ; Right # Mc [5] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN UU
1193D ; Right # Mc DIVES AKURU SIGN HALANTA
11940 ; Right # Mc DIVES AKURU MEDIAL YA
119D1 ; Right # Mc NANDINAGARI VOWEL SIGN AA
119D3 ; Right # Mc NANDINAGARI VOWEL SIGN II
119DC..119DF ; Right # Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA
11A39 ; Right # Mc ZANABAZAR SQUARE SIGN VISARGA
11A57..11A58 ; Right # Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU
11A97 ; Right # Mc SOYOMBO SIGN VISARGA
11C2F ; Right # Mc BHAIKSUKI VOWEL SIGN AA
11C3E ; Right # Mc BHAIKSUKI SIGN VISARGA
11CA9 ; Right # Mc MARCHEN SUBJOINED LETTER YA
11CB4 ; Right # Mc MARCHEN VOWEL SIGN O
11D46 ; Right # Lo MASARAM GONDI REPHA
11D8A..11D8E ; Right # Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU
11D93..11D94 ; Right # Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU
11D96 ; Right # Mc GUNJALA GONDI SIGN VISARGA
11EF6 ; Right # Mc MAKASAR VOWEL SIGN O
11F03 ; Right # Mc KAWI SIGN VISARGA
11F34..11F35 ; Right # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA
11F41 ; Right # Mc KAWI SIGN KILLER
# Indic_Positional_Category=Left
093F ; Left # Mc DEVANAGARI VOWEL SIGN I
094E ; Left # Mc DEVANAGARI VOWEL SIGN PRISHTHAMATRA E
09BF ; Left # Mc BENGALI VOWEL SIGN I
09C7..09C8 ; Left # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
0A3F ; Left # Mc GURMUKHI VOWEL SIGN I
0ABF ; Left # Mc GUJARATI VOWEL SIGN I
0B47 ; Left # Mc ORIYA VOWEL SIGN E
0BC6..0BC8 ; Left # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
0D46..0D48 ; Left # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
0DD9 ; Left # Mc SINHALA VOWEL SIGN KOMBUVA
0DDB ; Left # Mc SINHALA VOWEL SIGN KOMBU DEKA
0F3F ; Left # Mc TIBETAN SIGN MAR TSHES
1031 ; Left # Mc MYANMAR VOWEL SIGN E
1084 ; Left # Mc MYANMAR VOWEL SIGN SHAN E
17C1..17C3 ; Left # Mc [3] KHMER VOWEL SIGN E..KHMER VOWEL SIGN AI
1A19 ; Left # Mc BUGINESE VOWEL SIGN E
1A55 ; Left # Mc TAI THAM CONSONANT SIGN MEDIAL RA
1A6E..1A72 ; Left # Mc [5] TAI THAM VOWEL SIGN E..TAI THAM VOWEL SIGN THAM AI
1B3E..1B3F ; Left # Mc [2] BALINESE VOWEL SIGN TALING..BALINESE VOWEL SIGN TALING REPA
1BA6 ; Left # Mc SUNDANESE VOWEL SIGN PANAELAENG
1C27..1C28 ; Left # Mc [2] LEPCHA VOWEL SIGN I..LEPCHA VOWEL SIGN O
1C34..1C35 ; Left # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
A9BA..A9BB ; Left # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
AA2F..AA30 ; Left # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
AA34 ; Left # Mc CHAM CONSONANT SIGN RA
AAEB ; Left # Mc MEETEI MAYEK VOWEL SIGN II
AAEE ; Left # Mc MEETEI MAYEK VOWEL SIGN AU
110B1 ; Left # Mc KAITHI VOWEL SIGN I
1112C ; Left # Mc CHAKMA VOWEL SIGN E
111B4 ; Left # Mc SHARADA VOWEL SIGN I
111CE ; Left # Mc SHARADA VOWEL SIGN PRISHTHAMATRA E
112E1 ; Left # Mc KHUDAWADI VOWEL SIGN I
11347..11348 ; Left # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
11436 ; Left # Mc NEWA VOWEL SIGN I
114B1 ; Left # Mc TIRHUTA VOWEL SIGN I
114B9 ; Left # Mc TIRHUTA VOWEL SIGN E
115B0 ; Left # Mc SIDDHAM VOWEL SIGN I
115B8 ; Left # Mc SIDDHAM VOWEL SIGN E
116AE ; Left # Mc TAKRI VOWEL SIGN I
11726 ; Left # Mc AHOM VOWEL SIGN E
1182D ; Left # Mc DOGRA VOWEL SIGN I
11935 ; Left # Mc DIVES AKURU VOWEL SIGN E
11937 ; Left # Mc DIVES AKURU VOWEL SIGN AI
119D2 ; Left # Mc NANDINAGARI VOWEL SIGN I
119E4 ; Left # Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E
11CB1 ; Left # Mc MARCHEN VOWEL SIGN I
11EF5 ; Left # Mc MAKASAR VOWEL SIGN E
11F3E..11F3F ; Left # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI
# Indic_Positional_Category=Visual_Order_Left
# These are dependent vowels that occur to the left of the consonant
# letter in a syllable, but which occur in scripts using the visual order
# model, instead of the logical order model. Because of the different
# model, these left-side vowels occur first in the backing store (before
# the consonant letter) and are not reordered during text rendering.
#
# [Derivation: Logical_Order_Exception=Yes]
0E40..0E44 ; Visual_Order_Left # Lo [5] THAI CHARACTER SARA E..THAI CHARACTER SARA AI MAIMALAI
0EC0..0EC4 ; Visual_Order_Left # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
19B5..19B7 ; Visual_Order_Left # Lo [3] NEW TAI LUE VOWEL SIGN E..NEW TAI LUE VOWEL SIGN O
19BA ; Visual_Order_Left # Lo NEW TAI LUE VOWEL SIGN AY
AAB5..AAB6 ; Visual_Order_Left # Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O
AAB9 ; Visual_Order_Left # Lo TAI VIET VOWEL UEA
AABB..AABC ; Visual_Order_Left # Lo [2] TAI VIET VOWEL AUE..TAI VIET VOWEL AY
# Indic_Positional_Category=Left_And_Right
09CB..09CC ; Left_And_Right # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
0B4B ; Left_And_Right # Mc ORIYA VOWEL SIGN O
0BCA..0BCC ; Left_And_Right # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
0D4A..0D4C ; Left_And_Right # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
0DDC ; Left_And_Right # Mc SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
0DDE ; Left_And_Right # Mc SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
17C0 ; Left_And_Right # Mc KHMER VOWEL SIGN IE
17C4..17C5 ; Left_And_Right # Mc [2] KHMER VOWEL SIGN OO..KHMER VOWEL SIGN AU
1B40..1B41 ; Left_And_Right # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
1134B..1134C ; Left_And_Right # Mc [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU
114BC ; Left_And_Right # Mc TIRHUTA VOWEL SIGN O
114BE ; Left_And_Right # Mc TIRHUTA VOWEL SIGN AU
115BA ; Left_And_Right # Mc SIDDHAM VOWEL SIGN O
11938 ; Left_And_Right # Mc DIVES AKURU VOWEL SIGN O
# Indic_Positional_Category=Top
0900..0902 ; Top # Mn [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA
093A ; Top # Mn DEVANAGARI VOWEL SIGN OE
0945..0948 ; Top # Mn [4] DEVANAGARI VOWEL SIGN CANDRA E..DEVANAGARI VOWEL SIGN AI
0951 ; Top # Mn DEVANAGARI STRESS SIGN UDATTA
0955 ; Top # Mn DEVANAGARI VOWEL SIGN CANDRA LONG E
0981 ; Top # Mn BENGALI SIGN CANDRABINDU
09FE ; Top # Mn BENGALI SANDHI MARK
0A01..0A02 ; Top # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
0A47..0A48 ; Top # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
0A4B..0A4C ; Top # Mn [2] GURMUKHI VOWEL SIGN OO..GURMUKHI VOWEL SIGN AU
0A70..0A71 ; Top # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
0A81..0A82 ; Top # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
0AC5 ; Top # Mn GUJARATI VOWEL SIGN CANDRA E
0AC7..0AC8 ; Top # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
0AFA..0AFF ; Top # Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
0B01 ; Top # Mn ORIYA SIGN CANDRABINDU
0B3F ; Top # Mn ORIYA VOWEL SIGN I
0B55..0B56 ; Top # Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK
0B82 ; Top # Mn TAMIL SIGN ANUSVARA
0BC0 ; Top # Mn TAMIL VOWEL SIGN II
0BCD ; Top # Mn TAMIL SIGN VIRAMA
0C00 ; Top # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE
0C04 ; Top # Mn TELUGU SIGN COMBINING ANUSVARA ABOVE
0C3E..0C40 ; Top # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
0C46..0C47 ; Top # Mn [2] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN EE
0C4A..0C4D ; Top # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
0C55 ; Top # Mn TELUGU LENGTH MARK
0C81 ; Top # Mn KANNADA SIGN CANDRABINDU
0CBF ; Top # Mn KANNADA VOWEL SIGN I
0CC6 ; Top # Mn KANNADA VOWEL SIGN E
0CCC..0CCD ; Top # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
0D00..0D01 ; Top # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
0D3B..0D3C ; Top # Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
0D4D ; Top # Mn MALAYALAM SIGN VIRAMA
0D4E ; Top # Lo MALAYALAM LETTER DOT REPH
0D81 ; Top # Mn SINHALA SIGN CANDRABINDU
0DCA ; Top # Mn SINHALA SIGN AL-LAKUNA
0DD2..0DD3 ; Top # Mn [2] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN DIGA IS-PILLA
0E31 ; Top # Mn THAI CHARACTER MAI HAN-AKAT
0E34..0E37 ; Top # Mn [4] THAI CHARACTER SARA I..THAI CHARACTER SARA UEE
0E47..0E4E ; Top # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
0EB1 ; Top # Mn LAO VOWEL SIGN MAI KAN
0EB4..0EB7 ; Top # Mn [4] LAO VOWEL SIGN I..LAO VOWEL SIGN YY
0EBB ; Top # Mn LAO VOWEL SIGN MAI KON
0EC8..0ECE ; Top # Mn [7] LAO TONE MAI EK..LAO YAMAKKAN
0F39 ; Top # Mn TIBETAN MARK TSA -PHRU
0F72 ; Top # Mn TIBETAN VOWEL SIGN I
0F7A..0F7E ; Top # Mn [5] TIBETAN VOWEL SIGN E..TIBETAN SIGN RJES SU NGA RO
0F80 ; Top # Mn TIBETAN VOWEL SIGN REVERSED I
0F82..0F83 ; Top # Mn [2] TIBETAN SIGN NYI ZLA NAA DA..TIBETAN SIGN SNA LDAN
0F86..0F87 ; Top # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
102D..102E ; Top # Mn [2] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN II
1032..1036 ; Top # Mn [5] MYANMAR VOWEL SIGN AI..MYANMAR SIGN ANUSVARA
103A ; Top # Mn MYANMAR SIGN ASAT
1071..1074 ; Top # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
1085..1086 ; Top # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
109D ; Top # Mn MYANMAR VOWEL SIGN AITON AI
1712 ; Top # Mn TAGALOG VOWEL SIGN I
1732 ; Top # Mn HANUNOO VOWEL SIGN I
1752 ; Top # Mn BUHID VOWEL SIGN I
1772 ; Top # Mn TAGBANWA VOWEL SIGN I
17B7..17BA ; Top # Mn [4] KHMER VOWEL SIGN I..KHMER VOWEL SIGN YY
17C6 ; Top # Mn KHMER SIGN NIKAHIT
17C9..17D1 ; Top # Mn [9] KHMER SIGN MUUSIKATOAN..KHMER SIGN VIRIAM
17D3 ; Top # Mn KHMER SIGN BATHAMASAT
17DD ; Top # Mn KHMER SIGN ATTHACAN
1920..1921 ; Top # Mn [2] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN I
1927..1928 ; Top # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
193A ; Top # Mn LIMBU SIGN KEMPHRENG
1A17 ; Top # Mn BUGINESE VOWEL SIGN I
1A1B ; Top # Mn BUGINESE VOWEL SIGN AE
1A58..1A5A ; Top # Mn [3] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN LOW PA
1A62 ; Top # Mn TAI THAM VOWEL SIGN MAI SAT
1A65..1A68 ; Top # Mn [4] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN UUE
1A6B ; Top # Mn TAI THAM VOWEL SIGN O
1A73..1A7C ; Top # Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN
1B00..1B03 ; Top # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
1B34 ; Top # Mn BALINESE SIGN REREKAN
1B36..1B37 ; Top # Mn [2] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN ULU SARI
1B42 ; Top # Mn BALINESE VOWEL SIGN PEPET
1B6B ; Top # Mn BALINESE MUSICAL SYMBOL COMBINING TEGEH
1B6D..1B73 ; Top # Mn [7] BALINESE MUSICAL SYMBOL COMBINING KEMPUL..BALINESE MUSICAL SYMBOL COMBINING GONG
1B80..1B81 ; Top # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
1BA4 ; Top # Mn SUNDANESE VOWEL SIGN PANGHULU
1BA8..1BA9 ; Top # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
1BE6 ; Top # Mn BATAK SIGN TOMPI
1BE8..1BE9 ; Top # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
1BED ; Top # Mn BATAK VOWEL SIGN KARO O
1BEF..1BF1 ; Top # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
1C2D..1C33 ; Top # Mn [7] LEPCHA CONSONANT SIGN K..LEPCHA CONSONANT SIGN T
1C36 ; Top # Mn LEPCHA SIGN RAN
1CD0..1CD2 ; Top # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
1CDA..1CDB ; Top # Mn [2] VEDIC TONE DOUBLE SVARITA..VEDIC TONE TRIPLE SVARITA
1CE0 ; Top # Mn VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
1CF4 ; Top # Mn VEDIC TONE CANDRA ABOVE
1DFB ; Top # Mn COMBINING DELETION MARK
20F0 ; Top # Mn COMBINING ASTERISK ABOVE
A802 ; Top # Mn SYLOTI NAGRI SIGN DVISVARA
A806 ; Top # Mn SYLOTI NAGRI SIGN HASANTA
A80B ; Top # Mn SYLOTI NAGRI SIGN ANUSVARA
A826 ; Top # Mn SYLOTI NAGRI VOWEL SIGN E
A8C5 ; Top # Mn SAURASHTRA SIGN CANDRABINDU
A8E0..A8F1 ; Top # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
A8FF ; Top # Mn DEVANAGARI VOWEL SIGN AY
A926..A92A ; Top # Mn [5] KAYAH LI VOWEL UE..KAYAH LI VOWEL O
A94A ; Top # Mn REJANG VOWEL SIGN AI
A94F..A951 ; Top # Mn [3] REJANG CONSONANT SIGN NG..REJANG CONSONANT SIGN R
A980..A982 ; Top # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
A9B3 ; Top # Mn JAVANESE SIGN CECAK TELU
A9B6..A9B7 ; Top # Mn [2] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN WULU MELIK
A9BC ; Top # Mn JAVANESE VOWEL SIGN PEPET
A9E5 ; Top # Mn MYANMAR SIGN SHAN SAW
AA29..AA2C ; Top # Mn [4] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN EI
AA2E ; Top # Mn CHAM VOWEL SIGN OE
AA31 ; Top # Mn CHAM VOWEL SIGN AU
AA43 ; Top # Mn CHAM CONSONANT SIGN FINAL NG
AA4C ; Top # Mn CHAM CONSONANT SIGN FINAL M
AA7C ; Top # Mn MYANMAR SIGN TAI LAING TONE-2
AAB0 ; Top # Mn TAI VIET MAI KANG
AAB2..AAB3 ; Top # Mn [2] TAI VIET VOWEL I..TAI VIET VOWEL UE
AAB7..AAB8 ; Top # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
AABE..AABF ; Top # Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK
AAC1 ; Top # Mn TAI VIET TONE MAI THO
AAED ; Top # Mn MEETEI MAYEK VOWEL SIGN AAI
ABE5 ; Top # Mn MEETEI MAYEK VOWEL SIGN ANAP
10A05 ; Top # Mn KHAROSHTHI VOWEL SIGN E
10A0F ; Top # Mn KHAROSHTHI SIGN VISARGA
10A38 ; Top # Mn KHAROSHTHI SIGN BAR ABOVE
11001 ; Top # Mn BRAHMI SIGN ANUSVARA
11038..1103B ; Top # Mn [4] BRAHMI VOWEL SIGN AA..BRAHMI VOWEL SIGN II
11042..11046 ; Top # Mn [5] BRAHMI VOWEL SIGN E..BRAHMI VIRAMA
11070 ; Top # Mn BRAHMI SIGN OLD TAMIL VIRAMA
11073..11074 ; Top # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
11080..11081 ; Top # Mn [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA
110B5..110B6 ; Top # Mn [2] KAITHI VOWEL SIGN E..KAITHI VOWEL SIGN AI
11100..11102 ; Top # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
11127..11129 ; Top # Mn [3] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN II
1112D ; Top # Mn CHAKMA VOWEL SIGN AI
11130 ; Top # Mn CHAKMA VOWEL SIGN OI
11134 ; Top # Mn CHAKMA MAAYYAA
11180..11181 ; Top # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
111BC..111BE ; Top # Mn [3] SHARADA VOWEL SIGN E..SHARADA VOWEL SIGN O
111C2..111C3 ; Top # Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA
111CB ; Top # Mn SHARADA VOWEL MODIFIER MARK
111CF ; Top # Mn SHARADA SIGN INVERTED CANDRABINDU
11230..11231 ; Top # Mn [2] KHOJKI VOWEL SIGN E..KHOJKI VOWEL SIGN AI
11234 ; Top # Mn KHOJKI SIGN ANUSVARA
11236..11237 ; Top # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
1123E ; Top # Mn KHOJKI SIGN SUKUN
112DF ; Top # Mn KHUDAWADI SIGN ANUSVARA
112E5..112E8 ; Top # Mn [4] KHUDAWADI VOWEL SIGN E..KHUDAWADI VOWEL SIGN AU
11300..11301 ; Top # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
11340 ; Top # Mn GRANTHA VOWEL SIGN II
11366..1136C ; Top # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
11370..11374 ; Top # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
1143E..1143F ; Top # Mn [2] NEWA VOWEL SIGN E..NEWA VOWEL SIGN AI
11443..11444 ; Top # Mn [2] NEWA SIGN CANDRABINDU..NEWA SIGN ANUSVARA
1145E ; Top # Mn NEWA SANDHI MARK
114BA ; Top # Mn TIRHUTA VOWEL SIGN SHORT E
114BF..114C0 ; Top # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
115BC..115BD ; Top # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
11639..1163A ; Top # Mn [2] MODI VOWEL SIGN E..MODI VOWEL SIGN AI
1163D ; Top # Mn MODI SIGN ANUSVARA
11640 ; Top # Mn MODI SIGN ARDHACANDRA
116AB ; Top # Mn TAKRI SIGN ANUSVARA
116AD ; Top # Mn TAKRI VOWEL SIGN AA
116B2..116B5 ; Top # Mn [4] TAKRI VOWEL SIGN E..TAKRI VOWEL SIGN AU
1171F ; Top # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
11722..11723 ; Top # Mn [2] AHOM VOWEL SIGN I..AHOM VOWEL SIGN II
11727 ; Top # Mn AHOM VOWEL SIGN AW
11729..1172B ; Top # Mn [3] AHOM VOWEL SIGN AI..AHOM SIGN KILLER
11833..11837 ; Top # Mn [5] DOGRA VOWEL SIGN E..DOGRA SIGN ANUSVARA
1193B..1193C ; Top # Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
1193F ; Top # Lo DIVES AKURU PREFIXED NASAL SIGN
11941 ; Top # Lo DIVES AKURU INITIAL RA
119DA..119DB ; Top # Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
11A01 ; Top # Mn ZANABAZAR SQUARE VOWEL SIGN I
11A04..11A09 ; Top # Mn [6] ZANABAZAR SQUARE VOWEL SIGN E..ZANABAZAR SQUARE VOWEL SIGN REVERSED I
11A35..11A38 ; Top # Mn [4] ZANABAZAR SQUARE SIGN CANDRABINDU..ZANABAZAR SQUARE SIGN ANUSVARA
11A3A ; Top # Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
11A51 ; Top # Mn SOYOMBO VOWEL SIGN I
11A54..11A56 ; Top # Mn [3] SOYOMBO VOWEL SIGN E..SOYOMBO VOWEL SIGN OE
11A84..11A89 ; Top # Lo [6] SOYOMBO SIGN JIHVAMULIYA..SOYOMBO CLUSTER-INITIAL LETTER SA
11A96 ; Top # Mn SOYOMBO SIGN ANUSVARA
11A98 ; Top # Mn SOYOMBO GEMINATION MARK
11C30..11C31 ; Top # Mn [2] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN II
11C38..11C3D ; Top # Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
11CB3 ; Top # Mn MARCHEN VOWEL SIGN E
11CB5..11CB6 ; Top # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
11D31..11D35 ; Top # Mn [5] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN UU
11D3A ; Top # Mn MASARAM GONDI VOWEL SIGN E
11D3C..11D3D ; Top # Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
11D3F..11D41 ; Top # Mn [3] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI SIGN VISARGA
11D43 ; Top # Mn MASARAM GONDI SIGN CANDRA
11D90..11D91 ; Top # Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
11D95 ; Top # Mn GUNJALA GONDI SIGN ANUSVARA
11EF3 ; Top # Mn MAKASAR VOWEL SIGN I
11F00..11F01 ; Top # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
11F02 ; Top # Lo KAWI SIGN REPHA
11F36..11F37 ; Top # Mn [2] KAWI VOWEL SIGN I..KAWI VOWEL SIGN II
11F40 ; Top # Mn KAWI VOWEL SIGN EU
# Indic_Positional_Category=Bottom
093C ; Bottom # Mn DEVANAGARI SIGN NUKTA
0941..0944 ; Bottom # Mn [4] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN VOCALIC RR
094D ; Bottom # Mn DEVANAGARI SIGN VIRAMA
0952 ; Bottom # Mn DEVANAGARI STRESS SIGN ANUDATTA
0956..0957 ; Bottom # Mn [2] DEVANAGARI VOWEL SIGN UE..DEVANAGARI VOWEL SIGN UUE
0962..0963 ; Bottom # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
09BC ; Bottom # Mn BENGALI SIGN NUKTA
09C1..09C4 ; Bottom # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
09CD ; Bottom # Mn BENGALI SIGN VIRAMA
09E2..09E3 ; Bottom # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
0A3C ; Bottom # Mn GURMUKHI SIGN NUKTA
0A41..0A42 ; Bottom # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
0A4D ; Bottom # Mn GURMUKHI SIGN VIRAMA
0A51 ; Bottom # Mn GURMUKHI SIGN UDAAT
0A75 ; Bottom # Mn GURMUKHI SIGN YAKASH
0ABC ; Bottom # Mn GUJARATI SIGN NUKTA
0AC1..0AC4 ; Bottom # Mn [4] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN VOCALIC RR
0ACD ; Bottom # Mn GUJARATI SIGN VIRAMA
0AE2..0AE3 ; Bottom # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
0B3C ; Bottom # Mn ORIYA SIGN NUKTA
0B41..0B44 ; Bottom # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
0B4D ; Bottom # Mn ORIYA SIGN VIRAMA
0B62..0B63 ; Bottom # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
0C3C ; Bottom # Mn TELUGU SIGN NUKTA
0C56 ; Bottom # Mn TELUGU AI LENGTH MARK
0C62..0C63 ; Bottom # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
0CBC ; Bottom # Mn KANNADA SIGN NUKTA
0CE2..0CE3 ; Bottom # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
0D43..0D44 ; Bottom # Mn [2] MALAYALAM VOWEL SIGN VOCALIC R..MALAYALAM VOWEL SIGN VOCALIC RR
0D62..0D63 ; Bottom # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
0DD4 ; Bottom # Mn SINHALA VOWEL SIGN KETTI PAA-PILLA
0DD6 ; Bottom # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
0E38..0E3A ; Bottom # Mn [3] THAI CHARACTER SARA U..THAI CHARACTER PHINTHU
0EB8..0EBA ; Bottom # Mn [3] LAO VOWEL SIGN U..LAO SIGN PALI VIRAMA
0EBC ; Bottom # Mn LAO SEMIVOWEL SIGN LO
0F18..0F19 ; Bottom # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
0F35 ; Bottom # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
0F37 ; Bottom # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
0F71 ; Bottom # Mn TIBETAN VOWEL SIGN AA
0F74..0F75 ; Bottom # Mn [2] TIBETAN VOWEL SIGN U..TIBETAN VOWEL SIGN UU
0F84 ; Bottom # Mn TIBETAN MARK HALANTA
0F8D..0F97 ; Bottom # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
0F99..0FBC ; Bottom # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
0FC6 ; Bottom # Mn TIBETAN SYMBOL PADMA GDAN
102F..1030 ; Bottom # Mn [2] MYANMAR VOWEL SIGN U..MYANMAR VOWEL SIGN UU
1037 ; Bottom # Mn MYANMAR SIGN DOT BELOW
103D..103E ; Bottom # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
1058..1059 ; Bottom # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
105E..1060 ; Bottom # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
1082 ; Bottom # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA
108D ; Bottom # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
1713..1714 ; Bottom # Mn [2] TAGALOG VOWEL SIGN U..TAGALOG SIGN VIRAMA
1733 ; Bottom # Mn HANUNOO VOWEL SIGN U
1753 ; Bottom # Mn BUHID VOWEL SIGN U
1773 ; Bottom # Mn TAGBANWA VOWEL SIGN U
17BB..17BD ; Bottom # Mn [3] KHMER VOWEL SIGN U..KHMER VOWEL SIGN UA
1922 ; Bottom # Mn LIMBU VOWEL SIGN U
1932 ; Bottom # Mn LIMBU SMALL LETTER ANUSVARA
1939 ; Bottom # Mn LIMBU SIGN MUKPHRENG
193B ; Bottom # Mn LIMBU SIGN SA-I
1A18 ; Bottom # Mn BUGINESE VOWEL SIGN U
1A56 ; Bottom # Mn TAI THAM CONSONANT SIGN MEDIAL LA
1A5B..1A5E ; Bottom # Mn [4] TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA..TAI THAM CONSONANT SIGN SA
1A69..1A6A ; Bottom # Mn [2] TAI THAM VOWEL SIGN U..TAI THAM VOWEL SIGN UU
1A6C ; Bottom # Mn TAI THAM VOWEL SIGN OA BELOW
1A7F ; Bottom # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT
1B38..1B3A ; Bottom # Mn [3] BALINESE VOWEL SIGN SUKU..BALINESE VOWEL SIGN RA REPA
1B6C ; Bottom # Mn BALINESE MUSICAL SYMBOL COMBINING ENDEP
1BA2..1BA3 ; Bottom # Mn [2] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE CONSONANT SIGN PANYIKU
1BA5 ; Bottom # Mn SUNDANESE VOWEL SIGN PANYUKU
1BAC..1BAD ; Bottom # Mn [2] SUNDANESE CONSONANT SIGN PASANGAN MA..SUNDANESE CONSONANT SIGN PASANGAN WA
1C2C ; Bottom # Mn LEPCHA VOWEL SIGN E
1C37 ; Bottom # Mn LEPCHA SIGN NUKTA
1CD5..1CD9 ; Bottom # Mn [5] VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA..VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER
1CDC..1CDF ; Bottom # Mn [4] VEDIC TONE KATHAKA ANUDATTA..VEDIC TONE THREE DOTS BELOW
1CED ; Bottom # Mn VEDIC SIGN TIRYAK
A825 ; Bottom # Mn SYLOTI NAGRI VOWEL SIGN U
A82C ; Bottom # Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA
A8C4 ; Bottom # Mn SAURASHTRA SIGN VIRAMA
A92B..A92D ; Bottom # Mn [3] KAYAH LI TONE PLOPHU..KAYAH LI TONE CALYA PLOPHU
A947..A949 ; Bottom # Mn [3] REJANG VOWEL SIGN I..REJANG VOWEL SIGN E
A94B..A94E ; Bottom # Mn [4] REJANG VOWEL SIGN O..REJANG VOWEL SIGN EA
A9B8..A9B9 ; Bottom # Mn [2] JAVANESE VOWEL SIGN SUKU..JAVANESE VOWEL SIGN SUKU MENDUT
A9BD ; Bottom # Mn JAVANESE CONSONANT SIGN KERET
AA2D ; Bottom # Mn CHAM VOWEL SIGN U
AA32 ; Bottom # Mn CHAM VOWEL SIGN UE
AA35..AA36 ; Bottom # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
AAB4 ; Bottom # Mn TAI VIET VOWEL U
AAEC ; Bottom # Mn MEETEI MAYEK VOWEL SIGN UU
ABE8 ; Bottom # Mn MEETEI MAYEK VOWEL SIGN UNAP
ABED ; Bottom # Mn MEETEI MAYEK APUN IYEK
10A02..10A03 ; Bottom # Mn [2] KHAROSHTHI VOWEL SIGN U..KHAROSHTHI VOWEL SIGN VOCALIC R
10A0C..10A0E ; Bottom # Mn [3] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN ANUSVARA
10A39..10A3A ; Bottom # Mn [2] KHAROSHTHI SIGN CAUDA..KHAROSHTHI SIGN DOT BELOW
1103C..11041 ; Bottom # Mn [6] BRAHMI VOWEL SIGN U..BRAHMI VOWEL SIGN VOCALIC LL
110B3..110B4 ; Bottom # Mn [2] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN UU
110B9..110BA ; Bottom # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
110C2 ; Bottom # Mn KAITHI VOWEL SIGN VOCALIC R
1112A..1112B ; Bottom # Mn [2] CHAKMA VOWEL SIGN U..CHAKMA VOWEL SIGN UU
11131..11132 ; Bottom # Mn [2] CHAKMA O MARK..CHAKMA AU MARK
11173 ; Bottom # Mn MAHAJANI SIGN NUKTA
111B6..111BB ; Bottom # Mn [6] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN VOCALIC LL
111C9..111CA ; Bottom # Mn [2] SHARADA SANDHI MARK..SHARADA SIGN NUKTA
111CC ; Bottom # Mn SHARADA EXTRA SHORT VOWEL MARK
1122F ; Bottom # Mn KHOJKI VOWEL SIGN U
11241 ; Bottom # Mn KHOJKI VOWEL SIGN VOCALIC R
112E3..112E4 ; Bottom # Mn [2] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN UU
112E9..112EA ; Bottom # Mn [2] KHUDAWADI SIGN NUKTA..KHUDAWADI SIGN VIRAMA
1133B..1133C ; Bottom # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
11438..1143D ; Bottom # Mn [6] NEWA VOWEL SIGN U..NEWA VOWEL SIGN VOCALIC LL
11442 ; Bottom # Mn NEWA SIGN VIRAMA
11446 ; Bottom # Mn NEWA SIGN NUKTA
114B3..114B8 ; Bottom # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
114C2..114C3 ; Bottom # Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
115B2..115B5 ; Bottom # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
115BF..115C0 ; Bottom # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
115DC..115DD ; Bottom # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
11633..11638 ; Bottom # Mn [6] MODI VOWEL SIGN U..MODI VOWEL SIGN VOCALIC LL
1163F ; Bottom # Mn MODI SIGN VIRAMA
116B0..116B1 ; Bottom # Mn [2] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN UU
116B7 ; Bottom # Mn TAKRI SIGN NUKTA
1171D ; Bottom # Mn AHOM CONSONANT SIGN MEDIAL LA
11724..11725 ; Bottom # Mn [2] AHOM VOWEL SIGN U..AHOM VOWEL SIGN UU
11728 ; Bottom # Mn AHOM VOWEL SIGN O
1182F..11832 ; Bottom # Mn [4] DOGRA VOWEL SIGN U..DOGRA VOWEL SIGN VOCALIC RR
11839..1183A ; Bottom # Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
11943 ; Bottom # Mn DIVES AKURU SIGN NUKTA
119D4..119D7 ; Bottom # Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
119E0 ; Bottom # Mn NANDINAGARI SIGN VIRAMA
11A02..11A03 ; Bottom # Mn [2] ZANABAZAR SQUARE VOWEL SIGN UE..ZANABAZAR SQUARE VOWEL SIGN U
11A0A ; Bottom # Mn ZANABAZAR SQUARE VOWEL LENGTH MARK
11A33..11A34 ; Bottom # Mn [2] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN VIRAMA
11A3B..11A3E ; Bottom # Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
11A52..11A53 ; Bottom # Mn [2] SOYOMBO VOWEL SIGN UE..SOYOMBO VOWEL SIGN U
11A59..11A5B ; Bottom # Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
11A8A..11A95 ; Bottom # Mn [12] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO FINAL CONSONANT SIGN -A
11C32..11C36 ; Bottom # Mn [5] BHAIKSUKI VOWEL SIGN U..BHAIKSUKI VOWEL SIGN VOCALIC L
11C3F ; Bottom # Mn BHAIKSUKI SIGN VIRAMA
11C92..11CA7 ; Bottom # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
11CAA..11CB0 ; Bottom # Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
11CB2 ; Bottom # Mn MARCHEN VOWEL SIGN U
11D36 ; Bottom # Mn MASARAM GONDI VOWEL SIGN VOCALIC R
11D42 ; Bottom # Mn MASARAM GONDI SIGN NUKTA
11D44 ; Bottom # Mn MASARAM GONDI SIGN HALANTA
11D47 ; Bottom # Mn MASARAM GONDI RA-KARA
11EF4 ; Bottom # Mn MAKASAR VOWEL SIGN U
11F38..11F3A ; Bottom # Mn [3] KAWI VOWEL SIGN U..KAWI VOWEL SIGN VOCALIC R
# Indic_Positional_Category=Top_And_Bottom
0C48 ; Top_And_Bottom # Mn TELUGU VOWEL SIGN AI
0F73 ; Top_And_Bottom # Mn TIBETAN VOWEL SIGN II
0F76..0F79 ; Top_And_Bottom # Mn [4] TIBETAN VOWEL SIGN VOCALIC R..TIBETAN VOWEL SIGN VOCALIC LL
0F81 ; Top_And_Bottom # Mn TIBETAN VOWEL SIGN REVERSED II
1B3C ; Top_And_Bottom # Mn BALINESE VOWEL SIGN LA LENGA
1112E..1112F ; Top_And_Bottom # Mn [2] CHAKMA VOWEL SIGN O..CHAKMA VOWEL SIGN AU
# Indic_Positional_Category=Top_And_Right
0AC9 ; Top_And_Right # Mc GUJARATI VOWEL SIGN CANDRA O
0B57 ; Top_And_Right # Mc ORIYA AU LENGTH MARK
0CC0 ; Top_And_Right # Mc KANNADA VOWEL SIGN II
0CC7..0CC8 ; Top_And_Right # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
0CCA..0CCB ; Top_And_Right # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
1925..1926 ; Top_And_Right # Mc [2] LIMBU VOWEL SIGN OO..LIMBU VOWEL SIGN AU
1B43 ; Top_And_Right # Mc BALINESE VOWEL SIGN PEPET TEDUNG
111BF ; Top_And_Right # Mc SHARADA VOWEL SIGN AU
11232..11233 ; Top_And_Right # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
# Indic_Positional_Category=Top_And_Left
0B48 ; Top_And_Left # Mc ORIYA VOWEL SIGN AI
0DDA ; Top_And_Left # Mc SINHALA VOWEL SIGN DIGA KOMBUVA
17BE ; Top_And_Left # Mc KHMER VOWEL SIGN OE
1C29 ; Top_And_Left # Mc LEPCHA VOWEL SIGN OO
114BB ; Top_And_Left # Mc TIRHUTA VOWEL SIGN AI
115B9 ; Top_And_Left # Mc SIDDHAM VOWEL SIGN AI
# Indic_Positional_Category=Top_And_Left_And_Right
0B4C ; Top_And_Left_And_Right # Mc ORIYA VOWEL SIGN AU
0DDD ; Top_And_Left_And_Right # Mc SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
17BF ; Top_And_Left_And_Right # Mc KHMER VOWEL SIGN YA
115BB ; Top_And_Left_And_Right # Mc SIDDHAM VOWEL SIGN AU
# Indic_Positional_Category=Bottom_And_Right
1B3B ; Bottom_And_Right # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
A9BE ; Bottom_And_Right # Mc JAVANESE CONSONANT SIGN PENGKAL
A9C0 ; Bottom_And_Right # Mc JAVANESE PANGKON
11942 ; Bottom_And_Right # Mc DIVES AKURU MEDIAL RA
# Indic_Positional_Category=Bottom_And_Left
A9BF ; Bottom_And_Left # Mc JAVANESE CONSONANT SIGN CAKRA
# Indic_Positional_Category=Top_And_Bottom_And_Right
1B3D ; Top_And_Bottom_And_Right # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
# Indic_Positional_Category=Top_And_Bottom_And_Left
103C ; Top_And_Bottom_And_Left # Mc MYANMAR CONSONANT SIGN MEDIAL RA
1171E ; Top_And_Bottom_And_Left # Mn AHOM CONSONANT SIGN MEDIAL RA
# Indic_Positional_Category=Overstruck
1CD4 ; Overstruck # Mn VEDIC SIGN YAJURVEDIC MIDLINE SVARITA
1CE2..1CE8 ; Overstruck # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
10A01 ; Overstruck # Mn KHAROSHTHI VOWEL SIGN I
10A06 ; Overstruck # Mn KHAROSHTHI VOWEL SIGN O
# EOF

1347
src/modules/punk/char/unicode15.1/IndicSyllabicCategory.txt

File diff suppressed because it is too large Load Diff

93
src/modules/punk/char/unicode15.1/Jamo.txt

@ -0,0 +1,93 @@
# Jamo-15.1.0.txt
# Date: 2023-01-05
# © 2023 Unicode®, Inc.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# This file defines the Jamo_Short_Name property.
#
# See Section 3.12 of The Unicode Standard, Version 15.0
# for more information.
#
# Each line contains two fields, separated by a semicolon.
#
# The first field gives the code point, in 4-digit hexadecimal
# form, of a conjoining jamo character that participates in the
# algorithmic determination of Hangul syllable character names.
# The second field gives the Jamo_Short_Name as a one-, two-,
# or three-character ASCII string (or in one case, for U+110B,
# the null string).
#
# #############################################################
1100; G # HANGUL CHOSEONG KIYEOK
1101; GG # HANGUL CHOSEONG SSANGKIYEOK
1102; N # HANGUL CHOSEONG NIEUN
1103; D # HANGUL CHOSEONG TIKEUT
1104; DD # HANGUL CHOSEONG SSANGTIKEUT
1105; R # HANGUL CHOSEONG RIEUL
1106; M # HANGUL CHOSEONG MIEUM
1107; B # HANGUL CHOSEONG PIEUP
1108; BB # HANGUL CHOSEONG SSANGPIEUP
1109; S # HANGUL CHOSEONG SIOS
110A; SS # HANGUL CHOSEONG SSANGSIOS
110B; # HANGUL CHOSEONG IEUNG
110C; J # HANGUL CHOSEONG CIEUC
110D; JJ # HANGUL CHOSEONG SSANGCIEUC
110E; C # HANGUL CHOSEONG CHIEUCH
110F; K # HANGUL CHOSEONG KHIEUKH
1110; T # HANGUL CHOSEONG THIEUTH
1111; P # HANGUL CHOSEONG PHIEUPH
1112; H # HANGUL CHOSEONG HIEUH
1161; A # HANGUL JUNGSEONG A
1162; AE # HANGUL JUNGSEONG AE
1163; YA # HANGUL JUNGSEONG YA
1164; YAE # HANGUL JUNGSEONG YAE
1165; EO # HANGUL JUNGSEONG EO
1166; E # HANGUL JUNGSEONG E
1167; YEO # HANGUL JUNGSEONG YEO
1168; YE # HANGUL JUNGSEONG YE
1169; O # HANGUL JUNGSEONG O
116A; WA # HANGUL JUNGSEONG WA
116B; WAE # HANGUL JUNGSEONG WAE
116C; OE # HANGUL JUNGSEONG OE
116D; YO # HANGUL JUNGSEONG YO
116E; U # HANGUL JUNGSEONG U
116F; WEO # HANGUL JUNGSEONG WEO
1170; WE # HANGUL JUNGSEONG WE
1171; WI # HANGUL JUNGSEONG WI
1172; YU # HANGUL JUNGSEONG YU
1173; EU # HANGUL JUNGSEONG EU
1174; YI # HANGUL JUNGSEONG YI
1175; I # HANGUL JUNGSEONG I
11A8; G # HANGUL JONGSEONG KIYEOK
11A9; GG # HANGUL JONGSEONG SSANGKIYEOK
11AA; GS # HANGUL JONGSEONG KIYEOK-SIOS
11AB; N # HANGUL JONGSEONG NIEUN
11AC; NJ # HANGUL JONGSEONG NIEUN-CIEUC
11AD; NH # HANGUL JONGSEONG NIEUN-HIEUH
11AE; D # HANGUL JONGSEONG TIKEUT
11AF; L # HANGUL JONGSEONG RIEUL
11B0; LG # HANGUL JONGSEONG RIEUL-KIYEOK
11B1; LM # HANGUL JONGSEONG RIEUL-MIEUM
11B2; LB # HANGUL JONGSEONG RIEUL-PIEUP
11B3; LS # HANGUL JONGSEONG RIEUL-SIOS
11B4; LT # HANGUL JONGSEONG RIEUL-THIEUTH
11B5; LP # HANGUL JONGSEONG RIEUL-PHIEUPH
11B6; LH # HANGUL JONGSEONG RIEUL-HIEUH
11B7; M # HANGUL JONGSEONG MIEUM
11B8; B # HANGUL JONGSEONG PIEUP
11B9; BS # HANGUL JONGSEONG PIEUP-SIOS
11BA; S # HANGUL JONGSEONG SIOS
11BB; SS # HANGUL JONGSEONG SSANGSIOS
11BC; NG # HANGUL JONGSEONG IEUNG
11BD; J # HANGUL JONGSEONG CIEUC
11BE; C # HANGUL JONGSEONG CHIEUCH
11BF; K # HANGUL JONGSEONG KHIEUKH
11C0; T # HANGUL JONGSEONG THIEUTH
11C1; P # HANGUL JONGSEONG PHIEUPH
11C2; H # HANGUL JONGSEONG HIEUH
# EOF

3608
src/modules/punk/char/unicode15.1/LineBreak.txt

File diff suppressed because it is too large Load Diff

570
src/modules/punk/char/unicode15.1/NameAliases.txt

@ -0,0 +1,570 @@
# NameAliases-15.1.0.txt
# Date: 2023-01-05
# © 2023 Unicode®, Inc.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# This file is a normative contributory data file in the
# Unicode Character Database.
#
# This file defines the formal name aliases for Unicode characters.
#
# For informative aliases, see NamesList.txt
#
# The formal name aliases are divided into five types, each with a distinct label.
#
# Type Labels:
#
# 1. correction
# Corrections for serious problems in the character names
# 2. control
# ISO 6429 names for C0 and C1 control functions, and other
# commonly occurring names for control codes
# 3. alternate
# A few widely used alternate names for format characters
# 4. figment
# Several documented labels for C1 control code points which
# were never actually approved in any standard
# 5. abbreviation
# Commonly occurring abbreviations (or acronyms) for control codes,
# format characters, spaces, and variation selectors
#
# The formal name aliases are part of the Unicode character namespace, which
# includes the character names and the names of named character sequences.
# The inclusion of ISO 6429 names and other commonly occurring names and
# abbreviations for control codes and format characters as formal name aliases
# is to help avoid name collisions between Unicode character names and the
# labels which commonly appear in text and/or in implementations such as regex, for
# control codes (which for historical reasons have no Unicode character name)
# or for format characters.
#
# For documentation, see NamesList.html and https://www.unicode.org/reports/tr44/
#
# FORMAT
#
# Each line has three fields, as described here:
#
# First field: Code point
# Second field: Alias
# Third field: Type
#
# The type labels used are defined above. As for property values, comparisons
# of type labels should ignore case.
#
# The type labels can be mapped to other strings for display, if desired.
#
# In case multiple aliases are assigned, additional aliases
# are provided on separate lines. Parsers of this data file should
# take note that the same code point can (and does) occur more than once.
#
# Note that currently the only instances of multiple aliases of the same
# type for a single code point are either of type "control" or "abbreviation".
# An alias of type "abbreviation" can, in principle, be added for any code
# point, although currently aliases of type "correction" do not have
# any additional aliases of type "abbreviation". Such relationships
# are not enforced by stability policies.
#
#-----------------------------------------------------------------
0000;NULL;control
0000;NUL;abbreviation
0001;START OF HEADING;control
0001;SOH;abbreviation
0002;START OF TEXT;control
0002;STX;abbreviation
0003;END OF TEXT;control
0003;ETX;abbreviation
0004;END OF TRANSMISSION;control
0004;EOT;abbreviation
0005;ENQUIRY;control
0005;ENQ;abbreviation
0006;ACKNOWLEDGE;control
0006;ACK;abbreviation
# Note that no formal name alias for the ISO 6429 "BELL" is
# provided for U+0007, because of the existing name collision
# with U+1F514 BELL.
0007;ALERT;control
0007;BEL;abbreviation
0008;BACKSPACE;control
0008;BS;abbreviation
0009;CHARACTER TABULATION;control
0009;HORIZONTAL TABULATION;control
0009;HT;abbreviation
0009;TAB;abbreviation
000A;LINE FEED;control
000A;NEW LINE;control
000A;END OF LINE;control
000A;LF;abbreviation
000A;NL;abbreviation
000A;EOL;abbreviation
000B;LINE TABULATION;control
000B;VERTICAL TABULATION;control
000B;VT;abbreviation
000C;FORM FEED;control
000C;FF;abbreviation
000D;CARRIAGE RETURN;control
000D;CR;abbreviation
000E;SHIFT OUT;control
000E;LOCKING-SHIFT ONE;control
000E;SO;abbreviation
000F;SHIFT IN;control
000F;LOCKING-SHIFT ZERO;control
000F;SI;abbreviation
0010;DATA LINK ESCAPE;control
0010;DLE;abbreviation
0011;DEVICE CONTROL ONE;control
0011;DC1;abbreviation
0012;DEVICE CONTROL TWO;control
0012;DC2;abbreviation
0013;DEVICE CONTROL THREE;control
0013;DC3;abbreviation
0014;DEVICE CONTROL FOUR;control
0014;DC4;abbreviation
0015;NEGATIVE ACKNOWLEDGE;control
0015;NAK;abbreviation
0016;SYNCHRONOUS IDLE;control
0016;SYN;abbreviation
0017;END OF TRANSMISSION BLOCK;control
0017;ETB;abbreviation
0018;CANCEL;control
0018;CAN;abbreviation
0019;END OF MEDIUM;control
0019;EOM;abbreviation
0019;EM;abbreviation
001A;SUBSTITUTE;control
001A;SUB;abbreviation
001B;ESCAPE;control
001B;ESC;abbreviation
001C;INFORMATION SEPARATOR FOUR;control
001C;FILE SEPARATOR;control
001C;FS;abbreviation
001D;INFORMATION SEPARATOR THREE;control
001D;GROUP SEPARATOR;control
001D;GS;abbreviation
001E;INFORMATION SEPARATOR TWO;control
001E;RECORD SEPARATOR;control
001E;RS;abbreviation
001F;INFORMATION SEPARATOR ONE;control
001F;UNIT SEPARATOR;control
001F;US;abbreviation
0020;SP;abbreviation
007F;DELETE;control
007F;DEL;abbreviation
# PADDING CHARACTER and HIGH OCTET PRESET represent
# architectural concepts initially proposed for early
# drafts of ISO/IEC 10646-1. They were never actually
# approved or standardized: hence their designation
# here as the "figment" type. Formal name aliases
# (and corresponding abbreviations) for these code
# points are included here because these names leaked
# out from the draft documents and were published in
# at least one RFC whose names for code points were
# implemented in Perl regex expressions.
0080;PADDING CHARACTER;figment
0080;PAD;abbreviation
0081;HIGH OCTET PRESET;figment
0081;HOP;abbreviation
0082;BREAK PERMITTED HERE;control
0082;BPH;abbreviation
0083;NO BREAK HERE;control
0083;NBH;abbreviation
0084;INDEX;control
0084;IND;abbreviation
0085;NEXT LINE;control
0085;NEL;abbreviation
0086;START OF SELECTED AREA;control
0086;SSA;abbreviation
0087;END OF SELECTED AREA;control
0087;ESA;abbreviation
0088;CHARACTER TABULATION SET;control
0088;HORIZONTAL TABULATION SET;control
0088;HTS;abbreviation
0089;CHARACTER TABULATION WITH JUSTIFICATION;control
0089;HORIZONTAL TABULATION WITH JUSTIFICATION;control
0089;HTJ;abbreviation
008A;LINE TABULATION SET;control
008A;VERTICAL TABULATION SET;control
008A;VTS;abbreviation
008B;PARTIAL LINE FORWARD;control
008B;PARTIAL LINE DOWN;control
008B;PLD;abbreviation
008C;PARTIAL LINE BACKWARD;control
008C;PARTIAL LINE UP;control
008C;PLU;abbreviation
008D;REVERSE LINE FEED;control
008D;REVERSE INDEX;control
008D;RI;abbreviation
008E;SINGLE SHIFT TWO;control
008E;SINGLE-SHIFT-2;control
008E;SS2;abbreviation
008F;SINGLE SHIFT THREE;control
008F;SINGLE-SHIFT-3;control
008F;SS3;abbreviation
0090;DEVICE CONTROL STRING;control
0090;DCS;abbreviation
0091;PRIVATE USE ONE;control
0091;PRIVATE USE-1;control
0091;PU1;abbreviation
0092;PRIVATE USE TWO;control
0092;PRIVATE USE-2;control
0092;PU2;abbreviation
0093;SET TRANSMIT STATE;control
0093;STS;abbreviation
0094;CANCEL CHARACTER;control
0094;CCH;abbreviation
0095;MESSAGE WAITING;control
0095;MW;abbreviation
0096;START OF GUARDED AREA;control
0096;START OF PROTECTED AREA;control
0096;SPA;abbreviation
0097;END OF GUARDED AREA;control
0097;END OF PROTECTED AREA;control
0097;EPA;abbreviation
0098;START OF STRING;control
0098;SOS;abbreviation
# SINGLE GRAPHIC CHARACTER INTRODUCER is another
# architectural concept from early drafts of ISO/IEC 10646-1
# which was never approved and standardized.
0099;SINGLE GRAPHIC CHARACTER INTRODUCER;figment
0099;SGC;abbreviation
009A;SINGLE CHARACTER INTRODUCER;control
009A;SCI;abbreviation
009B;CONTROL SEQUENCE INTRODUCER;control
009B;CSI;abbreviation
009C;STRING TERMINATOR;control
009C;ST;abbreviation
009D;OPERATING SYSTEM COMMAND;control
009D;OSC;abbreviation
009E;PRIVACY MESSAGE;control
009E;PM;abbreviation
009F;APPLICATION PROGRAM COMMAND;control
009F;APC;abbreviation
00A0;NBSP;abbreviation
00AD;SHY;abbreviation
01A2;LATIN CAPITAL LETTER GHA;correction
01A3;LATIN SMALL LETTER GHA;correction
034F;CGJ;abbreviation
0616;ARABIC SMALL HIGH LIGATURE ALEF WITH YEH BARREE;correction
061C;ALM;abbreviation
0709;SYRIAC SUBLINEAR COLON SKEWED LEFT;correction
0CDE;KANNADA LETTER LLLA;correction
0E9D;LAO LETTER FO FON;correction
0E9F;LAO LETTER FO FAY;correction
0EA3;LAO LETTER RO;correction
0EA5;LAO LETTER LO;correction
0FD0;TIBETAN MARK BKA- SHOG GI MGO RGYAN;correction
11EC;HANGUL JONGSEONG YESIEUNG-KIYEOK;correction
11ED;HANGUL JONGSEONG YESIEUNG-SSANGKIYEOK;correction
11EE;HANGUL JONGSEONG SSANGYESIEUNG;correction
11EF;HANGUL JONGSEONG YESIEUNG-KHIEUKH;correction
180B;FVS1;abbreviation
180C;FVS2;abbreviation
180D;FVS3;abbreviation
180E;MVS;abbreviation
180F;FVS4;abbreviation
1BBD;SUNDANESE LETTER ARCHAIC I;correction
200B;ZWSP;abbreviation
200C;ZWNJ;abbreviation
200D;ZWJ;abbreviation
200E;LRM;abbreviation
200F;RLM;abbreviation
202A;LRE;abbreviation
202B;RLE;abbreviation
202C;PDF;abbreviation
202D;LRO;abbreviation
202E;RLO;abbreviation
202F;NNBSP;abbreviation
205F;MMSP;abbreviation
2060;WJ;abbreviation
2066;LRI;abbreviation
2067;RLI;abbreviation
2068;FSI;abbreviation
2069;PDI;abbreviation
2118;WEIERSTRASS ELLIPTIC FUNCTION;correction
2448;MICR ON US SYMBOL;correction
2449;MICR DASH SYMBOL;correction
2B7A;LEFTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE VERTICAL STROKE;correction
2B7C;RIGHTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE VERTICAL STROKE;correction
A015;YI SYLLABLE ITERATION MARK;correction
AA6E;MYANMAR LETTER KHAMTI LLA;correction
FE00;VS1;abbreviation
FE01;VS2;abbreviation
FE02;VS3;abbreviation
FE03;VS4;abbreviation
FE04;VS5;abbreviation
FE05;VS6;abbreviation
FE06;VS7;abbreviation
FE07;VS8;abbreviation
FE08;VS9;abbreviation
FE09;VS10;abbreviation
FE0A;VS11;abbreviation
FE0B;VS12;abbreviation
FE0C;VS13;abbreviation
FE0D;VS14;abbreviation
FE0E;VS15;abbreviation
FE0F;VS16;abbreviation
FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET;correction
FEFF;BYTE ORDER MARK;alternate
FEFF;BOM;abbreviation
FEFF;ZWNBSP;abbreviation
122D4;CUNEIFORM SIGN NU11 TENU;correction
122D5;CUNEIFORM SIGN NU11 OVER NU11 BUR OVER BUR;correction
16E56;MEDEFAIDRIN CAPITAL LETTER H;correction
16E57;MEDEFAIDRIN CAPITAL LETTER NG;correction
16E76;MEDEFAIDRIN SMALL LETTER H;correction
16E77;MEDEFAIDRIN SMALL LETTER NG;correction
1B001;HENTAIGANA LETTER E-1;correction
1D0C5;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS;correction
E0100;VS17;abbreviation
E0101;VS18;abbreviation
E0102;VS19;abbreviation
E0103;VS20;abbreviation
E0104;VS21;abbreviation
E0105;VS22;abbreviation
E0106;VS23;abbreviation
E0107;VS24;abbreviation
E0108;VS25;abbreviation
E0109;VS26;abbreviation
E010A;VS27;abbreviation
E010B;VS28;abbreviation
E010C;VS29;abbreviation
E010D;VS30;abbreviation
E010E;VS31;abbreviation
E010F;VS32;abbreviation
E0110;VS33;abbreviation
E0111;VS34;abbreviation
E0112;VS35;abbreviation
E0113;VS36;abbreviation
E0114;VS37;abbreviation
E0115;VS38;abbreviation
E0116;VS39;abbreviation
E0117;VS40;abbreviation
E0118;VS41;abbreviation
E0119;VS42;abbreviation
E011A;VS43;abbreviation
E011B;VS44;abbreviation
E011C;VS45;abbreviation
E011D;VS46;abbreviation
E011E;VS47;abbreviation
E011F;VS48;abbreviation
E0120;VS49;abbreviation
E0121;VS50;abbreviation
E0122;VS51;abbreviation
E0123;VS52;abbreviation
E0124;VS53;abbreviation
E0125;VS54;abbreviation
E0126;VS55;abbreviation
E0127;VS56;abbreviation
E0128;VS57;abbreviation
E0129;VS58;abbreviation
E012A;VS59;abbreviation
E012B;VS60;abbreviation
E012C;VS61;abbreviation
E012D;VS62;abbreviation
E012E;VS63;abbreviation
E012F;VS64;abbreviation
E0130;VS65;abbreviation
E0131;VS66;abbreviation
E0132;VS67;abbreviation
E0133;VS68;abbreviation
E0134;VS69;abbreviation
E0135;VS70;abbreviation
E0136;VS71;abbreviation
E0137;VS72;abbreviation
E0138;VS73;abbreviation
E0139;VS74;abbreviation
E013A;VS75;abbreviation
E013B;VS76;abbreviation
E013C;VS77;abbreviation
E013D;VS78;abbreviation
E013E;VS79;abbreviation
E013F;VS80;abbreviation
E0140;VS81;abbreviation
E0141;VS82;abbreviation
E0142;VS83;abbreviation
E0143;VS84;abbreviation
E0144;VS85;abbreviation
E0145;VS86;abbreviation
E0146;VS87;abbreviation
E0147;VS88;abbreviation
E0148;VS89;abbreviation
E0149;VS90;abbreviation
E014A;VS91;abbreviation
E014B;VS92;abbreviation
E014C;VS93;abbreviation
E014D;VS94;abbreviation
E014E;VS95;abbreviation
E014F;VS96;abbreviation
E0150;VS97;abbreviation
E0151;VS98;abbreviation
E0152;VS99;abbreviation
E0153;VS100;abbreviation
E0154;VS101;abbreviation
E0155;VS102;abbreviation
E0156;VS103;abbreviation
E0157;VS104;abbreviation
E0158;VS105;abbreviation
E0159;VS106;abbreviation
E015A;VS107;abbreviation
E015B;VS108;abbreviation
E015C;VS109;abbreviation
E015D;VS110;abbreviation
E015E;VS111;abbreviation
E015F;VS112;abbreviation
E0160;VS113;abbreviation
E0161;VS114;abbreviation
E0162;VS115;abbreviation
E0163;VS116;abbreviation
E0164;VS117;abbreviation
E0165;VS118;abbreviation
E0166;VS119;abbreviation
E0167;VS120;abbreviation
E0168;VS121;abbreviation
E0169;VS122;abbreviation
E016A;VS123;abbreviation
E016B;VS124;abbreviation
E016C;VS125;abbreviation
E016D;VS126;abbreviation
E016E;VS127;abbreviation
E016F;VS128;abbreviation
E0170;VS129;abbreviation
E0171;VS130;abbreviation
E0172;VS131;abbreviation
E0173;VS132;abbreviation
E0174;VS133;abbreviation
E0175;VS134;abbreviation
E0176;VS135;abbreviation
E0177;VS136;abbreviation
E0178;VS137;abbreviation
E0179;VS138;abbreviation
E017A;VS139;abbreviation
E017B;VS140;abbreviation
E017C;VS141;abbreviation
E017D;VS142;abbreviation
E017E;VS143;abbreviation
E017F;VS144;abbreviation
E0180;VS145;abbreviation
E0181;VS146;abbreviation
E0182;VS147;abbreviation
E0183;VS148;abbreviation
E0184;VS149;abbreviation
E0185;VS150;abbreviation
E0186;VS151;abbreviation
E0187;VS152;abbreviation
E0188;VS153;abbreviation
E0189;VS154;abbreviation
E018A;VS155;abbreviation
E018B;VS156;abbreviation
E018C;VS157;abbreviation
E018D;VS158;abbreviation
E018E;VS159;abbreviation
E018F;VS160;abbreviation
E0190;VS161;abbreviation
E0191;VS162;abbreviation
E0192;VS163;abbreviation
E0193;VS164;abbreviation
E0194;VS165;abbreviation
E0195;VS166;abbreviation
E0196;VS167;abbreviation
E0197;VS168;abbreviation
E0198;VS169;abbreviation
E0199;VS170;abbreviation
E019A;VS171;abbreviation
E019B;VS172;abbreviation
E019C;VS173;abbreviation
E019D;VS174;abbreviation
E019E;VS175;abbreviation
E019F;VS176;abbreviation
E01A0;VS177;abbreviation
E01A1;VS178;abbreviation
E01A2;VS179;abbreviation
E01A3;VS180;abbreviation
E01A4;VS181;abbreviation
E01A5;VS182;abbreviation
E01A6;VS183;abbreviation
E01A7;VS184;abbreviation
E01A8;VS185;abbreviation
E01A9;VS186;abbreviation
E01AA;VS187;abbreviation
E01AB;VS188;abbreviation
E01AC;VS189;abbreviation
E01AD;VS190;abbreviation
E01AE;VS191;abbreviation
E01AF;VS192;abbreviation
E01B0;VS193;abbreviation
E01B1;VS194;abbreviation
E01B2;VS195;abbreviation
E01B3;VS196;abbreviation
E01B4;VS197;abbreviation
E01B5;VS198;abbreviation
E01B6;VS199;abbreviation
E01B7;VS200;abbreviation
E01B8;VS201;abbreviation
E01B9;VS202;abbreviation
E01BA;VS203;abbreviation
E01BB;VS204;abbreviation
E01BC;VS205;abbreviation
E01BD;VS206;abbreviation
E01BE;VS207;abbreviation
E01BF;VS208;abbreviation
E01C0;VS209;abbreviation
E01C1;VS210;abbreviation
E01C2;VS211;abbreviation
E01C3;VS212;abbreviation
E01C4;VS213;abbreviation
E01C5;VS214;abbreviation
E01C6;VS215;abbreviation
E01C7;VS216;abbreviation
E01C8;VS217;abbreviation
E01C9;VS218;abbreviation
E01CA;VS219;abbreviation
E01CB;VS220;abbreviation
E01CC;VS221;abbreviation
E01CD;VS222;abbreviation
E01CE;VS223;abbreviation
E01CF;VS224;abbreviation
E01D0;VS225;abbreviation
E01D1;VS226;abbreviation
E01D2;VS227;abbreviation
E01D3;VS228;abbreviation
E01D4;VS229;abbreviation
E01D5;VS230;abbreviation
E01D6;VS231;abbreviation
E01D7;VS232;abbreviation
E01D8;VS233;abbreviation
E01D9;VS234;abbreviation
E01DA;VS235;abbreviation
E01DB;VS236;abbreviation
E01DC;VS237;abbreviation
E01DD;VS238;abbreviation
E01DE;VS239;abbreviation
E01DF;VS240;abbreviation
E01E0;VS241;abbreviation
E01E1;VS242;abbreviation
E01E2;VS243;abbreviation
E01E3;VS244;abbreviation
E01E4;VS245;abbreviation
E01E5;VS246;abbreviation
E01E6;VS247;abbreviation
E01E7;VS248;abbreviation
E01E8;VS249;abbreviation
E01E9;VS250;abbreviation
E01EA;VS251;abbreviation
E01EB;VS252;abbreviation
E01EC;VS253;abbreviation
E01ED;VS254;abbreviation
E01EE;VS255;abbreviation
E01EF;VS256;abbreviation
# EOF

612
src/modules/punk/char/unicode15.1/NamedSequences.txt

@ -0,0 +1,612 @@
# NamedSequences-15.1.0.txt
# Date: 2023-01-05
# © 2023 Unicode®, Inc.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# Unicode Named Character Sequences
#
# This file is a normative contributory data file in the Unicode
# Character Database.
#
# Format:
# Name of Sequence; Code Point Sequence for USI
#
# Code point sequences in the Unicode Character Database
# use spaces as delimiters. The corresponding format for a
# UCS Sequence Identifier (USI) in ISO/IEC 10646 uses
# comma delimitation and angle brackets. Thus, a Unicode
# named character sequence of the form:
#
# EXAMPLE NAME;1000 1001 1002
#
# in this data file, would correspond to an ISO/IEC 10646 USI
# as follows:
#
# <1000, 1001, 1002>
#
# For more information, see UAX #34: Unicode Named Character
# Sequences, at https://www.unicode.org/reports/tr34/
#
# Note: The order of entries in this file is not significant.
# However, entries are generally in script order corresponding
# to block order in the Unicode Standard, to make it easier
# to find entries in the list.
# ================================================
# Named keycap sequences for telephone keypad (used for emoji)
# Provisional, 2015-05-05
# FE0F added to the sequences, 2016-05-11
# Approved 2017-05-12
KEYCAP NUMBER SIGN;0023 FE0F 20E3
KEYCAP ASTERISK;002A FE0F 20E3
KEYCAP DIGIT ZERO;0030 FE0F 20E3
KEYCAP DIGIT ONE;0031 FE0F 20E3
KEYCAP DIGIT TWO;0032 FE0F 20E3
KEYCAP DIGIT THREE;0033 FE0F 20E3
KEYCAP DIGIT FOUR;0034 FE0F 20E3
KEYCAP DIGIT FIVE;0035 FE0F 20E3
KEYCAP DIGIT SIX;0036 FE0F 20E3
KEYCAP DIGIT SEVEN;0037 FE0F 20E3
KEYCAP DIGIT EIGHT;0038 FE0F 20E3
KEYCAP DIGIT NINE;0039 FE0F 20E3
# Latin letter plus accent combinations.
# These are part of the original set of approved named sequences
# for Unicode 4.1. 2005.
# Subgroupings of this original set are identified here by
# purpose and source.
# Subset 1: Originally requested for a Latin orthography
# of Hausa. See WG2 N1143 and UTC/1996-005. (6 total)
LATIN CAPITAL LETTER A WITH MACRON AND GRAVE;0100 0300
LATIN SMALL LETTER A WITH MACRON AND GRAVE;0101 0300
LATIN CAPITAL LETTER I WITH MACRON AND GRAVE;012A 0300
LATIN SMALL LETTER I WITH MACRON AND GRAVE;012B 0300
LATIN CAPITAL LETTER U WITH MACRON AND GRAVE;016A 0300
LATIN SMALL LETTER U WITH MACRON AND GRAVE;016B 0300
# Subset 2: Originally requested for a Latin orthography
# of Yoruba. See WG2 N1143 and UTC/1996-005. (14 total)
LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW;0045 0329
LATIN SMALL LETTER E WITH VERTICAL LINE BELOW;0065 0329
LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW AND GRAVE;00C8 0329
LATIN SMALL LETTER E WITH VERTICAL LINE BELOW AND GRAVE;00E8 0329
LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW AND ACUTE;00C9 0329
LATIN SMALL LETTER E WITH VERTICAL LINE BELOW AND ACUTE;00E9 0329
LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW;004F 0329
LATIN SMALL LETTER O WITH VERTICAL LINE BELOW;006F 0329
LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW AND GRAVE;00D2 0329
LATIN SMALL LETTER O WITH VERTICAL LINE BELOW AND GRAVE;00F2 0329
LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW AND ACUTE;00D3 0329
LATIN SMALL LETTER O WITH VERTICAL LINE BELOW AND ACUTE;00F3 0329
LATIN CAPITAL LETTER S WITH VERTICAL LINE BELOW;0053 0329
LATIN SMALL LETTER S WITH VERTICAL LINE BELOW;0073 0329
# Subset 3: Originally requested for Pinyin forms noted
# in HKSCS. See L2/02-423 and WG2 N2513. (4 total)
LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND MACRON;00CA 0304
LATIN SMALL LETTER E WITH CIRCUMFLEX AND MACRON;00EA 0304
LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND CARON;00CA 030C
LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON;00EA 030C
# Subset 4: Prominent use cases pulled from examples
# for Lithuanian and Tagalog in
# Unicode 4.0 and early drafts of UAX #34. (2 total)
LATIN SMALL LETTER I WITH DOT ABOVE AND ACUTE;0069 0307 0301
LATIN SMALL LETTER NG WITH TILDE ABOVE;006E 0360 0067
# Additions for Lithuanian.
# Provisional 2006-05-18, Approved 2007-10-19
LATIN CAPITAL LETTER A WITH OGONEK AND ACUTE;0104 0301
LATIN SMALL LETTER A WITH OGONEK AND ACUTE;0105 0301
LATIN CAPITAL LETTER A WITH OGONEK AND TILDE;0104 0303
LATIN SMALL LETTER A WITH OGONEK AND TILDE;0105 0303
LATIN CAPITAL LETTER E WITH OGONEK AND ACUTE;0118 0301
LATIN SMALL LETTER E WITH OGONEK AND ACUTE;0119 0301
LATIN CAPITAL LETTER E WITH OGONEK AND TILDE;0118 0303
LATIN SMALL LETTER E WITH OGONEK AND TILDE;0119 0303
LATIN CAPITAL LETTER E WITH DOT ABOVE AND ACUTE;0116 0301
LATIN SMALL LETTER E WITH DOT ABOVE AND ACUTE;0117 0301
LATIN CAPITAL LETTER E WITH DOT ABOVE AND TILDE;0116 0303
LATIN SMALL LETTER E WITH DOT ABOVE AND TILDE;0117 0303
LATIN SMALL LETTER I WITH DOT ABOVE AND GRAVE;0069 0307 0300
LATIN SMALL LETTER I WITH DOT ABOVE AND TILDE;0069 0307 0303
LATIN CAPITAL LETTER I WITH OGONEK AND ACUTE;012E 0301
LATIN SMALL LETTER I WITH OGONEK AND DOT ABOVE AND ACUTE;012F 0307 0301
LATIN CAPITAL LETTER I WITH OGONEK AND TILDE;012E 0303
LATIN SMALL LETTER I WITH OGONEK AND DOT ABOVE AND TILDE;012F 0307 0303
LATIN CAPITAL LETTER J WITH TILDE;004A 0303
LATIN SMALL LETTER J WITH DOT ABOVE AND TILDE;006A 0307 0303
LATIN CAPITAL LETTER L WITH TILDE;004C 0303
LATIN SMALL LETTER L WITH TILDE;006C 0303
LATIN CAPITAL LETTER M WITH TILDE;004D 0303
LATIN SMALL LETTER M WITH TILDE;006D 0303
LATIN CAPITAL LETTER R WITH TILDE;0052 0303
LATIN SMALL LETTER R WITH TILDE;0072 0303
LATIN CAPITAL LETTER U WITH OGONEK AND ACUTE;0172 0301
LATIN SMALL LETTER U WITH OGONEK AND ACUTE;0173 0301
LATIN CAPITAL LETTER U WITH OGONEK AND TILDE;0172 0303
LATIN SMALL LETTER U WITH OGONEK AND TILDE;0173 0303
LATIN CAPITAL LETTER U WITH MACRON AND ACUTE;016A 0301
LATIN SMALL LETTER U WITH MACRON AND ACUTE;016B 0301
LATIN CAPITAL LETTER U WITH MACRON AND TILDE;016A 0303
LATIN SMALL LETTER U WITH MACRON AND TILDE;016B 0303
# Entries for JIS X 0213 compatibility mapping.
# Provisional 2008-11-07, Approved 2010-05-14
LATIN SMALL LETTER AE WITH GRAVE;00E6 0300
LATIN SMALL LETTER OPEN O WITH GRAVE;0254 0300
LATIN SMALL LETTER OPEN O WITH ACUTE;0254 0301
LATIN SMALL LETTER TURNED V WITH GRAVE;028C 0300
LATIN SMALL LETTER TURNED V WITH ACUTE;028C 0301
LATIN SMALL LETTER SCHWA WITH GRAVE;0259 0300
LATIN SMALL LETTER SCHWA WITH ACUTE;0259 0301
LATIN SMALL LETTER HOOKED SCHWA WITH GRAVE;025A 0300
LATIN SMALL LETTER HOOKED SCHWA WITH ACUTE;025A 0301
# Entries for Uyghur and Chagatai.
# Provisional N/A, Approved 2012-11-08
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH ALEF;0626 0627
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH WAW;0626 0648
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA;0626 0649
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH OE;0626 06C6
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH U;0626 06C7
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH YU;0626 06C8
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH E;0626 06D0
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH AE;0626 06D5
ARABIC SEQUENCE NOON WITH KEHEH;0646 06A9
# Entries that correspond to Indic characters with nuktas
# that are also listed in CompositionExclusions.txt.
# These characters decompose for normalized text, even
# in NFC. Having named sequences for these helps in
# certain specifications, including Label Generation Rules (LGR)
# for Internationalized Domain Names (IDN).
#
# Provisional 2020-01-16, Approved 2021-07-27
DEVANAGARI SEQUENCE FOR LETTER QA; 0915 093C
DEVANAGARI SEQUENCE FOR LETTER KHHA; 0916 093C
DEVANAGARI SEQUENCE FOR LETTER GHHA; 0917 093C
DEVANAGARI SEQUENCE FOR LETTER ZA; 091C 093C
DEVANAGARI SEQUENCE FOR LETTER DDDHA; 0921 093C
DEVANAGARI SEQUENCE FOR LETTER RHA; 0922 093C
DEVANAGARI SEQUENCE FOR LETTER FA; 092B 093C
DEVANAGARI SEQUENCE FOR LETTER YYA; 092F 093C
BENGALI SEQUENCE FOR LETTER RRA; 09A1 09BC
BENGALI SEQUENCE FOR LETTER RHA; 09A2 09BC
BENGALI SEQUENCE FOR LETTER YYA; 09AF 09BC
GURMUKHI SEQUENCE FOR LETTER LLA; 0A32 0A3C
GURMUKHI SEQUENCE FOR LETTER SHA; 0A38 0A3C
GURMUKHI SEQUENCE FOR LETTER KHHA; 0A16 0A3C
GURMUKHI SEQUENCE FOR LETTER GHHA; 0A17 0A3C
GURMUKHI SEQUENCE FOR LETTER ZA; 0A1C 0A3C
GURMUKHI SEQUENCE FOR LETTER FA; 0A2B 0A3C
ORIYA SEQUENCE FOR LETTER RRA; 0B21 0B3C
ORIYA SEQUENCE FOR LETTER RHA; 0B22 0B3C
# Entry for a Bangla entity.
# Provisional 2009-08-10, Approved 2010-05-14
#
# Note that this same sequence is also used for the ASSAMESE LETTER KSSA.
BENGALI LETTER KHINYA;0995 09CD 09B7
# Additions for Tamil.
# Provisional 2008-02-08, Approved 2009-08-14
#
# A visual display of the Tamil named character sequences is available
# in the documentation for the Unicode Standard. See Section 12.6, Tamil in
# https://www.unicode.org/versions/latest/
TAMIL CONSONANT K; 0B95 0BCD
TAMIL CONSONANT NG; 0B99 0BCD
TAMIL CONSONANT C; 0B9A 0BCD
TAMIL CONSONANT NY; 0B9E 0BCD
TAMIL CONSONANT TT; 0B9F 0BCD
TAMIL CONSONANT NN; 0BA3 0BCD
TAMIL CONSONANT T; 0BA4 0BCD
TAMIL CONSONANT N; 0BA8 0BCD
TAMIL CONSONANT P; 0BAA 0BCD
TAMIL CONSONANT M; 0BAE 0BCD
TAMIL CONSONANT Y; 0BAF 0BCD
TAMIL CONSONANT R; 0BB0 0BCD
TAMIL CONSONANT L; 0BB2 0BCD
TAMIL CONSONANT V; 0BB5 0BCD
TAMIL CONSONANT LLL;0BB4 0BCD
TAMIL CONSONANT LL; 0BB3 0BCD
TAMIL CONSONANT RR; 0BB1 0BCD
TAMIL CONSONANT NNN;0BA9 0BCD
TAMIL CONSONANT J; 0B9C 0BCD
TAMIL CONSONANT SH; 0BB6 0BCD
TAMIL CONSONANT SS; 0BB7 0BCD
TAMIL CONSONANT S; 0BB8 0BCD
TAMIL CONSONANT H; 0BB9 0BCD
TAMIL CONSONANT KSS;0B95 0BCD 0BB7 0BCD
TAMIL SYLLABLE KAA; 0B95 0BBE
TAMIL SYLLABLE KI; 0B95 0BBF
TAMIL SYLLABLE KII; 0B95 0BC0
TAMIL SYLLABLE KU; 0B95 0BC1
TAMIL SYLLABLE KUU; 0B95 0BC2
TAMIL SYLLABLE KE; 0B95 0BC6
TAMIL SYLLABLE KEE; 0B95 0BC7
TAMIL SYLLABLE KAI; 0B95 0BC8
TAMIL SYLLABLE KO; 0B95 0BCA
TAMIL SYLLABLE KOO; 0B95 0BCB
TAMIL SYLLABLE KAU; 0B95 0BCC
TAMIL SYLLABLE NGAA; 0B99 0BBE
TAMIL SYLLABLE NGI; 0B99 0BBF
TAMIL SYLLABLE NGII; 0B99 0BC0
TAMIL SYLLABLE NGU; 0B99 0BC1
TAMIL SYLLABLE NGUU; 0B99 0BC2
TAMIL SYLLABLE NGE; 0B99 0BC6
TAMIL SYLLABLE NGEE; 0B99 0BC7
TAMIL SYLLABLE NGAI; 0B99 0BC8
TAMIL SYLLABLE NGO; 0B99 0BCA
TAMIL SYLLABLE NGOO; 0B99 0BCB
TAMIL SYLLABLE NGAU; 0B99 0BCC
TAMIL SYLLABLE CAA; 0B9A 0BBE
TAMIL SYLLABLE CI; 0B9A 0BBF
TAMIL SYLLABLE CII; 0B9A 0BC0
TAMIL SYLLABLE CU; 0B9A 0BC1
TAMIL SYLLABLE CUU; 0B9A 0BC2
TAMIL SYLLABLE CE; 0B9A 0BC6
TAMIL SYLLABLE CEE; 0B9A 0BC7
TAMIL SYLLABLE CAI; 0B9A 0BC8
TAMIL SYLLABLE CO; 0B9A 0BCA
TAMIL SYLLABLE COO; 0B9A 0BCB
TAMIL SYLLABLE CAU; 0B9A 0BCC
TAMIL SYLLABLE NYAA; 0B9E 0BBE
TAMIL SYLLABLE NYI; 0B9E 0BBF
TAMIL SYLLABLE NYII; 0B9E 0BC0
TAMIL SYLLABLE NYU; 0B9E 0BC1
TAMIL SYLLABLE NYUU; 0B9E 0BC2
TAMIL SYLLABLE NYE; 0B9E 0BC6
TAMIL SYLLABLE NYEE; 0B9E 0BC7
TAMIL SYLLABLE NYAI; 0B9E 0BC8
TAMIL SYLLABLE NYO; 0B9E 0BCA
TAMIL SYLLABLE NYOO; 0B9E 0BCB
TAMIL SYLLABLE NYAU; 0B9E 0BCC
TAMIL SYLLABLE TTAA; 0B9F 0BBE
TAMIL SYLLABLE TTI; 0B9F 0BBF
TAMIL SYLLABLE TTII; 0B9F 0BC0
TAMIL SYLLABLE TTU; 0B9F 0BC1
TAMIL SYLLABLE TTUU; 0B9F 0BC2
TAMIL SYLLABLE TTE; 0B9F 0BC6
TAMIL SYLLABLE TTEE; 0B9F 0BC7
TAMIL SYLLABLE TTAI; 0B9F 0BC8
TAMIL SYLLABLE TTO; 0B9F 0BCA
TAMIL SYLLABLE TTOO; 0B9F 0BCB
TAMIL SYLLABLE TTAU; 0B9F 0BCC
TAMIL SYLLABLE NNAA; 0BA3 0BBE
TAMIL SYLLABLE NNI; 0BA3 0BBF
TAMIL SYLLABLE NNII; 0BA3 0BC0
TAMIL SYLLABLE NNU; 0BA3 0BC1
TAMIL SYLLABLE NNUU; 0BA3 0BC2
TAMIL SYLLABLE NNE; 0BA3 0BC6
TAMIL SYLLABLE NNEE; 0BA3 0BC7
TAMIL SYLLABLE NNAI; 0BA3 0BC8
TAMIL SYLLABLE NNO; 0BA3 0BCA
TAMIL SYLLABLE NNOO; 0BA3 0BCB
TAMIL SYLLABLE NNAU; 0BA3 0BCC
TAMIL SYLLABLE TAA; 0BA4 0BBE
TAMIL SYLLABLE TI; 0BA4 0BBF
TAMIL SYLLABLE TII; 0BA4 0BC0
TAMIL SYLLABLE TU; 0BA4 0BC1
TAMIL SYLLABLE TUU; 0BA4 0BC2
TAMIL SYLLABLE TE; 0BA4 0BC6
TAMIL SYLLABLE TEE; 0BA4 0BC7
TAMIL SYLLABLE TAI; 0BA4 0BC8
TAMIL SYLLABLE TO; 0BA4 0BCA
TAMIL SYLLABLE TOO; 0BA4 0BCB
TAMIL SYLLABLE TAU; 0BA4 0BCC
TAMIL SYLLABLE NAA; 0BA8 0BBE
TAMIL SYLLABLE NI; 0BA8 0BBF
TAMIL SYLLABLE NII; 0BA8 0BC0
TAMIL SYLLABLE NU; 0BA8 0BC1
TAMIL SYLLABLE NUU; 0BA8 0BC2
TAMIL SYLLABLE NE; 0BA8 0BC6
TAMIL SYLLABLE NEE; 0BA8 0BC7
TAMIL SYLLABLE NAI; 0BA8 0BC8
TAMIL SYLLABLE NO; 0BA8 0BCA
TAMIL SYLLABLE NOO; 0BA8 0BCB
TAMIL SYLLABLE NAU; 0BA8 0BCC
TAMIL SYLLABLE PAA; 0BAA 0BBE
TAMIL SYLLABLE PI; 0BAA 0BBF
TAMIL SYLLABLE PII; 0BAA 0BC0
TAMIL SYLLABLE PU; 0BAA 0BC1
TAMIL SYLLABLE PUU; 0BAA 0BC2
TAMIL SYLLABLE PE; 0BAA 0BC6
TAMIL SYLLABLE PEE; 0BAA 0BC7
TAMIL SYLLABLE PAI; 0BAA 0BC8
TAMIL SYLLABLE PO; 0BAA 0BCA
TAMIL SYLLABLE POO; 0BAA 0BCB
TAMIL SYLLABLE PAU; 0BAA 0BCC
TAMIL SYLLABLE MAA; 0BAE 0BBE
TAMIL SYLLABLE MI; 0BAE 0BBF
TAMIL SYLLABLE MII; 0BAE 0BC0
TAMIL SYLLABLE MU; 0BAE 0BC1
TAMIL SYLLABLE MUU; 0BAE 0BC2
TAMIL SYLLABLE ME; 0BAE 0BC6
TAMIL SYLLABLE MEE; 0BAE 0BC7
TAMIL SYLLABLE MAI; 0BAE 0BC8
TAMIL SYLLABLE MO; 0BAE 0BCA
TAMIL SYLLABLE MOO; 0BAE 0BCB
TAMIL SYLLABLE MAU; 0BAE 0BCC
TAMIL SYLLABLE YAA; 0BAF 0BBE
TAMIL SYLLABLE YI; 0BAF 0BBF
TAMIL SYLLABLE YII; 0BAF 0BC0
TAMIL SYLLABLE YU; 0BAF 0BC1
TAMIL SYLLABLE YUU; 0BAF 0BC2
TAMIL SYLLABLE YE; 0BAF 0BC6
TAMIL SYLLABLE YEE; 0BAF 0BC7
TAMIL SYLLABLE YAI; 0BAF 0BC8
TAMIL SYLLABLE YO; 0BAF 0BCA
TAMIL SYLLABLE YOO; 0BAF 0BCB
TAMIL SYLLABLE YAU; 0BAF 0BCC
TAMIL SYLLABLE RAA; 0BB0 0BBE
TAMIL SYLLABLE RI; 0BB0 0BBF
TAMIL SYLLABLE RII; 0BB0 0BC0
TAMIL SYLLABLE RU; 0BB0 0BC1
TAMIL SYLLABLE RUU; 0BB0 0BC2
TAMIL SYLLABLE RE; 0BB0 0BC6
TAMIL SYLLABLE REE; 0BB0 0BC7
TAMIL SYLLABLE RAI; 0BB0 0BC8
TAMIL SYLLABLE RO; 0BB0 0BCA
TAMIL SYLLABLE ROO; 0BB0 0BCB
TAMIL SYLLABLE RAU; 0BB0 0BCC
TAMIL SYLLABLE LAA; 0BB2 0BBE
TAMIL SYLLABLE LI; 0BB2 0BBF
TAMIL SYLLABLE LII; 0BB2 0BC0
TAMIL SYLLABLE LU; 0BB2 0BC1
TAMIL SYLLABLE LUU; 0BB2 0BC2
TAMIL SYLLABLE LE; 0BB2 0BC6
TAMIL SYLLABLE LEE; 0BB2 0BC7
TAMIL SYLLABLE LAI; 0BB2 0BC8
TAMIL SYLLABLE LO; 0BB2 0BCA
TAMIL SYLLABLE LOO; 0BB2 0BCB
TAMIL SYLLABLE LAU; 0BB2 0BCC
TAMIL SYLLABLE VAA; 0BB5 0BBE
TAMIL SYLLABLE VI; 0BB5 0BBF
TAMIL SYLLABLE VII; 0BB5 0BC0
TAMIL SYLLABLE VU; 0BB5 0BC1
TAMIL SYLLABLE VUU; 0BB5 0BC2
TAMIL SYLLABLE VE; 0BB5 0BC6
TAMIL SYLLABLE VEE; 0BB5 0BC7
TAMIL SYLLABLE VAI; 0BB5 0BC8
TAMIL SYLLABLE VO; 0BB5 0BCA
TAMIL SYLLABLE VOO; 0BB5 0BCB
TAMIL SYLLABLE VAU; 0BB5 0BCC
TAMIL SYLLABLE LLLAA; 0BB4 0BBE
TAMIL SYLLABLE LLLI; 0BB4 0BBF
TAMIL SYLLABLE LLLII; 0BB4 0BC0
TAMIL SYLLABLE LLLU; 0BB4 0BC1
TAMIL SYLLABLE LLLUU; 0BB4 0BC2
TAMIL SYLLABLE LLLE; 0BB4 0BC6
TAMIL SYLLABLE LLLEE; 0BB4 0BC7
TAMIL SYLLABLE LLLAI; 0BB4 0BC8
TAMIL SYLLABLE LLLO; 0BB4 0BCA
TAMIL SYLLABLE LLLOO; 0BB4 0BCB
TAMIL SYLLABLE LLLAU; 0BB4 0BCC
TAMIL SYLLABLE LLAA; 0BB3 0BBE
TAMIL SYLLABLE LLI; 0BB3 0BBF
TAMIL SYLLABLE LLII; 0BB3 0BC0
TAMIL SYLLABLE LLU; 0BB3 0BC1
TAMIL SYLLABLE LLUU; 0BB3 0BC2
TAMIL SYLLABLE LLE; 0BB3 0BC6
TAMIL SYLLABLE LLEE; 0BB3 0BC7
TAMIL SYLLABLE LLAI; 0BB3 0BC8
TAMIL SYLLABLE LLO; 0BB3 0BCA
TAMIL SYLLABLE LLOO; 0BB3 0BCB
TAMIL SYLLABLE LLAU; 0BB3 0BCC
TAMIL SYLLABLE RRAA; 0BB1 0BBE
TAMIL SYLLABLE RRI; 0BB1 0BBF
TAMIL SYLLABLE RRII; 0BB1 0BC0
TAMIL SYLLABLE RRU; 0BB1 0BC1
TAMIL SYLLABLE RRUU; 0BB1 0BC2
TAMIL SYLLABLE RRE; 0BB1 0BC6
TAMIL SYLLABLE RREE; 0BB1 0BC7
TAMIL SYLLABLE RRAI; 0BB1 0BC8
TAMIL SYLLABLE RRO; 0BB1 0BCA
TAMIL SYLLABLE RROO; 0BB1 0BCB
TAMIL SYLLABLE RRAU; 0BB1 0BCC
TAMIL SYLLABLE NNNAA; 0BA9 0BBE
TAMIL SYLLABLE NNNI; 0BA9 0BBF
TAMIL SYLLABLE NNNII; 0BA9 0BC0
TAMIL SYLLABLE NNNU; 0BA9 0BC1
TAMIL SYLLABLE NNNUU; 0BA9 0BC2
TAMIL SYLLABLE NNNE; 0BA9 0BC6
TAMIL SYLLABLE NNNEE; 0BA9 0BC7
TAMIL SYLLABLE NNNAI; 0BA9 0BC8
TAMIL SYLLABLE NNNO; 0BA9 0BCA
TAMIL SYLLABLE NNNOO; 0BA9 0BCB
TAMIL SYLLABLE NNNAU; 0BA9 0BCC
TAMIL SYLLABLE JAA; 0B9C 0BBE
TAMIL SYLLABLE JI; 0B9C 0BBF
TAMIL SYLLABLE JII; 0B9C 0BC0
TAMIL SYLLABLE JU; 0B9C 0BC1
TAMIL SYLLABLE JUU; 0B9C 0BC2
TAMIL SYLLABLE JE; 0B9C 0BC6
TAMIL SYLLABLE JEE; 0B9C 0BC7
TAMIL SYLLABLE JAI; 0B9C 0BC8
TAMIL SYLLABLE JO; 0B9C 0BCA
TAMIL SYLLABLE JOO; 0B9C 0BCB
TAMIL SYLLABLE JAU; 0B9C 0BCC
TAMIL SYLLABLE SHAA; 0BB6 0BBE
TAMIL SYLLABLE SHI; 0BB6 0BBF
TAMIL SYLLABLE SHII; 0BB6 0BC0
TAMIL SYLLABLE SHU; 0BB6 0BC1
TAMIL SYLLABLE SHUU; 0BB6 0BC2
TAMIL SYLLABLE SHE; 0BB6 0BC6
TAMIL SYLLABLE SHEE; 0BB6 0BC7
TAMIL SYLLABLE SHAI; 0BB6 0BC8
TAMIL SYLLABLE SHO; 0BB6 0BCA
TAMIL SYLLABLE SHOO; 0BB6 0BCB
TAMIL SYLLABLE SHAU; 0BB6 0BCC
TAMIL SYLLABLE SSAA; 0BB7 0BBE
TAMIL SYLLABLE SSI; 0BB7 0BBF
TAMIL SYLLABLE SSII; 0BB7 0BC0
TAMIL SYLLABLE SSU; 0BB7 0BC1
TAMIL SYLLABLE SSUU; 0BB7 0BC2
TAMIL SYLLABLE SSE; 0BB7 0BC6
TAMIL SYLLABLE SSEE; 0BB7 0BC7
TAMIL SYLLABLE SSAI; 0BB7 0BC8
TAMIL SYLLABLE SSO; 0BB7 0BCA
TAMIL SYLLABLE SSOO; 0BB7 0BCB
TAMIL SYLLABLE SSAU; 0BB7 0BCC
TAMIL SYLLABLE SAA; 0BB8 0BBE
TAMIL SYLLABLE SI; 0BB8 0BBF
TAMIL SYLLABLE SII; 0BB8 0BC0
TAMIL SYLLABLE SU; 0BB8 0BC1
TAMIL SYLLABLE SUU; 0BB8 0BC2
TAMIL SYLLABLE SE; 0BB8 0BC6
TAMIL SYLLABLE SEE; 0BB8 0BC7
TAMIL SYLLABLE SAI; 0BB8 0BC8
TAMIL SYLLABLE SO; 0BB8 0BCA
TAMIL SYLLABLE SOO; 0BB8 0BCB
TAMIL SYLLABLE SAU; 0BB8 0BCC
TAMIL SYLLABLE HAA; 0BB9 0BBE
TAMIL SYLLABLE HI; 0BB9 0BBF
TAMIL SYLLABLE HII; 0BB9 0BC0
TAMIL SYLLABLE HU; 0BB9 0BC1
TAMIL SYLLABLE HUU; 0BB9 0BC2
TAMIL SYLLABLE HE; 0BB9 0BC6
TAMIL SYLLABLE HEE; 0BB9 0BC7
TAMIL SYLLABLE HAI; 0BB9 0BC8
TAMIL SYLLABLE HO; 0BB9 0BCA
TAMIL SYLLABLE HOO; 0BB9 0BCB
TAMIL SYLLABLE HAU; 0BB9 0BCC
TAMIL SYLLABLE KSSA; 0B95 0BCD 0BB7
TAMIL SYLLABLE KSSAA; 0B95 0BCD 0BB7 0BBE
TAMIL SYLLABLE KSSI; 0B95 0BCD 0BB7 0BBF
TAMIL SYLLABLE KSSII; 0B95 0BCD 0BB7 0BC0
TAMIL SYLLABLE KSSU; 0B95 0BCD 0BB7 0BC1
TAMIL SYLLABLE KSSUU; 0B95 0BCD 0BB7 0BC2
TAMIL SYLLABLE KSSE; 0B95 0BCD 0BB7 0BC6
TAMIL SYLLABLE KSSEE; 0B95 0BCD 0BB7 0BC7
TAMIL SYLLABLE KSSAI; 0B95 0BCD 0BB7 0BC8
TAMIL SYLLABLE KSSO; 0B95 0BCD 0BB7 0BCA
TAMIL SYLLABLE KSSOO; 0B95 0BCD 0BB7 0BCB
TAMIL SYLLABLE KSSAU; 0B95 0BCD 0BB7 0BCC
TAMIL SYLLABLE SHRII; 0BB6 0BCD 0BB0 0BC0
# Sinhala medial consonants and "reph" form.
# Provisional 2010-05-13, Approved 2011-08-05
SINHALA CONSONANT SIGN YANSAYA;0DCA 200D 0DBA
SINHALA CONSONANT SIGN RAKAARAANSAYA;0DCA 200D 0DBB
SINHALA CONSONANT SIGN REPAYA;0DBB 0DCA 200D
# Georgian letter plus accent sequence.
# This is part of the original set of approved named sequences
# for Unicode 4.1. 2005.
GEORGIAN LETTER U-BRJGU;10E3 0302
# Khmer subjoined forms and other sequences.
# These are part of the original set of approved named sequences
# for Unicode 4.1. 2005.
KHMER CONSONANT SIGN COENG KA;17D2 1780
KHMER CONSONANT SIGN COENG KHA;17D2 1781
KHMER CONSONANT SIGN COENG KO;17D2 1782
KHMER CONSONANT SIGN COENG KHO;17D2 1783
KHMER CONSONANT SIGN COENG NGO;17D2 1784
KHMER CONSONANT SIGN COENG CA;17D2 1785
KHMER CONSONANT SIGN COENG CHA;17D2 1786
KHMER CONSONANT SIGN COENG CO;17D2 1787
KHMER CONSONANT SIGN COENG CHO;17D2 1788
KHMER CONSONANT SIGN COENG NYO;17D2 1789
KHMER CONSONANT SIGN COENG DA;17D2 178A
KHMER CONSONANT SIGN COENG TTHA;17D2 178B
KHMER CONSONANT SIGN COENG DO;17D2 178C
KHMER CONSONANT SIGN COENG TTHO;17D2 178D
KHMER CONSONANT SIGN COENG NA;17D2 178E
KHMER CONSONANT SIGN COENG TA;17D2 178F
KHMER CONSONANT SIGN COENG THA;17D2 1790
KHMER CONSONANT SIGN COENG TO;17D2 1791
KHMER CONSONANT SIGN COENG THO;17D2 1792
KHMER CONSONANT SIGN COENG NO;17D2 1793
KHMER CONSONANT SIGN COENG BA;17D2 1794
KHMER CONSONANT SIGN COENG PHA;17D2 1795
KHMER CONSONANT SIGN COENG PO;17D2 1796
KHMER CONSONANT SIGN COENG PHO;17D2 1797
KHMER CONSONANT SIGN COENG MO;17D2 1798
KHMER CONSONANT SIGN COENG YO;17D2 1799
KHMER CONSONANT SIGN COENG RO;17D2 179A
KHMER CONSONANT SIGN COENG LO;17D2 179B
KHMER CONSONANT SIGN COENG VO;17D2 179C
KHMER CONSONANT SIGN COENG SHA;17D2 179D
KHMER CONSONANT SIGN COENG SSA;17D2 179E
KHMER CONSONANT SIGN COENG SA;17D2 179F
KHMER CONSONANT SIGN COENG HA;17D2 17A0
KHMER CONSONANT SIGN COENG LA;17D2 17A1
KHMER VOWEL SIGN COENG QA;17D2 17A2
KHMER INDEPENDENT VOWEL SIGN COENG QU;17D2 17A7
KHMER INDEPENDENT VOWEL SIGN COENG RY;17D2 17AB
KHMER INDEPENDENT VOWEL SIGN COENG RYY;17D2 17AC
KHMER INDEPENDENT VOWEL SIGN COENG QE;17D2 17AF
KHMER VOWEL SIGN OM;17BB 17C6
KHMER VOWEL SIGN AAM;17B6 17C6
# Entries for JIS X 0213 compatibility mapping.
# Provisional 2008-11-07, Approved 2010-05-14
#
# Two of these were part of the original set of approved named sequences
# for Unicode 4.1. 2005.
HIRAGANA LETTER BIDAKUON NGA;304B 309A
HIRAGANA LETTER BIDAKUON NGI;304D 309A
HIRAGANA LETTER BIDAKUON NGU;304F 309A
HIRAGANA LETTER BIDAKUON NGE;3051 309A
HIRAGANA LETTER BIDAKUON NGO;3053 309A
KATAKANA LETTER BIDAKUON NGA;30AB 309A
KATAKANA LETTER BIDAKUON NGI;30AD 309A
KATAKANA LETTER BIDAKUON NGU;30AF 309A
KATAKANA LETTER BIDAKUON NGE;30B1 309A
KATAKANA LETTER BIDAKUON NGO;30B3 309A
KATAKANA LETTER AINU CE;30BB 309A
KATAKANA LETTER AINU TU;30C4 309A
KATAKANA LETTER AINU TO;30C8 309A
KATAKANA LETTER AINU P;31F7 309A
MODIFIER LETTER EXTRA-HIGH EXTRA-LOW CONTOUR TONE BAR;02E5 02E9
MODIFIER LETTER EXTRA-LOW EXTRA-HIGH CONTOUR TONE BAR;02E9 02E5
# EOF

63
src/modules/punk/char/unicode15.1/NamedSequencesProv.txt

@ -0,0 +1,63 @@
# NamedSequencesProv-15.1.0.txt
# Date: 2023-01-05
# © 2023 Unicode®, Inc.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# Provisional Unicode Named Character Sequences
#
# Note: This data file contains those named character
# sequences which have been designated to be provisional,
# rather than fully approved.
#
# Format:
# Name of Sequence; Code Point Sequence for USI
#
# Code point sequences in the Unicode Character Database
# use spaces as delimiters. The corresponding format for a
# UCS Sequence Identifier (USI) in ISO/IEC 10646 uses
# comma delimitation and angle brackets. Thus, a Unicode
# named character sequence of the form:
#
# EXAMPLE NAME;1000 1001 1002
#
# in this data file, would correspond to an ISO/IEC 10646 USI
# as follows:
#
# <1000, 1001, 1002>
#
# For more information, see UAX #34: Unicode Named Character
# Sequences, at https://www.unicode.org/reports/tr34/
#
# Note: The order of entries in this file is not significant.
# However, entries are generally in script order corresponding
# to block order in the Unicode Standard, to make it easier
# to find entries currently in the list.
# ================================================
# Provisional entries for NamedSequences.txt.
# No provisional entries are currently defined.
# ================================================
# Entries from Unicode 4.1.0 version of NamedSequences.txt,
# subsequently disapproved because of potential errors in
# representation.
# GURMUKHI HALF YA;0A2F 0A4D
# GURMUKHI PARI YA;0A4D 0A2F
# Entry removed 2006-05-18:
#
# LATIN SMALL LETTER A WITH ACUTE AND OGONEK;00E1 0328
#
# This entry was removed because the sequence was not in NFC,
# as required. It was replaced with the NFC version of
# the sequence, based on the Lithuanian additions accepted
# for Unicode 5.0.
# EOF

776
src/modules/punk/char/unicode15.1/NamesList.html

@ -0,0 +1,776 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<title>Unicode NamesList Format</title>
<link rel="stylesheet" type="text/css" href="https://www.unicode.org/reports/reports-v2.css">
<style>
a.headernav {
font-size: 90%;
}
a.headernav:link {
color: white;
}
a.headernav:visited {
color: white;
}
a.headernav:active {
color: white;
}
a.headernav:hover {
color: #B0B0B0;
}
.pageheader {
margin-top: 0;
padding: 0 .5em 0 0;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-start;
background-color: #5555FF;
color: white;
font-family: arial, geneva, sans-serif;
font-weight:bold;
align-items: center;
}
.pageicon {
padding : 2px 4px 0 2px;
}
.pagelogo {
height: 33px; width: 34px;
border: 0;
padding-bottom: 0px;
margin-bottom:-2px;
}
.pagetitle {
font-size: 115%;
flex-grow: 4;
padding-left: 1em;
}
.headernav { padding-top: 0px;
font-weight: bold;
font-size: 100%;
color: white; font-family: arial, geneva, sans-serif;
text-align:right;
}
.graybar {
width: 100%;padding:0;
font-size:50%;
background-color: #EEEEFE;
}
.pagecontents {
padding-left: 3.25em;
padding-right: 3.25em;
padding-bottom: 1.75em;
padding-top: 1em;
}
.pagebottom img
{
padding-top: 2px;
width:216px;
height:50px;
border: 0;
}
.pagebottom
{
margin: auto;
text-align:center;
}
</style>
</head>
<body>
<div class="pageheader">
<div class="pageicon"><a href="https://www.unicode.org/"><img class="pagelogo"
src="https://www.unicode.org/webscripts/logo60s2.gif"
alt="[Unicode]" ></a></div>
<div class="pagetitle"><a class="headernav"
href="https://www.unicode.org/ucd/">Unicode Character Database</a></div>
</div>
<div class="graybar">&nbsp;</div>
<div class="body">
<h1>Unicode® NamesList File Format</h1>
<table class="simple">
<tbody>
<tr>
<td>Revision</td>
<td>15.1.0</td>
</tr>
<tr>
<td>Authors</td>
<td>Asmus Freytag, Ken Whistler</td>
</tr>
<tr>
<td>Date</td>
<td>2023-08-23</td>
</tr>
<tr>
<td>This Version</td>
<td >
<a href="https://www.unicode.org/Public/15.1.0/ucd/NamesList.html">
https://www.unicode.org/Public/15.1.0/ucd/NamesList.html</a></td>
</tr>
<tr>
<td>Previous Version</td>
<td>
<a href="https://www.unicode.org/Public/15.0.0/ucd/NamesList.html">
https://www.unicode.org/Public/15.0.0/ucd/NamesList.html</a></td>
</tr>
<tr>
<td>Latest Version</td>
<td><a href="https://www.unicode.org/Public/UCD/latest/ucd/NamesList.html">https://www.unicode.org/Public/UCD/latest/ucd/NamesList.html</a></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h3><i>Summary</i></h3>
<blockquote>
<p>This file describes the format and contents of NamesList.txt</p>
</blockquote>
<h3><i>Status</i></h3>
<blockquote>
<p><i>The file and the files described herein are part of the <a href="https://www.unicode.org/ucd/">Unicode
Character Database</a> (UCD). The Unicode <a href="https://www.unicode.org/terms_of_use.html">
Terms of Use</a> apply.</i></p>
</blockquote>
<hr style="width:50%">
<h2 id="Introduction">1.0 <a href="#Introduction">Introduction</a></h2>
<p>The Unicode name list file NamesList.txt (also NamesList.lst) is a plain
text file used to drive the layout of the character code charts in the Unicode
Standard. The information in this file is a combination of several fields from
the UnicodeData.txt and Blocks.txt files, together with additional annotations
for many characters.</p>
<p>This document describes the syntax rules for the file
format, but also gives brief information on how each construct is rendered
when laid out for the code charts. Some of the syntax elements are used only in
preparation of the drafts of the code charts and are not present in the final,
released form of the NamesList.txt file.</p>
<p>Over time, the syntax has been extended by adding new features. The syntax for formal aliases and index tabs was introduced with Unicode
5.0. The syntax for marginal sidebar comments is utilized extensively in
draft versions of the NamesList.txt file. The support for UTF-8 encoded files and the syntax for the UTF-8 charset
declaration in a comment at the head of the file were introduced after Unicode
6.1.0 was published, as was the syntax for the specification of variation sequences and alternate glyphs and their respective summaries. The repertoire restriction
in comments and aliases in the names list format was loosened from the prior
limitation to U+0020..U+00FF, to include the wider range U+0020..U+02FF, as of Unicode 11.0.</p>
<p>The same input file can be used for the preparation of drafts and final editions for ISO/IEC
10646. Earlier versions of that standard used a different style, referred to below as ISO-style. That style necessitated the presence of some
information in the name list file that is not needed (and in fact removed
during parsing) for the Unicode code charts.</p>
<p>With access to the layout program (<a href="https://www.unicode.org/unibook/">Unibook</a>) it is a simple matter of
creating name lists for the purpose of formatting working drafts or other documents containing
proposed characters.</p>
<p>The content of the NamesList.txt file is optimized for code chart creation.
Some information that can be inferred by the reader from context has been
suppressed to make the code charts more readable. See the chapter on Code
Charts in the <a href="https://www.unicode.org/versions/latest">Unicode
Standard</a>.</p>
<h3 id="Overview">1.1 <a href="#Overview">NamesList File Overview</a></h3>
<p>The NamesList files are plain text files which in their most simple form look
like this:</p>
<p>@@&lt;tab&gt;0020&lt;tab&gt;BASIC LATIN&lt;tab&gt;007F<br>
; this is a file comment (ignored)<br>
0020&lt;tab&gt;SPACE<br>
0021&lt;tab&gt;EXCLAMATION MARK<br>
0022&lt;tab&gt;QUOTATION MARK<br>
. . . <br>
007F&lt;tab&gt;DELETE</p>
<p>The semicolon (as first character), @ and &lt;tab&gt; characters are used
by the file syntax and must be provided as shown. Hexadecimal digits must be
in UPPERCASE. A double @@ introduces a block header, with the title, and
start and ending code of the block provided as shown.</p>
<p>For a minimal name list, only the NAME_LINE and BLOCKHEADER and
their constituent syntax elements are needed.</p>
<p>The full syntax with all the options is provided in the following sections.</p>
<h2 id="FileStructure">2.0 <a href="#FileStructure">NamesList File Structure</a></h2>
<p>This section defines the overall file structure</p>
<pre><strong>NAMELIST: FILE_COMMENT* TITLE_PAGE* EXTENDED_BLOCK*</strong>
<strong>TITLE_PAGE: TITLE
| TITLE_PAGE SUBTITLE
| TITLE_PAGE SUBHEADER
| TITLE_PAGE IGNORED_LINE
| TITLE_PAGE EMPTY_LINE
| TITLE_PAGE NOTICE_LINE
| TITLE_PAGE COMMENT_LINE
| TITLE_PAGE PAGEBREAK
| TITLE_PAGE FILE_COMMENT
EXTENDED_BLOCK: BLOCK
| BLOCK SUMMARY
BLOCK: BLOCKHEADER
| BLOCKHEADER INDEX_TAB
| BLOCK CHAR_ENTRY
| BLOCK SUBHEADER
| BLOCK NOTICE_LINE
| BLOCK EMPTY_LINE
| BLOCK IGNORED_LINE
| BLOCK SIDEBAR_LINE
| BLOCK PAGEBREAK
| BLOCK FILE_COMMENT
| BLOCK CROSS_REF
CHAR_ENTRY: NAME_LINE | RESERVED_LINE
| CHAR_ENTRY ALIAS_LINE
| CHAR_ENTRY FORMALALIAS_LINE
| CHAR_ENTRY COMMENT_LINE
| CHAR_ENTRY CROSS_REF
| CHAR_ENTRY DECOMPOSITION
| CHAR_ENTRY COMPAT_MAPPING
| CHAR_ENTRY IGNORED_LINE
| CHAR_ENTRY EMPTY_LINE
| CHAR_ENTRY NOTICE_LINE
| CHAR_ENTRY FILE_COMMENT
| CHAR_ENTRY VARIATION_LINE</strong>
</pre>
<p>In other words:</p>
<p>
Neither TITLE nor SUBTITLE may occur after the first BLOCKHEADER. </p>
<p>Only TITLE, SUBTITLE, SUBHEADER, PAGEBREAK, COMMENT_LINE, NOTICE_LINE,
EMPTY_LINE, IGNORED_LINE and FILE_COMMENT may occur before the first BLOCKHEADER.</p>
<ul>
<li>CROSS_REF, DECOMPOSITION, COMPAT_MAPPING, VARIATION_LINE, ALIAS and FORMALALIAS_LINE lines
occurring before the first block header are treated as if they were
COMMENT_LINEs.</li>
</ul>
<p>Directly following either a NAME_LINE or a RESERVED_LINE an uninterrupted
sequence of the following lines may occur (in any order and repeated as often
as needed): ALIAS_LINE, CROSS_REF, DECOMPOSITION, COMPAT_MAPPING, FORMALALIAS_LINE, NOTICE_LINE,
EMPTY_LINE, IGNORED_LINE, VARIATION_LINE and FILE_COMMENT.</p>
<ul>
<li>The conventional order of elements in a char entry: NAME_LINE,
FORMALALIAS_LINE, ALIAS, COMMENT_LINE or NOTICE_LINE, CROSS_REFs, VARIATION_LINE, and optionally
ending in either DECOMPOSITION or COMPAT_MAPPING is not enforced by the layout program
(<a href="https://www.unicode.org/unibook/">Unibook</a>). </li>
</ul>
<p>Except for CROSS_REF, NOTICE_LINE, SIDEBAR_LINE, EMPTY_LINE, IGNORED_LINE and
FILE_COMMENT, none of these lines may
occur in any other place.</p>
<ul>
<li>A NOTICE_LINE or CROSS_REF displays differently depending on whether it follows a header or title
or is part of a CHAR_ENTRY</li>
</ul>
<p>A PAGEBREAK may appear anywhere, except the middle of a CHARACTER_ENTRY.
A PAGEBREAK before the file title lines may not be supported. INDEX_TABs may
appear after any block header.</p>
<p>If the first line of a file is a file comment, it may contain a UTF-8
charset declaration (see below). Alternatively, or in addition, a BOM may be
present at the very beginning of the file, forcing the encoding to be
interpreted as UTF-16 (little-endian only) or UTF-8. When
declared as UTF-8, the names list format will support use of characters in
the range U+0020..U+02FF in LINE and LABEL elements. Otherwise,
the supported repertoire is limited to Latin-1, and attempted use of characters outside
the Latin-1 range will result in data corruption.</p>
<p>Several of these elements, while part of the formal definition of the
file format, do not occur in final published versions of
NamesList.txt in the <a href="https://www.unicode.org/Public/UCD/latest/">UCD</a>.</p>
<h4>Blocks followed by Summaries</h4>
<p>A block may be extended by a summary of standard variation sequences or selected alternate glyphs (or both) defined for characters in the block:</p>
<pre><strong>
SUMMARY: ALTGLYPH_SUMMARY
| VARIATION SUMMARY
| ALTGLYPH_SUMMARY VARIATION_SUMMARY
| MIXED_SUMMARY
ALTGLYPH_SUMMARY: ALTGLYPH_SUBHEADER
| ALTGLYPH_SUMMARY SUMMARY_LINE
VARIATION_SUMMARY: VARIATION_SUBHEADER
| VARIATION_SUMMARY SUMMARY_LINE
MIXED_SUMMARY: MIXED_SUBHEADER
| MIXED_SUMMARY SUMMARY_LINE
SUMMARY_LINE: SUBHEADER
| NOTICE_LINE
| FILE_COMMENT
| EMPTY_LINE</strong>
</pre>
<p>When formatted for display, each summary will recap the information presented in the VARIATION_LINE elements
of the preceding block, grouped by alternate glyph variants and standardized variation sequences, and
preceded by the corresponding subheader. Additional SUBHEADER and NOTICE lines, if provided, immediately
follow the ALTGLYPH_SUBHEADER, VARIATION_SUBHEADER or MIXED_SUBHEADER. There is no provision to provide subheaders that are
interspersed between items in the summary.</p>
<p>These syntax constructs are entirely optional. If the ALTGLYPH_SUBHEADER or VARIATION_SUBHEADER are
omitted from the names list, but the preceding block nevertheless contains VARIATION_LINE elements
as described below, Unibook will automatically generate any required summaries using a default format for the headers.</p>
<p>Thus, the main purpose for providing ALTGLYPH_SUBHEADER or VARIATION_SUBHEADER elements would be to
provide specific contents for these summary titles as well as allow the ability to add additional
information via SUBHEADER and NOTICE elements. The final published version of the Unicode names list
is machine generated and will always explicitly provide any summary subheaders.</p>
<h3 id="FileElements">2.1 <a href="#FileElements">NamesList File Elements</a></h3>
<p>This section provides the details of the syntax for the individual elements.</p>
<pre><strong>ELEMENT SYNTAX</strong> // How rendered
<strong>NAME_LINE: CHAR TAB NAME LF</strong>
// The CHAR and the corresponding image are echoed,
// followed by the name as given in NAME
<strong> | CHAR TAB &quot;&lt;&quot; LCNAME &quot;&gt;&quot; LF</strong>
// Control and noncharacters use this form of
// lowercase, bracketed pseudo character name
<strong> | CHAR TAB NAME SP COMMENT LF</strong>
// Names may have a comment, which is stripped off
// unless the file is parsed for an ISO style list
<strong> | CHAR TAB &quot;&lt;&quot; LCNAME &quot;&gt;&quot; SP COMMENT LF</strong>
// Control and noncharacters may also have comments
<strong>RESERVED_LINE: CHAR TAB &quot;&lt;reserved&gt;&quot; LF</strong>
// The CHAR is echoed followed by an icon for the
// reserved character and a fixed string e.g. &quot;&lt;reserved&gt;&quot;
<strong>COMMENT_LINE: TAB &quot;*&quot; SP EXPAND_LINE</strong>
// * is replaced by BULLET, output line as comment
<strong> | TAB EXPAND_LINE</strong>
// Output line as comment
<strong>ALIAS_LINE: TAB &quot;=&quot; SP LINE</strong>
// Replace = by itself, output line as alias
<strong>FORMALALIAS_LINE:
TAB &quot;%&quot; SP NAME LF</strong>
// Replace % by U+203B, output line as formal alias
<strong>CROSS_REF: TAB &quot;x&quot; SP CHAR SP LCNAME LF
| TAB &quot;x&quot; SP CHAR SP &quot;&lt;&quot; LCNAME &quot;&gt;&quot; LF</strong>
// x is replaced by a right arrow
<strong> | TAB &quot;x&quot; SP &quot;(&quot; LCNAME SP &quot;-&quot; SP CHAR &quot;)&quot; LF
| TAB &quot;x&quot; SP &quot;(&quot; &quot;&lt;&quot; LCNAME &quot;&gt;&quot; SP &quot;-&quot; SP CHAR &quot;)&quot; LF</strong>
// x is replaced by a right arrow;
// (second type as used for control and noncharacters)
// In the forms with parentheses the &quot;(&quot;,&quot;-&quot; and &quot;)&quot; are removed
// and the order of CHAR and LCNAME is reversed;
// i.e. all inputs result in the same order of output
<strong> | TAB &quot;x&quot; SP CHAR LF</strong>
// x is replaced by a right arrow
// (this type is the only one without LCNAME
// and is used for ideographs)
<strong>VARIATION_LINE: TAB &quot;~&quot; SP CHAR VARSEL SP LABEL LF
| TAB &quot;~&quot; SP CHAR VARSEL SP LABEL &quot;(&quot; LCTAG &quot;)&quot; LF</strong>
// output standardized variation sequence or simply the char code in case of alternate
// glyphs, followed by the alternate glyph or variation glyph and the label and context
<strong>FILE_COMMENT: &quot;;&quot; LINE</strong>
<strong>EMPTY_LINE: LF</strong>
// Empty and ignored lines as well as
// file comments are ignored
<strong>IGNORED_LINE: TAB &quot;;&quot; LINE</strong>
// Ignore LINE
<strong>SIDEBAR_LINE: &quot;;;&quot; LINE</strong>
// Output LINE as marginal note
<strong>DECOMPOSITION: TAB &quot;:&quot; SP EXPAND_LINE
| TAB &quot;:&quot; SP &quot;&lt;&quot; TAG &quot;&gt;&quot; SP EXPAND_LINE</strong>
// Replace ':' by EQUIV, expand line into decomposition
// The &lt;tag&gt; gives optional information,
// e.g., about composition exclusion.
// by convention the tag has initial lowercase
<strong>COMPAT_MAPPING: TAB &quot;#&quot; SP EXPAND_LINE
| TAB &quot;#&quot; SP &quot;&lt;&quot; TAG &quot;&gt;&quot; SP EXPAND_LINE</strong>
// Replace '#' by APPROX, output line as mapping
// The &lt;tag&gt; is the optional compatibility decomposition tag.
// by convention the tag has initial lowercase
<strong>NOTICE_LINE: &quot;@+&quot; TAB LINE</strong>
// Output LINE as notice
<strong> | &quot;@+&quot; TAB &quot;*&quot; SP LINE</strong>
// Output LINE as notice
// &quot;*&quot; expands to a bullet character
// Notices following a character code apply to the
// character and are indented. Notices not following
// a character code apply to the page/block/column
// and are italicized, but not indented
<strong>TITLE: &quot;@@@&quot; TAB LINE</strong>
// Output LINE as text
// Title is used in page headers
<strong>SUBTITLE: &quot;@@@+&quot; TAB LINE</strong>
// Output LINE as subtitle
<strong>SUBHEADER: &quot;@&quot; TAB LINE</strong>
// Output LINE as column header
<strong>VARIATION_SUBHEADER:</strong> <strong>&quot;@~&quot; TAB LINE</strong>
// Output LINE as column header (summary subheader)
<strong>| &quot;@~&quot; LF</strong>
// Output a default standard variation sequences summary subheader
<strong>| &quot;@~&quot; TAB &quot;!&quot; LF</strong>
// Suppress output of a default standard variant sequences summary subheader
// and disable display of summary
<strong>| &quot;@~&quot; TAB &quot;!&quot; VARSEL_LIST LF</strong>
<strong>| &quot;@~&quot; TAB &quot;!&quot; VARSEL_LIST LINE</strong>
// Output a standard summary subheader, using default or LINE respectively
// Suppress any std variation sequences using selectors from the list
<strong>ALTGLYPH_SUBHEADER:</strong> <strong>&quot;@@~&quot; TAB LINE</strong>
// Output LINE as column header (summary subheader)
<strong>| &quot;@@~&quot; LF</strong>
// Output a default alternate glyph summary subheader
<strong>| &quot;@@~&quot; TAB &quot;!&quot; LF</strong>
// Suppress output of a default alternate glyph summary subheader
// and disable display of summary
<strong>MIXED_SUBHEADER: </strong><strong>&quot;@@@~&quot; TAB LINE</strong>
// Output LINE as column header (summary subheader)
<strong>| &quot;@@@~&quot; LF</strong>
// Output a default combined variation and alternate glyph summary subheader
<strong>| &quot;@@@~&quot; TAB &quot;!&quot; LF</strong>
// Suppress output of a default alternate glyph summary subheader
// and disable display of summary
<strong>| &quot;@@@~&quot; TAB &quot;!&quot; VARSEL_LIST LF</strong>
<strong>| &quot;@@@~&quot; TAB &quot;!&quot; VARSEL_LIST LINE</strong>
// Output a combined summary subheader, using default or LINE respectively
// Suppress any std variation sequences using selectors from the list
<strong>BLOCKHEADER: &quot;@@&quot; TAB BLOCKSTART TAB BLOCKNAME TAB BLOCKEND LF</strong>
// Cause a page break and optional
// blank page, then output one or more charts
// followed by the list of character names.
// Use BLOCKSTART and BLOCKEND to define
// what characters belong to a block.
// Use BLOCKNAME in page and table headers
<strong>BLOCKNAME: LABEL
| LABEL SP &quot;(&quot; LABEL &quot;)&quot;</strong>
// If an alternate label is present it replaces
// the BLOCKNAME when an ISO-style names list is
// laid out; it is ignored in the Unicode charts
<strong>BLOCKSTART: CHAR</strong> // First character position in block
<strong>BLOCKEND: CHAR</strong> // Last character position in block
<strong>PAGEBREAK: &quot;@@&quot;</strong> // Insert a (column) break
<strong>INDEX_TAB: &quot;@@+&quot;</strong> // Start a new index tab at latest BLOCKSTART
<strong>EXPAND_LINE: {ESC_CHAR | CHAR | STRING | ESC +}+ LF</strong>
// Instances of CHAR (see Notes) are replaced by
// CHAR NBSP x NBSP where x is the single Unicode
// character corresponding to CHAR.
// If character is combining, it is replaced with
// CHAR NBSP &lt;circ&gt; x NBSP where &lt;circ&gt; is the
// dotted circle
</pre>
<b>Notes:</b><ul>
<li>Blocks must be aligned on 16-code point boundary and contain an integer
multiple of 16-code point columns. The exception to that rule is for blocks of
ideographs, <i>etc.</i>, for which no names are listed in the file. The BLOCKEND for such blocks
must correspond to the last assigned character, and not the actual end of the block.</li>
<li>Blocks must be non-overlapping and in ascending order. NAME_LINEs
must be in ascending order and follow the block header for the block to
which they belong. </li>
<li>Reserved entries are optional, and will normally be supplied automatically. They are
required whenever followed by ALIAS_LINE, COMMENT_LINE, NOTICE_LINE or CROSS_REF.
</li>
<li>An empty alternative glyph summary subheader expression will result in default header &quot;Selected Alternative Glyphs&quot;</li>
<li>An empty standard variation subheader expression will result in the default header &quot;Standardized Variation Sequences&quot;</li>
<li>A VARSEL_LIST may only contain code points for standard variation selectors (including script specific ones)</li>
<li>When displaying a VARIATION_LINE for alternate glyphs, the &quot;ALTn&quot; selector is not displayed. </li>
<li>If a glyph is unavailable for the variant glyph in a VARIATION_LINE it is replaced by the glyph for U+2591 LIGHT SHADE.</li>
<li>Because a LINE or an EXPAND_LINE can itself start with a special character followed
by a SP or LF, an &quot;unmarked&quot; COMMENT_LINE should match the input in lower priority than line
types that require a special character or have a more restrictive set of characters than EXPAND_LINE.
Similarly, a SUBHEADER containing TAB &quot;!&quot; LF should match with a higher priority than those
where the TAB is followed by a LINE.</li>
</ul>
<h3 id="FilePrimitives">2.2 <a href="#FilePrimitives">NamesList File Primitives</a></h3>
<p>The following are the primitives and terminals for the NamesList syntax.</p>
<pre><strong>LINE</strong>: <strong>STRING LF
COMMENT: &quot;(&quot; LABEL &quot;)&quot;
| &quot;(&quot; LABEL &quot;)&quot; SP &quot;*&quot;
| &quot;*&quot;</strong>
<strong>NAME</strong>: &lt;sequence of uppercase ASCII letters, digits, space and hyphen&gt;
<strong>LCNAME</strong>: &lt;sequence of lowercase ASCII letters, digits, space and hyphen&gt; <strong> (&quot;-&quot; CHAR)?</strong>
<strong>TAG</strong>: &lt;sequence of ASCII letters&gt;
<strong>LCTAG</strong>: &lt;sequence of lowercase ASCII letters&gt;
<strong>STRING</strong>: &lt;sequence of characters in the range U+0020..U+02FF, except controls&gt;
<strong>LABEL</strong>: &lt;sequence of characters in the range U+0020..U+02FF, except controls, &quot;(&quot; or &quot;)&quot;&gt;
<strong>VARSEL</strong>: <strong>CHAR
| &quot;ALT&quot; ( &quot;1&quot;|&quot;2&quot;|&quot;3&quot;|&quot;4&quot;|&quot;5&quot;|&quot;6&quot;|&quot;7&quot;|&quot;8&quot;|&quot;9&quot; )</strong>
<strong>VARSEL_LIST</strong>: <strong>&quot;{&quot; CHAR_LIST &quot;}&quot;</strong>
<strong>CHAR_LIST</strong>: <strong>CHAR
| CHAR_LIST SP CHAR</strong>
<strong>CHAR</strong>: <strong>X X X X</strong>
<strong>| X X X X X </strong>
<strong>| X X X X X X </strong>
<strong>X</strong>: <strong>&quot;0&quot;|&quot;1&quot;|&quot;2&quot;|&quot;3&quot;|&quot;4&quot;|&quot;5&quot;|&quot;6&quot;|&quot;7&quot;|&quot;8&quot;|&quot;9&quot;|&quot;A&quot;|&quot;B&quot;|&quot;C&quot;|&quot;D&quot;|&quot;E&quot;|&quot;F&quot;</strong>
<strong>ESC_CHAR</strong>: <strong>ESC CHAR</strong>
<strong>ESC</strong>: <strong>&quot;\&quot;</strong>
// Special semantics of backslash (\) are supported
// only in EXPAND_LINE.
<strong>TAB</strong>: &lt;sequence of one or more ASCII tab characters 0x09&gt;
<strong>SP</strong>: &lt;ASCII 20&gt;
<strong>LF</strong>: &lt;any sequence of a single ASCII 0A or 0D, or both&gt;
</pre>
<p><b>Notes:</b></p>
<ul>
<li>Multiple or leading spaces, multiple or leading hyphens, as well as
word-initial digits in NAMEs or LCNAMEs are illegal.</li>
<li>The French version of the names list uses French rules, which allow
apostrophe and accented letters in character names.</li>
<li>When names containing code points are lowercased to make them LCNAMEs,
the code point values remain uppercase. Such code points by convention
follow a hyphen and are the last element in the name.</li>
<li>Special limited lookbehind logic prevents a 4 digit number for a standard, such
as ISO 9999 from being misinterpreted as ISO CHAR. Currently recognized are
&quot;ISO&quot;, &quot;DIN&quot;, &quot;IEC&quot; and &quot;S X&quot; as well as &quot;S C&quot; for the JIS X and JIS C series of
standards. (In addition &quot;EEE&quot; and &quot;S X&quot; are recognized for use with IEEE and KSC X standards. For the GB series of standards, &quot; GB&quot; is defined to prevent conversion to CHAR, but has no effect at the start of a line). For other standards, or for four-digit years in a comment, use a
NOTICE_LINE instead, which prevents expansion, or use &quot;\&quot; to escape the digits.</li>
<li>Single and double straight quotes in an EXPAND_LINE are replaced by curly quotes using English rules.
Smart apostrophes are supported, but nested quotes are not.
Single quotes can only be applied around a single word.</li>
<li>A CHAR inside ' or &quot; is expanded, but only its glyph image is printed, the
code value is not echoed.</li>
<li>Inside an EXPAND_LINE, backslash is treated as an escape character that
removes the special meaning of any literal character and also prevents
the following digit sequence from being expanded. A backslash character in
isolation is never displayed. A sequence of two backslash characters results
in display of a single backslash, but has no effect on the interpretation
of following characters.</li>
<li>The hyphen in a character range CHAR-CHAR is replaced by an EN DASH on
output.</li>
<li>In a STRING or LABEL, a Unicode character outside the range
U+0000..U+02FF is displayed as is, with a glyph matching
the chart font, and not with the font that is otherwise defined for that element.</li>
<li>The NamesList.txt file is encoded in UTF-8 if the <i>first line</i> is a
FILE_COMMENT containing the declaration &quot;UTF-8&quot; or any casemap variation
thereof. Otherwise the file is encoded in Latin-1 (older versions). Beyond
detecting the charset declaration (typically: &quot;; charset=utf-8&quot;) the
remainder of that comment is ignored.
If the file is not encoded as
UTF-8, the character repertoire for running text (anything
other than CHAR) is effectively restricted to the repertoire of Latin-1.
Otherwise, characters in the range U+0020..U+02FF
are allowed in STRING or LABEL elements, and elements derived from them.</li>
<li>The code chart layout program
(<a href="https://www.unicode.org/unibook/">Unibook</a>)
can accept files in several other formats. These include little-endian UTF-16,
prefixed with a BOM, or UTF-8 prefixed with the UTF-8 BOM.</li>
<li>While the format allows multiple &lt;tab&gt; characters, by convention the
actual number of tabs is always one or two, chosen to provide the best
layout of the plain text file.</li>
<li>Earlier published versions of the NamesList.txt file may contain trailing or otherwise extraneous
spaces or tab characters; while these are errors in the files, they are not
being corrected, to retain stability of the published versions. Anyone
writing a parser for older versions of this file may need to be prepared to
handle such exceptions.</li>
<li>Lines are terminated by \r, \n, \r\n or \n\r. Repeated terminators imply empty lines, e.g. \r\r\n is treated as 2 lines, as is \r\n\r\n.</li>
<li>The final LF in the file must be present.</li>
</ul>
<h2 id="Modifications"><a href="#Modifications">Modifications</a></h2>
<p><b>Version 15.1.0</b></p>
<ul>
<li>Reissued for Unicode 15.0.0.</li>
<li>Adjusted NAMELIST definition to account for positions of FILE_COMMENT.</li>
<li>Added a note to the bullets in Section 2.1 to clarify priority of matching for
some line types.</li>
<li>In Section 2.2, added a note clarifying the font handling for characters
outside the range U+0000..U+02FF occurring in NAME or LABEL elements.</li>
<li>Also in Section 2.2, updated the bullet about lookbehind logic
for identifying digit sequences that are part of identifiers for various standards,
to include the detection of IEEE, KSC X, and GB standards.</li>
<li>Added missing quotation marks around * in second expansion for
NOTICE_LINE.</li>
<li>Corrected and clarified the BNF statement of nameslist syntax.</li>
<li>Some literals had not been quoted, some productions were missing the trailing LF</li>
<li>The LF and LCNAME productions were clarified</li>
<li>Updated to HTML5</li>
</ul>
<p><b>Version 15.0.0</b></p>
<ul>
<li>Reissued for Unicode 15.0.0.</li>
</ul>
<p><b>Version 14.0.0</b></p>
<ul>
<li>Reissued for Unicode 14.0.0.</li>
<li>Corrected character name LIGHT SCREEN to LIGHT SHADE.</li>
</ul>
<p><b>Version 13.0.0</b></p>
<ul>
<li>Reissued for Unicode 13.0.0.</li>
<li>Added a second expansion for DECOMPOSITION, for possible future
use to designate specific subtypes of canonical decompositions
in the names list output.</li>
</ul>
<p><b>Version 12.1.0</b></p>
<ul>
<li>Reissued for Unicode 12.1.0.</li>
</ul>
<p><b>Version 12.0.0</b></p>
<ul>
<li>Reissued for Unicode 12.0.0.</li>
<li>Added definition of TAG (allowing uppercase letters), distinct from LCTAG.</li>
<li>Corrected definition of VARIATION_LINE to use LCTAG instead of LCNAME.</li>
<li>Corrected definition of COMPAT_MAPPING to use TAG instead of LCTAG.</li>
<li>Corrected the documentation regarding which elements allow use of characters
in the range U+0020..U+02FF.</li>
</ul>
<p><b>Version 11.0.0</b></p>
<ul>
<li>Reissued for Unicode 11.0.0.</li>
<li>Loosened the limitation on repertoire allowed in LINE and LABEL
elements to include characters outside Latin-1, in the range
U+0100..U+02FF.</li>
</ul>
<p><b>Version 10.0.0</b></p>
<ul>
<li>Reissued for Unicode 10.0.0.</li>
</ul>
<p><b>Version 9.0.0</b></p>
<ul>
<li>Reissued for Unicode 9.0.0.</li>
</ul>
<p><b>Version 8.0.0</b></p>
<ul>
<li>Reissued for Unicode 8.0.0.</li>
<li>Added MIXED_SUBHEADER, VARSEL_LIST, and CHAR_LIST to the syntax.</li>
<li>Tweaked BNF and notes for variation summaries.</li>
</ul>
<p><b>Version 7.0.0</b></p>
<ul>
<li>Reissued for Unicode 7.0.0.</li>
</ul>
<p><b>Version 6.3.0</b></p>
<ul>
<li>Reissued for Unicode 6.3.0.</li>
</ul>
<p><b>Version 6.2.0</b></p>
<ul>
<li>Edited the variation syntax definitions, description and corresponding notes for wording.</li>
<li>Minor tweaks to the layout of BNF syntax, mostly adding tabs and | characters as needed.</li>
<li>Fixed some typographical errors and minor inconsistencies.</li>
<li>Added syntax for elements required by variation sequence and alternate glyph summaries.</li>
<li>Edited and reformatted some notes for readability.</li>
<li>Documented the permitted presence of CROSS_REF outside character entries within blocks.
Such CROSS_REFs have been present in published names lists, but that information was missing in
the syntax description. For an example see the Currency Symbols block in the code charts.</li>
<li>Added description of UTF-8 charset declaration and file encoding.</li>
</ul>
<p><b>Version 6.1.0</b></p>
<ul>
<li>Removed constraint that LCTAG consist only of lowercase letters,
because of the existence of the &quot;noBreak&quot; tag.</li>
</ul>
<p><b>Version 6.0.0</b></p>
<ul>
<li>Added definitions for ESC_CHAR and ESC primitives.</li>
<li>Clarified interpretation of backslash escapes in EXPAND_LINE.</li>
</ul>
<p><b>Version 5.2.0</b></p>
<ul>
<li>Better aligned the rules section with the actual published files and
behavior of existing parsers. This included fixing some obvious typos
and clarifying some notes as well as the following changes, which are
listed individually.</li>
<li>Replaced instances of &lt;tab&gt; by TAB throughout.</li>
<li>NAME_LINE for special names may have trailing COMMENTs including COMMENTs
consisting entirely of &quot;*&quot;.</li>
<li>In CROSS_REF added the form without LCNAME, fixed the literal to the
correct lowercase &quot;x&quot; and noted that LCNAME may have &quot;&lt;&quot; and &quot;&gt;&quot; around
it in the data. Also added missing LF in the rules.</li>
<li>Removed a redundant rule for BLOCKHEADER.</li>
<li>Changed FORMALALIAS_LINE from LINE to NAME to match actual restriction
on contents.</li>
<li>Extended the documentation of lookahead logic for CHAR.</li>
<li>Accounted for FILE_COMMENT in overall file structure.</li>
</ul>
<p><b>Version 5.1.0</b></p>
<ul>
<li>Noted that comments in NAME_LINEs must be preceded by SP.</li>
<li>Provided additional information on allowable characters in names.</li>
<li>Added SIDEBAR_LINE.</li>
<li>Noted that CROSS_REF must contain a SP and CHAR, and that
COMPAT_MAPPING must contain a SP and may contain a &lt;tag&gt;</li>
<li>Noted that LCNAME may contain uppercase characters under
exceptional circumstances.</li>
<li>Relaxed the restriction on lines starting with #, :, %, x and = on
the TITLE_PAGE. These are now treated as comments.</li>
</ul>
<p><b>Version 5.0.0</b></p>
<ul>
<li>Added FORMALALIAS_LINE and INDEX_TAB to syntax.</li>
<li>Fixed the list of lines that may appear before a BLOCKHEADER by
adding NOTICE_LINE.</li>
<li>Minor fixes to the wording of several syntax definitions.</li>
</ul>
<p><b>Version 4.0.0</b></p>
<ul>
<li>Fixed syntax to better reflect restrictions on characters
in character and block names.</li>
<li>Better document treatment of comments in block names, plus
French name rules.</li>
</ul>
<p><b>Version 3.2.0</b></p>
<ul>
<li>Fixed several broken links, added a left margin,
changed version numbering.</li>
</ul>
<p><b>Version 3.1.0 (2)</b></p>
<ul>
<li>Use of 4-6 digit hex notation is now supported.</li>
</ul>
</div>
<div class="pagebottom">
<hr style="width:50%">
<a href="https://www.unicode.org/copyright.html">
<img src="https://www.unicode.org/img/hb_notice.gif"
alt="Access to Copyright and terms of use" ></a>
</div>
</body>
</html>

55743
src/modules/punk/char/unicode15.1/NamesList.txt

File diff suppressed because it is too large Load Diff

52
src/modules/punk/char/unicode15.1/NormalizationCorrections.txt

@ -0,0 +1,52 @@
# NormalizationCorrections-15.1.0.txt
# Date: 2023-01-05
# © 2023 Unicode®, Inc.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# This file is a normative contributory data file in the
# Unicode Character Database.
#
# The normalization stability policy of the Unicode Consortium
# ordinarily precludes any change to the decomposition
# for any character, once established in a relevant version
# of the UnicodeData.txt data file. However, under certain
# exceptional (and rare) conditions, an error in a decomposition
# mapping may be discovered that is truly just an unintended
# typo in the data, and not a matter of dubious interpretation.
#
# Whenever such an error may be found, and if it meets the
# requirements for possible exceptions to normalization
# stability, the correction is entered in this data file,
# so that any implementation depending on absolute stability
# of normalization, *including* any errors in the data, can
# safely reconstruct the exact state of the data tables at
# any given version of Unicode.
#
# Currently this list has exactly six entries in it, one for the
# typo found and corrected in Corrigendum #3, and five for
# the typos and misidentifications found and corrected in
# Corrigendum #4. All efforts
# will be made to keep the entries limited to just those fixes.
#
# Interpretation of the fields:
# Field 0: Unicode code point
# Field 1: Original (erroneous) decomposition
# Field 2: Corrected decomposition
# Field 3: Version of Unicode for which the correction was
# entered into UnicodeData.txt, in n.n.n format.
# Comment: Indicates the Unicode Corrigendum which documents
# the correction
#
# For more information, see UAX #15, Unicode Normalization Forms.
#
F951;96FB;964B;3.2.0 # Corrigendum 3
2F868;2136A;36FC;4.0.0 # Corrigendum 4
2F874;5F33;5F53;4.0.0 # Corrigendum 4
2F91F;43AB;243AB;4.0.0 # Corrigendum 4
2F95F;7AAE;7AEE;4.0.0 # Corrigendum 4
2F9BF;4D57;45D7;4.0.0 # Corrigendum 4
# EOF

19129
src/modules/punk/char/unicode15.1/NormalizationTest.txt

File diff suppressed because it is too large Load Diff

824
src/modules/punk/char/unicode15.1/NushuSources.txt

@ -0,0 +1,824 @@
# NushuSources-15.1.0.txt
# Date: 2023-01-05
# © 2023 Unicode®, Inc.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# Source references file for Nushu characters
#
# Synchronized with: ISO/IEC 10646:2020/Amd 1.0 (E) (NushuSrc.txt)
# Original Data Date: April 28, 2021
#
# Format:
# Each data line of this file consists of three tab-separated fields.
# Field 0: The code point value in U+xxxxx format
# Field 1: A tag indicating the type of information in the third field
# Field 2: The value of the tag (in UTF-8)
#
# Tags currently defined:
#
# kSrc_NushuDuben
# Nushu source, expressed as a dot-separated string of two numbers, where the
# first number is the page number in the NushuDuben reference source, and the
# second number is the order of the item on that page.
# Nushu common reading: kReading
# Nushu common reading. Currently this reading contains only ASCII characters,
# but in principle could be extended to use other characters, expressed in UTF-8.
#
U+1B170 kSrc_NushuDuben 36.01
U+1B170 kReading i5
U+1B171 kSrc_NushuDuben 36.02
U+1B171 kReading na33
U+1B172 kSrc_NushuDuben 36.03
U+1B172 kReading tsha5
U+1B173 kSrc_NushuDuben 36.04
U+1B173 kReading ie21
U+1B174 kSrc_NushuDuben 36.05
U+1B174 kReading poe5
U+1B175 kSrc_NushuDuben 36.06
U+1B175 kReading swe33
U+1B176 kSrc_NushuDuben 36.07
U+1B176 kReading phiu44
U+1B177 kSrc_NushuDuben 36.08
U+1B177 kReading u5
U+1B178 kSrc_NushuDuben 36.09
U+1B178 kReading cya35
U+1B179 kSrc_NushuDuben 36.10
U+1B179 kReading tie42
U+1B17A kSrc_NushuDuben 36.11
U+1B17A kReading njie33
U+1B17B kSrc_NushuDuben 36.12
U+1B17B kReading toe33
U+1B17C kSrc_NushuDuben 36.13
U+1B17C kReading tchye5
U+1B17D kSrc_NushuDuben 36.14
U+1B17D kReading fwe13
U+1B17E kSrc_NushuDuben 36.15
U+1B17E kReading liu44
U+1B17F kSrc_NushuDuben 36.16
U+1B17F kReading siu35
U+1B180 kSrc_NushuDuben 37.01
U+1B180 kReading thu35
U+1B181 kSrc_NushuDuben 37.02
U+1B181 kReading njyu13
U+1B182 kSrc_NushuDuben 37.03
U+1B182 kReading vai42
U+1B183 kSrc_NushuDuben 37.04
U+1B183 kReading kai44
U+1B184 kSrc_NushuDuben 37.05
U+1B184 kReading khau21
U+1B185 kSrc_NushuDuben 37.06
U+1B185 kReading kou21
U+1B186 kSrc_NushuDuben 37.07
U+1B186 kReading tciou35
U+1B187 kSrc_NushuDuben 37.08
U+1B187 kReading liang35
U+1B188 kSrc_NushuDuben 37.09
U+1B188 kReading ciang13
U+1B189 kSrc_NushuDuben 37.10
U+1B189 kReading tsheng44
U+1B18A kSrc_NushuDuben 37.11
U+1B18A kReading song44
U+1B18B kSrc_NushuDuben 37.12
U+1B18B kReading ma5
U+1B18C kSrc_NushuDuben 37.14
U+1B18C kReading fa44
U+1B18D kSrc_NushuDuben 37.13
U+1B18D kReading la44
U+1B18E kSrc_NushuDuben 37.16
U+1B18E kReading thoe21
U+1B18F kSrc_NushuDuben 37.17
U+1B18F kReading tsoe42
U+1B190 kSrc_NushuDuben 37.18
U+1B190 kReading fwe44
U+1B191 kSrc_NushuDuben 37.19
U+1B191 kReading tswe35
U+1B192 kSrc_NushuDuben 37.20
U+1B192 kReading ti13
U+1B193 kSrc_NushuDuben 38.01
U+1B193 kReading ci21
U+1B194 kSrc_NushuDuben 38.02
U+1B194 kReading fu44
U+1B195 kSrc_NushuDuben 38.03
U+1B195 kReading fu35
U+1B196 kSrc_NushuDuben 38.04
U+1B196 kReading fu13
U+1B197 kSrc_NushuDuben 38.05
U+1B197 kReading tcyu35
U+1B198 kSrc_NushuDuben 38.06
U+1B198 kReading tcyu21
U+1B199 kSrc_NushuDuben 38.07
U+1B199 kReading fai44
U+1B19A kSrc_NushuDuben 38.08
U+1B19A kReading hau35
U+1B19B kSrc_NushuDuben 38.09
U+1B19B kReading lou35
U+1B19C kSrc_NushuDuben 38.10
U+1B19C kReading liou33
U+1B19D kSrc_NushuDuben 38.11
U+1B19D kReading tciou44
U+1B19E kSrc_NushuDuben 38.12
U+1B19E kReading ciou35
U+1B19F kSrc_NushuDuben 38.13
U+1B19F kReading tchyn21
U+1B1A0 kSrc_NushuDuben 38.14
U+1B1A0 kReading fang44
U+1B1A1 kSrc_NushuDuben 38.15
U+1B1A1 kReading vang42
U+1B1A2 kSrc_NushuDuben 38.16
U+1B1A2 kReading sang33
U+1B1A3 kSrc_NushuDuben 38.17
U+1B1A3 kReading khang21
U+1B1A4 kSrc_NushuDuben 39.01
U+1B1A4 kReading theng44
U+1B1A5 kSrc_NushuDuben 38.18
U+1B1A5 kReading neng44
U+1B1A6 kSrc_NushuDuben 39.02
U+1B1A6 kReading piong13
U+1B1A7 kSrc_NushuDuben 39.03
U+1B1A7 kReading iong42
U+1B1A8 kSrc_NushuDuben 39.04
U+1B1A8 kReading va33
U+1B1A9 kSrc_NushuDuben 37.15
U+1B1A9 kReading khua44
U+1B1AA kSrc_NushuDuben 39.05
U+1B1AA kReading tchya33
U+1B1AB kSrc_NushuDuben 39.07
U+1B1AB kReading nie33
U+1B1AC kSrc_NushuDuben 39.08
U+1B1AC kReading lie21
U+1B1AD kSrc_NushuDuben 39.09
U+1B1AD kReading tcie44
U+1B1AE kSrc_NushuDuben 39.10
U+1B1AE kReading tchie44
U+1B1AF kSrc_NushuDuben 39.11
U+1B1AF kReading njie44
U+1B1B0 kSrc_NushuDuben 39.12
U+1B1B0 kReading njie42
U+1B1B1 kSrc_NushuDuben 39.13
U+1B1B1 kReading ie44
U+1B1B2 kSrc_NushuDuben 39.14
U+1B1B2 kReading ie33
U+1B1B3 kSrc_NushuDuben 39.15
U+1B1B3 kReading mwe13
U+1B1B4 kSrc_NushuDuben 40.01
U+1B1B4 kReading vwe33
U+1B1B5 kSrc_NushuDuben 39.16
U+1B1B5 kReading vwe5
U+1B1B6 kSrc_NushuDuben 39.17
U+1B1B6 kReading twe33
U+1B1B7 kSrc_NushuDuben 40.02
U+1B1B7 kReading tswe44
U+1B1B8 kSrc_NushuDuben 40.03
U+1B1B8 kReading swe42
U+1B1B9 kSrc_NushuDuben 40.04
U+1B1B9 kReading swe13
U+1B1BA kSrc_NushuDuben 40.05
U+1B1BA kReading tci35
U+1B1BB kSrc_NushuDuben 40.06
U+1B1BB kReading ci35
U+1B1BC kSrc_NushuDuben 40.07
U+1B1BC kReading i5
U+1B1BD kSrc_NushuDuben 40.08
U+1B1BD kReading liu44
U+1B1BE kSrc_NushuDuben 40.09
U+1B1BE kReading njiu33
U+1B1BF kSrc_NushuDuben 40.10
U+1B1BF kReading ciu35
U+1B1C0 kSrc_NushuDuben 40.11
U+1B1C0 kReading mu13
U+1B1C1 kSrc_NushuDuben 40.12
U+1B1C1 kReading yu44
U+1B1C2 kSrc_NushuDuben 40.13
U+1B1C2 kReading tchy21
U+1B1C3 kSrc_NushuDuben 40.14
U+1B1C3 kReading njy33
U+1B1C4 kSrc_NushuDuben 40.15
U+1B1C4 kReading y42
U+1B1C5 kSrc_NushuDuben 40.16
U+1B1C5 kReading pai35
U+1B1C6 kSrc_NushuDuben 40.20
U+1B1C6 kReading pai35
U+1B1C7 kSrc_NushuDuben 40.18
U+1B1C7 kReading lai42
U+1B1C8 kSrc_NushuDuben 40.17
U+1B1C8 kReading ai42
U+1B1C9 kSrc_NushuDuben 40.19
U+1B1C9 kReading hau35
U+1B1CA kSrc_NushuDuben 41.01
U+1B1CA kReading tou42
U+1B1CB kSrc_NushuDuben 41.02
U+1B1CB kReading liou42
U+1B1CC kSrc_NushuDuben 41.03
U+1B1CC kReading iou13
U+1B1CD kSrc_NushuDuben 41.05
U+1B1CD kReading tsew35
U+1B1CE kSrc_NushuDuben 41.04
U+1B1CE kReading tsew21
U+1B1CF kSrc_NushuDuben 41.06
U+1B1CF kReading suow44
U+1B1D0 kSrc_NushuDuben 41.08
U+1B1D0 kReading huow42
U+1B1D1 kSrc_NushuDuben 41.07
U+1B1D1 kReading huow35
U+1B1D2 kSrc_NushuDuben 43.21
U+1B1D2 kReading nguw33
U+1B1D3 kSrc_NushuDuben 41.09
U+1B1D3 kReading mang42
U+1B1D4 kSrc_NushuDuben 41.12
U+1B1D4 kReading thang44
U+1B1D5 kSrc_NushuDuben 41.10
U+1B1D5 kReading kang44
U+1B1D6 kSrc_NushuDuben 41.11
U+1B1D6 kReading liang33
U+1B1D7 kSrc_NushuDuben 41.13
U+1B1D7 kReading tciang35
U+1B1D8 kSrc_NushuDuben 41.14
U+1B1D8 kReading njiang42
U+1B1D9 kSrc_NushuDuben 41.16
U+1B1D9 kReading peng44
U+1B1DA kSrc_NushuDuben 41.15
U+1B1DA kReading seng44
U+1B1DB kSrc_NushuDuben 41.18
U+1B1DB kReading piong42
U+1B1DC kSrc_NushuDuben 41.17
U+1B1DC kReading tshiong21
U+1B1DD kSrc_NushuDuben 41.19
U+1B1DD kReading tcing21
U+1B1DE kSrc_NushuDuben 41.20
U+1B1DE kReading pa5
U+1B1DF kSrc_NushuDuben 42.01
U+1B1DF kReading la33
U+1B1E0 kSrc_NushuDuben 42.14
U+1B1E0 kReading sie35
U+1B1E1 kSrc_NushuDuben 42.02
U+1B1E1 kReading tcie35
U+1B1E2 kSrc_NushuDuben 42.03
U+1B1E2 kReading ie21
U+1B1E3 kSrc_NushuDuben 42.04
U+1B1E3 kReading poe21
U+1B1E4 kSrc_NushuDuben 42.06
U+1B1E4 kReading loe42
U+1B1E5 kSrc_NushuDuben 42.07
U+1B1E5 kReading tsoe13
U+1B1E6 kSrc_NushuDuben 42.08
U+1B1E6 kReading soe5
U+1B1E7 kSrc_NushuDuben 42.09
U+1B1E7 kReading koe44
U+1B1E8 kSrc_NushuDuben 42.10
U+1B1E8 kReading khuoe21
U+1B1E9 kSrc_NushuDuben 42.11
U+1B1E9 kReading ye21
U+1B1EA kSrc_NushuDuben 42.12
U+1B1EA kReading pwe33
U+1B1EB kSrc_NushuDuben 42.13
U+1B1EB kReading pwe5
U+1B1EC kSrc_NushuDuben 42.15
U+1B1EC kReading tchi21
U+1B1ED kSrc_NushuDuben 42.16
U+1B1ED kReading tsiu33
U+1B1EE kSrc_NushuDuben 42.17
U+1B1EE kReading fu42
U+1B1EF kSrc_NushuDuben 43.01
U+1B1EF kReading vu42
U+1B1F0 kSrc_NushuDuben 42.18
U+1B1F0 kReading khu35
U+1B1F1 kSrc_NushuDuben 42.19
U+1B1F1 kReading hu5
U+1B1F2 kSrc_NushuDuben 43.02
U+1B1F2 kReading pw13
U+1B1F3 kSrc_NushuDuben 43.03
U+1B1F3 kReading fw42
U+1B1F4 kSrc_NushuDuben 43.07
U+1B1F4 kReading sw5
U+1B1F5 kSrc_NushuDuben 43.04
U+1B1F5 kReading kw5
U+1B1F6 kSrc_NushuDuben 43.05
U+1B1F6 kReading hw44
U+1B1F7 kSrc_NushuDuben 43.06
U+1B1F7 kReading mai42
U+1B1F8 kSrc_NushuDuben 43.08
U+1B1F8 kReading thai44
U+1B1F9 kSrc_NushuDuben 43.09
U+1B1F9 kReading sai44
U+1B1FA kSrc_NushuDuben 43.10
U+1B1FA kReading sai44
U+1B1FB kSrc_NushuDuben 43.11
U+1B1FB kReading thau35
U+1B1FC kSrc_NushuDuben 43.12
U+1B1FC kReading lau21
U+1B1FD kSrc_NushuDuben 43.13
U+1B1FD kReading lau21
U+1B1FE kSrc_NushuDuben 42.05
U+1B1FE kReading nw33
U+1B1FF kSrc_NushuDuben 43.14
U+1B1FF kReading kou33
U+1B200 kSrc_NushuDuben 43.15
U+1B200 kReading ciou44
U+1B201 kSrc_NushuDuben 43.17
U+1B201 kReading lew44
U+1B202 kSrc_NushuDuben 43.16
U+1B202 kReading sew35
U+1B203 kSrc_NushuDuben 43.18
U+1B203 kReading thuow21
U+1B204 kSrc_NushuDuben 43.19
U+1B204 kReading uow33
U+1B205 kSrc_NushuDuben 43.20
U+1B205 kReading kuw5
U+1B206 kSrc_NushuDuben 44.01
U+1B206 kReading tcyn42
U+1B207 kSrc_NushuDuben 44.02
U+1B207 kReading yn35
U+1B208 kSrc_NushuDuben 44.03
U+1B208 kReading vang33
U+1B209 kSrc_NushuDuben 44.04
U+1B209 kReading tsang44
U+1B20A kSrc_NushuDuben 44.05
U+1B20A kReading sang44
U+1B20B kSrc_NushuDuben 44.07
U+1B20B kReading khang35
U+1B20C kSrc_NushuDuben 44.06
U+1B20C kReading tciang44
U+1B20D kSrc_NushuDuben 44.08
U+1B20D kReading iang13
U+1B20E kSrc_NushuDuben 44.09
U+1B20E kReading teng42
U+1B20F kSrc_NushuDuben 44.10
U+1B20F kReading neng33
U+1B210 kSrc_NushuDuben 44.11
U+1B210 kReading piong33
U+1B211 kSrc_NushuDuben 44.12
U+1B211 kReading miong33
U+1B212 kSrc_NushuDuben 44.13
U+1B212 kReading ciong42
U+1B213 kSrc_NushuDuben 44.14
U+1B213 kReading ciong21
U+1B214 kSrc_NushuDuben 44.15
U+1B214 kReading njing42
U+1B215 kSrc_NushuDuben 44.16
U+1B215 kReading ng13
U+1B216 kSrc_NushuDuben 44.17
U+1B216 kReading tsa35
U+1B217 kSrc_NushuDuben 44.18
U+1B217 kReading sa21
U+1B218 kSrc_NushuDuben 44.19
U+1B218 kReading kua44
U+1B219 kSrc_NushuDuben 44.20
U+1B219 kReading kua35
U+1B21A kSrc_NushuDuben 39.06
U+1B21A kReading cya5
U+1B21B kSrc_NushuDuben 45.01
U+1B21B kReading cie44
U+1B21C kSrc_NushuDuben 45.02
U+1B21C kReading phoe35
U+1B21D kSrc_NushuDuben 45.03
U+1B21D kReading foe42
U+1B21E kSrc_NushuDuben 45.04
U+1B21E kReading loe35
U+1B21F kSrc_NushuDuben 45.13
U+1B21F kReading tshoe44
U+1B220 kSrc_NushuDuben 45.05
U+1B220 kReading tshoe21
U+1B221 kSrc_NushuDuben 45.06
U+1B221 kReading oe44
U+1B222 kSrc_NushuDuben 46.14
U+1B222 kReading tchye35
U+1B223 kSrc_NushuDuben 45.07
U+1B223 kReading fwe44
U+1B224 kSrc_NushuDuben 45.08
U+1B224 kReading tswe33
U+1B225 kSrc_NushuDuben 44.21
U+1B225 kReading ni33
U+1B226 kSrc_NushuDuben 45.09
U+1B226 kReading tshi5
U+1B227 kSrc_NushuDuben 45.10
U+1B227 kReading tshi5
U+1B228 kSrc_NushuDuben 45.11
U+1B228 kReading si44
U+1B229 kSrc_NushuDuben 45.12
U+1B229 kReading fu33
U+1B22A kSrc_NushuDuben 46.05
U+1B22A kReading ang21
U+1B22B kSrc_NushuDuben 45.16
U+1B22B kReading tchyu21
U+1B22C kSrc_NushuDuben 45.15
U+1B22C kReading cyu44
U+1B22D kSrc_NushuDuben 45.17
U+1B22D kReading phw21
U+1B22E kSrc_NushuDuben 45.18
U+1B22E kReading fai42
U+1B22F kSrc_NushuDuben 45.19
U+1B22F kReading tsai13
U+1B230 kSrc_NushuDuben 45.20
U+1B230 kReading lou42
U+1B231 kSrc_NushuDuben 45.23
U+1B231 kReading tsou5
U+1B232 kSrc_NushuDuben 45.21
U+1B232 kReading piou44
U+1B233 kSrc_NushuDuben 45.22
U+1B233 kReading miou13
U+1B234 kSrc_NushuDuben 45.24
U+1B234 kReading tchiou21
U+1B235 kSrc_NushuDuben 45.25
U+1B235 kReading njiou33
U+1B236 kSrc_NushuDuben 45.26
U+1B236 kReading iou13
U+1B237 kSrc_NushuDuben 46.01
U+1B237 kReading nuow42
U+1B238 kSrc_NushuDuben 45.28
U+1B238 kReading kuow44
U+1B239 kSrc_NushuDuben 45.27
U+1B239 kReading huow21
U+1B23A kSrc_NushuDuben 46.03
U+1B23A kReading pang44
U+1B23B kSrc_NushuDuben 45.14
U+1B23B kReading ngu13
U+1B23C kSrc_NushuDuben 46.08
U+1B23C kReading tsiang44
U+1B23D kSrc_NushuDuben 46.07
U+1B23D kReading tsiang42
U+1B23E kSrc_NushuDuben 46.02
U+1B23E kReading ciang42
U+1B23F kSrc_NushuDuben 46.09
U+1B23F kReading iang42
U+1B240 kSrc_NushuDuben 46.12
U+1B240 kReading liong42
U+1B241 kSrc_NushuDuben 46.10
U+1B241 kReading tshiong35
U+1B242 kSrc_NushuDuben 46.11
U+1B242 kReading ciong44
U+1B243 kSrc_NushuDuben 46.13
U+1B243 kReading cing35
U+1B244 kSrc_NushuDuben 46.15
U+1B244 kReading la13
U+1B245 kSrc_NushuDuben 46.16
U+1B245 kReading cya42
U+1B246 kSrc_NushuDuben 46.17
U+1B246 kReading poe42
U+1B247 kSrc_NushuDuben 46.19
U+1B247 kReading thoe44
U+1B248 kSrc_NushuDuben 46.18
U+1B248 kReading noe33
U+1B249 kSrc_NushuDuben 49.16
U+1B249 kReading tshoe44
U+1B24A kSrc_NushuDuben 46.20
U+1B24A kReading kue44
U+1B24B kSrc_NushuDuben 48.14
U+1B24B kReading tsiou33
U+1B24C kSrc_NushuDuben 46.22
U+1B24C kReading kue21
U+1B24D kSrc_NushuDuben 47.01
U+1B24D kReading ye42
U+1B24E kSrc_NushuDuben 47.02
U+1B24E kReading pwe35
U+1B24F kSrc_NushuDuben 47.03
U+1B24F kReading vwe35
U+1B250 kSrc_NushuDuben 47.05
U+1B250 kReading thi5
U+1B251 kSrc_NushuDuben 47.07
U+1B251 kReading tsi42
U+1B252 kSrc_NushuDuben 47.06
U+1B252 kReading tsi42
U+1B253 kSrc_NushuDuben 47.08
U+1B253 kReading tci21
U+1B254 kSrc_NushuDuben 47.09
U+1B254 kReading tci21
U+1B255 kSrc_NushuDuben 47.10
U+1B255 kReading tshiu21
U+1B256 kSrc_NushuDuben 47.11
U+1B256 kReading pu33
U+1B257 kSrc_NushuDuben 47.13
U+1B257 kReading tsu42
U+1B258 kSrc_NushuDuben 47.14
U+1B258 kReading ku21
U+1B259 kSrc_NushuDuben 48.01
U+1B259 kReading tcyu44
U+1B25A kSrc_NushuDuben 48.02
U+1B25A kReading njyu33
U+1B25B kSrc_NushuDuben 48.03
U+1B25B kReading tchy35
U+1B25C kSrc_NushuDuben 48.04
U+1B25C kReading pw5
U+1B25D kSrc_NushuDuben 48.05
U+1B25D kReading hw35
U+1B25E kSrc_NushuDuben 48.06
U+1B25E kReading phai35
U+1B25F kSrc_NushuDuben 48.07
U+1B25F kReading mai33
U+1B260 kSrc_NushuDuben 48.08
U+1B260 kReading lai35
U+1B261 kSrc_NushuDuben 48.09
U+1B261 kReading sai21
U+1B262 kSrc_NushuDuben 48.10
U+1B262 kReading hai42
U+1B263 kSrc_NushuDuben 48.12
U+1B263 kReading mau33
U+1B264 kSrc_NushuDuben 48.11
U+1B264 kReading tshau35
U+1B265 kSrc_NushuDuben 51.03
U+1B265 kReading hau33
U+1B266 kSrc_NushuDuben 48.13
U+1B266 kReading kou5
U+1B267 kSrc_NushuDuben 51.05
U+1B267 kReading ou44
U+1B268 kSrc_NushuDuben 46.21
U+1B268 kReading kue35
U+1B269 kSrc_NushuDuben 48.15
U+1B269 kReading tshiou44
U+1B26A kSrc_NushuDuben 48.16
U+1B26A kReading siou44
U+1B26B kSrc_NushuDuben 48.17
U+1B26B kReading tciou5
U+1B26C kSrc_NushuDuben 48.19
U+1B26C kReading ciou13
U+1B26D kSrc_NushuDuben 48.20
U+1B26D kReading thuow44
U+1B26E kSrc_NushuDuben 48.21
U+1B26E kReading fang13
U+1B26F kSrc_NushuDuben 48.22
U+1B26F kReading vang5
U+1B270 kSrc_NushuDuben 49.01
U+1B270 kReading lang44
U+1B271 kSrc_NushuDuben 49.02
U+1B271 kReading tshang44
U+1B272 kSrc_NushuDuben 49.04
U+1B272 kReading khang44
U+1B273 kSrc_NushuDuben 49.03
U+1B273 kReading khang5
U+1B274 kSrc_NushuDuben 49.05
U+1B274 kReading liang42
U+1B275 kSrc_NushuDuben 46.06
U+1B275 kReading siang44
U+1B276 kSrc_NushuDuben 49.06
U+1B276 kReading ciang44
U+1B277 kSrc_NushuDuben 51.17
U+1B277 kReading ciang35
U+1B278 kSrc_NushuDuben 49.07
U+1B278 kReading neng35
U+1B279 kSrc_NushuDuben 49.08
U+1B279 kReading leng42
U+1B27A kSrc_NushuDuben 49.09
U+1B27A kReading nong42
U+1B27B kSrc_NushuDuben 49.10
U+1B27B kReading long35
U+1B27C kSrc_NushuDuben 49.11
U+1B27C kReading liong13
U+1B27D kSrc_NushuDuben 49.12
U+1B27D kReading tsiong13
U+1B27E kSrc_NushuDuben 49.14
U+1B27E kReading siong44
U+1B27F kSrc_NushuDuben 49.15
U+1B27F kReading tcing44
U+1B280 kSrc_NushuDuben 49.17
U+1B280 kReading tcing44
U+1B281 kSrc_NushuDuben 49.18
U+1B281 kReading cing42
U+1B282 kSrc_NushuDuben 49.19
U+1B282 kReading ing21
U+1B283 kSrc_NushuDuben 49.20
U+1B283 kReading ng44
U+1B284 kSrc_NushuDuben 49.21
U+1B284 kReading va42
U+1B285 kSrc_NushuDuben 49.22
U+1B285 kReading sa35
U+1B286 kSrc_NushuDuben 50.01
U+1B286 kReading lie42
U+1B287 kSrc_NushuDuben 50.02
U+1B287 kReading tshie21
U+1B288 kSrc_NushuDuben 50.03
U+1B288 kReading sie5
U+1B289 kSrc_NushuDuben 50.04
U+1B289 kReading ie13
U+1B28A kSrc_NushuDuben 50.05
U+1B28A kReading moe13
U+1B28B kSrc_NushuDuben 50.06
U+1B28B kReading loe21
U+1B28C kSrc_NushuDuben 50.07
U+1B28C kReading tchye44
U+1B28D kSrc_NushuDuben 47.04
U+1B28D kReading cye44
U+1B28E kSrc_NushuDuben 50.08
U+1B28E kReading pi33
U+1B28F kSrc_NushuDuben 50.09
U+1B28F kReading ti44
U+1B290 kSrc_NushuDuben 50.10
U+1B290 kReading tci5
U+1B291 kSrc_NushuDuben 50.20
U+1B291 kReading tsiu44
U+1B292 kSrc_NushuDuben 47.12
U+1B292 kReading pu5
U+1B293 kSrc_NushuDuben 50.11
U+1B293 kReading fu21
U+1B294 kSrc_NushuDuben 50.12
U+1B294 kReading thu35
U+1B295 kSrc_NushuDuben 50.13
U+1B295 kReading hu42
U+1B296 kSrc_NushuDuben 50.14
U+1B296 kReading tcy13
U+1B297 kSrc_NushuDuben 50.15
U+1B297 kReading cy5
U+1B298 kSrc_NushuDuben 50.16
U+1B298 kReading pw42
U+1B299 kSrc_NushuDuben 50.17
U+1B299 kReading khw5
U+1B29A kSrc_NushuDuben 50.18
U+1B29A kReading lai44
U+1B29B kSrc_NushuDuben 50.19
U+1B29B kReading sai44
U+1B29C kSrc_NushuDuben 51.02
U+1B29C kReading sau35
U+1B29D kSrc_NushuDuben 51.01
U+1B29D kReading tsou42
U+1B29E kSrc_NushuDuben 51.04
U+1B29E kReading ngou42
U+1B29F kSrc_NushuDuben 51.06
U+1B29F kReading tsiou33
U+1B2A0 kSrc_NushuDuben 51.08
U+1B2A0 kReading njiou13
U+1B2A1 kSrc_NushuDuben 51.07
U+1B2A1 kReading ciou5
U+1B2A2 kSrc_NushuDuben 48.18
U+1B2A2 kReading iou42
U+1B2A3 kSrc_NushuDuben 51.09
U+1B2A3 kReading yn44
U+1B2A4 kSrc_NushuDuben 51.10
U+1B2A4 kReading tang42
U+1B2A5 kSrc_NushuDuben 46.04
U+1B2A5 kReading lang42
U+1B2A6 kSrc_NushuDuben 51.14
U+1B2A6 kReading kang35
U+1B2A7 kSrc_NushuDuben 51.11
U+1B2A7 kReading hang44
U+1B2A8 kSrc_NushuDuben 51.12
U+1B2A8 kReading hang42
U+1B2A9 kSrc_NushuDuben 51.13
U+1B2A9 kReading siang35
U+1B2AA kSrc_NushuDuben 51.15
U+1B2AA kReading tciang13
U+1B2AB kSrc_NushuDuben 51.16
U+1B2AB kReading iang44
U+1B2AC kSrc_NushuDuben 51.18
U+1B2AC kReading meng42
U+1B2AD kSrc_NushuDuben 49.13
U+1B2AD kReading tsiong42
U+1B2AE kSrc_NushuDuben 51.19
U+1B2AE kReading siong21
U+1B2AF kSrc_NushuDuben 52.01
U+1B2AF kReading tchiong44
U+1B2B0 kSrc_NushuDuben 52.02
U+1B2B0 kReading pa33
U+1B2B1 kSrc_NushuDuben 53.15
U+1B2B1 kReading tshie5
U+1B2B2 kSrc_NushuDuben 52.03
U+1B2B2 kReading sie5
U+1B2B3 kSrc_NushuDuben 52.04
U+1B2B3 kReading tsoe44
U+1B2B4 kSrc_NushuDuben 52.05
U+1B2B4 kReading koe35
U+1B2B5 kSrc_NushuDuben 52.06
U+1B2B5 kReading tcye44
U+1B2B6 kSrc_NushuDuben 52.07
U+1B2B6 kReading tcye42
U+1B2B7 kSrc_NushuDuben 52.08
U+1B2B7 kReading pwe35
U+1B2B8 kSrc_NushuDuben 52.09
U+1B2B8 kReading swe44
U+1B2B9 kSrc_NushuDuben 52.10
U+1B2B9 kReading ti42
U+1B2BA kSrc_NushuDuben 52.11
U+1B2BA kReading i42
U+1B2BB kSrc_NushuDuben 53.01
U+1B2BB kReading tciu42
U+1B2BC kSrc_NushuDuben 53.02
U+1B2BC kReading ciu44
U+1B2BD kSrc_NushuDuben 52.12
U+1B2BD kReading tsu35
U+1B2BE kSrc_NushuDuben 52.13
U+1B2BE kReading tshu35
U+1B2BF kSrc_NushuDuben 52.14
U+1B2BF kReading ku44
U+1B2C0 kSrc_NushuDuben 52.15
U+1B2C0 kReading lw5
U+1B2C1 kSrc_NushuDuben 52.16
U+1B2C1 kReading mai42
U+1B2C2 kSrc_NushuDuben 52.17
U+1B2C2 kReading kau44
U+1B2C3 kSrc_NushuDuben 52.18
U+1B2C3 kReading thou21
U+1B2C4 kSrc_NushuDuben 53.08
U+1B2C4 kReading hou33
U+1B2C5 kSrc_NushuDuben 53.05
U+1B2C5 kReading pang42
U+1B2C6 kSrc_NushuDuben 53.09
U+1B2C6 kReading fang44
U+1B2C7 kSrc_NushuDuben 53.06
U+1B2C7 kReading tang13
U+1B2C8 kSrc_NushuDuben 53.03
U+1B2C8 kReading lang33
U+1B2C9 kSrc_NushuDuben 53.04
U+1B2C9 kReading meng33
U+1B2CA kSrc_NushuDuben 53.07
U+1B2CA kReading teng42
U+1B2CB kSrc_NushuDuben 53.10
U+1B2CB kReading tseng42
U+1B2CC kSrc_NushuDuben 53.11
U+1B2CC kReading cing13
U+1B2CD kSrc_NushuDuben 53.12
U+1B2CD kReading ing42
U+1B2CE kSrc_NushuDuben 53.13
U+1B2CE kReading tsa33
U+1B2CF kSrc_NushuDuben 53.16
U+1B2CF kReading tsie21
U+1B2D0 kSrc_NushuDuben 54.01
U+1B2D0 kReading cie21
U+1B2D1 kSrc_NushuDuben 53.14
U+1B2D1 kReading moe42
U+1B2D2 kSrc_NushuDuben 54.03
U+1B2D2 kReading li35
U+1B2D3 kSrc_NushuDuben 54.10
U+1B2D3 kReading tsi5
U+1B2D4 kSrc_NushuDuben 54.02
U+1B2D4 kReading tci44
U+1B2D5 kSrc_NushuDuben 54.04
U+1B2D5 kReading i35
U+1B2D6 kSrc_NushuDuben 54.05
U+1B2D6 kReading mu33
U+1B2D7 kSrc_NushuDuben 54.07
U+1B2D7 kReading lu21
U+1B2D8 kSrc_NushuDuben 54.08
U+1B2D8 kReading hu42
U+1B2D9 kSrc_NushuDuben 54.12
U+1B2D9 kReading cyu33
U+1B2DA kSrc_NushuDuben 54.11
U+1B2DA kReading hw5
U+1B2DB kSrc_NushuDuben 54.09
U+1B2DB kReading tau13
U+1B2DC kSrc_NushuDuben 54.13
U+1B2DC kReading siou21
U+1B2DD kSrc_NushuDuben 54.15
U+1B2DD kReading lew33
U+1B2DE kSrc_NushuDuben 54.14
U+1B2DE kReading tshew5
U+1B2DF kSrc_NushuDuben 54.16
U+1B2DF kReading yn13
U+1B2E0 kSrc_NushuDuben 54.17
U+1B2E0 kReading tong13
U+1B2E1 kSrc_NushuDuben 54.18
U+1B2E1 kReading ie35
U+1B2E2 kSrc_NushuDuben 54.19
U+1B2E2 kReading voe5
U+1B2E3 kSrc_NushuDuben 55.01
U+1B2E3 kReading tswe21
U+1B2E4 kSrc_NushuDuben 55.02
U+1B2E4 kReading i21
U+1B2E5 kSrc_NushuDuben 55.03
U+1B2E5 kReading tu33
U+1B2E6 kSrc_NushuDuben 54.06
U+1B2E6 kReading lu35
U+1B2E7 kSrc_NushuDuben 55.04
U+1B2E7 kReading lou33
U+1B2E8 kSrc_NushuDuben 55.10
U+1B2E8 kReading tsou42
U+1B2E9 kSrc_NushuDuben 55.05
U+1B2E9 kReading tsuow44
U+1B2EA kSrc_NushuDuben 55.06
U+1B2EA kReading mang13
U+1B2EB kSrc_NushuDuben 55.09
U+1B2EB kReading tciang33
U+1B2EC kSrc_NushuDuben 55.07
U+1B2EC kReading tchiang21
U+1B2ED kSrc_NushuDuben 55.08
U+1B2ED kReading tciong44
U+1B2EE kSrc_NushuDuben 55.11
U+1B2EE kReading tsie33
U+1B2EF kSrc_NushuDuben 55.12
U+1B2EF kReading moe33
U+1B2F0 kSrc_NushuDuben 55.14
U+1B2F0 kReading ku44
U+1B2F1 kSrc_NushuDuben 55.15
U+1B2F1 kReading cyu35
U+1B2F2 kSrc_NushuDuben 55.13
U+1B2F2 kReading pw21
U+1B2F3 kSrc_NushuDuben 55.16
U+1B2F3 kReading tsiang42
U+1B2F4 kSrc_NushuDuben 55.17
U+1B2F4 kReading tshai44
U+1B2F5 kSrc_NushuDuben 55.18
U+1B2F5 kReading nguow13
U+1B2F6 kSrc_NushuDuben 55.19
U+1B2F6 kReading nong44
U+1B2F7 kSrc_NushuDuben 56.01
U+1B2F7 kReading fu5
U+1B2F8 kSrc_NushuDuben 56.02
U+1B2F8 kReading ku5
U+1B2F9 kSrc_NushuDuben 56.03
U+1B2F9 kReading fang33
U+1B2FA kSrc_NushuDuben 56.04
U+1B2FA kReading tcye21
U+1B2FB kSrc_NushuDuben 56.05
U+1B2FB kReading fi21
# EOF

1827
src/modules/punk/char/unicode15.1/PropList.txt

File diff suppressed because it is too large Load Diff

217
src/modules/punk/char/unicode15.1/PropertyAliases.txt

@ -0,0 +1,217 @@
# PropertyAliases-15.1.0.txt
# Date: 2023-08-07, 15:21:34 GMT
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# This file contains aliases for properties used in the UCD.
# These names can be used for XML formats of UCD data, for regular-expression
# property tests, and other programmatic textual descriptions of Unicode data.
#
# The names may be translated in appropriate environments, and additional
# aliases may be useful.
#
# FORMAT
#
# Each line has two or more fields, separated by semicolons.
#
# First Field: The first field is the short name for the property.
# It is typically an abbreviation, but in a number of cases it is simply
# a duplicate of the "long name" in the second field.
# For Unihan database tags, the short name is actually a longer string than
# the tag specified in the second field.
#
# Second Field: The second field is the long name for the property,
# typically the formal name used in documentation about the property.
#
# The above are the preferred aliases. Other aliases may be listed in additional fields.
#
# Loose matching should be applied to all property names and property values, with
# the exception of String Property values. With loose matching of property names and
# values, the case distinctions, whitespace, and '_' are ignored. For Numeric Property
# values, numeric equivalencies are applied: thus "01.00" is equivalent to "1".
#
# NOTE: Property value names are NOT unique across properties. For example:
#
# AL means Arabic Letter for the Bidi_Class property, and
# AL means Above_Left for the Combining_Class property, and
# AL means Alphabetic for the Line_Break property.
#
# In addition, some property names may be the same as some property value names.
# For example:
#
# sc means the Script property, and
# Sc means the General_Category property value Currency_Symbol (Sc)
#
# The combination of property value and property name is, however, unique.
#
# For more information, see UAX #44, Unicode Character Database, and
# UTS #18, Unicode Regular Expressions.
# ================================================
# ================================================
# Numeric Properties
# ================================================
cjkAccountingNumeric ; kAccountingNumeric
cjkOtherNumeric ; kOtherNumeric
cjkPrimaryNumeric ; kPrimaryNumeric
nv ; Numeric_Value
# ================================================
# String Properties
# ================================================
bmg ; Bidi_Mirroring_Glyph
bpb ; Bidi_Paired_Bracket
cf ; Case_Folding
cjkCompatibilityVariant ; kCompatibilityVariant
dm ; Decomposition_Mapping
EqUIdeo ; Equivalent_Unified_Ideograph
FC_NFKC ; FC_NFKC_Closure
lc ; Lowercase_Mapping
NFKC_CF ; NFKC_Casefold
NFKC_SCF ; NFKC_Simple_Casefold
scf ; Simple_Case_Folding ; sfc
slc ; Simple_Lowercase_Mapping
stc ; Simple_Titlecase_Mapping
suc ; Simple_Uppercase_Mapping
tc ; Titlecase_Mapping
uc ; Uppercase_Mapping
# ================================================
# Miscellaneous Properties
# ================================================
cjkIICore ; kIICore
cjkIRG_GSource ; kIRG_GSource
cjkIRG_HSource ; kIRG_HSource
cjkIRG_JSource ; kIRG_JSource
cjkIRG_KPSource ; kIRG_KPSource
cjkIRG_KSource ; kIRG_KSource
cjkIRG_MSource ; kIRG_MSource
cjkIRG_SSource ; kIRG_SSource
cjkIRG_TSource ; kIRG_TSource
cjkIRG_UKSource ; kIRG_UKSource
cjkIRG_USource ; kIRG_USource
cjkIRG_VSource ; kIRG_VSource
cjkRSUnicode ; kRSUnicode ; Unicode_Radical_Stroke; URS
isc ; ISO_Comment
JSN ; Jamo_Short_Name
na ; Name
na1 ; Unicode_1_Name
Name_Alias ; Name_Alias
scx ; Script_Extensions
# ================================================
# Catalog Properties
# ================================================
age ; Age
blk ; Block
sc ; Script
# ================================================
# Enumerated Properties
# ================================================
bc ; Bidi_Class
bpt ; Bidi_Paired_Bracket_Type
ccc ; Canonical_Combining_Class
dt ; Decomposition_Type
ea ; East_Asian_Width
gc ; General_Category
GCB ; Grapheme_Cluster_Break
hst ; Hangul_Syllable_Type
InCB ; Indic_Conjunct_Break
InPC ; Indic_Positional_Category
InSC ; Indic_Syllabic_Category
jg ; Joining_Group
jt ; Joining_Type
lb ; Line_Break
NFC_QC ; NFC_Quick_Check
NFD_QC ; NFD_Quick_Check
NFKC_QC ; NFKC_Quick_Check
NFKD_QC ; NFKD_Quick_Check
nt ; Numeric_Type
SB ; Sentence_Break
vo ; Vertical_Orientation
WB ; Word_Break
# ================================================
# Binary Properties
# ================================================
AHex ; ASCII_Hex_Digit
Alpha ; Alphabetic
Bidi_C ; Bidi_Control
Bidi_M ; Bidi_Mirrored
Cased ; Cased
CE ; Composition_Exclusion
CI ; Case_Ignorable
Comp_Ex ; Full_Composition_Exclusion
CWCF ; Changes_When_Casefolded
CWCM ; Changes_When_Casemapped
CWKCF ; Changes_When_NFKC_Casefolded
CWL ; Changes_When_Lowercased
CWT ; Changes_When_Titlecased
CWU ; Changes_When_Uppercased
Dash ; Dash
Dep ; Deprecated
DI ; Default_Ignorable_Code_Point
Dia ; Diacritic
EBase ; Emoji_Modifier_Base
EComp ; Emoji_Component
EMod ; Emoji_Modifier
Emoji ; Emoji
EPres ; Emoji_Presentation
Ext ; Extender
ExtPict ; Extended_Pictographic
Gr_Base ; Grapheme_Base
Gr_Ext ; Grapheme_Extend
Gr_Link ; Grapheme_Link
Hex ; Hex_Digit
Hyphen ; Hyphen
ID_Compat_Math_Continue ; ID_Compat_Math_Continue
ID_Compat_Math_Start ; ID_Compat_Math_Start
IDC ; ID_Continue
Ideo ; Ideographic
IDS ; ID_Start
IDSB ; IDS_Binary_Operator
IDST ; IDS_Trinary_Operator
IDSU ; IDS_Unary_Operator
Join_C ; Join_Control
LOE ; Logical_Order_Exception
Lower ; Lowercase
Math ; Math
NChar ; Noncharacter_Code_Point
OAlpha ; Other_Alphabetic
ODI ; Other_Default_Ignorable_Code_Point
OGr_Ext ; Other_Grapheme_Extend
OIDC ; Other_ID_Continue
OIDS ; Other_ID_Start
OLower ; Other_Lowercase
OMath ; Other_Math
OUpper ; Other_Uppercase
Pat_Syn ; Pattern_Syntax
Pat_WS ; Pattern_White_Space
PCM ; Prepended_Concatenation_Mark
QMark ; Quotation_Mark
Radical ; Radical
RI ; Regional_Indicator
SD ; Soft_Dotted
STerm ; Sentence_Terminal
Term ; Terminal_Punctuation
UIdeo ; Unified_Ideograph
Upper ; Uppercase
VS ; Variation_Selector
WSpace ; White_Space ; space
XIDC ; XID_Continue
XIDS ; XID_Start
XO_NFC ; Expands_On_NFC
XO_NFD ; Expands_On_NFD
XO_NFKC ; Expands_On_NFKC
XO_NFKD ; Expands_On_NFKD
# ================================================
# Total: 134
# EOF

1653
src/modules/punk/char/unicode15.1/PropertyValueAliases.txt

File diff suppressed because it is too large Load Diff

16
src/modules/punk/char/unicode15.1/ReadMe.txt

@ -0,0 +1,16 @@
# Unicode Character Database
# Date: 2023-08-28
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# For documentation, see the following:
# NamesList.html
# UAX #38, "Unicode Han Database (Unihan)"
# UAX #44, "Unicode Character Database"
# UTS #51, "Unicode Emoji"
#
# The UAXes and UTS #51 can be accessed at https://www.unicode.org/versions/Unicode15.1.0/
This directory contains final data files
for the Unicode Character Database, for Version 15.1.0 of the Unicode Standard.

635
src/modules/punk/char/unicode15.1/ScriptExtensions.txt

@ -0,0 +1,635 @@
# ScriptExtensions-15.1.0.txt
# Date: 2023-02-01, 23:02:24 GMT
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# The Script_Extensions property indicates which characters are commonly used
# with more than one script, but with a limited number of scripts.
# For each code point, there is one or more property values. Each such value is a Script property value.
# For more information, see:
# UAX #24, Unicode Script Property: https://www.unicode.org/reports/tr24/
# Especially the sections:
# https://www.unicode.org/reports/tr24/#Assignment_Script_Values
# https://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values
#
# Each Script_Extensions value in this file consists of a set
# of one or more abbreviated Script property values. The ordering of the
# values in that set is not material, but for stability in presentation
# it is given here as alphabetical.
#
# The Script_Extensions values are presented in sorted order in the file.
# They are sorted first by the number of Script property values in their sets,
# and then alphabetically by first differing Script property value.
#
# Following each distinct Script_Extensions value is the list of code
# points associated with that value, listed in code point order.
#
# All code points not explicitly listed for Script_Extensions
# have as their value the corresponding Script property value
#
# @missing: 0000..10FFFF; <script>
# ================================================
# Property: Script_Extensions
# ================================================
# Script_Extensions=Beng
1CF7 ; Beng # Mc VEDIC SIGN ATIKRAMA
# Total code points: 1
# ================================================
# Script_Extensions=Deva
1CD1 ; Deva # Mn VEDIC TONE SHARA
1CD4 ; Deva # Mn VEDIC SIGN YAJURVEDIC MIDLINE SVARITA
1CDB ; Deva # Mn VEDIC TONE TRIPLE SVARITA
1CDE..1CDF ; Deva # Mn [2] VEDIC TONE TWO DOTS BELOW..VEDIC TONE THREE DOTS BELOW
1CE2..1CE8 ; Deva # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
1CEB..1CEC ; Deva # Lo [2] VEDIC SIGN ANUSVARA VAMAGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
1CEE..1CF1 ; Deva # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA
# Total code points: 18
# ================================================
# Script_Extensions=Dupl
1BCA0..1BCA3 ; Dupl # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
# Total code points: 4
# ================================================
# Script_Extensions=Grek
0342 ; Grek # Mn COMBINING GREEK PERISPOMENI
0345 ; Grek # Mn COMBINING GREEK YPOGEGRAMMENI
1DC0..1DC1 ; Grek # Mn [2] COMBINING DOTTED GRAVE ACCENT..COMBINING DOTTED ACUTE ACCENT
# Total code points: 4
# ================================================
# Script_Extensions=Hani
3006 ; Hani # Lo IDEOGRAPHIC CLOSING MARK
303E..303F ; Hani # So [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE
3190..3191 ; Hani # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
3192..3195 ; Hani # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
3196..319F ; Hani # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
31C0..31E3 ; Hani # So [36] CJK STROKE T..CJK STROKE Q
3220..3229 ; Hani # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
322A..3247 ; Hani # So [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO
3280..3289 ; Hani # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
328A..32B0 ; Hani # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
32C0..32CB ; Hani # So [12] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
32FF ; Hani # So SQUARE ERA NAME REIWA
3358..3370 ; Hani # So [25] IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO..IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
337B..337F ; Hani # So [5] SQUARE ERA NAME HEISEI..SQUARE CORPORATION
33E0..33FE ; Hani # So [31] IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
1D360..1D371 ; Hani # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
1F250..1F251 ; Hani # So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
# Total code points: 238
# ================================================
# Script_Extensions=Latn
0363..036F ; Latn # Mn [13] COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X
# Total code points: 13
# ================================================
# Script_Extensions=Nand
1CFA ; Nand # Lo VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA
# Total code points: 1
# ================================================
# Script_Extensions=Syrc
1DFA ; Syrc # Mn COMBINING DOT BELOW LEFT
# Total code points: 1
# ================================================
# Script_Extensions=Arab Copt
102E0 ; Arab Copt # Mn COPTIC EPACT THOUSANDS MARK
102E1..102FB ; Arab Copt # No [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED
# Total code points: 28
# ================================================
# Script_Extensions=Arab Nkoo
FD3E ; Arab Nkoo # Pe ORNATE LEFT PARENTHESIS
FD3F ; Arab Nkoo # Ps ORNATE RIGHT PARENTHESIS
# Total code points: 2
# ================================================
# Script_Extensions=Arab Rohg
06D4 ; Arab Rohg # Po ARABIC FULL STOP
# Total code points: 1
# ================================================
# Script_Extensions=Arab Syrc
064B..0655 ; Arab Syrc # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW
0670 ; Arab Syrc # Mn ARABIC LETTER SUPERSCRIPT ALEF
# Total code points: 12
# ================================================
# Script_Extensions=Arab Thaa
FDF2 ; Arab Thaa # Lo ARABIC LIGATURE ALLAH ISOLATED FORM
FDFD ; Arab Thaa # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
# Total code points: 2
# ================================================
# Script_Extensions=Beng Deva
1CD5..1CD6 ; Beng Deva # Mn [2] VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA..VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA
1CD8 ; Beng Deva # Mn VEDIC TONE CANDRA BELOW
1CE1 ; Beng Deva # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
1CEA ; Beng Deva # Lo VEDIC SIGN ANUSVARA BAHIRGOMUKHA
1CED ; Beng Deva # Mn VEDIC SIGN TIRYAK
1CF5..1CF6 ; Beng Deva # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
A8F1 ; Beng Deva # Mn COMBINING DEVANAGARI SIGN AVAGRAHA
# Total code points: 9
# ================================================
# Script_Extensions=Bopo Hani
302A..302D ; Bopo Hani # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
# Total code points: 4
# ================================================
# Script_Extensions=Bugi Java
A9CF ; Bugi Java # Lm JAVANESE PANGRANGKEP
# Total code points: 1
# ================================================
# Script_Extensions=Cprt Linb
10102 ; Cprt Linb # Po AEGEAN CHECK MARK
10137..1013F ; Cprt Linb # So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
# Total code points: 10
# ================================================
# Script_Extensions=Cyrl Glag
0484 ; Cyrl Glag # Mn COMBINING CYRILLIC PALATALIZATION
0487 ; Cyrl Glag # Mn COMBINING CYRILLIC POKRYTIE
2E43 ; Cyrl Glag # Po DASH WITH LEFT UPTURN
A66F ; Cyrl Glag # Mn COMBINING CYRILLIC VZMET
# Total code points: 4
# ================================================
# Script_Extensions=Cyrl Latn
0485..0486 ; Cyrl Latn # Mn [2] COMBINING CYRILLIC DASIA PNEUMATA..COMBINING CYRILLIC PSILI PNEUMATA
# Total code points: 2
# ================================================
# Script_Extensions=Cyrl Perm
0483 ; Cyrl Perm # Mn COMBINING CYRILLIC TITLO
# Total code points: 1
# ================================================
# Script_Extensions=Cyrl Syrc
1DF8 ; Cyrl Syrc # Mn COMBINING DOT ABOVE LEFT
# Total code points: 1
# ================================================
# Script_Extensions=Deva Gran
1CD3 ; Deva Gran # Po VEDIC SIGN NIHSHVASA
1CF3 ; Deva Gran # Lo VEDIC SIGN ROTATED ARDHAVISARGA
1CF8..1CF9 ; Deva Gran # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
# Total code points: 4
# ================================================
# Script_Extensions=Deva Nand
1CE9 ; Deva Nand # Lo VEDIC SIGN ANUSVARA ANTARGOMUKHA
# Total code points: 1
# ================================================
# Script_Extensions=Deva Shrd
1CD7 ; Deva Shrd # Mn VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA
1CD9 ; Deva Shrd # Mn VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER
1CDC..1CDD ; Deva Shrd # Mn [2] VEDIC TONE KATHAKA ANUDATTA..VEDIC TONE DOT BELOW
1CE0 ; Deva Shrd # Mn VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
# Total code points: 5
# ================================================
# Script_Extensions=Deva Taml
A8F3 ; Deva Taml # Lo DEVANAGARI SIGN CANDRABINDU VIRAMA
# Total code points: 1
# ================================================
# Script_Extensions=Geor Latn
10FB ; Geor Latn # Po GEORGIAN PARAGRAPH SEPARATOR
# Total code points: 1
# ================================================
# Script_Extensions=Gran Taml
0BE6..0BEF ; Gran Taml # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
0BF0..0BF2 ; Gran Taml # No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
0BF3 ; Gran Taml # So TAMIL DAY SIGN
11301 ; Gran Taml # Mn GRANTHA SIGN CANDRABINDU
11303 ; Gran Taml # Mc GRANTHA SIGN VISARGA
1133B..1133C ; Gran Taml # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
11FD0..11FD1 ; Gran Taml # No [2] TAMIL FRACTION ONE QUARTER..TAMIL FRACTION ONE HALF-1
11FD3 ; Gran Taml # No TAMIL FRACTION THREE QUARTERS
# Total code points: 21
# ================================================
# Script_Extensions=Gujr Khoj
0AE6..0AEF ; Gujr Khoj # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
# Total code points: 10
# ================================================
# Script_Extensions=Guru Mult
0A66..0A6F ; Guru Mult # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
# Total code points: 10
# ================================================
# Script_Extensions=Hani Latn
A700..A707 ; Hani Latn # Sk [8] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER CHINESE TONE YANG RU
# Total code points: 8
# ================================================
# Script_Extensions=Hira Kana
3031..3035 ; Hira Kana # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
3099..309A ; Hira Kana # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
309B..309C ; Hira Kana # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
30A0 ; Hira Kana # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN
30FC ; Hira Kana # Lm KATAKANA-HIRAGANA PROLONGED SOUND MARK
FF70 ; Hira Kana # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
FF9E..FF9F ; Hira Kana # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
# Total code points: 14
# ================================================
# Script_Extensions=Knda Nand
0CE6..0CEF ; Knda Nand # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
# Total code points: 10
# ================================================
# Script_Extensions=Latn Mong
202F ; Latn Mong # Zs NARROW NO-BREAK SPACE
# Total code points: 1
# ================================================
# Script_Extensions=Mani Ougr
10AF2 ; Mani Ougr # Po MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT
# Total code points: 1
# ================================================
# Script_Extensions=Mong Phag
1802..1803 ; Mong Phag # Po [2] MONGOLIAN COMMA..MONGOLIAN FULL STOP
1805 ; Mong Phag # Po MONGOLIAN FOUR DOTS
# Total code points: 3
# ================================================
# Script_Extensions=Arab Syrc Thaa
061C ; Arab Syrc Thaa # Cf ARABIC LETTER MARK
# Total code points: 1
# ================================================
# Script_Extensions=Arab Thaa Yezi
0660..0669 ; Arab Thaa Yezi # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
# Total code points: 10
# ================================================
# Script_Extensions=Beng Cakm Sylo
09E6..09EF ; Beng Cakm Sylo # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
# Total code points: 10
# ================================================
# Script_Extensions=Cakm Mymr Tale
1040..1049 ; Cakm Mymr Tale # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
# Total code points: 10
# ================================================
# Script_Extensions=Cpmn Cprt Linb
10100..10101 ; Cpmn Cprt Linb # Po [2] AEGEAN WORD SEPARATOR LINE..AEGEAN WORD SEPARATOR DOT
# Total code points: 2
# ================================================
# Script_Extensions=Cprt Lina Linb
10107..10133 ; Cprt Lina Linb # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
# Total code points: 45
# ================================================
# Script_Extensions=Deva Gran Knda
1CF4 ; Deva Gran Knda # Mn VEDIC TONE CANDRA ABOVE
# Total code points: 1
# ================================================
# Script_Extensions=Deva Gran Latn
20F0 ; Deva Gran Latn # Mn COMBINING ASTERISK ABOVE
# Total code points: 1
# ================================================
# Script_Extensions=Hani Hira Kana
303C ; Hani Hira Kana # Lo MASU MARK
303D ; Hani Hira Kana # Po PART ALTERNATION MARK
# Total code points: 2
# ================================================
# Script_Extensions=Kali Latn Mymr
A92E ; Kali Latn Mymr # Po KAYAH LI SIGN CWI
# Total code points: 1
# ================================================
# Script_Extensions=Beng Deva Gran Knda
1CD0 ; Beng Deva Gran Knda # Mn VEDIC TONE KARSHANA
1CD2 ; Beng Deva Gran Knda # Mn VEDIC TONE PRENKHA
# Total code points: 2
# ================================================
# Script_Extensions=Buhd Hano Tagb Tglg
1735..1736 ; Buhd Hano Tagb Tglg # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
# Total code points: 2
# ================================================
# Script_Extensions=Deva Dogr Kthi Mahj
0966..096F ; Deva Dogr Kthi Mahj # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
# Total code points: 10
# ================================================
# Script_Extensions=Bopo Hang Hani Hira Kana
3003 ; Bopo Hang Hani Hira Kana # Po DITTO MARK
3013 ; Bopo Hang Hani Hira Kana # So GETA MARK
301C ; Bopo Hang Hani Hira Kana # Pd WAVE DASH
301D ; Bopo Hang Hani Hira Kana # Ps REVERSED DOUBLE PRIME QUOTATION MARK
301E..301F ; Bopo Hang Hani Hira Kana # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
3030 ; Bopo Hang Hani Hira Kana # Pd WAVY DASH
3037 ; Bopo Hang Hani Hira Kana # So IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
FE45..FE46 ; Bopo Hang Hani Hira Kana # Po [2] SESAME DOT..WHITE SESAME DOT
# Total code points: 10
# ================================================
# Script_Extensions=Arab Nkoo Rohg Syrc Thaa Yezi
060C ; Arab Nkoo Rohg Syrc Thaa Yezi # Po ARABIC COMMA
061B ; Arab Nkoo Rohg Syrc Thaa Yezi # Po ARABIC SEMICOLON
# Total code points: 2
# ================================================
# Script_Extensions=Bopo Hang Hani Hira Kana Yiii
3001..3002 ; Bopo Hang Hani Hira Kana Yiii # Po [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP
3008 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT ANGLE BRACKET
3009 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT ANGLE BRACKET
300A ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT DOUBLE ANGLE BRACKET
300B ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT DOUBLE ANGLE BRACKET
300C ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT CORNER BRACKET
300D ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT CORNER BRACKET
300E ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE CORNER BRACKET
300F ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE CORNER BRACKET
3010 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT BLACK LENTICULAR BRACKET
3011 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT BLACK LENTICULAR BRACKET
3014 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT TORTOISE SHELL BRACKET
3015 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT TORTOISE SHELL BRACKET
3016 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE LENTICULAR BRACKET
3017 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE LENTICULAR BRACKET
3018 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE TORTOISE SHELL BRACKET
3019 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE TORTOISE SHELL BRACKET
301A ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE SQUARE BRACKET
301B ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE SQUARE BRACKET
30FB ; Bopo Hang Hani Hira Kana Yiii # Po KATAKANA MIDDLE DOT
FF61 ; Bopo Hang Hani Hira Kana Yiii # Po HALFWIDTH IDEOGRAPHIC FULL STOP
FF62 ; Bopo Hang Hani Hira Kana Yiii # Ps HALFWIDTH LEFT CORNER BRACKET
FF63 ; Bopo Hang Hani Hira Kana Yiii # Pe HALFWIDTH RIGHT CORNER BRACKET
FF64..FF65 ; Bopo Hang Hani Hira Kana Yiii # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
# Total code points: 26
# ================================================
# Script_Extensions=Deva Knda Mlym Orya Taml Telu
1CDA ; Deva Knda Mlym Orya Taml Telu # Mn VEDIC TONE DOUBLE SVARITA
# Total code points: 1
# ================================================
# Script_Extensions=Adlm Arab Nkoo Rohg Syrc Thaa Yezi
061F ; Adlm Arab Nkoo Rohg Syrc Thaa Yezi # Po ARABIC QUESTION MARK
# Total code points: 1
# ================================================
# Script_Extensions=Adlm Arab Mand Mani Ougr Phlp Rohg Sogd Syrc
0640 ; Adlm Arab Mand Mani Ougr Phlp Rohg Sogd Syrc # Lm ARABIC TATWEEL
# Total code points: 1
# ================================================
# Script_Extensions=Beng Deva Gran Knda Mlym Nand Orya Sinh Telu Tirh
1CF2 ; Beng Deva Gran Knda Mlym Nand Orya Sinh Telu Tirh # Lo VEDIC SIGN ARDHAVISARGA
# Total code points: 1
# ================================================
# Script_Extensions=Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh
A836..A837 ; Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh # So [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK
A839 ; Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh # So NORTH INDIC QUANTITY MARK
# Total code points: 3
# ================================================
# Script_Extensions=Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Taml Telu Tirh
0952 ; Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Taml Telu Tirh # Mn DEVANAGARI STRESS SIGN ANUDATTA
# Total code points: 1
# ================================================
# Script_Extensions=Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Shrd Sind Takr Tirh
A838 ; Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Shrd Sind Takr Tirh # Sc NORTH INDIC RUPEE MARK
# Total code points: 1
# ================================================
# Script_Extensions=Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Shrd Taml Telu Tirh
0951 ; Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Shrd Taml Telu Tirh # Mn DEVANAGARI STRESS SIGN UDATTA
# Total code points: 1
# ================================================
# Script_Extensions=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Modi Nand Shrd Sind Takr Tirh
A833..A835 ; Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Modi Nand Shrd Sind Takr Tirh # No [3] NORTH INDIC FRACTION ONE SIXTEENTH..NORTH INDIC FRACTION THREE SIXTEENTHS
# Total code points: 3
# ================================================
# Script_Extensions=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Mlym Modi Nand Shrd Sind Takr Tirh
A830..A832 ; Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Mlym Modi Nand Shrd Sind Takr Tirh # No [3] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE QUARTERS
# Total code points: 3
# ================================================
# Script_Extensions=Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh
0964 ; Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh # Po DEVANAGARI DANDA
# Total code points: 1
# ================================================
# Script_Extensions=Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Limb Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh
0965 ; Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Limb Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh # Po DEVANAGARI DOUBLE DANDA
# Total code points: 1
# EOF

3033
src/modules/punk/char/unicode15.1/Scripts.txt

File diff suppressed because it is too large Load Diff

281
src/modules/punk/char/unicode15.1/SpecialCasing.txt

@ -0,0 +1,281 @@
# SpecialCasing-15.1.0.txt
# Date: 2023-01-05, 20:35:03 GMT
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# Special Casing
#
# This file is a supplement to the UnicodeData.txt file. It does not define any
# properties, but rather provides additional information about the casing of
# Unicode characters, for situations when casing incurs a change in string length
# or is dependent on context or locale. For compatibility, the UnicodeData.txt
# file only contains simple case mappings for characters where they are one-to-one
# and independent of context and language. The data in this file, combined with
# the simple case mappings in UnicodeData.txt, defines the full case mappings
# Lowercase_Mapping (lc), Titlecase_Mapping (tc), and Uppercase_Mapping (uc).
#
# Note that the preferred mechanism for defining tailored casing operations is
# the Unicode Common Locale Data Repository (CLDR). For more information, see the
# discussion of case mappings and case algorithms in the Unicode Standard.
#
# All code points not listed in this file that do not have a simple case mappings
# in UnicodeData.txt map to themselves.
# ================================================================================
# Format
# ================================================================================
# The entries in this file are in the following machine-readable format:
#
# <code>; <lower>; <title>; <upper>; (<condition_list>;)? # <comment>
#
# <code>, <lower>, <title>, and <upper> provide the respective full case mappings
# of <code>, expressed as character values in hex. If there is more than one character,
# they are separated by spaces. Other than as used to separate elements, spaces are
# to be ignored.
#
# The <condition_list> is optional. Where present, it consists of one or more language IDs
# or casing contexts, separated by spaces. In these conditions:
# - A condition list overrides the normal behavior if all of the listed conditions are true.
# - The casing context is always the context of the characters in the original string,
# NOT in the resulting string.
# - Case distinctions in the condition list are not significant.
# - Conditions preceded by "Not_" represent the negation of the condition.
# The condition list is not represented in the UCD as a formal property.
#
# A language ID is defined by BCP 47, with '-' and '_' treated equivalently.
#
# A casing context for a character is defined by Section 3.13 Default Case Algorithms
# of The Unicode Standard.
#
# Parsers of this file must be prepared to deal with future additions to this format:
# * Additional contexts
# * Additional fields
# ================================================================================
# ================================================================================
# Unconditional mappings
# ================================================================================
# The German es-zed is special--the normal mapping is to SS.
# Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>))
00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S
# Preserve canonical equivalence for I with dot. Turkic is handled below.
0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE
# Ligatures
FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF
FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI
FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL
FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI
FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL
FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T
FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST
0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN
FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW
FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH
FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI
FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW
FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH
# No corresponding uppercase precomposed character
0149; 0149; 02BC 004E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON
1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW
1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS
1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE
1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI
1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
# IMPORTANT-when iota-subscript (0345) is uppercased or titlecased,
# the result will be incorrect unless the iota-subscript is moved to the end
# of any sequence of combining marks. Otherwise, the accents will go on the capital iota.
# This process can be achieved by first transforming the text to NFC before casing.
# E.g. <alpha><iota_subscript><acute> is uppercased to <ALPHA><acute><IOTA>
# The following cases are already in the UnicodeData.txt file, so are only commented here.
# 0345; 0345; 0399; 0399; # COMBINING GREEK YPOGEGRAMMENI
# All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript)
# have special uppercases.
# Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase!
1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
# Some characters with YPOGEGRAMMENI also have no corresponding titlecases
1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
# ================================================================================
# Conditional Mappings
# The remainder of this file provides conditional casing data used to produce
# full case mappings.
# ================================================================================
# Language-Insensitive Mappings
# These are characters whose full case mappings do not depend on language, but do
# depend on context (which characters come before or after). For more information
# see the header of this file and the Unicode Standard.
# ================================================================================
# Special case for final form of sigma
03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA
# Note: the following cases for non-final are already in the UnicodeData.txt file.
# 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA
# 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA
# 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA
# Note: the following cases are not included, since they would case-fold in lowercasing
# 03C3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK SMALL LETTER SIGMA
# 03C2; 03C3; 03A3; 03A3; Not_Final_Sigma; # GREEK SMALL LETTER FINAL SIGMA
# ================================================================================
# Language-Sensitive Mappings
# These are characters whose full case mappings depend on language and perhaps also
# context (which characters come before or after). For more information
# see the header of this file and the Unicode Standard.
# ================================================================================
# Lithuanian
# Lithuanian retains the dot in a lowercase i when followed by accents.
# Remove DOT ABOVE after "i" with upper or titlecase
0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE
# Introduce an explicit dot above when lowercasing capital I's and J's
# whenever there are more accents above.
# (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek)
0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I
004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J
012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK
00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE
00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE
0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE
# ================================================================================
# Turkish and Azeri
# I and i-dotless; I-dot and i are case pairs in Turkish and Azeri
# The following rules handle those cases.
0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE
0130; 0069; 0130; 0130; az; # LATIN CAPITAL LETTER I WITH DOT ABOVE
# When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i.
# This matches the behavior of the canonically equivalent I-dot_above
0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE
0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE
# When lowercasing, unless an I is before a dot_above, it turns into a dotless i.
0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I
0049; 0131; 0049; 0049; az Not_Before_Dot; # LATIN CAPITAL LETTER I
# When uppercasing, i turns into a dotted capital I
0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I
0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I
# Note: the following case is already in the UnicodeData.txt file.
# 0131; 0131; 0049; 0049; tr; # LATIN SMALL LETTER DOTLESS I
# EOF

1383
src/modules/punk/char/unicode15.1/StandardizedVariants.txt

File diff suppressed because it is too large Load Diff

12348
src/modules/punk/char/unicode15.1/TangutSources.txt

File diff suppressed because it is too large Load Diff

3391
src/modules/punk/char/unicode15.1/USourceData.txt

File diff suppressed because it is too large Load Diff

BIN
src/modules/punk/char/unicode15.1/USourceGlyphs.pdf

Binary file not shown.

BIN
src/modules/punk/char/unicode15.1/USourceRSChart.pdf

Binary file not shown.

34931
src/modules/punk/char/unicode15.1/UnicodeData.txt

File diff suppressed because it is too large Load Diff

2444
src/modules/punk/char/unicode15.1/VerticalOrientation.txt

File diff suppressed because it is too large Load Diff

1475
src/modules/punk/char/unicode15.1/auxiliary/GraphemeBreakProperty.txt

File diff suppressed because it is too large Load Diff

231
src/modules/punk/char/unicode15.1/auxiliary/GraphemeBreakTest.html

@ -0,0 +1,231 @@
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<title>Grapheme Break Chart</title>
<style type='text/css'>
td, th { vertical-align: top }
</style></head>
<body bgcolor='#FFFFFF'>
<h2>Grapheme_Cluster_Break Chart</h2>
<p><b>Unicode Version:</b> 15.1.0</p>
<p><b>Date:</b> 2023-08-07, 15:52:55 GMT</p>
<p>This page illustrates the application of the Grapheme_Cluster_Break specification. The material here is informative, not normative.</p> <p>The first chart shows where breaks would appear between different sample characters or strings. The sample characters are chosen mechanically to represent the different properties used by the specification.</p><p>Each cell shows the break-status for the position between the character(s) in its row header and the character(s) in its column header. The × symbol indicates no break, while the ÷ symbol indicated a break. The cells with × are also shaded to make it easier to scan the table. For example, in the cell at the intersection of the row headed by “CR” and the column headed by “LF”, there is a × symbol, indicating that there is no break between CR and LF.</p>
<p>After the heavy blue line in the table are additional rows, either with different sample characters or for sequences. Some column headers may be composed, reflecting “treat as” or “ignore” rules.</p>
<p>If your browser handles titles (tooltips), then hovering the mouse over the row header will show a sample character of that type. Hovering over a column header will show the sample character, plus its abbreviated general category and script. Hovering over the intersected cells shows the rule number that produces the break-status. For example, hovering over the cell at the intersection of LVT and T shows ×, with the rule 8.0. Checking below the table, rule 8.0 is “( LVT | T) × T”, which is the one that applies to that case. Note that a rule is invoked only when no lower-numbered rules have applied.</p>
<h3><a href='#table' name='table'>Table</a></h3>
<table border='1' cellspacing='0' width='100%'><tr><th width='4%'></th><th width='4%' class='lbclass' title='U+0020 SPACE, gc=Zs, sc=Zyyy'>Other</th><th width='4%' class='lbclass' title='U+000D <CARRIAGE RETURN (CR)>, gc=Cc, sc=Zyyy'>CR</th><th width='4%' class='lbclass' title='U+000A <LINE FEED (LF)>, gc=Cc, sc=Zyyy'>LF</th><th width='4%' class='lbclass' title='U+0001 <START OF HEADING>, gc=Cc, sc=Zyyy'>Control</th><th width='4%' class='lbclass' title='U+034F COMBINING GRAPHEME JOINER, gc=Mn, sc=Zinh'>Extend</th><th width='4%' class='lbclass' title='U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A, gc=So, sc=Zyyy'>RI</th><th width='4%' class='lbclass' title='U+0600 ARABIC NUMBER SIGN, gc=Cf, sc=Arab'>Prepend</th><th width='4%' class='lbclass' title='U+0A03 GURMUKHI SIGN VISARGA, gc=Mc, sc=Guru'>SpacingMark</th><th width='4%' class='lbclass' title='U+1100 HANGUL CHOSEONG KIYEOK, gc=Lo, sc=Hang'>L</th><th width='4%' class='lbclass' title='U+1160 HANGUL JUNGSEONG FILLER, gc=Lo, sc=Hang'>V</th><th width='4%' class='lbclass' title='U+11A8 HANGUL JONGSEONG KIYEOK, gc=Lo, sc=Hang'>T</th><th width='4%' class='lbclass' title='U+AC00 HANGUL SYLLABLE GA, gc=Lo, sc=Hang'>LV</th><th width='4%' class='lbclass' title='U+AC01 HANGUL SYLLABLE GAG, gc=Lo, sc=Hang'>LVT</th><th width='4%' class='lbclass' title='U+0900 DEVANAGARI SIGN INVERTED CANDRABINDU, gc=Mn, sc=Deva'>Extend_ConjunctLinkingScripts</th><th width='4%' class='lbclass' title='U+0903 DEVANAGARI SIGN VISARGA, gc=Mc, sc=Deva'>SpacingMark_ConjunctLinkingScripts</th><th width='4%' class='lbclass' title='U+0904 DEVANAGARI LETTER SHORT A, gc=Lo, sc=Deva'>ConjunctLinkingScripts</th><th width='4%' class='lbclass' title='U+0D4E MALAYALAM LETTER DOT REPH, gc=Lo, sc=Mlym'>Prepend_ConjunctLinkingScripts</th><th width='4%' class='lbclass' title='U+0915 DEVANAGARI LETTER KA, gc=Lo, sc=Deva'>ConjunctLinkingScripts_LinkingConsonant</th><th width='4%' class='lbclass' title='U+231A WATCH, gc=So, sc=Zyyy'>ExtPict</th><th width='4%' class='lbclass' title='U+0300 COMBINING GRAVE ACCENT, gc=Mn, sc=Zinh'>Extend_ExtCccZwj</th><th width='4%' class='lbclass' title='U+093C DEVANAGARI SIGN NUKTA, gc=Mn, sc=Deva'>Extend_ConjunctLinkingScripts_ExtCccZwj</th><th width='4%' class='lbclass' title='U+094D DEVANAGARI SIGN VIRAMA, gc=Mn, sc=Deva'>Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj</th><th width='4%' class='lbclass' title='U+200D ZERO WIDTH JOINER, gc=Cf, sc=Zinh'>ZWJ_ExtCccZwj</th></tr>
<tr><th class='lbclass' title='U+0020 SPACE'>Other</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+000D <CARRIAGE RETURN (CR)>'>CR</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='3.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th></tr>
<tr><th class='lbclass' title='U+000A <LINE FEED (LF)>'>LF</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th></tr>
<tr><th class='lbclass' title='U+0001 <START OF HEADING>'>Control</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th></tr>
<tr><th class='lbclass' title='U+034F COMBINING GRAPHEME JOINER'>Extend</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A'>RI</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='12.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0600 ARABIC NUMBER SIGN'>Prepend</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0A03 GURMUKHI SIGN VISARGA'>SpacingMark</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+1100 HANGUL CHOSEONG KIYEOK'>L</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='6.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='6.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='6.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='6.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+1160 HANGUL JUNGSEONG FILLER'>V</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='7.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='7.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+11A8 HANGUL JONGSEONG KIYEOK'>T</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='8.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+AC00 HANGUL SYLLABLE GA'>LV</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='7.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='7.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+AC01 HANGUL SYLLABLE GAG'>LVT</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='8.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0900 DEVANAGARI SIGN INVERTED CANDRABINDU'>Extend_ConjunctLinkingScripts</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0903 DEVANAGARI SIGN VISARGA'>SpacingMark_ConjunctLinkingScripts</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0904 DEVANAGARI LETTER SHORT A'>ConjunctLinkingScripts</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0D4E MALAYALAM LETTER DOT REPH'>Prepend_ConjunctLinkingScripts</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0915 DEVANAGARI LETTER KA'>ConjunctLinkingScripts_LinkingConsonant</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+231A WATCH'>ExtPict</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0300 COMBINING GRAVE ACCENT'>Extend_ExtCccZwj</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+093C DEVANAGARI SIGN NUKTA'>Extend_ConjunctLinkingScripts_ExtCccZwj</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+094D DEVANAGARI SIGN VIRAMA'>Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+200D ZERO WIDTH JOINER'>ZWJ_ExtCccZwj</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><td bgcolor='#0000FF' colSpan='24' style='font-size: 1px'>&nbsp;</td></tr>
<tr><th class='lbclass' title='U+0378 <reserved-0378>'>Other</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='5.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
</table>
<h3><a href='#rules' name='rules'>Rules</a></h3>
<p>This section shows the rules. They are mechanically modified for programmatic generation of the tables and test code, and thus do not match the UAX rules precisely. In particular:</p><ol><li>The rules are cast into a form that is more like regular expressions.</li><li>The rules “sot ÷”, “÷ eot”, and “÷ Any” are added mechanically, and have artificial numbers.</li><li>The rules are given decimal numbers using tenths, and are written without prefix. For example, rule GB9a is given the number 9.1.</li><li>Any “treat as” or “ignore” rules are handled as discussed in UAX #29, and thus reflected in a transformation of the rules usually not visible here. In addition, final rules like “Any ÷ Any” may be recast as the equivalent expression “÷ Any”.</li><li>In some cases, the numbering and form of a rule is changed due to “treat as” rules.</li></ol><p>For the original rules, see UAX #29.</p>
<table>
<tr><th style='text-align:right'><a href='#r0.2' name='r0.2'>0.2</a></th><td style='text-align:right'>sot </td><td>÷</td><td></td></tr>
<tr><th style='text-align:right'><a href='#r0.3' name='r0.3'>0.3</a></th><td style='text-align:right'></td><td>÷</td><td> eot</td></tr>
<tr><th style='text-align:right'><a href='#r3.0' name='r3.0'>3.0</a></th><td style='text-align:right'>CR </td><td>×</td><td> LF</td></tr>
<tr><th style='text-align:right'><a href='#r4.0' name='r4.0'>4.0</a></th><td style='text-align:right'>( Control | CR | LF ) </td><td>÷</td><td></td></tr>
<tr><th style='text-align:right'><a href='#r5.0' name='r5.0'>5.0</a></th><td style='text-align:right'></td><td>÷</td><td> ( Control | CR | LF )</td></tr>
<tr><th style='text-align:right'><a href='#r6.0' name='r6.0'>6.0</a></th><td style='text-align:right'>L </td><td>×</td><td> ( L | V | LV | LVT )</td></tr>
<tr><th style='text-align:right'><a href='#r7.0' name='r7.0'>7.0</a></th><td style='text-align:right'>( LV | V ) </td><td>×</td><td> ( V | T )</td></tr>
<tr><th style='text-align:right'><a href='#r8.0' name='r8.0'>8.0</a></th><td style='text-align:right'>( LVT | T) </td><td>×</td><td> T</td></tr>
<tr><th style='text-align:right'><a href='#r9.0' name='r9.0'>9.0</a></th><td style='text-align:right'></td><td>×</td><td> (Extend | ZWJ)</td></tr>
<tr><th style='text-align:right'><a href='#r9.1' name='r9.1'>9.1</a></th><td style='text-align:right'></td><td>×</td><td> SpacingMark</td></tr>
<tr><th style='text-align:right'><a href='#r9.2' name='r9.2'>9.2</a></th><td style='text-align:right'>Prepend </td><td>×</td><td></td></tr>
<tr><th style='text-align:right'><a href='#r9.3' name='r9.3'>9.3</a></th><td style='text-align:right'>LinkingConsonant ExtCccZwj* ConjunctLinker ExtCccZwj* </td><td>×</td><td> LinkingConsonant</td></tr>
<tr><th style='text-align:right'><a href='#r11.0' name='r11.0'>11.0</a></th><td style='text-align:right'>ExtPict Extend* ZWJ </td><td>×</td><td> ExtPict</td></tr>
<tr><th style='text-align:right'><a href='#r12.0' name='r12.0'>12.0</a></th><td style='text-align:right'>^ (RI RI)* RI </td><td>×</td><td> RI</td></tr>
<tr><th style='text-align:right'><a href='#r13.0' name='r13.0'>13.0</a></th><td style='text-align:right'>[^RI] (RI RI)* RI </td><td>×</td><td> RI</td></tr>
<tr><th style='text-align:right'><a href='#r999.0' name='r999.0'>999.0</a></th><td style='text-align:right'></td><td>÷</td><td> Any</td></tr>
</table>
<h3><a href='#samples' name='samples'>Sample Strings</a></h3>
<p>The following samples illustrate the application of the rules. The blue lines indicate possible break points. If your browser supports titles (tooltips), then positioning the mouse over each character will show its name, while positioning between characters shows the number of the rule responsible for the break-status.</p>
<table>
<tr><th style='text-align:right'><a href='#s1' name='s1'>1</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+000D &lt;CARRIAGE RETURN (CR)&gt; (CR)'>&#x25A1;</span><span title='3.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='5.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_ExtCccZwj)'>&#x25CC;&#x308;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s2' name='s2'>2</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_ExtCccZwj)'>&#x25CC;&#x308;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s3' name='s3'>3</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Other)'> </span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_ExtCccZwj)'>&#x25A1;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0646 ARABIC LETTER NOON (Other)'>&#x646;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s4' name='s4'>4</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0646 ARABIC LETTER NOON (Other)'>&#x646;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_ExtCccZwj)'>&#x25A1;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Other)'> </span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s5' name='s5'>5</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1100 HANGUL CHOSEONG KIYEOK (L)'>&#x1100;</span><span title='6.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1100 HANGUL CHOSEONG KIYEOK (L)'>&#x1100;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s6' name='s6'>6</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+AC00 HANGUL SYLLABLE GA (LV)'>&#xAC00;</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+11A8 HANGUL JONGSEONG KIYEOK (T)'>&#x11A8;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1100 HANGUL CHOSEONG KIYEOK (L)'>&#x1100;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s7' name='s7'>7</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+AC01 HANGUL SYLLABLE GAG (LVT)'>&#xAC01;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+11A8 HANGUL JONGSEONG KIYEOK (T)'>&#x11A8;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1100 HANGUL CHOSEONG KIYEOK (L)'>&#x1100;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s8' name='s8'>8</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A (RI)'>&#x1F1E6;</span><span title='12.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F1E7 REGIONAL INDICATOR SYMBOL LETTER B (RI)'>&#x1F1E7;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E8 REGIONAL INDICATOR SYMBOL LETTER C (RI)'>&#x1F1E8;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (Other)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s9' name='s9'>9</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A (RI)'>&#x1F1E6;</span><span title='13.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F1E7 REGIONAL INDICATOR SYMBOL LETTER B (RI)'>&#x1F1E7;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E8 REGIONAL INDICATOR SYMBOL LETTER C (RI)'>&#x1F1E8;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (Other)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s10' name='s10'>10</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A (RI)'>&#x1F1E6;</span><span title='13.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F1E7 REGIONAL INDICATOR SYMBOL LETTER B (RI)'>&#x1F1E7;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_ExtCccZwj)'>&#x25A1;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E8 REGIONAL INDICATOR SYMBOL LETTER C (RI)'>&#x1F1E8;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (Other)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s11' name='s11'>11</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A (RI)'>&#x1F1E6;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_ExtCccZwj)'>&#x25A1;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E7 REGIONAL INDICATOR SYMBOL LETTER B (RI)'>&#x1F1E7;</span><span title='13.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F1E8 REGIONAL INDICATOR SYMBOL LETTER C (RI)'>&#x1F1E8;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (Other)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s12' name='s12'>12</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A (RI)'>&#x1F1E6;</span><span title='13.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F1E7 REGIONAL INDICATOR SYMBOL LETTER B (RI)'>&#x1F1E7;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E8 REGIONAL INDICATOR SYMBOL LETTER C (RI)'>&#x1F1E8;</span><span title='13.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F1E9 REGIONAL INDICATOR SYMBOL LETTER D (RI)'>&#x1F1E9;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (Other)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s13' name='s13'>13</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_ExtCccZwj)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s14' name='s14'>14</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_ExtCccZwj)'>&#x25CC;&#x308;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (Other)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s15' name='s15'>15</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='9.1'><span>&nbsp;</span>&nbsp;</span><span title='U+0903 DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts)'>&#x903;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (Other)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s16' name='s16'>16</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0600 ARABIC NUMBER SIGN (Prepend)'>&#x25A1;</span><span title='9.2'><span>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (Other)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s17' name='s17'>17</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F476 BABY (ExtPict)'>&#x1F476;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F3FF EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend)'>&#x1F3FF;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F476 BABY (ExtPict)'>&#x1F476;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s18' name='s18'>18</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F3FF EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend)'>&#x1F3FF;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F476 BABY (ExtPict)'>&#x1F476;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s19' name='s19'>19</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F3FF EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend)'>&#x1F3FF;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F476 BABY (ExtPict)'>&#x1F476;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_ExtCccZwj)'>&#x25A1;</span><span title='11.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F6D1 OCTAGONAL SIGN (ExtPict)'>&#x1F6D1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s20' name='s20'>20</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F476 BABY (ExtPict)'>&#x1F476;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F3FF EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend)'>&#x1F3FF;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_ExtCccZwj)'>&#x25CC;&#x308;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_ExtCccZwj)'>&#x25A1;</span><span title='11.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F476 BABY (ExtPict)'>&#x1F476;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F3FF EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend)'>&#x1F3FF;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s21' name='s21'>21</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F6D1 OCTAGONAL SIGN (ExtPict)'>&#x1F6D1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_ExtCccZwj)'>&#x25A1;</span><span title='11.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F6D1 OCTAGONAL SIGN (ExtPict)'>&#x1F6D1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s22' name='s22'>22</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_ExtCccZwj)'>&#x25A1;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F6D1 OCTAGONAL SIGN (ExtPict)'>&#x1F6D1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s23' name='s23'>23</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2701 UPPER BLADE SCISSORS (Other)'>&#x2701;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_ExtCccZwj)'>&#x25A1;</span><span title='11.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2701 UPPER BLADE SCISSORS (Other)'>&#x2701;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s24' name='s24'>24</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_ExtCccZwj)'>&#x25A1;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2701 UPPER BLADE SCISSORS (Other)'>&#x2701;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s25' name='s25'>25</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0915 DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant)'>&#x915;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0924 DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant)'>&#x924;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s26' name='s26'>26</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0915 DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant)'>&#x915;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+094D DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj)'>&#x25CC;&#x94D;</span><span title='9.3'><span>&nbsp;</span>&nbsp;</span><span title='U+0924 DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant)'>&#x924;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s27' name='s27'>27</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0915 DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant)'>&#x915;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+094D DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj)'>&#x25CC;&#x94D;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+094D DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj)'>&#x25CC;&#x94D;</span><span title='9.3'><span>&nbsp;</span>&nbsp;</span><span title='U+0924 DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant)'>&#x924;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s28' name='s28'>28</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0915 DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant)'>&#x915;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+094D DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj)'>&#x25CC;&#x94D;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_ExtCccZwj)'>&#x25A1;</span><span title='9.3'><span>&nbsp;</span>&nbsp;</span><span title='U+0924 DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant)'>&#x924;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s29' name='s29'>29</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0915 DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant)'>&#x915;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+093C DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj)'>&#x25CC;&#x93C;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_ExtCccZwj)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+094D DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj)'>&#x25CC;&#x94D;</span><span title='9.3'><span>&nbsp;</span>&nbsp;</span><span title='U+0924 DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant)'>&#x924;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s30' name='s30'>30</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0915 DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant)'>&#x915;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+093C DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj)'>&#x25CC;&#x93C;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+094D DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj)'>&#x25CC;&#x94D;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_ExtCccZwj)'>&#x25A1;</span><span title='9.3'><span>&nbsp;</span>&nbsp;</span><span title='U+0924 DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant)'>&#x924;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s31' name='s31'>31</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0915 DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant)'>&#x915;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+094D DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj)'>&#x25CC;&#x94D;</span><span title='9.3'><span>&nbsp;</span>&nbsp;</span><span title='U+0924 DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant)'>&#x924;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+094D DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj)'>&#x25CC;&#x94D;</span><span title='9.3'><span>&nbsp;</span>&nbsp;</span><span title='U+092F DEVANAGARI LETTER YA (ConjunctLinkingScripts_LinkingConsonant)'>&#x92F;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s32' name='s32'>32</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0915 DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant)'>&#x915;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+094D DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj)'>&#x25CC;&#x94D;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s33' name='s33'>33</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Other)'>a</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+094D DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj)'>&#x25CC;&#x94D;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0924 DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant)'>&#x924;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s34' name='s34'>34</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+003F QUESTION MARK (Other)'>?</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+094D DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj)'>&#x25CC;&#x94D;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0924 DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant)'>&#x924;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s35' name='s35'>35</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0915 DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant)'>&#x915;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+094D DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj)'>&#x25CC;&#x94D;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+094D DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj)'>&#x25CC;&#x94D;</span><span title='9.3'><span>&nbsp;</span>&nbsp;</span><span title='U+0924 DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant)'>&#x924;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
</table>
<hr width='50%'>
<div align='center'>
<center>
<table cellspacing='0' cellpadding='0' border='0'>
<tr>
<td><a href='https://www.unicode.org/copyright.html'>
<img src='https://www.unicode.org/img/hb_notice.gif' border='0' alt='Access to Copyright and terms of use' width='216' height='50'></a></td>
</tr>
</table>
</center>
</div>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

1215
src/modules/punk/char/unicode15.1/auxiliary/GraphemeBreakTest.txt

File diff suppressed because it is too large Load Diff

1028
src/modules/punk/char/unicode15.1/auxiliary/LineBreakTest.html

File diff suppressed because one or more lines are too long

10306
src/modules/punk/char/unicode15.1/auxiliary/LineBreakTest.txt

File diff suppressed because one or more lines are too long

2923
src/modules/punk/char/unicode15.1/auxiliary/SentenceBreakProperty.txt

File diff suppressed because it is too large Load Diff

300
src/modules/punk/char/unicode15.1/auxiliary/SentenceBreakTest.html

@ -0,0 +1,300 @@
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<title>Sentence Break Chart</title>
<style type='text/css'>
td, th { vertical-align: top }
</style></head>
<body bgcolor='#FFFFFF'>
<h2>Sentence_Break Chart</h2>
<p><b>Unicode Version:</b> 15.1.0</p>
<p><b>Date:</b> 2023-04-05, 20:41:29 GMT</p>
<p>This page illustrates the application of the Sentence_Break specification. The material here is informative, not normative.</p> <p>The first chart shows where breaks would appear between different sample characters or strings. The sample characters are chosen mechanically to represent the different properties used by the specification.</p><p>Each cell shows the break-status for the position between the character(s) in its row header and the character(s) in its column header. The × symbol indicates no break, while the ÷ symbol indicated a break. The cells with × are also shaded to make it easier to scan the table. For example, in the cell at the intersection of the row headed by “CR” and the column headed by “LF”, there is a × symbol, indicating that there is no break between CR and LF.</p>
<p>Some column headers may be composed, reflecting “treat as” or “ignore” rules.</p>
<p>If your browser handles titles (tooltips), then hovering the mouse over the row header will show a sample character of that type. Hovering over a column header will show the sample character, plus its abbreviated general category and script. Hovering over the intersected cells shows the rule number that produces the break-status. For example, hovering over the cell at the intersection of ATerm and Close shows ×, with the rule 9.0. Checking below the table, rule 9.0 is “SATerm Close* × ( Close | Sp | ParaSep )”, which is the one that applies to that case. Note that a rule is invoked only when no lower-numbered rules have applied.</p>
<h3><a href='#table' name='table'>Table</a></h3>
<table border='1' cellspacing='0' width='100%'><tr><th width='6%'></th><th width='6%' class='lbclass' title='U+0001 <START OF HEADING>, gc=Cc, sc=Zyyy'>Other</th><th width='6%' class='lbclass' title='U+000D <CARRIAGE RETURN (CR)>, gc=Cc, sc=Zyyy'>CR</th><th width='6%' class='lbclass' title='U+000A <LINE FEED (LF)>, gc=Cc, sc=Zyyy'>LF</th><th width='6%' class='lbclass' title='U+0085 <NEXT LINE (NEL)>, gc=Cc, sc=Zyyy'>Sep</th><th width='6%' class='lbclass' title='U+0009 <CHARACTER TABULATION>, gc=Cc, sc=Zyyy'>Sp</th><th width='6%' class='lbclass' title='U+0061 LATIN SMALL LETTER A, gc=Ll, sc=Latn'>Lower</th><th width='6%' class='lbclass' title='U+0041 LATIN CAPITAL LETTER A, gc=Lu, sc=Latn'>Upper</th><th width='6%' class='lbclass' title='U+01BB LATIN LETTER TWO WITH STROKE, gc=Lo, sc=Latn'>OLetter</th><th width='6%' class='lbclass' title='U+0030 DIGIT ZERO, gc=Nd, sc=Zyyy'>Numeric</th><th width='6%' class='lbclass' title='U+002E FULL STOP, gc=Po, sc=Zyyy'>ATerm</th><th width='6%' class='lbclass' title='U+0021 EXCLAMATION MARK, gc=Po, sc=Zyyy'>STerm</th><th width='6%' class='lbclass' title='U+0022 QUOTATION MARK, gc=Po, sc=Zyyy'>Close</th><th width='6%' class='lbclass' title='U+002C COMMA, gc=Po, sc=Zyyy'>SContinue</th><th width='6%' class='lbclass' title='U+00AD SOFT HYPHEN, gc=Cf, sc=Zyyy'>Format_FE</th><th width='6%' class='lbclass' title='U+0300 COMBINING GRAVE ACCENT, gc=Mn, sc=Zinh'>Extend_FE</th></tr>
<tr><th class='lbclass' title='U+0001 <START OF HEADING>'>Other</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+000D <CARRIAGE RETURN (CR)>'>CR</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='3.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th></tr>
<tr><th class='lbclass' title='U+000A <LINE FEED (LF)>'>LF</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th></tr>
<tr><th class='lbclass' title='U+0085 <NEXT LINE (NEL)>'>Sep</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th><th title='4.0' class='pairItem'>÷</th></tr>
<tr><th class='lbclass' title='U+0009 <CHARACTER TABULATION>'>Sp</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0061 LATIN SMALL LETTER A'>Lower</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0041 LATIN CAPITAL LETTER A'>Upper</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+01BB LATIN LETTER TWO WITH STROKE'>OLetter</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0030 DIGIT ZERO'>Numeric</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+002E FULL STOP'>ATerm</th><th title='11.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='8.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='11.0' class='pairItem'>÷</th><th title='11.0' class='pairItem'>÷</th><th title='6.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='8.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='8.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='8.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0021 EXCLAMATION MARK'>STerm</th><th title='11.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='11.0' class='pairItem'>÷</th><th title='11.0' class='pairItem'>÷</th><th title='11.0' class='pairItem'>÷</th><th title='11.0' class='pairItem'>÷</th><th title='8.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='8.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='8.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0022 QUOTATION MARK'>Close</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+002C COMMA'>SContinue</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+00AD SOFT HYPHEN'>Format_FE</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0300 COMBINING GRAVE ACCENT'>Extend_FE</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='998.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
</table>
<h3><a href='#rules' name='rules'>Rules</a></h3>
<p>This section shows the rules. They are mechanically modified for programmatic generation of the tables and test code, and thus do not match the UAX rules precisely. In particular:</p><ol><li>The rules are cast into a form that is more like regular expressions.</li><li>The rules “sot ÷”, “÷ eot”, and “÷ Any” are added mechanically, and have artificial numbers.</li><li>The rules are given decimal numbers using tenths, and are written without prefix. For example, rule SB8a is given the number 8.1.</li><li>Any “treat as” or “ignore” rules are handled as discussed in UAX #29, and thus reflected in a transformation of the rules usually not visible here. In addition, final rules like “Any ÷ Any” may be recast as the equivalent expression “÷ Any”.</li><li>In some cases, the numbering and form of a rule is changed due to “treat as” rules.</li></ol><p>For the original rules and the macro values they use, see UAX #29.</p>
<table>
<tr><th style='text-align:right'><a href='#r0.2' name='r0.2'>0.2</a></th><td style='text-align:right'>sot </td><td>÷</td><td></td></tr>
<tr><th style='text-align:right'><a href='#r0.3' name='r0.3'>0.3</a></th><td style='text-align:right'></td><td>÷</td><td> eot</td></tr>
<tr><th style='text-align:right'><a href='#r3.0' name='r3.0'>3.0</a></th><td style='text-align:right'>CR </td><td>×</td><td> LF</td></tr>
<tr><th style='text-align:right'><a href='#r4.0' name='r4.0'>4.0</a></th><td style='text-align:right'>ParaSep </td><td>÷</td><td></td></tr>
<tr><th style='text-align:right'><a href='#r5.0' name='r5.0'>5.0</a></th><td style='text-align:right'></td><td>×</td><td> [Format Extend]</td></tr>
<tr><th style='text-align:right'><a href='#r6.0' name='r6.0'>6.0</a></th><td style='text-align:right'>ATerm </td><td>×</td><td> Numeric</td></tr>
<tr><th style='text-align:right'><a href='#r7.0' name='r7.0'>7.0</a></th><td style='text-align:right'>(Upper | Lower) ATerm </td><td>×</td><td> Upper</td></tr>
<tr><th style='text-align:right'><a href='#r8.0' name='r8.0'>8.0</a></th><td style='text-align:right'>ATerm Close* Sp* </td><td>×</td><td> [^ OLetter Upper Lower Sep CR LF STerm ATerm]* Lower</td></tr>
<tr><th style='text-align:right'><a href='#r8.1' name='r8.1'>8.1</a></th><td style='text-align:right'>SATerm Close* Sp* </td><td>×</td><td> (SContinue | SATerm)</td></tr>
<tr><th style='text-align:right'><a href='#r9.0' name='r9.0'>9.0</a></th><td style='text-align:right'>SATerm Close* </td><td>×</td><td> ( Close | Sp | ParaSep )</td></tr>
<tr><th style='text-align:right'><a href='#r10.0' name='r10.0'>10.0</a></th><td style='text-align:right'>SATerm Close* Sp* </td><td>×</td><td> ( Sp | ParaSep )</td></tr>
<tr><th style='text-align:right'><a href='#r11.0' name='r11.0'>11.0</a></th><td style='text-align:right'>SATerm Close* Sp* ParaSep? </td><td>÷</td><td></td></tr>
<tr><th style='text-align:right'><a href='#r998.0' name='r998.0'>998.0</a></th><td style='text-align:right'></td><td>×</td><td> Any</td></tr>
<tr><th style='text-align:right'><a href='#r999.0' name='r999.0'>999.0</a></th><td style='text-align:right'></td><td>÷</td><td> Any</td></tr>
</table>
<h3><a href='#samples' name='samples'>Sample Strings</a></h3>
<p>The following samples illustrate the application of the rules. The blue lines indicate possible break points. If your browser supports titles (tooltips), then positioning the mouse over each character will show its name, while positioning between characters shows the number of the rule responsible for the break-status.</p>
<table>
<tr><th style='text-align:right'><a href='#s1' name='s1'>1</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+000D &lt;CARRIAGE RETURN (CR)&gt; (CR)'>&#x25A1;</span><span title='3.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s2' name='s2'>2</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s3' name='s3'>3</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (Extend_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0646 ARABIC LETTER NOON (OLetter)'>&#x646;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s4' name='s4'>4</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0646 ARABIC LETTER NOON (OLetter)'>&#x646;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (Extend_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s5' name='s5'>5</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0028 LEFT PARENTHESIS (Close)'>(</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0022 QUOTATION MARK (Close)'>&quot;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0047 LATIN CAPITAL LETTER G (Upper)'>G</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+006F LATIN SMALL LETTER O (Lower)'>o</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0022 QUOTATION MARK (Close)'>&quot;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0028 LEFT PARENTHESIS (Close)'>(</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0048 LATIN CAPITAL LETTER H (Upper)'>H</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0064 LATIN SMALL LETTER D (Lower)'>d</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0069 LATIN SMALL LETTER I (Lower)'>i</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0064 LATIN SMALL LETTER D (Lower)'>d</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s6' name='s6'>6</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0028 LEFT PARENTHESIS (Close)'>(</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+201C LEFT DOUBLE QUOTATION MARK (Close)'>&#x201C;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0047 LATIN CAPITAL LETTER G (Upper)'>G</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+006F LATIN SMALL LETTER O (Lower)'>o</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+003F QUESTION MARK (STerm)'>?</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+201D RIGHT DOUBLE QUOTATION MARK (Close)'>&#x201D;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0028 LEFT PARENTHESIS (Close)'>(</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0048 LATIN CAPITAL LETTER H (Upper)'>H</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0064 LATIN SMALL LETTER D (Lower)'>d</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0069 LATIN SMALL LETTER I (Lower)'>i</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0064 LATIN SMALL LETTER D (Lower)'>d</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s7' name='s7'>7</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0055 LATIN CAPITAL LETTER U (Upper)'>U</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0053 LATIN CAPITAL LETTER S (Upper)'>S</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (Upper)'>A</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0300 COMBINING GRAVE ACCENT (Extend_FE)'>&#x25CC;&#x300;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0069 LATIN SMALL LETTER I (Lower)'>i</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0073 LATIN SMALL LETTER S (Lower)'>s</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s8' name='s8'>8</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0055 LATIN CAPITAL LETTER U (Upper)'>U</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0053 LATIN CAPITAL LETTER S (Upper)'>S</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (Upper)'>A</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0300 COMBINING GRAVE ACCENT (Extend_FE)'>&#x25CC;&#x300;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+003F QUESTION MARK (STerm)'>?</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0048 LATIN CAPITAL LETTER H (Upper)'>H</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s9' name='s9'>9</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0055 LATIN CAPITAL LETTER U (Upper)'>U</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0053 LATIN CAPITAL LETTER S (Upper)'>S</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (Upper)'>A</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0300 COMBINING GRAVE ACCENT (Extend_FE)'>&#x25CC;&#x300;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s10' name='s10'>10</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0033 DIGIT THREE (Numeric)'>3</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='6.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0034 DIGIT FOUR (Numeric)'>4</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s11' name='s11'>11</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0064 LATIN SMALL LETTER D (Lower)'>d</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s12' name='s12'>12</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0043 LATIN CAPITAL LETTER C (Upper)'>C</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0064 LATIN SMALL LETTER D (Lower)'>d</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s13' name='s13'>13</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0044 LATIN CAPITAL LETTER D (Upper)'>D</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s14' name='s14'>14</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0043 LATIN CAPITAL LETTER C (Upper)'>C</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0044 LATIN CAPITAL LETTER D (Upper)'>D</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s15' name='s15'>15</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2019 RIGHT SINGLE QUOTATION MARK (Close)'>&#x2019;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+00A0 NO-BREAK SPACE (Sp)'>&#xA0;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s16' name='s16'>16</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2019 RIGHT SINGLE QUOTATION MARK (Close)'>&#x2019;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+00A0 NO-BREAK SPACE (Sp)'>&#xA0;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0054 LATIN CAPITAL LETTER T (Upper)'>T</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s17' name='s17'>17</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2019 RIGHT SINGLE QUOTATION MARK (Close)'>&#x2019;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+00A0 NO-BREAK SPACE (Sp)'>&#xA0;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2018 LEFT SINGLE QUOTATION MARK (Close)'>&#x2018;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0028 LEFT PARENTHESIS (Close)'>(</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s18' name='s18'>18</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2019 RIGHT SINGLE QUOTATION MARK (Close)'>&#x2019;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+00A0 NO-BREAK SPACE (Sp)'>&#xA0;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2018 LEFT SINGLE QUOTATION MARK (Close)'>&#x2018;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0028 LEFT PARENTHESIS (Close)'>(</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0054 LATIN CAPITAL LETTER T (Upper)'>T</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s19' name='s19'>19</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2019 RIGHT SINGLE QUOTATION MARK (Close)'>&#x2019;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+00A0 NO-BREAK SPACE (Sp)'>&#xA0;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s20' name='s20'>20</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2019 RIGHT SINGLE QUOTATION MARK (Close)'>&#x2019;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+00A0 NO-BREAK SPACE (Sp)'>&#xA0;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0054 LATIN CAPITAL LETTER T (Upper)'>T</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s21' name='s21'>21</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2019 RIGHT SINGLE QUOTATION MARK (Close)'>&#x2019;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0054 LATIN CAPITAL LETTER T (Upper)'>T</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s22' name='s22'>22</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0054 LATIN CAPITAL LETTER T (Upper)'>T</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s23' name='s23'>23</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0072 LATIN SMALL LETTER R (Lower)'>r</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0073 LATIN SMALL LETTER S (Lower)'>s</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0070 LATIN SMALL LETTER P (Lower)'>p</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+006C LATIN SMALL LETTER L (Lower)'>l</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0064 LATIN SMALL LETTER D (Lower)'>d</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0072 LATIN SMALL LETTER R (Lower)'>r</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0073 LATIN SMALL LETTER S (Lower)'>s</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0072 LATIN SMALL LETTER R (Lower)'>r</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s24' name='s24'>24</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+5B57 CJK UNIFIED IDEOGRAPH-5B57 (OLetter)'>&#x5B57;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+5B57 CJK UNIFIED IDEOGRAPH-5B57 (OLetter)'>&#x5B57;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s25' name='s25'>25</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+5B83 CJK UNIFIED IDEOGRAPH-5B83 (OLetter)'>&#x5B83;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s26' name='s26'>26</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='8.1'><span>&nbsp;</span>&nbsp;</span><span title='U+3002 IDEOGRAPHIC FULL STOP (STerm)'>&#x3002;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s27' name='s27'>27</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+5B57 CJK UNIFIED IDEOGRAPH-5B57 (OLetter)'>&#x5B57;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+3002 IDEOGRAPHIC FULL STOP (STerm)'>&#x3002;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+5B83 CJK UNIFIED IDEOGRAPH-5B83 (OLetter)'>&#x5B83;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s28' name='s28'>28</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0021 EXCLAMATION MARK (STerm)'>!</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='10.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s29' name='s29'>29</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s30' name='s30'>30</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000D &lt;CARRIAGE RETURN (CR)&gt; (CR)'>&#x25A1;</span><span title='3.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s31' name='s31'>31</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000D &lt;CARRIAGE RETURN (CR)&gt; (CR)'>&#x25A1;</span><span title='3.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s32' name='s32'>32</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000D &lt;CARRIAGE RETURN (CR)&gt; (CR)'>&#x25A1;</span><span title='3.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s33' name='s33'>33</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (Upper)'>A</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000D &lt;CARRIAGE RETURN (CR)&gt; (CR)'>&#x25A1;</span><span title='3.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (Upper)'>A</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s34' name='s34'>34</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0028 LEFT PARENTHESIS (Close)'>(</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0022 QUOTATION MARK (Close)'>&quot;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0047 LATIN CAPITAL LETTER G (Upper)'>G</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+006F LATIN SMALL LETTER O (Lower)'>o</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0022 QUOTATION MARK (Close)'>&quot;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0028 LEFT PARENTHESIS (Close)'>(</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0048 LATIN CAPITAL LETTER H (Upper)'>H</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0064 LATIN SMALL LETTER D (Lower)'>d</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0069 LATIN SMALL LETTER I (Lower)'>i</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0064 LATIN SMALL LETTER D (Lower)'>d</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s35' name='s35'>35</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0028 LEFT PARENTHESIS (Close)'>(</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+201C LEFT DOUBLE QUOTATION MARK (Close)'>&#x201C;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0047 LATIN CAPITAL LETTER G (Upper)'>G</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+006F LATIN SMALL LETTER O (Lower)'>o</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+003F QUESTION MARK (STerm)'>?</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+201D RIGHT DOUBLE QUOTATION MARK (Close)'>&#x201D;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0028 LEFT PARENTHESIS (Close)'>(</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0048 LATIN CAPITAL LETTER H (Upper)'>H</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0064 LATIN SMALL LETTER D (Lower)'>d</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0069 LATIN SMALL LETTER I (Lower)'>i</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0064 LATIN SMALL LETTER D (Lower)'>d</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s36' name='s36'>36</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0055 LATIN CAPITAL LETTER U (Upper)'>U</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0053 LATIN CAPITAL LETTER S (Upper)'>S</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (Upper)'>A</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0300 COMBINING GRAVE ACCENT (Extend_FE)'>&#x25CC;&#x300;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0069 LATIN SMALL LETTER I (Lower)'>i</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0073 LATIN SMALL LETTER S (Lower)'>s</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s37' name='s37'>37</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0055 LATIN CAPITAL LETTER U (Upper)'>U</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0053 LATIN CAPITAL LETTER S (Upper)'>S</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (Upper)'>A</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0300 COMBINING GRAVE ACCENT (Extend_FE)'>&#x25CC;&#x300;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+003F QUESTION MARK (STerm)'>?</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0048 LATIN CAPITAL LETTER H (Upper)'>H</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s38' name='s38'>38</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0055 LATIN CAPITAL LETTER U (Upper)'>U</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0053 LATIN CAPITAL LETTER S (Upper)'>S</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (Upper)'>A</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0300 COMBINING GRAVE ACCENT (Extend_FE)'>&#x25CC;&#x300;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s39' name='s39'>39</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0033 DIGIT THREE (Numeric)'>3</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='6.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0034 DIGIT FOUR (Numeric)'>4</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s40' name='s40'>40</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0064 LATIN SMALL LETTER D (Lower)'>d</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s41' name='s41'>41</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0043 LATIN CAPITAL LETTER C (Upper)'>C</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0064 LATIN SMALL LETTER D (Lower)'>d</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s42' name='s42'>42</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0044 LATIN CAPITAL LETTER D (Upper)'>D</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s43' name='s43'>43</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0043 LATIN CAPITAL LETTER C (Upper)'>C</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0044 LATIN CAPITAL LETTER D (Upper)'>D</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s44' name='s44'>44</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2019 RIGHT SINGLE QUOTATION MARK (Close)'>&#x2019;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+00A0 NO-BREAK SPACE (Sp)'>&#xA0;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s45' name='s45'>45</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2019 RIGHT SINGLE QUOTATION MARK (Close)'>&#x2019;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+00A0 NO-BREAK SPACE (Sp)'>&#xA0;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0054 LATIN CAPITAL LETTER T (Upper)'>T</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s46' name='s46'>46</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2019 RIGHT SINGLE QUOTATION MARK (Close)'>&#x2019;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+00A0 NO-BREAK SPACE (Sp)'>&#xA0;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2018 LEFT SINGLE QUOTATION MARK (Close)'>&#x2018;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0028 LEFT PARENTHESIS (Close)'>(</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s47' name='s47'>47</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2019 RIGHT SINGLE QUOTATION MARK (Close)'>&#x2019;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+00A0 NO-BREAK SPACE (Sp)'>&#xA0;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2018 LEFT SINGLE QUOTATION MARK (Close)'>&#x2018;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0028 LEFT PARENTHESIS (Close)'>(</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0054 LATIN CAPITAL LETTER T (Upper)'>T</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s48' name='s48'>48</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2019 RIGHT SINGLE QUOTATION MARK (Close)'>&#x2019;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+00A0 NO-BREAK SPACE (Sp)'>&#xA0;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s49' name='s49'>49</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2019 RIGHT SINGLE QUOTATION MARK (Close)'>&#x2019;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+00A0 NO-BREAK SPACE (Sp)'>&#xA0;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0054 LATIN CAPITAL LETTER T (Upper)'>T</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s50' name='s50'>50</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2019 RIGHT SINGLE QUOTATION MARK (Close)'>&#x2019;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0054 LATIN CAPITAL LETTER T (Upper)'>T</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s51' name='s51'>51</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0029 RIGHT PARENTHESIS (Close)'>)</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0054 LATIN CAPITAL LETTER T (Upper)'>T</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s52' name='s52'>52</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0068 LATIN SMALL LETTER H (Lower)'>h</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0072 LATIN SMALL LETTER R (Lower)'>r</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0073 LATIN SMALL LETTER S (Lower)'>s</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0070 LATIN SMALL LETTER P (Lower)'>p</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+006C LATIN SMALL LETTER L (Lower)'>l</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0064 LATIN SMALL LETTER D (Lower)'>d</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0072 LATIN SMALL LETTER R (Lower)'>r</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0073 LATIN SMALL LETTER S (Lower)'>s</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0072 LATIN SMALL LETTER R (Lower)'>r</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s53' name='s53'>53</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+5B57 CJK UNIFIED IDEOGRAPH-5B57 (OLetter)'>&#x5B57;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+5B57 CJK UNIFIED IDEOGRAPH-5B57 (OLetter)'>&#x5B57;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s54' name='s54'>54</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+5B83 CJK UNIFIED IDEOGRAPH-5B83 (OLetter)'>&#x5B83;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s55' name='s55'>55</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0065 LATIN SMALL LETTER E (Lower)'>e</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0074 LATIN SMALL LETTER T (Lower)'>t</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0063 LATIN SMALL LETTER C (Lower)'>c</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='8.1'><span>&nbsp;</span>&nbsp;</span><span title='U+3002 IDEOGRAPHIC FULL STOP (STerm)'>&#x3002;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s56' name='s56'>56</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+5B57 CJK UNIFIED IDEOGRAPH-5B57 (OLetter)'>&#x5B57;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+3002 IDEOGRAPHIC FULL STOP (STerm)'>&#x3002;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='11.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+5B83 CJK UNIFIED IDEOGRAPH-5B83 (OLetter)'>&#x5B83;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s57' name='s57'>57</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0021 EXCLAMATION MARK (STerm)'>!</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='10.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s58' name='s58'>58</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s59' name='s59'>59</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000D &lt;CARRIAGE RETURN (CR)&gt; (CR)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s60' name='s60'>60</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000D &lt;CARRIAGE RETURN (CR)&gt; (CR)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (Sp)'> </span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s61' name='s61'>61</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000D &lt;CARRIAGE RETURN (CR)&gt; (CR)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (Lower)'>a</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s62' name='s62'>62</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (Upper)'>A</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002E FULL STOP (ATerm)'>.</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000D &lt;CARRIAGE RETURN (CR)&gt; (CR)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='998.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='4.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (Upper)'>A</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+2060 WORD JOINER (Format_FE)'>&#x25A1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
</table>
<hr width='50%'>
<div align='center'>
<center>
<table cellspacing='0' cellpadding='0' border='0'>
<tr>
<td><a href='https://www.unicode.org/copyright.html'>
<img src='https://www.unicode.org/img/hb_notice.gif' border='0' alt='Access to Copyright and terms of use' width='216' height='50'></a></td>
</tr>
</table>
</center>
</div>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

540
src/modules/punk/char/unicode15.1/auxiliary/SentenceBreakTest.txt

@ -0,0 +1,540 @@
# SentenceBreakTest-15.1.0.txt
# Date: 2023-04-05, 20:41:29 GMT
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# Default Sentence_Break Test
#
# Format:
# <string> (# <comment>)?
# <string> contains hex Unicode code points, with
# ÷ wherever there is a break opportunity, and
# × wherever there is not.
# <comment> the format can change, but currently it shows:
# - the sample character name
# - (x) the Sentence_Break property value for the sample character
# - [x] the rule that determines whether there is a break or not,
# as listed in the Rules section of SentenceBreakTest.html
#
# These samples may be extended or changed in the future.
#
÷ 0001 × 0001 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0001 × 0308 × 0001 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0001 × 000D ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0001 × 0308 × 000D ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0001 × 000A ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0001 × 0308 × 000A ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0001 × 0085 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0001 × 0308 × 0085 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0001 × 0009 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0001 × 0308 × 0009 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0001 × 0061 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0001 × 0308 × 0061 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0001 × 0041 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0001 × 0308 × 0041 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0001 × 01BB ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0001 × 0308 × 01BB ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0001 × 0030 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0001 × 0308 × 0030 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0001 × 002E ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0001 × 0308 × 002E ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0001 × 0021 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0001 × 0308 × 0021 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0001 × 0022 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0001 × 0308 × 0022 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0001 × 002C ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0001 × 0308 × 002C ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0001 × 00AD ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0001 × 0308 × 00AD ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0001 × 0300 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0001 × 0308 × 0300 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 000D ÷ 0001 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 000D ÷ 0308 × 0001 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 000D ÷ 000D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 000D ÷ 0308 × 000D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 000D × 000A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 000D ÷ 0308 × 000A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 000D ÷ 0085 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 000D ÷ 0308 × 0085 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 000D ÷ 0009 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 000D ÷ 0308 × 0009 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 000D ÷ 0061 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 000D ÷ 0308 × 0061 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 000D ÷ 0041 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 000D ÷ 0308 × 0041 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 000D ÷ 01BB ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 000D ÷ 0308 × 01BB ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 000D ÷ 0030 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 000D ÷ 0308 × 0030 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 000D ÷ 002E ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3]
÷ 000D ÷ 0308 × 002E ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 000D ÷ 0021 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 000D ÷ 0308 × 0021 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 000D ÷ 0022 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 000D ÷ 0308 × 0022 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 000D ÷ 002C ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMMA (SContinue) ÷ [0.3]
÷ 000D ÷ 0308 × 002C ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 000D ÷ 00AD ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 000D ÷ 0308 × 00AD ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 000D ÷ 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 000D ÷ 0308 × 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 000A ÷ 0001 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 000A ÷ 0308 × 0001 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 000A ÷ 000D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 000A ÷ 0308 × 000D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 000A ÷ 000A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 000A ÷ 0308 × 000A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 000A ÷ 0085 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 000A ÷ 0308 × 0085 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 000A ÷ 0009 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 000A ÷ 0308 × 0009 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 000A ÷ 0061 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 000A ÷ 0308 × 0061 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 000A ÷ 0041 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 000A ÷ 0308 × 0041 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 000A ÷ 01BB ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 000A ÷ 0308 × 01BB ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 000A ÷ 0030 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 000A ÷ 0308 × 0030 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 000A ÷ 002E ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3]
÷ 000A ÷ 0308 × 002E ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 000A ÷ 0021 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 000A ÷ 0308 × 0021 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 000A ÷ 0022 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 000A ÷ 0308 × 0022 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 000A ÷ 002C ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMMA (SContinue) ÷ [0.3]
÷ 000A ÷ 0308 × 002C ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 000A ÷ 00AD ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 000A ÷ 0308 × 00AD ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 000A ÷ 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 000A ÷ 0308 × 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0085 ÷ 0001 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0085 ÷ 0308 × 0001 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0085 ÷ 000D ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0085 ÷ 0308 × 000D ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0085 ÷ 000A ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0085 ÷ 0308 × 000A ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0085 ÷ 0085 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0085 ÷ 0308 × 0085 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0085 ÷ 0009 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0085 ÷ 0308 × 0009 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0085 ÷ 0061 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0085 ÷ 0308 × 0061 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0085 ÷ 0041 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0085 ÷ 0308 × 0041 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0085 ÷ 01BB ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0085 ÷ 0308 × 01BB ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0085 ÷ 0030 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0085 ÷ 0308 × 0030 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0085 ÷ 002E ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0085 ÷ 0308 × 002E ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0085 ÷ 0021 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0085 ÷ 0308 × 0021 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0085 ÷ 0022 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0085 ÷ 0308 × 0022 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0085 ÷ 002C ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMMA (SContinue) ÷ [0.3]
÷ 0085 ÷ 0308 × 002C ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0085 ÷ 00AD ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0085 ÷ 0308 × 00AD ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0085 ÷ 0300 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0085 ÷ 0308 × 0300 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0009 × 0001 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0009 × 0308 × 0001 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0009 × 000D ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0009 × 0308 × 000D ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0009 × 000A ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0009 × 0308 × 000A ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0009 × 0085 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0009 × 0308 × 0085 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0009 × 0009 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0009 × 0308 × 0009 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0009 × 0061 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0009 × 0308 × 0061 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0009 × 0041 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0009 × 0308 × 0041 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0009 × 01BB ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0009 × 0308 × 01BB ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0009 × 0030 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0009 × 0308 × 0030 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0009 × 002E ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0009 × 0308 × 002E ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0009 × 0021 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0009 × 0308 × 0021 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0009 × 0022 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0009 × 0308 × 0022 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0009 × 002C ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0009 × 0308 × 002C ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0009 × 00AD ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0009 × 0308 × 00AD ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0009 × 0300 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0009 × 0308 × 0300 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0061 × 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0061 × 0308 × 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0061 × 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0061 × 0308 × 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0061 × 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0061 × 0308 × 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0061 × 0085 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0061 × 0308 × 0085 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0061 × 0009 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0061 × 0308 × 0009 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0061 × 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0061 × 0308 × 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0061 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0061 × 0308 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0061 × 01BB ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0061 × 0308 × 01BB ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0061 × 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0061 × 0308 × 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0061 × 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0061 × 0308 × 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0061 × 0021 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0061 × 0308 × 0021 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0061 × 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0061 × 0308 × 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0061 × 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0061 × 0308 × 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0061 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0061 × 0308 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0061 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0061 × 0308 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0041 × 0001 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0041 × 0308 × 0001 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0041 × 000D ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0041 × 0308 × 000D ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0041 × 000A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0041 × 0308 × 000A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0041 × 0085 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0041 × 0308 × 0085 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0041 × 0009 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0041 × 0308 × 0009 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0041 × 0061 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0041 × 0308 × 0061 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0041 × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0041 × 0308 × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0041 × 01BB ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0041 × 0308 × 01BB ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0041 × 0030 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0041 × 0308 × 0030 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0041 × 002E ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0041 × 0308 × 002E ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0041 × 0021 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0041 × 0308 × 0021 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0041 × 0022 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0041 × 0308 × 0022 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0041 × 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0041 × 0308 × 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0041 × 00AD ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0041 × 0308 × 00AD ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0041 × 0300 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0041 × 0308 × 0300 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 01BB × 0001 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 01BB × 0308 × 0001 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 01BB × 000D ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 01BB × 0308 × 000D ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 01BB × 000A ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 01BB × 0308 × 000A ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 01BB × 0085 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 01BB × 0308 × 0085 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 01BB × 0009 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 01BB × 0308 × 0009 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 01BB × 0061 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 01BB × 0308 × 0061 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 01BB × 0041 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 01BB × 0308 × 0041 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 01BB × 01BB ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 01BB × 0308 × 01BB ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 01BB × 0030 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 01BB × 0308 × 0030 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 01BB × 002E ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 01BB × 0308 × 002E ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 01BB × 0021 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 01BB × 0308 × 0021 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 01BB × 0022 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 01BB × 0308 × 0022 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 01BB × 002C ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 01BB × 0308 × 002C ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 01BB × 00AD ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 01BB × 0308 × 00AD ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 01BB × 0300 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 01BB × 0308 × 0300 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0030 × 0001 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0030 × 0308 × 0001 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0030 × 000D ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0030 × 0308 × 000D ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0030 × 000A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0030 × 0308 × 000A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0030 × 0085 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0030 × 0308 × 0085 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0030 × 0009 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0030 × 0308 × 0009 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0030 × 0061 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0030 × 0308 × 0061 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0030 × 0041 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0030 × 0308 × 0041 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0030 × 01BB ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0030 × 0308 × 01BB ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0030 × 0030 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0030 × 0308 × 0030 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0030 × 002E ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0030 × 0308 × 002E ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0030 × 0021 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0030 × 0308 × 0021 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0030 × 0022 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0030 × 0308 × 0022 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0030 × 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0030 × 0308 × 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0030 × 00AD ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0030 × 0308 × 00AD ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0030 × 0300 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0030 × 0308 × 0300 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 002E ÷ 0001 ÷ # ÷ [0.2] FULL STOP (ATerm) ÷ [11.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 002E × 0308 ÷ 0001 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 002E × 000D ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 002E × 0308 × 000D ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 002E × 000A ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 002E × 0308 × 000A ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 002E × 0085 ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 002E × 0308 × 0085 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 002E × 0009 ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 002E × 0308 × 0009 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 002E × 0061 ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 002E × 0308 × 0061 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 002E ÷ 0041 ÷ # ÷ [0.2] FULL STOP (ATerm) ÷ [11.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 002E × 0308 ÷ 0041 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 002E ÷ 01BB ÷ # ÷ [0.2] FULL STOP (ATerm) ÷ [11.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 002E × 0308 ÷ 01BB ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 002E × 0030 ÷ # ÷ [0.2] FULL STOP (ATerm) × [6.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 002E × 0308 × 0030 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [6.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 002E × 002E ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.1] FULL STOP (ATerm) ÷ [0.3]
÷ 002E × 0308 × 002E ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] FULL STOP (ATerm) ÷ [0.3]
÷ 002E × 0021 ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.1] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 002E × 0308 × 0021 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 002E × 0022 ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 002E × 0308 × 0022 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 002E × 002C ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.1] COMMA (SContinue) ÷ [0.3]
÷ 002E × 0308 × 002C ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] COMMA (SContinue) ÷ [0.3]
÷ 002E × 00AD ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 002E × 0308 × 00AD ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 002E × 0300 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 002E × 0308 × 0300 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0021 ÷ 0001 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0021 × 0308 ÷ 0001 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0021 × 000D ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0021 × 0308 × 000D ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0021 × 000A ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0021 × 0308 × 000A ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0021 × 0085 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0021 × 0308 × 0085 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0021 × 0009 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0021 × 0308 × 0009 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0021 ÷ 0061 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0021 × 0308 ÷ 0061 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0021 ÷ 0041 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0021 × 0308 ÷ 0041 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0021 ÷ 01BB ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0021 × 0308 ÷ 01BB ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0021 ÷ 0030 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0021 × 0308 ÷ 0030 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0021 × 002E ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [8.1] FULL STOP (ATerm) ÷ [0.3]
÷ 0021 × 0308 × 002E ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] FULL STOP (ATerm) ÷ [0.3]
÷ 0021 × 0021 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [8.1] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0021 × 0308 × 0021 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0021 × 0022 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0021 × 0308 × 0022 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0021 × 002C ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [8.1] COMMA (SContinue) ÷ [0.3]
÷ 0021 × 0308 × 002C ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] COMMA (SContinue) ÷ [0.3]
÷ 0021 × 00AD ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0021 × 0308 × 00AD ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0021 × 0300 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0021 × 0308 × 0300 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0022 × 0001 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0022 × 0308 × 0001 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0022 × 000D ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0022 × 0308 × 000D ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0022 × 000A ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0022 × 0308 × 000A ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0022 × 0085 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0022 × 0308 × 0085 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0022 × 0009 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0022 × 0308 × 0009 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0022 × 0061 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0022 × 0308 × 0061 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0022 × 0041 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0022 × 0308 × 0041 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0022 × 01BB ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0022 × 0308 × 01BB ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0022 × 0030 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0022 × 0308 × 0030 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0022 × 002E ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0022 × 0308 × 002E ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0022 × 0021 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0022 × 0308 × 0021 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0022 × 0022 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0022 × 0308 × 0022 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0022 × 002C ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0022 × 0308 × 002C ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0022 × 00AD ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0022 × 0308 × 00AD ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0022 × 0300 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0022 × 0308 × 0300 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 002C × 0001 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 002C × 0308 × 0001 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 002C × 000D ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 002C × 0308 × 000D ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 002C × 000A ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 002C × 0308 × 000A ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 002C × 0085 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 002C × 0308 × 0085 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 002C × 0009 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 002C × 0308 × 0009 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 002C × 0061 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 002C × 0308 × 0061 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 002C × 0041 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 002C × 0308 × 0041 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 002C × 01BB ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 002C × 0308 × 01BB ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 002C × 0030 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 002C × 0308 × 0030 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 002C × 002E ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 002C × 0308 × 002E ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 002C × 0021 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 002C × 0308 × 0021 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 002C × 0022 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 002C × 0308 × 0022 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 002C × 002C ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 002C × 0308 × 002C ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 002C × 00AD ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 002C × 0308 × 00AD ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 002C × 0300 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 002C × 0308 × 0300 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 00AD × 0001 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 00AD × 0308 × 0001 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 00AD × 000D ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 00AD × 0308 × 000D ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 00AD × 000A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 00AD × 0308 × 000A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 00AD × 0085 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 00AD × 0308 × 0085 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 00AD × 0009 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 00AD × 0308 × 0009 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 00AD × 0061 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 00AD × 0308 × 0061 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 00AD × 0041 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 00AD × 0308 × 0041 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 00AD × 01BB ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 00AD × 0308 × 01BB ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 00AD × 0030 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 00AD × 0308 × 0030 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 00AD × 002E ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 00AD × 0308 × 002E ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 00AD × 0021 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 00AD × 0308 × 0021 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 00AD × 0022 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 00AD × 0308 × 0022 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 00AD × 002C ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 00AD × 0308 × 002C ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 00AD × 00AD ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 00AD × 0308 × 00AD ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 00AD × 0300 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 00AD × 0308 × 0300 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0300 × 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0300 × 0308 × 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 0300 × 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0300 × 0308 × 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
÷ 0300 × 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0300 × 0308 × 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0300 × 0085 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0300 × 0308 × 0085 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
÷ 0300 × 0009 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0300 × 0308 × 0009 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
÷ 0300 × 0061 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0300 × 0308 × 0061 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0300 × 0041 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0300 × 0308 × 0041 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 0300 × 01BB ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0300 × 0308 × 01BB ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
÷ 0300 × 0030 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0300 × 0308 × 0030 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0300 × 002E ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0300 × 0308 × 002E ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0300 × 0021 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0300 × 0308 × 0021 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
÷ 0300 × 0022 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0300 × 0308 × 0022 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
÷ 0300 × 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0300 × 0308 × 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
÷ 0300 × 00AD ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0300 × 0308 × 00AD ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 0300 × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
÷ 000D × 000A ÷ 0061 × 000A ÷ 0308 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN SMALL LETTER A (Lower) × [998.0] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [0.3]
÷ 0061 × 0308 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [0.3]
÷ 0020 × 200D × 0646 ÷ # ÷ [0.2] SPACE (Sp) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [998.0] ARABIC LETTER NOON (OLetter) ÷ [0.3]
÷ 0646 × 200D × 0020 ÷ # ÷ [0.2] ARABIC LETTER NOON (OLetter) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [998.0] SPACE (Sp) ÷ [0.3]
÷ 0028 × 0022 × 0047 × 006F × 002E × 0022 × 0029 × 0020 ÷ 0028 × 0048 × 0065 × 0020 × 0064 × 0069 × 0064 × 002E × 0029 ÷ # ÷ [0.2] LEFT PARENTHESIS (Close) × [998.0] QUOTATION MARK (Close) × [998.0] LATIN CAPITAL LETTER G (Upper) × [998.0] LATIN SMALL LETTER O (Lower) × [998.0] FULL STOP (ATerm) × [9.0] QUOTATION MARK (Close) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] SPACE (Sp) ÷ [11.0] LEFT PARENTHESIS (Close) × [998.0] LATIN CAPITAL LETTER H (Upper) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] LATIN SMALL LETTER I (Lower) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) ÷ [0.3]
÷ 0028 × 201C × 0047 × 006F × 003F × 201D × 0029 × 0020 ÷ 0028 × 0048 × 0065 × 0020 × 0064 × 0069 × 0064 × 002E × 0029 ÷ # ÷ [0.2] LEFT PARENTHESIS (Close) × [998.0] LEFT DOUBLE QUOTATION MARK (Close) × [998.0] LATIN CAPITAL LETTER G (Upper) × [998.0] LATIN SMALL LETTER O (Lower) × [998.0] QUESTION MARK (STerm) × [9.0] RIGHT DOUBLE QUOTATION MARK (Close) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] SPACE (Sp) ÷ [11.0] LEFT PARENTHESIS (Close) × [998.0] LATIN CAPITAL LETTER H (Upper) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] LATIN SMALL LETTER I (Lower) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) ÷ [0.3]
÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 002E × 0020 × 0069 × 0073 ÷ # ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) × [8.0] SPACE (Sp) × [8.0] LATIN SMALL LETTER I (Lower) × [998.0] LATIN SMALL LETTER S (Lower) ÷ [0.3]
÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 003F × 0020 ÷ 0048 × 0065 ÷ # ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] QUESTION MARK (STerm) × [9.0] SPACE (Sp) ÷ [11.0] LATIN CAPITAL LETTER H (Upper) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 002E ÷ # ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0033 × 002E × 0034 ÷ # ÷ [0.2] DIGIT THREE (Numeric) × [998.0] FULL STOP (ATerm) × [6.0] DIGIT FOUR (Numeric) ÷ [0.3]
÷ 0063 × 002E × 0064 ÷ # ÷ [0.2] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER D (Lower) ÷ [0.3]
÷ 0043 × 002E × 0064 ÷ # ÷ [0.2] LATIN CAPITAL LETTER C (Upper) × [998.0] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER D (Lower) ÷ [0.3]
÷ 0063 × 002E × 0044 ÷ # ÷ [0.2] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER D (Upper) ÷ [0.3]
÷ 0043 × 002E × 0044 ÷ # ÷ [0.2] LATIN CAPITAL LETTER C (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER D (Upper) ÷ [0.3]
÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0074 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [8.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 ÷ 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 2018 × 0028 × 0074 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [8.0] LEFT SINGLE QUOTATION MARK (Close) × [998.0] LEFT PARENTHESIS (Close) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 ÷ 2018 × 0028 × 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) ÷ [11.0] LEFT SINGLE QUOTATION MARK (Close) × [998.0] LEFT PARENTHESIS (Close) × [998.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0308 × 0074 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0308 ÷ 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 0308 ÷ 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
÷ 0065 × 0074 × 0063 × 002E × 0029 × 000A ÷ 0308 × 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
÷ 0074 × 0068 × 0065 × 0020 × 0072 × 0065 × 0073 × 0070 × 002E × 0020 × 006C × 0065 × 0061 × 0064 × 0065 × 0072 × 0073 × 0020 × 0061 × 0072 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER R (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER S (Lower) × [998.0] LATIN SMALL LETTER P (Lower) × [998.0] FULL STOP (ATerm) × [8.0] SPACE (Sp) × [8.0] LATIN SMALL LETTER L (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER A (Lower) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER R (Lower) × [998.0] LATIN SMALL LETTER S (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER A (Lower) × [998.0] LATIN SMALL LETTER R (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
÷ 5B57 × 002E ÷ 5B57 ÷ # ÷ [0.2] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [998.0] FULL STOP (ATerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) ÷ [0.3]
÷ 0065 × 0074 × 0063 × 002E ÷ 5B83 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3]
÷ 0065 × 0074 × 0063 × 002E × 3002 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.1] IDEOGRAPHIC FULL STOP (STerm) ÷ [0.3]
÷ 5B57 × 3002 ÷ 5B83 ÷ # ÷ [0.2] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [998.0] IDEOGRAPHIC FULL STOP (STerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3]
÷ 0021 × 0020 × 0020 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] SPACE (Sp) × [10.0] SPACE (Sp) ÷ [0.3]
÷ 0061 × 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] FULL STOP (ATerm) ÷ [0.3]
÷ 0061 × 002E × 000D × 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] FULL STOP (ATerm) × [9.0] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [0.3]
÷ 0061 × 002E × 000D × 000A ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] FULL STOP (ATerm) × [9.0] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [4.0] SPACE (Sp) ÷ [0.3]
÷ 0061 × 002E × 000D × 000A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] FULL STOP (ATerm) × [9.0] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
÷ 0041 × 002E × 000D × 000A ÷ 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] FULL STOP (ATerm) × [9.0] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 2060 × 0028 × 2060 × 0022 × 2060 × 0047 × 2060 × 006F × 2060 × 002E × 2060 × 0022 × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0028 × 2060 × 201C × 2060 × 0047 × 2060 × 006F × 2060 × 003F × 2060 × 201D × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LEFT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] QUESTION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 0020 × 2060 × 0069 × 2060 × 0073 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 003F × 2060 × 0020 × 2060 ÷ 0048 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] QUESTION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0033 × 2060 × 002E × 2060 × 0034 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] DIGIT THREE (Numeric) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [6.0] DIGIT FOUR (Numeric) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0063 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0043 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER C (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0063 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0043 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER C (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 2018 × 2060 × 0028 × 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LEFT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 ÷ 2018 × 2060 × 0028 × 2060 × 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0308 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0308 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 0308 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 000A ÷ 2060 × 0308 × 2060 × 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] <LINE FEED (LF)> (LF) ÷ [4.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 0020 × 2060 × 0072 × 2060 × 0065 × 2060 × 0073 × 2060 × 0070 × 2060 × 002E × 2060 × 0020 × 2060 × 006C × 2060 × 0065 × 2060 × 0061 × 2060 × 0064 × 2060 × 0065 × 2060 × 0072 × 2060 × 0073 × 2060 × 0020 × 2060 × 0061 × 2060 × 0072 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER P (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER L (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 5B57 × 2060 × 002E × 2060 ÷ 5B57 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 ÷ 5B83 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 3002 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.1] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 5B57 × 2060 × 3002 × 2060 ÷ 5B83 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [998.0] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0021 × 2060 × 0020 × 2060 × 0020 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] EXCLAMATION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [10.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0061 × 2060 × 002E × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0061 × 2060 × 002E × 2060 × 000D ÷ 2060 × 000A ÷ 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] WORD JOINER (Format_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [4.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0061 × 2060 × 002E × 2060 × 000D ÷ 2060 × 000A ÷ 0020 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] WORD JOINER (Format_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [4.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0061 × 2060 × 002E × 2060 × 000D ÷ 2060 × 000A ÷ 0061 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] WORD JOINER (Format_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0041 × 2060 × 002E × 2060 × 000D ÷ 2060 × 000A ÷ 0041 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] WORD JOINER (Format_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
#
# Lines: 512
#
# EOF

1468
src/modules/punk/char/unicode15.1/auxiliary/WordBreakProperty.txt

File diff suppressed because it is too large Load Diff

248
src/modules/punk/char/unicode15.1/auxiliary/WordBreakTest.html

@ -0,0 +1,248 @@
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<title>Word Break Chart</title>
<style type='text/css'>
td, th { vertical-align: top }
</style></head>
<body bgcolor='#FFFFFF'>
<h2>Word_Break Chart</h2>
<p><b>Unicode Version:</b> 15.1.0</p>
<p><b>Date:</b> 2023-03-31, 14:30:32 GMT</p>
<p>This page illustrates the application of the Word_Break specification. The material here is informative, not normative.</p> <p>The first chart shows where breaks would appear between different sample characters or strings. The sample characters are chosen mechanically to represent the different properties used by the specification.</p><p>Each cell shows the break-status for the position between the character(s) in its row header and the character(s) in its column header. The × symbol indicates no break, while the ÷ symbol indicated a break. The cells with × are also shaded to make it easier to scan the table. For example, in the cell at the intersection of the row headed by “CR” and the column headed by “LF”, there is a × symbol, indicating that there is no break between CR and LF.</p>
<p>After the heavy blue line in the table are additional rows, either with different sample characters or for sequences, such as “ALetter MidLetter”. Some column headers may be composed, reflecting “treat as” or “ignore” rules.</p>
<p>If your browser handles titles (tooltips), then hovering the mouse over the row header will show a sample character of that type. Hovering over a column header will show the sample character, plus its abbreviated general category and script. Hovering over the intersected cells shows the rule number that produces the break-status. For example, hovering over the cell at the intersection of ExtendNumLet and ALetter shows ×, with the rule 13.2. Checking below the table, rule 13.2 is “ExtendNumLet × (AHLetter | Numeric | Katakana)”, which is the one that applies to that case. Note that a rule is invoked only when no lower-numbered rules have applied.</p>
<h3><a href='#table' name='table'>Table</a></h3>
<table border='1' cellspacing='0' width='100%'><tr><th width='4%'></th><th width='4%' class='lbclass' title='U+0001 <START OF HEADING>, gc=Cc, sc=Zyyy'>Other</th><th width='4%' class='lbclass' title='U+000D <CARRIAGE RETURN (CR)>, gc=Cc, sc=Zyyy'>CR</th><th width='4%' class='lbclass' title='U+000A <LINE FEED (LF)>, gc=Cc, sc=Zyyy'>LF</th><th width='4%' class='lbclass' title='U+000B <LINE TABULATION>, gc=Cc, sc=Zyyy'>Newline</th><th width='4%' class='lbclass' title='U+3031 VERTICAL KANA REPEAT MARK, gc=Lm, sc=Zyyy'>Katakana</th><th width='4%' class='lbclass' title='U+0041 LATIN CAPITAL LETTER A, gc=Lu, sc=Latn'>ALetter</th><th width='4%' class='lbclass' title='U+003A COLON, gc=Po, sc=Zyyy'>MidLetter</th><th width='4%' class='lbclass' title='U+002C COMMA, gc=Po, sc=Zyyy'>MidNum</th><th width='4%' class='lbclass' title='U+002E FULL STOP, gc=Po, sc=Zyyy'>MidNumLet</th><th width='4%' class='lbclass' title='U+0030 DIGIT ZERO, gc=Nd, sc=Zyyy'>Numeric</th><th width='4%' class='lbclass' title='U+005F LOW LINE, gc=Pc, sc=Zyyy'>ExtendNumLet</th><th width='4%' class='lbclass' title='U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A, gc=So, sc=Zyyy'>RI</th><th width='4%' class='lbclass' title='U+05D0 HEBREW LETTER ALEF, gc=Lo, sc=Hebr'>Hebrew_Letter</th><th width='4%' class='lbclass' title='U+0022 QUOTATION MARK, gc=Po, sc=Zyyy'>Double_Quote</th><th width='4%' class='lbclass' title='U+0027 APOSTROPHE, gc=Po, sc=Zyyy'>Single_Quote</th><th width='4%' class='lbclass' title='U+231A WATCH, gc=So, sc=Zyyy'>ExtPict</th><th width='4%' class='lbclass' title='U+0020 SPACE, gc=Zs, sc=Zyyy'>WSegSpace</th><th width='4%' class='lbclass' title='U+00AD SOFT HYPHEN, gc=Cf, sc=Zyyy'>Format_FE</th><th width='4%' class='lbclass' title='U+0300 COMBINING GRAVE ACCENT, gc=Mn, sc=Zinh'>Extend_FE</th><th width='4%' class='lbclass' title='U+200D ZERO WIDTH JOINER, gc=Cf, sc=Zinh'>ZWJ_FE</th></tr>
<tr><th class='lbclass' title='U+0001 <START OF HEADING>'>Other</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+000D <CARRIAGE RETURN (CR)>'>CR</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th></tr>
<tr><th class='lbclass' title='U+000A <LINE FEED (LF)>'>LF</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th></tr>
<tr><th class='lbclass' title='U+000B <LINE TABULATION>'>Newline</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th><th title='3.1' class='pairItem'>÷</th></tr>
<tr><th class='lbclass' title='U+3031 VERTICAL KANA REPEAT MARK'>Katakana</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='13.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='13.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0041 LATIN CAPITAL LETTER A'>ALetter</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='13.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+003A COLON'>MidLetter</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+002C COMMA'>MidNum</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+002E FULL STOP'>MidNumLet</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0030 DIGIT ZERO'>Numeric</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='10.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='8.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='13.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='10.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+005F LOW LINE'>ExtendNumLet</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='13.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='13.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='13.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='13.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='13.2' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A'>RI</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='15.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+05D0 HEBREW LETTER ALEF'>Hebrew_Letter</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='13.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='7.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0022 QUOTATION MARK'>Double_Quote</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0027 APOSTROPHE'>Single_Quote</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+231A WATCH'>ExtPict</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0020 SPACE'>WSegSpace</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='3.4' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+00AD SOFT HYPHEN'>Format_FE</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0300 COMBINING GRAVE ACCENT'>Extend_FE</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+200D ZERO WIDTH JOINER'>ZWJ_FE</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='3.3' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><td bgcolor='#0000FF' colSpan='21' style='font-size: 1px'>&nbsp;</td></tr>
<tr><th class='lbclass' title='U+0061 LATIN SMALL LETTER A, U+2060 WORD JOINER'>ALetter Format_FE</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='9.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='13.1' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='5.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0061 LATIN SMALL LETTER A, U+003A COLON'>ALetter MidLetter</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='7.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='7.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0061 LATIN SMALL LETTER A, U+0027 APOSTROPHE'>ALetter Single_Quote</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='7.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='7.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0061 LATIN SMALL LETTER A, U+0027 APOSTROPHE, U+2060 WORD JOINER'>ALetter Single_Quote Format_FE</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='7.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='7.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0061 LATIN SMALL LETTER A, U+002C COMMA'>ALetter MidNum</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0031 DIGIT ONE, U+003A COLON'>Numeric MidLetter</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0031 DIGIT ONE, U+0027 APOSTROPHE'>Numeric Single_Quote</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='11.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0031 DIGIT ONE, U+002C COMMA'>Numeric MidNum</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='11.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
<tr><th class='lbclass' title='U+0031 DIGIT ONE, U+002E FULL STOP, U+2060 WORD JOINER'>Numeric MidNumLet Format_FE</th><th title='999.0' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='3.2' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='11.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='999.0' class='pairItem'>÷</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th><th title='4.0' bgcolor='#CCCCFF' class='pairItem'>×</th></tr>
</table>
<h3><a href='#rules' name='rules'>Rules</a></h3>
<p>This section shows the rules. They are mechanically modified for programmatic generation of the tables and test code, and thus do not match the UAX rules precisely. In particular:</p><ol><li>The rules are cast into a form that is more like regular expressions.</li><li>The rules “sot ÷”, “÷ eot”, and “÷ Any” are added mechanically, and have artificial numbers.</li><li>The rules are given decimal numbers using tenths, and are written without prefix. For example, rule WB13a is given the number 13.1.</li><li>Any “treat as” or “ignore” rules are handled as discussed in UAX #29, and thus reflected in a transformation of the rules usually not visible here. In addition, final rules like “Any ÷ Any” may be recast as the equivalent expression “÷ Any”.</li><li>In some cases, the numbering and form of a rule is changed due to “treat as” rules.</li></ol><p>For the original rules and the macro values they use, see UAX #29.</p>
<table>
<tr><th style='text-align:right'><a href='#r0.2' name='r0.2'>0.2</a></th><td style='text-align:right'>sot </td><td>÷</td><td></td></tr>
<tr><th style='text-align:right'><a href='#r0.3' name='r0.3'>0.3</a></th><td style='text-align:right'></td><td>÷</td><td> eot</td></tr>
<tr><th style='text-align:right'><a href='#r3.0' name='r3.0'>3.0</a></th><td style='text-align:right'>CR </td><td>×</td><td> LF</td></tr>
<tr><th style='text-align:right'><a href='#r3.1' name='r3.1'>3.1</a></th><td style='text-align:right'>(Newline | CR | LF) </td><td>÷</td><td></td></tr>
<tr><th style='text-align:right'><a href='#r3.2' name='r3.2'>3.2</a></th><td style='text-align:right'></td><td>÷</td><td> (Newline | CR | LF)</td></tr>
<tr><th style='text-align:right'><a href='#r3.3' name='r3.3'>3.3</a></th><td style='text-align:right'>ZWJ </td><td>×</td><td> ExtPict</td></tr>
<tr><th style='text-align:right'><a href='#r3.4' name='r3.4'>3.4</a></th><td style='text-align:right'>WSegSpace </td><td>×</td><td> WSegSpace</td></tr>
<tr><th style='text-align:right'><a href='#r4.0' name='r4.0'>4.0</a></th><td style='text-align:right'>[^ Newline CR LF ] </td><td>×</td><td> [Format Extend ZWJ]</td></tr>
<tr><th style='text-align:right'><a href='#r5.0' name='r5.0'>5.0</a></th><td style='text-align:right'>AHLetter </td><td>×</td><td> AHLetter</td></tr>
<tr><th style='text-align:right'><a href='#r6.0' name='r6.0'>6.0</a></th><td style='text-align:right'>AHLetter </td><td>×</td><td> (MidLetter | MidNumLetQ) AHLetter</td></tr>
<tr><th style='text-align:right'><a href='#r7.0' name='r7.0'>7.0</a></th><td style='text-align:right'>AHLetter (MidLetter | MidNumLetQ) </td><td>×</td><td> AHLetter</td></tr>
<tr><th style='text-align:right'><a href='#r7.1' name='r7.1'>7.1</a></th><td style='text-align:right'>Hebrew_Letter </td><td>×</td><td> Single_Quote</td></tr>
<tr><th style='text-align:right'><a href='#r7.2' name='r7.2'>7.2</a></th><td style='text-align:right'>Hebrew_Letter </td><td>×</td><td> Double_Quote Hebrew_Letter</td></tr>
<tr><th style='text-align:right'><a href='#r7.3' name='r7.3'>7.3</a></th><td style='text-align:right'>Hebrew_Letter Double_Quote </td><td>×</td><td> Hebrew_Letter</td></tr>
<tr><th style='text-align:right'><a href='#r8.0' name='r8.0'>8.0</a></th><td style='text-align:right'>Numeric </td><td>×</td><td> Numeric</td></tr>
<tr><th style='text-align:right'><a href='#r9.0' name='r9.0'>9.0</a></th><td style='text-align:right'>AHLetter </td><td>×</td><td> Numeric</td></tr>
<tr><th style='text-align:right'><a href='#r10.0' name='r10.0'>10.0</a></th><td style='text-align:right'>Numeric </td><td>×</td><td> AHLetter</td></tr>
<tr><th style='text-align:right'><a href='#r11.0' name='r11.0'>11.0</a></th><td style='text-align:right'>Numeric (MidNum | MidNumLetQ) </td><td>×</td><td> Numeric</td></tr>
<tr><th style='text-align:right'><a href='#r12.0' name='r12.0'>12.0</a></th><td style='text-align:right'>Numeric </td><td>×</td><td> (MidNum | MidNumLetQ) Numeric</td></tr>
<tr><th style='text-align:right'><a href='#r13.0' name='r13.0'>13.0</a></th><td style='text-align:right'>Katakana </td><td>×</td><td> Katakana</td></tr>
<tr><th style='text-align:right'><a href='#r13.1' name='r13.1'>13.1</a></th><td style='text-align:right'>(AHLetter | Numeric | Katakana | ExtendNumLet) </td><td>×</td><td> ExtendNumLet</td></tr>
<tr><th style='text-align:right'><a href='#r13.2' name='r13.2'>13.2</a></th><td style='text-align:right'>ExtendNumLet </td><td>×</td><td> (AHLetter | Numeric | Katakana)</td></tr>
<tr><th style='text-align:right'><a href='#r15.0' name='r15.0'>15.0</a></th><td style='text-align:right'>^ (RI RI)* RI </td><td>×</td><td> RI</td></tr>
<tr><th style='text-align:right'><a href='#r16.0' name='r16.0'>16.0</a></th><td style='text-align:right'>[^RI] (RI RI)* RI </td><td>×</td><td> RI</td></tr>
<tr><th style='text-align:right'><a href='#r999.0' name='r999.0'>999.0</a></th><td style='text-align:right'></td><td>÷</td><td> Any</td></tr>
</table>
<h3><a href='#samples' name='samples'>Sample Strings</a></h3>
<p>The following samples illustrate the application of the rules. The blue lines indicate possible break points. If your browser supports titles (tooltips), then positioning the mouse over each character will show its name, while positioning between characters shows the number of the rule responsible for the break-status.</p>
<table>
<tr><th style='text-align:right'><a href='#s1' name='s1'>1</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+000D &lt;CARRIAGE RETURN (CR)&gt; (CR)'>&#x25A1;</span><span title='3.0'><span>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='3.1'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (ALetter)'>a</span><span title='3.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+000A &lt;LINE FEED (LF)&gt; (LF)'>&#x25A1;</span><span title='3.1'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s2' name='s2'>2</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (ALetter)'>a</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s3' name='s3'>3</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (WSegSpace)'> </span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_FE)'>&#x25A1;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0646 ARABIC LETTER NOON (ALetter)'>&#x646;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s4' name='s4'>4</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0646 ARABIC LETTER NOON (ALetter)'>&#x646;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_FE)'>&#x25A1;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (WSegSpace)'> </span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s5' name='s5'>5</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0671 ARABIC LETTER ALEF WASLA (ALetter)'>&#x671;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0644 ARABIC LETTER LAM (ALetter)'>&#x644;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0631 ARABIC LETTER REH (ALetter)'>&#x631;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+064E ARABIC FATHA (Extend_FE)'>&#x25CC;&#x64E;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0651 ARABIC SHADDA (Extend_FE)'>&#x25CC;&#x651;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+062D ARABIC LETTER HAH (ALetter)'>&#x62D;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0650 ARABIC KASRA (Extend_FE)'>&#x25CC;&#x650;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+064A ARABIC LETTER YEH (ALetter)'>&#x64A;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0645 ARABIC LETTER MEEM (ALetter)'>&#x645;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0650 ARABIC KASRA (Extend_FE)'>&#x25CC;&#x650;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (WSegSpace)'> </span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+06DD ARABIC END OF AYAH (Numeric)'>&#x25A1;</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0661 ARABIC-INDIC DIGIT ONE (Numeric)'>&#x661;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s6' name='s6'>6</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0721 SYRIAC LETTER MIM (ALetter)'>&#x721;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0719 SYRIAC LETTER ZAIN (ALetter)'>&#x719;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0721 SYRIAC LETTER MIM (ALetter)'>&#x721;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0718 SYRIAC LETTER WAW (ALetter)'>&#x718;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+072A SYRIAC LETTER RISH (ALetter)'>&#x72A;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0710 SYRIAC LETTER ALAPH (ALetter)'>&#x710;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (WSegSpace)'> </span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+070F SYRIAC ABBREVIATION MARK (ALetter)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+071D SYRIAC LETTER YUDH (ALetter)'>&#x71D;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0717 SYRIAC LETTER HE (ALetter)'>&#x717;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s7' name='s7'>7</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+072C SYRIAC LETTER TAW (ALetter)'>&#x72C;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+070F SYRIAC ABBREVIATION MARK (ALetter)'>&#x25A1;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+072B SYRIAC LETTER SHIN (ALetter)'>&#x72B;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0712 SYRIAC LETTER BETH (ALetter)'>&#x712;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0718 SYRIAC LETTER WAW (ALetter)'>&#x718;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s8' name='s8'>8</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (ALetter)'>A</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (ALetter)'>A</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (ALetter)'>A</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s9' name='s9'>9</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (ALetter)'>A</span><span title='6.0'><span>&nbsp;</span>&nbsp;</span><span title='U+003A COLON (MidLetter)'>:</span><span title='7.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (ALetter)'>A</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s10' name='s10'>10</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (ALetter)'>A</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+003A COLON (MidLetter)'>:</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+003A COLON (MidLetter)'>:</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (ALetter)'>A</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s11' name='s11'>11</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+05D0 HEBREW LETTER ALEF (Hebrew_Letter)'>&#x5D0;</span><span title='7.1'><span>&nbsp;</span>&nbsp;</span><span title='U+0027 APOSTROPHE (Single_Quote)'>'</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s12' name='s12'>12</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+05D0 HEBREW LETTER ALEF (Hebrew_Letter)'>&#x5D0;</span><span title='7.2'><span>&nbsp;</span>&nbsp;</span><span title='U+0022 QUOTATION MARK (Double_Quote)'>&quot;</span><span title='7.3'><span>&nbsp;</span>&nbsp;</span><span title='U+05D0 HEBREW LETTER ALEF (Hebrew_Letter)'>&#x5D0;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s13' name='s13'>13</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (ALetter)'>A</span><span title='9.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0030 DIGIT ZERO (Numeric)'>0</span><span title='8.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0030 DIGIT ZERO (Numeric)'>0</span><span title='10.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (ALetter)'>A</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s14' name='s14'>14</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0030 DIGIT ZERO (Numeric)'>0</span><span title='12.0'><span>&nbsp;</span>&nbsp;</span><span title='U+002C COMMA (MidNum)'>,</span><span title='11.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0030 DIGIT ZERO (Numeric)'>0</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s15' name='s15'>15</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0030 DIGIT ZERO (Numeric)'>0</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+002C COMMA (MidNum)'>,</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+002C COMMA (MidNum)'>,</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0030 DIGIT ZERO (Numeric)'>0</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s16' name='s16'>16</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+3031 VERTICAL KANA REPEAT MARK (Katakana)'>&#x3031;</span><span title='13.0'><span>&nbsp;</span>&nbsp;</span><span title='U+3031 VERTICAL KANA REPEAT MARK (Katakana)'>&#x3031;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s17' name='s17'>17</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (ALetter)'>A</span><span title='13.1'><span>&nbsp;</span>&nbsp;</span><span title='U+005F LOW LINE (ExtendNumLet)'>_</span><span title='13.2'><span>&nbsp;</span>&nbsp;</span><span title='U+0030 DIGIT ZERO (Numeric)'>0</span><span title='13.1'><span>&nbsp;</span>&nbsp;</span><span title='U+005F LOW LINE (ExtendNumLet)'>_</span><span title='13.2'><span>&nbsp;</span>&nbsp;</span><span title='U+3031 VERTICAL KANA REPEAT MARK (Katakana)'>&#x3031;</span><span title='13.1'><span>&nbsp;</span>&nbsp;</span><span title='U+005F LOW LINE (ExtendNumLet)'>_</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s18' name='s18'>18</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (ALetter)'>A</span><span title='13.1'><span>&nbsp;</span>&nbsp;</span><span title='U+005F LOW LINE (ExtendNumLet)'>_</span><span title='13.1'><span>&nbsp;</span>&nbsp;</span><span title='U+005F LOW LINE (ExtendNumLet)'>_</span><span title='13.2'><span>&nbsp;</span>&nbsp;</span><span title='U+0041 LATIN CAPITAL LETTER A (ALetter)'>A</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s19' name='s19'>19</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A (RI)'>&#x1F1E6;</span><span title='15.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F1E7 REGIONAL INDICATOR SYMBOL LETTER B (RI)'>&#x1F1E7;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E8 REGIONAL INDICATOR SYMBOL LETTER C (RI)'>&#x1F1E8;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (ALetter)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s20' name='s20'>20</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (ALetter)'>a</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A (RI)'>&#x1F1E6;</span><span title='16.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F1E7 REGIONAL INDICATOR SYMBOL LETTER B (RI)'>&#x1F1E7;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E8 REGIONAL INDICATOR SYMBOL LETTER C (RI)'>&#x1F1E8;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (ALetter)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s21' name='s21'>21</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (ALetter)'>a</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A (RI)'>&#x1F1E6;</span><span title='16.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F1E7 REGIONAL INDICATOR SYMBOL LETTER B (RI)'>&#x1F1E7;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_FE)'>&#x25A1;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E8 REGIONAL INDICATOR SYMBOL LETTER C (RI)'>&#x1F1E8;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (ALetter)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s22' name='s22'>22</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (ALetter)'>a</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A (RI)'>&#x1F1E6;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_FE)'>&#x25A1;</span><span title='16.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F1E7 REGIONAL INDICATOR SYMBOL LETTER B (RI)'>&#x1F1E7;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E8 REGIONAL INDICATOR SYMBOL LETTER C (RI)'>&#x1F1E8;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (ALetter)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s23' name='s23'>23</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (ALetter)'>a</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A (RI)'>&#x1F1E6;</span><span title='16.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F1E7 REGIONAL INDICATOR SYMBOL LETTER B (RI)'>&#x1F1E7;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F1E8 REGIONAL INDICATOR SYMBOL LETTER C (RI)'>&#x1F1E8;</span><span title='16.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F1E9 REGIONAL INDICATOR SYMBOL LETTER D (RI)'>&#x1F1E9;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (ALetter)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s24' name='s24'>24</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F476 BABY (ExtPict)'>&#x1F476;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F3FF EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_FE)'>&#x1F3FF;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F476 BABY (ExtPict)'>&#x1F476;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s25' name='s25'>25</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F6D1 OCTAGONAL SIGN (ExtPict)'>&#x1F6D1;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_FE)'>&#x25A1;</span><span title='3.3'><span>&nbsp;</span>&nbsp;</span><span title='U+1F6D1 OCTAGONAL SIGN (ExtPict)'>&#x1F6D1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s26' name='s26'>26</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (ALetter)'>a</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_FE)'>&#x25A1;</span><span title='3.3'><span>&nbsp;</span>&nbsp;</span><span title='U+1F6D1 OCTAGONAL SIGN (ExtPict)'>&#x1F6D1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s27' name='s27'>27</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+2701 UPPER BLADE SCISSORS (Other)'>&#x2701;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_FE)'>&#x25A1;</span><span title='3.3'><span>&nbsp;</span>&nbsp;</span><span title='U+2701 UPPER BLADE SCISSORS (Other)'>&#x2701;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s28' name='s28'>28</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (ALetter)'>a</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_FE)'>&#x25A1;</span><span title='3.3'><span>&nbsp;</span>&nbsp;</span><span title='U+2701 UPPER BLADE SCISSORS (Other)'>&#x2701;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s29' name='s29'>29</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F476 BABY (ExtPict)'>&#x1F476;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F3FF EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_FE)'>&#x1F3FF;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_FE)'>&#x25A1;</span><span title='3.3'><span>&nbsp;</span>&nbsp;</span><span title='U+1F476 BABY (ExtPict)'>&#x1F476;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F3FF EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_FE)'>&#x1F3FF;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s30' name='s30'>30</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F6D1 OCTAGONAL SIGN (ExtPict)'>&#x1F6D1;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F3FF EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_FE)'>&#x1F3FF;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s31' name='s31'>31</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_FE)'>&#x25A1;</span><span title='3.3'><span>&nbsp;</span>&nbsp;</span><span title='U+1F6D1 OCTAGONAL SIGN (ExtPict)'>&#x1F6D1;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+1F3FF EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_FE)'>&#x1F3FF;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s32' name='s32'>32</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_FE)'>&#x25A1;</span><span title='3.3'><span>&nbsp;</span>&nbsp;</span><span title='U+1F6D1 OCTAGONAL SIGN (ExtPict)'>&#x1F6D1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s33' name='s33'>33</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_FE)'>&#x25A1;</span><span title='3.3'><span>&nbsp;</span>&nbsp;</span><span title='U+1F6D1 OCTAGONAL SIGN (ExtPict)'>&#x1F6D1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s34' name='s34'>34</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F6D1 OCTAGONAL SIGN (ExtPict)'>&#x1F6D1;</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+1F6D1 OCTAGONAL SIGN (ExtPict)'>&#x1F6D1;</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s35' name='s35'>35</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (ALetter)'>a</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+200D ZERO WIDTH JOINER (ZWJ_FE)'>&#x25A1;</span><span title='4.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0308 COMBINING DIAERESIS (Extend_FE)'>&#x25CC;&#x308;</span><span title='5.0'><span>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (ALetter)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
<tr><th style='text-align:right'><a href='#s36' name='s36'>36</a></th><td><font size='5'>
<span title='0.2'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0061 LATIN SMALL LETTER A (ALetter)'>a</span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (WSegSpace)'> </span><span title='3.4'><span>&nbsp;</span>&nbsp;</span><span title='U+0020 SPACE (WSegSpace)'> </span><span title='999.0'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span><span title='U+0062 LATIN SMALL LETTER B (ALetter)'>b</span><span title='0.3'><span style='border-right: 1px solid blue'>&nbsp;</span>&nbsp;</span>
</font></td></tr>
</table>
<hr width='50%'>
<div align='center'>
<center>
<table cellspacing='0' cellpadding='0' border='0'>
<tr>
<td><a href='https://www.unicode.org/copyright.html'>
<img src='https://www.unicode.org/img/hb_notice.gif' border='0' alt='Access to Copyright and terms of use' width='216' height='50'></a></td>
</tr>
</table>
</center>
</div>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

1854
src/modules/punk/char/unicode15.1/auxiliary/WordBreakTest.txt

File diff suppressed because it is too large Load Diff

22
src/modules/punk/char/unicode15.1/emoji/ReadMe.txt

@ -0,0 +1,22 @@
# Unicode Character Database
# Date: 2023-08-28
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
This directory contains final data files for Unicode, Version 15.1
Public/emoji/15.1/
emoji-data.txt
emoji-variation-sequences.txt
The following related files are found in Unicode Emoji, Version 15.1
Public/15.1.0/ucd/emoji/
emoji-sequences.txt
emoji-zwj-sequences.txt
emoji-test.txt
For documentation, see UTS #51 Unicode Emoji, Version 15.1

1320
src/modules/punk/char/unicode15.1/emoji/emoji-data.txt

File diff suppressed because it is too large Load Diff

1
src/modules/punk/char/emoji-variation-sequences.txt → src/modules/punk/char/unicode15.1/emoji/emoji-variation-sequences.txt

@ -1,4 +1,3 @@
# emoji-variation-sequences.txt # emoji-variation-sequences.txt
# Date: 2023-02-01, 02:22:54 GMT # Date: 2023-02-01, 02:22:54 GMT
# © 2023 Unicode®, Inc. # © 2023 Unicode®, Inc.

2518
src/modules/punk/char/unicode15.1/extracted/DerivedBidiClass.txt

File diff suppressed because it is too large Load Diff

241
src/modules/punk/char/unicode15.1/extracted/DerivedBinaryProperties.txt

@ -0,0 +1,241 @@
# DerivedBinaryProperties-15.1.0.txt
# Date: 2023-01-05, 20:34:33 GMT
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
# ================================================
# Bidi_Mirrored (listing UnicodeData.txt, field 9: see UAX #44: https://www.unicode.org/reports/tr44/)
0028 ; Bidi_Mirrored # Ps LEFT PARENTHESIS
0029 ; Bidi_Mirrored # Pe RIGHT PARENTHESIS
003C ; Bidi_Mirrored # Sm LESS-THAN SIGN
003E ; Bidi_Mirrored # Sm GREATER-THAN SIGN
005B ; Bidi_Mirrored # Ps LEFT SQUARE BRACKET
005D ; Bidi_Mirrored # Pe RIGHT SQUARE BRACKET
007B ; Bidi_Mirrored # Ps LEFT CURLY BRACKET
007D ; Bidi_Mirrored # Pe RIGHT CURLY BRACKET
00AB ; Bidi_Mirrored # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
00BB ; Bidi_Mirrored # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0F3A ; Bidi_Mirrored # Ps TIBETAN MARK GUG RTAGS GYON
0F3B ; Bidi_Mirrored # Pe TIBETAN MARK GUG RTAGS GYAS
0F3C ; Bidi_Mirrored # Ps TIBETAN MARK ANG KHANG GYON
0F3D ; Bidi_Mirrored # Pe TIBETAN MARK ANG KHANG GYAS
169B ; Bidi_Mirrored # Ps OGHAM FEATHER MARK
169C ; Bidi_Mirrored # Pe OGHAM REVERSED FEATHER MARK
2039 ; Bidi_Mirrored # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK
203A ; Bidi_Mirrored # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
2045 ; Bidi_Mirrored # Ps LEFT SQUARE BRACKET WITH QUILL
2046 ; Bidi_Mirrored # Pe RIGHT SQUARE BRACKET WITH QUILL
207D ; Bidi_Mirrored # Ps SUPERSCRIPT LEFT PARENTHESIS
207E ; Bidi_Mirrored # Pe SUPERSCRIPT RIGHT PARENTHESIS
208D ; Bidi_Mirrored # Ps SUBSCRIPT LEFT PARENTHESIS
208E ; Bidi_Mirrored # Pe SUBSCRIPT RIGHT PARENTHESIS
2140 ; Bidi_Mirrored # Sm DOUBLE-STRUCK N-ARY SUMMATION
2201..2204 ; Bidi_Mirrored # Sm [4] COMPLEMENT..THERE DOES NOT EXIST
2208..220D ; Bidi_Mirrored # Sm [6] ELEMENT OF..SMALL CONTAINS AS MEMBER
2211 ; Bidi_Mirrored # Sm N-ARY SUMMATION
2215..2216 ; Bidi_Mirrored # Sm [2] DIVISION SLASH..SET MINUS
221A..221D ; Bidi_Mirrored # Sm [4] SQUARE ROOT..PROPORTIONAL TO
221F..2222 ; Bidi_Mirrored # Sm [4] RIGHT ANGLE..SPHERICAL ANGLE
2224 ; Bidi_Mirrored # Sm DOES NOT DIVIDE
2226 ; Bidi_Mirrored # Sm NOT PARALLEL TO
222B..2233 ; Bidi_Mirrored # Sm [9] INTEGRAL..ANTICLOCKWISE CONTOUR INTEGRAL
2239 ; Bidi_Mirrored # Sm EXCESS
223B..224C ; Bidi_Mirrored # Sm [18] HOMOTHETIC..ALL EQUAL TO
2252..2255 ; Bidi_Mirrored # Sm [4] APPROXIMATELY EQUAL TO OR THE IMAGE OF..EQUALS COLON
225F..2260 ; Bidi_Mirrored # Sm [2] QUESTIONED EQUAL TO..NOT EQUAL TO
2262 ; Bidi_Mirrored # Sm NOT IDENTICAL TO
2264..226B ; Bidi_Mirrored # Sm [8] LESS-THAN OR EQUAL TO..MUCH GREATER-THAN
226E..228C ; Bidi_Mirrored # Sm [31] NOT LESS-THAN..MULTISET
228F..2292 ; Bidi_Mirrored # Sm [4] SQUARE IMAGE OF..SQUARE ORIGINAL OF OR EQUAL TO
2298 ; Bidi_Mirrored # Sm CIRCLED DIVISION SLASH
22A2..22A3 ; Bidi_Mirrored # Sm [2] RIGHT TACK..LEFT TACK
22A6..22B8 ; Bidi_Mirrored # Sm [19] ASSERTION..MULTIMAP
22BE..22BF ; Bidi_Mirrored # Sm [2] RIGHT ANGLE WITH ARC..RIGHT TRIANGLE
22C9..22CD ; Bidi_Mirrored # Sm [5] LEFT NORMAL FACTOR SEMIDIRECT PRODUCT..REVERSED TILDE EQUALS
22D0..22D1 ; Bidi_Mirrored # Sm [2] DOUBLE SUBSET..DOUBLE SUPERSET
22D6..22ED ; Bidi_Mirrored # Sm [24] LESS-THAN WITH DOT..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
22F0..22FF ; Bidi_Mirrored # Sm [16] UP RIGHT DIAGONAL ELLIPSIS..Z NOTATION BAG MEMBERSHIP
2308 ; Bidi_Mirrored # Ps LEFT CEILING
2309 ; Bidi_Mirrored # Pe RIGHT CEILING
230A ; Bidi_Mirrored # Ps LEFT FLOOR
230B ; Bidi_Mirrored # Pe RIGHT FLOOR
2320..2321 ; Bidi_Mirrored # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
2329 ; Bidi_Mirrored # Ps LEFT-POINTING ANGLE BRACKET
232A ; Bidi_Mirrored # Pe RIGHT-POINTING ANGLE BRACKET
2768 ; Bidi_Mirrored # Ps MEDIUM LEFT PARENTHESIS ORNAMENT
2769 ; Bidi_Mirrored # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT
276A ; Bidi_Mirrored # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
276B ; Bidi_Mirrored # Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
276C ; Bidi_Mirrored # Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
276D ; Bidi_Mirrored # Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
276E ; Bidi_Mirrored # Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
276F ; Bidi_Mirrored # Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
2770 ; Bidi_Mirrored # Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
2771 ; Bidi_Mirrored # Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
2772 ; Bidi_Mirrored # Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
2773 ; Bidi_Mirrored # Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
2774 ; Bidi_Mirrored # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT
2775 ; Bidi_Mirrored # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT
27C0 ; Bidi_Mirrored # Sm THREE DIMENSIONAL ANGLE
27C3..27C4 ; Bidi_Mirrored # Sm [2] OPEN SUBSET..OPEN SUPERSET
27C5 ; Bidi_Mirrored # Ps LEFT S-SHAPED BAG DELIMITER
27C6 ; Bidi_Mirrored # Pe RIGHT S-SHAPED BAG DELIMITER
27C8..27C9 ; Bidi_Mirrored # Sm [2] REVERSE SOLIDUS PRECEDING SUBSET..SUPERSET PRECEDING SOLIDUS
27CB..27CD ; Bidi_Mirrored # Sm [3] MATHEMATICAL RISING DIAGONAL..MATHEMATICAL FALLING DIAGONAL
27D3..27D6 ; Bidi_Mirrored # Sm [4] LOWER RIGHT CORNER WITH DOT..RIGHT OUTER JOIN
27DC..27DE ; Bidi_Mirrored # Sm [3] LEFT MULTIMAP..LONG LEFT TACK
27E2..27E5 ; Bidi_Mirrored # Sm [4] WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK..WHITE SQUARE WITH RIGHTWARDS TICK
27E6 ; Bidi_Mirrored # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET
27E7 ; Bidi_Mirrored # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET
27E8 ; Bidi_Mirrored # Ps MATHEMATICAL LEFT ANGLE BRACKET
27E9 ; Bidi_Mirrored # Pe MATHEMATICAL RIGHT ANGLE BRACKET
27EA ; Bidi_Mirrored # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
27EB ; Bidi_Mirrored # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
27EC ; Bidi_Mirrored # Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
27ED ; Bidi_Mirrored # Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
27EE ; Bidi_Mirrored # Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS
27EF ; Bidi_Mirrored # Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS
2983 ; Bidi_Mirrored # Ps LEFT WHITE CURLY BRACKET
2984 ; Bidi_Mirrored # Pe RIGHT WHITE CURLY BRACKET
2985 ; Bidi_Mirrored # Ps LEFT WHITE PARENTHESIS
2986 ; Bidi_Mirrored # Pe RIGHT WHITE PARENTHESIS
2987 ; Bidi_Mirrored # Ps Z NOTATION LEFT IMAGE BRACKET
2988 ; Bidi_Mirrored # Pe Z NOTATION RIGHT IMAGE BRACKET
2989 ; Bidi_Mirrored # Ps Z NOTATION LEFT BINDING BRACKET
298A ; Bidi_Mirrored # Pe Z NOTATION RIGHT BINDING BRACKET
298B ; Bidi_Mirrored # Ps LEFT SQUARE BRACKET WITH UNDERBAR
298C ; Bidi_Mirrored # Pe RIGHT SQUARE BRACKET WITH UNDERBAR
298D ; Bidi_Mirrored # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
298E ; Bidi_Mirrored # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
298F ; Bidi_Mirrored # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
2990 ; Bidi_Mirrored # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
2991 ; Bidi_Mirrored # Ps LEFT ANGLE BRACKET WITH DOT
2992 ; Bidi_Mirrored # Pe RIGHT ANGLE BRACKET WITH DOT
2993 ; Bidi_Mirrored # Ps LEFT ARC LESS-THAN BRACKET
2994 ; Bidi_Mirrored # Pe RIGHT ARC GREATER-THAN BRACKET
2995 ; Bidi_Mirrored # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET
2996 ; Bidi_Mirrored # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET
2997 ; Bidi_Mirrored # Ps LEFT BLACK TORTOISE SHELL BRACKET
2998 ; Bidi_Mirrored # Pe RIGHT BLACK TORTOISE SHELL BRACKET
299B..29A0 ; Bidi_Mirrored # Sm [6] MEASURED ANGLE OPENING LEFT..SPHERICAL ANGLE OPENING LEFT
29A2..29AF ; Bidi_Mirrored # Sm [14] TURNED ANGLE..MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
29B8 ; Bidi_Mirrored # Sm CIRCLED REVERSE SOLIDUS
29C0..29C5 ; Bidi_Mirrored # Sm [6] CIRCLED LESS-THAN..SQUARED FALLING DIAGONAL SLASH
29C9 ; Bidi_Mirrored # Sm TWO JOINED SQUARES
29CE..29D2 ; Bidi_Mirrored # Sm [5] RIGHT TRIANGLE ABOVE LEFT TRIANGLE..BOWTIE WITH RIGHT HALF BLACK
29D4..29D5 ; Bidi_Mirrored # Sm [2] TIMES WITH LEFT HALF BLACK..TIMES WITH RIGHT HALF BLACK
29D8 ; Bidi_Mirrored # Ps LEFT WIGGLY FENCE
29D9 ; Bidi_Mirrored # Pe RIGHT WIGGLY FENCE
29DA ; Bidi_Mirrored # Ps LEFT DOUBLE WIGGLY FENCE
29DB ; Bidi_Mirrored # Pe RIGHT DOUBLE WIGGLY FENCE
29DC ; Bidi_Mirrored # Sm INCOMPLETE INFINITY
29E1 ; Bidi_Mirrored # Sm INCREASES AS
29E3..29E5 ; Bidi_Mirrored # Sm [3] EQUALS SIGN AND SLANTED PARALLEL..IDENTICAL TO AND SLANTED PARALLEL
29E8..29E9 ; Bidi_Mirrored # Sm [2] DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK..DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
29F4..29F9 ; Bidi_Mirrored # Sm [6] RULE-DELAYED..BIG REVERSE SOLIDUS
29FC ; Bidi_Mirrored # Ps LEFT-POINTING CURVED ANGLE BRACKET
29FD ; Bidi_Mirrored # Pe RIGHT-POINTING CURVED ANGLE BRACKET
2A0A..2A1C ; Bidi_Mirrored # Sm [19] MODULO TWO SUM..INTEGRAL WITH UNDERBAR
2A1E..2A21 ; Bidi_Mirrored # Sm [4] LARGE LEFT TRIANGLE OPERATOR..Z NOTATION SCHEMA PROJECTION
2A24 ; Bidi_Mirrored # Sm PLUS SIGN WITH TILDE ABOVE
2A26 ; Bidi_Mirrored # Sm PLUS SIGN WITH TILDE BELOW
2A29 ; Bidi_Mirrored # Sm MINUS SIGN WITH COMMA ABOVE
2A2B..2A2E ; Bidi_Mirrored # Sm [4] MINUS SIGN WITH FALLING DOTS..PLUS SIGN IN RIGHT HALF CIRCLE
2A34..2A35 ; Bidi_Mirrored # Sm [2] MULTIPLICATION SIGN IN LEFT HALF CIRCLE..MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
2A3C..2A3E ; Bidi_Mirrored # Sm [3] INTERIOR PRODUCT..Z NOTATION RELATIONAL COMPOSITION
2A57..2A58 ; Bidi_Mirrored # Sm [2] SLOPING LARGE OR..SLOPING LARGE AND
2A64..2A65 ; Bidi_Mirrored # Sm [2] Z NOTATION DOMAIN ANTIRESTRICTION..Z NOTATION RANGE ANTIRESTRICTION
2A6A..2A6D ; Bidi_Mirrored # Sm [4] TILDE OPERATOR WITH DOT ABOVE..CONGRUENT WITH DOT ABOVE
2A6F..2A70 ; Bidi_Mirrored # Sm [2] ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT..APPROXIMATELY EQUAL OR EQUAL TO
2A73..2A74 ; Bidi_Mirrored # Sm [2] EQUALS SIGN ABOVE TILDE OPERATOR..DOUBLE COLON EQUAL
2A79..2AA3 ; Bidi_Mirrored # Sm [43] LESS-THAN WITH CIRCLE INSIDE..DOUBLE NESTED LESS-THAN WITH UNDERBAR
2AA6..2AAD ; Bidi_Mirrored # Sm [8] LESS-THAN CLOSED BY CURVE..LARGER THAN OR EQUAL TO
2AAF..2AD6 ; Bidi_Mirrored # Sm [40] PRECEDES ABOVE SINGLE-LINE EQUALS SIGN..SUPERSET ABOVE SUPERSET
2ADC ; Bidi_Mirrored # Sm FORKING
2ADE ; Bidi_Mirrored # Sm SHORT LEFT TACK
2AE2..2AE6 ; Bidi_Mirrored # Sm [5] VERTICAL BAR TRIPLE RIGHT TURNSTILE..LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
2AEC..2AEE ; Bidi_Mirrored # Sm [3] DOUBLE STROKE NOT SIGN..DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
2AF3 ; Bidi_Mirrored # Sm PARALLEL WITH TILDE OPERATOR
2AF7..2AFB ; Bidi_Mirrored # Sm [5] TRIPLE NESTED LESS-THAN..TRIPLE SOLIDUS BINARY RELATION
2AFD ; Bidi_Mirrored # Sm DOUBLE SOLIDUS OPERATOR
2BFE ; Bidi_Mirrored # So REVERSED RIGHT ANGLE
2E02 ; Bidi_Mirrored # Pi LEFT SUBSTITUTION BRACKET
2E03 ; Bidi_Mirrored # Pf RIGHT SUBSTITUTION BRACKET
2E04 ; Bidi_Mirrored # Pi LEFT DOTTED SUBSTITUTION BRACKET
2E05 ; Bidi_Mirrored # Pf RIGHT DOTTED SUBSTITUTION BRACKET
2E09 ; Bidi_Mirrored # Pi LEFT TRANSPOSITION BRACKET
2E0A ; Bidi_Mirrored # Pf RIGHT TRANSPOSITION BRACKET
2E0C ; Bidi_Mirrored # Pi LEFT RAISED OMISSION BRACKET
2E0D ; Bidi_Mirrored # Pf RIGHT RAISED OMISSION BRACKET
2E1C ; Bidi_Mirrored # Pi LEFT LOW PARAPHRASE BRACKET
2E1D ; Bidi_Mirrored # Pf RIGHT LOW PARAPHRASE BRACKET
2E20 ; Bidi_Mirrored # Pi LEFT VERTICAL BAR WITH QUILL
2E21 ; Bidi_Mirrored # Pf RIGHT VERTICAL BAR WITH QUILL
2E22 ; Bidi_Mirrored # Ps TOP LEFT HALF BRACKET
2E23 ; Bidi_Mirrored # Pe TOP RIGHT HALF BRACKET
2E24 ; Bidi_Mirrored # Ps BOTTOM LEFT HALF BRACKET
2E25 ; Bidi_Mirrored # Pe BOTTOM RIGHT HALF BRACKET
2E26 ; Bidi_Mirrored # Ps LEFT SIDEWAYS U BRACKET
2E27 ; Bidi_Mirrored # Pe RIGHT SIDEWAYS U BRACKET
2E28 ; Bidi_Mirrored # Ps LEFT DOUBLE PARENTHESIS
2E29 ; Bidi_Mirrored # Pe RIGHT DOUBLE PARENTHESIS
2E55 ; Bidi_Mirrored # Ps LEFT SQUARE BRACKET WITH STROKE
2E56 ; Bidi_Mirrored # Pe RIGHT SQUARE BRACKET WITH STROKE
2E57 ; Bidi_Mirrored # Ps LEFT SQUARE BRACKET WITH DOUBLE STROKE
2E58 ; Bidi_Mirrored # Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE
2E59 ; Bidi_Mirrored # Ps TOP HALF LEFT PARENTHESIS
2E5A ; Bidi_Mirrored # Pe TOP HALF RIGHT PARENTHESIS
2E5B ; Bidi_Mirrored # Ps BOTTOM HALF LEFT PARENTHESIS
2E5C ; Bidi_Mirrored # Pe BOTTOM HALF RIGHT PARENTHESIS
3008 ; Bidi_Mirrored # Ps LEFT ANGLE BRACKET
3009 ; Bidi_Mirrored # Pe RIGHT ANGLE BRACKET
300A ; Bidi_Mirrored # Ps LEFT DOUBLE ANGLE BRACKET
300B ; Bidi_Mirrored # Pe RIGHT DOUBLE ANGLE BRACKET
300C ; Bidi_Mirrored # Ps LEFT CORNER BRACKET
300D ; Bidi_Mirrored # Pe RIGHT CORNER BRACKET
300E ; Bidi_Mirrored # Ps LEFT WHITE CORNER BRACKET
300F ; Bidi_Mirrored # Pe RIGHT WHITE CORNER BRACKET
3010 ; Bidi_Mirrored # Ps LEFT BLACK LENTICULAR BRACKET
3011 ; Bidi_Mirrored # Pe RIGHT BLACK LENTICULAR BRACKET
3014 ; Bidi_Mirrored # Ps LEFT TORTOISE SHELL BRACKET
3015 ; Bidi_Mirrored # Pe RIGHT TORTOISE SHELL BRACKET
3016 ; Bidi_Mirrored # Ps LEFT WHITE LENTICULAR BRACKET
3017 ; Bidi_Mirrored # Pe RIGHT WHITE LENTICULAR BRACKET
3018 ; Bidi_Mirrored # Ps LEFT WHITE TORTOISE SHELL BRACKET
3019 ; Bidi_Mirrored # Pe RIGHT WHITE TORTOISE SHELL BRACKET
301A ; Bidi_Mirrored # Ps LEFT WHITE SQUARE BRACKET
301B ; Bidi_Mirrored # Pe RIGHT WHITE SQUARE BRACKET
FE59 ; Bidi_Mirrored # Ps SMALL LEFT PARENTHESIS
FE5A ; Bidi_Mirrored # Pe SMALL RIGHT PARENTHESIS
FE5B ; Bidi_Mirrored # Ps SMALL LEFT CURLY BRACKET
FE5C ; Bidi_Mirrored # Pe SMALL RIGHT CURLY BRACKET
FE5D ; Bidi_Mirrored # Ps SMALL LEFT TORTOISE SHELL BRACKET
FE5E ; Bidi_Mirrored # Pe SMALL RIGHT TORTOISE SHELL BRACKET
FE64..FE65 ; Bidi_Mirrored # Sm [2] SMALL LESS-THAN SIGN..SMALL GREATER-THAN SIGN
FF08 ; Bidi_Mirrored # Ps FULLWIDTH LEFT PARENTHESIS
FF09 ; Bidi_Mirrored # Pe FULLWIDTH RIGHT PARENTHESIS
FF1C ; Bidi_Mirrored # Sm FULLWIDTH LESS-THAN SIGN
FF1E ; Bidi_Mirrored # Sm FULLWIDTH GREATER-THAN SIGN
FF3B ; Bidi_Mirrored # Ps FULLWIDTH LEFT SQUARE BRACKET
FF3D ; Bidi_Mirrored # Pe FULLWIDTH RIGHT SQUARE BRACKET
FF5B ; Bidi_Mirrored # Ps FULLWIDTH LEFT CURLY BRACKET
FF5D ; Bidi_Mirrored # Pe FULLWIDTH RIGHT CURLY BRACKET
FF5F ; Bidi_Mirrored # Ps FULLWIDTH LEFT WHITE PARENTHESIS
FF60 ; Bidi_Mirrored # Pe FULLWIDTH RIGHT WHITE PARENTHESIS
FF62 ; Bidi_Mirrored # Ps HALFWIDTH LEFT CORNER BRACKET
FF63 ; Bidi_Mirrored # Pe HALFWIDTH RIGHT CORNER BRACKET
1D6DB ; Bidi_Mirrored # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
1D715 ; Bidi_Mirrored # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
1D74F ; Bidi_Mirrored # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
1D789 ; Bidi_Mirrored # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
1D7C3 ; Bidi_Mirrored # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
# Total code points: 553
# EOF

2788
src/modules/punk/char/unicode15.1/extracted/DerivedCombiningClass.txt

File diff suppressed because it is too large Load Diff

1025
src/modules/punk/char/unicode15.1/extracted/DerivedDecompositionType.txt

File diff suppressed because it is too large Load Diff

2611
src/modules/punk/char/unicode15.1/extracted/DerivedEastAsianWidth.txt

File diff suppressed because it is too large Load Diff

4233
src/modules/punk/char/unicode15.1/extracted/DerivedGeneralCategory.txt

File diff suppressed because it is too large Load Diff

745
src/modules/punk/char/unicode15.1/extracted/DerivedJoiningGroup.txt

@ -0,0 +1,745 @@
# DerivedJoiningGroup-15.1.0.txt
# Date: 2023-01-05, 20:34:37 GMT
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
# ================================================
# Joining Group (listing ArabicShaping.txt, field 3)
# All code points not explicitly listed for Joining_Group
# have the value No_Joining_Group.
# @missing: 0000..10FFFF; No_Joining_Group
# ================================================
0639..063A ; Ain # Lo [2] ARABIC LETTER AIN..ARABIC LETTER GHAIN
06A0 ; Ain # Lo ARABIC LETTER AIN WITH THREE DOTS ABOVE
06FC ; Ain # Lo ARABIC LETTER GHAIN WITH DOT BELOW
075D..075F ; Ain # Lo [3] ARABIC LETTER AIN WITH TWO DOTS ABOVE..ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE
08B3 ; Ain # Lo ARABIC LETTER AIN WITH THREE DOTS BELOW
08C3 ; Ain # Lo ARABIC LETTER GHAIN WITH THREE DOTS ABOVE
# Total code points: 9
# ================================================
0710 ; Alaph # Lo SYRIAC LETTER ALAPH
# Total code points: 1
# ================================================
0622..0623 ; Alef # Lo [2] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER ALEF WITH HAMZA ABOVE
0625 ; Alef # Lo ARABIC LETTER ALEF WITH HAMZA BELOW
0627 ; Alef # Lo ARABIC LETTER ALEF
0671..0673 ; Alef # Lo [3] ARABIC LETTER ALEF WASLA..ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
0675 ; Alef # Lo ARABIC LETTER HIGH HAMZA ALEF
0773..0774 ; Alef # Lo [2] ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE..ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
0870..0882 ; Alef # Lo [19] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC LETTER ALEF WITH ATTACHED LEFT HAMZA
# Total code points: 29
# ================================================
0628 ; Beh # Lo ARABIC LETTER BEH
062A..062B ; Beh # Lo [2] ARABIC LETTER TEH..ARABIC LETTER THEH
066E ; Beh # Lo ARABIC LETTER DOTLESS BEH
0679..0680 ; Beh # Lo [8] ARABIC LETTER TTEH..ARABIC LETTER BEHEH
0750..0756 ; Beh # Lo [7] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER BEH WITH SMALL V
08A0..08A1 ; Beh # Lo [2] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER BEH WITH HAMZA ABOVE
08B6..08B8 ; Beh # Lo [3] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER TEH WITH SMALL TEH ABOVE
08BE..08C0 ; Beh # Lo [3] ARABIC LETTER PEH WITH SMALL V..ARABIC LETTER TTEH WITH SMALL V
# Total code points: 27
# ================================================
0712 ; Beth # Lo SYRIAC LETTER BETH
072D ; Beth # Lo SYRIAC LETTER PERSIAN BHETH
# Total code points: 2
# ================================================
062F..0630 ; Dal # Lo [2] ARABIC LETTER DAL..ARABIC LETTER THAL
0688..0690 ; Dal # Lo [9] ARABIC LETTER DDAL..ARABIC LETTER DAL WITH FOUR DOTS ABOVE
06EE ; Dal # Lo ARABIC LETTER DAL WITH INVERTED V
0759..075A ; Dal # Lo [2] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH..ARABIC LETTER DAL WITH INVERTED SMALL V BELOW
08AE ; Dal # Lo ARABIC LETTER DAL WITH THREE DOTS BELOW
# Total code points: 15
# ================================================
0715..0716 ; Dalath_Rish # Lo [2] SYRIAC LETTER DALATH..SYRIAC LETTER DOTLESS DALATH RISH
072A ; Dalath_Rish # Lo SYRIAC LETTER RISH
072F ; Dalath_Rish # Lo SYRIAC LETTER PERSIAN DHALATH
# Total code points: 4
# ================================================
0725 ; E # Lo SYRIAC LETTER E
# Total code points: 1
# ================================================
0641 ; Feh # Lo ARABIC LETTER FEH
06A1..06A6 ; Feh # Lo [6] ARABIC LETTER DOTLESS FEH..ARABIC LETTER PEHEH
0760..0761 ; Feh # Lo [2] ARABIC LETTER FEH WITH TWO DOTS BELOW..ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW
08A4 ; Feh # Lo ARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS ABOVE
# Total code points: 10
# ================================================
0724 ; Final_Semkath # Lo SYRIAC LETTER FINAL SEMKATH
# Total code points: 1
# ================================================
063B..063C ; Gaf # Lo [2] ARABIC LETTER KEHEH WITH TWO DOTS ABOVE..ARABIC LETTER KEHEH WITH THREE DOTS BELOW
06A9 ; Gaf # Lo ARABIC LETTER KEHEH
06AB ; Gaf # Lo ARABIC LETTER KAF WITH RING
06AF..06B4 ; Gaf # Lo [6] ARABIC LETTER GAF..ARABIC LETTER GAF WITH THREE DOTS ABOVE
0762..0764 ; Gaf # Lo [3] ARABIC LETTER KEHEH WITH DOT ABOVE..ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW
088D ; Gaf # Lo ARABIC LETTER KEHEH WITH TWO DOTS VERTICALLY BELOW
08B0 ; Gaf # Lo ARABIC LETTER GAF WITH INVERTED STROKE
08C2 ; Gaf # Lo ARABIC LETTER KEHEH WITH SMALL V
08C8 ; Gaf # Lo ARABIC LETTER GRAF
# Total code points: 17
# ================================================
0713..0714 ; Gamal # Lo [2] SYRIAC LETTER GAMAL..SYRIAC LETTER GAMAL GARSHUNI
072E ; Gamal # Lo SYRIAC LETTER PERSIAN GHAMAL
# Total code points: 3
# ================================================
062C..062E ; Hah # Lo [3] ARABIC LETTER JEEM..ARABIC LETTER KHAH
0681..0687 ; Hah # Lo [7] ARABIC LETTER HAH WITH HAMZA ABOVE..ARABIC LETTER TCHEHEH
06BF ; Hah # Lo ARABIC LETTER TCHEH WITH DOT ABOVE
0757..0758 ; Hah # Lo [2] ARABIC LETTER HAH WITH TWO DOTS ABOVE..ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW
076E..076F ; Hah # Lo [2] ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW..ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS
0772 ; Hah # Lo ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE
077C ; Hah # Lo ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW
088A ; Hah # Lo ARABIC LETTER HAH WITH INVERTED SMALL V BELOW
08A2 ; Hah # Lo ARABIC LETTER JEEM WITH TWO DOTS ABOVE
08C1 ; Hah # Lo ARABIC LETTER TCHEH WITH SMALL V
08C5..08C6 ; Hah # Lo [2] ARABIC LETTER JEEM WITH THREE DOTS ABOVE..ARABIC LETTER JEEM WITH THREE DOTS BELOW
# Total code points: 22
# ================================================
06C3 ; Teh_Marbuta_Goal # Lo ARABIC LETTER TEH MARBUTA GOAL
# Total code points: 1
# ================================================
0717 ; He # Lo SYRIAC LETTER HE
# Total code points: 1
# ================================================
0647 ; Heh # Lo ARABIC LETTER HEH
# Total code points: 1
# ================================================
06C1..06C2 ; Heh_Goal # Lo [2] ARABIC LETTER HEH GOAL..ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
# Total code points: 2
# ================================================
071A ; Heth # Lo SYRIAC LETTER HETH
# Total code points: 1
# ================================================
0643 ; Kaf # Lo ARABIC LETTER KAF
06AC..06AE ; Kaf # Lo [3] ARABIC LETTER KAF WITH DOT ABOVE..ARABIC LETTER KAF WITH THREE DOTS BELOW
077F ; Kaf # Lo ARABIC LETTER KAF WITH TWO DOTS ABOVE
08B4 ; Kaf # Lo ARABIC LETTER KAF WITH DOT BELOW
# Total code points: 6
# ================================================
071F ; Kaph # Lo SYRIAC LETTER KAPH
# Total code points: 1
# ================================================
06BE ; Knotted_Heh # Lo ARABIC LETTER HEH DOACHASHMEE
06FF ; Knotted_Heh # Lo ARABIC LETTER HEH WITH INVERTED V
# Total code points: 2
# ================================================
0644 ; Lam # Lo ARABIC LETTER LAM
06B5..06B8 ; Lam # Lo [4] ARABIC LETTER LAM WITH SMALL V..ARABIC LETTER LAM WITH THREE DOTS BELOW
076A ; Lam # Lo ARABIC LETTER LAM WITH BAR
08A6 ; Lam # Lo ARABIC LETTER LAM WITH DOUBLE BAR
08C7 ; Lam # Lo ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE
# Total code points: 8
# ================================================
0720 ; Lamadh # Lo SYRIAC LETTER LAMADH
# Total code points: 1
# ================================================
0645 ; Meem # Lo ARABIC LETTER MEEM
0765..0766 ; Meem # Lo [2] ARABIC LETTER MEEM WITH DOT ABOVE..ARABIC LETTER MEEM WITH DOT BELOW
08A7 ; Meem # Lo ARABIC LETTER MEEM WITH THREE DOTS ABOVE
# Total code points: 4
# ================================================
0721 ; Mim # Lo SYRIAC LETTER MIM
# Total code points: 1
# ================================================
0646 ; Noon # Lo ARABIC LETTER NOON
06B9..06BC ; Noon # Lo [4] ARABIC LETTER NOON WITH DOT BELOW..ARABIC LETTER NOON WITH RING
0767..0769 ; Noon # Lo [3] ARABIC LETTER NOON WITH TWO DOTS BELOW..ARABIC LETTER NOON WITH SMALL V
0889 ; Noon # Lo ARABIC LETTER NOON WITH INVERTED SMALL V
# Total code points: 9
# ================================================
0722 ; Nun # Lo SYRIAC LETTER NUN
# Total code points: 1
# ================================================
0726 ; Pe # Lo SYRIAC LETTER PE
# Total code points: 1
# ================================================
0642 ; Qaf # Lo ARABIC LETTER QAF
066F ; Qaf # Lo ARABIC LETTER DOTLESS QAF
06A7..06A8 ; Qaf # Lo [2] ARABIC LETTER QAF WITH DOT ABOVE..ARABIC LETTER QAF WITH THREE DOTS ABOVE
08A5 ; Qaf # Lo ARABIC LETTER QAF WITH DOT BELOW
08B5 ; Qaf # Lo ARABIC LETTER QAF WITH DOT BELOW AND NO DOTS ABOVE
# Total code points: 6
# ================================================
0729 ; Qaph # Lo SYRIAC LETTER QAPH
# Total code points: 1
# ================================================
0631..0632 ; Reh # Lo [2] ARABIC LETTER REH..ARABIC LETTER ZAIN
0691..0699 ; Reh # Lo [9] ARABIC LETTER RREH..ARABIC LETTER REH WITH FOUR DOTS ABOVE
06EF ; Reh # Lo ARABIC LETTER REH WITH INVERTED V
075B ; Reh # Lo ARABIC LETTER REH WITH STROKE
076B..076C ; Reh # Lo [2] ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE..ARABIC LETTER REH WITH HAMZA ABOVE
0771 ; Reh # Lo ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS
08AA ; Reh # Lo ARABIC LETTER REH WITH LOOP
08B2 ; Reh # Lo ARABIC LETTER ZAIN WITH INVERTED V ABOVE
08B9 ; Reh # Lo ARABIC LETTER REH WITH SMALL NOON ABOVE
# Total code points: 19
# ================================================
0727 ; Reversed_Pe # Lo SYRIAC LETTER REVERSED PE
# Total code points: 1
# ================================================
0635..0636 ; Sad # Lo [2] ARABIC LETTER SAD..ARABIC LETTER DAD
069D..069E ; Sad # Lo [2] ARABIC LETTER SAD WITH TWO DOTS BELOW..ARABIC LETTER SAD WITH THREE DOTS ABOVE
06FB ; Sad # Lo ARABIC LETTER DAD WITH DOT BELOW
08AF ; Sad # Lo ARABIC LETTER SAD WITH THREE DOTS BELOW
# Total code points: 6
# ================================================
0728 ; Sadhe # Lo SYRIAC LETTER SADHE
# Total code points: 1
# ================================================
0633..0634 ; Seen # Lo [2] ARABIC LETTER SEEN..ARABIC LETTER SHEEN
069A..069C ; Seen # Lo [3] ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE..ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
06FA ; Seen # Lo ARABIC LETTER SHEEN WITH DOT BELOW
075C ; Seen # Lo ARABIC LETTER SEEN WITH FOUR DOTS ABOVE
076D ; Seen # Lo ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
0770 ; Seen # Lo ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS
077D..077E ; Seen # Lo [2] ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE..ARABIC LETTER SEEN WITH INVERTED V
# Total code points: 11
# ================================================
0723 ; Semkath # Lo SYRIAC LETTER SEMKATH
# Total code points: 1
# ================================================
072B ; Shin # Lo SYRIAC LETTER SHIN
# Total code points: 1
# ================================================
06AA ; Swash_Kaf # Lo ARABIC LETTER SWASH KAF
# Total code points: 1
# ================================================
0637..0638 ; Tah # Lo [2] ARABIC LETTER TAH..ARABIC LETTER ZAH
069F ; Tah # Lo ARABIC LETTER TAH WITH THREE DOTS ABOVE
088B..088C ; Tah # Lo [2] ARABIC LETTER TAH WITH DOT BELOW..ARABIC LETTER TAH WITH THREE DOTS BELOW
08A3 ; Tah # Lo ARABIC LETTER TAH WITH TWO DOTS ABOVE
# Total code points: 6
# ================================================
072C ; Taw # Lo SYRIAC LETTER TAW
# Total code points: 1
# ================================================
0629 ; Teh_Marbuta # Lo ARABIC LETTER TEH MARBUTA
06C0 ; Teh_Marbuta # Lo ARABIC LETTER HEH WITH YEH ABOVE
06D5 ; Teh_Marbuta # Lo ARABIC LETTER AE
# Total code points: 3
# ================================================
071B..071C ; Teth # Lo [2] SYRIAC LETTER TETH..SYRIAC LETTER TETH GARSHUNI
# Total code points: 2
# ================================================
0624 ; Waw # Lo ARABIC LETTER WAW WITH HAMZA ABOVE
0648 ; Waw # Lo ARABIC LETTER WAW
0676..0677 ; Waw # Lo [2] ARABIC LETTER HIGH HAMZA WAW..ARABIC LETTER U WITH HAMZA ABOVE
06C4..06CB ; Waw # Lo [8] ARABIC LETTER WAW WITH RING..ARABIC LETTER VE
06CF ; Waw # Lo ARABIC LETTER WAW WITH DOT ABOVE
0778..0779 ; Waw # Lo [2] ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE..ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
08AB ; Waw # Lo ARABIC LETTER WAW WITH DOT WITHIN
# Total code points: 16
# ================================================
0718 ; Syriac_Waw # Lo SYRIAC LETTER WAW
# Total code points: 1
# ================================================
0620 ; Yeh # Lo ARABIC LETTER KASHMIRI YEH
0626 ; Yeh # Lo ARABIC LETTER YEH WITH HAMZA ABOVE
0649..064A ; Yeh # Lo [2] ARABIC LETTER ALEF MAKSURA..ARABIC LETTER YEH
0678 ; Yeh # Lo ARABIC LETTER HIGH HAMZA YEH
06D0..06D1 ; Yeh # Lo [2] ARABIC LETTER E..ARABIC LETTER YEH WITH THREE DOTS BELOW
0777 ; Yeh # Lo ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW
08A8..08A9 ; Yeh # Lo [2] ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE..ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE
08BA ; Yeh # Lo ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE
# Total code points: 11
# ================================================
06D2..06D3 ; Yeh_Barree # Lo [2] ARABIC LETTER YEH BARREE..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
# Total code points: 2
# ================================================
06CD ; Yeh_With_Tail # Lo ARABIC LETTER YEH WITH TAIL
# Total code points: 1
# ================================================
071D ; Yudh # Lo SYRIAC LETTER YUDH
# Total code points: 1
# ================================================
071E ; Yudh_He # Lo SYRIAC LETTER YUDH HE
# Total code points: 1
# ================================================
0719 ; Zain # Lo SYRIAC LETTER ZAIN
# Total code points: 1
# ================================================
074D ; Zhain # Lo SYRIAC LETTER SOGDIAN ZHAIN
# Total code points: 1
# ================================================
074E ; Khaph # Lo SYRIAC LETTER SOGDIAN KHAPH
# Total code points: 1
# ================================================
074F ; Fe # Lo SYRIAC LETTER SOGDIAN FE
# Total code points: 1
# ================================================
077A..077B ; Burushaski_Yeh_Barree # Lo [2] ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE..ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
# Total code points: 2
# ================================================
063D..063F ; Farsi_Yeh # Lo [3] ARABIC LETTER FARSI YEH WITH INVERTED V..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
06CC ; Farsi_Yeh # Lo ARABIC LETTER FARSI YEH
06CE ; Farsi_Yeh # Lo ARABIC LETTER YEH WITH SMALL V
0775..0776 ; Farsi_Yeh # Lo [2] ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE..ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
# Total code points: 7
# ================================================
06BD ; Nya # Lo ARABIC LETTER NOON WITH THREE DOTS ABOVE
# Total code points: 1
# ================================================
08AC ; Rohingya_Yeh # Lo ARABIC LETTER ROHINGYA YEH
# Total code points: 1
# ================================================
08B1 ; Straight_Waw # Lo ARABIC LETTER STRAIGHT WAW
# Total code points: 1
# ================================================
10AC0 ; Manichaean_Aleph # Lo MANICHAEAN LETTER ALEPH
# Total code points: 1
# ================================================
10AD9..10ADA ; Manichaean_Ayin # Lo [2] MANICHAEAN LETTER AYIN..MANICHAEAN LETTER AAYIN
# Total code points: 2
# ================================================
10AC1..10AC2 ; Manichaean_Beth # Lo [2] MANICHAEAN LETTER BETH..MANICHAEAN LETTER BHETH
# Total code points: 2
# ================================================
10AC5 ; Manichaean_Daleth # Lo MANICHAEAN LETTER DALETH
# Total code points: 1
# ================================================
10AD4 ; Manichaean_Dhamedh # Lo MANICHAEAN LETTER DHAMEDH
# Total code points: 1
# ================================================
10AEC ; Manichaean_Five # No MANICHAEAN NUMBER FIVE
# Total code points: 1
# ================================================
10AC3..10AC4 ; Manichaean_Gimel # Lo [2] MANICHAEAN LETTER GIMEL..MANICHAEAN LETTER GHIMEL
# Total code points: 2
# ================================================
10ACD ; Manichaean_Heth # Lo MANICHAEAN LETTER HETH
# Total code points: 1
# ================================================
10AEF ; Manichaean_Hundred # No MANICHAEAN NUMBER ONE HUNDRED
# Total code points: 1
# ================================================
10AD0..10AD2 ; Manichaean_Kaph # Lo [3] MANICHAEAN LETTER KAPH..MANICHAEAN LETTER KHAPH
# Total code points: 3
# ================================================
10AD3 ; Manichaean_Lamedh # Lo MANICHAEAN LETTER LAMEDH
# Total code points: 1
# ================================================
10AD6 ; Manichaean_Mem # Lo MANICHAEAN LETTER MEM
# Total code points: 1
# ================================================
10AD7 ; Manichaean_Nun # Lo MANICHAEAN LETTER NUN
# Total code points: 1
# ================================================
10AEB ; Manichaean_One # No MANICHAEAN NUMBER ONE
# Total code points: 1
# ================================================
10ADB..10ADC ; Manichaean_Pe # Lo [2] MANICHAEAN LETTER PE..MANICHAEAN LETTER FE
# Total code points: 2
# ================================================
10ADE..10AE0 ; Manichaean_Qoph # Lo [3] MANICHAEAN LETTER QOPH..MANICHAEAN LETTER QHOPH
# Total code points: 3
# ================================================
10AE1 ; Manichaean_Resh # Lo MANICHAEAN LETTER RESH
# Total code points: 1
# ================================================
10ADD ; Manichaean_Sadhe # Lo MANICHAEAN LETTER SADHE
# Total code points: 1
# ================================================
10AD8 ; Manichaean_Samekh # Lo MANICHAEAN LETTER SAMEKH
# Total code points: 1
# ================================================
10AE4 ; Manichaean_Taw # Lo MANICHAEAN LETTER TAW
# Total code points: 1
# ================================================
10AED ; Manichaean_Ten # No MANICHAEAN NUMBER TEN
# Total code points: 1
# ================================================
10ACE ; Manichaean_Teth # Lo MANICHAEAN LETTER TETH
# Total code points: 1
# ================================================
10AD5 ; Manichaean_Thamedh # Lo MANICHAEAN LETTER THAMEDH
# Total code points: 1
# ================================================
10AEE ; Manichaean_Twenty # No MANICHAEAN NUMBER TWENTY
# Total code points: 1
# ================================================
10AC7 ; Manichaean_Waw # Lo MANICHAEAN LETTER WAW
# Total code points: 1
# ================================================
10ACF ; Manichaean_Yodh # Lo MANICHAEAN LETTER YODH
# Total code points: 1
# ================================================
10AC9..10ACA ; Manichaean_Zayin # Lo [2] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER ZHAYIN
# Total code points: 2
# ================================================
08BB ; African_Feh # Lo ARABIC LETTER AFRICAN FEH
# Total code points: 1
# ================================================
08BC ; African_Qaf # Lo ARABIC LETTER AFRICAN QAF
08C4 ; African_Qaf # Lo ARABIC LETTER AFRICAN QAF WITH THREE DOTS ABOVE
# Total code points: 2
# ================================================
08BD ; African_Noon # Lo ARABIC LETTER AFRICAN NOON
# Total code points: 1
# ================================================
0860 ; Malayalam_Nga # Lo SYRIAC LETTER MALAYALAM NGA
# Total code points: 1
# ================================================
0861 ; Malayalam_Ja # Lo SYRIAC LETTER MALAYALAM JA
# Total code points: 1
# ================================================
0862 ; Malayalam_Nya # Lo SYRIAC LETTER MALAYALAM NYA
# Total code points: 1
# ================================================
0863 ; Malayalam_Tta # Lo SYRIAC LETTER MALAYALAM TTA
# Total code points: 1
# ================================================
0864 ; Malayalam_Nna # Lo SYRIAC LETTER MALAYALAM NNA
# Total code points: 1
# ================================================
0865 ; Malayalam_Nnna # Lo SYRIAC LETTER MALAYALAM NNNA
# Total code points: 1
# ================================================
0866 ; Malayalam_Bha # Lo SYRIAC LETTER MALAYALAM BHA
# Total code points: 1
# ================================================
0867 ; Malayalam_Ra # Lo SYRIAC LETTER MALAYALAM RA
# Total code points: 1
# ================================================
0868 ; Malayalam_Lla # Lo SYRIAC LETTER MALAYALAM LLA
# Total code points: 1
# ================================================
0869 ; Malayalam_Llla # Lo SYRIAC LETTER MALAYALAM LLLA
# Total code points: 1
# ================================================
086A ; Malayalam_Ssa # Lo SYRIAC LETTER MALAYALAM SSA
# Total code points: 1
# ================================================
10D02 ; Hanifi_Rohingya_Pa # Lo HANIFI ROHINGYA LETTER PA
10D09 ; Hanifi_Rohingya_Pa # Lo HANIFI ROHINGYA LETTER FA
10D1C ; Hanifi_Rohingya_Pa # Lo HANIFI ROHINGYA LETTER VA
# Total code points: 3
# ================================================
10D19 ; Hanifi_Rohingya_Kinna_Ya # Lo HANIFI ROHINGYA LETTER KINNA YA
10D1E ; Hanifi_Rohingya_Kinna_Ya # Lo HANIFI ROHINGYA VOWEL I
10D20 ; Hanifi_Rohingya_Kinna_Ya # Lo HANIFI ROHINGYA VOWEL E
10D23 ; Hanifi_Rohingya_Kinna_Ya # Lo HANIFI ROHINGYA MARK NA KHONNA
# Total code points: 4
# ================================================
0886 ; Thin_Yeh # Lo ARABIC LETTER THIN YEH
# Total code points: 1
# ================================================
088E ; Vertical_Tail # Lo ARABIC VERTICAL TAIL
# Total code points: 1
# EOF

573
src/modules/punk/char/unicode15.1/extracted/DerivedJoiningType.txt

@ -0,0 +1,573 @@
# DerivedJoiningType-15.1.0.txt
# Date: 2023-01-05, 20:34:38 GMT
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
# ================================================
# Type T is derived, as described in ArabicShaping.txt
# All code points not explicitly listed for Joining_Type
# have the value Non_Joining (U).
# @missing: 0000..10FFFF; Non_Joining
# ================================================
# Joining_Type=Join_Causing
0640 ; C # Lm ARABIC TATWEEL
07FA ; C # Lm NKO LAJANYALAN
0883..0885 ; C # Lo [3] ARABIC TATWEEL WITH OVERSTRUCK HAMZA..ARABIC TATWEEL WITH TWO DOTS BELOW
180A ; C # Po MONGOLIAN NIRUGU
200D ; C # Cf ZERO WIDTH JOINER
# Total code points: 7
# ================================================
# Joining_Type=Dual_Joining
0620 ; D # Lo ARABIC LETTER KASHMIRI YEH
0626 ; D # Lo ARABIC LETTER YEH WITH HAMZA ABOVE
0628 ; D # Lo ARABIC LETTER BEH
062A..062E ; D # Lo [5] ARABIC LETTER TEH..ARABIC LETTER KHAH
0633..063F ; D # Lo [13] ARABIC LETTER SEEN..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
0641..0647 ; D # Lo [7] ARABIC LETTER FEH..ARABIC LETTER HEH
0649..064A ; D # Lo [2] ARABIC LETTER ALEF MAKSURA..ARABIC LETTER YEH
066E..066F ; D # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
0678..0687 ; D # Lo [16] ARABIC LETTER HIGH HAMZA YEH..ARABIC LETTER TCHEHEH
069A..06BF ; D # Lo [38] ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE..ARABIC LETTER TCHEH WITH DOT ABOVE
06C1..06C2 ; D # Lo [2] ARABIC LETTER HEH GOAL..ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
06CC ; D # Lo ARABIC LETTER FARSI YEH
06CE ; D # Lo ARABIC LETTER YEH WITH SMALL V
06D0..06D1 ; D # Lo [2] ARABIC LETTER E..ARABIC LETTER YEH WITH THREE DOTS BELOW
06FA..06FC ; D # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
06FF ; D # Lo ARABIC LETTER HEH WITH INVERTED V
0712..0714 ; D # Lo [3] SYRIAC LETTER BETH..SYRIAC LETTER GAMAL GARSHUNI
071A..071D ; D # Lo [4] SYRIAC LETTER HETH..SYRIAC LETTER YUDH
071F..0727 ; D # Lo [9] SYRIAC LETTER KAPH..SYRIAC LETTER REVERSED PE
0729 ; D # Lo SYRIAC LETTER QAPH
072B ; D # Lo SYRIAC LETTER SHIN
072D..072E ; D # Lo [2] SYRIAC LETTER PERSIAN BHETH..SYRIAC LETTER PERSIAN GHAMAL
074E..0758 ; D # Lo [11] SYRIAC LETTER SOGDIAN KHAPH..ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW
075C..076A ; D # Lo [15] ARABIC LETTER SEEN WITH FOUR DOTS ABOVE..ARABIC LETTER LAM WITH BAR
076D..0770 ; D # Lo [4] ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE..ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS
0772 ; D # Lo ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE
0775..0777 ; D # Lo [3] ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE..ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW
077A..077F ; D # Lo [6] ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE..ARABIC LETTER KAF WITH TWO DOTS ABOVE
07CA..07EA ; D # Lo [33] NKO LETTER A..NKO LETTER JONA RA
0841..0845 ; D # Lo [5] MANDAIC LETTER AB..MANDAIC LETTER USHENNA
0848 ; D # Lo MANDAIC LETTER ATT
084A..0853 ; D # Lo [10] MANDAIC LETTER AK..MANDAIC LETTER AR
0855 ; D # Lo MANDAIC LETTER AT
0860 ; D # Lo SYRIAC LETTER MALAYALAM NGA
0862..0865 ; D # Lo [4] SYRIAC LETTER MALAYALAM NYA..SYRIAC LETTER MALAYALAM NNNA
0868 ; D # Lo SYRIAC LETTER MALAYALAM LLA
0886 ; D # Lo ARABIC LETTER THIN YEH
0889..088D ; D # Lo [5] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC LETTER KEHEH WITH TWO DOTS VERTICALLY BELOW
08A0..08A9 ; D # Lo [10] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE
08AF..08B0 ; D # Lo [2] ARABIC LETTER SAD WITH THREE DOTS BELOW..ARABIC LETTER GAF WITH INVERTED STROKE
08B3..08B8 ; D # Lo [6] ARABIC LETTER AIN WITH THREE DOTS BELOW..ARABIC LETTER TEH WITH SMALL TEH ABOVE
08BA..08C8 ; D # Lo [15] ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE..ARABIC LETTER GRAF
1807 ; D # Po MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
1820..1842 ; D # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
1843 ; D # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN
1844..1878 ; D # Lo [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS
1887..18A8 ; D # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
18AA ; D # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA
A840..A871 ; D # Lo [50] PHAGS-PA LETTER KA..PHAGS-PA SUBJOINED LETTER RA
10AC0..10AC4 ; D # Lo [5] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER GHIMEL
10AD3..10AD6 ; D # Lo [4] MANICHAEAN LETTER LAMEDH..MANICHAEAN LETTER MEM
10AD8..10ADC ; D # Lo [5] MANICHAEAN LETTER SAMEKH..MANICHAEAN LETTER FE
10ADE..10AE0 ; D # Lo [3] MANICHAEAN LETTER QOPH..MANICHAEAN LETTER QHOPH
10AEB..10AEE ; D # No [4] MANICHAEAN NUMBER ONE..MANICHAEAN NUMBER TWENTY
10B80 ; D # Lo PSALTER PAHLAVI LETTER ALEPH
10B82 ; D # Lo PSALTER PAHLAVI LETTER GIMEL
10B86..10B88 ; D # Lo [3] PSALTER PAHLAVI LETTER ZAYIN..PSALTER PAHLAVI LETTER YODH
10B8A..10B8B ; D # Lo [2] PSALTER PAHLAVI LETTER LAMEDH..PSALTER PAHLAVI LETTER MEM-QOPH
10B8D ; D # Lo PSALTER PAHLAVI LETTER SAMEKH
10B90 ; D # Lo PSALTER PAHLAVI LETTER SHIN
10BAD..10BAE ; D # No [2] PSALTER PAHLAVI NUMBER TEN..PSALTER PAHLAVI NUMBER TWENTY
10D01..10D21 ; D # Lo [33] HANIFI ROHINGYA LETTER BA..HANIFI ROHINGYA VOWEL O
10D23 ; D # Lo HANIFI ROHINGYA MARK NA KHONNA
10F30..10F32 ; D # Lo [3] SOGDIAN LETTER ALEPH..SOGDIAN LETTER GIMEL
10F34..10F44 ; D # Lo [17] SOGDIAN LETTER WAW..SOGDIAN LETTER LESH
10F51..10F53 ; D # No [3] SOGDIAN NUMBER ONE..SOGDIAN NUMBER TWENTY
10F70..10F73 ; D # Lo [4] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER WAW
10F76..10F81 ; D # Lo [12] OLD UYGHUR LETTER YODH..OLD UYGHUR LETTER LESH
10FB0 ; D # Lo CHORASMIAN LETTER ALEPH
10FB2..10FB3 ; D # Lo [2] CHORASMIAN LETTER BETH..CHORASMIAN LETTER GIMEL
10FB8 ; D # Lo CHORASMIAN LETTER ZAYIN
10FBB..10FBC ; D # Lo [2] CHORASMIAN LETTER KAPH..CHORASMIAN LETTER LAMEDH
10FBE..10FBF ; D # Lo [2] CHORASMIAN LETTER NUN..CHORASMIAN LETTER SAMEKH
10FC1 ; D # Lo CHORASMIAN LETTER PE
10FC4 ; D # Lo CHORASMIAN LETTER TAW
10FCA ; D # No CHORASMIAN NUMBER TWENTY
1E900..1E943 ; D # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
# Total code points: 610
# ================================================
# Joining_Type=Right_Joining
0622..0625 ; R # Lo [4] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER ALEF WITH HAMZA BELOW
0627 ; R # Lo ARABIC LETTER ALEF
0629 ; R # Lo ARABIC LETTER TEH MARBUTA
062F..0632 ; R # Lo [4] ARABIC LETTER DAL..ARABIC LETTER ZAIN
0648 ; R # Lo ARABIC LETTER WAW
0671..0673 ; R # Lo [3] ARABIC LETTER ALEF WASLA..ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
0675..0677 ; R # Lo [3] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER U WITH HAMZA ABOVE
0688..0699 ; R # Lo [18] ARABIC LETTER DDAL..ARABIC LETTER REH WITH FOUR DOTS ABOVE
06C0 ; R # Lo ARABIC LETTER HEH WITH YEH ABOVE
06C3..06CB ; R # Lo [9] ARABIC LETTER TEH MARBUTA GOAL..ARABIC LETTER VE
06CD ; R # Lo ARABIC LETTER YEH WITH TAIL
06CF ; R # Lo ARABIC LETTER WAW WITH DOT ABOVE
06D2..06D3 ; R # Lo [2] ARABIC LETTER YEH BARREE..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
06D5 ; R # Lo ARABIC LETTER AE
06EE..06EF ; R # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
0710 ; R # Lo SYRIAC LETTER ALAPH
0715..0719 ; R # Lo [5] SYRIAC LETTER DALATH..SYRIAC LETTER ZAIN
071E ; R # Lo SYRIAC LETTER YUDH HE
0728 ; R # Lo SYRIAC LETTER SADHE
072A ; R # Lo SYRIAC LETTER RISH
072C ; R # Lo SYRIAC LETTER TAW
072F ; R # Lo SYRIAC LETTER PERSIAN DHALATH
074D ; R # Lo SYRIAC LETTER SOGDIAN ZHAIN
0759..075B ; R # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH..ARABIC LETTER REH WITH STROKE
076B..076C ; R # Lo [2] ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE..ARABIC LETTER REH WITH HAMZA ABOVE
0771 ; R # Lo ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS
0773..0774 ; R # Lo [2] ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE..ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
0778..0779 ; R # Lo [2] ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE..ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
0840 ; R # Lo MANDAIC LETTER HALQA
0846..0847 ; R # Lo [2] MANDAIC LETTER AZ..MANDAIC LETTER IT
0849 ; R # Lo MANDAIC LETTER AKSA
0854 ; R # Lo MANDAIC LETTER ASH
0856..0858 ; R # Lo [3] MANDAIC LETTER DUSHENNA..MANDAIC LETTER AIN
0867 ; R # Lo SYRIAC LETTER MALAYALAM RA
0869..086A ; R # Lo [2] SYRIAC LETTER MALAYALAM LLLA..SYRIAC LETTER MALAYALAM SSA
0870..0882 ; R # Lo [19] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC LETTER ALEF WITH ATTACHED LEFT HAMZA
088E ; R # Lo ARABIC VERTICAL TAIL
08AA..08AC ; R # Lo [3] ARABIC LETTER REH WITH LOOP..ARABIC LETTER ROHINGYA YEH
08AE ; R # Lo ARABIC LETTER DAL WITH THREE DOTS BELOW
08B1..08B2 ; R # Lo [2] ARABIC LETTER STRAIGHT WAW..ARABIC LETTER ZAIN WITH INVERTED V ABOVE
08B9 ; R # Lo ARABIC LETTER REH WITH SMALL NOON ABOVE
10AC5 ; R # Lo MANICHAEAN LETTER DALETH
10AC7 ; R # Lo MANICHAEAN LETTER WAW
10AC9..10ACA ; R # Lo [2] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER ZHAYIN
10ACE..10AD2 ; R # Lo [5] MANICHAEAN LETTER TETH..MANICHAEAN LETTER KHAPH
10ADD ; R # Lo MANICHAEAN LETTER SADHE
10AE1 ; R # Lo MANICHAEAN LETTER RESH
10AE4 ; R # Lo MANICHAEAN LETTER TAW
10AEF ; R # No MANICHAEAN NUMBER ONE HUNDRED
10B81 ; R # Lo PSALTER PAHLAVI LETTER BETH
10B83..10B85 ; R # Lo [3] PSALTER PAHLAVI LETTER DALETH..PSALTER PAHLAVI LETTER WAW-AYIN-RESH
10B89 ; R # Lo PSALTER PAHLAVI LETTER KAPH
10B8C ; R # Lo PSALTER PAHLAVI LETTER NUN
10B8E..10B8F ; R # Lo [2] PSALTER PAHLAVI LETTER PE..PSALTER PAHLAVI LETTER SADHE
10B91 ; R # Lo PSALTER PAHLAVI LETTER TAW
10BA9..10BAC ; R # No [4] PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER FOUR
10D22 ; R # Lo HANIFI ROHINGYA MARK SAKIN
10F33 ; R # Lo SOGDIAN LETTER HE
10F54 ; R # No SOGDIAN NUMBER ONE HUNDRED
10F74..10F75 ; R # Lo [2] OLD UYGHUR LETTER ZAYIN..OLD UYGHUR LETTER FINAL HETH
10FB4..10FB6 ; R # Lo [3] CHORASMIAN LETTER DALETH..CHORASMIAN LETTER WAW
10FB9..10FBA ; R # Lo [2] CHORASMIAN LETTER HETH..CHORASMIAN LETTER YODH
10FBD ; R # Lo CHORASMIAN LETTER MEM
10FC2..10FC3 ; R # Lo [2] CHORASMIAN LETTER RESH..CHORASMIAN LETTER SHIN
10FC9 ; R # No CHORASMIAN NUMBER TEN
# Total code points: 152
# ================================================
# Joining_Type=Left_Joining
A872 ; L # Lo PHAGS-PA SUPERFIXED LETTER RA
10ACD ; L # Lo MANICHAEAN LETTER HETH
10AD7 ; L # Lo MANICHAEAN LETTER NUN
10D00 ; L # Lo HANIFI ROHINGYA LETTER A
10FCB ; L # No CHORASMIAN NUMBER ONE HUNDRED
# Total code points: 5
# ================================================
# Joining_Type=Transparent
00AD ; T # Cf SOFT HYPHEN
0300..036F ; T # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
0483..0487 ; T # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
0488..0489 ; T # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
0591..05BD ; T # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
05BF ; T # Mn HEBREW POINT RAFE
05C1..05C2 ; T # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
05C4..05C5 ; T # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
05C7 ; T # Mn HEBREW POINT QAMATS QATAN
0610..061A ; T # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
061C ; T # Cf ARABIC LETTER MARK
064B..065F ; T # Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW
0670 ; T # Mn ARABIC LETTER SUPERSCRIPT ALEF
06D6..06DC ; T # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
06DF..06E4 ; T # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
06E7..06E8 ; T # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
06EA..06ED ; T # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
070F ; T # Cf SYRIAC ABBREVIATION MARK
0711 ; T # Mn SYRIAC LETTER SUPERSCRIPT ALAPH
0730..074A ; T # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
07A6..07B0 ; T # Mn [11] THAANA ABAFILI..THAANA SUKUN
07EB..07F3 ; T # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
07FD ; T # Mn NKO DANTAYALAN
0816..0819 ; T # Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH
081B..0823 ; T # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
0825..0827 ; T # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
0829..082D ; T # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
0859..085B ; T # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
0898..089F ; T # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
08CA..08E1 ; T # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
08E3..0902 ; T # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
093A ; T # Mn DEVANAGARI VOWEL SIGN OE
093C ; T # Mn DEVANAGARI SIGN NUKTA
0941..0948 ; T # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
094D ; T # Mn DEVANAGARI SIGN VIRAMA
0951..0957 ; T # Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE
0962..0963 ; T # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
0981 ; T # Mn BENGALI SIGN CANDRABINDU
09BC ; T # Mn BENGALI SIGN NUKTA
09C1..09C4 ; T # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
09CD ; T # Mn BENGALI SIGN VIRAMA
09E2..09E3 ; T # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
09FE ; T # Mn BENGALI SANDHI MARK
0A01..0A02 ; T # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
0A3C ; T # Mn GURMUKHI SIGN NUKTA
0A41..0A42 ; T # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
0A47..0A48 ; T # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
0A4B..0A4D ; T # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
0A51 ; T # Mn GURMUKHI SIGN UDAAT
0A70..0A71 ; T # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
0A75 ; T # Mn GURMUKHI SIGN YAKASH
0A81..0A82 ; T # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
0ABC ; T # Mn GUJARATI SIGN NUKTA
0AC1..0AC5 ; T # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
0AC7..0AC8 ; T # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
0ACD ; T # Mn GUJARATI SIGN VIRAMA
0AE2..0AE3 ; T # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
0AFA..0AFF ; T # Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
0B01 ; T # Mn ORIYA SIGN CANDRABINDU
0B3C ; T # Mn ORIYA SIGN NUKTA
0B3F ; T # Mn ORIYA VOWEL SIGN I
0B41..0B44 ; T # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
0B4D ; T # Mn ORIYA SIGN VIRAMA
0B55..0B56 ; T # Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK
0B62..0B63 ; T # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
0B82 ; T # Mn TAMIL SIGN ANUSVARA
0BC0 ; T # Mn TAMIL VOWEL SIGN II
0BCD ; T # Mn TAMIL SIGN VIRAMA
0C00 ; T # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE
0C04 ; T # Mn TELUGU SIGN COMBINING ANUSVARA ABOVE
0C3C ; T # Mn TELUGU SIGN NUKTA
0C3E..0C40 ; T # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
0C46..0C48 ; T # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
0C4A..0C4D ; T # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
0C55..0C56 ; T # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
0C62..0C63 ; T # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
0C81 ; T # Mn KANNADA SIGN CANDRABINDU
0CBC ; T # Mn KANNADA SIGN NUKTA
0CBF ; T # Mn KANNADA VOWEL SIGN I
0CC6 ; T # Mn KANNADA VOWEL SIGN E
0CCC..0CCD ; T # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
0CE2..0CE3 ; T # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
0D00..0D01 ; T # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
0D3B..0D3C ; T # Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
0D41..0D44 ; T # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
0D4D ; T # Mn MALAYALAM SIGN VIRAMA
0D62..0D63 ; T # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
0D81 ; T # Mn SINHALA SIGN CANDRABINDU
0DCA ; T # Mn SINHALA SIGN AL-LAKUNA
0DD2..0DD4 ; T # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
0DD6 ; T # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
0E31 ; T # Mn THAI CHARACTER MAI HAN-AKAT
0E34..0E3A ; T # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
0E47..0E4E ; T # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
0EB1 ; T # Mn LAO VOWEL SIGN MAI KAN
0EB4..0EBC ; T # Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO
0EC8..0ECE ; T # Mn [7] LAO TONE MAI EK..LAO YAMAKKAN
0F18..0F19 ; T # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
0F35 ; T # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
0F37 ; T # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
0F39 ; T # Mn TIBETAN MARK TSA -PHRU
0F71..0F7E ; T # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
0F80..0F84 ; T # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
0F86..0F87 ; T # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
0F8D..0F97 ; T # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
0F99..0FBC ; T # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
0FC6 ; T # Mn TIBETAN SYMBOL PADMA GDAN
102D..1030 ; T # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
1032..1037 ; T # Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW
1039..103A ; T # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
103D..103E ; T # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
1058..1059 ; T # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
105E..1060 ; T # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
1071..1074 ; T # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
1082 ; T # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA
1085..1086 ; T # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
108D ; T # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
109D ; T # Mn MYANMAR VOWEL SIGN AITON AI
135D..135F ; T # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
1712..1714 ; T # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
1732..1733 ; T # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
1752..1753 ; T # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
1772..1773 ; T # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
17B4..17B5 ; T # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
17B7..17BD ; T # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
17C6 ; T # Mn KHMER SIGN NIKAHIT
17C9..17D3 ; T # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
17DD ; T # Mn KHMER SIGN ATTHACAN
180B..180D ; T # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
180F ; T # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR
1885..1886 ; T # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
18A9 ; T # Mn MONGOLIAN LETTER ALI GALI DAGALGA
1920..1922 ; T # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
1927..1928 ; T # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
1932 ; T # Mn LIMBU SMALL LETTER ANUSVARA
1939..193B ; T # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
1A17..1A18 ; T # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
1A1B ; T # Mn BUGINESE VOWEL SIGN AE
1A56 ; T # Mn TAI THAM CONSONANT SIGN MEDIAL LA
1A58..1A5E ; T # Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA
1A60 ; T # Mn TAI THAM SIGN SAKOT
1A62 ; T # Mn TAI THAM VOWEL SIGN MAI SAT
1A65..1A6C ; T # Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW
1A73..1A7C ; T # Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN
1A7F ; T # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT
1AB0..1ABD ; T # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
1ABE ; T # Me COMBINING PARENTHESES OVERLAY
1ABF..1ACE ; T # Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T
1B00..1B03 ; T # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
1B34 ; T # Mn BALINESE SIGN REREKAN
1B36..1B3A ; T # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
1B3C ; T # Mn BALINESE VOWEL SIGN LA LENGA
1B42 ; T # Mn BALINESE VOWEL SIGN PEPET
1B6B..1B73 ; T # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
1B80..1B81 ; T # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
1BA2..1BA5 ; T # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
1BA8..1BA9 ; T # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
1BAB..1BAD ; T # Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
1BE6 ; T # Mn BATAK SIGN TOMPI
1BE8..1BE9 ; T # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
1BED ; T # Mn BATAK VOWEL SIGN KARO O
1BEF..1BF1 ; T # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
1C2C..1C33 ; T # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
1C36..1C37 ; T # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
1CD0..1CD2 ; T # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
1CD4..1CE0 ; T # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
1CE2..1CE8 ; T # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
1CED ; T # Mn VEDIC SIGN TIRYAK
1CF4 ; T # Mn VEDIC TONE CANDRA ABOVE
1CF8..1CF9 ; T # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
1DC0..1DFF ; T # Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
200B ; T # Cf ZERO WIDTH SPACE
200E..200F ; T # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
202A..202E ; T # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
2060..2064 ; T # Cf [5] WORD JOINER..INVISIBLE PLUS
206A..206F ; T # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
20D0..20DC ; T # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
20DD..20E0 ; T # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
20E1 ; T # Mn COMBINING LEFT RIGHT ARROW ABOVE
20E2..20E4 ; T # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
20E5..20F0 ; T # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
2CEF..2CF1 ; T # Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS
2D7F ; T # Mn TIFINAGH CONSONANT JOINER
2DE0..2DFF ; T # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
302A..302D ; T # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
3099..309A ; T # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
A66F ; T # Mn COMBINING CYRILLIC VZMET
A670..A672 ; T # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
A674..A67D ; T # Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK
A69E..A69F ; T # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
A6F0..A6F1 ; T # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
A802 ; T # Mn SYLOTI NAGRI SIGN DVISVARA
A806 ; T # Mn SYLOTI NAGRI SIGN HASANTA
A80B ; T # Mn SYLOTI NAGRI SIGN ANUSVARA
A825..A826 ; T # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
A82C ; T # Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA
A8C4..A8C5 ; T # Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
A8E0..A8F1 ; T # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
A8FF ; T # Mn DEVANAGARI VOWEL SIGN AY
A926..A92D ; T # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
A947..A951 ; T # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
A980..A982 ; T # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
A9B3 ; T # Mn JAVANESE SIGN CECAK TELU
A9B6..A9B9 ; T # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
A9BC..A9BD ; T # Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
A9E5 ; T # Mn MYANMAR SIGN SHAN SAW
AA29..AA2E ; T # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
AA31..AA32 ; T # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
AA35..AA36 ; T # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
AA43 ; T # Mn CHAM CONSONANT SIGN FINAL NG
AA4C ; T # Mn CHAM CONSONANT SIGN FINAL M
AA7C ; T # Mn MYANMAR SIGN TAI LAING TONE-2
AAB0 ; T # Mn TAI VIET MAI KANG
AAB2..AAB4 ; T # Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U
AAB7..AAB8 ; T # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
AABE..AABF ; T # Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK
AAC1 ; T # Mn TAI VIET TONE MAI THO
AAEC..AAED ; T # Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI
AAF6 ; T # Mn MEETEI MAYEK VIRAMA
ABE5 ; T # Mn MEETEI MAYEK VOWEL SIGN ANAP
ABE8 ; T # Mn MEETEI MAYEK VOWEL SIGN UNAP
ABED ; T # Mn MEETEI MAYEK APUN IYEK
FB1E ; T # Mn HEBREW POINT JUDEO-SPANISH VARIKA
FE00..FE0F ; T # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
FE20..FE2F ; T # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
FEFF ; T # Cf ZERO WIDTH NO-BREAK SPACE
FFF9..FFFB ; T # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
101FD ; T # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
102E0 ; T # Mn COPTIC EPACT THOUSANDS MARK
10376..1037A ; T # Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
10A01..10A03 ; T # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
10A05..10A06 ; T # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
10A0C..10A0F ; T # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
10A38..10A3A ; T # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
10A3F ; T # Mn KHAROSHTHI VIRAMA
10AE5..10AE6 ; T # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
10D24..10D27 ; T # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
10EAB..10EAC ; T # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
10EFD..10EFF ; T # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
10F46..10F50 ; T # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
10F82..10F85 ; T # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
11001 ; T # Mn BRAHMI SIGN ANUSVARA
11038..11046 ; T # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA
11070 ; T # Mn BRAHMI SIGN OLD TAMIL VIRAMA
11073..11074 ; T # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
1107F..11081 ; T # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA
110B3..110B6 ; T # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
110B9..110BA ; T # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
110C2 ; T # Mn KAITHI VOWEL SIGN VOCALIC R
11100..11102 ; T # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
11127..1112B ; T # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
1112D..11134 ; T # Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA
11173 ; T # Mn MAHAJANI SIGN NUKTA
11180..11181 ; T # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
111B6..111BE ; T # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
111C9..111CC ; T # Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
111CF ; T # Mn SHARADA SIGN INVERTED CANDRABINDU
1122F..11231 ; T # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
11234 ; T # Mn KHOJKI SIGN ANUSVARA
11236..11237 ; T # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
1123E ; T # Mn KHOJKI SIGN SUKUN
11241 ; T # Mn KHOJKI VOWEL SIGN VOCALIC R
112DF ; T # Mn KHUDAWADI SIGN ANUSVARA
112E3..112EA ; T # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
11300..11301 ; T # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
1133B..1133C ; T # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
11340 ; T # Mn GRANTHA VOWEL SIGN II
11366..1136C ; T # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
11370..11374 ; T # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
11438..1143F ; T # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
11442..11444 ; T # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
11446 ; T # Mn NEWA SIGN NUKTA
1145E ; T # Mn NEWA SANDHI MARK
114B3..114B8 ; T # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
114BA ; T # Mn TIRHUTA VOWEL SIGN SHORT E
114BF..114C0 ; T # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
114C2..114C3 ; T # Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
115B2..115B5 ; T # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
115BC..115BD ; T # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
115BF..115C0 ; T # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
115DC..115DD ; T # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
11633..1163A ; T # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI
1163D ; T # Mn MODI SIGN ANUSVARA
1163F..11640 ; T # Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA
116AB ; T # Mn TAKRI SIGN ANUSVARA
116AD ; T # Mn TAKRI VOWEL SIGN AA
116B0..116B5 ; T # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
116B7 ; T # Mn TAKRI SIGN NUKTA
1171D..1171F ; T # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
11722..11725 ; T # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11727..1172B ; T # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
1182F..11837 ; T # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
11839..1183A ; T # Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
1193B..1193C ; T # Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
1193E ; T # Mn DIVES AKURU VIRAMA
11943 ; T # Mn DIVES AKURU SIGN NUKTA
119D4..119D7 ; T # Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
119DA..119DB ; T # Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
119E0 ; T # Mn NANDINAGARI SIGN VIRAMA
11A01..11A0A ; T # Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
11A33..11A38 ; T # Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA
11A3B..11A3E ; T # Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
11A47 ; T # Mn ZANABAZAR SQUARE SUBJOINER
11A51..11A56 ; T # Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE
11A59..11A5B ; T # Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
11A8A..11A96 ; T # Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA
11A98..11A99 ; T # Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
11C30..11C36 ; T # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
11C38..11C3D ; T # Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
11C3F ; T # Mn BHAIKSUKI SIGN VIRAMA
11C92..11CA7 ; T # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
11CAA..11CB0 ; T # Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
11CB2..11CB3 ; T # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
11CB5..11CB6 ; T # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
11D31..11D36 ; T # Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R
11D3A ; T # Mn MASARAM GONDI VOWEL SIGN E
11D3C..11D3D ; T # Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
11D3F..11D45 ; T # Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA
11D47 ; T # Mn MASARAM GONDI RA-KARA
11D90..11D91 ; T # Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
11D95 ; T # Mn GUNJALA GONDI SIGN ANUSVARA
11D97 ; T # Mn GUNJALA GONDI VIRAMA
11EF3..11EF4 ; T # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
11F00..11F01 ; T # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
11F36..11F3A ; T # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
11F40 ; T # Mn KAWI VOWEL SIGN EU
11F42 ; T # Mn KAWI CONJOINER
13430..1343F ; T # Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE
13440 ; T # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
13447..13455 ; T # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
16AF0..16AF4 ; T # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
16B30..16B36 ; T # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
16F4F ; T # Mn MIAO SIGN CONSONANT MODIFIER BAR
16F8F..16F92 ; T # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
16FE4 ; T # Mn KHITAN SMALL SCRIPT FILLER
1BC9D..1BC9E ; T # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
1BCA0..1BCA3 ; T # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
1CF00..1CF2D ; T # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
1CF30..1CF46 ; T # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
1D167..1D169 ; T # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
1D173..1D17A ; T # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
1D17B..1D182 ; T # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
1D185..1D18B ; T # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
1D1AA..1D1AD ; T # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
1D242..1D244 ; T # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
1DA00..1DA36 ; T # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN
1DA3B..1DA6C ; T # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT
1DA75 ; T # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
1DA84 ; T # Mn SIGNWRITING LOCATION HEAD NECK
1DA9B..1DA9F ; T # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
1DAA1..1DAAF ; T # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
1E000..1E006 ; T # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
1E008..1E018 ; T # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
1E01B..1E021 ; T # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
1E023..1E024 ; T # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
1E026..1E02A ; T # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
1E08F ; T # Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
1E130..1E136 ; T # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
1E2AE ; T # Mn TOTO SIGN RISING TONE
1E2EC..1E2EF ; T # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
1E4EC..1E4EF ; T # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
1E8D0..1E8D6 ; T # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
1E944..1E94A ; T # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
1E94B ; T # Lm ADLAM NASALIZATION MARK
E0001 ; T # Cf LANGUAGE TAG
E0020..E007F ; T # Cf [96] TAG SPACE..CANCEL TAG
E0100..E01EF ; T # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
# Total code points: 2150
# EOF

3875
src/modules/punk/char/unicode15.1/extracted/DerivedLineBreak.txt

File diff suppressed because it is too large Load Diff

44181
src/modules/punk/char/unicode15.1/extracted/DerivedName.txt

File diff suppressed because it is too large Load Diff

291
src/modules/punk/char/unicode15.1/extracted/DerivedNumericType.txt

@ -0,0 +1,291 @@
# DerivedNumericType-15.1.0.txt
# Date: 2023-01-05, 20:34:41 GMT
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
# ================================================
# Derived Property: Numeric_Type
# The values are based on fields 6-8 of UnicodeData.txt, plus the fields
# kAccountingNumeric, kOtherNumeric, kPrimaryNumeric in the Unicode Han Database (Unihan).
# The derivations for these values are as follows.
# Numeric_Type=Decimal: When there is a value in field 6.
# Numeric_Type=Digit: When there is a value in field 7, but not in field 6.
# Numeric_Type=Numeric: When there are values for kAccountingNumeric, kOtherNumeric, kPrimaryNumeric,
# or there is a value in field 8, but not in field 7.
# Numeric_Type=None: Otherwise
# All code points not explicitly listed for Numeric_Type
# have the value None.
# @missing: 0000..10FFFF; None
# ================================================
00BC..00BE ; Numeric # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
09F4..09F9 ; Numeric # No [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN
0B72..0B77 ; Numeric # No [6] ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS
0BF0..0BF2 ; Numeric # No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
0C78..0C7E ; Numeric # No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
0D58..0D5E ; Numeric # No [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
0D70..0D78 ; Numeric # No [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS
0F2A..0F33 ; Numeric # No [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO
1372..137C ; Numeric # No [11] ETHIOPIC NUMBER TEN..ETHIOPIC NUMBER TEN THOUSAND
16EE..16F0 ; Numeric # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
17F0..17F9 ; Numeric # No [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON
2150..215F ; Numeric # No [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE
2160..2182 ; Numeric # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
2185..2188 ; Numeric # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND
2189 ; Numeric # No VULGAR FRACTION ZERO THIRDS
2469..2473 ; Numeric # No [11] CIRCLED NUMBER TEN..CIRCLED NUMBER TWENTY
247D..2487 ; Numeric # No [11] PARENTHESIZED NUMBER TEN..PARENTHESIZED NUMBER TWENTY
2491..249B ; Numeric # No [11] NUMBER TEN FULL STOP..NUMBER TWENTY FULL STOP
24EB..24F4 ; Numeric # No [10] NEGATIVE CIRCLED NUMBER ELEVEN..NEGATIVE CIRCLED NUMBER TWENTY
24FE ; Numeric # No DOUBLE CIRCLED NUMBER TEN
277F ; Numeric # No DINGBAT NEGATIVE CIRCLED NUMBER TEN
2789 ; Numeric # No DINGBAT CIRCLED SANS-SERIF NUMBER TEN
2793 ; Numeric # No DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
2CFD ; Numeric # No COPTIC FRACTION ONE HALF
3007 ; Numeric # Nl IDEOGRAPHIC NUMBER ZERO
3021..3029 ; Numeric # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
3038..303A ; Numeric # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
3192..3195 ; Numeric # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
3220..3229 ; Numeric # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
3248..324F ; Numeric # No [8] CIRCLED NUMBER TEN ON BLACK SQUARE..CIRCLED NUMBER EIGHTY ON BLACK SQUARE
3251..325F ; Numeric # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
3280..3289 ; Numeric # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
32B1..32BF ; Numeric # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
3405 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-3405
3483 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-3483
382A ; Numeric # Lo CJK UNIFIED IDEOGRAPH-382A
3B4D ; Numeric # Lo CJK UNIFIED IDEOGRAPH-3B4D
4E00 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4E00
4E03 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4E03
4E07 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4E07
4E09 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4E09
4E24 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4E24
4E5D ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4E5D
4E8C ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4E8C
4E94 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4E94
4E96 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4E96
4EAC ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4EAC
4EBF..4EC0 ; Numeric # Lo [2] CJK UNIFIED IDEOGRAPH-4EBF..CJK UNIFIED IDEOGRAPH-4EC0
4EDF ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4EDF
4EE8 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4EE8
4F0D ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4F0D
4F70 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4F70
4FE9 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-4FE9
5006 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-5006
5104 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-5104
5146 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-5146
5169 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-5169
516B ; Numeric # Lo CJK UNIFIED IDEOGRAPH-516B
516D ; Numeric # Lo CJK UNIFIED IDEOGRAPH-516D
5341 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-5341
5343..5345 ; Numeric # Lo [3] CJK UNIFIED IDEOGRAPH-5343..CJK UNIFIED IDEOGRAPH-5345
534C ; Numeric # Lo CJK UNIFIED IDEOGRAPH-534C
53C1..53C4 ; Numeric # Lo [4] CJK UNIFIED IDEOGRAPH-53C1..CJK UNIFIED IDEOGRAPH-53C4
56DB ; Numeric # Lo CJK UNIFIED IDEOGRAPH-56DB
58F1 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-58F1
58F9 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-58F9
5E7A ; Numeric # Lo CJK UNIFIED IDEOGRAPH-5E7A
5EFE..5EFF ; Numeric # Lo [2] CJK UNIFIED IDEOGRAPH-5EFE..CJK UNIFIED IDEOGRAPH-5EFF
5F0C..5F0E ; Numeric # Lo [3] CJK UNIFIED IDEOGRAPH-5F0C..CJK UNIFIED IDEOGRAPH-5F0E
5F10 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-5F10
62D0 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-62D0
62FE ; Numeric # Lo CJK UNIFIED IDEOGRAPH-62FE
634C ; Numeric # Lo CJK UNIFIED IDEOGRAPH-634C
67D2 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-67D2
6D1E ; Numeric # Lo CJK UNIFIED IDEOGRAPH-6D1E
6F06 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-6F06
7396 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-7396
767E ; Numeric # Lo CJK UNIFIED IDEOGRAPH-767E
7695 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-7695
79ED ; Numeric # Lo CJK UNIFIED IDEOGRAPH-79ED
8086 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-8086
842C ; Numeric # Lo CJK UNIFIED IDEOGRAPH-842C
8CAE ; Numeric # Lo CJK UNIFIED IDEOGRAPH-8CAE
8CB3 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-8CB3
8D30 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-8D30
920E ; Numeric # Lo CJK UNIFIED IDEOGRAPH-920E
94A9 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-94A9
9621 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-9621
9646 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-9646
964C ; Numeric # Lo CJK UNIFIED IDEOGRAPH-964C
9678 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-9678
96F6 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-96F6
A6E6..A6EF ; Numeric # Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM
A830..A835 ; Numeric # No [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE SIXTEENTHS
F96B ; Numeric # Lo CJK COMPATIBILITY IDEOGRAPH-F96B
F973 ; Numeric # Lo CJK COMPATIBILITY IDEOGRAPH-F973
F978 ; Numeric # Lo CJK COMPATIBILITY IDEOGRAPH-F978
F9B2 ; Numeric # Lo CJK COMPATIBILITY IDEOGRAPH-F9B2
F9D1 ; Numeric # Lo CJK COMPATIBILITY IDEOGRAPH-F9D1
F9D3 ; Numeric # Lo CJK COMPATIBILITY IDEOGRAPH-F9D3
F9FD ; Numeric # Lo CJK COMPATIBILITY IDEOGRAPH-F9FD
10107..10133 ; Numeric # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
10140..10174 ; Numeric # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
10175..10178 ; Numeric # No [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
1018A..1018B ; Numeric # No [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN
102E1..102FB ; Numeric # No [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED
10320..10323 ; Numeric # No [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY
10341 ; Numeric # Nl GOTHIC LETTER NINETY
1034A ; Numeric # Nl GOTHIC LETTER NINE HUNDRED
103D1..103D5 ; Numeric # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
10858..1085F ; Numeric # No [8] IMPERIAL ARAMAIC NUMBER ONE..IMPERIAL ARAMAIC NUMBER TEN THOUSAND
10879..1087F ; Numeric # No [7] PALMYRENE NUMBER ONE..PALMYRENE NUMBER TWENTY
108A7..108AF ; Numeric # No [9] NABATAEAN NUMBER ONE..NABATAEAN NUMBER ONE HUNDRED
108FB..108FF ; Numeric # No [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED
10916..1091B ; Numeric # No [6] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER THREE
109BC..109BD ; Numeric # No [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF
109C0..109CF ; Numeric # No [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY
109D2..109FF ; Numeric # No [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS
10A44..10A48 ; Numeric # No [5] KHAROSHTHI NUMBER TEN..KHAROSHTHI FRACTION ONE HALF
10A7D..10A7E ; Numeric # No [2] OLD SOUTH ARABIAN NUMBER ONE..OLD SOUTH ARABIAN NUMBER FIFTY
10A9D..10A9F ; Numeric # No [3] OLD NORTH ARABIAN NUMBER ONE..OLD NORTH ARABIAN NUMBER TWENTY
10AEB..10AEF ; Numeric # No [5] MANICHAEAN NUMBER ONE..MANICHAEAN NUMBER ONE HUNDRED
10B58..10B5F ; Numeric # No [8] INSCRIPTIONAL PARTHIAN NUMBER ONE..INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND
10B78..10B7F ; Numeric # No [8] INSCRIPTIONAL PAHLAVI NUMBER ONE..INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND
10BA9..10BAF ; Numeric # No [7] PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER ONE HUNDRED
10CFA..10CFF ; Numeric # No [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND
10E69..10E7E ; Numeric # No [22] RUMI NUMBER TEN..RUMI FRACTION TWO THIRDS
10F1D..10F26 ; Numeric # No [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF
10F51..10F54 ; Numeric # No [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED
10FC5..10FCB ; Numeric # No [7] CHORASMIAN NUMBER ONE..CHORASMIAN NUMBER ONE HUNDRED
1105B..11065 ; Numeric # No [11] BRAHMI NUMBER TEN..BRAHMI NUMBER ONE THOUSAND
111E1..111F4 ; Numeric # No [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND
1173A..1173B ; Numeric # No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY
118EA..118F2 ; Numeric # No [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
11C5A..11C6C ; Numeric # No [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
11FC0..11FD4 ; Numeric # No [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH
12400..1246E ; Numeric # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
16B5B..16B61 ; Numeric # No [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS
16E80..16E96 ; Numeric # No [23] MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN DIGIT THREE ALTERNATE FORM
1D2C0..1D2D3 ; Numeric # No [20] KAKTOVIK NUMERAL ZERO..KAKTOVIK NUMERAL NINETEEN
1D2E0..1D2F3 ; Numeric # No [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN
1D360..1D378 ; Numeric # No [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE
1E8C7..1E8CF ; Numeric # No [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE
1EC71..1ECAB ; Numeric # No [59] INDIC SIYAQ NUMBER ONE..INDIC SIYAQ NUMBER PREFIXED NINE
1ECAD..1ECAF ; Numeric # No [3] INDIC SIYAQ FRACTION ONE QUARTER..INDIC SIYAQ FRACTION THREE QUARTERS
1ECB1..1ECB4 ; Numeric # No [4] INDIC SIYAQ NUMBER ALTERNATE ONE..INDIC SIYAQ ALTERNATE LAKH MARK
1ED01..1ED2D ; Numeric # No [45] OTTOMAN SIYAQ NUMBER ONE..OTTOMAN SIYAQ NUMBER NINETY THOUSAND
1ED2F..1ED3D ; Numeric # No [15] OTTOMAN SIYAQ ALTERNATE NUMBER TWO..OTTOMAN SIYAQ FRACTION ONE SIXTH
1F10B..1F10C ; Numeric # No [2] DINGBAT CIRCLED SANS-SERIF DIGIT ZERO..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
20001 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-20001
20064 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-20064
200E2 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-200E2
20121 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-20121
2092A ; Numeric # Lo CJK UNIFIED IDEOGRAPH-2092A
20983 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-20983
2098C ; Numeric # Lo CJK UNIFIED IDEOGRAPH-2098C
2099C ; Numeric # Lo CJK UNIFIED IDEOGRAPH-2099C
20AEA ; Numeric # Lo CJK UNIFIED IDEOGRAPH-20AEA
20AFD ; Numeric # Lo CJK UNIFIED IDEOGRAPH-20AFD
20B19 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-20B19
22390 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-22390
22998 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-22998
23B1B ; Numeric # Lo CJK UNIFIED IDEOGRAPH-23B1B
2626D ; Numeric # Lo CJK UNIFIED IDEOGRAPH-2626D
2F890 ; Numeric # Lo CJK COMPATIBILITY IDEOGRAPH-2F890
# Total code points: 1114
# ================================================
00B2..00B3 ; Digit # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
00B9 ; Digit # No SUPERSCRIPT ONE
1369..1371 ; Digit # No [9] ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE
19DA ; Digit # No NEW TAI LUE THAM DIGIT ONE
2070 ; Digit # No SUPERSCRIPT ZERO
2074..2079 ; Digit # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
2080..2089 ; Digit # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
2460..2468 ; Digit # No [9] CIRCLED DIGIT ONE..CIRCLED DIGIT NINE
2474..247C ; Digit # No [9] PARENTHESIZED DIGIT ONE..PARENTHESIZED DIGIT NINE
2488..2490 ; Digit # No [9] DIGIT ONE FULL STOP..DIGIT NINE FULL STOP
24EA ; Digit # No CIRCLED DIGIT ZERO
24F5..24FD ; Digit # No [9] DOUBLE CIRCLED DIGIT ONE..DOUBLE CIRCLED DIGIT NINE
24FF ; Digit # No NEGATIVE CIRCLED DIGIT ZERO
2776..277E ; Digit # No [9] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED DIGIT NINE
2780..2788 ; Digit # No [9] DINGBAT CIRCLED SANS-SERIF DIGIT ONE..DINGBAT CIRCLED SANS-SERIF DIGIT NINE
278A..2792 ; Digit # No [9] DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
10A40..10A43 ; Digit # No [4] KHAROSHTHI DIGIT ONE..KHAROSHTHI DIGIT FOUR
10E60..10E68 ; Digit # No [9] RUMI DIGIT ONE..RUMI DIGIT NINE
11052..1105A ; Digit # No [9] BRAHMI NUMBER ONE..BRAHMI NUMBER NINE
1F100..1F10A ; Digit # No [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA
# Total code points: 128
# ================================================
0030..0039 ; Decimal # Nd [10] DIGIT ZERO..DIGIT NINE
0660..0669 ; Decimal # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
06F0..06F9 ; Decimal # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
07C0..07C9 ; Decimal # Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE
0966..096F ; Decimal # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
09E6..09EF ; Decimal # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
0A66..0A6F ; Decimal # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
0AE6..0AEF ; Decimal # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
0B66..0B6F ; Decimal # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
0BE6..0BEF ; Decimal # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
0C66..0C6F ; Decimal # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
0CE6..0CEF ; Decimal # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
0D66..0D6F ; Decimal # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
0DE6..0DEF ; Decimal # Nd [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE
0E50..0E59 ; Decimal # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE
0ED0..0ED9 ; Decimal # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE
0F20..0F29 ; Decimal # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
1040..1049 ; Decimal # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
1090..1099 ; Decimal # Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE
17E0..17E9 ; Decimal # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
1810..1819 ; Decimal # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
1946..194F ; Decimal # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
19D0..19D9 ; Decimal # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
1A80..1A89 ; Decimal # Nd [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE
1A90..1A99 ; Decimal # Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE
1B50..1B59 ; Decimal # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
1BB0..1BB9 ; Decimal # Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE
1C40..1C49 ; Decimal # Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE
1C50..1C59 ; Decimal # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE
A620..A629 ; Decimal # Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE
A8D0..A8D9 ; Decimal # Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
A900..A909 ; Decimal # Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE
A9D0..A9D9 ; Decimal # Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE
A9F0..A9F9 ; Decimal # Nd [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE
AA50..AA59 ; Decimal # Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE
ABF0..ABF9 ; Decimal # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
FF10..FF19 ; Decimal # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
104A0..104A9 ; Decimal # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
10D30..10D39 ; Decimal # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
11066..1106F ; Decimal # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE
110F0..110F9 ; Decimal # Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE
11136..1113F ; Decimal # Nd [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
111D0..111D9 ; Decimal # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
112F0..112F9 ; Decimal # Nd [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE
11450..11459 ; Decimal # Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
114D0..114D9 ; Decimal # Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
11650..11659 ; Decimal # Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE
116C0..116C9 ; Decimal # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
11730..11739 ; Decimal # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
118E0..118E9 ; Decimal # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
11950..11959 ; Decimal # Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE
11C50..11C59 ; Decimal # Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
11D50..11D59 ; Decimal # Nd [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE
11DA0..11DA9 ; Decimal # Nd [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE
11F50..11F59 ; Decimal # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE
16A60..16A69 ; Decimal # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE
16AC0..16AC9 ; Decimal # Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE
16B50..16B59 ; Decimal # Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
1D7CE..1D7FF ; Decimal # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
1E140..1E149 ; Decimal # Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE
1E2F0..1E2F9 ; Decimal # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE
1E4F0..1E4F9 ; Decimal # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE
1E950..1E959 ; Decimal # Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
1FBF0..1FBF9 ; Decimal # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
# Total code points: 680
# EOF

2634
src/modules/punk/char/unicode15.1/extracted/DerivedNumericValues.txt

File diff suppressed because it is too large Load Diff

3
src/modules/punk/config-0.1.tm

@ -32,7 +32,8 @@ namespace eval punk::config {
dict set startup configset .punkshell dict set startup configset .punkshell
dict set startup exec_unknown true ;#whether to use exec instead of experimental shellfilter::run dict set startup exec_unknown true ;#whether to use exec instead of experimental shellfilter::run
dict set startup color_stdout [list cyan bold] #dict set startup color_stdout [list cyan bold] ;#not a good idea to default
dict set startup color_stdout [list]
dict set startup color_stderr [list red bold] dict set startup color_stderr [list red bold]
dict set startup syslog_stdout "127.0.0.1:514" dict set startup syslog_stdout "127.0.0.1:514"
dict set startup syslog_stderr "127.0.0.1:514" dict set startup syslog_stderr "127.0.0.1:514"

651
src/modules/punk/console-999999.0a1.0.tm

@ -17,6 +17,9 @@
# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ # ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++
## Requirements ## Requirements
##e.g package require frobz ##e.g package require frobz
package require punk::ansi
if {"windows" eq $::tcl_platform(platform)} { if {"windows" eq $::tcl_platform(platform)} {
package require zzzload package require zzzload
zzzload::pkg_require twapi zzzload::pkg_require twapi
@ -28,6 +31,22 @@ if {"windows" eq $::tcl_platform(platform)} {
namespace eval punk::console { namespace eval punk::console {
variable has_twapi 0 variable has_twapi 0
#punk::console namespace - contains *directly* acting functions - some based on ansi escapes from the 'ansi' sub namespace, some on local system calls or executable calls wrapped in the 'local' sub namespace
#directly acting means they write to stdout to cause the console to peform the action, or they perform the action immediately via other means.
#punk::console::ansi contains a subset of punk::ansi, but with emission to stdout as opposed to simply returning the ansi sequence.
#punk::console::local functions are used by punk::console commands when there is no ansi equivalent
#ansi escape sequences are possibly preferable esp if terminal is remote to process running punk::console
# punk::local commands may be more performant in some circumstances where console is directly attached, but it shouldn't be assumed. e.g ansi::titleset outperforms local::titleset on windows with twapi.
namespace eval ansi {
#ansi escape sequence based terminal/console control functions
namespace export *
}
namespace eval local {
#non-ansi terminal/console control functions
#e.g external utils system API's.
namespace export *
}
if {"windows" eq $::tcl_platform(platform)} { if {"windows" eq $::tcl_platform(platform)} {
proc enableAnsi {} { proc enableAnsi {} {
@ -93,12 +112,14 @@ namespace eval punk::console {
set oldmode [twapi::GetConsoleMode $console_handle] set oldmode [twapi::GetConsoleMode $console_handle]
set newmode [expr {$oldmode & ~6}] ;# Turn off the echo and line-editing bits set newmode [expr {$oldmode & ~6}] ;# Turn off the echo and line-editing bits
twapi::SetConsoleMode $console_handle $newmode twapi::SetConsoleMode $console_handle $newmode
return $newmode
} }
proc [namespace parent]::disableRaw {{channel stdin}} { proc [namespace parent]::disableRaw {{channel stdin}} {
set console_handle [twapi::GetStdHandle -10] set console_handle [twapi::GetStdHandle -10]
set oldmode [twapi::GetConsoleMode $console_handle] set oldmode [twapi::GetConsoleMode $console_handle]
set newmode [expr {$oldmode | 6}] ;# Turn on the echo and line-editing bits set newmode [expr {$oldmode | 6}] ;# Turn on the echo and line-editing bits
twapi::SetConsoleMode $console_handle $newmode twapi::SetConsoleMode $console_handle $newmode
return $newmode
} }
} else { } else {
@ -119,75 +140,280 @@ namespace eval punk::console {
} }
} }
proc ansi_response_handler {chan} { proc ansi_response_handler {chan accumulatorvar waitvar} {
set status [catch {read $chan 1} bytes] set status [catch {read $chan 1} bytes]
if { $status != 0 } { if { $status != 0 } {
# Error on the channel # Error on the channel
fileevent stdin readable {}
puts "error reading $chan: $bytes" puts "error reading $chan: $bytes"
set ::punk::console::chunkdone 2 set $waitvar [list error_read status $status bytes $bytes]
} elseif {$bytes ne ""} { } elseif {$bytes ne ""} {
# Successfully read the channel # Successfully read the channel
#puts "got: [string length $bytes]" #puts "got: [string length $bytes]"
append ::punk::console::chunk $bytes upvar $accumulatorvar chunk
append chunk $bytes
if {$bytes eq "R"} { if {$bytes eq "R"} {
set ::punk::console::chunkdone 4 fileevent stdin readable {}
} else { set $waitvar ok
fileevent stdin readable [list ::punk::console::internal::ansi_response_handler stdin]
} }
} elseif { [eof $chan] } { } elseif { [eof $chan] } {
fileevent stdin readable {}
# End of file on the channel # End of file on the channel
#review #review
puts "ansi_response_handler end of file" puts "ansi_response_handler end of file"
set ::punk::console::chunkdone 1 set $waitvar eof
} elseif { [fblocked $chan] } { } elseif { [fblocked $chan] } {
# Read blocked. Just return # Read blocked. Just return
} else { } else {
fileevent stdin readable {}
# Something else # Something else
puts "ansi_response_handler can't happen" puts "ansi_response_handler can't happen"
set ::punk::console::chunkdone 3 set $waitvar error_unknown
}
}
} ;#end namespace eval internal
variable colour_disabled 0
# https://no-color.org
if {[info exists ::env(NO_COLOR)]} {
if {$::env(NO_COLOR) ne ""} {
set colour_disabled 1
}
} }
namespace eval ansi {
proc a+ {args} {
puts -nonewline [::punk::ansi::a+ {*}$args]
} }
proc splitn {str {len 1}} {
#textutil::split::splitn
if {$len <= 0} {
return -code error "len must be > 0"
} }
if {$len == 1} { proc ansi+ {args} {
return [split $str {}] variable colour_disabled
if {$colour_disabled == 1} {
return
} }
set result [list] #stdout
set max [string length $str] tailcall ansi::a+ {*}$args
set i 0 }
set j [expr {$len -1}] proc get_ansi+ {args} {
while {$i < $max} { variable colour_disabled
lappend result [string range $str $i $j] if {$colour_disabled == 1} {
incr i $len return
incr j $len }
tailcall punk::ansi::a+ {*}$args
}
namespace eval ansi {
proc a {args} {
puts -nonewline [::punk::ansi::a {*}$args]
}
}
proc ansi {args} {
variable colour_disabled
if {$colour_disabled == 1} {
return
}
#stdout
tailcall ansi::a {*}$args
}
proc get_ansi {args} {
variable colour_disabled
if {$colour_disabled == 1} {
return
}
tailcall punk::ansi::a {*}$args
}
namespace eval ansi {
proc a? {args} {
puts -nonewline stdout [::punk::ansi::a? {*}$args]
}
}
proc ansi? {args} {
#stdout
tailcall ansi::a? {*}$args
}
proc get_ansi? {args} {
tailcall ::punk::ansi::a? {*}$args
}
proc colour {{onoff {}}} {
variable colour_disabled
if {[string length $onoff]} {
set onoff [string tolower $onoff]
if {$onoff in [list 1 on true yes]} {
interp alias "" a+ "" punk::console::ansi+
set colour_disabled 0
} elseif {$onoff in [list 0 off false no]} {
interp alias "" a+ "" control::no-op
set colour_disabled 1
} else {
error "punk::console::colour expected 0|1|on|off|true|false|yes|no"
} }
return $result
} }
catch {repl::reset_prompt}
return [expr {!$colour_disabled}]
} }
namespace eval ansi {
proc reset {} { proc reset {} {
tailcall puts -nonewline stdout \u001bc puts -nonewline stdout [punk::ansi::reset]
}
}
namespace import ansi::reset
namespace eval ansi {
proc clear {} {
puts -nonewline stdout [punk::ansi::clear]
}
proc clear_above {} {
puts -nonewline stdout [punk::ansi::clear_above]
}
proc clear_below {} {
puts -nonewline stdout [punk::ansi::clear_below]
}
proc clear_all {} {
puts -nonewline stdout [punk::ansi::clear_all]
} }
proc get_cursor_position {} { }
namespace import ansi::clear
namespace import ansi::clear_above
namespace import ansi::clear_below
namespace import ansi::clear_all
namespace eval local {
proc set_codepage_output {cpname} {
#todo
if {"windows" eq $::tcl_platform(platform)} {
twapi::set_console_output_codepage $cpname
} else {
error "set_codepage_output unimplemented on $::tcl_platform(platform)"
}
}
proc set_codepage_input {cpname} {
#todo
if {"windows" eq $::tcl_platform(platform)} {
twapi::set_console_input_codepage $cpname
} else {
error "set_codepage_input unimplemented on $::tcl_platform(platform)"
}
}
}
namespace import local::set_codepage_output
namespace import local::set_codepage_input
proc get_cursor_pos {} {
set ::punk::console::chunk "" set ::punk::console::chunk ""
set accumulator ::punk::console::chunk
set waitvar ::punk::console::chunkdone
set existing_handler [fileevent stdin readable]
set $waitvar ""
enableRaw enableRaw
fconfigure stdin -blocking 0
fileevent stdin readable [list ::punk::console::internal::ansi_response_handler stdin $accumulator $waitvar]
puts -nonewline stdout \033\[6n ;flush stdout puts -nonewline stdout \033\[6n ;flush stdout
after 0 {update idletasks}
#e.g \033\[46;1R #e.g \033\[46;1R
#todo - reset #todo - reset
fconfigure stdin -blocking 0
fileevent stdin readable [list ::punk::console::internal::ansi_response_handler stdin]
set info "" set info ""
vwait ::punk::console::chunkdone if {[set $waitvar] eq ""} {
fileevent stdin readable {} vwait $waitvar
}
disableRaw disableRaw
set info $::punk::console::chunk if {[string length $existing_handler]} {
fileevent stdin readable $existing_handler
}
set info [set $accumulator]
#set punk::console::chunk "" #set punk::console::chunk ""
set data [string range $info 2 end-1] set data [string range $info 2 end-1]
return [split $data ";"] return $data
}
proc get_cursor_pos_list {} {
return [split [get_cursor_pos] ";"]
} }
#terminals lie. This should be a reasonable (albeit relatively slow) test of actual width - but some terminals seem to miscalculate.
#todo - a visual interactive test/questionnaire to ask user if things are lining up or if the terminal is telling fibs about cursor position.
#todo - determine if these anomalies are independent of font
#punk::ansi should be able to glean widths from unicode data files - but this may be incomplete - todo - compare with what terminal actually does.
proc test_char_width {char_or_string {emit 0}} {
if {!$emit} {
puts -nonewline stdout \033\[2K\033\[1G ;#2K erase line 1G cursor at col1
}
lassign [split [punk::console::get_cursor_pos] ";"] _row1 col1
puts -nonewline stdout $char_or_string
lassign [split [punk::console::get_cursor_pos] ";"] _row2 col2
if {!$emit} {
puts -nonewline stdout \033\[2K\033\[1G
}
return [expr {$col2 - $col1}]
}
namespace eval ansi {
proc cursor_on {} {
puts -nonewline stdout [punk::ansi::cursor_on]
}
proc cursor_off {} {
puts -nonewline stdout [punk::ansi::cursor_off]
}
}
namespace import ansi::cursor_on
namespace import ansi::cursor_off
namespace eval local {
proc titleset {windowtitle} {
if {"windows" eq $::tcl_platform(platform)} {
if {![catch {twapi::set_console_title $windowtitle} result]} {
return $windowtitle
} else {
error "punk::console::titleset failed to set title - try punk::console::ansi::titleset"
}
} else {
error "punk::console::titleset has no local mechanism to set the window title on this platform. try punk::console::ansi::titleset"
}
}
proc titleget {} {
if {"windows" eq $::tcl_platform(platform)} {
if {![catch {twapi::get_console_title} result]} {
return $result
} else {
error "punk::console::titleset failed to set title - ensure twapi is available"
}
} else {
#titleget - https://invisible-island.net/xterm/xterm.faq.html#how2_title
# won't work on all platforms/terminals - but may be worth implementing
error "punk::console::titleget has no local mechanism to get the window title on this platform."
}
}
}
namespace eval ansi {
proc titleset {windowtitle} {
puts -nonewline stdout [punk::ansi::titleset $windowtitle]
}
}
namespace import ansi::titleset
#no known pure-ansi solution
proc titleget {} {
return [local::titleget]
}
proc infocmp_test {} {
set cmd1 [auto_execok infocmp]
if {[string length $cmd1]} {
puts stderr "infocmp seems to be available"
return [exec {*}$cmd1]
} else {
puts stderr "infcmp doesn't seem to be present"
set tcmd [auto_execok tput]
if {[string length $tcmd]} {
puts stderr "tput seems to be available. Try something like: tput -S - (freebsd)"
}
}
}
proc test {} { proc test {} {
enableRaw enableRaw
puts -nonewline stdout \033\[6n ;flush stdout puts -nonewline stdout \033\[6n ;flush stdout
@ -202,66 +428,331 @@ namespace eval punk::console {
return [split $data ";"] return [split $data ";"]
} }
#string to 2digit hex - e.g used by XTGETTCAP namespace eval ansi {
proc str2hex {input} { proc move {row col} {
set 2hex "" puts -nonewline stdout [punk::ansi::move $row $col]
foreach ch [split $input ""] {
append 2hex [format %02X [scan $ch %c]]
} }
return $2hex proc move_forward {row col} {
puts -nonewline stdout [punk::ansi::move_forward $row $col]
} }
proc hex2str {2digithexchars} { proc move_back {row col} {
if {$2digithexchars eq ""} { puts -nonewline stdout [punk::ansi::move_back $row $col]
return ""
} }
if {[string length $2digithexchars] % 2 != 0} { proc move_up {row col} {
error "hex2str requires an even number of hex digits (2 per character)" puts -nonewline stdout [punk::ansi::move_up $row $col]
} }
set 2str "" proc move_down {row col} {
foreach pair [internal::splitn $2digithexchars 2] { puts -nonewline stdout [punk::ansi::move_down $row $col]
append 2str [format %c 0x$pair]
} }
return $2str proc move_emit {row col data args} {
puts -nonewline stdout [punk::ansi::move_emit $row $col $data {*}$args]
} }
proc move_emit_return {row col data args} {
lassign [punk::console::get_cursor_pos_list] orig_row orig_col
set out ""
append out [punk::ansi::move_emit $row $col $data {*}$args]
if {!$is_in_raw} {
incr orig_row -1
}
move $orig_row $orig_col
}
}
namespace import ansi::move
namespace import ansi::move_emit
namespace import ansi::move_forward
namespace import ansi::move_back
namespace import ansi::move_up
namespace import ansi::move_down
# -- --- --- --- --- --- proc move_emit_return {row col data args} {
#XTGETTCAP #todo detect if in raw mode or not?
# xterm responds with set is_in_raw 0
# DCS 1 + r Pt ST for valid requests, adding to Pt an = , and lassign [punk::console::get_cursor_pos_list] orig_row orig_col
# the value of the corresponding string that xterm would send,
# or move_emit $row $col $data
# DCS 0 + r ST for invalid requests. foreach {row col data} $args {
# The strings are encoded in hexadecimal (2 digits per move_emit $row $col $data
# character). If more than one name is given, xterm replies
# with each name/value pair in the same response. An invalid
# name (one not found in xterm's tables) ends processing of the
# list of names.
proc getcap {keylist} {
#ESC P = 0x90 = DCS = Device Control String
set hexkeys [list]
foreach k $keylist {
lappend hexkeys [str2hex $k]
}
set payload [join $hexkeys ";"]
return "\x1bP+q$payload\x1b\\"
}
proc getcap2 {keylist} {
#ESC P = 0x90 = DCS = Device Control String
set hexkeys [list]
foreach k $keylist {
lappend hexkeys [str2hex $k]
}
set payload [join $hexkeys ";"]
return "\u0090+q$payload\u009c"
} }
# -- --- --- --- --- ---
if {!$is_in_raw} {
incr orig_row -1
}
move $orig_row $orig_col
return ""
}
proc move_call_return {row col script} {
lassign [punk::console::get_cursor_pos_list] orig_row orig_col
move $row $col
uplevel 1 $script
move $orig_row $orig_col
}
#this doesn't work - we would need an internal virtual screen structure to pick up cursor attributes from arbitrary locations
#at which point - you are probably better off with curses/ncurses
proc pick {row col} {
lassign [punk::console::get_cursor_pos_list] orig_row orig_col
set test ""
#set test [a green Yellow]
move_emit $row $col $test\0337
puts -nonewline \0338\033\[${orig_row}\;${orig_col}H
}
proc pick_emit {row col data} {
set test ""
#set test [a green Purple]
lassign [punk::console::get_cursor_pos_list] orig_row orig_col
move_emit $row $col $test\0337
puts -nonewline \0338\033\[${orig_row}\;${orig_col}H$data
}
# -- --- --- --- --- ---
namespace eval ansi {
proc test_decaln {} { proc test_decaln {} {
#Screen Alignment Test puts -nonewline stdout [punk::ansi::test_decaln]
#Reset margins, move cursor to the top left, and fill the screen with 'E' }
#(doesn't work on many terminals - seems to work in FreeBSD 13.2 and wezterm on windows)
return \x1b#8
} }
namespace import ansi::test_decaln
namespace eval clock {
#map chars of chars "0" to "?"" ie 0x30 to x3f
variable fontmap1 {
7C CE DE F6 E6 C6 7C 00
30 70 30 30 30 30 FC 00
78 CC 0C 38 60 CC FC 00
78 CC 0C 38 0C CC 78 00
1C 3C 6C CC FE 0C 1E 00
FC C0 F8 0C 0C CC 78 00
38 60 C0 F8 CC CC 78 00
FC CC 0C 18 30 30 30 00
78 CC CC 78 CC CC 78 00
78 CC CC 7C 0C 18 70 00
00 18 18 00 00 18 18 00
00 18 18 00 00 18 18 30
18 30 60 C0 60 30 18 00
00 00 7E 00 7E 00 00 00
60 30 18 0C 18 30 60 00
3C 66 0C 18 18 00 18 00
}
#libungif extras
append fontmap1 {
7c 82 9a aa aa 9e 7c 00
38 6c c6 c6 fe c6 c6 00
fc c6 c6 fc c6 c6 fc 00
}
#https://github.com/Distrotech/libungif/blob/master/lib/gif_font.c
variable fontmap {
}
#ascii row 0x00 to 0x1F control chars
#(cp437 glyphs)
append fontmap {
00 00 00 00 00 00 00 00
3c 42 a5 81 bd 42 3c 00
3c 7e db ff c3 7e 3c 00
00 ee fe fe 7c 38 10 00
10 38 7c fe 7c 38 10 00
00 3c 18 ff ff 08 18 00
10 38 7c fe fe 10 38 00
00 00 18 3c 18 00 00 00
ff ff e7 c3 e7 ff ff ff
00 3c 42 81 81 42 3c 00
ff c3 bd 7e 7e bd c3 ff
1f 07 0d 7c c6 c6 7c 00
00 7e c3 c3 7e 18 7e 18
04 06 07 04 04 fc f8 00
0c 0a 0d 0b f9 f9 1f 1f
00 92 7c 44 c6 7c 92 00
00 00 60 78 7e 78 60 00
00 00 06 1e 7e 1e 06 00
18 7e 18 18 18 18 7e 18
66 66 66 66 66 00 66 00
ff b6 76 36 36 36 36 00
7e c1 dc 22 22 1f 83 7e
00 00 00 7e 7e 00 00 00
18 7e 18 18 7e 18 00 ff
18 7e 18 18 18 18 18 00
18 18 18 18 18 7e 18 00
00 04 06 ff 06 04 00 00
00 20 60 ff 60 20 00 00
00 00 00 c0 c0 c0 ff 00
00 24 66 ff 66 24 00 00
00 00 10 38 7c fe 00 00
00 00 00 fe 7c 38 10 00
}
#chars SP to "/" row 0x20 to 0x2f
append fontmap {
00 00 00 00 00 00 00 00
30 30 30 30 30 00 30 00
66 66 00 00 00 00 00 00
6c 6c fe 6c fe 6c 6c 00
10 7c d2 7c 86 7c 10 00
f0 96 fc 18 3e 72 de 00
30 48 30 78 ce cc 78 00
0c 0c 18 00 00 00 00 00
10 60 c0 c0 c0 60 10 00
10 0c 06 06 06 0c 10 00
00 54 38 fe 38 54 00 00
00 18 18 7e 18 18 00 00
00 00 00 00 00 00 18 70
00 00 00 7e 00 00 00 00
00 00 00 00 00 00 18 00
02 06 0c 18 30 60 c0 00
}
#chars "0" to "?"" row 0x30 to 0x3f
append fontmap {
7c c6 c6 c6 c6 c6 7c 00
18 38 78 18 18 18 3c 00
7c c6 06 0c 30 60 fe 00
7c c6 06 3c 06 c6 7c 00
0e 1e 36 66 fe 06 06 00
fe c0 c0 fc 06 06 fc 00
7c c6 c0 fc c6 c6 7c 00
fe 06 0c 18 30 60 60 00
7c c6 c6 7c c6 c6 7c 00
7c c6 c6 7e 06 c6 7c 00
00 30 00 00 00 30 00 00
00 30 00 00 00 30 20 00
00 1c 30 60 30 1c 00 00
00 00 7e 00 7e 00 00 00
00 70 18 0c 18 70 00 00
7c c6 0c 18 30 00 30 00
}
#chars "@" to "O" row 0x40 to 0x4f
append fontmap {
7c 82 9a aa aa 9e 7c 00
38 6c c6 c6 fe c6 c6 00
fc c6 c6 fc c6 c6 fc 00
7c c6 c6 c0 c0 c6 7c 00
f8 cc c6 c6 c6 cc f8 00
fe c0 c0 fc c0 c0 fe 00
fe c0 c0 fc c0 c0 c0 00
7c c6 c0 ce c6 c6 7e 00
c6 c6 c6 fe c6 c6 c6 00
78 30 30 30 30 30 78 00
1e 06 06 06 c6 c6 7c 00
c6 cc d8 f0 d8 cc c6 00
c0 c0 c0 c0 c0 c0 fe 00
c6 ee fe d6 c6 c6 c6 00
c6 e6 f6 de ce c6 c6 00
7c c6 c6 c6 c6 c6 7c 00
}
#chars "P" to "_" row 0x50 to 0x5f
append fontmap {
fc c6 c6 fc c0 c0 c0 00
7c c6 c6 c6 c6 c6 7c 06
fc c6 c6 fc c6 c6 c6 00
78 cc 60 30 18 cc 78 00
fc 30 30 30 30 30 30 00
c6 c6 c6 c6 c6 c6 7c 00
c6 c6 c6 c6 c6 6c 38 00
c6 c6 c6 d6 fe ee c6 00
c6 c6 6c 38 6c c6 c6 00
c3 c3 66 3c 18 18 18 00
fe 0c 18 30 60 c0 fe 00
3c 30 30 30 30 30 3c 00
c0 60 30 18 0c 06 03 00
3c 0c 0c 0c 0c 0c 3c 00
00 38 6c c6 00 00 00 00
00 00 00 00 00 00 00 ff
}
#chars "`" to "o" row 0x60 to 0x6f
append fontmap {
30 30 18 00 00 00 00 00
00 00 7c 06 7e c6 7e 00
c0 c0 fc c6 c6 e6 dc 00
00 00 7c c6 c0 c0 7e 00
06 06 7e c6 c6 ce 76 00
00 00 7c c6 fe c0 7e 00
1e 30 7c 30 30 30 30 00
00 00 7e c6 ce 76 06 7c
c0 c0 fc c6 c6 c6 c6 00
18 00 38 18 18 18 3c 00
18 00 38 18 18 18 18 f0
c0 c0 cc d8 f0 d8 cc 00
38 18 18 18 18 18 3c 00
00 00 cc fe d6 c6 c6 00
00 00 fc c6 c6 c6 c6 00
00 00 7c c6 c6 c6 7c 00
}
#chars "p" to DEL row 0x70 to 0x7f
append fontmap {
00 00 fc c6 c6 e6 dc c0
00 00 7e c6 c6 ce 76 06
00 00 6e 70 60 60 60 00
00 00 7c c0 7c 06 fc 00
30 30 7c 30 30 30 1c 00
00 00 c6 c6 c6 c6 7e 00
00 00 c6 c6 c6 6c 38 00
00 00 c6 c6 d6 fe 6c 00
00 00 c6 6c 38 6c c6 00
00 00 c6 c6 ce 76 06 7c
00 00 fc 18 30 60 fc 00
0e 18 18 70 18 18 0e 00
18 18 18 00 18 18 18 00
e0 30 30 1c 30 30 e0 00
00 00 70 9a 0e 00 00 00
00 00 18 3c 66 ff 00 00
}
proc bigstr {str row col} {
variable fontmap
#curses attr off reverse
#a noreverse
set reverse 0
set output ""
set charno 0
foreach char [split $str {}] {
binary scan $char c f
set index [expr {$f * 8}]
for {set line 0} {$line < 8} {incr line} {
set bitline 0x[lindex $fontmap [expr {$index + $line}]]
binary scan [binary format c $bitline] B8 charline
set cix 0
foreach c [split $charline {}] {
if {$c} {
append output [punk::ansi::move_emit [expr {$row + $line}] [expr {$col + $charno * 8 + $cix}] "[a reverse] [a noreverse]"]
#curses attr on reverse
#curses move [expr $row + $line] [expr $col + $charno * 8 + $cix]
#curses puts " "
}
incr cix
}
}
incr charno
}
return $output
}
proc display1 {} {
#punk::console::clear
punk::console::move_call_return 20 20 {punk::console::clear_above}
flush stdout
punk::console::move_call_return 0 0 {puts stdout [bigstr [clock format [clock seconds] -format %H:%M:%S] 10 5]}
after 2000 {punk::console::clock::display}
}
proc display {} {
lassign [punk::console::get_cursor_pos_list] orig_row orig_col
punk::console::move 20 20
punk::console::clear_above
punk::console::move 0 0
puts -nonewline [bigstr [clock format [clock seconds] -format %H:%M:%S] 10 5]
punk::console::move $orig_row $orig_col
#after 2000 {punk::console::clock::display}
}
proc displaystr {str} {
lassign [punk::console::get_cursor_pos_list] orig_row orig_col
punk::console::move 20 20
punk::console::clear_above
punk::console::move 0 0
puts -nonewline [bigstr $str 10 5]
punk::console::move $orig_row $orig_col
}
}
} }

41
src/modules/punk/repl-0.1.tm

@ -36,6 +36,7 @@ package require shellfilter
package require shellrun package require shellrun
package require punk package require punk
package require punk::ns package require punk::ns
package require punk::ansi
@ -512,7 +513,7 @@ proc ::unknown args {
set m "errorCode $::errorCode" set m "errorCode $::errorCode"
} }
set chunklist [list] set chunklist [list]
lappend chunklist [list "info" "[a+ $c]$m[a+] " ] lappend chunklist [list "info" "[a $c]$m[a] " ]
set ::punk::last_run_display $chunklist set ::punk::last_run_display $chunklist
} }
@ -621,19 +622,18 @@ proc repl::doprompt {prompt {col {green bold}}} {
#We can pipe commands into repl's stdin without the prompt interfering with the output. #We can pipe commands into repl's stdin without the prompt interfering with the output.
#Although all command output for each line goes to stdout - not just what is emmited with puts #Although all command output for each line goes to stdout - not just what is emmited with puts
if {$::tcl_interactive} { if {$::tcl_interactive} {
set o [a+ {*}$col] set o [a= {*}$col]
set r [a+] set r [a=]
puts -nonewline stderr $o$prompt$r puts -nonewline stderr $o$prompt$r
flush stderr flush stderr
} }
} }
proc repl::get_prompt_config {} { proc repl::get_prompt_config {} {
if {$::tcl_interactive} { if {$::tcl_interactive} {
#todo make a+ stacking set resultprompt "[a green bold]-[a] "
set resultprompt "[a+ green bold]-[a+] " set nlprompt "[a green bold].[a] "
set nlprompt "[a+ green bold].[a+] " set infoprompt "[a green bold]*[a] "
set infoprompt "[a+ green bold]*[a+] " set debugprompt "[a purple bold]~[a] "
set debugprompt "[a+ purple bold]~[a+] "
} else { } else {
set resultprompt "" set resultprompt ""
set nlprompt "" set nlprompt ""
@ -863,8 +863,8 @@ proc repl::rputs {args} {
#This should only occur if the repl itself is being rewritten/debugged, #This should only occur if the repl itself is being rewritten/debugged,
#so we will use red "!" and not worry about the extra newlines before and after #so we will use red "!" and not worry about the extra newlines before and after
if {[catch { puts {*}$args } err]} { if {[catch { puts {*}$args } err]} {
set c [a+ yellow bold] set c [a yellow bold]
set n [a+] set n [a]
#possibly non punk-compliant output because we're assuming the repl was the most recent emitter #possibly non punk-compliant output because we're assuming the repl was the most recent emitter
#could be wrong, in which case we may emit an extra newline #could be wrong, in which case we may emit an extra newline
#- shouldn't matter in this case #- shouldn't matter in this case
@ -875,7 +875,7 @@ proc repl::rputs {args} {
} else { } else {
set clear "\n" set clear "\n"
} }
puts -nonewline stderr "$clear[a+ red bold]! REPL ERROR IN rputs $c$err$n\n" puts -nonewline stderr "$clear[a red bold]! REPL ERROR IN rputs $c$err$n\n"
screen_last_char_add "\n" replerror "rputs err: '$err'" screen_last_char_add "\n" replerror "rputs err: '$err'"
return return
} else { } else {
@ -1048,13 +1048,16 @@ proc repl::repl_handler {inputchan prompt_config} {
#*********************************************************** #***********************************************************
#don't use puts,rputs or debug_repl_emit in this block #don't use puts,rputs or debug_repl_emit in this block
#*********************************************************** #***********************************************************
if {[string length [dict get $running_config color_stdout]] && [punk::colour]} {
if {[string length [dict get $running_config color_stdout]] && [punk::console::colour]} {
lappend outstack [shellfilter::stack::add stdout ansiwrap -settings [list -colour [dict get $running_config color_stdout]]] lappend outstack [shellfilter::stack::add stdout ansiwrap -settings [list -colour [dict get $running_config color_stdout]]]
} }
lappend outstack [shellfilter::stack::add stdout tee_to_var -settings {-varname ::repl::output_stdout}] lappend outstack [shellfilter::stack::add stdout tee_to_var -settings {-varname ::repl::output_stdout}]
if {[string length [dict get $running_config color_stderr]] && [punk::colour]} { if {[string length [dict get $running_config color_stderr]] && [punk::console::colour]} {
lappend errstack [shellfilter::stack::add stderr ansiwrap -settings [list -colour [dict get $running_config color_stderr]]] lappend errstack [shellfilter::stack::add stderr ansiwrap -settings [list -colour [dict get $running_config color_stderr]]]
} }
lappend errstack [shellfilter::stack::add stderr tee_to_var -settings {-varname ::repl::output_stderr}] lappend errstack [shellfilter::stack::add stderr tee_to_var -settings {-varname ::repl::output_stderr}]
#chan configure stdout -buffering none #chan configure stdout -buffering none
fileevent $inputchan readable {} fileevent $inputchan readable {}
@ -1112,8 +1115,8 @@ proc repl::repl_handler {inputchan prompt_config} {
} }
#----------------------------------------- #-----------------------------------------
set lastoutchar [string index [overtype::stripansi $::repl::output_stdout] end] set lastoutchar [string index [punk::ansi::stripansi $::repl::output_stdout] end]
set lasterrchar [string index [overtype::stripansi $::repl::output_stderr] end] set lasterrchar [string index [punk::ansi::stripansi $::repl::output_stderr] end]
#to determine whether cursor is back at col0 of newline #to determine whether cursor is back at col0 of newline
screen_last_char_add [string index $lastoutchar$lasterrchar end] "stdout/stderr" screen_last_char_add [string index $lastoutchar$lasterrchar end] "stdout/stderr"
@ -1302,8 +1305,8 @@ proc repl::repl_handler {inputchan prompt_config} {
} }
} }
set c [a+ yellow bold] set c [a yellow bold]
set n [a+] set n [a]
rputs stderr $c$result$n rputs stderr $c$result$n
#tcl err hint prompt - lowercase #tcl err hint prompt - lowercase
doprompt "p% " doprompt "p% "
@ -1329,8 +1332,8 @@ proc repl::repl_handler {inputchan prompt_config} {
fileevent $inputchan readable {} fileevent $inputchan readable {}
rputs stderr "* console_control: control-c" rputs stderr "* console_control: control-c"
flush stderr flush stderr
set c [a+ yellow bold] set c [a yellow bold]
set n [a+] set n [a]
rputs stderr "${c}repl interrupted$n" rputs stderr "${c}repl interrupted$n"
#set commandstr [list error "repl interrupted"] #set commandstr [list error "repl interrupted"]
set commandstr "" set commandstr ""

8
src/modules/punkcheck-0.1.0.tm

@ -516,18 +516,16 @@ namespace eval punkcheck {
punkcheck::install $srcdir $basedir {*}$opts punkcheck::install $srcdir $basedir {*}$opts
} }
#for tcl8.6 - tcl8.7+ has dict getwithdefault #for tcl8.6 - tcl8.7+ has dict getwithdefault (dict getdef)
proc dict_getwithdefault {dictValue args} { proc dict_getwithdefault {dictValue args} {
if {[llength $args] < 2} { if {[llength $args] < 2} {
error {wrong # args: should be "dict_getwithdefault dictValue ?key ...? key default"} error {wrong # args: should be "dict_getdef dictionary ?key ...? key default"}
} }
set default [lindex $args end]
set keys [lrange $args 0 end-1] set keys [lrange $args 0 end-1]
if {[dict exists $dictValue {*}$keys]} { if {[dict exists $dictValue {*}$keys]} {
return [dict get $dictValue {*}$keys] return [dict get $dictValue {*}$keys]
} else { } else {
return $default return [lindex $args end]
} }
} }
proc pathglob_as_re {glob} { proc pathglob_as_re {glob} {

221
src/modules/shellfilter-0.1.8.tm

@ -8,10 +8,6 @@
# - as presumably the reads/writes from a bidirectional channel could be diverted off to unidirectional pipelines for processing with less work # - as presumably the reads/writes from a bidirectional channel could be diverted off to unidirectional pipelines for processing with less work
# (and maybe even better speed/efficiency if the data volume is asymmetrical and there is significant processing on one direction) # (and maybe even better speed/efficiency if the data volume is asymmetrical and there is significant processing on one direction)
# #
package provide shellfilter [namespace eval shellfilter {
variable version
set version 0.1.8
}]
namespace eval shellfilter::log { namespace eval shellfilter::log {
@ -123,48 +119,181 @@ namespace eval shellfilter::pipe {
} }
} }
namespace eval shellfilter::ansi { namespace eval shellfilter::ansi2 {
#shellfilter::ansi procs only: adapted from ansicolor page on wiki https://wiki.tcl-lang.org/page/ANSI+color+control except where otherwise marked #shellfilter::ansi procs only: adapted from ansicolor page on wiki https://wiki.tcl-lang.org/page/ANSI+color+control except where otherwise marked
variable test "blah\033\[1;33mETC\033\[0;mOK" variable test "blah\033\[1;33mETC\033\[0;mOK"
namespace export + namespace export + = ?
variable map { #CSI <n> m = SGR (Select Graphic Rendition)
bold 1 light 2 blink 5 invert 7 underline 4 variable SGR_setting_map {
black 30 red 31 green 32 yellow 33 blue 34 purple 35 cyan 36 white 37 bold 1 dim 2 blink 5 fastblink 6 noblink 25 hide 8 normal 22
underline 4 doubleunderline 21 nounderline 24 strike 9 nostrike 29 italic 3 noitalic 23
reverse 7 noreverse 27 defaultfg 39 defaultbg 49
overline 53 nooverline 55 frame 51 framecircle 52 noframe 54
}
variable SGR_colour_map {
black 30 red 31 green 32 yellow 33 blue 4 purple 35 cyan 36 white 37
Black 40 Red 41 Green 42 Yellow 43 Blue 44 Purple 45 Cyan 46 White 47 Black 40 Red 41 Green 42 Yellow 43 Blue 44 Purple 45 Cyan 46 White 47
BLACK 100 RED 101 GREEN 102 YELLOW 103 BLUE 104 PURPLE 105 CYAN 106 WHITE 107
}
variable SGR_map
set SGR_map [dict merge $SGR_colour_map $SGR_setting_map]
proc colourmap1 {{bgname White}} {
package require textblock
set bg [textblock::block 3 33 "[a+ $bgname] [a=]"]
set colormap ""
for {set i 0} {$i <= 7} {incr i} {
append colormap "_[a+ white bold 48\;5\;$i] $i [a=]"
}
set map1 [overtype::left -transparent _ $bg "\n$colormap"]
return $map1
}
proc colourmap2 {{bgname White}} {
package require textblock
set bg [textblock::block 3 39 "[a+ $bgname] [a=]"]
set colormap ""
for {set i 8} {$i <= 15} {incr i} {
append colormap "_[a+ black normal 48\;5\;$i] $i [a=]" ;#black normal is blacker than black bold - which often displays as a grey
}
set map2 [overtype::left -transparent _ $bg "\n$colormap"]
return $map2
}
proc ? {args} {
variable SGR_setting_map
variable SGR_colour_map
if {![llength $args]} {
set out ""
append out $SGR_setting_map \n
append out $SGR_colour_map \n
try {
set bgname "White"
set map1 [colourmap1 $bgname]
set map1 [overtype::centre -transparent 1 $map1 "[a= black $bgname]Standard colours[a=]"]
set map2 [colourmap2 $bgname]
set map2 [overtype::centre -transparent 1 $map2 "[a= black $bgname]High-intensity colours[a=]"]
append out [textblock::join [textblock::join $map1 " "] $map2] \n
#append out $map1[a=] \n
#append out $map2[a=] \n
} on error {result options} {
puts stderr "Failed to draw colormap"
puts stderr "$result"
} finally {
return $out
}
} else {
set result [list]
set rmap [lreverse $map]
foreach i $args {
if {[string is integer -strict $i]} {
if {[dict exists $rmap $i]} {
lappend result $i [dict get $rmap $i]
}
} else {
if {[dict exists $map $i]} {
lappend result $i [dict get $map $i]
}
}
}
return $result
}
} }
proc + {args} { proc + {args} {
#don't disable ansi here. #don't disable ansi here.
#we want this to be available to call even if ansi is off #we want this to be available to call even if ansi is off
variable map variable SGR_map
set t 0 set t [list]
foreach i $args { foreach i $args {
set ix [lsearch -exact $map $i] if {[string is integer -strict $i]} {
if {$ix>-1} {lappend t [lindex $map [incr ix]]} lappend t $i
} elseif {[string first ";" $i] >=0} {
#literal with params
lappend t $i
} else {
if {[dict exists $SGR_map $i]} {
lappend t [dict get $SGR_map $i]
} else {
#accept examples for foreground
# 256f-# or 256fg-# or 256f#
# rgbf-<r>-<g>-<b> or rgbfg-<r>-<g>-<b> or rgbf<r>-<g>-<b>
if {[string match -nocase "256f*" $i]} {
set cc [string trim [string range $i 4 end] -gG]
lappend t "38;5;$cc"
} elseif {[string match -nocase 256b* $i]} {
set cc [string trim [string range $i 4 end] -gG]
lappend t "48;5;$cc"
} elseif {[string match -nocase rgbf* $i]} {
set rgb [string trim [string range $i 4 end] -gG]
lassign [split $rgb -] r g b
lappend t "38;2;$r;$g;$b"
} elseif {[string match -nocase rgbb* $i]} {
set rgb [string trim [string range $i 4 end] -gG]
lassign [split $rgb -] r g b
lappend t "48;2;$r;$g;$b"
}
}
}
} }
# \033 - octal. equivalently \x1b in hex which is more common in documentation # \033 - octal. equivalently \x1b in hex which is more common in documentation
if {![llength $t]} {
return "" ;# a+ nonexistent should return nothing rather than a reset ( \033\[\;m is a reset even without explicit zero(s))
}
return "\x1b\[[join $t {;}]m" return "\x1b\[[join $t {;}]m"
} }
proc get {code} { proc = {args} {
variable map #don't disable ansi here.
set res [list] #we want this to be available to call even if ansi is off
foreach i [split $code ";"] { variable SGR_map
set ix [lsearch -exact $map $i] set t [list]
if {$ix>-1} {lappend res [lindex $map [incr ix -1]]} foreach i $args {
if {[string is integer -strict $i]} {
lappend t $i
} elseif {[string first ";" $i] >=0} {
#literal with params
lappend t $i
} else {
if {[dict exists $SGR_map $i]} {
lappend t [dict get $SGR_map $i]
} else {
#accept examples for foreground
# 256f-# or 256fg-# or 256f#
# rgbf-<r>-<g>-<b> or rgbfg-<r>-<g>-<b> or rgbf<r>-<g>-<b>
if {[string match -nocase "256f*" $i]} {
set cc [string trim [string range $i 4 end] -gG]
lappend t "38;5;$cc"
} elseif {[string match -nocase 256b* $i]} {
set cc [string trim [string range $i 4 end] -gG]
lappend t "48;5;$cc"
} elseif {[string match -nocase rgbf* $i]} {
set rgb [string trim [string range $i 4 end] -gG]
lassign [split $rgb -] r g b
lappend t "38;2;$r;$g;$b"
} elseif {[string match -nocase rgbb* $i]} {
set rgb [string trim [string range $i 4 end] -gG]
lassign [split $rgb -] r g b
lappend t "48;2;$r;$g;$b"
}
} }
set res }
}
# \033 - octal. equivalently \x1b in hex which is more common in documentation
# empty list [a=] should do reset - same for [a= nonexistant]
# explicit reset at beginning of parameter list for a= (as opposed to a+)
set t [linsert $t 0 0]
return "\x1b\[[join $t {;}]m"
} }
#jn 2023 }
#package require term::ansi::code
#package require term::ansi::code::attr
#term::ansi::code::attr::import attr
#puts stdout "[::term::ansi::code::attr::fgred] is red"
proc reset {} {
return "\x1bc" ;#reset console
#return "\x1b\[0m" ;#reset color only
}
namespace eval shellfilter::ansi {
#maint warning - from overtype package #maint warning - from overtype package
proc stripcodes {text} { proc stripcodes {text} {
#single "final byte" in the range 0x40–0x7E (ASCII @A–Z[\]^_`a–z{|}~). #single "final byte" in the range 0x40–0x7E (ASCII @A–Z[\]^_`a–z{|}~).
@ -218,24 +347,6 @@ namespace eval shellfilter::ansi {
} }
return [join $outputlist ""] return [join $outputlist ""]
} }
#maintenance warning - also in 'overtype' pkg
#strip ansi codes from text - basic! assumes we don't get data split in the middle of an ansi-code ie best used with line-buffering
proc stripcodes1_bogus {text} {
if {[set posn [string first "\033\[" $text]] >= 0} {
set mnext [string first m [string range $text $posn end]]
if {$mnext >= 0} {
set mpos [expr {$posn + $mnext}]
set stripped1 [string range $text 0 $posn-1][string range $text $mpos+1 end]
#return [stripcodes $stripped1] ;#recurse to get any others
tailcall ::shellfilter::ansi::stripcodes $stripped1
} else {
#partial or not actually an ansi code.. pass it all through
return $text
}
} else {
return $text
}
}
} }
namespace eval shellfilter::chan { namespace eval shellfilter::chan {
@ -555,12 +666,14 @@ namespace eval shellfilter::chan {
#review - we should probably provide a more narrow filter than only strips color - and one that strips most(?) #review - we should probably provide a more narrow filter than only strips color - and one that strips most(?)
# - but does it ever really make sense to strip things like "esc(0" and "esc(B" which flip to the G0 G1 characters? (once stripped - things like box-lines become ordinary letters - unlikely to be desired?) # - but does it ever really make sense to strip things like "esc(0" and "esc(B" which flip to the G0 G1 characters? (once stripped - things like box-lines become ordinary letters - unlikely to be desired?)
#punk::ansi::stripansi converts at least some of the box drawing G0 chars to unicode - todo - more complete conversion
#assumes line-buffering. a more advanced filter required if ansicodes can arrive split accross separate read or write operations! #assumes line-buffering. a more advanced filter required if ansicodes can arrive split accross separate read or write operations!
oo::class create ansistrip { oo::class create ansistrip {
variable o_trecord variable o_trecord
variable o_enc variable o_enc
variable o_is_junction variable o_is_junction
constructor {tf} { constructor {tf} {
package require punk::ansi
set o_trecord $tf set o_trecord $tf
set o_enc [dict get $tf -encoding] set o_enc [dict get $tf -encoding]
if {[dict exists $tf -junction]} { if {[dict exists $tf -junction]} {
@ -579,12 +692,12 @@ namespace eval shellfilter::chan {
} }
method read {transform_handle bytes} { method read {transform_handle bytes} {
set instring [encoding convertfrom $o_enc $bytes] set instring [encoding convertfrom $o_enc $bytes]
set outstring [shellfilter::ansi::stripcodes $instring] set outstring [punk::ansi::stripansi $instring]
return [encoding convertto $o_enc $outstring] return [encoding convertto $o_enc $outstring]
} }
method write {transform_handle bytes} { method write {transform_handle bytes} {
set instring [encoding convertfrom $o_enc $bytes] set instring [encoding convertfrom $o_enc $bytes]
set outstring [shellfilter::ansi::stripcodes $instring] set outstring [punk::ansi::stripansi $instring]
return [encoding convertto $o_enc $outstring] return [encoding convertto $o_enc $outstring]
#return [encoding convertto unicode $outstring] #return [encoding convertto unicode $outstring]
} }
@ -638,13 +751,14 @@ namespace eval shellfilter::chan {
variable o_do_normal variable o_do_normal
variable o_is_junction variable o_is_junction
constructor {tf} { constructor {tf} {
package require punk::ansi
set o_trecord $tf set o_trecord $tf
set o_enc [dict get $tf -encoding] set o_enc [dict get $tf -encoding]
set settingsdict [dict get $tf -settings] set settingsdict [dict get $tf -settings]
if {[dict exists $settingsdict -colour]} { if {[dict exists $settingsdict -colour]} {
set o_colour [dict get $settingsdict -colour] set o_colour [dict get $settingsdict -colour]
set o_do_colour [shellfilter::ansi::+ {*}$o_colour] set o_do_colour [punk::ansi::a+ {*}$o_colour]
set o_do_normal [shellfilter::ansi::+] set o_do_normal [punk::ansi::a]
} else { } else {
set o_colour {} set o_colour {}
set o_do_colour "" set o_do_colour ""
@ -2730,3 +2844,8 @@ namespace eval shellfilter {
} }
} }
package provide shellfilter [namespace eval shellfilter {
variable version
set version 0.1.8
}]

57
src/modules/shellrun-0.1.tm

@ -4,6 +4,7 @@
#e.g run,runout,runerr,runx #e.g run,runout,runerr,runx
package require shellfilter package require shellfilter
package require punk::ansi
#NOTE: the run,runout,runerr,runx commands only produce an error if the command didn't run. #NOTE: the run,runout,runerr,runx commands only produce an error if the command didn't run.
# - If it did run, but there was a non-zero exitcode it is up to the application to check that. # - If it did run, but there was a non-zero exitcode it is up to the application to check that.
@ -34,6 +35,8 @@ namespace eval shellrun {
set errdevice [shellfilter::stack::new punkerr -settings [list -tag "punkerr" -buffering none -raw 1 -syslog $syslog_stderr -file $logfile_stderr]] set errdevice [shellfilter::stack::new punkerr -settings [list -tag "punkerr" -buffering none -raw 1 -syslog $syslog_stderr -file $logfile_stderr]]
set err [dict get $errdevice localchan] set err [dict get $errdevice localchan]
namespace import ::punk::ansi::a+
namespace import ::punk::ansi::a
@ -63,12 +66,7 @@ namespace eval shellrun {
set ::punk::last_run_display $chunklist set ::punk::last_run_display $chunklist
} }
if {![llength [info commands a+]]} {
#create the proc in this namespace only
proc a+ {args} {
shellfilter::ansi::+
}
}
proc get_run_opts {arglist} { proc get_run_opts {arglist} {
@ -209,7 +207,7 @@ namespace eval shellrun {
set chunklist [list] set chunklist [list]
#exitcode not part of return value for runout - colourcode appropriately #exitcode not part of return value for runout - colourcode appropriately
set n [a+] set n [a]
set c "" set c ""
if [dict exists $exitinfo exitcode] { if [dict exists $exitinfo exitcode] {
set code [dict get $exitinfo exitcode] set code [dict get $exitinfo exitcode]
@ -232,7 +230,7 @@ namespace eval shellrun {
} }
set chunk "[a+ red bold]stderr[a+]" set chunk "[a+ red bold]stderr[a]"
lappend chunklist [list "info" $chunk] lappend chunklist [list "info" $chunk]
set chunk "" set chunk ""
@ -242,15 +240,15 @@ namespace eval shellrun {
} else { } else {
set e $::shellrun::runerr set e $::shellrun::runerr
} }
#append chunk "[a+ red light]$e[a+]\n" #append chunk "[a+ red light]$e[a]\n"
append chunk "[a+ red light]$e[a+]" append chunk "[a+ red light]$e[a]"
} }
lappend chunklist [list stderr $chunk] lappend chunklist [list stderr $chunk]
lappend chunklist [list "info" "[a+ white bold]stdout[a+]"] lappend chunklist [list "info" "[a+ white bold]stdout[a]"]
set chunk "" set chunk ""
if {[string length $::shellrun::runout]} { if {[string length $::shellrun::runout]} {
if {$nonewline} { if {$nonewline} {
@ -323,7 +321,7 @@ namespace eval shellrun {
set chunklist [list] set chunklist [list]
set n [a+] set n [a]
set c "" set c ""
if [dict exists $exitinfo exitcode] { if [dict exists $exitinfo exitcode] {
set code [dict get $exitinfo exitcode] set code [dict get $exitinfo exitcode]
@ -346,7 +344,7 @@ namespace eval shellrun {
} }
lappend chunklist [list "info" "[a+ white bold]stdout[a+]"] lappend chunklist [list "info" "[a+ white bold]stdout[a]"]
set chunk "" set chunk ""
if {[string length $::shellrun::runout]} { if {[string length $::shellrun::runout]} {
if {$nonewline} { if {$nonewline} {
@ -354,13 +352,13 @@ namespace eval shellrun {
} else { } else {
set o $::shellrun::runout set o $::shellrun::runout
} }
append chunk "[a+ white light]$o[a+]\n" ;#this newline is the display output separator - always there whether data has trailing newline or not. append chunk "[a+ white light]$o[a]\n" ;#this newline is the display output separator - always there whether data has trailing newline or not.
} }
lappend chunklist [list stdout $chunk] lappend chunklist [list stdout $chunk]
set chunk "[a+ red bold]stderr[a+]" set chunk "[a+ red bold]stderr[a]"
lappend chunklist [list "info" $chunk] lappend chunklist [list "info" $chunk]
set chunk "" set chunk ""
@ -455,12 +453,12 @@ namespace eval shellrun {
set chunklist [list] set chunklist [list]
lappend chunklist [list "info" " "] lappend chunklist [list "info" " "]
lappend chunklist [list "result" stdout] ;#key 'stdout' forms part of the resulting dictionary output lappend chunklist [list "result" stdout] ;#key 'stdout' forms part of the resulting dictionary output
lappend chunklist [list "info" "[a+ white bold]stdout[a+]"] lappend chunklist [list "info" "[a+ white bold]stdout[a]"]
lappend chunklist [list result $chunk] ;#value corresponding to 'stdout' key in resulting dict lappend chunklist [list result $chunk] ;#value corresponding to 'stdout' key in resulting dict
lappend chunklist [list "info" " "] lappend chunklist [list "info" " "]
set chunk "[a+ red bold]stderr[a+]" set chunk "[a+ red bold]stderr[a]"
lappend chunklist [list "result" $chunk] lappend chunklist [list "result" $chunk]
lappend chunklist [list "info" stderr] lappend chunklist [list "info" stderr]
@ -478,7 +476,7 @@ namespace eval shellrun {
set n [a+] set n [a]
set c "" set c ""
if {[dict exists $exitinfo exitcode]} { if {[dict exists $exitinfo exitcode]} {
set code [dict get $exitinfo exitcode] set code [dict get $exitinfo exitcode]
@ -550,6 +548,7 @@ namespace eval shellrun {
} }
#we can only call runraw with a single (presumably braced) string if we want to use it from both repl and tcl scripts #we can only call runraw with a single (presumably braced) string if we want to use it from both repl and tcl scripts
proc runraw {commandline} { proc runraw {commandline} {
#runraw fails as intended - because we can't bypass exec/open interference quoting :/
set_last_run_display [list] set_last_run_display [list]
variable runout variable runout
variable runerr variable runerr
@ -561,11 +560,16 @@ namespace eval shellrun {
#run always echoes anyway.. as we aren't diverting stdout/stderr off for capturing #run always echoes anyway.. as we aren't diverting stdout/stderr off for capturing
#for consistency with other runxxx commands - we'll just consume it. (review) #for consistency with other runxxx commands - we'll just consume it. (review)
#set wordparts [regexp -inline -all {\S+} $commandline]
set reallyraw 1
if {$reallyraw} {
set wordparts [regexp -inline -all {\S+} $commandline]
set runwords $wordparts
} else {
#shell style args parsing not suitable for windows where we can't assume matched quotes etc.
package require string::token::shell package require string::token::shell
set parts [string token shell -indices $commandline] set parts [string token shell -indices -- $commandline]
puts stdout ">>shellparts: $parts" puts stdout ">>shellparts: $parts"
set runwords [list] set runwords [list]
foreach p $parts { foreach p $parts {
set ptype [lindex $p 0] set ptype [lindex $p 0]
@ -584,6 +588,8 @@ namespace eval shellrun {
lappend runwords $v lappend runwords $v
} }
} }
}
puts stdout ">>runraw runwords: $runwords" puts stdout ">>runraw runwords: $runwords"
set runwords [lrange $runwords 1 end] set runwords [lrange $runwords 1 end]
@ -663,7 +669,10 @@ namespace eval shellrun {
} }
namespace eval shellrun { namespace eval shellrun {
proc twapi_exec {cmdline} {
package require twapi
twapi::create_process {} -cmdline $cmdline
}
interp alias {} run {} shellrun::run interp alias {} run {} shellrun::run
interp alias {} sh_run {} shellrun::sh_run interp alias {} sh_run {} shellrun::sh_run
interp alias {} runout {} shellrun::runout interp alias {} runout {} shellrun::runout
@ -673,6 +682,10 @@ namespace eval shellrun {
interp alias {} runx {} shellrun::runx interp alias {} runx {} shellrun::runx
interp alias {} sh_runx {} shellrun::sh_runx interp alias {} sh_runx {} shellrun::sh_runx
interp alias {} runraw {} shellrun::runraw
interp alias {} twexec {} shellrun::twapi_exec
#the shortened versions deliberately don't get pretty output from the repl #the shortened versions deliberately don't get pretty output from the repl
interp alias {} r {} shellrun::run interp alias {} r {} shellrun::run
interp alias {} ro {} shellrun::runout interp alias {} ro {} shellrun::runout

29
src/modules/textblock-999999.0a1.0.tm

@ -18,6 +18,7 @@
## Requirements ## Requirements
##e.g package require frobz ##e.g package require frobz
package require punk package require punk
package require punk::char
package require patternpunk package require patternpunk
package require overtype package require overtype
package require term::ansi::code::macros package require term::ansi::code::macros
@ -49,12 +50,15 @@ namespace eval textblock {
return [::join $mtrx \n] return [::join $mtrx \n]
} else { } else {
set charblock [string map [list \r\n \n] $char] set charblock [string map [list \r\n \n] $char]
if {[string first \n $charblock] >= 0} {
if {$blockcols > 1} { if {$blockcols > 1} {
set row [.= val $charblock {*}[lrepeat [expr {$blockcols -1}] |> piper_blockjoin $charblock]] set row [.= val $charblock {*}[lrepeat [expr {$blockcols -1}] |> piper_blockjoin $charblock]]
} else { } else {
set row $charblock set row $charblock
} }
} else {
set row [string repeat $char $blockcols]
}
set mtrx [lrepeat $blockrows $row] set mtrx [lrepeat $blockrows $row]
return [::join $mtrx \n] return [::join $mtrx \n]
} }
@ -69,16 +73,16 @@ namespace eval textblock {
} }
set block [textutil::tabify::untabify2 $block] set block [textutil::tabify::untabify2 $block]
if {[string first \n $block] >= 0} { if {[string first \n $block] >= 0} {
return [tcl::mathfunc::max {*}[lmap v [linelist $block] {string length [stripansi $v]}]] return [tcl::mathfunc::max {*}[lmap v [linelist $block] {::punk::char::string_width [stripansi $v]}]]
} }
if {[catch {llength $block}]} { if {[catch {llength $block}]} {
return [string length [stripansi $block]] return [::punk::char::string_width [stripansi $block]]
} }
if {[llength $block] == 0} { if {[llength $block] == 0} {
#could be just a whitespace string #could be just a whitespace string
return [string length $block] return [string length $block]
} }
return [tcl::mathfunc::max {*}[lmap v $block {string length [stripansi $v]}]] return [tcl::mathfunc::max {*}[lmap v $block {::punk::char::string_width [stripansi $v]}]]
} }
pipealias ::textblock::padleft .= {list $input [string repeat " " $indent]} |/0,padding/1> linelist |> .= {lmap v $data {overtype::right $padding $v}} |> list_as_lines <input/0,indent/1| pipealias ::textblock::padleft .= {list $input [string repeat " " $indent]} |/0,padding/1> linelist |> .= {lmap v $data {overtype::right $padding $v}} |> list_as_lines <input/0,indent/1|
pipealias ::textblock::padright .= {list $input [string repeat " " $colsize]} |/0,padding/1> linelist |> .= {lmap v $data {overtype::left $padding $v}} |> list_as_lines <input/0,colsize/1| pipealias ::textblock::padright .= {list $input [string repeat " " $colsize]} |/0,padding/1> linelist |> .= {lmap v $data {overtype::left $padding $v}} |> list_as_lines <input/0,colsize/1|
@ -134,7 +138,9 @@ namespace eval textblock {
>} .=lhs> linelist -block {} {| >} .=lhs> linelist -block {} {|
>} .= {lmap v $data w $data2 {val "[overtype::left $col1 $v][overtype::left $col2 $w]"}} {| >} .= {lmap v $data w $data2 {val "[overtype::left $col1 $v][overtype::left $col2 $w]"}} {|
>} list_as_lines <lhs/0,rhs/1| >} list_as_lines <lhs/0,rhs/1|
proc ::textblock::join2 {lhs rhs} {
}
namespace eval ::textblock::piper { namespace eval ::textblock::piper {
proc join {rhs existing} { proc join {rhs existing} {
@ -187,7 +193,7 @@ namespace eval textblock {
#old style ansi escape sequences with alternate graphics page G0 #old style ansi escape sequences with alternate graphics page G0
append fs [cd::tlc][string repeat [cd::hl] $width][cd::trc]\n append fs [cd::tlc][string repeat [cd::hl] $width][cd::trc]\n
foreach l $lines { foreach l $lines {
append fs [cd::vl]${l}[string repeat " " [expr {$width-[string length [stripansi $l]]}]][cd::vl]\n append fs [cd::vl]${l}[string repeat " " [expr {$width-[::punk::char::string_width [stripansi $l]]}]][cd::vl]\n
} }
append fs [cd::blc][string repeat [cd::hl] $width][cd::brc] append fs [cd::blc][string repeat [cd::hl] $width][cd::brc]
return [cd::groptim $fs] return [cd::groptim $fs]
@ -197,14 +203,23 @@ namespace eval textblock {
append fs [punk::char::charshort boxd_ldr][string repeat $hz $width][punk::char::charshort boxd_ldl]\n append fs [punk::char::charshort boxd_ldr][string repeat $hz $width][punk::char::charshort boxd_ldl]\n
set vl [punk::char::charshort boxd_lv] ;#light vertical set vl [punk::char::charshort boxd_lv] ;#light vertical
foreach l $lines { foreach l $lines {
append fs $vl${l}[string repeat " " [expr {$width-[string length [stripansi $l]]}]]$vl\n append fs $vl${l}[string repeat " " [expr {$width-[::punk::char::string_width [stripansi $l]]}]]$vl\n
} }
append fs [punk::char::charshort boxd_lur][string repeat $hz $width][punk::char::charshort boxd_lul] append fs [punk::char::charshort boxd_lur][string repeat $hz $width][punk::char::charshort boxd_lul]
return $fs return $fs
} }
} }
namespace import ::overtype::stripansi
#Test we can join two coloured blocks
proc test_colour {} {
set b1 [a= red]1\n2\n3[a=]
set b2 [a= green]a\nb\nc[a=]
set result [join $b1 $b2]
puts $result
return [list $b1 $b2 $result]
}
namespace import ::punk::ansi::stripansi
} }

3
src/punk86.vfs/lib/app-shellspy/shellspy.tcl

@ -779,9 +779,6 @@ source [file normalize $scriptname]
} }
puts stderr "ansi-test:$::shellfilter::ansi::test"
flush stderr
set argdefinitions [list \ set argdefinitions [list \
-caller shellspy_dispatcher \ -caller shellspy_dispatcher \
-debugargs 0 \ -debugargs 0 \

3
src/vendormodules/natsort-0.1.1.5.tm

@ -239,6 +239,7 @@ namespace eval natsort {
#considered using hex to make large numbers more compact for viewing in debug output - but it's not that much shorter and probably obscures more than it helps. #considered using hex to make large numbers more compact for viewing in debug output - but it's not that much shorter and probably obscures more than it helps.
proc hex2dec {largeHex} { proc hex2dec {largeHex} {
set res 0 set res 0
set largeHex [string map [list _ ""] $largeHex]
foreach hexDigit [split $largeHex {}] { foreach hexDigit [split $largeHex {}] {
set new 0x$hexDigit set new 0x$hexDigit
set res [expr {16*$res + $new}] set res [expr {16*$res + $new}]
@ -258,6 +259,8 @@ namespace eval natsort {
#todo - consider human numeric split #todo - consider human numeric split
#e.g consider SI suffixes k|KMGTPEZY in that order #e.g consider SI suffixes k|KMGTPEZY in that order
#in this context, for natural sorting - numeric segments don't contain underscores or other punctuation such as . - + etc.
#review - what about unicode equivalents such as wide numerals \UFF10 to \UFF19? unicode normalization?
proc split_numeric_segments {name} { proc split_numeric_segments {name} {
set segments [list] set segments [list]
while {[string length $name]} { while {[string length $name]} {

527
src/vendormodules/overtype-1.5.0.tm

@ -18,6 +18,8 @@
## Requirements ## Requirements
##e.g package require frobz ##e.g package require frobz
package require textutil package require textutil
package require punk::ansi ;#required to detect, split, strip and calculate lengths
package require punk::char ;#box drawing - and also unicode character width determination for proper layout of text with double-column-width chars
@ -57,10 +59,6 @@ proc overtype::about {} {
return "Simple text formatting. Author JMN. BSD-License" return "Simple text formatting. Author JMN. BSD-License"
} }
#interp alias {} ::overtype::stripcodes {} ::overtype::stripansi
proc overtype::stripcodes {text} {
tailcall overtype::stripansi $text
}
namespace eval overtype { namespace eval overtype {
variable escape_terminals variable escape_terminals
#single "final byte" in the range 0x40–0x7E (ASCII @A–Z[\]^_`a–z{|}~). #single "final byte" in the range 0x40–0x7E (ASCII @A–Z[\]^_`a–z{|}~).
@ -191,7 +189,10 @@ proc overtype::printing_length {line} {
if {[string first \n $line] >= 0} { if {[string first \n $line] >= 0} {
error "line_print_length must not contain newline characters" error "line_print_length must not contain newline characters"
} }
#review -
set line [stripansi $line] set line [stripansi $line]
set line [strip_nonprinting_ascii $line] ;#only strip nonprinting after stripansi - some like BEL are part of ansi set line [strip_nonprinting_ascii $line] ;#only strip nonprinting after stripansi - some like BEL are part of ansi
#backspace 0x08 only erases* printing characters anyway - so presumably order of processing doesn't matter #backspace 0x08 only erases* printing characters anyway - so presumably order of processing doesn't matter
#(* more correctly - moves cursor back) #(* more correctly - moves cursor back)
@ -229,8 +230,16 @@ proc overtype::printing_length {line} {
} }
} }
set line2 [join $outchars ""] set line2 [join $outchars ""]
return [string length $line2] return [string_columns $line2]
}
proc overtype::string_columns {text} {
if {[punk::ansi::ta::detect $text]} {
error "error string_columns is for calculating character length of string - ansi codes must be stripped/rendered first e.g with overtype::stripansi. Alternatively try overtype::printing_length"
}
return [punk::char::string_width $text]
} }
namespace eval overtype::priv { namespace eval overtype::priv {
proc printing_length_addchar {i c} { proc printing_length_addchar {i c} {
upvar outchars outc upvar outchars outc
@ -259,6 +268,8 @@ proc overtype::left {args} {
-ellipsistext $default_ellipsis_horizontal\ -ellipsistext $default_ellipsis_horizontal\
-overflow 0\ -overflow 0\
-transparent 0\ -transparent 0\
-exposed1 \uFFFD\
-exposed2 \uFFFD\
] ]
set known_opts [dict keys $defaults] set known_opts [dict keys $defaults]
set argsflags [lrange $args 0 end-2] set argsflags [lrange $args 0 end-2]
@ -271,6 +282,8 @@ proc overtype::left {args} {
# -- --- --- --- --- --- # -- --- --- --- --- ---
set opt_transparent [dict get $opts -transparent] set opt_transparent [dict get $opts -transparent]
set opt_ellipsistext [dict get $opts -ellipsistext] set opt_ellipsistext [dict get $opts -ellipsistext]
set opt_exposed1 [dict get $opts -exposed1]
set opt_exposed2 [dict get $opts -exposed2]
# -- --- --- --- --- --- # -- --- --- --- --- ---
set norm [list \r\n \n] set norm [list \r\n \n]
@ -292,7 +305,7 @@ proc overtype::left {args} {
if {$diff > 0} { if {$diff > 0} {
#background line is narrower #background line is narrower
set rendered [renderline -transparent $opt_transparent -overflow [dict get $opts -overflow] $undertext $overtext] set rendered [renderline -transparent $opt_transparent -exposed1 $opt_exposed1 -exposed2 $opt_exposed2 -overflow [dict get $opts -overflow] $undertext $overtext]
if {![dict get $opts -overflow]} { if {![dict get $opts -overflow]} {
#set overtext [string range $overtext 0 $colwidth-1] ;#string range won't be correct e.g if contains ansi codes or leading \r or \b etc #set overtext [string range $overtext 0 $colwidth-1] ;#string range won't be correct e.g if contains ansi codes or leading \r or \b etc
if {[dict get $opts -ellipsis]} { if {[dict get $opts -ellipsis]} {
@ -302,13 +315,31 @@ proc overtype::left {args} {
lappend outputlines $rendered lappend outputlines $rendered
} else { } else {
#we know overtext is shorter or equal #we know overtext is shorter or equal
lappend outputlines [renderline -transparent $opt_transparent $undertext $overtext] lappend outputlines [renderline -transparent $opt_transparent -exposed1 $opt_exposed1 -exposed2 $opt_exposed2 $undertext $overtext]
} }
} }
return [join $outputlines \n] return [join $outputlines \n]
} }
namespace eval |> {
proc overcentre {args} {
if {[llength $args] < 2} {
error {usage: ?-bias left|right? ?-transparent [0|1|<regexp>]? ?-exposed1 <char>? ?-exposed2 <char>? ?-overflow [1|0]? overtext pipelinedata}
}
lassign [lrange $args end-1 end] over under
set argsflags [lrange $args 0 end-2]
tailcall overtype::centre {*}$argsflags $under $over
}
proc overleft {args} {
if {[llength $args] < 2} {
error {usage: ?-start <column>? ?-transparent [0|1|<regexp>]? ?-exposed1 <char>? ?-exposed2 <char>? ?-overflow [1|0]? overtext pipelinedata}
}
lassign [lrange $args end-1 end] over under
set argsflags [lrange $args 0 end-2]
tailcall overtype::left {*}$argsflags $under $over
}
}
#todo - left-right ellipsis ? #todo - left-right ellipsis ?
proc overtype::centre {args} { proc overtype::centre {args} {
variable default_ellipsis_horizontal variable default_ellipsis_horizontal
@ -324,6 +355,8 @@ proc overtype::centre {args} {
-ellipsistext $default_ellipsis_horizontal\ -ellipsistext $default_ellipsis_horizontal\
-overflow 0\ -overflow 0\
-transparent 0\ -transparent 0\
-exposed1 \uFFFD\
-exposed2 \uFFFD\
] ]
set known_opts [dict keys $defaults] set known_opts [dict keys $defaults]
set argsflags [lrange $args 0 end-2] set argsflags [lrange $args 0 end-2]
@ -336,6 +369,8 @@ proc overtype::centre {args} {
# -- --- --- --- --- --- # -- --- --- --- --- ---
set opt_transparent [dict get $opts -transparent] set opt_transparent [dict get $opts -transparent]
set opt_ellipsistext [dict get $opts -ellipsistext] set opt_ellipsistext [dict get $opts -ellipsistext]
set opt_exposed1 [dict get $opts -exposed1]
set opt_exposed2 [dict get $opts -exposed2]
# -- --- --- --- --- --- # -- --- --- --- --- ---
@ -370,13 +405,16 @@ proc overtype::centre {args} {
set rhs [expr {$diff - $half - 1}] set rhs [expr {$diff - $half - 1}]
set lhs [expr {$half - 1}] set lhs [expr {$half - 1}]
set a [string range $undertext 0 $lhs]
set rhsoffset [expr {$rhs +1}] set rhsoffset [expr {$rhs +1}]
if 0 {
set a [string range $undertext 0 $lhs]
set background [string range $undertext $lhs+1 end-$rhsoffset] set background [string range $undertext $lhs+1 end-$rhsoffset]
set b [renderline -transparent $opt_transparent $background $overtext] set b [renderline -transparent $opt_transparent $background $overtext]
set c [string range $undertext end-$rhs end] set c [string range $undertext end-$rhs end]
lappend outputlines $a$b$c lappend outputlines $a$b$c
}
lappend outputlines [renderline -start $lhs -transparent $opt_transparent -exposed1 $opt_exposed1 -exposed2 $opt_exposed2 $undertext $overtext]
} else { } else {
#overlay wider or equal #overlay wider or equal
set rendered [renderline -transparent $opt_transparent -overflow [dict get $opts -overflow] $undertext $overtext] set rendered [renderline -transparent $opt_transparent -overflow [dict get $opts -overflow] $undertext $overtext]
@ -414,6 +452,8 @@ proc overtype::right {args} {
-ellipsistext $default_ellipsis_horizontal\ -ellipsistext $default_ellipsis_horizontal\
-overflow 0\ -overflow 0\
-transparent 0\ -transparent 0\
-exposed1 \uFFFD\
-exposed2 \uFFFD\
] ]
set known_opts [dict keys $defaults] set known_opts [dict keys $defaults]
set argsflags [lrange $args 0 end-2] set argsflags [lrange $args 0 end-2]
@ -428,6 +468,8 @@ proc overtype::right {args} {
set opt_ellipsis [dict get $opts -ellipsis] set opt_ellipsis [dict get $opts -ellipsis]
set opt_ellipsistext [dict get $opts -ellipsistext] set opt_ellipsistext [dict get $opts -ellipsistext]
set opt_overflow [dict get $opts -overflow] set opt_overflow [dict get $opts -overflow]
set opt_exposed1 [dict get $opts -exposed1]
set opt_exposed2 [dict get $opts -exposed2]
# -- --- --- --- --- --- # -- --- --- --- --- ---
set norm [list \r\n \n] set norm [list \r\n \n]
@ -452,7 +494,7 @@ proc overtype::right {args} {
set overflowlength [expr {$olen - $colwidth}] set overflowlength [expr {$olen - $colwidth}]
if {$overflowlength > 0} { if {$overflowlength > 0} {
#overtext wider than undertext column #overtext wider than undertext column
set rendered [renderline -transparent $opt_transparent -overflow $opt_overflow -start 0 $undertext $overtext] set rendered [renderline -transparent $opt_transparent -exposed1 $opt_exposed1 -exposed2 $opt_exposed2 -overflow $opt_overflow -start 0 $undertext $overtext]
if {!$opt_overflow} { if {!$opt_overflow} {
if {$opt_ellipsis} { if {$opt_ellipsis} {
set rendered [overtype::right $rendered $opt_ellipsistext] set rendered [overtype::right $rendered $opt_ellipsistext]
@ -467,45 +509,19 @@ proc overtype::right {args} {
return [join $outputlines \n] return [join $outputlines \n]
} }
proc overtype::right_prev {args} {
# @d !todo - implement overflow, length checks etc
if {[llength $args] < 2} {
error {usage: ?-overflow [1|0]? undertext overtext}
}
foreach {undertext overtext} [lrange $args end-1 end] break
set opt(-overflow) 0
array set opt [lrange $args 0 end-2]
set olen [printing_length $overtext]
set ulen [printing_length $undertext]
if {$opt(-overflow)} {
return [string range $undertext 0 end-$olen]$overtext
} else {
if {$olen > $ulen} {
set diff [expr {$olen - $ulen}]
return [string range $undertext 0 end-$olen][string range $overtext 0 end-$diff]
} else {
return [string range $undertext 0 end-$olen]$overtext
}
}
}
# -- --- --- --- --- --- --- --- --- --- --- # -- --- --- --- --- --- --- --- --- --- ---
#todo - ansi
proc overtype::transparentline {args} { proc overtype::transparentline {args} {
foreach {under over} [lrange $args end-1 end] break foreach {under over} [lrange $args end-1 end] break
set argsflags [lrange $args 0 end-2] set argsflags [lrange $args 0 end-2]
set defaults [dict create\ set defaults [dict create\
-transparent 1\ -transparent 1\
-exposed 1 " "\
-exposed 2 " "\
] ]
set newargs [dict merge $defaults $argsflags] set newargs [dict merge $defaults $argsflags]
tailcall overtype::renderline {*}$newargs $under $over tailcall overtype::renderline {*}$newargs $under $over
} }
#renderline may not make sense as it is in the long run for blocks of text - but is handy in the single-line-handling form anyway. #renderline may not make sense as it is in the long run for blocks of text - but is handy in the single-line-handling form anyway.
# We are trying to handle ansi codes in a block of text which is acting like a mini-terminal in some sense. # We are trying to handle ansi codes in a block of text which is acting like a mini-terminal in some sense.
#We can process standard cursor moves such as \b \r - but no way to respond to other cursor movements e.g moving to other lines. #We can process standard cursor moves such as \b \r - but no way to respond to other cursor movements e.g moving to other lines.
@ -521,6 +537,11 @@ namespace eval overtype::piper {
} }
} }
interp alias "" piper_renderline "" overtype::piper::renderline interp alias "" piper_renderline "" overtype::piper::renderline
#-returnextra to enable returning of overflow and length
# todo - use ta::detect to short-circuit processing and do simple string calcs as an optimisation?
#review - DECSWL/DECDWL double width line codes - very difficult/impossible to align and compose with other elements
#todo - review transparency issues with single/double width characters!
proc overtype::renderline {args} { proc overtype::renderline {args} {
if {[llength $args] < 2} { if {[llength $args] < 2} {
error {usage: ?-start <int>? ?-transparent [0|1|<regexp>]? ?-overflow [1|0]? undertext overtext} error {usage: ?-start <int>? ?-transparent [0|1|<regexp>]? ?-overflow [1|0]? undertext overtext}
@ -533,7 +554,12 @@ proc overtype::renderline {args} {
-overflow 0\ -overflow 0\
-transparent 0\ -transparent 0\
-start 0\ -start 0\
-returnextra 0\
-exposed1 \uFFFD\
-exposed2 \uFFFD\
] ]
#exposed1 and exposed2 for first and second col of underying 2wide char which is truncated by transparency or overflow
set known_opts [dict keys $defaults] set known_opts [dict keys $defaults]
set argsflags [lrange $args 0 end-2] set argsflags [lrange $args 0 end-2]
dict for {k v} $argsflags { dict for {k v} $argsflags {
@ -556,6 +582,11 @@ proc overtype::renderline {args} {
} }
} }
# -- --- --- --- --- --- --- --- --- --- --- --- # -- --- --- --- --- --- --- --- --- --- --- ---
set opt_returnextra [dict get $opts -returnextra]
# -- --- --- --- --- --- --- --- --- --- --- ---
set opt_exposed1 [dict get $opts -exposed1]
set opt_exposed2 [dict get $opts -exposed2]
# -- --- --- --- --- --- --- --- --- --- --- ---
if {[string first \t $under] >= 0} { if {[string first \t $under] >= 0} {
set under [textutil::tabify::untabify2 $under] set under [textutil::tabify::untabify2 $under]
@ -564,103 +595,287 @@ proc overtype::renderline {args} {
if {[string first \t $over] >= 0} { if {[string first \t $over] >= 0} {
set overdata [textutil::tabify::untabify2 $over] set overdata [textutil::tabify::untabify2 $over]
} }
set over [string repeat " " $opt_colstart]
append over $overdata ;#overdata with left padding spaces based on col-start under will show through for left-padding portion regardless of -transparency
set undermap [overtype::ta::split_codes_single $under] #ta_detect ansi and do simpler processing?
set overmap [overtype::ta::split_codes_single $over]
# -- --- --- --- --- --- --- ---
set undermap [punk::ansi::ta::split_codes_single $under]
set understacks [dict create] set understacks [dict create]
set i_u 0 set i_u -1
set i_o 0 set i_o 0
set out [list] set out [list]
set u_codestack [list] set u_codestack [list]
set pt_underchars "" ;#for string_columns length calculation for overflow 0 truncation
set remainder [list] ;#for returnextra
foreach {pt code} $undermap { foreach {pt code} $undermap {
#pt = plain text
append pt_underchars $pt
foreach ch [split $pt ""] { foreach ch [split $pt ""] {
dict set understacks $i_u $u_codestack set width [string_columns $ch]
incr i_u incr i_u
dict set understacks $i_u $u_codestack
lappend out $ch lappend out $ch
if {$width > 1} {
#presumably there are no triple-column or wider unicode chars.. until the aliens arrive.(?)
incr i_u
dict set understacks $i_u $u_codestack
lappend out ""
} }
if {[priv::is_csi_reset $code]} { }
set u_codestack [list] #underlay should already have been rendered and not have non-sgr codes - but let's check for and not stack them if other codes are here
if {[priv::is_sgr $code]} {
if {[priv::has_sgr_leadingreset $code]} {
set u_codestack [list $code]
} else { } else {
lappend u_codestack $code lappend u_codestack $code
} }
} }
#consider also other codes that should be stacked..?
}
#trailing codes in effect for underlay
if {[llength $undermap]} {
dict set understacks [expr {$i_u + 1}] $u_codestack
}
# -- --- --- --- --- --- --- ---
####
#if opt_colstart - we need to build a space (or any singlewidth char really) padding on the left of the right number of columns.
#this will be processed as transparent - and handle doublewidth underlay characters appropriately
set startpad [string repeat " " $opt_colstart]
append startpad $overdata ;#overdata with left padding spaces based on col-start under will show through for left-padding portion regardless of -transparency
set overmap [punk::ansi::ta::split_codes_single $startpad]
####
set overstacks [dict create] set overstacks [dict create]
set o_codestack [list] set o_codestack [list]
set pt_overchars ""
foreach {pt code} $overmap { foreach {pt code} $overmap {
append pt_overchars $pt
foreach ch [split $pt ""] { foreach ch [split $pt ""] {
dict set overstacks $i_o $o_codestack dict set overstacks $i_o $o_codestack
incr i_o incr i_o
} }
if {[priv::is_csi_reset $code]} { if {[priv::is_sgr $code]} {
set o_codestack [list] #only stack SGR (graphics rendition) codes - not title sets, cursor moves etc
if {[priv::has_sgr_leadingreset $code]} {
#m code which has sgr reset at start - no need to replay prior sgr codes
set o_codestack [list $code]
} else { } else {
lappend o_codestack $code lappend o_codestack $code
} }
} }
}
# -- --- --- --- --- --- --- ---
set bs [format %c 0x08] set bs [format %c 0x08]
set idx 0 set idx 0 ;# line index (cursor - 1)
set idx_over -1 set idx_over -1
foreach {pt code} $overmap { foreach {pt code} $overmap {
foreach ch [split $pt ""] { set ptchars [split $pt ""] ;#for lookahead
#emit plaintext chars first using existing SGR codes from under/over stack as appropriate
#then check if the following code is a cursor movement within the line and adjust index if so
foreach ch $ptchars {
incr idx_over incr idx_over
if {$ch eq "\r"} { if {$ch eq "\r"} {
set idx $opt_colstart set idx $opt_colstart
} elseif {$ch eq "\b"} { } elseif {$ch eq "\b"} {
#review - backspace effect on double-width chars
if {$idx > $opt_colstart} { if {$idx > $opt_colstart} {
incr idx -1 incr idx -1
} }
} elseif {$idx < $opt_colstart} { } elseif {($idx < $opt_colstart)} {
incr idx incr idx
} elseif {$do_transparency && [regexp $opt_transparent $ch]} { } elseif {($do_transparency && [regexp $opt_transparent $ch])} {
#pre opt_colstart is effectively transparent (we have applied padding of required number of columns to left of overlay)
set owidth [string_columns $ch]
if {$idx > [llength $out]-1} { if {$idx > [llength $out]-1} {
lappend out " " lappend out " "
dict set understacks $idx [list] ;#review - use idx-1 codestack? dict set understacks $idx [list] ;#review - use idx-1 codestack?
incr idx
} else {
set uwidth [string_columns [lindex $out $idx]]
if {[lindex $out $idx] eq ""} {
#2nd col of 2-wide char in underlay
incr idx
} elseif {$uwidth == 0} {
#e.g combining diacritic
incr idx
} elseif {$uwidth == 1} {
incr idx
if {$owidth > 1} {
incr idx
} }
} elseif {$uwidth > 1} {
if {[string_columns $ch] == 1} {
#normal singlewide transparency
set next_pt_overchar [string index $pt_overchars $idx_over+1] ;#lookahead of next plain-text char in overlay
if {$next_pt_overchar eq ""} {
#special-case trailing transparent - no next_pt_overchar
incr idx incr idx
} else { } else {
if {[regexp $opt_transparent $next_pt_overchar]} {
incr idx
} else {
#next overlay char is not transparent.. first-half of underlying 2wide char is exposed
priv::render_addchar $idx $opt_exposed1 [dict get $overstacks $idx_over]
incr idx
}
}
} else {
#2wide transparency over 2wide in underlay
incr idx
}
}
}
} else {
#non-transparent char in overlay
set owidth [string_columns $ch]
set uwidth [string_columns [lindex $out $idx]]
if {[lindex $out $idx] eq ""} {
#2nd col of 2wide char in underlay
priv::render_addchar $idx $ch [dict get $overstacks $idx_over]
incr idx
} elseif {$uwidth == 0} {
#e.g combining diacritic - increment before over char REVIEW
#arguably the previous overchar should have done this - ie lookahead for combiners?
priv::render_addchar $idx "" [dict get $overstacks $idx_over]
incr idx
priv::render_addchar $idx $ch [dict get $overstacks $idx_over]
incr idx
} elseif {$uwidth == 1} {
if {$owidth == 1} {
priv::render_addchar $idx $ch [dict get $overstacks $idx_over] priv::render_addchar $idx $ch [dict get $overstacks $idx_over]
incr idx incr idx
} else {
priv::render_addchar $idx $ch [dict get $overstacks $idx_over]
incr idx
priv::render_addchar $idx "" [dict get $overstacks $idx_over]
}
} elseif {$uwidth > 1} {
if {$owidth == 1} {
priv::render_addchar $idx $ch [dict get $overstacks $idx_over]
incr idx
priv::render_addchar $idx $opt_exposed2 [dict get $overstacks $idx_over]
#don't incr idx - we are just putting a broken-indication in the underlay - which may get overwritten by next overlay char
} else {
#2wide over 2wide
priv::render_addchar $idx $ch [dict get $overstacks $idx_over]
incr idx
}
}
}
}
#check following code
if {![priv::is_sgr $code]} {
} }
} }
if {$opt_overflow == 0} {
#need to truncate to the width of the original undertext
#review - string_columns vs printing_length here. undertext requirement to be already rendered therefore string_columns ok?
set num_under_columns [string_columns $pt_underchars] ;#plaintext underchars
} }
#coalesce and replay codestacks for out char list #coalesce and replay codestacks for out char list
set outstring "" set outstring ""
set remstring "" ;#remainder after overflow point reached
set i 0 set i 0
set cstack [list] set cstack [list]
set prevstack [list] set prevstack [list]
set out_rawchars ""; #for overflow counting
set output_to "outstring" ;#var in effect depending on overflow
set in_overflow 0 ;#used to stop char-width scanning once in overflow
foreach ch $out { foreach ch $out {
append out_rawchars $ch
if {$opt_overflow == 0 && !$in_overflow} {
if {[set nextvisualwidth [string_columns $out_rawchars]] < $num_under_columns} {
} else {
#todo - check if we overflowed with a double-width char ?
#store visualwidth which may be short
set in_overflow 1
}
}
set cstack [dict get $understacks $i] set cstack [dict get $understacks $i]
if {$cstack ne $prevstack} { if {$cstack ne $prevstack} {
if {[llength $prevstack]} { if {[llength $prevstack]} {
append outstring \033\[m append $output_to \033\[m
} }
foreach code $cstack { foreach code $cstack {
append outstring $code append $output_to $code
} }
} }
append outstring $ch append $output_to $ch
set prevstack $cstack set prevstack $cstack
incr i incr i
if {$in_overflow} {
set output_to "remstring"
}
}
if {[dict size $understacks] > 0} {
append $output_to [join [dict get $understacks [expr {[dict size $understacks]-1}]] ""] ;#tail codes
}
if {[string length $remstring]} {
#puts stderr "remainder:$remstring"
} }
#pdict $understacks #pdict $understacks
if {$opt_returnextra} {
return [list $outstring $visualwidth [string length $outstring] $remstring]
} else {
return $outstring return $outstring
}
#return [join $out ""] #return [join $out ""]
} }
proc overtype::test_renderline {} {
set t \uFF5E ;#2-wide tilde
set u \uFF3F ;#2-wide underscore
set missing \uFFFD
return [list $t $u A${t}B]
}
namespace eval overtype::priv { namespace eval overtype::priv {
proc is_csi_reset {code} { #todo - move to punk::ansi::codetype
proc is_sgr {code} {
#SGR (Select Graphic Rendition) - codes ending in 'm' - e.g colour/underline
#we will accept and pass through the less common colon separator (ITU Open Document Architecture)
#Terminals should generally ignore it if they don't use it
regexp {\033\[[0-9;:]*m$} $code
}
proc is_cursor_move_in_line {code} {
#review - what about CSI n : m H where row n happens to be current line?
regexp {\033\[[0-9]*(:?C|D|G)$}
}
#pure SGR reset
proc is_sgr_reset {code} {
#todo 8-bit csi #todo 8-bit csi
regexp {\033\[0*m} $code regexp {\033\[0*m$} $code
} }
#whether this code has 0 (or equivalently empty) parameter (but may set others) #whether this code has 0 (or equivalently empty) parameter (but may set others)
proc has_csi_reset {code} { #if an SGR code as a reset in it - we don't need to carry forward any previous SGR codes
#it generally only makes sense for the reset to be the first entry - otherwise the code has ineffective portions
#However - detecting zero or empty parameter in other positions requires knowing all other codes that may allow zero or empty params.
#We will only look at initial parameter as this is the well-formed normal case.
#Review - consider normalizing sgr codes to remove other redundancies such as setting fg or bg color twice in same code
proc has_sgr_leadingreset {code} {
set params ""
regexp {\033\[(.*)m} $code _match params
set plist [split $params ";"]
if {[string trim [lindex $plist 0] 0] eq ""} {
#e.g \033\[m \033\[0\;...m \033\[0000...m
return 1
} else {
return 0
}
} }
#has_sgr_reset - rather than support this - create an sgr normalize function that removes dead params and brings reset to front of param list
proc render_addchar {i c stack} { proc render_addchar {i c stack} {
upvar out o upvar out o
upvar understacks ustacks upvar understacks ustacks
@ -676,180 +891,6 @@ namespace eval overtype::priv {
} }
proc overtype::renderline1 {args} {
if {[llength $args] < 2} {
error {usage: ?-start <int>? ?-transparent [0|1|<regexp>]? ?-overflow [1|0]? undertext overtext}
}
foreach {under over} [lrange $args end-1 end] break
if {[string first \n $under] >=0 || [string first \n $over] >= 0} {
error "overtype::renderline not allowed to contain newlines"
}
set defaults [dict create\
-overflow 0\
-transparent 0\
-start 0\
]
set known_opts [dict keys $defaults]
set argsflags [lrange $args 0 end-2]
dict for {k v} $argsflags {
if {$k ni $known_opts} {
error "overtype::renderline unknown option '$k'. Known options: $known_opts"
}
}
set opts [dict merge $defaults $argsflags]
# -- --- --- --- --- --- --- --- --- --- --- ---
set opt_overflow [dict get $opts -overflow]
set opt_colstart [dict get $opts -start]
# -- --- --- --- --- --- --- --- --- --- --- ---
set opt_transparent [dict get $opts -transparent]
if {$opt_transparent eq "0"} {
set do_transparency 0
} else {
set do_transparency 1
if {$opt_transparent eq "1"} {
set opt_transparent {[\s]}
}
}
# -- --- --- --- --- --- --- --- --- --- --- ---
if {[string first \t $under] >= 0} {
set under [textutil::tabify::untabify2 $under]
}
set overdata $over
if {[string first \t $over] >= 0} {
set overdata [textutil::tabify::untabify2 $over]
}
set over [string repeat " " $opt_colstart]
append over $overdata ;#overdata with left padding spaces based on col-start under will show through for left-padding portion regardless of -transparency
set bs [format %c 0x08]
set escape_terminals [list J K m n A B C D E F G s u] ;#review - this definitely doesn't cover all
#todo - ansi split printables in the undertext - maintaining colorcodes etc
set out [split $under ""]
set under_printables [list]
set in_escapesequence 0
#assumption - undertext already 'rendered/wrapped' - ie no backspaces or carriagereturns or other cursor movement controls
#this is basically a form of stripansi... review!
foreach u [split $under ""] {
if {$in_escapesequence} {
if {$u in $escape_terminals} {
set in_escapesequence 0
}
} else {
if {$u eq "\033"} {
set in_escapesequence 1
} else {
lappend under_printables $u
}
}
}
set original_under_printlen [printing_length $under]
set original_under_printlen2 [llength $under_printables]
if {$original_under_printlen != $original_under_printlen2} {
puts stderr "overtype::renderline WARNING - differing printable length calculations for under text: $under"
puts stderr "printing_length: $original_under_printlen"
puts stderr "llength under_printables: $original_under_printlen2"
}
#assert - same as llength $under_printables ?
set i 0
set in_escapesequence 0
#we still want to copy over escape sequences - but we need to keep track of printables
set i_printable 0
foreach o [split $over ""] {
if {$in_escapesequence} {
if {$o in $escape_terminals} {
set in_escapesequence 0
}
#pass through to output but not printables
priv::renderline_insertchar $i $o
incr i
} else {
if {$o eq "\033"} {
set in_escapesequence 1
priv::renderline_insertchar $i $o
incr i
} elseif {$o eq "\r"} {
set i 0
set i_printable 0
} elseif {$o eq $bs} {
if {$i > 0} {
#review - we potentially need to backspace beyond ansi code!
incr i -1
}
if {$i_printable > 0} {
incr i_printable -1
}
} elseif {$i_printable < $opt_colstart} {
incr i
incr i_printable
} elseif {$do_transparency && [regexp $opt_transparent $o]} {
if {$i > [llength $out]-1} {
lappend out " "
}
incr i
if {$i_printable > [llength $under_printables]-1} {
lappend under_printables " "
}
incr i_printable
} else {
if {!$opt_overflow} {
if {$i_printable == $original_under_printlen} {
#we have reached our cutoff length - but there could be a closing ansi code or other control characters that would change the already-processed output.
#also - trailing ansi escapes should remain to affect subsequent lines - we really just want to suppress the printables from this point on and possibly trim some corresponding codes.
#(e.g color codes that are opened and closed around trimmed printables)
#todo - something!!
break
}
}
priv::renderline_addchar $i $o
priv::renderline_addprintable $i_printable $o
incr i
incr i_printable
}
}
}
return [join $out ""]
}
namespace eval overtype::priv {
proc renderline_addchar {i c} {
upvar out o
set nxt [llength $o]
if {$i < $nxt} {
lset o $i $c
} else {
lappend o $c
}
}
proc renderline_insertchar {i c} {
upvar out o
set nxt [llength $o]
if {$i < $nxt} {
set o [linsert $o $i $c]
} else {
lappend o $c
}
}
proc renderline_addprintable {i c} {
upvar under_printables printables
set nxt [llength $printables]
if {$i < $nxt} {
lset printables $i $c
} else {
lappend printables $c
}
}
}
# -- --- --- --- --- --- --- --- --- --- --- # -- --- --- --- --- --- --- --- --- --- ---
namespace eval overtype::ta { namespace eval overtype::ta {
namespace path ::overtype namespace path ::overtype
@ -860,7 +901,8 @@ namespace eval overtype::ta {
#review - does codepage affect this? e.g ebcdic has 8bit csi in different position #review - does codepage affect this? e.g ebcdic has 8bit csi in different position
#CSI #CSI
variable re_csi_open {(?:\033\[|\u009b)[0-9;]+} #variable re_csi_open {(?:\033\[|\u009b)[0-9;]+} ;#too specific - doesn't detect \033\[m
variable re_csi_open {(?:\033\[|\u009b])}
#colour and style #colour and style
variable re_csi_colour {(?:\033\[|\u009b)[0-9;]*m} ;#e.g \033\[31m \033\[m \033\[0m \033\[m0000m variable re_csi_colour {(?:\033\[|\u009b)[0-9;]*m} ;#e.g \033\[31m \033\[m \033\[0m \033\[m0000m
@ -875,13 +917,18 @@ namespace eval overtype::ta {
variable re_esc_osc1 {(?:\033\]|\u009c).*?\007} variable re_esc_osc1 {(?:\033\]|\u009c).*?\007}
variable re_esc_osc2 {(?:\033\]|\u009c).*?\033\\} variable re_esc_osc2 {(?:\033\]|\u009c).*?\033\\}
variable re_ansi_detect "${re_csi_open}|${re_esc_osc1}|${re_esc_osc2}"
#detect any ansi escapes #detect any ansi escapes
#review - only detect 'complete' codes - or just use the opening escapes for performance?
proc detect {text} { proc detect {text} {
variable re_csi_open variable re_ansi_detect
variable re_esc_osc1 #variable re_csi_open
variable re_esc_osc2 #variable re_esc_osc1
#variable re_esc_osc2
#todo - other escape sequences #todo - other escape sequences
expr {[regexp $re_csi_open $text] || [regexp $re_esc_osc1 $text] || [regexp $re_esc_osc2 $text]} #expr {[regexp $re_csi_open $text] || [regexp $re_esc_osc1 $text] || [regexp $re_esc_osc2 $text]}
expr {[regexp $re_ansi_detect $text]}
} }
#not in perl ta #not in perl ta
proc detect_csi {text} { proc detect_csi {text} {
@ -901,6 +948,10 @@ namespace eval overtype::ta {
} }
proc trunc {text width args} {
}
#not in perl ta #not in perl ta
#returns just the plaintext portions in a list #returns just the plaintext portions in a list
proc split_at_codes {text} { proc split_at_codes {text} {

Loading…
Cancel
Save