summaryrefslogtreecommitdiff
path: root/src/pkg/unicode
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/unicode')
-rw-r--r--src/pkg/unicode/Makefile16
-rw-r--r--src/pkg/unicode/casetables.go20
-rw-r--r--src/pkg/unicode/digit.go13
-rw-r--r--src/pkg/unicode/digit_test.go126
-rw-r--r--src/pkg/unicode/graphic.go144
-rw-r--r--src/pkg/unicode/graphic_test.go122
-rw-r--r--src/pkg/unicode/letter.go354
-rw-r--r--src/pkg/unicode/letter_test.go535
-rw-r--r--src/pkg/unicode/maketables.go1320
-rw-r--r--src/pkg/unicode/script_test.go264
-rw-r--r--src/pkg/unicode/tables.go6391
-rw-r--r--src/pkg/unicode/utf16/export_test.go11
-rw-r--r--src/pkg/unicode/utf16/utf16.go108
-rw-r--r--src/pkg/unicode/utf16/utf16_test.go149
-rw-r--r--src/pkg/unicode/utf8/example_test.go196
-rw-r--r--src/pkg/unicode/utf8/utf8.go435
-rw-r--r--src/pkg/unicode/utf8/utf8_test.go444
17 files changed, 0 insertions, 10648 deletions
diff --git a/src/pkg/unicode/Makefile b/src/pkg/unicode/Makefile
deleted file mode 100644
index 33b06ca10..000000000
--- a/src/pkg/unicode/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-maketables: maketables.go
- go build maketables.go
-
-tables: maketables
- ./maketables --tables=all > tables.go
- gofmt -w tables.go
-
-# Downloads from www.unicode.org, so not part
-# of standard test scripts.
-testtables: maketables
- @echo '***' Be sure to make tables and go install first
- ./maketables -test
diff --git a/src/pkg/unicode/casetables.go b/src/pkg/unicode/casetables.go
deleted file mode 100644
index 29bf167e5..000000000
--- a/src/pkg/unicode/casetables.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// TODO: This file contains the special casing rules for Turkish and Azeri only.
-// It should encompass all the languages with special casing rules
-// and be generated automatically, but that requires some API
-// development first.
-
-package unicode
-
-var TurkishCase SpecialCase = _TurkishCase
-var _TurkishCase = SpecialCase{
- CaseRange{0x0049, 0x0049, d{0, 0x131 - 0x49, 0}},
- CaseRange{0x0069, 0x0069, d{0x130 - 0x69, 0, 0x130 - 0x69}},
- CaseRange{0x0130, 0x0130, d{0, 0x69 - 0x130, 0}},
- CaseRange{0x0131, 0x0131, d{0x49 - 0x131, 0, 0x49 - 0x131}},
-}
-
-var AzeriCase SpecialCase = _TurkishCase
diff --git a/src/pkg/unicode/digit.go b/src/pkg/unicode/digit.go
deleted file mode 100644
index 53171b396..000000000
--- a/src/pkg/unicode/digit.go
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package unicode
-
-// IsDigit reports whether the rune is a decimal digit.
-func IsDigit(r rune) bool {
- if r <= MaxLatin1 {
- return '0' <= r && r <= '9'
- }
- return isExcludingLatin(Digit, r)
-}
diff --git a/src/pkg/unicode/digit_test.go b/src/pkg/unicode/digit_test.go
deleted file mode 100644
index 551c42a24..000000000
--- a/src/pkg/unicode/digit_test.go
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package unicode_test
-
-import (
- "testing"
- . "unicode"
-)
-
-var testDigit = []rune{
- 0x0030,
- 0x0039,
- 0x0661,
- 0x06F1,
- 0x07C9,
- 0x0966,
- 0x09EF,
- 0x0A66,
- 0x0AEF,
- 0x0B66,
- 0x0B6F,
- 0x0BE6,
- 0x0BEF,
- 0x0C66,
- 0x0CEF,
- 0x0D66,
- 0x0D6F,
- 0x0E50,
- 0x0E59,
- 0x0ED0,
- 0x0ED9,
- 0x0F20,
- 0x0F29,
- 0x1040,
- 0x1049,
- 0x1090,
- 0x1091,
- 0x1099,
- 0x17E0,
- 0x17E9,
- 0x1810,
- 0x1819,
- 0x1946,
- 0x194F,
- 0x19D0,
- 0x19D9,
- 0x1B50,
- 0x1B59,
- 0x1BB0,
- 0x1BB9,
- 0x1C40,
- 0x1C49,
- 0x1C50,
- 0x1C59,
- 0xA620,
- 0xA629,
- 0xA8D0,
- 0xA8D9,
- 0xA900,
- 0xA909,
- 0xAA50,
- 0xAA59,
- 0xFF10,
- 0xFF19,
- 0x104A1,
- 0x1D7CE,
-}
-
-var testLetter = []rune{
- 0x0041,
- 0x0061,
- 0x00AA,
- 0x00BA,
- 0x00C8,
- 0x00DB,
- 0x00F9,
- 0x02EC,
- 0x0535,
- 0x06E6,
- 0x093D,
- 0x0A15,
- 0x0B99,
- 0x0DC0,
- 0x0EDD,
- 0x1000,
- 0x1200,
- 0x1312,
- 0x1401,
- 0x1885,
- 0x2C00,
- 0xA800,
- 0xF900,
- 0xFA30,
- 0xFFDA,
- 0xFFDC,
- 0x10000,
- 0x10300,
- 0x10400,
- 0x20000,
- 0x2F800,
- 0x2FA1D,
-}
-
-func TestDigit(t *testing.T) {
- for _, r := range testDigit {
- if !IsDigit(r) {
- t.Errorf("IsDigit(U+%04X) = false, want true", r)
- }
- }
- for _, r := range testLetter {
- if IsDigit(r) {
- t.Errorf("IsDigit(U+%04X) = true, want false", r)
- }
- }
-}
-
-// Test that the special case in IsDigit agrees with the table
-func TestDigitOptimization(t *testing.T) {
- for i := rune(0); i <= MaxLatin1; i++ {
- if Is(Digit, i) != IsDigit(i) {
- t.Errorf("IsDigit(U+%04X) disagrees with Is(Digit)", i)
- }
- }
-}
diff --git a/src/pkg/unicode/graphic.go b/src/pkg/unicode/graphic.go
deleted file mode 100644
index ba90b4e51..000000000
--- a/src/pkg/unicode/graphic.go
+++ /dev/null
@@ -1,144 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package unicode
-
-// Bit masks for each code point under U+0100, for fast lookup.
-const (
- pC = 1 << iota // a control character.
- pP // a punctuation character.
- pN // a numeral.
- pS // a symbolic character.
- pZ // a spacing character.
- pLu // an upper-case letter.
- pLl // a lower-case letter.
- pp // a printable character according to Go's definition.
- pg = pp | pZ // a graphical character according to the Unicode definition.
- pLo = pLl | pLu // a letter that is neither upper nor lower case.
- pLmask = pLo
-)
-
-// GraphicRanges defines the set of graphic characters according to Unicode.
-var GraphicRanges = []*RangeTable{
- L, M, N, P, S, Zs,
-}
-
-// PrintRanges defines the set of printable characters according to Go.
-// ASCII space, U+0020, is handled separately.
-var PrintRanges = []*RangeTable{
- L, M, N, P, S,
-}
-
-// IsGraphic reports whether the rune is defined as a Graphic by Unicode.
-// Such characters include letters, marks, numbers, punctuation, symbols, and
-// spaces, from categories L, M, N, P, S, Zs.
-func IsGraphic(r rune) bool {
- // We convert to uint32 to avoid the extra test for negative,
- // and in the index we convert to uint8 to avoid the range check.
- if uint32(r) <= MaxLatin1 {
- return properties[uint8(r)]&pg != 0
- }
- return In(r, GraphicRanges...)
-}
-
-// IsPrint reports whether the rune is defined as printable by Go. Such
-// characters include letters, marks, numbers, punctuation, symbols, and the
-// ASCII space character, from categories L, M, N, P, S and the ASCII space
-// character. This categorization is the same as IsGraphic except that the
-// only spacing character is ASCII space, U+0020.
-func IsPrint(r rune) bool {
- if uint32(r) <= MaxLatin1 {
- return properties[uint8(r)]&pp != 0
- }
- return In(r, PrintRanges...)
-}
-
-// IsOneOf reports whether the rune is a member of one of the ranges.
-// The function "In" provides a nicer signature and should be used in preference to IsOneOf.
-func IsOneOf(ranges []*RangeTable, r rune) bool {
- for _, inside := range ranges {
- if Is(inside, r) {
- return true
- }
- }
- return false
-}
-
-// In reports whether the rune is a member of one of the ranges.
-func In(r rune, ranges ...*RangeTable) bool {
- for _, inside := range ranges {
- if Is(inside, r) {
- return true
- }
- }
- return false
-}
-
-// IsControl reports whether the rune is a control character.
-// The C (Other) Unicode category includes more code points
-// such as surrogates; use Is(C, r) to test for them.
-func IsControl(r rune) bool {
- if uint32(r) <= MaxLatin1 {
- return properties[uint8(r)]&pC != 0
- }
- // All control characters are < Latin1Max.
- return false
-}
-
-// IsLetter reports whether the rune is a letter (category L).
-func IsLetter(r rune) bool {
- if uint32(r) <= MaxLatin1 {
- return properties[uint8(r)]&(pLmask) != 0
- }
- return isExcludingLatin(Letter, r)
-}
-
-// IsMark reports whether the rune is a mark character (category M).
-func IsMark(r rune) bool {
- // There are no mark characters in Latin-1.
- return isExcludingLatin(Mark, r)
-}
-
-// IsNumber reports whether the rune is a number (category N).
-func IsNumber(r rune) bool {
- if uint32(r) <= MaxLatin1 {
- return properties[uint8(r)]&pN != 0
- }
- return isExcludingLatin(Number, r)
-}
-
-// IsPunct reports whether the rune is a Unicode punctuation character
-// (category P).
-func IsPunct(r rune) bool {
- if uint32(r) <= MaxLatin1 {
- return properties[uint8(r)]&pP != 0
- }
- return Is(Punct, r)
-}
-
-// IsSpace reports whether the rune is a space character as defined
-// by Unicode's White Space property; in the Latin-1 space
-// this is
-// '\t', '\n', '\v', '\f', '\r', ' ', U+0085 (NEL), U+00A0 (NBSP).
-// Other definitions of spacing characters are set by category
-// Z and property Pattern_White_Space.
-func IsSpace(r rune) bool {
- // This property isn't the same as Z; special-case it.
- if uint32(r) <= MaxLatin1 {
- switch r {
- case '\t', '\n', '\v', '\f', '\r', ' ', 0x85, 0xA0:
- return true
- }
- return false
- }
- return isExcludingLatin(White_Space, r)
-}
-
-// IsSymbol reports whether the rune is a symbolic character.
-func IsSymbol(r rune) bool {
- if uint32(r) <= MaxLatin1 {
- return properties[uint8(r)]&pS != 0
- }
- return isExcludingLatin(Symbol, r)
-}
diff --git a/src/pkg/unicode/graphic_test.go b/src/pkg/unicode/graphic_test.go
deleted file mode 100644
index c9f289c7f..000000000
--- a/src/pkg/unicode/graphic_test.go
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package unicode_test
-
-import (
- "testing"
- . "unicode"
-)
-
-// Independently check that the special "Is" functions work
-// in the Latin-1 range through the property table.
-
-func TestIsControlLatin1(t *testing.T) {
- for i := rune(0); i <= MaxLatin1; i++ {
- got := IsControl(i)
- want := false
- switch {
- case 0x00 <= i && i <= 0x1F:
- want = true
- case 0x7F <= i && i <= 0x9F:
- want = true
- }
- if got != want {
- t.Errorf("%U incorrect: got %t; want %t", i, got, want)
- }
- }
-}
-
-func TestIsLetterLatin1(t *testing.T) {
- for i := rune(0); i <= MaxLatin1; i++ {
- got := IsLetter(i)
- want := Is(Letter, i)
- if got != want {
- t.Errorf("%U incorrect: got %t; want %t", i, got, want)
- }
- }
-}
-
-func TestIsUpperLatin1(t *testing.T) {
- for i := rune(0); i <= MaxLatin1; i++ {
- got := IsUpper(i)
- want := Is(Upper, i)
- if got != want {
- t.Errorf("%U incorrect: got %t; want %t", i, got, want)
- }
- }
-}
-
-func TestIsLowerLatin1(t *testing.T) {
- for i := rune(0); i <= MaxLatin1; i++ {
- got := IsLower(i)
- want := Is(Lower, i)
- if got != want {
- t.Errorf("%U incorrect: got %t; want %t", i, got, want)
- }
- }
-}
-
-func TestNumberLatin1(t *testing.T) {
- for i := rune(0); i <= MaxLatin1; i++ {
- got := IsNumber(i)
- want := Is(Number, i)
- if got != want {
- t.Errorf("%U incorrect: got %t; want %t", i, got, want)
- }
- }
-}
-
-func TestIsPrintLatin1(t *testing.T) {
- for i := rune(0); i <= MaxLatin1; i++ {
- got := IsPrint(i)
- want := In(i, PrintRanges...)
- if i == ' ' {
- want = true
- }
- if got != want {
- t.Errorf("%U incorrect: got %t; want %t", i, got, want)
- }
- }
-}
-
-func TestIsGraphicLatin1(t *testing.T) {
- for i := rune(0); i <= MaxLatin1; i++ {
- got := IsGraphic(i)
- want := In(i, GraphicRanges...)
- if got != want {
- t.Errorf("%U incorrect: got %t; want %t", i, got, want)
- }
- }
-}
-
-func TestIsPunctLatin1(t *testing.T) {
- for i := rune(0); i <= MaxLatin1; i++ {
- got := IsPunct(i)
- want := Is(Punct, i)
- if got != want {
- t.Errorf("%U incorrect: got %t; want %t", i, got, want)
- }
- }
-}
-
-func TestIsSpaceLatin1(t *testing.T) {
- for i := rune(0); i <= MaxLatin1; i++ {
- got := IsSpace(i)
- want := Is(White_Space, i)
- if got != want {
- t.Errorf("%U incorrect: got %t; want %t", i, got, want)
- }
- }
-}
-
-func TestIsSymbolLatin1(t *testing.T) {
- for i := rune(0); i <= MaxLatin1; i++ {
- got := IsSymbol(i)
- want := Is(Symbol, i)
- if got != want {
- t.Errorf("%U incorrect: got %t; want %t", i, got, want)
- }
- }
-}
diff --git a/src/pkg/unicode/letter.go b/src/pkg/unicode/letter.go
deleted file mode 100644
index 977bd2b3b..000000000
--- a/src/pkg/unicode/letter.go
+++ /dev/null
@@ -1,354 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package unicode provides data and functions to test some properties of
-// Unicode code points.
-package unicode
-
-const (
- MaxRune = '\U0010FFFF' // Maximum valid Unicode code point.
- ReplacementChar = '\uFFFD' // Represents invalid code points.
- MaxASCII = '\u007F' // maximum ASCII value.
- MaxLatin1 = '\u00FF' // maximum Latin-1 value.
-)
-
-// RangeTable defines a set of Unicode code points by listing the ranges of
-// code points within the set. The ranges are listed in two slices
-// to save space: a slice of 16-bit ranges and a slice of 32-bit ranges.
-// The two slices must be in sorted order and non-overlapping.
-// Also, R32 should contain only values >= 0x10000 (1<<16).
-type RangeTable struct {
- R16 []Range16
- R32 []Range32
- LatinOffset int // number of entries in R16 with Hi <= MaxLatin1
-}
-
-// Range16 represents of a range of 16-bit Unicode code points. The range runs from Lo to Hi
-// inclusive and has the specified stride.
-type Range16 struct {
- Lo uint16
- Hi uint16
- Stride uint16
-}
-
-// Range32 represents of a range of Unicode code points and is used when one or
-// more of the values will not fit in 16 bits. The range runs from Lo to Hi
-// inclusive and has the specified stride. Lo and Hi must always be >= 1<<16.
-type Range32 struct {
- Lo uint32
- Hi uint32
- Stride uint32
-}
-
-// CaseRange represents a range of Unicode code points for simple (one
-// code point to one code point) case conversion.
-// The range runs from Lo to Hi inclusive, with a fixed stride of 1. Deltas
-// are the number to add to the code point to reach the code point for a
-// different case for that character. They may be negative. If zero, it
-// means the character is in the corresponding case. There is a special
-// case representing sequences of alternating corresponding Upper and Lower
-// pairs. It appears with a fixed Delta of
-// {UpperLower, UpperLower, UpperLower}
-// The constant UpperLower has an otherwise impossible delta value.
-type CaseRange struct {
- Lo uint32
- Hi uint32
- Delta d
-}
-
-// SpecialCase represents language-specific case mappings such as Turkish.
-// Methods of SpecialCase customize (by overriding) the standard mappings.
-type SpecialCase []CaseRange
-
-// BUG(r): There is no mechanism for full case folding, that is, for
-// characters that involve multiple runes in the input or output.
-
-// Indices into the Delta arrays inside CaseRanges for case mapping.
-const (
- UpperCase = iota
- LowerCase
- TitleCase
- MaxCase
-)
-
-type d [MaxCase]rune // to make the CaseRanges text shorter
-
-// If the Delta field of a CaseRange is UpperLower, it means
-// this CaseRange represents a sequence of the form (say)
-// Upper Lower Upper Lower.
-const (
- UpperLower = MaxRune + 1 // (Cannot be a valid delta.)
-)
-
-// linearMax is the maximum size table for linear search for non-Latin1 rune.
-// Derived by running 'go test -calibrate'.
-const linearMax = 18
-
-// is16 reports whether r is in the sorted slice of 16-bit ranges.
-func is16(ranges []Range16, r uint16) bool {
- if len(ranges) <= linearMax || r <= MaxLatin1 {
- for i := range ranges {
- range_ := &ranges[i]
- if r < range_.Lo {
- return false
- }
- if r <= range_.Hi {
- return (r-range_.Lo)%range_.Stride == 0
- }
- }
- return false
- }
-
- // binary search over ranges
- lo := 0
- hi := len(ranges)
- for lo < hi {
- m := lo + (hi-lo)/2
- range_ := &ranges[m]
- if range_.Lo <= r && r <= range_.Hi {
- return (r-range_.Lo)%range_.Stride == 0
- }
- if r < range_.Lo {
- hi = m
- } else {
- lo = m + 1
- }
- }
- return false
-}
-
-// is32 reports whether r is in the sorted slice of 32-bit ranges.
-func is32(ranges []Range32, r uint32) bool {
- if len(ranges) <= linearMax {
- for i := range ranges {
- range_ := &ranges[i]
- if r < range_.Lo {
- return false
- }
- if r <= range_.Hi {
- return (r-range_.Lo)%range_.Stride == 0
- }
- }
- return false
- }
-
- // binary search over ranges
- lo := 0
- hi := len(ranges)
- for lo < hi {
- m := lo + (hi-lo)/2
- range_ := ranges[m]
- if range_.Lo <= r && r <= range_.Hi {
- return (r-range_.Lo)%range_.Stride == 0
- }
- if r < range_.Lo {
- hi = m
- } else {
- lo = m + 1
- }
- }
- return false
-}
-
-// Is reports whether the rune is in the specified table of ranges.
-func Is(rangeTab *RangeTable, r rune) bool {
- r16 := rangeTab.R16
- if len(r16) > 0 && r <= rune(r16[len(r16)-1].Hi) {
- return is16(r16, uint16(r))
- }
- r32 := rangeTab.R32
- if len(r32) > 0 && r >= rune(r32[0].Lo) {
- return is32(r32, uint32(r))
- }
- return false
-}
-
-func isExcludingLatin(rangeTab *RangeTable, r rune) bool {
- r16 := rangeTab.R16
- if off := rangeTab.LatinOffset; len(r16) > off && r <= rune(r16[len(r16)-1].Hi) {
- return is16(r16[off:], uint16(r))
- }
- r32 := rangeTab.R32
- if len(r32) > 0 && r >= rune(r32[0].Lo) {
- return is32(r32, uint32(r))
- }
- return false
-}
-
-// IsUpper reports whether the rune is an upper case letter.
-func IsUpper(r rune) bool {
- // See comment in IsGraphic.
- if uint32(r) <= MaxLatin1 {
- return properties[uint8(r)]&pLmask == pLu
- }
- return isExcludingLatin(Upper, r)
-}
-
-// IsLower reports whether the rune is a lower case letter.
-func IsLower(r rune) bool {
- // See comment in IsGraphic.
- if uint32(r) <= MaxLatin1 {
- return properties[uint8(r)]&pLmask == pLl
- }
- return isExcludingLatin(Lower, r)
-}
-
-// IsTitle reports whether the rune is a title case letter.
-func IsTitle(r rune) bool {
- if r <= MaxLatin1 {
- return false
- }
- return isExcludingLatin(Title, r)
-}
-
-// to maps the rune using the specified case mapping.
-func to(_case int, r rune, caseRange []CaseRange) rune {
- if _case < 0 || MaxCase <= _case {
- return ReplacementChar // as reasonable an error as any
- }
- // binary search over ranges
- lo := 0
- hi := len(caseRange)
- for lo < hi {
- m := lo + (hi-lo)/2
- cr := caseRange[m]
- if rune(cr.Lo) <= r && r <= rune(cr.Hi) {
- delta := rune(cr.Delta[_case])
- if delta > MaxRune {
- // In an Upper-Lower sequence, which always starts with
- // an UpperCase letter, the real deltas always look like:
- // {0, 1, 0} UpperCase (Lower is next)
- // {-1, 0, -1} LowerCase (Upper, Title are previous)
- // The characters at even offsets from the beginning of the
- // sequence are upper case; the ones at odd offsets are lower.
- // The correct mapping can be done by clearing or setting the low
- // bit in the sequence offset.
- // The constants UpperCase and TitleCase are even while LowerCase
- // is odd so we take the low bit from _case.
- return rune(cr.Lo) + ((r-rune(cr.Lo))&^1 | rune(_case&1))
- }
- return r + delta
- }
- if r < rune(cr.Lo) {
- hi = m
- } else {
- lo = m + 1
- }
- }
- return r
-}
-
-// To maps the rune to the specified case: UpperCase, LowerCase, or TitleCase.
-func To(_case int, r rune) rune {
- return to(_case, r, CaseRanges)
-}
-
-// ToUpper maps the rune to upper case.
-func ToUpper(r rune) rune {
- if r <= MaxASCII {
- if 'a' <= r && r <= 'z' {
- r -= 'a' - 'A'
- }
- return r
- }
- return To(UpperCase, r)
-}
-
-// ToLower maps the rune to lower case.
-func ToLower(r rune) rune {
- if r <= MaxASCII {
- if 'A' <= r && r <= 'Z' {
- r += 'a' - 'A'
- }
- return r
- }
- return To(LowerCase, r)
-}
-
-// ToTitle maps the rune to title case.
-func ToTitle(r rune) rune {
- if r <= MaxASCII {
- if 'a' <= r && r <= 'z' { // title case is upper case for ASCII
- r -= 'a' - 'A'
- }
- return r
- }
- return To(TitleCase, r)
-}
-
-// ToUpper maps the rune to upper case giving priority to the special mapping.
-func (special SpecialCase) ToUpper(r rune) rune {
- r1 := to(UpperCase, r, []CaseRange(special))
- if r1 == r {
- r1 = ToUpper(r)
- }
- return r1
-}
-
-// ToTitle maps the rune to title case giving priority to the special mapping.
-func (special SpecialCase) ToTitle(r rune) rune {
- r1 := to(TitleCase, r, []CaseRange(special))
- if r1 == r {
- r1 = ToTitle(r)
- }
- return r1
-}
-
-// ToLower maps the rune to lower case giving priority to the special mapping.
-func (special SpecialCase) ToLower(r rune) rune {
- r1 := to(LowerCase, r, []CaseRange(special))
- if r1 == r {
- r1 = ToLower(r)
- }
- return r1
-}
-
-// caseOrbit is defined in tables.go as []foldPair. Right now all the
-// entries fit in uint16, so use uint16. If that changes, compilation
-// will fail (the constants in the composite literal will not fit in uint16)
-// and the types here can change to uint32.
-type foldPair struct {
- From uint16
- To uint16
-}
-
-// SimpleFold iterates over Unicode code points equivalent under
-// the Unicode-defined simple case folding. Among the code points
-// equivalent to rune (including rune itself), SimpleFold returns the
-// smallest rune > r if one exists, or else the smallest rune >= 0.
-//
-// For example:
-// SimpleFold('A') = 'a'
-// SimpleFold('a') = 'A'
-//
-// SimpleFold('K') = 'k'
-// SimpleFold('k') = '\u212A' (Kelvin symbol, K)
-// SimpleFold('\u212A') = 'K'
-//
-// SimpleFold('1') = '1'
-//
-func SimpleFold(r rune) rune {
- // Consult caseOrbit table for special cases.
- lo := 0
- hi := len(caseOrbit)
- for lo < hi {
- m := lo + (hi-lo)/2
- if rune(caseOrbit[m].From) < r {
- lo = m + 1
- } else {
- hi = m
- }
- }
- if lo < len(caseOrbit) && rune(caseOrbit[lo].From) == r {
- return rune(caseOrbit[lo].To)
- }
-
- // No folding specified. This is a one- or two-element
- // equivalence class containing rune and ToLower(rune)
- // and ToUpper(rune) if they are different from rune.
- if l := ToLower(r); l != r {
- return l
- }
- return ToUpper(r)
-}
diff --git a/src/pkg/unicode/letter_test.go b/src/pkg/unicode/letter_test.go
deleted file mode 100644
index 4ee11fb36..000000000
--- a/src/pkg/unicode/letter_test.go
+++ /dev/null
@@ -1,535 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package unicode_test
-
-import (
- "flag"
- "fmt"
- "runtime"
- "sort"
- "testing"
- . "unicode"
-)
-
-var upperTest = []rune{
- 0x41,
- 0xc0,
- 0xd8,
- 0x100,
- 0x139,
- 0x14a,
- 0x178,
- 0x181,
- 0x376,
- 0x3cf,
- 0x1f2a,
- 0x2102,
- 0x2c00,
- 0x2c10,
- 0x2c20,
- 0xa650,
- 0xa722,
- 0xff3a,
- 0x10400,
- 0x1d400,
- 0x1d7ca,
-}
-
-var notupperTest = []rune{
- 0x40,
- 0x5b,
- 0x61,
- 0x185,
- 0x1b0,
- 0x377,
- 0x387,
- 0x2150,
- 0xffff,
- 0x10000,
-}
-
-var letterTest = []rune{
- 0x41,
- 0x61,
- 0xaa,
- 0xba,
- 0xc8,
- 0xdb,
- 0xf9,
- 0x2ec,
- 0x535,
- 0x620,
- 0x6e6,
- 0x93d,
- 0xa15,
- 0xb99,
- 0xdc0,
- 0xedd,
- 0x1000,
- 0x1200,
- 0x1312,
- 0x1401,
- 0x1885,
- 0x2c00,
- 0xa800,
- 0xf900,
- 0xfa30,
- 0xffda,
- 0xffdc,
- 0x10000,
- 0x10300,
- 0x10400,
- 0x20000,
- 0x2f800,
- 0x2fa1d,
-}
-
-var notletterTest = []rune{
- 0x20,
- 0x35,
- 0x375,
- 0x619,
- 0x700,
- 0xfffe,
- 0x1ffff,
- 0x10ffff,
-}
-
-// Contains all the special cased Latin-1 chars.
-var spaceTest = []rune{
- 0x09,
- 0x0a,
- 0x0b,
- 0x0c,
- 0x0d,
- 0x20,
- 0x85,
- 0xA0,
- 0x2000,
- 0x3000,
-}
-
-type caseT struct {
- cas int
- in, out rune
-}
-
-var caseTest = []caseT{
- // errors
- {-1, '\n', 0xFFFD},
- {UpperCase, -1, -1},
- {UpperCase, 1 << 30, 1 << 30},
-
- // ASCII (special-cased so test carefully)
- {UpperCase, '\n', '\n'},
- {UpperCase, 'a', 'A'},
- {UpperCase, 'A', 'A'},
- {UpperCase, '7', '7'},
- {LowerCase, '\n', '\n'},
- {LowerCase, 'a', 'a'},
- {LowerCase, 'A', 'a'},
- {LowerCase, '7', '7'},
- {TitleCase, '\n', '\n'},
- {TitleCase, 'a', 'A'},
- {TitleCase, 'A', 'A'},
- {TitleCase, '7', '7'},
-
- // Latin-1: easy to read the tests!
- {UpperCase, 0x80, 0x80},
- {UpperCase, 'Å', 'Å'},
- {UpperCase, 'å', 'Å'},
- {LowerCase, 0x80, 0x80},
- {LowerCase, 'Å', 'å'},
- {LowerCase, 'å', 'å'},
- {TitleCase, 0x80, 0x80},
- {TitleCase, 'Å', 'Å'},
- {TitleCase, 'å', 'Å'},
-
- // 0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
- {UpperCase, 0x0131, 'I'},
- {LowerCase, 0x0131, 0x0131},
- {TitleCase, 0x0131, 'I'},
-
- // 0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
- {UpperCase, 0x0133, 0x0132},
- {LowerCase, 0x0133, 0x0133},
- {TitleCase, 0x0133, 0x0132},
-
- // 212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
- {UpperCase, 0x212A, 0x212A},
- {LowerCase, 0x212A, 'k'},
- {TitleCase, 0x212A, 0x212A},
-
- // From an UpperLower sequence
- // A640;CYRILLIC CAPITAL LETTER ZEMLYA;Lu;0;L;;;;;N;;;;A641;
- {UpperCase, 0xA640, 0xA640},
- {LowerCase, 0xA640, 0xA641},
- {TitleCase, 0xA640, 0xA640},
- // A641;CYRILLIC SMALL LETTER ZEMLYA;Ll;0;L;;;;;N;;;A640;;A640
- {UpperCase, 0xA641, 0xA640},
- {LowerCase, 0xA641, 0xA641},
- {TitleCase, 0xA641, 0xA640},
- // A64E;CYRILLIC CAPITAL LETTER NEUTRAL YER;Lu;0;L;;;;;N;;;;A64F;
- {UpperCase, 0xA64E, 0xA64E},
- {LowerCase, 0xA64E, 0xA64F},
- {TitleCase, 0xA64E, 0xA64E},
- // A65F;CYRILLIC SMALL LETTER YN;Ll;0;L;;;;;N;;;A65E;;A65E
- {UpperCase, 0xA65F, 0xA65E},
- {LowerCase, 0xA65F, 0xA65F},
- {TitleCase, 0xA65F, 0xA65E},
-
- // From another UpperLower sequence
- // 0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
- {UpperCase, 0x0139, 0x0139},
- {LowerCase, 0x0139, 0x013A},
- {TitleCase, 0x0139, 0x0139},
- // 013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
- {UpperCase, 0x013f, 0x013f},
- {LowerCase, 0x013f, 0x0140},
- {TitleCase, 0x013f, 0x013f},
- // 0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
- {UpperCase, 0x0148, 0x0147},
- {LowerCase, 0x0148, 0x0148},
- {TitleCase, 0x0148, 0x0147},
-
- // Last block in the 5.1.0 table
- // 10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428;
- {UpperCase, 0x10400, 0x10400},
- {LowerCase, 0x10400, 0x10428},
- {TitleCase, 0x10400, 0x10400},
- // 10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F;
- {UpperCase, 0x10427, 0x10427},
- {LowerCase, 0x10427, 0x1044F},
- {TitleCase, 0x10427, 0x10427},
- // 10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400
- {UpperCase, 0x10428, 0x10400},
- {LowerCase, 0x10428, 0x10428},
- {TitleCase, 0x10428, 0x10400},
- // 1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427
- {UpperCase, 0x1044F, 0x10427},
- {LowerCase, 0x1044F, 0x1044F},
- {TitleCase, 0x1044F, 0x10427},
-
- // First one not in the 5.1.0 table
- // 10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;;
- {UpperCase, 0x10450, 0x10450},
- {LowerCase, 0x10450, 0x10450},
- {TitleCase, 0x10450, 0x10450},
-
- // Non-letters with case.
- {LowerCase, 0x2161, 0x2171},
- {UpperCase, 0x0345, 0x0399},
-}
-
-func TestIsLetter(t *testing.T) {
- for _, r := range upperTest {
- if !IsLetter(r) {
- t.Errorf("IsLetter(U+%04X) = false, want true", r)
- }
- }
- for _, r := range letterTest {
- if !IsLetter(r) {
- t.Errorf("IsLetter(U+%04X) = false, want true", r)
- }
- }
- for _, r := range notletterTest {
- if IsLetter(r) {
- t.Errorf("IsLetter(U+%04X) = true, want false", r)
- }
- }
-}
-
-func TestIsUpper(t *testing.T) {
- for _, r := range upperTest {
- if !IsUpper(r) {
- t.Errorf("IsUpper(U+%04X) = false, want true", r)
- }
- }
- for _, r := range notupperTest {
- if IsUpper(r) {
- t.Errorf("IsUpper(U+%04X) = true, want false", r)
- }
- }
- for _, r := range notletterTest {
- if IsUpper(r) {
- t.Errorf("IsUpper(U+%04X) = true, want false", r)
- }
- }
-}
-
-func caseString(c int) string {
- switch c {
- case UpperCase:
- return "UpperCase"
- case LowerCase:
- return "LowerCase"
- case TitleCase:
- return "TitleCase"
- }
- return "ErrorCase"
-}
-
-func TestTo(t *testing.T) {
- for _, c := range caseTest {
- r := To(c.cas, c.in)
- if c.out != r {
- t.Errorf("To(U+%04X, %s) = U+%04X want U+%04X", c.in, caseString(c.cas), r, c.out)
- }
- }
-}
-
-func TestToUpperCase(t *testing.T) {
- for _, c := range caseTest {
- if c.cas != UpperCase {
- continue
- }
- r := ToUpper(c.in)
- if c.out != r {
- t.Errorf("ToUpper(U+%04X) = U+%04X want U+%04X", c.in, r, c.out)
- }
- }
-}
-
-func TestToLowerCase(t *testing.T) {
- for _, c := range caseTest {
- if c.cas != LowerCase {
- continue
- }
- r := ToLower(c.in)
- if c.out != r {
- t.Errorf("ToLower(U+%04X) = U+%04X want U+%04X", c.in, r, c.out)
- }
- }
-}
-
-func TestToTitleCase(t *testing.T) {
- for _, c := range caseTest {
- if c.cas != TitleCase {
- continue
- }
- r := ToTitle(c.in)
- if c.out != r {
- t.Errorf("ToTitle(U+%04X) = U+%04X want U+%04X", c.in, r, c.out)
- }
- }
-}
-
-func TestIsSpace(t *testing.T) {
- for _, c := range spaceTest {
- if !IsSpace(c) {
- t.Errorf("IsSpace(U+%04X) = false; want true", c)
- }
- }
- for _, c := range letterTest {
- if IsSpace(c) {
- t.Errorf("IsSpace(U+%04X) = true; want false", c)
- }
- }
-}
-
-// Check that the optimizations for IsLetter etc. agree with the tables.
-// We only need to check the Latin-1 range.
-func TestLetterOptimizations(t *testing.T) {
- for i := rune(0); i <= MaxLatin1; i++ {
- if Is(Letter, i) != IsLetter(i) {
- t.Errorf("IsLetter(U+%04X) disagrees with Is(Letter)", i)
- }
- if Is(Upper, i) != IsUpper(i) {
- t.Errorf("IsUpper(U+%04X) disagrees with Is(Upper)", i)
- }
- if Is(Lower, i) != IsLower(i) {
- t.Errorf("IsLower(U+%04X) disagrees with Is(Lower)", i)
- }
- if Is(Title, i) != IsTitle(i) {
- t.Errorf("IsTitle(U+%04X) disagrees with Is(Title)", i)
- }
- if Is(White_Space, i) != IsSpace(i) {
- t.Errorf("IsSpace(U+%04X) disagrees with Is(White_Space)", i)
- }
- if To(UpperCase, i) != ToUpper(i) {
- t.Errorf("ToUpper(U+%04X) disagrees with To(Upper)", i)
- }
- if To(LowerCase, i) != ToLower(i) {
- t.Errorf("ToLower(U+%04X) disagrees with To(Lower)", i)
- }
- if To(TitleCase, i) != ToTitle(i) {
- t.Errorf("ToTitle(U+%04X) disagrees with To(Title)", i)
- }
- }
-}
-
-func TestTurkishCase(t *testing.T) {
- lower := []rune("abcçdefgğhıijklmnoöprsştuüvyz")
- upper := []rune("ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ")
- for i, l := range lower {
- u := upper[i]
- if TurkishCase.ToLower(l) != l {
- t.Errorf("lower(U+%04X) is U+%04X not U+%04X", l, TurkishCase.ToLower(l), l)
- }
- if TurkishCase.ToUpper(u) != u {
- t.Errorf("upper(U+%04X) is U+%04X not U+%04X", u, TurkishCase.ToUpper(u), u)
- }
- if TurkishCase.ToUpper(l) != u {
- t.Errorf("upper(U+%04X) is U+%04X not U+%04X", l, TurkishCase.ToUpper(l), u)
- }
- if TurkishCase.ToLower(u) != l {
- t.Errorf("lower(U+%04X) is U+%04X not U+%04X", u, TurkishCase.ToLower(l), l)
- }
- if TurkishCase.ToTitle(u) != u {
- t.Errorf("title(U+%04X) is U+%04X not U+%04X", u, TurkishCase.ToTitle(u), u)
- }
- if TurkishCase.ToTitle(l) != u {
- t.Errorf("title(U+%04X) is U+%04X not U+%04X", l, TurkishCase.ToTitle(l), u)
- }
- }
-}
-
-var simpleFoldTests = []string{
- // SimpleFold(x) returns the next equivalent rune > x or wraps
- // around to smaller values.
-
- // Easy cases.
- "Aa",
- "δΔ",
-
- // ASCII special cases.
- "KkK",
- "Ssſ",
-
- // Non-ASCII special cases.
- "ρϱΡ",
- "ͅΙιι",
-
- // Extra special cases: has lower/upper but no case fold.
- "İ",
- "ı",
-}
-
-func TestSimpleFold(t *testing.T) {
- for _, tt := range simpleFoldTests {
- cycle := []rune(tt)
- r := cycle[len(cycle)-1]
- for _, out := range cycle {
- if r := SimpleFold(r); r != out {
- t.Errorf("SimpleFold(%#U) = %#U, want %#U", r, r, out)
- }
- r = out
- }
- }
-}
-
-// Running 'go test -calibrate' runs the calibration to find a plausible
-// cutoff point for linear search of a range list vs. binary search.
-// We create a fake table and then time how long it takes to do a
-// sequence of searches within that table, for all possible inputs
-// relative to the ranges (something before all, in each, between each, after all).
-// This assumes that all possible runes are equally likely.
-// In practice most runes are ASCII so this is a conservative estimate
-// of an effective cutoff value. In practice we could probably set it higher
-// than what this function recommends.
-
-var calibrate = flag.Bool("calibrate", false, "compute crossover for linear vs. binary search")
-
-func TestCalibrate(t *testing.T) {
- if !*calibrate {
- return
- }
-
- if runtime.GOARCH == "amd64" {
- fmt.Printf("warning: running calibration on %s\n", runtime.GOARCH)
- }
-
- // Find the point where binary search wins by more than 10%.
- // The 10% bias gives linear search an edge when they're close,
- // because on predominantly ASCII inputs linear search is even
- // better than our benchmarks measure.
- n := sort.Search(64, func(n int) bool {
- tab := fakeTable(n)
- blinear := func(b *testing.B) {
- tab := tab
- max := n*5 + 20
- for i := 0; i < b.N; i++ {
- for j := 0; j <= max; j++ {
- linear(tab, uint16(j))
- }
- }
- }
- bbinary := func(b *testing.B) {
- tab := tab
- max := n*5 + 20
- for i := 0; i < b.N; i++ {
- for j := 0; j <= max; j++ {
- binary(tab, uint16(j))
- }
- }
- }
- bmlinear := testing.Benchmark(blinear)
- bmbinary := testing.Benchmark(bbinary)
- fmt.Printf("n=%d: linear=%d binary=%d\n", n, bmlinear.NsPerOp(), bmbinary.NsPerOp())
- return bmlinear.NsPerOp()*100 > bmbinary.NsPerOp()*110
- })
- fmt.Printf("calibration: linear cutoff = %d\n", n)
-}
-
-func fakeTable(n int) []Range16 {
- var r16 []Range16
- for i := 0; i < n; i++ {
- r16 = append(r16, Range16{uint16(i*5 + 10), uint16(i*5 + 12), 1})
- }
- return r16
-}
-
-func linear(ranges []Range16, r uint16) bool {
- for i := range ranges {
- range_ := &ranges[i]
- if r < range_.Lo {
- return false
- }
- if r <= range_.Hi {
- return (r-range_.Lo)%range_.Stride == 0
- }
- }
- return false
-}
-
-func binary(ranges []Range16, r uint16) bool {
- // binary search over ranges
- lo := 0
- hi := len(ranges)
- for lo < hi {
- m := lo + (hi-lo)/2
- range_ := &ranges[m]
- if range_.Lo <= r && r <= range_.Hi {
- return (r-range_.Lo)%range_.Stride == 0
- }
- if r < range_.Lo {
- hi = m
- } else {
- lo = m + 1
- }
- }
- return false
-}
-
-func TestLatinOffset(t *testing.T) {
- var maps = []map[string]*RangeTable{
- Categories,
- FoldCategory,
- FoldScript,
- Properties,
- Scripts,
- }
- for _, m := range maps {
- for name, tab := range m {
- i := 0
- for i < len(tab.R16) && tab.R16[i].Hi <= MaxLatin1 {
- i++
- }
- if tab.LatinOffset != i {
- t.Errorf("%s: LatinOffset=%d, want %d", name, tab.LatinOffset, i)
- }
- }
- }
-}
diff --git a/src/pkg/unicode/maketables.go b/src/pkg/unicode/maketables.go
deleted file mode 100644
index 8116ab8a4..000000000
--- a/src/pkg/unicode/maketables.go
+++ /dev/null
@@ -1,1320 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-// Unicode table generator.
-// Data read from the web.
-
-package main
-
-import (
- "bufio"
- "flag"
- "fmt"
- "log"
- "net/http"
- "os"
- "path/filepath"
- "regexp"
- "sort"
- "strconv"
- "strings"
- "unicode"
-)
-
-func main() {
- flag.Parse()
- loadChars() // always needed
- loadCasefold()
- printCategories()
- printScriptOrProperty(false)
- printScriptOrProperty(true)
- printCases()
- printLatinProperties()
- printCasefold()
- printSizes()
-}
-
-var dataURL = flag.String("data", "", "full URL for UnicodeData.txt; defaults to --url/UnicodeData.txt")
-var casefoldingURL = flag.String("casefolding", "", "full URL for CaseFolding.txt; defaults to --url/CaseFolding.txt")
-var url = flag.String("url",
- "http://www.unicode.org/Public/6.3.0/ucd/",
- "URL of Unicode database directory")
-var tablelist = flag.String("tables",
- "all",
- "comma-separated list of which tables to generate; can be letter")
-var scriptlist = flag.String("scripts",
- "all",
- "comma-separated list of which script tables to generate")
-var proplist = flag.String("props",
- "all",
- "comma-separated list of which property tables to generate")
-var cases = flag.Bool("cases",
- true,
- "generate case tables")
-var test = flag.Bool("test",
- false,
- "test existing tables; can be used to compare web data with package data")
-var localFiles = flag.Bool("local",
- false,
- "data files have been copied to current directory; for debugging only")
-
-var scriptRe = regexp.MustCompile(`^([0-9A-F]+)(\.\.[0-9A-F]+)? *; ([A-Za-z_]+)$`)
-var logger = log.New(os.Stderr, "", log.Lshortfile)
-
-type reader struct {
- *bufio.Reader
- fd *os.File
- resp *http.Response
-}
-
-func open(url string) *reader {
- file := filepath.Base(url)
- if *localFiles {
- fd, err := os.Open(file)
- if err != nil {
- logger.Fatal(err)
- }
- return &reader{bufio.NewReader(fd), fd, nil}
- }
- resp, err := http.Get(url)
- if err != nil {
- logger.Fatal(err)
- }
- if resp.StatusCode != 200 {
- logger.Fatalf("bad GET status for %s: %d", file, resp.Status)
- }
- return &reader{bufio.NewReader(resp.Body), nil, resp}
-
-}
-
-func (r *reader) close() {
- if r.fd != nil {
- r.fd.Close()
- } else {
- r.resp.Body.Close()
- }
-}
-
-var category = map[string]bool{
- // Nd Lu etc.
- // We use one-character names to identify merged categories
- "L": true, // Lu Ll Lt Lm Lo
- "P": true, // Pc Pd Ps Pe Pu Pf Po
- "M": true, // Mn Mc Me
- "N": true, // Nd Nl No
- "S": true, // Sm Sc Sk So
- "Z": true, // Zs Zl Zp
- "C": true, // Cc Cf Cs Co Cn
-}
-
-// UnicodeData.txt has form:
-// 0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
-// 007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
-// See http://www.unicode.org/reports/tr44/ for a full explanation
-// The fields:
-const (
- FCodePoint = iota
- FName
- FGeneralCategory
- FCanonicalCombiningClass
- FBidiClass
- FDecompositionTypeAndMapping
- FNumericType
- FNumericDigit // If a decimal digit.
- FNumericValue // Includes non-decimal, e.g. U+2155=1/5
- FBidiMirrored
- FUnicode1Name
- FISOComment
- FSimpleUppercaseMapping
- FSimpleLowercaseMapping
- FSimpleTitlecaseMapping
- NumField
-
- MaxChar = 0x10FFFF // anything above this shouldn't exist
-)
-
-var fieldName = []string{
- FCodePoint: "CodePoint",
- FName: "Name",
- FGeneralCategory: "GeneralCategory",
- FCanonicalCombiningClass: "CanonicalCombiningClass",
- FBidiClass: "BidiClass",
- FDecompositionTypeAndMapping: "DecompositionTypeAndMapping",
- FNumericType: "NumericType",
- FNumericDigit: "NumericDigit",
- FNumericValue: "NumericValue",
- FBidiMirrored: "BidiMirrored",
- FUnicode1Name: "Unicode1Name",
- FISOComment: "ISOComment",
- FSimpleUppercaseMapping: "SimpleUppercaseMapping",
- FSimpleLowercaseMapping: "SimpleLowercaseMapping",
- FSimpleTitlecaseMapping: "SimpleTitlecaseMapping",
-}
-
-// This contains only the properties we're interested in.
-type Char struct {
- field []string // debugging only; could be deleted if we take out char.dump()
- codePoint rune // if zero, this index is not a valid code point.
- category string
- upperCase rune
- lowerCase rune
- titleCase rune
- foldCase rune // simple case folding
- caseOrbit rune // next in simple case folding orbit
-}
-
-// Scripts.txt has form:
-// A673 ; Cyrillic # Po SLAVONIC ASTERISK
-// A67C..A67D ; Cyrillic # Mn [2] COMBINING CYRILLIC KAVYKA..COMBINING CYRILLIC PAYEROK
-// See http://www.unicode.org/Public/5.1.0/ucd/UCD.html for full explanation
-
-type Script struct {
- lo, hi uint32 // range of code points
- script string
-}
-
-var chars = make([]Char, MaxChar+1)
-var scripts = make(map[string][]Script)
-var props = make(map[string][]Script) // a property looks like a script; can share the format
-
-var lastChar rune = 0
-
-// In UnicodeData.txt, some ranges are marked like this:
-// 3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
-// 4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
-// parseCategory returns a state variable indicating the weirdness.
-type State int
-
-const (
- SNormal State = iota // known to be zero for the type
- SFirst
- SLast
- SMissing
-)
-
-func parseCategory(line string) (state State) {
- field := strings.Split(line, ";")
- if len(field) != NumField {
- logger.Fatalf("%5s: %d fields (expected %d)\n", line, len(field), NumField)
- }
- point, err := strconv.ParseUint(field[FCodePoint], 16, 64)
- if err != nil {
- logger.Fatalf("%.5s...: %s", line, err)
- }
- lastChar = rune(point)
- if point == 0 {
- return // not interesting and we use 0 as unset
- }
- if point > MaxChar {
- return
- }
- char := &chars[point]
- char.field = field
- if char.codePoint != 0 {
- logger.Fatalf("point %U reused", point)
- }
- char.codePoint = lastChar
- char.category = field[FGeneralCategory]
- category[char.category] = true
- switch char.category {
- case "Nd":
- // Decimal digit
- _, err := strconv.Atoi(field[FNumericValue])
- if err != nil {
- logger.Fatalf("%U: bad numeric field: %s", point, err)
- }
- case "Lu":
- char.letter(field[FCodePoint], field[FSimpleLowercaseMapping], field[FSimpleTitlecaseMapping])
- case "Ll":
- char.letter(field[FSimpleUppercaseMapping], field[FCodePoint], field[FSimpleTitlecaseMapping])
- case "Lt":
- char.letter(field[FSimpleUppercaseMapping], field[FSimpleLowercaseMapping], field[FCodePoint])
- default:
- char.letter(field[FSimpleUppercaseMapping], field[FSimpleLowercaseMapping], field[FSimpleTitlecaseMapping])
- }
- switch {
- case strings.Index(field[FName], ", First>") > 0:
- state = SFirst
- case strings.Index(field[FName], ", Last>") > 0:
- state = SLast
- }
- return
-}
-
-func (char *Char) dump(s string) {
- fmt.Print(s, " ")
- for i := 0; i < len(char.field); i++ {
- fmt.Printf("%s:%q ", fieldName[i], char.field[i])
- }
- fmt.Print("\n")
-}
-
-func (char *Char) letter(u, l, t string) {
- char.upperCase = char.letterValue(u, "U")
- char.lowerCase = char.letterValue(l, "L")
- char.titleCase = char.letterValue(t, "T")
-}
-
-func (char *Char) letterValue(s string, cas string) rune {
- if s == "" {
- return 0
- }
- v, err := strconv.ParseUint(s, 16, 64)
- if err != nil {
- char.dump(cas)
- logger.Fatalf("%U: bad letter(%s): %s", char.codePoint, s, err)
- }
- return rune(v)
-}
-
-func allCategories() []string {
- a := make([]string, 0, len(category))
- for k := range category {
- a = append(a, k)
- }
- sort.Strings(a)
- return a
-}
-
-func all(scripts map[string][]Script) []string {
- a := make([]string, 0, len(scripts))
- for k := range scripts {
- a = append(a, k)
- }
- sort.Strings(a)
- return a
-}
-
-func allCatFold(m map[string]map[rune]bool) []string {
- a := make([]string, 0, len(m))
- for k := range m {
- a = append(a, k)
- }
- sort.Strings(a)
- return a
-}
-
-// Extract the version number from the URL
-func version() string {
- // Break on slashes and look for the first numeric field
- fields := strings.Split(*url, "/")
- for _, f := range fields {
- if len(f) > 0 && '0' <= f[0] && f[0] <= '9' {
- return f
- }
- }
- logger.Fatal("unknown version")
- return "Unknown"
-}
-
-func categoryOp(code rune, class uint8) bool {
- category := chars[code].category
- return len(category) > 0 && category[0] == class
-}
-
-func loadChars() {
- if *dataURL == "" {
- flag.Set("data", *url+"UnicodeData.txt")
- }
- input := open(*dataURL)
- defer input.close()
- scanner := bufio.NewScanner(input)
- var first rune = 0
- for scanner.Scan() {
- switch parseCategory(scanner.Text()) {
- case SNormal:
- if first != 0 {
- logger.Fatalf("bad state normal at %U", lastChar)
- }
- case SFirst:
- if first != 0 {
- logger.Fatalf("bad state first at %U", lastChar)
- }
- first = lastChar
- case SLast:
- if first == 0 {
- logger.Fatalf("bad state last at %U", lastChar)
- }
- for i := first + 1; i <= lastChar; i++ {
- chars[i] = chars[first]
- chars[i].codePoint = i
- }
- first = 0
- }
- }
- if scanner.Err() != nil {
- logger.Fatal(scanner.Err())
- }
-}
-
-func loadCasefold() {
- if *casefoldingURL == "" {
- flag.Set("casefolding", *url+"CaseFolding.txt")
- }
- input := open(*casefoldingURL)
- defer input.close()
- scanner := bufio.NewScanner(input)
- for scanner.Scan() {
- line := scanner.Text()
- if len(line) == 0 || line[0] == '#' || len(strings.TrimSpace(line)) == 0 {
- continue
- }
- field := strings.Split(line, "; ")
- if len(field) != 4 {
- logger.Fatalf("CaseFolding.txt %.5s...: %d fields (expected %d)\n", line, len(field), 4)
- }
- kind := field[1]
- if kind != "C" && kind != "S" {
- // Only care about 'common' and 'simple' foldings.
- continue
- }
- p1, err := strconv.ParseUint(field[0], 16, 64)
- if err != nil {
- logger.Fatalf("CaseFolding.txt %.5s...: %s", line, err)
- }
- p2, err := strconv.ParseUint(field[2], 16, 64)
- if err != nil {
- logger.Fatalf("CaseFolding.txt %.5s...: %s", line, err)
- }
- chars[p1].foldCase = rune(p2)
- }
- if scanner.Err() != nil {
- logger.Fatal(scanner.Err())
- }
-}
-
-const progHeader = `// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Generated by running
-// maketables --tables=%s --data=%s --casefolding=%s
-// DO NOT EDIT
-
-package unicode
-
-`
-
-func printCategories() {
- if *tablelist == "" {
- return
- }
- // Find out which categories to dump
- list := strings.Split(*tablelist, ",")
- if *tablelist == "all" {
- list = allCategories()
- }
- if *test {
- fullCategoryTest(list)
- return
- }
- fmt.Printf(progHeader, *tablelist, *dataURL, *casefoldingURL)
-
- fmt.Println("// Version is the Unicode edition from which the tables are derived.")
- fmt.Printf("const Version = %q\n\n", version())
-
- if *tablelist == "all" {
- fmt.Println("// Categories is the set of Unicode category tables.")
- fmt.Println("var Categories = map[string] *RangeTable {")
- for _, k := range allCategories() {
- fmt.Printf("\t%q: %s,\n", k, k)
- }
- fmt.Print("}\n\n")
- }
-
- decl := make(sort.StringSlice, len(list))
- ndecl := 0
- for _, name := range list {
- if _, ok := category[name]; !ok {
- logger.Fatal("unknown category", name)
- }
- // We generate an UpperCase name to serve as concise documentation and an _UnderScored
- // name to store the data. This stops godoc dumping all the tables but keeps them
- // available to clients.
- // Cases deserving special comments
- varDecl := ""
- switch name {
- case "C":
- varDecl = "\tOther = _C; // Other/C is the set of Unicode control and special characters, category C.\n"
- varDecl += "\tC = _C\n"
- case "L":
- varDecl = "\tLetter = _L; // Letter/L is the set of Unicode letters, category L.\n"
- varDecl += "\tL = _L\n"
- case "M":
- varDecl = "\tMark = _M; // Mark/M is the set of Unicode mark characters, category M.\n"
- varDecl += "\tM = _M\n"
- case "N":
- varDecl = "\tNumber = _N; // Number/N is the set of Unicode number characters, category N.\n"
- varDecl += "\tN = _N\n"
- case "P":
- varDecl = "\tPunct = _P; // Punct/P is the set of Unicode punctuation characters, category P.\n"
- varDecl += "\tP = _P\n"
- case "S":
- varDecl = "\tSymbol = _S; // Symbol/S is the set of Unicode symbol characters, category S.\n"
- varDecl += "\tS = _S\n"
- case "Z":
- varDecl = "\tSpace = _Z; // Space/Z is the set of Unicode space characters, category Z.\n"
- varDecl += "\tZ = _Z\n"
- case "Nd":
- varDecl = "\tDigit = _Nd; // Digit is the set of Unicode characters with the \"decimal digit\" property.\n"
- case "Lu":
- varDecl = "\tUpper = _Lu; // Upper is the set of Unicode upper case letters.\n"
- case "Ll":
- varDecl = "\tLower = _Ll; // Lower is the set of Unicode lower case letters.\n"
- case "Lt":
- varDecl = "\tTitle = _Lt; // Title is the set of Unicode title case letters.\n"
- }
- if len(name) > 1 {
- varDecl += fmt.Sprintf(
- "\t%s = _%s; // %s is the set of Unicode characters in category %s.\n",
- name, name, name, name)
- }
- decl[ndecl] = varDecl
- ndecl++
- if len(name) == 1 { // unified categories
- decl := fmt.Sprintf("var _%s = &RangeTable{\n", name)
- dumpRange(
- decl,
- func(code rune) bool { return categoryOp(code, name[0]) })
- continue
- }
- dumpRange(
- fmt.Sprintf("var _%s = &RangeTable{\n", name),
- func(code rune) bool { return chars[code].category == name })
- }
- decl.Sort()
- fmt.Println("// These variables have type *RangeTable.")
- fmt.Println("var (")
- for _, d := range decl {
- fmt.Print(d)
- }
- fmt.Print(")\n\n")
-}
-
-type Op func(code rune) bool
-
-const format = "\t\t{0x%04x, 0x%04x, %d},\n"
-
-func dumpRange(header string, inCategory Op) {
- fmt.Print(header)
- next := rune(0)
- latinOffset := 0
- fmt.Print("\tR16: []Range16{\n")
- // one Range for each iteration
- count := &range16Count
- size := 16
- for {
- // look for start of range
- for next < rune(len(chars)) && !inCategory(next) {
- next++
- }
- if next >= rune(len(chars)) {
- // no characters remain
- break
- }
-
- // start of range
- lo := next
- hi := next
- stride := rune(1)
- // accept lo
- next++
- // look for another character to set the stride
- for next < rune(len(chars)) && !inCategory(next) {
- next++
- }
- if next >= rune(len(chars)) {
- // no more characters
- fmt.Printf(format, lo, hi, stride)
- break
- }
- // set stride
- stride = next - lo
- // check for length of run. next points to first jump in stride
- for i := next; i < rune(len(chars)); i++ {
- if inCategory(i) == (((i - lo) % stride) == 0) {
- // accept
- if inCategory(i) {
- hi = i
- }
- } else {
- // no more characters in this run
- break
- }
- }
- if uint32(hi) <= unicode.MaxLatin1 {
- latinOffset++
- }
- size, count = printRange(uint32(lo), uint32(hi), uint32(stride), size, count)
- // next range: start looking where this range ends
- next = hi + 1
- }
- fmt.Print("\t},\n")
- if latinOffset > 0 {
- fmt.Printf("\tLatinOffset: %d,\n", latinOffset)
- }
- fmt.Print("}\n\n")
-}
-
-func printRange(lo, hi, stride uint32, size int, count *int) (int, *int) {
- if size == 16 && hi >= 1<<16 {
- if lo < 1<<16 {
- if lo+stride != hi {
- logger.Fatalf("unexpected straddle: %U %U %d", lo, hi, stride)
- }
- // No range contains U+FFFF as an instance, so split
- // the range into two entries. That way we can maintain
- // the invariant that R32 contains only >= 1<<16.
- fmt.Printf(format, lo, lo, 1)
- lo = hi
- stride = 1
- *count++
- }
- fmt.Print("\t},\n")
- fmt.Print("\tR32: []Range32{\n")
- size = 32
- count = &range32Count
- }
- fmt.Printf(format, lo, hi, stride)
- *count++
- return size, count
-}
-
-func fullCategoryTest(list []string) {
- for _, name := range list {
- if _, ok := category[name]; !ok {
- logger.Fatal("unknown category", name)
- }
- r, ok := unicode.Categories[name]
- if !ok && len(name) > 1 {
- logger.Fatalf("unknown table %q", name)
- }
- if len(name) == 1 {
- verifyRange(name, func(code rune) bool { return categoryOp(code, name[0]) }, r)
- } else {
- verifyRange(
- name,
- func(code rune) bool { return chars[code].category == name },
- r)
- }
- }
-}
-
-func verifyRange(name string, inCategory Op, table *unicode.RangeTable) {
- count := 0
- for j := range chars {
- i := rune(j)
- web := inCategory(i)
- pkg := unicode.Is(table, i)
- if web != pkg {
- fmt.Fprintf(os.Stderr, "%s: %U: web=%t pkg=%t\n", name, i, web, pkg)
- count++
- if count > 10 {
- break
- }
- }
- }
-}
-
-func parseScript(line string, scripts map[string][]Script) {
- comment := strings.Index(line, "#")
- if comment >= 0 {
- line = line[0:comment]
- }
- line = strings.TrimSpace(line)
- if len(line) == 0 {
- return
- }
- field := strings.Split(line, ";")
- if len(field) != 2 {
- logger.Fatalf("%s: %d fields (expected 2)\n", line, len(field))
- }
- matches := scriptRe.FindStringSubmatch(line)
- if len(matches) != 4 {
- logger.Fatalf("%s: %d matches (expected 3)\n", line, len(matches))
- }
- lo, err := strconv.ParseUint(matches[1], 16, 64)
- if err != nil {
- logger.Fatalf("%.5s...: %s", line, err)
- }
- hi := lo
- if len(matches[2]) > 2 { // ignore leading ..
- hi, err = strconv.ParseUint(matches[2][2:], 16, 64)
- if err != nil {
- logger.Fatalf("%.5s...: %s", line, err)
- }
- }
- name := matches[3]
- scripts[name] = append(scripts[name], Script{uint32(lo), uint32(hi), name})
-}
-
-// The script tables have a lot of adjacent elements. Fold them together.
-func foldAdjacent(r []Script) []unicode.Range32 {
- s := make([]unicode.Range32, 0, len(r))
- j := 0
- for i := 0; i < len(r); i++ {
- if j > 0 && r[i].lo == s[j-1].Hi+1 {
- s[j-1].Hi = r[i].hi
- } else {
- s = s[0 : j+1]
- s[j] = unicode.Range32{
- Lo: uint32(r[i].lo),
- Hi: uint32(r[i].hi),
- Stride: 1,
- }
- j++
- }
- }
- return s
-}
-
-func fullScriptTest(list []string, installed map[string]*unicode.RangeTable, scripts map[string][]Script) {
- for _, name := range list {
- if _, ok := scripts[name]; !ok {
- logger.Fatal("unknown script", name)
- }
- _, ok := installed[name]
- if !ok {
- logger.Fatal("unknown table", name)
- }
- for _, script := range scripts[name] {
- for r := script.lo; r <= script.hi; r++ {
- if !unicode.Is(installed[name], rune(r)) {
- fmt.Fprintf(os.Stderr, "%U: not in script %s\n", r, name)
- }
- }
- }
- }
-}
-
-// PropList.txt has the same format as Scripts.txt so we can share its parser.
-func printScriptOrProperty(doProps bool) {
- flag := "scripts"
- flaglist := *scriptlist
- file := "Scripts.txt"
- table := scripts
- installed := unicode.Scripts
- if doProps {
- flag = "props"
- flaglist = *proplist
- file = "PropList.txt"
- table = props
- installed = unicode.Properties
- }
- if flaglist == "" {
- return
- }
- input := open(*url + file)
- scanner := bufio.NewScanner(input)
- for scanner.Scan() {
- parseScript(scanner.Text(), table)
- }
- if scanner.Err() != nil {
- logger.Fatal(scanner.Err())
- }
- input.close()
-
- // Find out which scripts to dump
- list := strings.Split(flaglist, ",")
- if flaglist == "all" {
- list = all(table)
- }
- if *test {
- fullScriptTest(list, installed, table)
- return
- }
-
- fmt.Printf(
- "// Generated by running\n"+
- "// maketables --%s=%s --url=%s\n"+
- "// DO NOT EDIT\n\n",
- flag,
- flaglist,
- *url)
- if flaglist == "all" {
- if doProps {
- fmt.Println("// Properties is the set of Unicode property tables.")
- fmt.Println("var Properties = map[string] *RangeTable{")
- } else {
- fmt.Println("// Scripts is the set of Unicode script tables.")
- fmt.Println("var Scripts = map[string] *RangeTable{")
- }
- for _, k := range all(table) {
- fmt.Printf("\t%q: %s,\n", k, k)
- }
- fmt.Print("}\n\n")
- }
-
- decl := make(sort.StringSlice, len(list))
- ndecl := 0
- for _, name := range list {
- if doProps {
- decl[ndecl] = fmt.Sprintf(
- "\t%s = _%s;\t// %s is the set of Unicode characters with property %s.\n",
- name, name, name, name)
- } else {
- decl[ndecl] = fmt.Sprintf(
- "\t%s = _%s;\t// %s is the set of Unicode characters in script %s.\n",
- name, name, name, name)
- }
- ndecl++
- fmt.Printf("var _%s = &RangeTable {\n", name)
- ranges := foldAdjacent(table[name])
- fmt.Print("\tR16: []Range16{\n")
- size := 16
- count := &range16Count
- for _, s := range ranges {
- size, count = printRange(s.Lo, s.Hi, s.Stride, size, count)
- }
- fmt.Print("\t},\n")
- if off := findLatinOffset(ranges); off > 0 {
- fmt.Printf("\tLatinOffset: %d,\n", off)
- }
- fmt.Print("}\n\n")
- }
- decl.Sort()
- fmt.Println("// These variables have type *RangeTable.")
- fmt.Println("var (")
- for _, d := range decl {
- fmt.Print(d)
- }
- fmt.Print(")\n\n")
-}
-
-func findLatinOffset(ranges []unicode.Range32) int {
- i := 0
- for i < len(ranges) && ranges[i].Hi <= unicode.MaxLatin1 {
- i++
- }
- return i
-}
-
-const (
- CaseUpper = 1 << iota
- CaseLower
- CaseTitle
- CaseNone = 0 // must be zero
- CaseMissing = -1 // character not present; not a valid case state
-)
-
-type caseState struct {
- point rune
- _case int
- deltaToUpper rune
- deltaToLower rune
- deltaToTitle rune
-}
-
-// Is d a continuation of the state of c?
-func (c *caseState) adjacent(d *caseState) bool {
- if d.point < c.point {
- c, d = d, c
- }
- switch {
- case d.point != c.point+1: // code points not adjacent (shouldn't happen)
- return false
- case d._case != c._case: // different cases
- return c.upperLowerAdjacent(d)
- case c._case == CaseNone:
- return false
- case c._case == CaseMissing:
- return false
- case d.deltaToUpper != c.deltaToUpper:
- return false
- case d.deltaToLower != c.deltaToLower:
- return false
- case d.deltaToTitle != c.deltaToTitle:
- return false
- }
- return true
-}
-
-// Is d the same as c, but opposite in upper/lower case? this would make it
-// an element of an UpperLower sequence.
-func (c *caseState) upperLowerAdjacent(d *caseState) bool {
- // check they're a matched case pair. we know they have adjacent values
- switch {
- case c._case == CaseUpper && d._case != CaseLower:
- return false
- case c._case == CaseLower && d._case != CaseUpper:
- return false
- }
- // matched pair (at least in upper/lower). make the order Upper Lower
- if c._case == CaseLower {
- c, d = d, c
- }
- // for an Upper Lower sequence the deltas have to be in order
- // c: 0 1 0
- // d: -1 0 -1
- switch {
- case c.deltaToUpper != 0:
- return false
- case c.deltaToLower != 1:
- return false
- case c.deltaToTitle != 0:
- return false
- case d.deltaToUpper != -1:
- return false
- case d.deltaToLower != 0:
- return false
- case d.deltaToTitle != -1:
- return false
- }
- return true
-}
-
-// Does this character start an UpperLower sequence?
-func (c *caseState) isUpperLower() bool {
- // for an Upper Lower sequence the deltas have to be in order
- // c: 0 1 0
- switch {
- case c.deltaToUpper != 0:
- return false
- case c.deltaToLower != 1:
- return false
- case c.deltaToTitle != 0:
- return false
- }
- return true
-}
-
-// Does this character start a LowerUpper sequence?
-func (c *caseState) isLowerUpper() bool {
- // for an Upper Lower sequence the deltas have to be in order
- // c: -1 0 -1
- switch {
- case c.deltaToUpper != -1:
- return false
- case c.deltaToLower != 0:
- return false
- case c.deltaToTitle != -1:
- return false
- }
- return true
-}
-
-func getCaseState(i rune) (c *caseState) {
- c = &caseState{point: i, _case: CaseNone}
- ch := &chars[i]
- switch ch.codePoint {
- case 0:
- c._case = CaseMissing // Will get NUL wrong but that doesn't matter
- return
- case ch.upperCase:
- c._case = CaseUpper
- case ch.lowerCase:
- c._case = CaseLower
- case ch.titleCase:
- c._case = CaseTitle
- }
- // Some things such as roman numeral U+2161 don't describe themselves
- // as upper case, but have a lower case. Second-guess them.
- if c._case == CaseNone && ch.lowerCase != 0 {
- c._case = CaseUpper
- }
- // Same in the other direction.
- if c._case == CaseNone && ch.upperCase != 0 {
- c._case = CaseLower
- }
-
- if ch.upperCase != 0 {
- c.deltaToUpper = ch.upperCase - i
- }
- if ch.lowerCase != 0 {
- c.deltaToLower = ch.lowerCase - i
- }
- if ch.titleCase != 0 {
- c.deltaToTitle = ch.titleCase - i
- }
- return
-}
-
-func printCases() {
- if !*cases {
- return
- }
- if *test {
- fullCaseTest()
- return
- }
- fmt.Printf(
- "// Generated by running\n"+
- "// maketables --data=%s --casefolding=%s\n"+
- "// DO NOT EDIT\n\n"+
- "// CaseRanges is the table describing case mappings for all letters with\n"+
- "// non-self mappings.\n"+
- "var CaseRanges = _CaseRanges\n"+
- "var _CaseRanges = []CaseRange {\n",
- *dataURL, *casefoldingURL)
-
- var startState *caseState // the start of a run; nil for not active
- var prevState = &caseState{} // the state of the previous character
- for i := range chars {
- state := getCaseState(rune(i))
- if state.adjacent(prevState) {
- prevState = state
- continue
- }
- // end of run (possibly)
- printCaseRange(startState, prevState)
- startState = nil
- if state._case != CaseMissing && state._case != CaseNone {
- startState = state
- }
- prevState = state
- }
- fmt.Print("}\n")
-}
-
-func printCaseRange(lo, hi *caseState) {
- if lo == nil {
- return
- }
- if lo.deltaToUpper == 0 && lo.deltaToLower == 0 && lo.deltaToTitle == 0 {
- // character represents itself in all cases - no need to mention it
- return
- }
- switch {
- case hi.point > lo.point && lo.isUpperLower():
- fmt.Printf("\t{0x%04X, 0x%04X, d{UpperLower, UpperLower, UpperLower}},\n",
- lo.point, hi.point)
- case hi.point > lo.point && lo.isLowerUpper():
- logger.Fatalf("LowerUpper sequence: should not happen: %U. If it's real, need to fix To()", lo.point)
- fmt.Printf("\t{0x%04X, 0x%04X, d{LowerUpper, LowerUpper, LowerUpper}},\n",
- lo.point, hi.point)
- default:
- fmt.Printf("\t{0x%04X, 0x%04X, d{%d, %d, %d}},\n",
- lo.point, hi.point,
- lo.deltaToUpper, lo.deltaToLower, lo.deltaToTitle)
- }
-}
-
-// If the cased value in the Char is 0, it means use the rune itself.
-func caseIt(r, cased rune) rune {
- if cased == 0 {
- return r
- }
- return cased
-}
-
-func fullCaseTest() {
- for j, c := range chars {
- i := rune(j)
- lower := unicode.ToLower(i)
- want := caseIt(i, c.lowerCase)
- if lower != want {
- fmt.Fprintf(os.Stderr, "lower %U should be %U is %U\n", i, want, lower)
- }
- upper := unicode.ToUpper(i)
- want = caseIt(i, c.upperCase)
- if upper != want {
- fmt.Fprintf(os.Stderr, "upper %U should be %U is %U\n", i, want, upper)
- }
- title := unicode.ToTitle(i)
- want = caseIt(i, c.titleCase)
- if title != want {
- fmt.Fprintf(os.Stderr, "title %U should be %U is %U\n", i, want, title)
- }
- }
-}
-
-func printLatinProperties() {
- if *test {
- return
- }
- fmt.Println("var properties = [MaxLatin1+1]uint8{")
- for code := 0; code <= unicode.MaxLatin1; code++ {
- var property string
- switch chars[code].category {
- case "Cc", "": // NUL has no category.
- property = "pC"
- case "Cf": // soft hyphen, unique category, not printable.
- property = "0"
- case "Ll":
- property = "pLl | pp"
- case "Lo":
- property = "pLo | pp"
- case "Lu":
- property = "pLu | pp"
- case "Nd", "No":
- property = "pN | pp"
- case "Pc", "Pd", "Pe", "Pf", "Pi", "Po", "Ps":
- property = "pP | pp"
- case "Sc", "Sk", "Sm", "So":
- property = "pS | pp"
- case "Zs":
- property = "pZ"
- default:
- logger.Fatalf("%U has unknown category %q", code, chars[code].category)
- }
- // Special case
- if code == ' ' {
- property = "pZ | pp"
- }
- fmt.Printf("\t0x%02X: %s, // %q\n", code, property, code)
- }
- fmt.Printf("}\n\n")
-}
-
-type runeSlice []rune
-
-func (p runeSlice) Len() int { return len(p) }
-func (p runeSlice) Less(i, j int) bool { return p[i] < p[j] }
-func (p runeSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
-
-func printCasefold() {
- // Build list of case-folding groups attached to each canonical folded char (typically lower case).
- var caseOrbit = make([][]rune, MaxChar+1)
- for j := range chars {
- i := rune(j)
- c := &chars[i]
- if c.foldCase == 0 {
- continue
- }
- orb := caseOrbit[c.foldCase]
- if orb == nil {
- orb = append(orb, c.foldCase)
- }
- caseOrbit[c.foldCase] = append(orb, i)
- }
-
- // Insert explicit 1-element groups when assuming [lower, upper] would be wrong.
- for j := range chars {
- i := rune(j)
- c := &chars[i]
- f := c.foldCase
- if f == 0 {
- f = i
- }
- orb := caseOrbit[f]
- if orb == nil && (c.upperCase != 0 && c.upperCase != i || c.lowerCase != 0 && c.lowerCase != i) {
- // Default assumption of [upper, lower] is wrong.
- caseOrbit[i] = []rune{i}
- }
- }
-
- // Delete the groups for which assuming [lower, upper] is right.
- for i, orb := range caseOrbit {
- if len(orb) == 2 && chars[orb[0]].upperCase == orb[1] && chars[orb[1]].lowerCase == orb[0] {
- caseOrbit[i] = nil
- }
- }
-
- // Record orbit information in chars.
- for _, orb := range caseOrbit {
- if orb == nil {
- continue
- }
- sort.Sort(runeSlice(orb))
- c := orb[len(orb)-1]
- for _, d := range orb {
- chars[c].caseOrbit = d
- c = d
- }
- }
-
- printCaseOrbit()
-
- // Tables of category and script folding exceptions: code points
- // that must be added when interpreting a particular category/script
- // in a case-folding context.
- cat := make(map[string]map[rune]bool)
- for name := range category {
- if x := foldExceptions(inCategory(name)); len(x) > 0 {
- cat[name] = x
- }
- }
-
- scr := make(map[string]map[rune]bool)
- for name := range scripts {
- if x := foldExceptions(inScript(name)); len(x) > 0 {
- cat[name] = x
- }
- }
-
- printCatFold("FoldCategory", cat)
- printCatFold("FoldScript", scr)
-}
-
-// inCategory returns a list of all the runes in the category.
-func inCategory(name string) []rune {
- var x []rune
- for j := range chars {
- i := rune(j)
- c := &chars[i]
- if c.category == name || len(name) == 1 && len(c.category) > 1 && c.category[0] == name[0] {
- x = append(x, i)
- }
- }
- return x
-}
-
-// inScript returns a list of all the runes in the script.
-func inScript(name string) []rune {
- var x []rune
- for _, s := range scripts[name] {
- for c := s.lo; c <= s.hi; c++ {
- x = append(x, rune(c))
- }
- }
- return x
-}
-
-// foldExceptions returns a list of all the runes fold-equivalent
-// to runes in class but not in class themselves.
-func foldExceptions(class []rune) map[rune]bool {
- // Create map containing class and all fold-equivalent chars.
- m := make(map[rune]bool)
- for _, r := range class {
- c := &chars[r]
- if c.caseOrbit == 0 {
- // Just upper and lower.
- if u := c.upperCase; u != 0 {
- m[u] = true
- }
- if l := c.lowerCase; l != 0 {
- m[l] = true
- }
- m[r] = true
- continue
- }
- // Otherwise walk orbit.
- r0 := r
- for {
- m[r] = true
- r = chars[r].caseOrbit
- if r == r0 {
- break
- }
- }
- }
-
- // Remove class itself.
- for _, r := range class {
- delete(m, r)
- }
-
- // What's left is the exceptions.
- return m
-}
-
-var comment = map[string]string{
- "FoldCategory": "// FoldCategory maps a category name to a table of\n" +
- "// code points outside the category that are equivalent under\n" +
- "// simple case folding to code points inside the category.\n" +
- "// If there is no entry for a category name, there are no such points.\n",
-
- "FoldScript": "// FoldScript maps a script name to a table of\n" +
- "// code points outside the script that are equivalent under\n" +
- "// simple case folding to code points inside the script.\n" +
- "// If there is no entry for a script name, there are no such points.\n",
-}
-
-func printCaseOrbit() {
- if *test {
- for j := range chars {
- i := rune(j)
- c := &chars[i]
- f := c.caseOrbit
- if f == 0 {
- if c.lowerCase != i && c.lowerCase != 0 {
- f = c.lowerCase
- } else if c.upperCase != i && c.upperCase != 0 {
- f = c.upperCase
- } else {
- f = i
- }
- }
- if g := unicode.SimpleFold(i); g != f {
- fmt.Fprintf(os.Stderr, "unicode.SimpleFold(%#U) = %#U, want %#U\n", i, g, f)
- }
- }
- return
- }
-
- fmt.Printf("var caseOrbit = []foldPair{\n")
- for i := range chars {
- c := &chars[i]
- if c.caseOrbit != 0 {
- fmt.Printf("\t{0x%04X, 0x%04X},\n", i, c.caseOrbit)
- foldPairCount++
- }
- }
- fmt.Printf("}\n\n")
-}
-
-func printCatFold(name string, m map[string]map[rune]bool) {
- if *test {
- var pkgMap map[string]*unicode.RangeTable
- if name == "FoldCategory" {
- pkgMap = unicode.FoldCategory
- } else {
- pkgMap = unicode.FoldScript
- }
- if len(pkgMap) != len(m) {
- fmt.Fprintf(os.Stderr, "unicode.%s has %d elements, want %d\n", name, len(pkgMap), len(m))
- return
- }
- for k, v := range m {
- t, ok := pkgMap[k]
- if !ok {
- fmt.Fprintf(os.Stderr, "unicode.%s[%q] missing\n", name, k)
- continue
- }
- n := 0
- for _, r := range t.R16 {
- for c := rune(r.Lo); c <= rune(r.Hi); c += rune(r.Stride) {
- if !v[c] {
- fmt.Fprintf(os.Stderr, "unicode.%s[%q] contains %#U, should not\n", name, k, c)
- }
- n++
- }
- }
- for _, r := range t.R32 {
- for c := rune(r.Lo); c <= rune(r.Hi); c += rune(r.Stride) {
- if !v[c] {
- fmt.Fprintf(os.Stderr, "unicode.%s[%q] contains %#U, should not\n", name, k, c)
- }
- n++
- }
- }
- if n != len(v) {
- fmt.Fprintf(os.Stderr, "unicode.%s[%q] has %d code points, want %d\n", name, k, n, len(v))
- }
- }
- return
- }
-
- fmt.Print(comment[name])
- fmt.Printf("var %s = map[string]*RangeTable{\n", name)
- for _, name := range allCatFold(m) {
- fmt.Printf("\t%q: fold%s,\n", name, name)
- }
- fmt.Printf("}\n\n")
- for _, name := range allCatFold(m) {
- class := m[name]
- dumpRange(
- fmt.Sprintf("var fold%s = &RangeTable{\n", name),
- func(code rune) bool { return class[code] })
- }
-}
-
-var range16Count = 0 // Number of entries in the 16-bit range tables.
-var range32Count = 0 // Number of entries in the 32-bit range tables.
-var foldPairCount = 0 // Number of fold pairs in the exception tables.
-
-func printSizes() {
- if *test {
- return
- }
- fmt.Println()
- fmt.Printf("// Range entries: %d 16-bit, %d 32-bit, %d total.\n", range16Count, range32Count, range16Count+range32Count)
- range16Bytes := range16Count * 3 * 2
- range32Bytes := range32Count * 3 * 4
- fmt.Printf("// Range bytes: %d 16-bit, %d 32-bit, %d total.\n", range16Bytes, range32Bytes, range16Bytes+range32Bytes)
- fmt.Println()
- fmt.Printf("// Fold orbit bytes: %d pairs, %d bytes\n", foldPairCount, foldPairCount*2*2)
-}
diff --git a/src/pkg/unicode/script_test.go b/src/pkg/unicode/script_test.go
deleted file mode 100644
index e2ba0011a..000000000
--- a/src/pkg/unicode/script_test.go
+++ /dev/null
@@ -1,264 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package unicode_test
-
-import (
- "testing"
- . "unicode"
-)
-
-type T struct {
- rune rune
- script string
-}
-
-// Hand-chosen tests from Unicode 5.1.0, 6.0.0 and 6.2.0 mostly to discover when new
-// scripts and categories arise.
-var inTest = []T{
- {0x06e2, "Arabic"},
- {0x0567, "Armenian"},
- {0x10b20, "Avestan"},
- {0x1b37, "Balinese"},
- {0xa6af, "Bamum"},
- {0x1be1, "Batak"},
- {0x09c2, "Bengali"},
- {0x3115, "Bopomofo"},
- {0x282d, "Braille"},
- {0x1a1a, "Buginese"},
- {0x1747, "Buhid"},
- {0x11011, "Brahmi"},
- {0x156d, "Canadian_Aboriginal"},
- {0x102a9, "Carian"},
- {0x11111, "Chakma"},
- {0xaa4d, "Cham"},
- {0x13c2, "Cherokee"},
- {0x0020, "Common"},
- {0x1d4a5, "Common"},
- {0x2cfc, "Coptic"},
- {0x12420, "Cuneiform"},
- {0x1080c, "Cypriot"},
- {0xa663, "Cyrillic"},
- {0x10430, "Deseret"},
- {0x094a, "Devanagari"},
- {0x13001, "Egyptian_Hieroglyphs"},
- {0x1271, "Ethiopic"},
- {0x10fc, "Georgian"},
- {0x2c40, "Glagolitic"},
- {0x10347, "Gothic"},
- {0x03ae, "Greek"},
- {0x0abf, "Gujarati"},
- {0x0a24, "Gurmukhi"},
- {0x3028, "Han"},
- {0x11b8, "Hangul"},
- {0x1727, "Hanunoo"},
- {0x05a0, "Hebrew"},
- {0x3058, "Hiragana"},
- {0x10841, "Imperial_Aramaic"},
- {0x20e6, "Inherited"},
- {0x10b70, "Inscriptional_Pahlavi"},
- {0x10b5a, "Inscriptional_Parthian"},
- {0xa9d0, "Javanese"},
- {0x1109f, "Kaithi"},
- {0x0cbd, "Kannada"},
- {0x30a6, "Katakana"},
- {0xa928, "Kayah_Li"},
- {0x10a11, "Kharoshthi"},
- {0x17c6, "Khmer"},
- {0x0eaa, "Lao"},
- {0x1d79, "Latin"},
- {0x1c10, "Lepcha"},
- {0x1930, "Limbu"},
- {0x1003c, "Linear_B"},
- {0xa4e1, "Lisu"},
- {0x10290, "Lycian"},
- {0x10930, "Lydian"},
- {0x0d42, "Malayalam"},
- {0x0843, "Mandaic"},
- {0xabd0, "Meetei_Mayek"},
- {0x1099f, "Meroitic_Hieroglyphs"},
- {0x109a0, "Meroitic_Cursive"},
- {0x16f00, "Miao"},
- {0x1822, "Mongolian"},
- {0x104c, "Myanmar"},
- {0x19c3, "New_Tai_Lue"},
- {0x07f8, "Nko"},
- {0x169b, "Ogham"},
- {0x1c6a, "Ol_Chiki"},
- {0x10310, "Old_Italic"},
- {0x103c9, "Old_Persian"},
- {0x10a6f, "Old_South_Arabian"},
- {0x10c20, "Old_Turkic"},
- {0x0b3e, "Oriya"},
- {0x10491, "Osmanya"},
- {0xa860, "Phags_Pa"},
- {0x10918, "Phoenician"},
- {0xa949, "Rejang"},
- {0x16c0, "Runic"},
- {0x081d, "Samaritan"},
- {0xa892, "Saurashtra"},
- {0x111a0, "Sharada"},
- {0x10463, "Shavian"},
- {0x0dbd, "Sinhala"},
- {0x110d0, "Sora_Sompeng"},
- {0x1ba3, "Sundanese"},
- {0xa803, "Syloti_Nagri"},
- {0x070f, "Syriac"},
- {0x170f, "Tagalog"},
- {0x176f, "Tagbanwa"},
- {0x1972, "Tai_Le"},
- {0x1a62, "Tai_Tham"},
- {0xaadc, "Tai_Viet"},
- {0x116c9, "Takri"},
- {0x0bbf, "Tamil"},
- {0x0c55, "Telugu"},
- {0x07a7, "Thaana"},
- {0x0e46, "Thai"},
- {0x0f36, "Tibetan"},
- {0x2d55, "Tifinagh"},
- {0x10388, "Ugaritic"},
- {0xa60e, "Vai"},
- {0xa216, "Yi"},
-}
-
-var outTest = []T{ // not really worth being thorough
- {0x20, "Telugu"},
-}
-
-var inCategoryTest = []T{
- {0x0081, "Cc"},
- {0x200B, "Cf"},
- {0xf0000, "Co"},
- {0xdb80, "Cs"},
- {0x0236, "Ll"},
- {0x1d9d, "Lm"},
- {0x07cf, "Lo"},
- {0x1f8a, "Lt"},
- {0x03ff, "Lu"},
- {0x0bc1, "Mc"},
- {0x20df, "Me"},
- {0x07f0, "Mn"},
- {0x1bb2, "Nd"},
- {0x10147, "Nl"},
- {0x2478, "No"},
- {0xfe33, "Pc"},
- {0x2011, "Pd"},
- {0x301e, "Pe"},
- {0x2e03, "Pf"},
- {0x2e02, "Pi"},
- {0x0022, "Po"},
- {0x2770, "Ps"},
- {0x00a4, "Sc"},
- {0xa711, "Sk"},
- {0x25f9, "Sm"},
- {0x2108, "So"},
- {0x2028, "Zl"},
- {0x2029, "Zp"},
- {0x202f, "Zs"},
- // Unifieds.
- {0x04aa, "L"},
- {0x0009, "C"},
- {0x1712, "M"},
- {0x0031, "N"},
- {0x00bb, "P"},
- {0x00a2, "S"},
- {0x00a0, "Z"},
-}
-
-var inPropTest = []T{
- {0x0046, "ASCII_Hex_Digit"},
- {0x200F, "Bidi_Control"},
- {0x2212, "Dash"},
- {0xE0001, "Deprecated"},
- {0x00B7, "Diacritic"},
- {0x30FE, "Extender"},
- {0xFF46, "Hex_Digit"},
- {0x2E17, "Hyphen"},
- {0x2FFB, "IDS_Binary_Operator"},
- {0x2FF3, "IDS_Trinary_Operator"},
- {0xFA6A, "Ideographic"},
- {0x200D, "Join_Control"},
- {0x0EC4, "Logical_Order_Exception"},
- {0x2FFFF, "Noncharacter_Code_Point"},
- {0x065E, "Other_Alphabetic"},
- {0x2065, "Other_Default_Ignorable_Code_Point"},
- {0x0BD7, "Other_Grapheme_Extend"},
- {0x0387, "Other_ID_Continue"},
- {0x212E, "Other_ID_Start"},
- {0x2094, "Other_Lowercase"},
- {0x2040, "Other_Math"},
- {0x216F, "Other_Uppercase"},
- {0x0027, "Pattern_Syntax"},
- {0x0020, "Pattern_White_Space"},
- {0x300D, "Quotation_Mark"},
- {0x2EF3, "Radical"},
- {0x061F, "STerm"},
- {0x2071, "Soft_Dotted"},
- {0x003A, "Terminal_Punctuation"},
- {0x9FC3, "Unified_Ideograph"},
- {0xFE0F, "Variation_Selector"},
- {0x0020, "White_Space"},
-}
-
-func TestScripts(t *testing.T) {
- notTested := make(map[string]bool)
- for k := range Scripts {
- notTested[k] = true
- }
- for _, test := range inTest {
- if _, ok := Scripts[test.script]; !ok {
- t.Fatal(test.script, "not a known script")
- }
- if !Is(Scripts[test.script], test.rune) {
- t.Errorf("IsScript(%U, %s) = false, want true", test.rune, test.script)
- }
- delete(notTested, test.script)
- }
- for _, test := range outTest {
- if Is(Scripts[test.script], test.rune) {
- t.Errorf("IsScript(%U, %s) = true, want false", test.rune, test.script)
- }
- }
- for k := range notTested {
- t.Error("script not tested:", k)
- }
-}
-
-func TestCategories(t *testing.T) {
- notTested := make(map[string]bool)
- for k := range Categories {
- notTested[k] = true
- }
- for _, test := range inCategoryTest {
- if _, ok := Categories[test.script]; !ok {
- t.Fatal(test.script, "not a known category")
- }
- if !Is(Categories[test.script], test.rune) {
- t.Errorf("IsCategory(%U, %s) = false, want true", test.rune, test.script)
- }
- delete(notTested, test.script)
- }
- for k := range notTested {
- t.Error("category not tested:", k)
- }
-}
-
-func TestProperties(t *testing.T) {
- notTested := make(map[string]bool)
- for k := range Properties {
- notTested[k] = true
- }
- for _, test := range inPropTest {
- if _, ok := Properties[test.script]; !ok {
- t.Fatal(test.script, "not a known prop")
- }
- if !Is(Properties[test.script], test.rune) {
- t.Errorf("IsCategory(%U, %s) = false, want true", test.rune, test.script)
- }
- delete(notTested, test.script)
- }
- for k := range notTested {
- t.Error("property not tested:", k)
- }
-}
diff --git a/src/pkg/unicode/tables.go b/src/pkg/unicode/tables.go
deleted file mode 100644
index 5670d1c5b..000000000
--- a/src/pkg/unicode/tables.go
+++ /dev/null
@@ -1,6391 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Generated by running
-// maketables --tables=all --data=http://www.unicode.org/Public/6.3.0/ucd/UnicodeData.txt --casefolding=http://www.unicode.org/Public/6.3.0/ucd/CaseFolding.txt
-// DO NOT EDIT
-
-package unicode
-
-// Version is the Unicode edition from which the tables are derived.
-const Version = "6.3.0"
-
-// Categories is the set of Unicode category tables.
-var Categories = map[string]*RangeTable{
- "C": C,
- "Cc": Cc,
- "Cf": Cf,
- "Co": Co,
- "Cs": Cs,
- "L": L,
- "Ll": Ll,
- "Lm": Lm,
- "Lo": Lo,
- "Lt": Lt,
- "Lu": Lu,
- "M": M,
- "Mc": Mc,
- "Me": Me,
- "Mn": Mn,
- "N": N,
- "Nd": Nd,
- "Nl": Nl,
- "No": No,
- "P": P,
- "Pc": Pc,
- "Pd": Pd,
- "Pe": Pe,
- "Pf": Pf,
- "Pi": Pi,
- "Po": Po,
- "Ps": Ps,
- "S": S,
- "Sc": Sc,
- "Sk": Sk,
- "Sm": Sm,
- "So": So,
- "Z": Z,
- "Zl": Zl,
- "Zp": Zp,
- "Zs": Zs,
-}
-
-var _C = &RangeTable{
- R16: []Range16{
- {0x0001, 0x001f, 1},
- {0x007f, 0x009f, 1},
- {0x00ad, 0x0600, 1363},
- {0x0601, 0x0604, 1},
- {0x061c, 0x06dd, 193},
- {0x070f, 0x180e, 4351},
- {0x200b, 0x200f, 1},
- {0x202a, 0x202e, 1},
- {0x2060, 0x2064, 1},
- {0x2066, 0x206f, 1},
- {0xd800, 0xf8ff, 1},
- {0xfeff, 0xfff9, 250},
- {0xfffa, 0xfffb, 1},
- },
- R32: []Range32{
- {0x110bd, 0x1d173, 49334},
- {0x1d174, 0x1d17a, 1},
- {0xe0001, 0xe0020, 31},
- {0xe0021, 0xe007f, 1},
- {0xf0000, 0xffffd, 1},
- {0x100000, 0x10fffd, 1},
- },
- LatinOffset: 2,
-}
-
-var _Cc = &RangeTable{
- R16: []Range16{
- {0x0001, 0x001f, 1},
- {0x007f, 0x009f, 1},
- },
- LatinOffset: 2,
-}
-
-var _Cf = &RangeTable{
- R16: []Range16{
- {0x00ad, 0x0600, 1363},
- {0x0601, 0x0604, 1},
- {0x061c, 0x06dd, 193},
- {0x070f, 0x180e, 4351},
- {0x200b, 0x200f, 1},
- {0x202a, 0x202e, 1},
- {0x2060, 0x2064, 1},
- {0x2066, 0x206f, 1},
- {0xfeff, 0xfff9, 250},
- {0xfffa, 0xfffb, 1},
- },
- R32: []Range32{
- {0x110bd, 0x1d173, 49334},
- {0x1d174, 0x1d17a, 1},
- {0xe0001, 0xe0020, 31},
- {0xe0021, 0xe007f, 1},
- },
-}
-
-var _Co = &RangeTable{
- R16: []Range16{
- {0xe000, 0xf8ff, 1},
- },
- R32: []Range32{
- {0xf0000, 0xffffd, 1},
- {0x100000, 0x10fffd, 1},
- },
-}
-
-var _Cs = &RangeTable{
- R16: []Range16{
- {0xd800, 0xdfff, 1},
- },
-}
-
-var _L = &RangeTable{
- R16: []Range16{
- {0x0041, 0x005a, 1},
- {0x0061, 0x007a, 1},
- {0x00aa, 0x00b5, 11},
- {0x00ba, 0x00c0, 6},
- {0x00c1, 0x00d6, 1},
- {0x00d8, 0x00f6, 1},
- {0x00f8, 0x02c1, 1},
- {0x02c6, 0x02d1, 1},
- {0x02e0, 0x02e4, 1},
- {0x02ec, 0x02ee, 2},
- {0x0370, 0x0374, 1},
- {0x0376, 0x0377, 1},
- {0x037a, 0x037d, 1},
- {0x0386, 0x0388, 2},
- {0x0389, 0x038a, 1},
- {0x038c, 0x038e, 2},
- {0x038f, 0x03a1, 1},
- {0x03a3, 0x03f5, 1},
- {0x03f7, 0x0481, 1},
- {0x048a, 0x0527, 1},
- {0x0531, 0x0556, 1},
- {0x0559, 0x0561, 8},
- {0x0562, 0x0587, 1},
- {0x05d0, 0x05ea, 1},
- {0x05f0, 0x05f2, 1},
- {0x0620, 0x064a, 1},
- {0x066e, 0x066f, 1},
- {0x0671, 0x06d3, 1},
- {0x06d5, 0x06e5, 16},
- {0x06e6, 0x06ee, 8},
- {0x06ef, 0x06fa, 11},
- {0x06fb, 0x06fc, 1},
- {0x06ff, 0x0710, 17},
- {0x0712, 0x072f, 1},
- {0x074d, 0x07a5, 1},
- {0x07b1, 0x07ca, 25},
- {0x07cb, 0x07ea, 1},
- {0x07f4, 0x07f5, 1},
- {0x07fa, 0x0800, 6},
- {0x0801, 0x0815, 1},
- {0x081a, 0x0824, 10},
- {0x0828, 0x0840, 24},
- {0x0841, 0x0858, 1},
- {0x08a0, 0x08a2, 2},
- {0x08a3, 0x08ac, 1},
- {0x0904, 0x0939, 1},
- {0x093d, 0x0950, 19},
- {0x0958, 0x0961, 1},
- {0x0971, 0x0977, 1},
- {0x0979, 0x097f, 1},
- {0x0985, 0x098c, 1},
- {0x098f, 0x0990, 1},
- {0x0993, 0x09a8, 1},
- {0x09aa, 0x09b0, 1},
- {0x09b2, 0x09b6, 4},
- {0x09b7, 0x09b9, 1},
- {0x09bd, 0x09ce, 17},
- {0x09dc, 0x09dd, 1},
- {0x09df, 0x09e1, 1},
- {0x09f0, 0x09f1, 1},
- {0x0a05, 0x0a0a, 1},
- {0x0a0f, 0x0a10, 1},
- {0x0a13, 0x0a28, 1},
- {0x0a2a, 0x0a30, 1},
- {0x0a32, 0x0a33, 1},
- {0x0a35, 0x0a36, 1},
- {0x0a38, 0x0a39, 1},
- {0x0a59, 0x0a5c, 1},
- {0x0a5e, 0x0a72, 20},
- {0x0a73, 0x0a74, 1},
- {0x0a85, 0x0a8d, 1},
- {0x0a8f, 0x0a91, 1},
- {0x0a93, 0x0aa8, 1},
- {0x0aaa, 0x0ab0, 1},
- {0x0ab2, 0x0ab3, 1},
- {0x0ab5, 0x0ab9, 1},
- {0x0abd, 0x0ad0, 19},
- {0x0ae0, 0x0ae1, 1},
- {0x0b05, 0x0b0c, 1},
- {0x0b0f, 0x0b10, 1},
- {0x0b13, 0x0b28, 1},
- {0x0b2a, 0x0b30, 1},
- {0x0b32, 0x0b33, 1},
- {0x0b35, 0x0b39, 1},
- {0x0b3d, 0x0b5c, 31},
- {0x0b5d, 0x0b5f, 2},
- {0x0b60, 0x0b61, 1},
- {0x0b71, 0x0b83, 18},
- {0x0b85, 0x0b8a, 1},
- {0x0b8e, 0x0b90, 1},
- {0x0b92, 0x0b95, 1},
- {0x0b99, 0x0b9a, 1},
- {0x0b9c, 0x0b9e, 2},
- {0x0b9f, 0x0ba3, 4},
- {0x0ba4, 0x0ba8, 4},
- {0x0ba9, 0x0baa, 1},
- {0x0bae, 0x0bb9, 1},
- {0x0bd0, 0x0c05, 53},
- {0x0c06, 0x0c0c, 1},
- {0x0c0e, 0x0c10, 1},
- {0x0c12, 0x0c28, 1},
- {0x0c2a, 0x0c33, 1},
- {0x0c35, 0x0c39, 1},
- {0x0c3d, 0x0c58, 27},
- {0x0c59, 0x0c60, 7},
- {0x0c61, 0x0c85, 36},
- {0x0c86, 0x0c8c, 1},
- {0x0c8e, 0x0c90, 1},
- {0x0c92, 0x0ca8, 1},
- {0x0caa, 0x0cb3, 1},
- {0x0cb5, 0x0cb9, 1},
- {0x0cbd, 0x0cde, 33},
- {0x0ce0, 0x0ce1, 1},
- {0x0cf1, 0x0cf2, 1},
- {0x0d05, 0x0d0c, 1},
- {0x0d0e, 0x0d10, 1},
- {0x0d12, 0x0d3a, 1},
- {0x0d3d, 0x0d4e, 17},
- {0x0d60, 0x0d61, 1},
- {0x0d7a, 0x0d7f, 1},
- {0x0d85, 0x0d96, 1},
- {0x0d9a, 0x0db1, 1},
- {0x0db3, 0x0dbb, 1},
- {0x0dbd, 0x0dc0, 3},
- {0x0dc1, 0x0dc6, 1},
- {0x0e01, 0x0e30, 1},
- {0x0e32, 0x0e33, 1},
- {0x0e40, 0x0e46, 1},
- {0x0e81, 0x0e82, 1},
- {0x0e84, 0x0e87, 3},
- {0x0e88, 0x0e8a, 2},
- {0x0e8d, 0x0e94, 7},
- {0x0e95, 0x0e97, 1},
- {0x0e99, 0x0e9f, 1},
- {0x0ea1, 0x0ea3, 1},
- {0x0ea5, 0x0ea7, 2},
- {0x0eaa, 0x0eab, 1},
- {0x0ead, 0x0eb0, 1},
- {0x0eb2, 0x0eb3, 1},
- {0x0ebd, 0x0ec0, 3},
- {0x0ec1, 0x0ec4, 1},
- {0x0ec6, 0x0edc, 22},
- {0x0edd, 0x0edf, 1},
- {0x0f00, 0x0f40, 64},
- {0x0f41, 0x0f47, 1},
- {0x0f49, 0x0f6c, 1},
- {0x0f88, 0x0f8c, 1},
- {0x1000, 0x102a, 1},
- {0x103f, 0x1050, 17},
- {0x1051, 0x1055, 1},
- {0x105a, 0x105d, 1},
- {0x1061, 0x1065, 4},
- {0x1066, 0x106e, 8},
- {0x106f, 0x1070, 1},
- {0x1075, 0x1081, 1},
- {0x108e, 0x10a0, 18},
- {0x10a1, 0x10c5, 1},
- {0x10c7, 0x10cd, 6},
- {0x10d0, 0x10fa, 1},
- {0x10fc, 0x1248, 1},
- {0x124a, 0x124d, 1},
- {0x1250, 0x1256, 1},
- {0x1258, 0x125a, 2},
- {0x125b, 0x125d, 1},
- {0x1260, 0x1288, 1},
- {0x128a, 0x128d, 1},
- {0x1290, 0x12b0, 1},
- {0x12b2, 0x12b5, 1},
- {0x12b8, 0x12be, 1},
- {0x12c0, 0x12c2, 2},
- {0x12c3, 0x12c5, 1},
- {0x12c8, 0x12d6, 1},
- {0x12d8, 0x1310, 1},
- {0x1312, 0x1315, 1},
- {0x1318, 0x135a, 1},
- {0x1380, 0x138f, 1},
- {0x13a0, 0x13f4, 1},
- {0x1401, 0x166c, 1},
- {0x166f, 0x167f, 1},
- {0x1681, 0x169a, 1},
- {0x16a0, 0x16ea, 1},
- {0x1700, 0x170c, 1},
- {0x170e, 0x1711, 1},
- {0x1720, 0x1731, 1},
- {0x1740, 0x1751, 1},
- {0x1760, 0x176c, 1},
- {0x176e, 0x1770, 1},
- {0x1780, 0x17b3, 1},
- {0x17d7, 0x17dc, 5},
- {0x1820, 0x1877, 1},
- {0x1880, 0x18a8, 1},
- {0x18aa, 0x18b0, 6},
- {0x18b1, 0x18f5, 1},
- {0x1900, 0x191c, 1},
- {0x1950, 0x196d, 1},
- {0x1970, 0x1974, 1},
- {0x1980, 0x19ab, 1},
- {0x19c1, 0x19c7, 1},
- {0x1a00, 0x1a16, 1},
- {0x1a20, 0x1a54, 1},
- {0x1aa7, 0x1b05, 94},
- {0x1b06, 0x1b33, 1},
- {0x1b45, 0x1b4b, 1},
- {0x1b83, 0x1ba0, 1},
- {0x1bae, 0x1baf, 1},
- {0x1bba, 0x1be5, 1},
- {0x1c00, 0x1c23, 1},
- {0x1c4d, 0x1c4f, 1},
- {0x1c5a, 0x1c7d, 1},
- {0x1ce9, 0x1cec, 1},
- {0x1cee, 0x1cf1, 1},
- {0x1cf5, 0x1cf6, 1},
- {0x1d00, 0x1dbf, 1},
- {0x1e00, 0x1f15, 1},
- {0x1f18, 0x1f1d, 1},
- {0x1f20, 0x1f45, 1},
- {0x1f48, 0x1f4d, 1},
- {0x1f50, 0x1f57, 1},
- {0x1f59, 0x1f5f, 2},
- {0x1f60, 0x1f7d, 1},
- {0x1f80, 0x1fb4, 1},
- {0x1fb6, 0x1fbc, 1},
- {0x1fbe, 0x1fc2, 4},
- {0x1fc3, 0x1fc4, 1},
- {0x1fc6, 0x1fcc, 1},
- {0x1fd0, 0x1fd3, 1},
- {0x1fd6, 0x1fdb, 1},
- {0x1fe0, 0x1fec, 1},
- {0x1ff2, 0x1ff4, 1},
- {0x1ff6, 0x1ffc, 1},
- {0x2071, 0x207f, 14},
- {0x2090, 0x209c, 1},
- {0x2102, 0x2107, 5},
- {0x210a, 0x2113, 1},
- {0x2115, 0x2119, 4},
- {0x211a, 0x211d, 1},
- {0x2124, 0x212a, 2},
- {0x212b, 0x212d, 1},
- {0x212f, 0x2139, 1},
- {0x213c, 0x213f, 1},
- {0x2145, 0x2149, 1},
- {0x214e, 0x2183, 53},
- {0x2184, 0x2c00, 2684},
- {0x2c01, 0x2c2e, 1},
- {0x2c30, 0x2c5e, 1},
- {0x2c60, 0x2ce4, 1},
- {0x2ceb, 0x2cee, 1},
- {0x2cf2, 0x2cf3, 1},
- {0x2d00, 0x2d25, 1},
- {0x2d27, 0x2d2d, 6},
- {0x2d30, 0x2d67, 1},
- {0x2d6f, 0x2d80, 17},
- {0x2d81, 0x2d96, 1},
- {0x2da0, 0x2da6, 1},
- {0x2da8, 0x2dae, 1},
- {0x2db0, 0x2db6, 1},
- {0x2db8, 0x2dbe, 1},
- {0x2dc0, 0x2dc6, 1},
- {0x2dc8, 0x2dce, 1},
- {0x2dd0, 0x2dd6, 1},
- {0x2dd8, 0x2dde, 1},
- {0x2e2f, 0x3005, 470},
- {0x3006, 0x3031, 43},
- {0x3032, 0x3035, 1},
- {0x303b, 0x303c, 1},
- {0x3041, 0x3096, 1},
- {0x309d, 0x309f, 1},
- {0x30a1, 0x30fa, 1},
- {0x30fc, 0x30ff, 1},
- {0x3105, 0x312d, 1},
- {0x3131, 0x318e, 1},
- {0x31a0, 0x31ba, 1},
- {0x31f0, 0x31ff, 1},
- {0x3400, 0x4db5, 1},
- {0x4e00, 0x9fcc, 1},
- {0xa000, 0xa48c, 1},
- {0xa4d0, 0xa4fd, 1},
- {0xa500, 0xa60c, 1},
- {0xa610, 0xa61f, 1},
- {0xa62a, 0xa62b, 1},
- {0xa640, 0xa66e, 1},
- {0xa67f, 0xa697, 1},
- {0xa6a0, 0xa6e5, 1},
- {0xa717, 0xa71f, 1},
- {0xa722, 0xa788, 1},
- {0xa78b, 0xa78e, 1},
- {0xa790, 0xa793, 1},
- {0xa7a0, 0xa7aa, 1},
- {0xa7f8, 0xa801, 1},
- {0xa803, 0xa805, 1},
- {0xa807, 0xa80a, 1},
- {0xa80c, 0xa822, 1},
- {0xa840, 0xa873, 1},
- {0xa882, 0xa8b3, 1},
- {0xa8f2, 0xa8f7, 1},
- {0xa8fb, 0xa90a, 15},
- {0xa90b, 0xa925, 1},
- {0xa930, 0xa946, 1},
- {0xa960, 0xa97c, 1},
- {0xa984, 0xa9b2, 1},
- {0xa9cf, 0xaa00, 49},
- {0xaa01, 0xaa28, 1},
- {0xaa40, 0xaa42, 1},
- {0xaa44, 0xaa4b, 1},
- {0xaa60, 0xaa76, 1},
- {0xaa7a, 0xaa80, 6},
- {0xaa81, 0xaaaf, 1},
- {0xaab1, 0xaab5, 4},
- {0xaab6, 0xaab9, 3},
- {0xaaba, 0xaabd, 1},
- {0xaac0, 0xaac2, 2},
- {0xaadb, 0xaadd, 1},
- {0xaae0, 0xaaea, 1},
- {0xaaf2, 0xaaf4, 1},
- {0xab01, 0xab06, 1},
- {0xab09, 0xab0e, 1},
- {0xab11, 0xab16, 1},
- {0xab20, 0xab26, 1},
- {0xab28, 0xab2e, 1},
- {0xabc0, 0xabe2, 1},
- {0xac00, 0xd7a3, 1},
- {0xd7b0, 0xd7c6, 1},
- {0xd7cb, 0xd7fb, 1},
- {0xf900, 0xfa6d, 1},
- {0xfa70, 0xfad9, 1},
- {0xfb00, 0xfb06, 1},
- {0xfb13, 0xfb17, 1},
- {0xfb1d, 0xfb1f, 2},
- {0xfb20, 0xfb28, 1},
- {0xfb2a, 0xfb36, 1},
- {0xfb38, 0xfb3c, 1},
- {0xfb3e, 0xfb40, 2},
- {0xfb41, 0xfb43, 2},
- {0xfb44, 0xfb46, 2},
- {0xfb47, 0xfbb1, 1},
- {0xfbd3, 0xfd3d, 1},
- {0xfd50, 0xfd8f, 1},
- {0xfd92, 0xfdc7, 1},
- {0xfdf0, 0xfdfb, 1},
- {0xfe70, 0xfe74, 1},
- {0xfe76, 0xfefc, 1},
- {0xff21, 0xff3a, 1},
- {0xff41, 0xff5a, 1},
- {0xff66, 0xffbe, 1},
- {0xffc2, 0xffc7, 1},
- {0xffca, 0xffcf, 1},
- {0xffd2, 0xffd7, 1},
- {0xffda, 0xffdc, 1},
- },
- R32: []Range32{
- {0x10000, 0x1000b, 1},
- {0x1000d, 0x10026, 1},
- {0x10028, 0x1003a, 1},
- {0x1003c, 0x1003d, 1},
- {0x1003f, 0x1004d, 1},
- {0x10050, 0x1005d, 1},
- {0x10080, 0x100fa, 1},
- {0x10280, 0x1029c, 1},
- {0x102a0, 0x102d0, 1},
- {0x10300, 0x1031e, 1},
- {0x10330, 0x10340, 1},
- {0x10342, 0x10349, 1},
- {0x10380, 0x1039d, 1},
- {0x103a0, 0x103c3, 1},
- {0x103c8, 0x103cf, 1},
- {0x10400, 0x1049d, 1},
- {0x10800, 0x10805, 1},
- {0x10808, 0x1080a, 2},
- {0x1080b, 0x10835, 1},
- {0x10837, 0x10838, 1},
- {0x1083c, 0x1083f, 3},
- {0x10840, 0x10855, 1},
- {0x10900, 0x10915, 1},
- {0x10920, 0x10939, 1},
- {0x10980, 0x109b7, 1},
- {0x109be, 0x109bf, 1},
- {0x10a00, 0x10a10, 16},
- {0x10a11, 0x10a13, 1},
- {0x10a15, 0x10a17, 1},
- {0x10a19, 0x10a33, 1},
- {0x10a60, 0x10a7c, 1},
- {0x10b00, 0x10b35, 1},
- {0x10b40, 0x10b55, 1},
- {0x10b60, 0x10b72, 1},
- {0x10c00, 0x10c48, 1},
- {0x11003, 0x11037, 1},
- {0x11083, 0x110af, 1},
- {0x110d0, 0x110e8, 1},
- {0x11103, 0x11126, 1},
- {0x11183, 0x111b2, 1},
- {0x111c1, 0x111c4, 1},
- {0x11680, 0x116aa, 1},
- {0x12000, 0x1236e, 1},
- {0x13000, 0x1342e, 1},
- {0x16800, 0x16a38, 1},
- {0x16f00, 0x16f44, 1},
- {0x16f50, 0x16f93, 67},
- {0x16f94, 0x16f9f, 1},
- {0x1b000, 0x1b001, 1},
- {0x1d400, 0x1d454, 1},
- {0x1d456, 0x1d49c, 1},
- {0x1d49e, 0x1d49f, 1},
- {0x1d4a2, 0x1d4a5, 3},
- {0x1d4a6, 0x1d4a9, 3},
- {0x1d4aa, 0x1d4ac, 1},
- {0x1d4ae, 0x1d4b9, 1},
- {0x1d4bb, 0x1d4bd, 2},
- {0x1d4be, 0x1d4c3, 1},
- {0x1d4c5, 0x1d505, 1},
- {0x1d507, 0x1d50a, 1},
- {0x1d50d, 0x1d514, 1},
- {0x1d516, 0x1d51c, 1},
- {0x1d51e, 0x1d539, 1},
- {0x1d53b, 0x1d53e, 1},
- {0x1d540, 0x1d544, 1},
- {0x1d546, 0x1d54a, 4},
- {0x1d54b, 0x1d550, 1},
- {0x1d552, 0x1d6a5, 1},
- {0x1d6a8, 0x1d6c0, 1},
- {0x1d6c2, 0x1d6da, 1},
- {0x1d6dc, 0x1d6fa, 1},
- {0x1d6fc, 0x1d714, 1},
- {0x1d716, 0x1d734, 1},
- {0x1d736, 0x1d74e, 1},
- {0x1d750, 0x1d76e, 1},
- {0x1d770, 0x1d788, 1},
- {0x1d78a, 0x1d7a8, 1},
- {0x1d7aa, 0x1d7c2, 1},
- {0x1d7c4, 0x1d7cb, 1},
- {0x1ee00, 0x1ee03, 1},
- {0x1ee05, 0x1ee1f, 1},
- {0x1ee21, 0x1ee22, 1},
- {0x1ee24, 0x1ee27, 3},
- {0x1ee29, 0x1ee32, 1},
- {0x1ee34, 0x1ee37, 1},
- {0x1ee39, 0x1ee3b, 2},
- {0x1ee42, 0x1ee47, 5},
- {0x1ee49, 0x1ee4d, 2},
- {0x1ee4e, 0x1ee4f, 1},
- {0x1ee51, 0x1ee52, 1},
- {0x1ee54, 0x1ee57, 3},
- {0x1ee59, 0x1ee61, 2},
- {0x1ee62, 0x1ee64, 2},
- {0x1ee67, 0x1ee6a, 1},
- {0x1ee6c, 0x1ee72, 1},
- {0x1ee74, 0x1ee77, 1},
- {0x1ee79, 0x1ee7c, 1},
- {0x1ee7e, 0x1ee80, 2},
- {0x1ee81, 0x1ee89, 1},
- {0x1ee8b, 0x1ee9b, 1},
- {0x1eea1, 0x1eea3, 1},
- {0x1eea5, 0x1eea9, 1},
- {0x1eeab, 0x1eebb, 1},
- {0x20000, 0x2a6d6, 1},
- {0x2a700, 0x2b734, 1},
- {0x2b740, 0x2b81d, 1},
- {0x2f800, 0x2fa1d, 1},
- },
- LatinOffset: 6,
-}
-
-var _Ll = &RangeTable{
- R16: []Range16{
- {0x0061, 0x007a, 1},
- {0x00b5, 0x00df, 42},
- {0x00e0, 0x00f6, 1},
- {0x00f8, 0x00ff, 1},
- {0x0101, 0x0137, 2},
- {0x0138, 0x0148, 2},
- {0x0149, 0x0177, 2},
- {0x017a, 0x017e, 2},
- {0x017f, 0x0180, 1},
- {0x0183, 0x0185, 2},
- {0x0188, 0x018c, 4},
- {0x018d, 0x0192, 5},
- {0x0195, 0x0199, 4},
- {0x019a, 0x019b, 1},
- {0x019e, 0x01a1, 3},
- {0x01a3, 0x01a5, 2},
- {0x01a8, 0x01aa, 2},
- {0x01ab, 0x01ad, 2},
- {0x01b0, 0x01b4, 4},
- {0x01b6, 0x01b9, 3},
- {0x01ba, 0x01bd, 3},
- {0x01be, 0x01bf, 1},
- {0x01c6, 0x01cc, 3},
- {0x01ce, 0x01dc, 2},
- {0x01dd, 0x01ef, 2},
- {0x01f0, 0x01f3, 3},
- {0x01f5, 0x01f9, 4},
- {0x01fb, 0x0233, 2},
- {0x0234, 0x0239, 1},
- {0x023c, 0x023f, 3},
- {0x0240, 0x0242, 2},
- {0x0247, 0x024f, 2},
- {0x0250, 0x0293, 1},
- {0x0295, 0x02af, 1},
- {0x0371, 0x0373, 2},
- {0x0377, 0x037b, 4},
- {0x037c, 0x037d, 1},
- {0x0390, 0x03ac, 28},
- {0x03ad, 0x03ce, 1},
- {0x03d0, 0x03d1, 1},
- {0x03d5, 0x03d7, 1},
- {0x03d9, 0x03ef, 2},
- {0x03f0, 0x03f3, 1},
- {0x03f5, 0x03fb, 3},
- {0x03fc, 0x0430, 52},
- {0x0431, 0x045f, 1},
- {0x0461, 0x0481, 2},
- {0x048b, 0x04bf, 2},
- {0x04c2, 0x04ce, 2},
- {0x04cf, 0x0527, 2},
- {0x0561, 0x0587, 1},
- {0x1d00, 0x1d2b, 1},
- {0x1d6b, 0x1d77, 1},
- {0x1d79, 0x1d9a, 1},
- {0x1e01, 0x1e95, 2},
- {0x1e96, 0x1e9d, 1},
- {0x1e9f, 0x1eff, 2},
- {0x1f00, 0x1f07, 1},
- {0x1f10, 0x1f15, 1},
- {0x1f20, 0x1f27, 1},
- {0x1f30, 0x1f37, 1},
- {0x1f40, 0x1f45, 1},
- {0x1f50, 0x1f57, 1},
- {0x1f60, 0x1f67, 1},
- {0x1f70, 0x1f7d, 1},
- {0x1f80, 0x1f87, 1},
- {0x1f90, 0x1f97, 1},
- {0x1fa0, 0x1fa7, 1},
- {0x1fb0, 0x1fb4, 1},
- {0x1fb6, 0x1fb7, 1},
- {0x1fbe, 0x1fc2, 4},
- {0x1fc3, 0x1fc4, 1},
- {0x1fc6, 0x1fc7, 1},
- {0x1fd0, 0x1fd3, 1},
- {0x1fd6, 0x1fd7, 1},
- {0x1fe0, 0x1fe7, 1},
- {0x1ff2, 0x1ff4, 1},
- {0x1ff6, 0x1ff7, 1},
- {0x210a, 0x210e, 4},
- {0x210f, 0x2113, 4},
- {0x212f, 0x2139, 5},
- {0x213c, 0x213d, 1},
- {0x2146, 0x2149, 1},
- {0x214e, 0x2184, 54},
- {0x2c30, 0x2c5e, 1},
- {0x2c61, 0x2c65, 4},
- {0x2c66, 0x2c6c, 2},
- {0x2c71, 0x2c73, 2},
- {0x2c74, 0x2c76, 2},
- {0x2c77, 0x2c7b, 1},
- {0x2c81, 0x2ce3, 2},
- {0x2ce4, 0x2cec, 8},
- {0x2cee, 0x2cf3, 5},
- {0x2d00, 0x2d25, 1},
- {0x2d27, 0x2d2d, 6},
- {0xa641, 0xa66d, 2},
- {0xa681, 0xa697, 2},
- {0xa723, 0xa72f, 2},
- {0xa730, 0xa731, 1},
- {0xa733, 0xa771, 2},
- {0xa772, 0xa778, 1},
- {0xa77a, 0xa77c, 2},
- {0xa77f, 0xa787, 2},
- {0xa78c, 0xa78e, 2},
- {0xa791, 0xa793, 2},
- {0xa7a1, 0xa7a9, 2},
- {0xa7fa, 0xfb00, 21254},
- {0xfb01, 0xfb06, 1},
- {0xfb13, 0xfb17, 1},
- {0xff41, 0xff5a, 1},
- },
- R32: []Range32{
- {0x10428, 0x1044f, 1},
- {0x1d41a, 0x1d433, 1},
- {0x1d44e, 0x1d454, 1},
- {0x1d456, 0x1d467, 1},
- {0x1d482, 0x1d49b, 1},
- {0x1d4b6, 0x1d4b9, 1},
- {0x1d4bb, 0x1d4bd, 2},
- {0x1d4be, 0x1d4c3, 1},
- {0x1d4c5, 0x1d4cf, 1},
- {0x1d4ea, 0x1d503, 1},
- {0x1d51e, 0x1d537, 1},
- {0x1d552, 0x1d56b, 1},
- {0x1d586, 0x1d59f, 1},
- {0x1d5ba, 0x1d5d3, 1},
- {0x1d5ee, 0x1d607, 1},
- {0x1d622, 0x1d63b, 1},
- {0x1d656, 0x1d66f, 1},
- {0x1d68a, 0x1d6a5, 1},
- {0x1d6c2, 0x1d6da, 1},
- {0x1d6dc, 0x1d6e1, 1},
- {0x1d6fc, 0x1d714, 1},
- {0x1d716, 0x1d71b, 1},
- {0x1d736, 0x1d74e, 1},
- {0x1d750, 0x1d755, 1},
- {0x1d770, 0x1d788, 1},
- {0x1d78a, 0x1d78f, 1},
- {0x1d7aa, 0x1d7c2, 1},
- {0x1d7c4, 0x1d7c9, 1},
- {0x1d7cb, 0x1d7cb, 1},
- },
- LatinOffset: 4,
-}
-
-var _Lm = &RangeTable{
- R16: []Range16{
- {0x02b0, 0x02c1, 1},
- {0x02c6, 0x02d1, 1},
- {0x02e0, 0x02e4, 1},
- {0x02ec, 0x02ee, 2},
- {0x0374, 0x037a, 6},
- {0x0559, 0x0640, 231},
- {0x06e5, 0x06e6, 1},
- {0x07f4, 0x07f5, 1},
- {0x07fa, 0x081a, 32},
- {0x0824, 0x0828, 4},
- {0x0971, 0x0e46, 1237},
- {0x0ec6, 0x10fc, 566},
- {0x17d7, 0x1843, 108},
- {0x1aa7, 0x1c78, 465},
- {0x1c79, 0x1c7d, 1},
- {0x1d2c, 0x1d6a, 1},
- {0x1d78, 0x1d9b, 35},
- {0x1d9c, 0x1dbf, 1},
- {0x2071, 0x207f, 14},
- {0x2090, 0x209c, 1},
- {0x2c7c, 0x2c7d, 1},
- {0x2d6f, 0x2e2f, 192},
- {0x3005, 0x3031, 44},
- {0x3032, 0x3035, 1},
- {0x303b, 0x309d, 98},
- {0x309e, 0x30fc, 94},
- {0x30fd, 0x30fe, 1},
- {0xa015, 0xa4f8, 1251},
- {0xa4f9, 0xa4fd, 1},
- {0xa60c, 0xa67f, 115},
- {0xa717, 0xa71f, 1},
- {0xa770, 0xa788, 24},
- {0xa7f8, 0xa7f9, 1},
- {0xa9cf, 0xaa70, 161},
- {0xaadd, 0xaaf3, 22},
- {0xaaf4, 0xff70, 21628},
- {0xff9e, 0xff9f, 1},
- },
- R32: []Range32{
- {0x16f93, 0x16f9f, 1},
- },
-}
-
-var _Lo = &RangeTable{
- R16: []Range16{
- {0x00aa, 0x00ba, 16},
- {0x01bb, 0x01c0, 5},
- {0x01c1, 0x01c3, 1},
- {0x0294, 0x05d0, 828},
- {0x05d1, 0x05ea, 1},
- {0x05f0, 0x05f2, 1},
- {0x0620, 0x063f, 1},
- {0x0641, 0x064a, 1},
- {0x066e, 0x066f, 1},
- {0x0671, 0x06d3, 1},
- {0x06d5, 0x06ee, 25},
- {0x06ef, 0x06fa, 11},
- {0x06fb, 0x06fc, 1},
- {0x06ff, 0x0710, 17},
- {0x0712, 0x072f, 1},
- {0x074d, 0x07a5, 1},
- {0x07b1, 0x07ca, 25},
- {0x07cb, 0x07ea, 1},
- {0x0800, 0x0815, 1},
- {0x0840, 0x0858, 1},
- {0x08a0, 0x08a2, 2},
- {0x08a3, 0x08ac, 1},
- {0x0904, 0x0939, 1},
- {0x093d, 0x0950, 19},
- {0x0958, 0x0961, 1},
- {0x0972, 0x0977, 1},
- {0x0979, 0x097f, 1},
- {0x0985, 0x098c, 1},
- {0x098f, 0x0990, 1},
- {0x0993, 0x09a8, 1},
- {0x09aa, 0x09b0, 1},
- {0x09b2, 0x09b6, 4},
- {0x09b7, 0x09b9, 1},
- {0x09bd, 0x09ce, 17},
- {0x09dc, 0x09dd, 1},
- {0x09df, 0x09e1, 1},
- {0x09f0, 0x09f1, 1},
- {0x0a05, 0x0a0a, 1},
- {0x0a0f, 0x0a10, 1},
- {0x0a13, 0x0a28, 1},
- {0x0a2a, 0x0a30, 1},
- {0x0a32, 0x0a33, 1},
- {0x0a35, 0x0a36, 1},
- {0x0a38, 0x0a39, 1},
- {0x0a59, 0x0a5c, 1},
- {0x0a5e, 0x0a72, 20},
- {0x0a73, 0x0a74, 1},
- {0x0a85, 0x0a8d, 1},
- {0x0a8f, 0x0a91, 1},
- {0x0a93, 0x0aa8, 1},
- {0x0aaa, 0x0ab0, 1},
- {0x0ab2, 0x0ab3, 1},
- {0x0ab5, 0x0ab9, 1},
- {0x0abd, 0x0ad0, 19},
- {0x0ae0, 0x0ae1, 1},
- {0x0b05, 0x0b0c, 1},
- {0x0b0f, 0x0b10, 1},
- {0x0b13, 0x0b28, 1},
- {0x0b2a, 0x0b30, 1},
- {0x0b32, 0x0b33, 1},
- {0x0b35, 0x0b39, 1},
- {0x0b3d, 0x0b5c, 31},
- {0x0b5d, 0x0b5f, 2},
- {0x0b60, 0x0b61, 1},
- {0x0b71, 0x0b83, 18},
- {0x0b85, 0x0b8a, 1},
- {0x0b8e, 0x0b90, 1},
- {0x0b92, 0x0b95, 1},
- {0x0b99, 0x0b9a, 1},
- {0x0b9c, 0x0b9e, 2},
- {0x0b9f, 0x0ba3, 4},
- {0x0ba4, 0x0ba8, 4},
- {0x0ba9, 0x0baa, 1},
- {0x0bae, 0x0bb9, 1},
- {0x0bd0, 0x0c05, 53},
- {0x0c06, 0x0c0c, 1},
- {0x0c0e, 0x0c10, 1},
- {0x0c12, 0x0c28, 1},
- {0x0c2a, 0x0c33, 1},
- {0x0c35, 0x0c39, 1},
- {0x0c3d, 0x0c58, 27},
- {0x0c59, 0x0c60, 7},
- {0x0c61, 0x0c85, 36},
- {0x0c86, 0x0c8c, 1},
- {0x0c8e, 0x0c90, 1},
- {0x0c92, 0x0ca8, 1},
- {0x0caa, 0x0cb3, 1},
- {0x0cb5, 0x0cb9, 1},
- {0x0cbd, 0x0cde, 33},
- {0x0ce0, 0x0ce1, 1},
- {0x0cf1, 0x0cf2, 1},
- {0x0d05, 0x0d0c, 1},
- {0x0d0e, 0x0d10, 1},
- {0x0d12, 0x0d3a, 1},
- {0x0d3d, 0x0d4e, 17},
- {0x0d60, 0x0d61, 1},
- {0x0d7a, 0x0d7f, 1},
- {0x0d85, 0x0d96, 1},
- {0x0d9a, 0x0db1, 1},
- {0x0db3, 0x0dbb, 1},
- {0x0dbd, 0x0dc0, 3},
- {0x0dc1, 0x0dc6, 1},
- {0x0e01, 0x0e30, 1},
- {0x0e32, 0x0e33, 1},
- {0x0e40, 0x0e45, 1},
- {0x0e81, 0x0e82, 1},
- {0x0e84, 0x0e87, 3},
- {0x0e88, 0x0e8a, 2},
- {0x0e8d, 0x0e94, 7},
- {0x0e95, 0x0e97, 1},
- {0x0e99, 0x0e9f, 1},
- {0x0ea1, 0x0ea3, 1},
- {0x0ea5, 0x0ea7, 2},
- {0x0eaa, 0x0eab, 1},
- {0x0ead, 0x0eb0, 1},
- {0x0eb2, 0x0eb3, 1},
- {0x0ebd, 0x0ec0, 3},
- {0x0ec1, 0x0ec4, 1},
- {0x0edc, 0x0edf, 1},
- {0x0f00, 0x0f40, 64},
- {0x0f41, 0x0f47, 1},
- {0x0f49, 0x0f6c, 1},
- {0x0f88, 0x0f8c, 1},
- {0x1000, 0x102a, 1},
- {0x103f, 0x1050, 17},
- {0x1051, 0x1055, 1},
- {0x105a, 0x105d, 1},
- {0x1061, 0x1065, 4},
- {0x1066, 0x106e, 8},
- {0x106f, 0x1070, 1},
- {0x1075, 0x1081, 1},
- {0x108e, 0x10d0, 66},
- {0x10d1, 0x10fa, 1},
- {0x10fd, 0x1248, 1},
- {0x124a, 0x124d, 1},
- {0x1250, 0x1256, 1},
- {0x1258, 0x125a, 2},
- {0x125b, 0x125d, 1},
- {0x1260, 0x1288, 1},
- {0x128a, 0x128d, 1},
- {0x1290, 0x12b0, 1},
- {0x12b2, 0x12b5, 1},
- {0x12b8, 0x12be, 1},
- {0x12c0, 0x12c2, 2},
- {0x12c3, 0x12c5, 1},
- {0x12c8, 0x12d6, 1},
- {0x12d8, 0x1310, 1},
- {0x1312, 0x1315, 1},
- {0x1318, 0x135a, 1},
- {0x1380, 0x138f, 1},
- {0x13a0, 0x13f4, 1},
- {0x1401, 0x166c, 1},
- {0x166f, 0x167f, 1},
- {0x1681, 0x169a, 1},
- {0x16a0, 0x16ea, 1},
- {0x1700, 0x170c, 1},
- {0x170e, 0x1711, 1},
- {0x1720, 0x1731, 1},
- {0x1740, 0x1751, 1},
- {0x1760, 0x176c, 1},
- {0x176e, 0x1770, 1},
- {0x1780, 0x17b3, 1},
- {0x17dc, 0x1820, 68},
- {0x1821, 0x1842, 1},
- {0x1844, 0x1877, 1},
- {0x1880, 0x18a8, 1},
- {0x18aa, 0x18b0, 6},
- {0x18b1, 0x18f5, 1},
- {0x1900, 0x191c, 1},
- {0x1950, 0x196d, 1},
- {0x1970, 0x1974, 1},
- {0x1980, 0x19ab, 1},
- {0x19c1, 0x19c7, 1},
- {0x1a00, 0x1a16, 1},
- {0x1a20, 0x1a54, 1},
- {0x1b05, 0x1b33, 1},
- {0x1b45, 0x1b4b, 1},
- {0x1b83, 0x1ba0, 1},
- {0x1bae, 0x1baf, 1},
- {0x1bba, 0x1be5, 1},
- {0x1c00, 0x1c23, 1},
- {0x1c4d, 0x1c4f, 1},
- {0x1c5a, 0x1c77, 1},
- {0x1ce9, 0x1cec, 1},
- {0x1cee, 0x1cf1, 1},
- {0x1cf5, 0x1cf6, 1},
- {0x2135, 0x2138, 1},
- {0x2d30, 0x2d67, 1},
- {0x2d80, 0x2d96, 1},
- {0x2da0, 0x2da6, 1},
- {0x2da8, 0x2dae, 1},
- {0x2db0, 0x2db6, 1},
- {0x2db8, 0x2dbe, 1},
- {0x2dc0, 0x2dc6, 1},
- {0x2dc8, 0x2dce, 1},
- {0x2dd0, 0x2dd6, 1},
- {0x2dd8, 0x2dde, 1},
- {0x3006, 0x303c, 54},
- {0x3041, 0x3096, 1},
- {0x309f, 0x30a1, 2},
- {0x30a2, 0x30fa, 1},
- {0x30ff, 0x3105, 6},
- {0x3106, 0x312d, 1},
- {0x3131, 0x318e, 1},
- {0x31a0, 0x31ba, 1},
- {0x31f0, 0x31ff, 1},
- {0x3400, 0x4db5, 1},
- {0x4e00, 0x9fcc, 1},
- {0xa000, 0xa014, 1},
- {0xa016, 0xa48c, 1},
- {0xa4d0, 0xa4f7, 1},
- {0xa500, 0xa60b, 1},
- {0xa610, 0xa61f, 1},
- {0xa62a, 0xa62b, 1},
- {0xa66e, 0xa6a0, 50},
- {0xa6a1, 0xa6e5, 1},
- {0xa7fb, 0xa801, 1},
- {0xa803, 0xa805, 1},
- {0xa807, 0xa80a, 1},
- {0xa80c, 0xa822, 1},
- {0xa840, 0xa873, 1},
- {0xa882, 0xa8b3, 1},
- {0xa8f2, 0xa8f7, 1},
- {0xa8fb, 0xa90a, 15},
- {0xa90b, 0xa925, 1},
- {0xa930, 0xa946, 1},
- {0xa960, 0xa97c, 1},
- {0xa984, 0xa9b2, 1},
- {0xaa00, 0xaa28, 1},
- {0xaa40, 0xaa42, 1},
- {0xaa44, 0xaa4b, 1},
- {0xaa60, 0xaa6f, 1},
- {0xaa71, 0xaa76, 1},
- {0xaa7a, 0xaa80, 6},
- {0xaa81, 0xaaaf, 1},
- {0xaab1, 0xaab5, 4},
- {0xaab6, 0xaab9, 3},
- {0xaaba, 0xaabd, 1},
- {0xaac0, 0xaac2, 2},
- {0xaadb, 0xaadc, 1},
- {0xaae0, 0xaaea, 1},
- {0xaaf2, 0xab01, 15},
- {0xab02, 0xab06, 1},
- {0xab09, 0xab0e, 1},
- {0xab11, 0xab16, 1},
- {0xab20, 0xab26, 1},
- {0xab28, 0xab2e, 1},
- {0xabc0, 0xabe2, 1},
- {0xac00, 0xd7a3, 1},
- {0xd7b0, 0xd7c6, 1},
- {0xd7cb, 0xd7fb, 1},
- {0xf900, 0xfa6d, 1},
- {0xfa70, 0xfad9, 1},
- {0xfb1d, 0xfb1f, 2},
- {0xfb20, 0xfb28, 1},
- {0xfb2a, 0xfb36, 1},
- {0xfb38, 0xfb3c, 1},
- {0xfb3e, 0xfb40, 2},
- {0xfb41, 0xfb43, 2},
- {0xfb44, 0xfb46, 2},
- {0xfb47, 0xfbb1, 1},
- {0xfbd3, 0xfd3d, 1},
- {0xfd50, 0xfd8f, 1},
- {0xfd92, 0xfdc7, 1},
- {0xfdf0, 0xfdfb, 1},
- {0xfe70, 0xfe74, 1},
- {0xfe76, 0xfefc, 1},
- {0xff66, 0xff6f, 1},
- {0xff71, 0xff9d, 1},
- {0xffa0, 0xffbe, 1},
- {0xffc2, 0xffc7, 1},
- {0xffca, 0xffcf, 1},
- {0xffd2, 0xffd7, 1},
- {0xffda, 0xffdc, 1},
- },
- R32: []Range32{
- {0x10000, 0x1000b, 1},
- {0x1000d, 0x10026, 1},
- {0x10028, 0x1003a, 1},
- {0x1003c, 0x1003d, 1},
- {0x1003f, 0x1004d, 1},
- {0x10050, 0x1005d, 1},
- {0x10080, 0x100fa, 1},
- {0x10280, 0x1029c, 1},
- {0x102a0, 0x102d0, 1},
- {0x10300, 0x1031e, 1},
- {0x10330, 0x10340, 1},
- {0x10342, 0x10349, 1},
- {0x10380, 0x1039d, 1},
- {0x103a0, 0x103c3, 1},
- {0x103c8, 0x103cf, 1},
- {0x10450, 0x1049d, 1},
- {0x10800, 0x10805, 1},
- {0x10808, 0x1080a, 2},
- {0x1080b, 0x10835, 1},
- {0x10837, 0x10838, 1},
- {0x1083c, 0x1083f, 3},
- {0x10840, 0x10855, 1},
- {0x10900, 0x10915, 1},
- {0x10920, 0x10939, 1},
- {0x10980, 0x109b7, 1},
- {0x109be, 0x109bf, 1},
- {0x10a00, 0x10a10, 16},
- {0x10a11, 0x10a13, 1},
- {0x10a15, 0x10a17, 1},
- {0x10a19, 0x10a33, 1},
- {0x10a60, 0x10a7c, 1},
- {0x10b00, 0x10b35, 1},
- {0x10b40, 0x10b55, 1},
- {0x10b60, 0x10b72, 1},
- {0x10c00, 0x10c48, 1},
- {0x11003, 0x11037, 1},
- {0x11083, 0x110af, 1},
- {0x110d0, 0x110e8, 1},
- {0x11103, 0x11126, 1},
- {0x11183, 0x111b2, 1},
- {0x111c1, 0x111c4, 1},
- {0x11680, 0x116aa, 1},
- {0x12000, 0x1236e, 1},
- {0x13000, 0x1342e, 1},
- {0x16800, 0x16a38, 1},
- {0x16f00, 0x16f44, 1},
- {0x16f50, 0x1b000, 16560},
- {0x1b001, 0x1ee00, 15871},
- {0x1ee01, 0x1ee03, 1},
- {0x1ee05, 0x1ee1f, 1},
- {0x1ee21, 0x1ee22, 1},
- {0x1ee24, 0x1ee27, 3},
- {0x1ee29, 0x1ee32, 1},
- {0x1ee34, 0x1ee37, 1},
- {0x1ee39, 0x1ee3b, 2},
- {0x1ee42, 0x1ee47, 5},
- {0x1ee49, 0x1ee4d, 2},
- {0x1ee4e, 0x1ee4f, 1},
- {0x1ee51, 0x1ee52, 1},
- {0x1ee54, 0x1ee57, 3},
- {0x1ee59, 0x1ee61, 2},
- {0x1ee62, 0x1ee64, 2},
- {0x1ee67, 0x1ee6a, 1},
- {0x1ee6c, 0x1ee72, 1},
- {0x1ee74, 0x1ee77, 1},
- {0x1ee79, 0x1ee7c, 1},
- {0x1ee7e, 0x1ee80, 2},
- {0x1ee81, 0x1ee89, 1},
- {0x1ee8b, 0x1ee9b, 1},
- {0x1eea1, 0x1eea3, 1},
- {0x1eea5, 0x1eea9, 1},
- {0x1eeab, 0x1eebb, 1},
- {0x20000, 0x2a6d6, 1},
- {0x2a700, 0x2b734, 1},
- {0x2b740, 0x2b81d, 1},
- {0x2f800, 0x2fa1d, 1},
- },
- LatinOffset: 1,
-}
-
-var _Lt = &RangeTable{
- R16: []Range16{
- {0x01c5, 0x01cb, 3},
- {0x01f2, 0x1f88, 7574},
- {0x1f89, 0x1f8f, 1},
- {0x1f98, 0x1f9f, 1},
- {0x1fa8, 0x1faf, 1},
- {0x1fbc, 0x1fcc, 16},
- {0x1ffc, 0x1ffc, 1},
- },
-}
-
-var _Lu = &RangeTable{
- R16: []Range16{
- {0x0041, 0x005a, 1},
- {0x00c0, 0x00d6, 1},
- {0x00d8, 0x00de, 1},
- {0x0100, 0x0136, 2},
- {0x0139, 0x0147, 2},
- {0x014a, 0x0178, 2},
- {0x0179, 0x017d, 2},
- {0x0181, 0x0182, 1},
- {0x0184, 0x0186, 2},
- {0x0187, 0x0189, 2},
- {0x018a, 0x018b, 1},
- {0x018e, 0x0191, 1},
- {0x0193, 0x0194, 1},
- {0x0196, 0x0198, 1},
- {0x019c, 0x019d, 1},
- {0x019f, 0x01a0, 1},
- {0x01a2, 0x01a6, 2},
- {0x01a7, 0x01a9, 2},
- {0x01ac, 0x01ae, 2},
- {0x01af, 0x01b1, 2},
- {0x01b2, 0x01b3, 1},
- {0x01b5, 0x01b7, 2},
- {0x01b8, 0x01bc, 4},
- {0x01c4, 0x01cd, 3},
- {0x01cf, 0x01db, 2},
- {0x01de, 0x01ee, 2},
- {0x01f1, 0x01f4, 3},
- {0x01f6, 0x01f8, 1},
- {0x01fa, 0x0232, 2},
- {0x023a, 0x023b, 1},
- {0x023d, 0x023e, 1},
- {0x0241, 0x0243, 2},
- {0x0244, 0x0246, 1},
- {0x0248, 0x024e, 2},
- {0x0370, 0x0372, 2},
- {0x0376, 0x0386, 16},
- {0x0388, 0x038a, 1},
- {0x038c, 0x038e, 2},
- {0x038f, 0x0391, 2},
- {0x0392, 0x03a1, 1},
- {0x03a3, 0x03ab, 1},
- {0x03cf, 0x03d2, 3},
- {0x03d3, 0x03d4, 1},
- {0x03d8, 0x03ee, 2},
- {0x03f4, 0x03f7, 3},
- {0x03f9, 0x03fa, 1},
- {0x03fd, 0x042f, 1},
- {0x0460, 0x0480, 2},
- {0x048a, 0x04c0, 2},
- {0x04c1, 0x04cd, 2},
- {0x04d0, 0x0526, 2},
- {0x0531, 0x0556, 1},
- {0x10a0, 0x10c5, 1},
- {0x10c7, 0x10cd, 6},
- {0x1e00, 0x1e94, 2},
- {0x1e9e, 0x1efe, 2},
- {0x1f08, 0x1f0f, 1},
- {0x1f18, 0x1f1d, 1},
- {0x1f28, 0x1f2f, 1},
- {0x1f38, 0x1f3f, 1},
- {0x1f48, 0x1f4d, 1},
- {0x1f59, 0x1f5f, 2},
- {0x1f68, 0x1f6f, 1},
- {0x1fb8, 0x1fbb, 1},
- {0x1fc8, 0x1fcb, 1},
- {0x1fd8, 0x1fdb, 1},
- {0x1fe8, 0x1fec, 1},
- {0x1ff8, 0x1ffb, 1},
- {0x2102, 0x2107, 5},
- {0x210b, 0x210d, 1},
- {0x2110, 0x2112, 1},
- {0x2115, 0x2119, 4},
- {0x211a, 0x211d, 1},
- {0x2124, 0x212a, 2},
- {0x212b, 0x212d, 1},
- {0x2130, 0x2133, 1},
- {0x213e, 0x213f, 1},
- {0x2145, 0x2183, 62},
- {0x2c00, 0x2c2e, 1},
- {0x2c60, 0x2c62, 2},
- {0x2c63, 0x2c64, 1},
- {0x2c67, 0x2c6d, 2},
- {0x2c6e, 0x2c70, 1},
- {0x2c72, 0x2c75, 3},
- {0x2c7e, 0x2c80, 1},
- {0x2c82, 0x2ce2, 2},
- {0x2ceb, 0x2ced, 2},
- {0x2cf2, 0xa640, 31054},
- {0xa642, 0xa66c, 2},
- {0xa680, 0xa696, 2},
- {0xa722, 0xa72e, 2},
- {0xa732, 0xa76e, 2},
- {0xa779, 0xa77d, 2},
- {0xa77e, 0xa786, 2},
- {0xa78b, 0xa78d, 2},
- {0xa790, 0xa792, 2},
- {0xa7a0, 0xa7aa, 2},
- {0xff21, 0xff3a, 1},
- },
- R32: []Range32{
- {0x10400, 0x10427, 1},
- {0x1d400, 0x1d419, 1},
- {0x1d434, 0x1d44d, 1},
- {0x1d468, 0x1d481, 1},
- {0x1d49c, 0x1d49e, 2},
- {0x1d49f, 0x1d4a5, 3},
- {0x1d4a6, 0x1d4a9, 3},
- {0x1d4aa, 0x1d4ac, 1},
- {0x1d4ae, 0x1d4b5, 1},
- {0x1d4d0, 0x1d4e9, 1},
- {0x1d504, 0x1d505, 1},
- {0x1d507, 0x1d50a, 1},
- {0x1d50d, 0x1d514, 1},
- {0x1d516, 0x1d51c, 1},
- {0x1d538, 0x1d539, 1},
- {0x1d53b, 0x1d53e, 1},
- {0x1d540, 0x1d544, 1},
- {0x1d546, 0x1d54a, 4},
- {0x1d54b, 0x1d550, 1},
- {0x1d56c, 0x1d585, 1},
- {0x1d5a0, 0x1d5b9, 1},
- {0x1d5d4, 0x1d5ed, 1},
- {0x1d608, 0x1d621, 1},
- {0x1d63c, 0x1d655, 1},
- {0x1d670, 0x1d689, 1},
- {0x1d6a8, 0x1d6c0, 1},
- {0x1d6e2, 0x1d6fa, 1},
- {0x1d71c, 0x1d734, 1},
- {0x1d756, 0x1d76e, 1},
- {0x1d790, 0x1d7a8, 1},
- {0x1d7ca, 0x1d7ca, 1},
- },
- LatinOffset: 3,
-}
-
-var _M = &RangeTable{
- R16: []Range16{
- {0x0300, 0x036f, 1},
- {0x0483, 0x0489, 1},
- {0x0591, 0x05bd, 1},
- {0x05bf, 0x05c1, 2},
- {0x05c2, 0x05c4, 2},
- {0x05c5, 0x05c7, 2},
- {0x0610, 0x061a, 1},
- {0x064b, 0x065f, 1},
- {0x0670, 0x06d6, 102},
- {0x06d7, 0x06dc, 1},
- {0x06df, 0x06e4, 1},
- {0x06e7, 0x06e8, 1},
- {0x06ea, 0x06ed, 1},
- {0x0711, 0x0730, 31},
- {0x0731, 0x074a, 1},
- {0x07a6, 0x07b0, 1},
- {0x07eb, 0x07f3, 1},
- {0x0816, 0x0819, 1},
- {0x081b, 0x0823, 1},
- {0x0825, 0x0827, 1},
- {0x0829, 0x082d, 1},
- {0x0859, 0x085b, 1},
- {0x08e4, 0x08fe, 1},
- {0x0900, 0x0903, 1},
- {0x093a, 0x093c, 1},
- {0x093e, 0x094f, 1},
- {0x0951, 0x0957, 1},
- {0x0962, 0x0963, 1},
- {0x0981, 0x0983, 1},
- {0x09bc, 0x09be, 2},
- {0x09bf, 0x09c4, 1},
- {0x09c7, 0x09c8, 1},
- {0x09cb, 0x09cd, 1},
- {0x09d7, 0x09e2, 11},
- {0x09e3, 0x0a01, 30},
- {0x0a02, 0x0a03, 1},
- {0x0a3c, 0x0a3e, 2},
- {0x0a3f, 0x0a42, 1},
- {0x0a47, 0x0a48, 1},
- {0x0a4b, 0x0a4d, 1},
- {0x0a51, 0x0a70, 31},
- {0x0a71, 0x0a75, 4},
- {0x0a81, 0x0a83, 1},
- {0x0abc, 0x0abe, 2},
- {0x0abf, 0x0ac5, 1},
- {0x0ac7, 0x0ac9, 1},
- {0x0acb, 0x0acd, 1},
- {0x0ae2, 0x0ae3, 1},
- {0x0b01, 0x0b03, 1},
- {0x0b3c, 0x0b3e, 2},
- {0x0b3f, 0x0b44, 1},
- {0x0b47, 0x0b48, 1},
- {0x0b4b, 0x0b4d, 1},
- {0x0b56, 0x0b57, 1},
- {0x0b62, 0x0b63, 1},
- {0x0b82, 0x0bbe, 60},
- {0x0bbf, 0x0bc2, 1},
- {0x0bc6, 0x0bc8, 1},
- {0x0bca, 0x0bcd, 1},
- {0x0bd7, 0x0c01, 42},
- {0x0c02, 0x0c03, 1},
- {0x0c3e, 0x0c44, 1},
- {0x0c46, 0x0c48, 1},
- {0x0c4a, 0x0c4d, 1},
- {0x0c55, 0x0c56, 1},
- {0x0c62, 0x0c63, 1},
- {0x0c82, 0x0c83, 1},
- {0x0cbc, 0x0cbe, 2},
- {0x0cbf, 0x0cc4, 1},
- {0x0cc6, 0x0cc8, 1},
- {0x0cca, 0x0ccd, 1},
- {0x0cd5, 0x0cd6, 1},
- {0x0ce2, 0x0ce3, 1},
- {0x0d02, 0x0d03, 1},
- {0x0d3e, 0x0d44, 1},
- {0x0d46, 0x0d48, 1},
- {0x0d4a, 0x0d4d, 1},
- {0x0d57, 0x0d62, 11},
- {0x0d63, 0x0d82, 31},
- {0x0d83, 0x0dca, 71},
- {0x0dcf, 0x0dd4, 1},
- {0x0dd6, 0x0dd8, 2},
- {0x0dd9, 0x0ddf, 1},
- {0x0df2, 0x0df3, 1},
- {0x0e31, 0x0e34, 3},
- {0x0e35, 0x0e3a, 1},
- {0x0e47, 0x0e4e, 1},
- {0x0eb1, 0x0eb4, 3},
- {0x0eb5, 0x0eb9, 1},
- {0x0ebb, 0x0ebc, 1},
- {0x0ec8, 0x0ecd, 1},
- {0x0f18, 0x0f19, 1},
- {0x0f35, 0x0f39, 2},
- {0x0f3e, 0x0f3f, 1},
- {0x0f71, 0x0f84, 1},
- {0x0f86, 0x0f87, 1},
- {0x0f8d, 0x0f97, 1},
- {0x0f99, 0x0fbc, 1},
- {0x0fc6, 0x102b, 101},
- {0x102c, 0x103e, 1},
- {0x1056, 0x1059, 1},
- {0x105e, 0x1060, 1},
- {0x1062, 0x1064, 1},
- {0x1067, 0x106d, 1},
- {0x1071, 0x1074, 1},
- {0x1082, 0x108d, 1},
- {0x108f, 0x109a, 11},
- {0x109b, 0x109d, 1},
- {0x135d, 0x135f, 1},
- {0x1712, 0x1714, 1},
- {0x1732, 0x1734, 1},
- {0x1752, 0x1753, 1},
- {0x1772, 0x1773, 1},
- {0x17b4, 0x17d3, 1},
- {0x17dd, 0x180b, 46},
- {0x180c, 0x180d, 1},
- {0x18a9, 0x1920, 119},
- {0x1921, 0x192b, 1},
- {0x1930, 0x193b, 1},
- {0x19b0, 0x19c0, 1},
- {0x19c8, 0x19c9, 1},
- {0x1a17, 0x1a1b, 1},
- {0x1a55, 0x1a5e, 1},
- {0x1a60, 0x1a7c, 1},
- {0x1a7f, 0x1b00, 129},
- {0x1b01, 0x1b04, 1},
- {0x1b34, 0x1b44, 1},
- {0x1b6b, 0x1b73, 1},
- {0x1b80, 0x1b82, 1},
- {0x1ba1, 0x1bad, 1},
- {0x1be6, 0x1bf3, 1},
- {0x1c24, 0x1c37, 1},
- {0x1cd0, 0x1cd2, 1},
- {0x1cd4, 0x1ce8, 1},
- {0x1ced, 0x1cf2, 5},
- {0x1cf3, 0x1cf4, 1},
- {0x1dc0, 0x1de6, 1},
- {0x1dfc, 0x1dff, 1},
- {0x20d0, 0x20f0, 1},
- {0x2cef, 0x2cf1, 1},
- {0x2d7f, 0x2de0, 97},
- {0x2de1, 0x2dff, 1},
- {0x302a, 0x302f, 1},
- {0x3099, 0x309a, 1},
- {0xa66f, 0xa672, 1},
- {0xa674, 0xa67d, 1},
- {0xa69f, 0xa6f0, 81},
- {0xa6f1, 0xa802, 273},
- {0xa806, 0xa80b, 5},
- {0xa823, 0xa827, 1},
- {0xa880, 0xa881, 1},
- {0xa8b4, 0xa8c4, 1},
- {0xa8e0, 0xa8f1, 1},
- {0xa926, 0xa92d, 1},
- {0xa947, 0xa953, 1},
- {0xa980, 0xa983, 1},
- {0xa9b3, 0xa9c0, 1},
- {0xaa29, 0xaa36, 1},
- {0xaa43, 0xaa4c, 9},
- {0xaa4d, 0xaa7b, 46},
- {0xaab0, 0xaab2, 2},
- {0xaab3, 0xaab4, 1},
- {0xaab7, 0xaab8, 1},
- {0xaabe, 0xaabf, 1},
- {0xaac1, 0xaaeb, 42},
- {0xaaec, 0xaaef, 1},
- {0xaaf5, 0xaaf6, 1},
- {0xabe3, 0xabea, 1},
- {0xabec, 0xabed, 1},
- {0xfb1e, 0xfe00, 738},
- {0xfe01, 0xfe0f, 1},
- {0xfe20, 0xfe26, 1},
- },
- R32: []Range32{
- {0x101fd, 0x10a01, 2052},
- {0x10a02, 0x10a03, 1},
- {0x10a05, 0x10a06, 1},
- {0x10a0c, 0x10a0f, 1},
- {0x10a38, 0x10a3a, 1},
- {0x10a3f, 0x11000, 1473},
- {0x11001, 0x11002, 1},
- {0x11038, 0x11046, 1},
- {0x11080, 0x11082, 1},
- {0x110b0, 0x110ba, 1},
- {0x11100, 0x11102, 1},
- {0x11127, 0x11134, 1},
- {0x11180, 0x11182, 1},
- {0x111b3, 0x111c0, 1},
- {0x116ab, 0x116b7, 1},
- {0x16f51, 0x16f7e, 1},
- {0x16f8f, 0x16f92, 1},
- {0x1d165, 0x1d169, 1},
- {0x1d16d, 0x1d172, 1},
- {0x1d17b, 0x1d182, 1},
- {0x1d185, 0x1d18b, 1},
- {0x1d1aa, 0x1d1ad, 1},
- {0x1d242, 0x1d244, 1},
- {0xe0100, 0xe01ef, 1},
- },
-}
-
-var _Mc = &RangeTable{
- R16: []Range16{
- {0x0903, 0x093b, 56},
- {0x093e, 0x0940, 1},
- {0x0949, 0x094c, 1},
- {0x094e, 0x094f, 1},
- {0x0982, 0x0983, 1},
- {0x09be, 0x09c0, 1},
- {0x09c7, 0x09c8, 1},
- {0x09cb, 0x09cc, 1},
- {0x09d7, 0x0a03, 44},
- {0x0a3e, 0x0a40, 1},
- {0x0a83, 0x0abe, 59},
- {0x0abf, 0x0ac0, 1},
- {0x0ac9, 0x0acb, 2},
- {0x0acc, 0x0b02, 54},
- {0x0b03, 0x0b3e, 59},
- {0x0b40, 0x0b47, 7},
- {0x0b48, 0x0b4b, 3},
- {0x0b4c, 0x0b57, 11},
- {0x0bbe, 0x0bbf, 1},
- {0x0bc1, 0x0bc2, 1},
- {0x0bc6, 0x0bc8, 1},
- {0x0bca, 0x0bcc, 1},
- {0x0bd7, 0x0c01, 42},
- {0x0c02, 0x0c03, 1},
- {0x0c41, 0x0c44, 1},
- {0x0c82, 0x0c83, 1},
- {0x0cbe, 0x0cc0, 2},
- {0x0cc1, 0x0cc4, 1},
- {0x0cc7, 0x0cc8, 1},
- {0x0cca, 0x0ccb, 1},
- {0x0cd5, 0x0cd6, 1},
- {0x0d02, 0x0d03, 1},
- {0x0d3e, 0x0d40, 1},
- {0x0d46, 0x0d48, 1},
- {0x0d4a, 0x0d4c, 1},
- {0x0d57, 0x0d82, 43},
- {0x0d83, 0x0dcf, 76},
- {0x0dd0, 0x0dd1, 1},
- {0x0dd8, 0x0ddf, 1},
- {0x0df2, 0x0df3, 1},
- {0x0f3e, 0x0f3f, 1},
- {0x0f7f, 0x102b, 172},
- {0x102c, 0x1031, 5},
- {0x1038, 0x103b, 3},
- {0x103c, 0x1056, 26},
- {0x1057, 0x1062, 11},
- {0x1063, 0x1064, 1},
- {0x1067, 0x106d, 1},
- {0x1083, 0x1084, 1},
- {0x1087, 0x108c, 1},
- {0x108f, 0x109a, 11},
- {0x109b, 0x109c, 1},
- {0x17b6, 0x17be, 8},
- {0x17bf, 0x17c5, 1},
- {0x17c7, 0x17c8, 1},
- {0x1923, 0x1926, 1},
- {0x1929, 0x192b, 1},
- {0x1930, 0x1931, 1},
- {0x1933, 0x1938, 1},
- {0x19b0, 0x19c0, 1},
- {0x19c8, 0x19c9, 1},
- {0x1a19, 0x1a1a, 1},
- {0x1a55, 0x1a57, 2},
- {0x1a61, 0x1a63, 2},
- {0x1a64, 0x1a6d, 9},
- {0x1a6e, 0x1a72, 1},
- {0x1b04, 0x1b35, 49},
- {0x1b3b, 0x1b3d, 2},
- {0x1b3e, 0x1b41, 1},
- {0x1b43, 0x1b44, 1},
- {0x1b82, 0x1ba1, 31},
- {0x1ba6, 0x1ba7, 1},
- {0x1baa, 0x1bac, 2},
- {0x1bad, 0x1be7, 58},
- {0x1bea, 0x1bec, 1},
- {0x1bee, 0x1bf2, 4},
- {0x1bf3, 0x1c24, 49},
- {0x1c25, 0x1c2b, 1},
- {0x1c34, 0x1c35, 1},
- {0x1ce1, 0x1cf2, 17},
- {0x1cf3, 0x302e, 4923},
- {0x302f, 0xa823, 30708},
- {0xa824, 0xa827, 3},
- {0xa880, 0xa881, 1},
- {0xa8b4, 0xa8c3, 1},
- {0xa952, 0xa953, 1},
- {0xa983, 0xa9b4, 49},
- {0xa9b5, 0xa9ba, 5},
- {0xa9bb, 0xa9bd, 2},
- {0xa9be, 0xa9c0, 1},
- {0xaa2f, 0xaa30, 1},
- {0xaa33, 0xaa34, 1},
- {0xaa4d, 0xaa7b, 46},
- {0xaaeb, 0xaaee, 3},
- {0xaaef, 0xaaf5, 6},
- {0xabe3, 0xabe4, 1},
- {0xabe6, 0xabe7, 1},
- {0xabe9, 0xabea, 1},
- {0xabec, 0xabec, 1},
- },
- R32: []Range32{
- {0x11000, 0x11000, 1},
- {0x11002, 0x11082, 128},
- {0x110b0, 0x110b2, 1},
- {0x110b7, 0x110b8, 1},
- {0x1112c, 0x11182, 86},
- {0x111b3, 0x111b5, 1},
- {0x111bf, 0x111c0, 1},
- {0x116ac, 0x116ae, 2},
- {0x116af, 0x116b6, 7},
- {0x16f51, 0x16f7e, 1},
- {0x1d165, 0x1d166, 1},
- {0x1d16d, 0x1d172, 1},
- },
-}
-
-var _Me = &RangeTable{
- R16: []Range16{
- {0x0488, 0x0489, 1},
- {0x20dd, 0x20e0, 1},
- {0x20e2, 0x20e4, 1},
- {0xa670, 0xa672, 1},
- },
-}
-
-var _Mn = &RangeTable{
- R16: []Range16{
- {0x0300, 0x036f, 1},
- {0x0483, 0x0487, 1},
- {0x0591, 0x05bd, 1},
- {0x05bf, 0x05c1, 2},
- {0x05c2, 0x05c4, 2},
- {0x05c5, 0x05c7, 2},
- {0x0610, 0x061a, 1},
- {0x064b, 0x065f, 1},
- {0x0670, 0x06d6, 102},
- {0x06d7, 0x06dc, 1},
- {0x06df, 0x06e4, 1},
- {0x06e7, 0x06e8, 1},
- {0x06ea, 0x06ed, 1},
- {0x0711, 0x0730, 31},
- {0x0731, 0x074a, 1},
- {0x07a6, 0x07b0, 1},
- {0x07eb, 0x07f3, 1},
- {0x0816, 0x0819, 1},
- {0x081b, 0x0823, 1},
- {0x0825, 0x0827, 1},
- {0x0829, 0x082d, 1},
- {0x0859, 0x085b, 1},
- {0x08e4, 0x08fe, 1},
- {0x0900, 0x0902, 1},
- {0x093a, 0x093c, 2},
- {0x0941, 0x0948, 1},
- {0x094d, 0x0951, 4},
- {0x0952, 0x0957, 1},
- {0x0962, 0x0963, 1},
- {0x0981, 0x09bc, 59},
- {0x09c1, 0x09c4, 1},
- {0x09cd, 0x09e2, 21},
- {0x09e3, 0x0a01, 30},
- {0x0a02, 0x0a3c, 58},
- {0x0a41, 0x0a42, 1},
- {0x0a47, 0x0a48, 1},
- {0x0a4b, 0x0a4d, 1},
- {0x0a51, 0x0a70, 31},
- {0x0a71, 0x0a75, 4},
- {0x0a81, 0x0a82, 1},
- {0x0abc, 0x0ac1, 5},
- {0x0ac2, 0x0ac5, 1},
- {0x0ac7, 0x0ac8, 1},
- {0x0acd, 0x0ae2, 21},
- {0x0ae3, 0x0b01, 30},
- {0x0b3c, 0x0b3f, 3},
- {0x0b41, 0x0b44, 1},
- {0x0b4d, 0x0b56, 9},
- {0x0b62, 0x0b63, 1},
- {0x0b82, 0x0bc0, 62},
- {0x0bcd, 0x0c3e, 113},
- {0x0c3f, 0x0c40, 1},
- {0x0c46, 0x0c48, 1},
- {0x0c4a, 0x0c4d, 1},
- {0x0c55, 0x0c56, 1},
- {0x0c62, 0x0c63, 1},
- {0x0cbc, 0x0cbf, 3},
- {0x0cc6, 0x0ccc, 6},
- {0x0ccd, 0x0ce2, 21},
- {0x0ce3, 0x0d41, 94},
- {0x0d42, 0x0d44, 1},
- {0x0d4d, 0x0d62, 21},
- {0x0d63, 0x0dca, 103},
- {0x0dd2, 0x0dd4, 1},
- {0x0dd6, 0x0e31, 91},
- {0x0e34, 0x0e3a, 1},
- {0x0e47, 0x0e4e, 1},
- {0x0eb1, 0x0eb4, 3},
- {0x0eb5, 0x0eb9, 1},
- {0x0ebb, 0x0ebc, 1},
- {0x0ec8, 0x0ecd, 1},
- {0x0f18, 0x0f19, 1},
- {0x0f35, 0x0f39, 2},
- {0x0f71, 0x0f7e, 1},
- {0x0f80, 0x0f84, 1},
- {0x0f86, 0x0f87, 1},
- {0x0f8d, 0x0f97, 1},
- {0x0f99, 0x0fbc, 1},
- {0x0fc6, 0x102d, 103},
- {0x102e, 0x1030, 1},
- {0x1032, 0x1037, 1},
- {0x1039, 0x103a, 1},
- {0x103d, 0x103e, 1},
- {0x1058, 0x1059, 1},
- {0x105e, 0x1060, 1},
- {0x1071, 0x1074, 1},
- {0x1082, 0x1085, 3},
- {0x1086, 0x108d, 7},
- {0x109d, 0x135d, 704},
- {0x135e, 0x135f, 1},
- {0x1712, 0x1714, 1},
- {0x1732, 0x1734, 1},
- {0x1752, 0x1753, 1},
- {0x1772, 0x1773, 1},
- {0x17b4, 0x17b5, 1},
- {0x17b7, 0x17bd, 1},
- {0x17c6, 0x17c9, 3},
- {0x17ca, 0x17d3, 1},
- {0x17dd, 0x180b, 46},
- {0x180c, 0x180d, 1},
- {0x18a9, 0x1920, 119},
- {0x1921, 0x1922, 1},
- {0x1927, 0x1928, 1},
- {0x1932, 0x1939, 7},
- {0x193a, 0x193b, 1},
- {0x1a17, 0x1a18, 1},
- {0x1a1b, 0x1a56, 59},
- {0x1a58, 0x1a5e, 1},
- {0x1a60, 0x1a62, 2},
- {0x1a65, 0x1a6c, 1},
- {0x1a73, 0x1a7c, 1},
- {0x1a7f, 0x1b00, 129},
- {0x1b01, 0x1b03, 1},
- {0x1b34, 0x1b36, 2},
- {0x1b37, 0x1b3a, 1},
- {0x1b3c, 0x1b42, 6},
- {0x1b6b, 0x1b73, 1},
- {0x1b80, 0x1b81, 1},
- {0x1ba2, 0x1ba5, 1},
- {0x1ba8, 0x1ba9, 1},
- {0x1bab, 0x1be6, 59},
- {0x1be8, 0x1be9, 1},
- {0x1bed, 0x1bef, 2},
- {0x1bf0, 0x1bf1, 1},
- {0x1c2c, 0x1c33, 1},
- {0x1c36, 0x1c37, 1},
- {0x1cd0, 0x1cd2, 1},
- {0x1cd4, 0x1ce0, 1},
- {0x1ce2, 0x1ce8, 1},
- {0x1ced, 0x1cf4, 7},
- {0x1dc0, 0x1de6, 1},
- {0x1dfc, 0x1dff, 1},
- {0x20d0, 0x20dc, 1},
- {0x20e1, 0x20e5, 4},
- {0x20e6, 0x20f0, 1},
- {0x2cef, 0x2cf1, 1},
- {0x2d7f, 0x2de0, 97},
- {0x2de1, 0x2dff, 1},
- {0x302a, 0x302d, 1},
- {0x3099, 0x309a, 1},
- {0xa66f, 0xa674, 5},
- {0xa675, 0xa67d, 1},
- {0xa69f, 0xa6f0, 81},
- {0xa6f1, 0xa802, 273},
- {0xa806, 0xa80b, 5},
- {0xa825, 0xa826, 1},
- {0xa8c4, 0xa8e0, 28},
- {0xa8e1, 0xa8f1, 1},
- {0xa926, 0xa92d, 1},
- {0xa947, 0xa951, 1},
- {0xa980, 0xa982, 1},
- {0xa9b3, 0xa9b6, 3},
- {0xa9b7, 0xa9b9, 1},
- {0xa9bc, 0xaa29, 109},
- {0xaa2a, 0xaa2e, 1},
- {0xaa31, 0xaa32, 1},
- {0xaa35, 0xaa36, 1},
- {0xaa43, 0xaa4c, 9},
- {0xaab0, 0xaab2, 2},
- {0xaab3, 0xaab4, 1},
- {0xaab7, 0xaab8, 1},
- {0xaabe, 0xaabf, 1},
- {0xaac1, 0xaaec, 43},
- {0xaaed, 0xaaf6, 9},
- {0xabe5, 0xabe8, 3},
- {0xabed, 0xfb1e, 20273},
- {0xfe00, 0xfe0f, 1},
- {0xfe20, 0xfe26, 1},
- },
- R32: []Range32{
- {0x101fd, 0x10a01, 2052},
- {0x10a02, 0x10a03, 1},
- {0x10a05, 0x10a06, 1},
- {0x10a0c, 0x10a0f, 1},
- {0x10a38, 0x10a3a, 1},
- {0x10a3f, 0x11001, 1474},
- {0x11038, 0x11046, 1},
- {0x11080, 0x11081, 1},
- {0x110b3, 0x110b6, 1},
- {0x110b9, 0x110ba, 1},
- {0x11100, 0x11102, 1},
- {0x11127, 0x1112b, 1},
- {0x1112d, 0x11134, 1},
- {0x11180, 0x11181, 1},
- {0x111b6, 0x111be, 1},
- {0x116ab, 0x116ad, 2},
- {0x116b0, 0x116b5, 1},
- {0x116b7, 0x16f8f, 22744},
- {0x16f90, 0x16f92, 1},
- {0x1d167, 0x1d169, 1},
- {0x1d17b, 0x1d182, 1},
- {0x1d185, 0x1d18b, 1},
- {0x1d1aa, 0x1d1ad, 1},
- {0x1d242, 0x1d244, 1},
- {0xe0100, 0xe01ef, 1},
- },
-}
-
-var _N = &RangeTable{
- R16: []Range16{
- {0x0030, 0x0039, 1},
- {0x00b2, 0x00b3, 1},
- {0x00b9, 0x00bc, 3},
- {0x00bd, 0x00be, 1},
- {0x0660, 0x0669, 1},
- {0x06f0, 0x06f9, 1},
- {0x07c0, 0x07c9, 1},
- {0x0966, 0x096f, 1},
- {0x09e6, 0x09ef, 1},
- {0x09f4, 0x09f9, 1},
- {0x0a66, 0x0a6f, 1},
- {0x0ae6, 0x0aef, 1},
- {0x0b66, 0x0b6f, 1},
- {0x0b72, 0x0b77, 1},
- {0x0be6, 0x0bf2, 1},
- {0x0c66, 0x0c6f, 1},
- {0x0c78, 0x0c7e, 1},
- {0x0ce6, 0x0cef, 1},
- {0x0d66, 0x0d75, 1},
- {0x0e50, 0x0e59, 1},
- {0x0ed0, 0x0ed9, 1},
- {0x0f20, 0x0f33, 1},
- {0x1040, 0x1049, 1},
- {0x1090, 0x1099, 1},
- {0x1369, 0x137c, 1},
- {0x16ee, 0x16f0, 1},
- {0x17e0, 0x17e9, 1},
- {0x17f0, 0x17f9, 1},
- {0x1810, 0x1819, 1},
- {0x1946, 0x194f, 1},
- {0x19d0, 0x19da, 1},
- {0x1a80, 0x1a89, 1},
- {0x1a90, 0x1a99, 1},
- {0x1b50, 0x1b59, 1},
- {0x1bb0, 0x1bb9, 1},
- {0x1c40, 0x1c49, 1},
- {0x1c50, 0x1c59, 1},
- {0x2070, 0x2074, 4},
- {0x2075, 0x2079, 1},
- {0x2080, 0x2089, 1},
- {0x2150, 0x2182, 1},
- {0x2185, 0x2189, 1},
- {0x2460, 0x249b, 1},
- {0x24ea, 0x24ff, 1},
- {0x2776, 0x2793, 1},
- {0x2cfd, 0x3007, 778},
- {0x3021, 0x3029, 1},
- {0x3038, 0x303a, 1},
- {0x3192, 0x3195, 1},
- {0x3220, 0x3229, 1},
- {0x3248, 0x324f, 1},
- {0x3251, 0x325f, 1},
- {0x3280, 0x3289, 1},
- {0x32b1, 0x32bf, 1},
- {0xa620, 0xa629, 1},
- {0xa6e6, 0xa6ef, 1},
- {0xa830, 0xa835, 1},
- {0xa8d0, 0xa8d9, 1},
- {0xa900, 0xa909, 1},
- {0xa9d0, 0xa9d9, 1},
- {0xaa50, 0xaa59, 1},
- {0xabf0, 0xabf9, 1},
- {0xff10, 0xff19, 1},
- },
- R32: []Range32{
- {0x10107, 0x10133, 1},
- {0x10140, 0x10178, 1},
- {0x1018a, 0x10320, 406},
- {0x10321, 0x10323, 1},
- {0x10341, 0x1034a, 9},
- {0x103d1, 0x103d5, 1},
- {0x104a0, 0x104a9, 1},
- {0x10858, 0x1085f, 1},
- {0x10916, 0x1091b, 1},
- {0x10a40, 0x10a47, 1},
- {0x10a7d, 0x10a7e, 1},
- {0x10b58, 0x10b5f, 1},
- {0x10b78, 0x10b7f, 1},
- {0x10e60, 0x10e7e, 1},
- {0x11052, 0x1106f, 1},
- {0x110f0, 0x110f9, 1},
- {0x11136, 0x1113f, 1},
- {0x111d0, 0x111d9, 1},
- {0x116c0, 0x116c9, 1},
- {0x12400, 0x12462, 1},
- {0x1d360, 0x1d371, 1},
- {0x1d7ce, 0x1d7ff, 1},
- {0x1f100, 0x1f10a, 1},
- },
- LatinOffset: 4,
-}
-
-var _Nd = &RangeTable{
- R16: []Range16{
- {0x0030, 0x0039, 1},
- {0x0660, 0x0669, 1},
- {0x06f0, 0x06f9, 1},
- {0x07c0, 0x07c9, 1},
- {0x0966, 0x096f, 1},
- {0x09e6, 0x09ef, 1},
- {0x0a66, 0x0a6f, 1},
- {0x0ae6, 0x0aef, 1},
- {0x0b66, 0x0b6f, 1},
- {0x0be6, 0x0bef, 1},
- {0x0c66, 0x0c6f, 1},
- {0x0ce6, 0x0cef, 1},
- {0x0d66, 0x0d6f, 1},
- {0x0e50, 0x0e59, 1},
- {0x0ed0, 0x0ed9, 1},
- {0x0f20, 0x0f29, 1},
- {0x1040, 0x1049, 1},
- {0x1090, 0x1099, 1},
- {0x17e0, 0x17e9, 1},
- {0x1810, 0x1819, 1},
- {0x1946, 0x194f, 1},
- {0x19d0, 0x19d9, 1},
- {0x1a80, 0x1a89, 1},
- {0x1a90, 0x1a99, 1},
- {0x1b50, 0x1b59, 1},
- {0x1bb0, 0x1bb9, 1},
- {0x1c40, 0x1c49, 1},
- {0x1c50, 0x1c59, 1},
- {0xa620, 0xa629, 1},
- {0xa8d0, 0xa8d9, 1},
- {0xa900, 0xa909, 1},
- {0xa9d0, 0xa9d9, 1},
- {0xaa50, 0xaa59, 1},
- {0xabf0, 0xabf9, 1},
- {0xff10, 0xff19, 1},
- },
- R32: []Range32{
- {0x104a0, 0x104a9, 1},
- {0x11066, 0x1106f, 1},
- {0x110f0, 0x110f9, 1},
- {0x11136, 0x1113f, 1},
- {0x111d0, 0x111d9, 1},
- {0x116c0, 0x116c9, 1},
- {0x1d7ce, 0x1d7ff, 1},
- },
- LatinOffset: 1,
-}
-
-var _Nl = &RangeTable{
- R16: []Range16{
- {0x16ee, 0x16f0, 1},
- {0x2160, 0x2182, 1},
- {0x2185, 0x2188, 1},
- {0x3007, 0x3021, 26},
- {0x3022, 0x3029, 1},
- {0x3038, 0x303a, 1},
- {0xa6e6, 0xa6ef, 1},
- },
- R32: []Range32{
- {0x10140, 0x10174, 1},
- {0x10341, 0x1034a, 9},
- {0x103d1, 0x103d5, 1},
- {0x12400, 0x12462, 1},
- },
-}
-
-var _No = &RangeTable{
- R16: []Range16{
- {0x00b2, 0x00b3, 1},
- {0x00b9, 0x00bc, 3},
- {0x00bd, 0x00be, 1},
- {0x09f4, 0x09f9, 1},
- {0x0b72, 0x0b77, 1},
- {0x0bf0, 0x0bf2, 1},
- {0x0c78, 0x0c7e, 1},
- {0x0d70, 0x0d75, 1},
- {0x0f2a, 0x0f33, 1},
- {0x1369, 0x137c, 1},
- {0x17f0, 0x17f9, 1},
- {0x19da, 0x2070, 1686},
- {0x2074, 0x2079, 1},
- {0x2080, 0x2089, 1},
- {0x2150, 0x215f, 1},
- {0x2189, 0x2460, 727},
- {0x2461, 0x249b, 1},
- {0x24ea, 0x24ff, 1},
- {0x2776, 0x2793, 1},
- {0x2cfd, 0x3192, 1173},
- {0x3193, 0x3195, 1},
- {0x3220, 0x3229, 1},
- {0x3248, 0x324f, 1},
- {0x3251, 0x325f, 1},
- {0x3280, 0x3289, 1},
- {0x32b1, 0x32bf, 1},
- {0xa830, 0xa835, 1},
- },
- R32: []Range32{
- {0x10107, 0x10133, 1},
- {0x10175, 0x10178, 1},
- {0x1018a, 0x10320, 406},
- {0x10321, 0x10323, 1},
- {0x10858, 0x1085f, 1},
- {0x10916, 0x1091b, 1},
- {0x10a40, 0x10a47, 1},
- {0x10a7d, 0x10a7e, 1},
- {0x10b58, 0x10b5f, 1},
- {0x10b78, 0x10b7f, 1},
- {0x10e60, 0x10e7e, 1},
- {0x11052, 0x11065, 1},
- {0x1d360, 0x1d371, 1},
- {0x1f100, 0x1f10a, 1},
- },
- LatinOffset: 3,
-}
-
-var _P = &RangeTable{
- R16: []Range16{
- {0x0021, 0x0023, 1},
- {0x0025, 0x002a, 1},
- {0x002c, 0x002f, 1},
- {0x003a, 0x003b, 1},
- {0x003f, 0x0040, 1},
- {0x005b, 0x005d, 1},
- {0x005f, 0x007b, 28},
- {0x007d, 0x00a1, 36},
- {0x00a7, 0x00ab, 4},
- {0x00b6, 0x00b7, 1},
- {0x00bb, 0x00bf, 4},
- {0x037e, 0x0387, 9},
- {0x055a, 0x055f, 1},
- {0x0589, 0x058a, 1},
- {0x05be, 0x05c0, 2},
- {0x05c3, 0x05c6, 3},
- {0x05f3, 0x05f4, 1},
- {0x0609, 0x060a, 1},
- {0x060c, 0x060d, 1},
- {0x061b, 0x061e, 3},
- {0x061f, 0x066a, 75},
- {0x066b, 0x066d, 1},
- {0x06d4, 0x0700, 44},
- {0x0701, 0x070d, 1},
- {0x07f7, 0x07f9, 1},
- {0x0830, 0x083e, 1},
- {0x085e, 0x0964, 262},
- {0x0965, 0x0970, 11},
- {0x0af0, 0x0df4, 772},
- {0x0e4f, 0x0e5a, 11},
- {0x0e5b, 0x0f04, 169},
- {0x0f05, 0x0f12, 1},
- {0x0f14, 0x0f3a, 38},
- {0x0f3b, 0x0f3d, 1},
- {0x0f85, 0x0fd0, 75},
- {0x0fd1, 0x0fd4, 1},
- {0x0fd9, 0x0fda, 1},
- {0x104a, 0x104f, 1},
- {0x10fb, 0x1360, 613},
- {0x1361, 0x1368, 1},
- {0x1400, 0x166d, 621},
- {0x166e, 0x169b, 45},
- {0x169c, 0x16eb, 79},
- {0x16ec, 0x16ed, 1},
- {0x1735, 0x1736, 1},
- {0x17d4, 0x17d6, 1},
- {0x17d8, 0x17da, 1},
- {0x1800, 0x180a, 1},
- {0x1944, 0x1945, 1},
- {0x1a1e, 0x1a1f, 1},
- {0x1aa0, 0x1aa6, 1},
- {0x1aa8, 0x1aad, 1},
- {0x1b5a, 0x1b60, 1},
- {0x1bfc, 0x1bff, 1},
- {0x1c3b, 0x1c3f, 1},
- {0x1c7e, 0x1c7f, 1},
- {0x1cc0, 0x1cc7, 1},
- {0x1cd3, 0x2010, 829},
- {0x2011, 0x2027, 1},
- {0x2030, 0x2043, 1},
- {0x2045, 0x2051, 1},
- {0x2053, 0x205e, 1},
- {0x207d, 0x207e, 1},
- {0x208d, 0x208e, 1},
- {0x2308, 0x230b, 1},
- {0x2329, 0x232a, 1},
- {0x2768, 0x2775, 1},
- {0x27c5, 0x27c6, 1},
- {0x27e6, 0x27ef, 1},
- {0x2983, 0x2998, 1},
- {0x29d8, 0x29db, 1},
- {0x29fc, 0x29fd, 1},
- {0x2cf9, 0x2cfc, 1},
- {0x2cfe, 0x2cff, 1},
- {0x2d70, 0x2e00, 144},
- {0x2e01, 0x2e2e, 1},
- {0x2e30, 0x2e3b, 1},
- {0x3001, 0x3003, 1},
- {0x3008, 0x3011, 1},
- {0x3014, 0x301f, 1},
- {0x3030, 0x303d, 13},
- {0x30a0, 0x30fb, 91},
- {0xa4fe, 0xa4ff, 1},
- {0xa60d, 0xa60f, 1},
- {0xa673, 0xa67e, 11},
- {0xa6f2, 0xa6f7, 1},
- {0xa874, 0xa877, 1},
- {0xa8ce, 0xa8cf, 1},
- {0xa8f8, 0xa8fa, 1},
- {0xa92e, 0xa92f, 1},
- {0xa95f, 0xa9c1, 98},
- {0xa9c2, 0xa9cd, 1},
- {0xa9de, 0xa9df, 1},
- {0xaa5c, 0xaa5f, 1},
- {0xaade, 0xaadf, 1},
- {0xaaf0, 0xaaf1, 1},
- {0xabeb, 0xfd3e, 20819},
- {0xfd3f, 0xfe10, 209},
- {0xfe11, 0xfe19, 1},
- {0xfe30, 0xfe52, 1},
- {0xfe54, 0xfe61, 1},
- {0xfe63, 0xfe68, 5},
- {0xfe6a, 0xfe6b, 1},
- {0xff01, 0xff03, 1},
- {0xff05, 0xff0a, 1},
- {0xff0c, 0xff0f, 1},
- {0xff1a, 0xff1b, 1},
- {0xff1f, 0xff20, 1},
- {0xff3b, 0xff3d, 1},
- {0xff3f, 0xff5b, 28},
- {0xff5d, 0xff5f, 2},
- {0xff60, 0xff65, 1},
- },
- R32: []Range32{
- {0x10100, 0x10102, 1},
- {0x1039f, 0x103d0, 49},
- {0x10857, 0x1091f, 200},
- {0x1093f, 0x10a50, 273},
- {0x10a51, 0x10a58, 1},
- {0x10a7f, 0x10b39, 186},
- {0x10b3a, 0x10b3f, 1},
- {0x11047, 0x1104d, 1},
- {0x110bb, 0x110bc, 1},
- {0x110be, 0x110c1, 1},
- {0x11140, 0x11143, 1},
- {0x111c5, 0x111c8, 1},
- {0x12470, 0x12473, 1},
- },
- LatinOffset: 11,
-}
-
-var _Pc = &RangeTable{
- R16: []Range16{
- {0x005f, 0x203f, 8160},
- {0x2040, 0x2054, 20},
- {0xfe33, 0xfe34, 1},
- {0xfe4d, 0xfe4f, 1},
- {0xff3f, 0xff3f, 1},
- },
-}
-
-var _Pd = &RangeTable{
- R16: []Range16{
- {0x002d, 0x058a, 1373},
- {0x05be, 0x1400, 3650},
- {0x1806, 0x2010, 2058},
- {0x2011, 0x2015, 1},
- {0x2e17, 0x2e1a, 3},
- {0x2e3a, 0x2e3b, 1},
- {0x301c, 0x3030, 20},
- {0x30a0, 0xfe31, 52625},
- {0xfe32, 0xfe58, 38},
- {0xfe63, 0xff0d, 170},
- },
-}
-
-var _Pe = &RangeTable{
- R16: []Range16{
- {0x0029, 0x005d, 52},
- {0x007d, 0x0f3b, 3774},
- {0x0f3d, 0x169c, 1887},
- {0x2046, 0x207e, 56},
- {0x208e, 0x2309, 635},
- {0x230b, 0x232a, 31},
- {0x2769, 0x2775, 2},
- {0x27c6, 0x27e7, 33},
- {0x27e9, 0x27ef, 2},
- {0x2984, 0x2998, 2},
- {0x29d9, 0x29db, 2},
- {0x29fd, 0x2e23, 1062},
- {0x2e25, 0x2e29, 2},
- {0x3009, 0x3011, 2},
- {0x3015, 0x301b, 2},
- {0x301e, 0x301f, 1},
- {0xfd3f, 0xfe18, 217},
- {0xfe36, 0xfe44, 2},
- {0xfe48, 0xfe5a, 18},
- {0xfe5c, 0xfe5e, 2},
- {0xff09, 0xff3d, 52},
- {0xff5d, 0xff63, 3},
- },
- LatinOffset: 1,
-}
-
-var _Pf = &RangeTable{
- R16: []Range16{
- {0x00bb, 0x2019, 8030},
- {0x201d, 0x203a, 29},
- {0x2e03, 0x2e05, 2},
- {0x2e0a, 0x2e0d, 3},
- {0x2e1d, 0x2e21, 4},
- },
-}
-
-var _Pi = &RangeTable{
- R16: []Range16{
- {0x00ab, 0x2018, 8045},
- {0x201b, 0x201c, 1},
- {0x201f, 0x2039, 26},
- {0x2e02, 0x2e04, 2},
- {0x2e09, 0x2e0c, 3},
- {0x2e1c, 0x2e20, 4},
- },
-}
-
-var _Po = &RangeTable{
- R16: []Range16{
- {0x0021, 0x0023, 1},
- {0x0025, 0x0027, 1},
- {0x002a, 0x002e, 2},
- {0x002f, 0x003a, 11},
- {0x003b, 0x003f, 4},
- {0x0040, 0x005c, 28},
- {0x00a1, 0x00a7, 6},
- {0x00b6, 0x00b7, 1},
- {0x00bf, 0x037e, 703},
- {0x0387, 0x055a, 467},
- {0x055b, 0x055f, 1},
- {0x0589, 0x05c0, 55},
- {0x05c3, 0x05c6, 3},
- {0x05f3, 0x05f4, 1},
- {0x0609, 0x060a, 1},
- {0x060c, 0x060d, 1},
- {0x061b, 0x061e, 3},
- {0x061f, 0x066a, 75},
- {0x066b, 0x066d, 1},
- {0x06d4, 0x0700, 44},
- {0x0701, 0x070d, 1},
- {0x07f7, 0x07f9, 1},
- {0x0830, 0x083e, 1},
- {0x085e, 0x0964, 262},
- {0x0965, 0x0970, 11},
- {0x0af0, 0x0df4, 772},
- {0x0e4f, 0x0e5a, 11},
- {0x0e5b, 0x0f04, 169},
- {0x0f05, 0x0f12, 1},
- {0x0f14, 0x0f85, 113},
- {0x0fd0, 0x0fd4, 1},
- {0x0fd9, 0x0fda, 1},
- {0x104a, 0x104f, 1},
- {0x10fb, 0x1360, 613},
- {0x1361, 0x1368, 1},
- {0x166d, 0x166e, 1},
- {0x16eb, 0x16ed, 1},
- {0x1735, 0x1736, 1},
- {0x17d4, 0x17d6, 1},
- {0x17d8, 0x17da, 1},
- {0x1800, 0x1805, 1},
- {0x1807, 0x180a, 1},
- {0x1944, 0x1945, 1},
- {0x1a1e, 0x1a1f, 1},
- {0x1aa0, 0x1aa6, 1},
- {0x1aa8, 0x1aad, 1},
- {0x1b5a, 0x1b60, 1},
- {0x1bfc, 0x1bff, 1},
- {0x1c3b, 0x1c3f, 1},
- {0x1c7e, 0x1c7f, 1},
- {0x1cc0, 0x1cc7, 1},
- {0x1cd3, 0x2016, 835},
- {0x2017, 0x2020, 9},
- {0x2021, 0x2027, 1},
- {0x2030, 0x2038, 1},
- {0x203b, 0x203e, 1},
- {0x2041, 0x2043, 1},
- {0x2047, 0x2051, 1},
- {0x2053, 0x2055, 2},
- {0x2056, 0x205e, 1},
- {0x2cf9, 0x2cfc, 1},
- {0x2cfe, 0x2cff, 1},
- {0x2d70, 0x2e00, 144},
- {0x2e01, 0x2e06, 5},
- {0x2e07, 0x2e08, 1},
- {0x2e0b, 0x2e0e, 3},
- {0x2e0f, 0x2e16, 1},
- {0x2e18, 0x2e19, 1},
- {0x2e1b, 0x2e1e, 3},
- {0x2e1f, 0x2e2a, 11},
- {0x2e2b, 0x2e2e, 1},
- {0x2e30, 0x2e39, 1},
- {0x3001, 0x3003, 1},
- {0x303d, 0x30fb, 190},
- {0xa4fe, 0xa4ff, 1},
- {0xa60d, 0xa60f, 1},
- {0xa673, 0xa67e, 11},
- {0xa6f2, 0xa6f7, 1},
- {0xa874, 0xa877, 1},
- {0xa8ce, 0xa8cf, 1},
- {0xa8f8, 0xa8fa, 1},
- {0xa92e, 0xa92f, 1},
- {0xa95f, 0xa9c1, 98},
- {0xa9c2, 0xa9cd, 1},
- {0xa9de, 0xa9df, 1},
- {0xaa5c, 0xaa5f, 1},
- {0xaade, 0xaadf, 1},
- {0xaaf0, 0xaaf1, 1},
- {0xabeb, 0xfe10, 21029},
- {0xfe11, 0xfe16, 1},
- {0xfe19, 0xfe30, 23},
- {0xfe45, 0xfe46, 1},
- {0xfe49, 0xfe4c, 1},
- {0xfe50, 0xfe52, 1},
- {0xfe54, 0xfe57, 1},
- {0xfe5f, 0xfe61, 1},
- {0xfe68, 0xfe6a, 2},
- {0xfe6b, 0xff01, 150},
- {0xff02, 0xff03, 1},
- {0xff05, 0xff07, 1},
- {0xff0a, 0xff0e, 2},
- {0xff0f, 0xff1a, 11},
- {0xff1b, 0xff1f, 4},
- {0xff20, 0xff3c, 28},
- {0xff61, 0xff64, 3},
- {0xff65, 0xff65, 1},
- },
- R32: []Range32{
- {0x10100, 0x10100, 1},
- {0x10101, 0x10102, 1},
- {0x1039f, 0x103d0, 49},
- {0x10857, 0x1091f, 200},
- {0x1093f, 0x10a50, 273},
- {0x10a51, 0x10a58, 1},
- {0x10a7f, 0x10b39, 186},
- {0x10b3a, 0x10b3f, 1},
- {0x11047, 0x1104d, 1},
- {0x110bb, 0x110bc, 1},
- {0x110be, 0x110c1, 1},
- {0x11140, 0x11143, 1},
- {0x111c5, 0x111c8, 1},
- {0x12470, 0x12473, 1},
- },
- LatinOffset: 8,
-}
-
-var _Ps = &RangeTable{
- R16: []Range16{
- {0x0028, 0x005b, 51},
- {0x007b, 0x0f3a, 3775},
- {0x0f3c, 0x169b, 1887},
- {0x201a, 0x201e, 4},
- {0x2045, 0x207d, 56},
- {0x208d, 0x2308, 635},
- {0x230a, 0x2329, 31},
- {0x2768, 0x2774, 2},
- {0x27c5, 0x27e6, 33},
- {0x27e8, 0x27ee, 2},
- {0x2983, 0x2997, 2},
- {0x29d8, 0x29da, 2},
- {0x29fc, 0x2e22, 1062},
- {0x2e24, 0x2e28, 2},
- {0x3008, 0x3010, 2},
- {0x3014, 0x301a, 2},
- {0x301d, 0xfd3e, 52513},
- {0xfe17, 0xfe35, 30},
- {0xfe37, 0xfe43, 2},
- {0xfe47, 0xfe59, 18},
- {0xfe5b, 0xfe5d, 2},
- {0xff08, 0xff3b, 51},
- {0xff5b, 0xff5f, 4},
- {0xff62, 0xff62, 1},
- },
- LatinOffset: 1,
-}
-
-var _S = &RangeTable{
- R16: []Range16{
- {0x0024, 0x002b, 7},
- {0x003c, 0x003e, 1},
- {0x005e, 0x0060, 2},
- {0x007c, 0x007e, 2},
- {0x00a2, 0x00a6, 1},
- {0x00a8, 0x00a9, 1},
- {0x00ac, 0x00ae, 2},
- {0x00af, 0x00b1, 1},
- {0x00b4, 0x00b8, 4},
- {0x00d7, 0x00f7, 32},
- {0x02c2, 0x02c5, 1},
- {0x02d2, 0x02df, 1},
- {0x02e5, 0x02eb, 1},
- {0x02ed, 0x02ef, 2},
- {0x02f0, 0x02ff, 1},
- {0x0375, 0x0384, 15},
- {0x0385, 0x03f6, 113},
- {0x0482, 0x058f, 269},
- {0x0606, 0x0608, 1},
- {0x060b, 0x060e, 3},
- {0x060f, 0x06de, 207},
- {0x06e9, 0x06fd, 20},
- {0x06fe, 0x07f6, 248},
- {0x09f2, 0x09f3, 1},
- {0x09fa, 0x09fb, 1},
- {0x0af1, 0x0b70, 127},
- {0x0bf3, 0x0bfa, 1},
- {0x0c7f, 0x0d79, 250},
- {0x0e3f, 0x0f01, 194},
- {0x0f02, 0x0f03, 1},
- {0x0f13, 0x0f15, 2},
- {0x0f16, 0x0f17, 1},
- {0x0f1a, 0x0f1f, 1},
- {0x0f34, 0x0f38, 2},
- {0x0fbe, 0x0fc5, 1},
- {0x0fc7, 0x0fcc, 1},
- {0x0fce, 0x0fcf, 1},
- {0x0fd5, 0x0fd8, 1},
- {0x109e, 0x109f, 1},
- {0x1390, 0x1399, 1},
- {0x17db, 0x1940, 357},
- {0x19de, 0x19ff, 1},
- {0x1b61, 0x1b6a, 1},
- {0x1b74, 0x1b7c, 1},
- {0x1fbd, 0x1fbf, 2},
- {0x1fc0, 0x1fc1, 1},
- {0x1fcd, 0x1fcf, 1},
- {0x1fdd, 0x1fdf, 1},
- {0x1fed, 0x1fef, 1},
- {0x1ffd, 0x1ffe, 1},
- {0x2044, 0x2052, 14},
- {0x207a, 0x207c, 1},
- {0x208a, 0x208c, 1},
- {0x20a0, 0x20ba, 1},
- {0x2100, 0x2101, 1},
- {0x2103, 0x2106, 1},
- {0x2108, 0x2109, 1},
- {0x2114, 0x2116, 2},
- {0x2117, 0x2118, 1},
- {0x211e, 0x2123, 1},
- {0x2125, 0x2129, 2},
- {0x212e, 0x213a, 12},
- {0x213b, 0x2140, 5},
- {0x2141, 0x2144, 1},
- {0x214a, 0x214d, 1},
- {0x214f, 0x2190, 65},
- {0x2191, 0x2307, 1},
- {0x230c, 0x2328, 1},
- {0x232b, 0x23f3, 1},
- {0x2400, 0x2426, 1},
- {0x2440, 0x244a, 1},
- {0x249c, 0x24e9, 1},
- {0x2500, 0x26ff, 1},
- {0x2701, 0x2767, 1},
- {0x2794, 0x27c4, 1},
- {0x27c7, 0x27e5, 1},
- {0x27f0, 0x2982, 1},
- {0x2999, 0x29d7, 1},
- {0x29dc, 0x29fb, 1},
- {0x29fe, 0x2b4c, 1},
- {0x2b50, 0x2b59, 1},
- {0x2ce5, 0x2cea, 1},
- {0x2e80, 0x2e99, 1},
- {0x2e9b, 0x2ef3, 1},
- {0x2f00, 0x2fd5, 1},
- {0x2ff0, 0x2ffb, 1},
- {0x3004, 0x3012, 14},
- {0x3013, 0x3020, 13},
- {0x3036, 0x3037, 1},
- {0x303e, 0x303f, 1},
- {0x309b, 0x309c, 1},
- {0x3190, 0x3191, 1},
- {0x3196, 0x319f, 1},
- {0x31c0, 0x31e3, 1},
- {0x3200, 0x321e, 1},
- {0x322a, 0x3247, 1},
- {0x3250, 0x3260, 16},
- {0x3261, 0x327f, 1},
- {0x328a, 0x32b0, 1},
- {0x32c0, 0x32fe, 1},
- {0x3300, 0x33ff, 1},
- {0x4dc0, 0x4dff, 1},
- {0xa490, 0xa4c6, 1},
- {0xa700, 0xa716, 1},
- {0xa720, 0xa721, 1},
- {0xa789, 0xa78a, 1},
- {0xa828, 0xa82b, 1},
- {0xa836, 0xa839, 1},
- {0xaa77, 0xaa79, 1},
- {0xfb29, 0xfbb2, 137},
- {0xfbb3, 0xfbc1, 1},
- {0xfdfc, 0xfdfd, 1},
- {0xfe62, 0xfe64, 2},
- {0xfe65, 0xfe66, 1},
- {0xfe69, 0xff04, 155},
- {0xff0b, 0xff1c, 17},
- {0xff1d, 0xff1e, 1},
- {0xff3e, 0xff40, 2},
- {0xff5c, 0xff5e, 2},
- {0xffe0, 0xffe6, 1},
- {0xffe8, 0xffee, 1},
- {0xfffc, 0xfffd, 1},
- },
- R32: []Range32{
- {0x10137, 0x1013f, 1},
- {0x10179, 0x10189, 1},
- {0x10190, 0x1019b, 1},
- {0x101d0, 0x101fc, 1},
- {0x1d000, 0x1d0f5, 1},
- {0x1d100, 0x1d126, 1},
- {0x1d129, 0x1d164, 1},
- {0x1d16a, 0x1d16c, 1},
- {0x1d183, 0x1d184, 1},
- {0x1d18c, 0x1d1a9, 1},
- {0x1d1ae, 0x1d1dd, 1},
- {0x1d200, 0x1d241, 1},
- {0x1d245, 0x1d300, 187},
- {0x1d301, 0x1d356, 1},
- {0x1d6c1, 0x1d6db, 26},
- {0x1d6fb, 0x1d715, 26},
- {0x1d735, 0x1d74f, 26},
- {0x1d76f, 0x1d789, 26},
- {0x1d7a9, 0x1d7c3, 26},
- {0x1eef0, 0x1eef1, 1},
- {0x1f000, 0x1f02b, 1},
- {0x1f030, 0x1f093, 1},
- {0x1f0a0, 0x1f0ae, 1},
- {0x1f0b1, 0x1f0be, 1},
- {0x1f0c1, 0x1f0cf, 1},
- {0x1f0d1, 0x1f0df, 1},
- {0x1f110, 0x1f12e, 1},
- {0x1f130, 0x1f16b, 1},
- {0x1f170, 0x1f19a, 1},
- {0x1f1e6, 0x1f202, 1},
- {0x1f210, 0x1f23a, 1},
- {0x1f240, 0x1f248, 1},
- {0x1f250, 0x1f251, 1},
- {0x1f300, 0x1f320, 1},
- {0x1f330, 0x1f335, 1},
- {0x1f337, 0x1f37c, 1},
- {0x1f380, 0x1f393, 1},
- {0x1f3a0, 0x1f3c4, 1},
- {0x1f3c6, 0x1f3ca, 1},
- {0x1f3e0, 0x1f3f0, 1},
- {0x1f400, 0x1f43e, 1},
- {0x1f440, 0x1f442, 2},
- {0x1f443, 0x1f4f7, 1},
- {0x1f4f9, 0x1f4fc, 1},
- {0x1f500, 0x1f53d, 1},
- {0x1f540, 0x1f543, 1},
- {0x1f550, 0x1f567, 1},
- {0x1f5fb, 0x1f640, 1},
- {0x1f645, 0x1f64f, 1},
- {0x1f680, 0x1f6c5, 1},
- {0x1f700, 0x1f773, 1},
- },
- LatinOffset: 10,
-}
-
-var _Sc = &RangeTable{
- R16: []Range16{
- {0x0024, 0x00a2, 126},
- {0x00a3, 0x00a5, 1},
- {0x058f, 0x060b, 124},
- {0x09f2, 0x09f3, 1},
- {0x09fb, 0x0af1, 246},
- {0x0bf9, 0x0e3f, 582},
- {0x17db, 0x20a0, 2245},
- {0x20a1, 0x20ba, 1},
- {0xa838, 0xfdfc, 21956},
- {0xfe69, 0xff04, 155},
- {0xffe0, 0xffe1, 1},
- {0xffe5, 0xffe6, 1},
- },
- LatinOffset: 2,
-}
-
-var _Sk = &RangeTable{
- R16: []Range16{
- {0x005e, 0x0060, 2},
- {0x00a8, 0x00af, 7},
- {0x00b4, 0x00b8, 4},
- {0x02c2, 0x02c5, 1},
- {0x02d2, 0x02df, 1},
- {0x02e5, 0x02eb, 1},
- {0x02ed, 0x02ef, 2},
- {0x02f0, 0x02ff, 1},
- {0x0375, 0x0384, 15},
- {0x0385, 0x1fbd, 7224},
- {0x1fbf, 0x1fc1, 1},
- {0x1fcd, 0x1fcf, 1},
- {0x1fdd, 0x1fdf, 1},
- {0x1fed, 0x1fef, 1},
- {0x1ffd, 0x1ffe, 1},
- {0x309b, 0x309c, 1},
- {0xa700, 0xa716, 1},
- {0xa720, 0xa721, 1},
- {0xa789, 0xa78a, 1},
- {0xfbb2, 0xfbc1, 1},
- {0xff3e, 0xff40, 2},
- {0xffe3, 0xffe3, 1},
- },
- LatinOffset: 3,
-}
-
-var _Sm = &RangeTable{
- R16: []Range16{
- {0x002b, 0x003c, 17},
- {0x003d, 0x003e, 1},
- {0x007c, 0x007e, 2},
- {0x00ac, 0x00b1, 5},
- {0x00d7, 0x00f7, 32},
- {0x03f6, 0x0606, 528},
- {0x0607, 0x0608, 1},
- {0x2044, 0x2052, 14},
- {0x207a, 0x207c, 1},
- {0x208a, 0x208c, 1},
- {0x2118, 0x2140, 40},
- {0x2141, 0x2144, 1},
- {0x214b, 0x2190, 69},
- {0x2191, 0x2194, 1},
- {0x219a, 0x219b, 1},
- {0x21a0, 0x21a6, 3},
- {0x21ae, 0x21ce, 32},
- {0x21cf, 0x21d2, 3},
- {0x21d4, 0x21f4, 32},
- {0x21f5, 0x22ff, 1},
- {0x2320, 0x2321, 1},
- {0x237c, 0x239b, 31},
- {0x239c, 0x23b3, 1},
- {0x23dc, 0x23e1, 1},
- {0x25b7, 0x25c1, 10},
- {0x25f8, 0x25ff, 1},
- {0x266f, 0x27c0, 337},
- {0x27c1, 0x27c4, 1},
- {0x27c7, 0x27e5, 1},
- {0x27f0, 0x27ff, 1},
- {0x2900, 0x2982, 1},
- {0x2999, 0x29d7, 1},
- {0x29dc, 0x29fb, 1},
- {0x29fe, 0x2aff, 1},
- {0x2b30, 0x2b44, 1},
- {0x2b47, 0x2b4c, 1},
- {0xfb29, 0xfe62, 825},
- {0xfe64, 0xfe66, 1},
- {0xff0b, 0xff1c, 17},
- {0xff1d, 0xff1e, 1},
- {0xff5c, 0xff5e, 2},
- {0xffe2, 0xffe9, 7},
- {0xffea, 0xffec, 1},
- },
- R32: []Range32{
- {0x1d6c1, 0x1d6db, 26},
- {0x1d6fb, 0x1d715, 26},
- {0x1d735, 0x1d74f, 26},
- {0x1d76f, 0x1d789, 26},
- {0x1d7a9, 0x1d7c3, 26},
- {0x1eef0, 0x1eef1, 1},
- },
- LatinOffset: 5,
-}
-
-var _So = &RangeTable{
- R16: []Range16{
- {0x00a6, 0x00a9, 3},
- {0x00ae, 0x00b0, 2},
- {0x0482, 0x060e, 396},
- {0x060f, 0x06de, 207},
- {0x06e9, 0x06fd, 20},
- {0x06fe, 0x07f6, 248},
- {0x09fa, 0x0b70, 374},
- {0x0bf3, 0x0bf8, 1},
- {0x0bfa, 0x0c7f, 133},
- {0x0d79, 0x0f01, 392},
- {0x0f02, 0x0f03, 1},
- {0x0f13, 0x0f15, 2},
- {0x0f16, 0x0f17, 1},
- {0x0f1a, 0x0f1f, 1},
- {0x0f34, 0x0f38, 2},
- {0x0fbe, 0x0fc5, 1},
- {0x0fc7, 0x0fcc, 1},
- {0x0fce, 0x0fcf, 1},
- {0x0fd5, 0x0fd8, 1},
- {0x109e, 0x109f, 1},
- {0x1390, 0x1399, 1},
- {0x1940, 0x19de, 158},
- {0x19df, 0x19ff, 1},
- {0x1b61, 0x1b6a, 1},
- {0x1b74, 0x1b7c, 1},
- {0x2100, 0x2101, 1},
- {0x2103, 0x2106, 1},
- {0x2108, 0x2109, 1},
- {0x2114, 0x2116, 2},
- {0x2117, 0x211e, 7},
- {0x211f, 0x2123, 1},
- {0x2125, 0x2129, 2},
- {0x212e, 0x213a, 12},
- {0x213b, 0x214a, 15},
- {0x214c, 0x214d, 1},
- {0x214f, 0x2195, 70},
- {0x2196, 0x2199, 1},
- {0x219c, 0x219f, 1},
- {0x21a1, 0x21a2, 1},
- {0x21a4, 0x21a5, 1},
- {0x21a7, 0x21ad, 1},
- {0x21af, 0x21cd, 1},
- {0x21d0, 0x21d1, 1},
- {0x21d3, 0x21d5, 2},
- {0x21d6, 0x21f3, 1},
- {0x2300, 0x2307, 1},
- {0x230c, 0x231f, 1},
- {0x2322, 0x2328, 1},
- {0x232b, 0x237b, 1},
- {0x237d, 0x239a, 1},
- {0x23b4, 0x23db, 1},
- {0x23e2, 0x23f3, 1},
- {0x2400, 0x2426, 1},
- {0x2440, 0x244a, 1},
- {0x249c, 0x24e9, 1},
- {0x2500, 0x25b6, 1},
- {0x25b8, 0x25c0, 1},
- {0x25c2, 0x25f7, 1},
- {0x2600, 0x266e, 1},
- {0x2670, 0x26ff, 1},
- {0x2701, 0x2767, 1},
- {0x2794, 0x27bf, 1},
- {0x2800, 0x28ff, 1},
- {0x2b00, 0x2b2f, 1},
- {0x2b45, 0x2b46, 1},
- {0x2b50, 0x2b59, 1},
- {0x2ce5, 0x2cea, 1},
- {0x2e80, 0x2e99, 1},
- {0x2e9b, 0x2ef3, 1},
- {0x2f00, 0x2fd5, 1},
- {0x2ff0, 0x2ffb, 1},
- {0x3004, 0x3012, 14},
- {0x3013, 0x3020, 13},
- {0x3036, 0x3037, 1},
- {0x303e, 0x303f, 1},
- {0x3190, 0x3191, 1},
- {0x3196, 0x319f, 1},
- {0x31c0, 0x31e3, 1},
- {0x3200, 0x321e, 1},
- {0x322a, 0x3247, 1},
- {0x3250, 0x3260, 16},
- {0x3261, 0x327f, 1},
- {0x328a, 0x32b0, 1},
- {0x32c0, 0x32fe, 1},
- {0x3300, 0x33ff, 1},
- {0x4dc0, 0x4dff, 1},
- {0xa490, 0xa4c6, 1},
- {0xa828, 0xa82b, 1},
- {0xa836, 0xa837, 1},
- {0xa839, 0xaa77, 574},
- {0xaa78, 0xaa79, 1},
- {0xfdfd, 0xffe4, 487},
- {0xffe8, 0xffed, 5},
- {0xffee, 0xfffc, 14},
- {0xfffd, 0xfffd, 1},
- },
- R32: []Range32{
- {0x10137, 0x10137, 1},
- {0x10138, 0x1013f, 1},
- {0x10179, 0x10189, 1},
- {0x10190, 0x1019b, 1},
- {0x101d0, 0x101fc, 1},
- {0x1d000, 0x1d0f5, 1},
- {0x1d100, 0x1d126, 1},
- {0x1d129, 0x1d164, 1},
- {0x1d16a, 0x1d16c, 1},
- {0x1d183, 0x1d184, 1},
- {0x1d18c, 0x1d1a9, 1},
- {0x1d1ae, 0x1d1dd, 1},
- {0x1d200, 0x1d241, 1},
- {0x1d245, 0x1d300, 187},
- {0x1d301, 0x1d356, 1},
- {0x1f000, 0x1f02b, 1},
- {0x1f030, 0x1f093, 1},
- {0x1f0a0, 0x1f0ae, 1},
- {0x1f0b1, 0x1f0be, 1},
- {0x1f0c1, 0x1f0cf, 1},
- {0x1f0d1, 0x1f0df, 1},
- {0x1f110, 0x1f12e, 1},
- {0x1f130, 0x1f16b, 1},
- {0x1f170, 0x1f19a, 1},
- {0x1f1e6, 0x1f202, 1},
- {0x1f210, 0x1f23a, 1},
- {0x1f240, 0x1f248, 1},
- {0x1f250, 0x1f251, 1},
- {0x1f300, 0x1f320, 1},
- {0x1f330, 0x1f335, 1},
- {0x1f337, 0x1f37c, 1},
- {0x1f380, 0x1f393, 1},
- {0x1f3a0, 0x1f3c4, 1},
- {0x1f3c6, 0x1f3ca, 1},
- {0x1f3e0, 0x1f3f0, 1},
- {0x1f400, 0x1f43e, 1},
- {0x1f440, 0x1f442, 2},
- {0x1f443, 0x1f4f7, 1},
- {0x1f4f9, 0x1f4fc, 1},
- {0x1f500, 0x1f53d, 1},
- {0x1f540, 0x1f543, 1},
- {0x1f550, 0x1f567, 1},
- {0x1f5fb, 0x1f640, 1},
- {0x1f645, 0x1f64f, 1},
- {0x1f680, 0x1f6c5, 1},
- {0x1f700, 0x1f773, 1},
- },
- LatinOffset: 2,
-}
-
-var _Z = &RangeTable{
- R16: []Range16{
- {0x0020, 0x00a0, 128},
- {0x1680, 0x2000, 2432},
- {0x2001, 0x200a, 1},
- {0x2028, 0x2029, 1},
- {0x202f, 0x205f, 48},
- {0x3000, 0x3000, 1},
- },
- LatinOffset: 1,
-}
-
-var _Zl = &RangeTable{
- R16: []Range16{
- {0x2028, 0x2028, 1},
- },
-}
-
-var _Zp = &RangeTable{
- R16: []Range16{
- {0x2029, 0x2029, 1},
- },
-}
-
-var _Zs = &RangeTable{
- R16: []Range16{
- {0x0020, 0x00a0, 128},
- {0x1680, 0x2000, 2432},
- {0x2001, 0x200a, 1},
- {0x202f, 0x205f, 48},
- {0x3000, 0x3000, 1},
- },
- LatinOffset: 1,
-}
-
-// These variables have type *RangeTable.
-var (
- Cc = _Cc // Cc is the set of Unicode characters in category Cc.
- Cf = _Cf // Cf is the set of Unicode characters in category Cf.
- Co = _Co // Co is the set of Unicode characters in category Co.
- Cs = _Cs // Cs is the set of Unicode characters in category Cs.
- Digit = _Nd // Digit is the set of Unicode characters with the "decimal digit" property.
- Nd = _Nd // Nd is the set of Unicode characters in category Nd.
- Letter = _L // Letter/L is the set of Unicode letters, category L.
- L = _L
- Lm = _Lm // Lm is the set of Unicode characters in category Lm.
- Lo = _Lo // Lo is the set of Unicode characters in category Lo.
- Lower = _Ll // Lower is the set of Unicode lower case letters.
- Ll = _Ll // Ll is the set of Unicode characters in category Ll.
- Mark = _M // Mark/M is the set of Unicode mark characters, category M.
- M = _M
- Mc = _Mc // Mc is the set of Unicode characters in category Mc.
- Me = _Me // Me is the set of Unicode characters in category Me.
- Mn = _Mn // Mn is the set of Unicode characters in category Mn.
- Nl = _Nl // Nl is the set of Unicode characters in category Nl.
- No = _No // No is the set of Unicode characters in category No.
- Number = _N // Number/N is the set of Unicode number characters, category N.
- N = _N
- Other = _C // Other/C is the set of Unicode control and special characters, category C.
- C = _C
- Pc = _Pc // Pc is the set of Unicode characters in category Pc.
- Pd = _Pd // Pd is the set of Unicode characters in category Pd.
- Pe = _Pe // Pe is the set of Unicode characters in category Pe.
- Pf = _Pf // Pf is the set of Unicode characters in category Pf.
- Pi = _Pi // Pi is the set of Unicode characters in category Pi.
- Po = _Po // Po is the set of Unicode characters in category Po.
- Ps = _Ps // Ps is the set of Unicode characters in category Ps.
- Punct = _P // Punct/P is the set of Unicode punctuation characters, category P.
- P = _P
- Sc = _Sc // Sc is the set of Unicode characters in category Sc.
- Sk = _Sk // Sk is the set of Unicode characters in category Sk.
- Sm = _Sm // Sm is the set of Unicode characters in category Sm.
- So = _So // So is the set of Unicode characters in category So.
- Space = _Z // Space/Z is the set of Unicode space characters, category Z.
- Z = _Z
- Symbol = _S // Symbol/S is the set of Unicode symbol characters, category S.
- S = _S
- Title = _Lt // Title is the set of Unicode title case letters.
- Lt = _Lt // Lt is the set of Unicode characters in category Lt.
- Upper = _Lu // Upper is the set of Unicode upper case letters.
- Lu = _Lu // Lu is the set of Unicode characters in category Lu.
- Zl = _Zl // Zl is the set of Unicode characters in category Zl.
- Zp = _Zp // Zp is the set of Unicode characters in category Zp.
- Zs = _Zs // Zs is the set of Unicode characters in category Zs.
-)
-
-// Generated by running
-// maketables --scripts=all --url=http://www.unicode.org/Public/6.3.0/ucd/
-// DO NOT EDIT
-
-// Scripts is the set of Unicode script tables.
-var Scripts = map[string]*RangeTable{
- "Arabic": Arabic,
- "Armenian": Armenian,
- "Avestan": Avestan,
- "Balinese": Balinese,
- "Bamum": Bamum,
- "Batak": Batak,
- "Bengali": Bengali,
- "Bopomofo": Bopomofo,
- "Brahmi": Brahmi,
- "Braille": Braille,
- "Buginese": Buginese,
- "Buhid": Buhid,
- "Canadian_Aboriginal": Canadian_Aboriginal,
- "Carian": Carian,
- "Chakma": Chakma,
- "Cham": Cham,
- "Cherokee": Cherokee,
- "Common": Common,
- "Coptic": Coptic,
- "Cuneiform": Cuneiform,
- "Cypriot": Cypriot,
- "Cyrillic": Cyrillic,
- "Deseret": Deseret,
- "Devanagari": Devanagari,
- "Egyptian_Hieroglyphs": Egyptian_Hieroglyphs,
- "Ethiopic": Ethiopic,
- "Georgian": Georgian,
- "Glagolitic": Glagolitic,
- "Gothic": Gothic,
- "Greek": Greek,
- "Gujarati": Gujarati,
- "Gurmukhi": Gurmukhi,
- "Han": Han,
- "Hangul": Hangul,
- "Hanunoo": Hanunoo,
- "Hebrew": Hebrew,
- "Hiragana": Hiragana,
- "Imperial_Aramaic": Imperial_Aramaic,
- "Inherited": Inherited,
- "Inscriptional_Pahlavi": Inscriptional_Pahlavi,
- "Inscriptional_Parthian": Inscriptional_Parthian,
- "Javanese": Javanese,
- "Kaithi": Kaithi,
- "Kannada": Kannada,
- "Katakana": Katakana,
- "Kayah_Li": Kayah_Li,
- "Kharoshthi": Kharoshthi,
- "Khmer": Khmer,
- "Lao": Lao,
- "Latin": Latin,
- "Lepcha": Lepcha,
- "Limbu": Limbu,
- "Linear_B": Linear_B,
- "Lisu": Lisu,
- "Lycian": Lycian,
- "Lydian": Lydian,
- "Malayalam": Malayalam,
- "Mandaic": Mandaic,
- "Meetei_Mayek": Meetei_Mayek,
- "Meroitic_Cursive": Meroitic_Cursive,
- "Meroitic_Hieroglyphs": Meroitic_Hieroglyphs,
- "Miao": Miao,
- "Mongolian": Mongolian,
- "Myanmar": Myanmar,
- "New_Tai_Lue": New_Tai_Lue,
- "Nko": Nko,
- "Ogham": Ogham,
- "Ol_Chiki": Ol_Chiki,
- "Old_Italic": Old_Italic,
- "Old_Persian": Old_Persian,
- "Old_South_Arabian": Old_South_Arabian,
- "Old_Turkic": Old_Turkic,
- "Oriya": Oriya,
- "Osmanya": Osmanya,
- "Phags_Pa": Phags_Pa,
- "Phoenician": Phoenician,
- "Rejang": Rejang,
- "Runic": Runic,
- "Samaritan": Samaritan,
- "Saurashtra": Saurashtra,
- "Sharada": Sharada,
- "Shavian": Shavian,
- "Sinhala": Sinhala,
- "Sora_Sompeng": Sora_Sompeng,
- "Sundanese": Sundanese,
- "Syloti_Nagri": Syloti_Nagri,
- "Syriac": Syriac,
- "Tagalog": Tagalog,
- "Tagbanwa": Tagbanwa,
- "Tai_Le": Tai_Le,
- "Tai_Tham": Tai_Tham,
- "Tai_Viet": Tai_Viet,
- "Takri": Takri,
- "Tamil": Tamil,
- "Telugu": Telugu,
- "Thaana": Thaana,
- "Thai": Thai,
- "Tibetan": Tibetan,
- "Tifinagh": Tifinagh,
- "Ugaritic": Ugaritic,
- "Vai": Vai,
- "Yi": Yi,
-}
-
-var _Arabic = &RangeTable{
- R16: []Range16{
- {0x0600, 0x0604, 1},
- {0x0606, 0x060b, 1},
- {0x060d, 0x061a, 1},
- {0x061c, 0x061c, 1},
- {0x061e, 0x061e, 1},
- {0x0620, 0x063f, 1},
- {0x0641, 0x064a, 1},
- {0x0656, 0x065f, 1},
- {0x066a, 0x066f, 1},
- {0x0671, 0x06dc, 1},
- {0x06de, 0x06ff, 1},
- {0x0750, 0x077f, 1},
- {0x08a0, 0x08a0, 1},
- {0x08a2, 0x08ac, 1},
- {0x08e4, 0x08fe, 1},
- {0xfb50, 0xfbc1, 1},
- {0xfbd3, 0xfd3d, 1},
- {0xfd50, 0xfd8f, 1},
- {0xfd92, 0xfdc7, 1},
- {0xfdf0, 0xfdfc, 1},
- {0xfe70, 0xfe74, 1},
- {0xfe76, 0xfefc, 1},
- },
- R32: []Range32{
- {0x10e60, 0x10e7e, 1},
- {0x1ee00, 0x1ee03, 1},
- {0x1ee05, 0x1ee1f, 1},
- {0x1ee21, 0x1ee22, 1},
- {0x1ee24, 0x1ee24, 1},
- {0x1ee27, 0x1ee27, 1},
- {0x1ee29, 0x1ee32, 1},
- {0x1ee34, 0x1ee37, 1},
- {0x1ee39, 0x1ee39, 1},
- {0x1ee3b, 0x1ee3b, 1},
- {0x1ee42, 0x1ee42, 1},
- {0x1ee47, 0x1ee47, 1},
- {0x1ee49, 0x1ee49, 1},
- {0x1ee4b, 0x1ee4b, 1},
- {0x1ee4d, 0x1ee4f, 1},
- {0x1ee51, 0x1ee52, 1},
- {0x1ee54, 0x1ee54, 1},
- {0x1ee57, 0x1ee57, 1},
- {0x1ee59, 0x1ee59, 1},
- {0x1ee5b, 0x1ee5b, 1},
- {0x1ee5d, 0x1ee5d, 1},
- {0x1ee5f, 0x1ee5f, 1},
- {0x1ee61, 0x1ee62, 1},
- {0x1ee64, 0x1ee64, 1},
- {0x1ee67, 0x1ee6a, 1},
- {0x1ee6c, 0x1ee72, 1},
- {0x1ee74, 0x1ee77, 1},
- {0x1ee79, 0x1ee7c, 1},
- {0x1ee7e, 0x1ee7e, 1},
- {0x1ee80, 0x1ee89, 1},
- {0x1ee8b, 0x1ee9b, 1},
- {0x1eea1, 0x1eea3, 1},
- {0x1eea5, 0x1eea9, 1},
- {0x1eeab, 0x1eebb, 1},
- {0x1eef0, 0x1eef1, 1},
- },
-}
-
-var _Armenian = &RangeTable{
- R16: []Range16{
- {0x0531, 0x0556, 1},
- {0x0559, 0x055f, 1},
- {0x0561, 0x0587, 1},
- {0x058a, 0x058a, 1},
- {0x058f, 0x058f, 1},
- {0xfb13, 0xfb17, 1},
- },
-}
-
-var _Avestan = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10b00, 0x10b35, 1},
- {0x10b39, 0x10b3f, 1},
- },
-}
-
-var _Balinese = &RangeTable{
- R16: []Range16{
- {0x1b00, 0x1b4b, 1},
- {0x1b50, 0x1b7c, 1},
- },
-}
-
-var _Bamum = &RangeTable{
- R16: []Range16{
- {0xa6a0, 0xa6f7, 1},
- },
- R32: []Range32{
- {0x16800, 0x16a38, 1},
- },
-}
-
-var _Batak = &RangeTable{
- R16: []Range16{
- {0x1bc0, 0x1bf3, 1},
- {0x1bfc, 0x1bff, 1},
- },
-}
-
-var _Bengali = &RangeTable{
- R16: []Range16{
- {0x0981, 0x0983, 1},
- {0x0985, 0x098c, 1},
- {0x098f, 0x0990, 1},
- {0x0993, 0x09a8, 1},
- {0x09aa, 0x09b0, 1},
- {0x09b2, 0x09b2, 1},
- {0x09b6, 0x09b9, 1},
- {0x09bc, 0x09c4, 1},
- {0x09c7, 0x09c8, 1},
- {0x09cb, 0x09ce, 1},
- {0x09d7, 0x09d7, 1},
- {0x09dc, 0x09dd, 1},
- {0x09df, 0x09e3, 1},
- {0x09e6, 0x09fb, 1},
- },
-}
-
-var _Bopomofo = &RangeTable{
- R16: []Range16{
- {0x02ea, 0x02eb, 1},
- {0x3105, 0x312d, 1},
- {0x31a0, 0x31ba, 1},
- },
-}
-
-var _Brahmi = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x11000, 0x1104d, 1},
- {0x11052, 0x1106f, 1},
- },
-}
-
-var _Braille = &RangeTable{
- R16: []Range16{
- {0x2800, 0x28ff, 1},
- },
-}
-
-var _Buginese = &RangeTable{
- R16: []Range16{
- {0x1a00, 0x1a1b, 1},
- {0x1a1e, 0x1a1f, 1},
- },
-}
-
-var _Buhid = &RangeTable{
- R16: []Range16{
- {0x1740, 0x1753, 1},
- },
-}
-
-var _Canadian_Aboriginal = &RangeTable{
- R16: []Range16{
- {0x1400, 0x167f, 1},
- {0x18b0, 0x18f5, 1},
- },
-}
-
-var _Carian = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x102a0, 0x102d0, 1},
- },
-}
-
-var _Chakma = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x11100, 0x11134, 1},
- {0x11136, 0x11143, 1},
- },
-}
-
-var _Cham = &RangeTable{
- R16: []Range16{
- {0xaa00, 0xaa36, 1},
- {0xaa40, 0xaa4d, 1},
- {0xaa50, 0xaa59, 1},
- {0xaa5c, 0xaa5f, 1},
- },
-}
-
-var _Cherokee = &RangeTable{
- R16: []Range16{
- {0x13a0, 0x13f4, 1},
- },
-}
-
-var _Common = &RangeTable{
- R16: []Range16{
- {0x0000, 0x0040, 1},
- {0x005b, 0x0060, 1},
- {0x007b, 0x00a9, 1},
- {0x00ab, 0x00b9, 1},
- {0x00bb, 0x00bf, 1},
- {0x00d7, 0x00d7, 1},
- {0x00f7, 0x00f7, 1},
- {0x02b9, 0x02df, 1},
- {0x02e5, 0x02e9, 1},
- {0x02ec, 0x02ff, 1},
- {0x0374, 0x0374, 1},
- {0x037e, 0x037e, 1},
- {0x0385, 0x0385, 1},
- {0x0387, 0x0387, 1},
- {0x0589, 0x0589, 1},
- {0x060c, 0x060c, 1},
- {0x061b, 0x061b, 1},
- {0x061f, 0x061f, 1},
- {0x0640, 0x0640, 1},
- {0x0660, 0x0669, 1},
- {0x06dd, 0x06dd, 1},
- {0x0964, 0x0965, 1},
- {0x0e3f, 0x0e3f, 1},
- {0x0fd5, 0x0fd8, 1},
- {0x10fb, 0x10fb, 1},
- {0x16eb, 0x16ed, 1},
- {0x1735, 0x1736, 1},
- {0x1802, 0x1803, 1},
- {0x1805, 0x1805, 1},
- {0x1cd3, 0x1cd3, 1},
- {0x1ce1, 0x1ce1, 1},
- {0x1ce9, 0x1cec, 1},
- {0x1cee, 0x1cf3, 1},
- {0x1cf5, 0x1cf6, 1},
- {0x2000, 0x200b, 1},
- {0x200e, 0x2064, 1},
- {0x2066, 0x2070, 1},
- {0x2074, 0x207e, 1},
- {0x2080, 0x208e, 1},
- {0x20a0, 0x20ba, 1},
- {0x2100, 0x2125, 1},
- {0x2127, 0x2129, 1},
- {0x212c, 0x2131, 1},
- {0x2133, 0x214d, 1},
- {0x214f, 0x215f, 1},
- {0x2189, 0x2189, 1},
- {0x2190, 0x23f3, 1},
- {0x2400, 0x2426, 1},
- {0x2440, 0x244a, 1},
- {0x2460, 0x26ff, 1},
- {0x2701, 0x27ff, 1},
- {0x2900, 0x2b4c, 1},
- {0x2b50, 0x2b59, 1},
- {0x2e00, 0x2e3b, 1},
- {0x2ff0, 0x2ffb, 1},
- {0x3000, 0x3004, 1},
- {0x3006, 0x3006, 1},
- {0x3008, 0x3020, 1},
- {0x3030, 0x3037, 1},
- {0x303c, 0x303f, 1},
- {0x309b, 0x309c, 1},
- {0x30a0, 0x30a0, 1},
- {0x30fb, 0x30fc, 1},
- {0x3190, 0x319f, 1},
- {0x31c0, 0x31e3, 1},
- {0x3220, 0x325f, 1},
- {0x327f, 0x32cf, 1},
- {0x3358, 0x33ff, 1},
- {0x4dc0, 0x4dff, 1},
- {0xa700, 0xa721, 1},
- {0xa788, 0xa78a, 1},
- {0xa830, 0xa839, 1},
- {0xa9cf, 0xa9cf, 1},
- {0xfd3e, 0xfd3f, 1},
- {0xfdfd, 0xfdfd, 1},
- {0xfe10, 0xfe19, 1},
- {0xfe30, 0xfe52, 1},
- {0xfe54, 0xfe66, 1},
- {0xfe68, 0xfe6b, 1},
- {0xfeff, 0xfeff, 1},
- {0xff01, 0xff20, 1},
- {0xff3b, 0xff40, 1},
- {0xff5b, 0xff65, 1},
- {0xff70, 0xff70, 1},
- {0xff9e, 0xff9f, 1},
- {0xffe0, 0xffe6, 1},
- {0xffe8, 0xffee, 1},
- {0xfff9, 0xfffd, 1},
- },
- R32: []Range32{
- {0x10100, 0x10102, 1},
- {0x10107, 0x10133, 1},
- {0x10137, 0x1013f, 1},
- {0x10190, 0x1019b, 1},
- {0x101d0, 0x101fc, 1},
- {0x1d000, 0x1d0f5, 1},
- {0x1d100, 0x1d126, 1},
- {0x1d129, 0x1d166, 1},
- {0x1d16a, 0x1d17a, 1},
- {0x1d183, 0x1d184, 1},
- {0x1d18c, 0x1d1a9, 1},
- {0x1d1ae, 0x1d1dd, 1},
- {0x1d300, 0x1d356, 1},
- {0x1d360, 0x1d371, 1},
- {0x1d400, 0x1d454, 1},
- {0x1d456, 0x1d49c, 1},
- {0x1d49e, 0x1d49f, 1},
- {0x1d4a2, 0x1d4a2, 1},
- {0x1d4a5, 0x1d4a6, 1},
- {0x1d4a9, 0x1d4ac, 1},
- {0x1d4ae, 0x1d4b9, 1},
- {0x1d4bb, 0x1d4bb, 1},
- {0x1d4bd, 0x1d4c3, 1},
- {0x1d4c5, 0x1d505, 1},
- {0x1d507, 0x1d50a, 1},
- {0x1d50d, 0x1d514, 1},
- {0x1d516, 0x1d51c, 1},
- {0x1d51e, 0x1d539, 1},
- {0x1d53b, 0x1d53e, 1},
- {0x1d540, 0x1d544, 1},
- {0x1d546, 0x1d546, 1},
- {0x1d54a, 0x1d550, 1},
- {0x1d552, 0x1d6a5, 1},
- {0x1d6a8, 0x1d7cb, 1},
- {0x1d7ce, 0x1d7ff, 1},
- {0x1f000, 0x1f02b, 1},
- {0x1f030, 0x1f093, 1},
- {0x1f0a0, 0x1f0ae, 1},
- {0x1f0b1, 0x1f0be, 1},
- {0x1f0c1, 0x1f0cf, 1},
- {0x1f0d1, 0x1f0df, 1},
- {0x1f100, 0x1f10a, 1},
- {0x1f110, 0x1f12e, 1},
- {0x1f130, 0x1f16b, 1},
- {0x1f170, 0x1f19a, 1},
- {0x1f1e6, 0x1f1ff, 1},
- {0x1f201, 0x1f202, 1},
- {0x1f210, 0x1f23a, 1},
- {0x1f240, 0x1f248, 1},
- {0x1f250, 0x1f251, 1},
- {0x1f300, 0x1f320, 1},
- {0x1f330, 0x1f335, 1},
- {0x1f337, 0x1f37c, 1},
- {0x1f380, 0x1f393, 1},
- {0x1f3a0, 0x1f3c4, 1},
- {0x1f3c6, 0x1f3ca, 1},
- {0x1f3e0, 0x1f3f0, 1},
- {0x1f400, 0x1f43e, 1},
- {0x1f440, 0x1f440, 1},
- {0x1f442, 0x1f4f7, 1},
- {0x1f4f9, 0x1f4fc, 1},
- {0x1f500, 0x1f53d, 1},
- {0x1f540, 0x1f543, 1},
- {0x1f550, 0x1f567, 1},
- {0x1f5fb, 0x1f640, 1},
- {0x1f645, 0x1f64f, 1},
- {0x1f680, 0x1f6c5, 1},
- {0x1f700, 0x1f773, 1},
- {0xe0001, 0xe0001, 1},
- {0xe0020, 0xe007f, 1},
- },
- LatinOffset: 7,
-}
-
-var _Coptic = &RangeTable{
- R16: []Range16{
- {0x03e2, 0x03ef, 1},
- {0x2c80, 0x2cf3, 1},
- {0x2cf9, 0x2cff, 1},
- },
-}
-
-var _Cuneiform = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x12000, 0x1236e, 1},
- {0x12400, 0x12462, 1},
- {0x12470, 0x12473, 1},
- },
-}
-
-var _Cypriot = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10800, 0x10805, 1},
- {0x10808, 0x10808, 1},
- {0x1080a, 0x10835, 1},
- {0x10837, 0x10838, 1},
- {0x1083c, 0x1083c, 1},
- {0x1083f, 0x1083f, 1},
- },
-}
-
-var _Cyrillic = &RangeTable{
- R16: []Range16{
- {0x0400, 0x0484, 1},
- {0x0487, 0x0527, 1},
- {0x1d2b, 0x1d2b, 1},
- {0x1d78, 0x1d78, 1},
- {0x2de0, 0x2dff, 1},
- {0xa640, 0xa697, 1},
- {0xa69f, 0xa69f, 1},
- },
-}
-
-var _Deseret = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10400, 0x1044f, 1},
- },
-}
-
-var _Devanagari = &RangeTable{
- R16: []Range16{
- {0x0900, 0x0950, 1},
- {0x0953, 0x0963, 1},
- {0x0966, 0x0977, 1},
- {0x0979, 0x097f, 1},
- {0xa8e0, 0xa8fb, 1},
- },
-}
-
-var _Egyptian_Hieroglyphs = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x13000, 0x1342e, 1},
- },
-}
-
-var _Ethiopic = &RangeTable{
- R16: []Range16{
- {0x1200, 0x1248, 1},
- {0x124a, 0x124d, 1},
- {0x1250, 0x1256, 1},
- {0x1258, 0x1258, 1},
- {0x125a, 0x125d, 1},
- {0x1260, 0x1288, 1},
- {0x128a, 0x128d, 1},
- {0x1290, 0x12b0, 1},
- {0x12b2, 0x12b5, 1},
- {0x12b8, 0x12be, 1},
- {0x12c0, 0x12c0, 1},
- {0x12c2, 0x12c5, 1},
- {0x12c8, 0x12d6, 1},
- {0x12d8, 0x1310, 1},
- {0x1312, 0x1315, 1},
- {0x1318, 0x135a, 1},
- {0x135d, 0x137c, 1},
- {0x1380, 0x1399, 1},
- {0x2d80, 0x2d96, 1},
- {0x2da0, 0x2da6, 1},
- {0x2da8, 0x2dae, 1},
- {0x2db0, 0x2db6, 1},
- {0x2db8, 0x2dbe, 1},
- {0x2dc0, 0x2dc6, 1},
- {0x2dc8, 0x2dce, 1},
- {0x2dd0, 0x2dd6, 1},
- {0x2dd8, 0x2dde, 1},
- {0xab01, 0xab06, 1},
- {0xab09, 0xab0e, 1},
- {0xab11, 0xab16, 1},
- {0xab20, 0xab26, 1},
- {0xab28, 0xab2e, 1},
- },
-}
-
-var _Georgian = &RangeTable{
- R16: []Range16{
- {0x10a0, 0x10c5, 1},
- {0x10c7, 0x10c7, 1},
- {0x10cd, 0x10cd, 1},
- {0x10d0, 0x10fa, 1},
- {0x10fc, 0x10ff, 1},
- {0x2d00, 0x2d25, 1},
- {0x2d27, 0x2d27, 1},
- {0x2d2d, 0x2d2d, 1},
- },
-}
-
-var _Glagolitic = &RangeTable{
- R16: []Range16{
- {0x2c00, 0x2c2e, 1},
- {0x2c30, 0x2c5e, 1},
- },
-}
-
-var _Gothic = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10330, 0x1034a, 1},
- },
-}
-
-var _Greek = &RangeTable{
- R16: []Range16{
- {0x0370, 0x0373, 1},
- {0x0375, 0x0377, 1},
- {0x037a, 0x037d, 1},
- {0x0384, 0x0384, 1},
- {0x0386, 0x0386, 1},
- {0x0388, 0x038a, 1},
- {0x038c, 0x038c, 1},
- {0x038e, 0x03a1, 1},
- {0x03a3, 0x03e1, 1},
- {0x03f0, 0x03ff, 1},
- {0x1d26, 0x1d2a, 1},
- {0x1d5d, 0x1d61, 1},
- {0x1d66, 0x1d6a, 1},
- {0x1dbf, 0x1dbf, 1},
- {0x1f00, 0x1f15, 1},
- {0x1f18, 0x1f1d, 1},
- {0x1f20, 0x1f45, 1},
- {0x1f48, 0x1f4d, 1},
- {0x1f50, 0x1f57, 1},
- {0x1f59, 0x1f59, 1},
- {0x1f5b, 0x1f5b, 1},
- {0x1f5d, 0x1f5d, 1},
- {0x1f5f, 0x1f7d, 1},
- {0x1f80, 0x1fb4, 1},
- {0x1fb6, 0x1fc4, 1},
- {0x1fc6, 0x1fd3, 1},
- {0x1fd6, 0x1fdb, 1},
- {0x1fdd, 0x1fef, 1},
- {0x1ff2, 0x1ff4, 1},
- {0x1ff6, 0x1ffe, 1},
- {0x2126, 0x2126, 1},
- },
- R32: []Range32{
- {0x10140, 0x1018a, 1},
- {0x1d200, 0x1d245, 1},
- },
-}
-
-var _Gujarati = &RangeTable{
- R16: []Range16{
- {0x0a81, 0x0a83, 1},
- {0x0a85, 0x0a8d, 1},
- {0x0a8f, 0x0a91, 1},
- {0x0a93, 0x0aa8, 1},
- {0x0aaa, 0x0ab0, 1},
- {0x0ab2, 0x0ab3, 1},
- {0x0ab5, 0x0ab9, 1},
- {0x0abc, 0x0ac5, 1},
- {0x0ac7, 0x0ac9, 1},
- {0x0acb, 0x0acd, 1},
- {0x0ad0, 0x0ad0, 1},
- {0x0ae0, 0x0ae3, 1},
- {0x0ae6, 0x0af1, 1},
- },
-}
-
-var _Gurmukhi = &RangeTable{
- R16: []Range16{
- {0x0a01, 0x0a03, 1},
- {0x0a05, 0x0a0a, 1},
- {0x0a0f, 0x0a10, 1},
- {0x0a13, 0x0a28, 1},
- {0x0a2a, 0x0a30, 1},
- {0x0a32, 0x0a33, 1},
- {0x0a35, 0x0a36, 1},
- {0x0a38, 0x0a39, 1},
- {0x0a3c, 0x0a3c, 1},
- {0x0a3e, 0x0a42, 1},
- {0x0a47, 0x0a48, 1},
- {0x0a4b, 0x0a4d, 1},
- {0x0a51, 0x0a51, 1},
- {0x0a59, 0x0a5c, 1},
- {0x0a5e, 0x0a5e, 1},
- {0x0a66, 0x0a75, 1},
- },
-}
-
-var _Han = &RangeTable{
- R16: []Range16{
- {0x2e80, 0x2e99, 1},
- {0x2e9b, 0x2ef3, 1},
- {0x2f00, 0x2fd5, 1},
- {0x3005, 0x3005, 1},
- {0x3007, 0x3007, 1},
- {0x3021, 0x3029, 1},
- {0x3038, 0x303b, 1},
- {0x3400, 0x4db5, 1},
- {0x4e00, 0x9fcc, 1},
- {0xf900, 0xfa6d, 1},
- {0xfa70, 0xfad9, 1},
- },
- R32: []Range32{
- {0x20000, 0x2a6d6, 1},
- {0x2a700, 0x2b734, 1},
- {0x2b740, 0x2b81d, 1},
- {0x2f800, 0x2fa1d, 1},
- },
-}
-
-var _Hangul = &RangeTable{
- R16: []Range16{
- {0x1100, 0x11ff, 1},
- {0x302e, 0x302f, 1},
- {0x3131, 0x318e, 1},
- {0x3200, 0x321e, 1},
- {0x3260, 0x327e, 1},
- {0xa960, 0xa97c, 1},
- {0xac00, 0xd7a3, 1},
- {0xd7b0, 0xd7c6, 1},
- {0xd7cb, 0xd7fb, 1},
- {0xffa0, 0xffbe, 1},
- {0xffc2, 0xffc7, 1},
- {0xffca, 0xffcf, 1},
- {0xffd2, 0xffd7, 1},
- {0xffda, 0xffdc, 1},
- },
-}
-
-var _Hanunoo = &RangeTable{
- R16: []Range16{
- {0x1720, 0x1734, 1},
- },
-}
-
-var _Hebrew = &RangeTable{
- R16: []Range16{
- {0x0591, 0x05c7, 1},
- {0x05d0, 0x05ea, 1},
- {0x05f0, 0x05f4, 1},
- {0xfb1d, 0xfb36, 1},
- {0xfb38, 0xfb3c, 1},
- {0xfb3e, 0xfb3e, 1},
- {0xfb40, 0xfb41, 1},
- {0xfb43, 0xfb44, 1},
- {0xfb46, 0xfb4f, 1},
- },
-}
-
-var _Hiragana = &RangeTable{
- R16: []Range16{
- {0x3041, 0x3096, 1},
- {0x309d, 0x309f, 1},
- },
- R32: []Range32{
- {0x1b001, 0x1b001, 1},
- {0x1f200, 0x1f200, 1},
- },
-}
-
-var _Imperial_Aramaic = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10840, 0x10855, 1},
- {0x10857, 0x1085f, 1},
- },
-}
-
-var _Inherited = &RangeTable{
- R16: []Range16{
- {0x0300, 0x036f, 1},
- {0x0485, 0x0486, 1},
- {0x064b, 0x0655, 1},
- {0x0670, 0x0670, 1},
- {0x0951, 0x0952, 1},
- {0x1cd0, 0x1cd2, 1},
- {0x1cd4, 0x1ce0, 1},
- {0x1ce2, 0x1ce8, 1},
- {0x1ced, 0x1ced, 1},
- {0x1cf4, 0x1cf4, 1},
- {0x1dc0, 0x1de6, 1},
- {0x1dfc, 0x1dff, 1},
- {0x200c, 0x200d, 1},
- {0x20d0, 0x20f0, 1},
- {0x302a, 0x302d, 1},
- {0x3099, 0x309a, 1},
- {0xfe00, 0xfe0f, 1},
- {0xfe20, 0xfe26, 1},
- },
- R32: []Range32{
- {0x101fd, 0x101fd, 1},
- {0x1d167, 0x1d169, 1},
- {0x1d17b, 0x1d182, 1},
- {0x1d185, 0x1d18b, 1},
- {0x1d1aa, 0x1d1ad, 1},
- {0xe0100, 0xe01ef, 1},
- },
-}
-
-var _Inscriptional_Pahlavi = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10b60, 0x10b72, 1},
- {0x10b78, 0x10b7f, 1},
- },
-}
-
-var _Inscriptional_Parthian = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10b40, 0x10b55, 1},
- {0x10b58, 0x10b5f, 1},
- },
-}
-
-var _Javanese = &RangeTable{
- R16: []Range16{
- {0xa980, 0xa9cd, 1},
- {0xa9d0, 0xa9d9, 1},
- {0xa9de, 0xa9df, 1},
- },
-}
-
-var _Kaithi = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x11080, 0x110c1, 1},
- },
-}
-
-var _Kannada = &RangeTable{
- R16: []Range16{
- {0x0c82, 0x0c83, 1},
- {0x0c85, 0x0c8c, 1},
- {0x0c8e, 0x0c90, 1},
- {0x0c92, 0x0ca8, 1},
- {0x0caa, 0x0cb3, 1},
- {0x0cb5, 0x0cb9, 1},
- {0x0cbc, 0x0cc4, 1},
- {0x0cc6, 0x0cc8, 1},
- {0x0cca, 0x0ccd, 1},
- {0x0cd5, 0x0cd6, 1},
- {0x0cde, 0x0cde, 1},
- {0x0ce0, 0x0ce3, 1},
- {0x0ce6, 0x0cef, 1},
- {0x0cf1, 0x0cf2, 1},
- },
-}
-
-var _Katakana = &RangeTable{
- R16: []Range16{
- {0x30a1, 0x30fa, 1},
- {0x30fd, 0x30ff, 1},
- {0x31f0, 0x31ff, 1},
- {0x32d0, 0x32fe, 1},
- {0x3300, 0x3357, 1},
- {0xff66, 0xff6f, 1},
- {0xff71, 0xff9d, 1},
- },
- R32: []Range32{
- {0x1b000, 0x1b000, 1},
- },
-}
-
-var _Kayah_Li = &RangeTable{
- R16: []Range16{
- {0xa900, 0xa92f, 1},
- },
-}
-
-var _Kharoshthi = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10a00, 0x10a03, 1},
- {0x10a05, 0x10a06, 1},
- {0x10a0c, 0x10a13, 1},
- {0x10a15, 0x10a17, 1},
- {0x10a19, 0x10a33, 1},
- {0x10a38, 0x10a3a, 1},
- {0x10a3f, 0x10a47, 1},
- {0x10a50, 0x10a58, 1},
- },
-}
-
-var _Khmer = &RangeTable{
- R16: []Range16{
- {0x1780, 0x17dd, 1},
- {0x17e0, 0x17e9, 1},
- {0x17f0, 0x17f9, 1},
- {0x19e0, 0x19ff, 1},
- },
-}
-
-var _Lao = &RangeTable{
- R16: []Range16{
- {0x0e81, 0x0e82, 1},
- {0x0e84, 0x0e84, 1},
- {0x0e87, 0x0e88, 1},
- {0x0e8a, 0x0e8a, 1},
- {0x0e8d, 0x0e8d, 1},
- {0x0e94, 0x0e97, 1},
- {0x0e99, 0x0e9f, 1},
- {0x0ea1, 0x0ea3, 1},
- {0x0ea5, 0x0ea5, 1},
- {0x0ea7, 0x0ea7, 1},
- {0x0eaa, 0x0eab, 1},
- {0x0ead, 0x0eb9, 1},
- {0x0ebb, 0x0ebd, 1},
- {0x0ec0, 0x0ec4, 1},
- {0x0ec6, 0x0ec6, 1},
- {0x0ec8, 0x0ecd, 1},
- {0x0ed0, 0x0ed9, 1},
- {0x0edc, 0x0edf, 1},
- },
-}
-
-var _Latin = &RangeTable{
- R16: []Range16{
- {0x0041, 0x005a, 1},
- {0x0061, 0x007a, 1},
- {0x00aa, 0x00aa, 1},
- {0x00ba, 0x00ba, 1},
- {0x00c0, 0x00d6, 1},
- {0x00d8, 0x00f6, 1},
- {0x00f8, 0x02b8, 1},
- {0x02e0, 0x02e4, 1},
- {0x1d00, 0x1d25, 1},
- {0x1d2c, 0x1d5c, 1},
- {0x1d62, 0x1d65, 1},
- {0x1d6b, 0x1d77, 1},
- {0x1d79, 0x1dbe, 1},
- {0x1e00, 0x1eff, 1},
- {0x2071, 0x2071, 1},
- {0x207f, 0x207f, 1},
- {0x2090, 0x209c, 1},
- {0x212a, 0x212b, 1},
- {0x2132, 0x2132, 1},
- {0x214e, 0x214e, 1},
- {0x2160, 0x2188, 1},
- {0x2c60, 0x2c7f, 1},
- {0xa722, 0xa787, 1},
- {0xa78b, 0xa78e, 1},
- {0xa790, 0xa793, 1},
- {0xa7a0, 0xa7aa, 1},
- {0xa7f8, 0xa7ff, 1},
- {0xfb00, 0xfb06, 1},
- {0xff21, 0xff3a, 1},
- {0xff41, 0xff5a, 1},
- },
- LatinOffset: 6,
-}
-
-var _Lepcha = &RangeTable{
- R16: []Range16{
- {0x1c00, 0x1c37, 1},
- {0x1c3b, 0x1c49, 1},
- {0x1c4d, 0x1c4f, 1},
- },
-}
-
-var _Limbu = &RangeTable{
- R16: []Range16{
- {0x1900, 0x191c, 1},
- {0x1920, 0x192b, 1},
- {0x1930, 0x193b, 1},
- {0x1940, 0x1940, 1},
- {0x1944, 0x194f, 1},
- },
-}
-
-var _Linear_B = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10000, 0x1000b, 1},
- {0x1000d, 0x10026, 1},
- {0x10028, 0x1003a, 1},
- {0x1003c, 0x1003d, 1},
- {0x1003f, 0x1004d, 1},
- {0x10050, 0x1005d, 1},
- {0x10080, 0x100fa, 1},
- },
-}
-
-var _Lisu = &RangeTable{
- R16: []Range16{
- {0xa4d0, 0xa4ff, 1},
- },
-}
-
-var _Lycian = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10280, 0x1029c, 1},
- },
-}
-
-var _Lydian = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10920, 0x10939, 1},
- {0x1093f, 0x1093f, 1},
- },
-}
-
-var _Malayalam = &RangeTable{
- R16: []Range16{
- {0x0d02, 0x0d03, 1},
- {0x0d05, 0x0d0c, 1},
- {0x0d0e, 0x0d10, 1},
- {0x0d12, 0x0d3a, 1},
- {0x0d3d, 0x0d44, 1},
- {0x0d46, 0x0d48, 1},
- {0x0d4a, 0x0d4e, 1},
- {0x0d57, 0x0d57, 1},
- {0x0d60, 0x0d63, 1},
- {0x0d66, 0x0d75, 1},
- {0x0d79, 0x0d7f, 1},
- },
-}
-
-var _Mandaic = &RangeTable{
- R16: []Range16{
- {0x0840, 0x085b, 1},
- {0x085e, 0x085e, 1},
- },
-}
-
-var _Meetei_Mayek = &RangeTable{
- R16: []Range16{
- {0xaae0, 0xaaf6, 1},
- {0xabc0, 0xabed, 1},
- {0xabf0, 0xabf9, 1},
- },
-}
-
-var _Meroitic_Cursive = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x109a0, 0x109b7, 1},
- {0x109be, 0x109bf, 1},
- },
-}
-
-var _Meroitic_Hieroglyphs = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10980, 0x1099f, 1},
- },
-}
-
-var _Miao = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x16f00, 0x16f44, 1},
- {0x16f50, 0x16f7e, 1},
- {0x16f8f, 0x16f9f, 1},
- },
-}
-
-var _Mongolian = &RangeTable{
- R16: []Range16{
- {0x1800, 0x1801, 1},
- {0x1804, 0x1804, 1},
- {0x1806, 0x180e, 1},
- {0x1810, 0x1819, 1},
- {0x1820, 0x1877, 1},
- {0x1880, 0x18aa, 1},
- },
-}
-
-var _Myanmar = &RangeTable{
- R16: []Range16{
- {0x1000, 0x109f, 1},
- {0xaa60, 0xaa7b, 1},
- },
-}
-
-var _New_Tai_Lue = &RangeTable{
- R16: []Range16{
- {0x1980, 0x19ab, 1},
- {0x19b0, 0x19c9, 1},
- {0x19d0, 0x19da, 1},
- {0x19de, 0x19df, 1},
- },
-}
-
-var _Nko = &RangeTable{
- R16: []Range16{
- {0x07c0, 0x07fa, 1},
- },
-}
-
-var _Ogham = &RangeTable{
- R16: []Range16{
- {0x1680, 0x169c, 1},
- },
-}
-
-var _Ol_Chiki = &RangeTable{
- R16: []Range16{
- {0x1c50, 0x1c7f, 1},
- },
-}
-
-var _Old_Italic = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10300, 0x1031e, 1},
- {0x10320, 0x10323, 1},
- },
-}
-
-var _Old_Persian = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x103a0, 0x103c3, 1},
- {0x103c8, 0x103d5, 1},
- },
-}
-
-var _Old_South_Arabian = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10a60, 0x10a7f, 1},
- },
-}
-
-var _Old_Turkic = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10c00, 0x10c48, 1},
- },
-}
-
-var _Oriya = &RangeTable{
- R16: []Range16{
- {0x0b01, 0x0b03, 1},
- {0x0b05, 0x0b0c, 1},
- {0x0b0f, 0x0b10, 1},
- {0x0b13, 0x0b28, 1},
- {0x0b2a, 0x0b30, 1},
- {0x0b32, 0x0b33, 1},
- {0x0b35, 0x0b39, 1},
- {0x0b3c, 0x0b44, 1},
- {0x0b47, 0x0b48, 1},
- {0x0b4b, 0x0b4d, 1},
- {0x0b56, 0x0b57, 1},
- {0x0b5c, 0x0b5d, 1},
- {0x0b5f, 0x0b63, 1},
- {0x0b66, 0x0b77, 1},
- },
-}
-
-var _Osmanya = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10480, 0x1049d, 1},
- {0x104a0, 0x104a9, 1},
- },
-}
-
-var _Phags_Pa = &RangeTable{
- R16: []Range16{
- {0xa840, 0xa877, 1},
- },
-}
-
-var _Phoenician = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10900, 0x1091b, 1},
- {0x1091f, 0x1091f, 1},
- },
-}
-
-var _Rejang = &RangeTable{
- R16: []Range16{
- {0xa930, 0xa953, 1},
- {0xa95f, 0xa95f, 1},
- },
-}
-
-var _Runic = &RangeTable{
- R16: []Range16{
- {0x16a0, 0x16ea, 1},
- {0x16ee, 0x16f0, 1},
- },
-}
-
-var _Samaritan = &RangeTable{
- R16: []Range16{
- {0x0800, 0x082d, 1},
- {0x0830, 0x083e, 1},
- },
-}
-
-var _Saurashtra = &RangeTable{
- R16: []Range16{
- {0xa880, 0xa8c4, 1},
- {0xa8ce, 0xa8d9, 1},
- },
-}
-
-var _Sharada = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x11180, 0x111c8, 1},
- {0x111d0, 0x111d9, 1},
- },
-}
-
-var _Shavian = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10450, 0x1047f, 1},
- },
-}
-
-var _Sinhala = &RangeTable{
- R16: []Range16{
- {0x0d82, 0x0d83, 1},
- {0x0d85, 0x0d96, 1},
- {0x0d9a, 0x0db1, 1},
- {0x0db3, 0x0dbb, 1},
- {0x0dbd, 0x0dbd, 1},
- {0x0dc0, 0x0dc6, 1},
- {0x0dca, 0x0dca, 1},
- {0x0dcf, 0x0dd4, 1},
- {0x0dd6, 0x0dd6, 1},
- {0x0dd8, 0x0ddf, 1},
- {0x0df2, 0x0df4, 1},
- },
-}
-
-var _Sora_Sompeng = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x110d0, 0x110e8, 1},
- {0x110f0, 0x110f9, 1},
- },
-}
-
-var _Sundanese = &RangeTable{
- R16: []Range16{
- {0x1b80, 0x1bbf, 1},
- {0x1cc0, 0x1cc7, 1},
- },
-}
-
-var _Syloti_Nagri = &RangeTable{
- R16: []Range16{
- {0xa800, 0xa82b, 1},
- },
-}
-
-var _Syriac = &RangeTable{
- R16: []Range16{
- {0x0700, 0x070d, 1},
- {0x070f, 0x074a, 1},
- {0x074d, 0x074f, 1},
- },
-}
-
-var _Tagalog = &RangeTable{
- R16: []Range16{
- {0x1700, 0x170c, 1},
- {0x170e, 0x1714, 1},
- },
-}
-
-var _Tagbanwa = &RangeTable{
- R16: []Range16{
- {0x1760, 0x176c, 1},
- {0x176e, 0x1770, 1},
- {0x1772, 0x1773, 1},
- },
-}
-
-var _Tai_Le = &RangeTable{
- R16: []Range16{
- {0x1950, 0x196d, 1},
- {0x1970, 0x1974, 1},
- },
-}
-
-var _Tai_Tham = &RangeTable{
- R16: []Range16{
- {0x1a20, 0x1a5e, 1},
- {0x1a60, 0x1a7c, 1},
- {0x1a7f, 0x1a89, 1},
- {0x1a90, 0x1a99, 1},
- {0x1aa0, 0x1aad, 1},
- },
-}
-
-var _Tai_Viet = &RangeTable{
- R16: []Range16{
- {0xaa80, 0xaac2, 1},
- {0xaadb, 0xaadf, 1},
- },
-}
-
-var _Takri = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x11680, 0x116b7, 1},
- {0x116c0, 0x116c9, 1},
- },
-}
-
-var _Tamil = &RangeTable{
- R16: []Range16{
- {0x0b82, 0x0b83, 1},
- {0x0b85, 0x0b8a, 1},
- {0x0b8e, 0x0b90, 1},
- {0x0b92, 0x0b95, 1},
- {0x0b99, 0x0b9a, 1},
- {0x0b9c, 0x0b9c, 1},
- {0x0b9e, 0x0b9f, 1},
- {0x0ba3, 0x0ba4, 1},
- {0x0ba8, 0x0baa, 1},
- {0x0bae, 0x0bb9, 1},
- {0x0bbe, 0x0bc2, 1},
- {0x0bc6, 0x0bc8, 1},
- {0x0bca, 0x0bcd, 1},
- {0x0bd0, 0x0bd0, 1},
- {0x0bd7, 0x0bd7, 1},
- {0x0be6, 0x0bfa, 1},
- },
-}
-
-var _Telugu = &RangeTable{
- R16: []Range16{
- {0x0c01, 0x0c03, 1},
- {0x0c05, 0x0c0c, 1},
- {0x0c0e, 0x0c10, 1},
- {0x0c12, 0x0c28, 1},
- {0x0c2a, 0x0c33, 1},
- {0x0c35, 0x0c39, 1},
- {0x0c3d, 0x0c44, 1},
- {0x0c46, 0x0c48, 1},
- {0x0c4a, 0x0c4d, 1},
- {0x0c55, 0x0c56, 1},
- {0x0c58, 0x0c59, 1},
- {0x0c60, 0x0c63, 1},
- {0x0c66, 0x0c6f, 1},
- {0x0c78, 0x0c7f, 1},
- },
-}
-
-var _Thaana = &RangeTable{
- R16: []Range16{
- {0x0780, 0x07b1, 1},
- },
-}
-
-var _Thai = &RangeTable{
- R16: []Range16{
- {0x0e01, 0x0e3a, 1},
- {0x0e40, 0x0e5b, 1},
- },
-}
-
-var _Tibetan = &RangeTable{
- R16: []Range16{
- {0x0f00, 0x0f47, 1},
- {0x0f49, 0x0f6c, 1},
- {0x0f71, 0x0f97, 1},
- {0x0f99, 0x0fbc, 1},
- {0x0fbe, 0x0fcc, 1},
- {0x0fce, 0x0fd4, 1},
- {0x0fd9, 0x0fda, 1},
- },
-}
-
-var _Tifinagh = &RangeTable{
- R16: []Range16{
- {0x2d30, 0x2d67, 1},
- {0x2d6f, 0x2d70, 1},
- {0x2d7f, 0x2d7f, 1},
- },
-}
-
-var _Ugaritic = &RangeTable{
- R16: []Range16{},
- R32: []Range32{
- {0x10380, 0x1039d, 1},
- {0x1039f, 0x1039f, 1},
- },
-}
-
-var _Vai = &RangeTable{
- R16: []Range16{
- {0xa500, 0xa62b, 1},
- },
-}
-
-var _Yi = &RangeTable{
- R16: []Range16{
- {0xa000, 0xa48c, 1},
- {0xa490, 0xa4c6, 1},
- },
-}
-
-// These variables have type *RangeTable.
-var (
- Arabic = _Arabic // Arabic is the set of Unicode characters in script Arabic.
- Armenian = _Armenian // Armenian is the set of Unicode characters in script Armenian.
- Avestan = _Avestan // Avestan is the set of Unicode characters in script Avestan.
- Balinese = _Balinese // Balinese is the set of Unicode characters in script Balinese.
- Bamum = _Bamum // Bamum is the set of Unicode characters in script Bamum.
- Batak = _Batak // Batak is the set of Unicode characters in script Batak.
- Bengali = _Bengali // Bengali is the set of Unicode characters in script Bengali.
- Bopomofo = _Bopomofo // Bopomofo is the set of Unicode characters in script Bopomofo.
- Brahmi = _Brahmi // Brahmi is the set of Unicode characters in script Brahmi.
- Braille = _Braille // Braille is the set of Unicode characters in script Braille.
- Buginese = _Buginese // Buginese is the set of Unicode characters in script Buginese.
- Buhid = _Buhid // Buhid is the set of Unicode characters in script Buhid.
- Canadian_Aboriginal = _Canadian_Aboriginal // Canadian_Aboriginal is the set of Unicode characters in script Canadian_Aboriginal.
- Carian = _Carian // Carian is the set of Unicode characters in script Carian.
- Chakma = _Chakma // Chakma is the set of Unicode characters in script Chakma.
- Cham = _Cham // Cham is the set of Unicode characters in script Cham.
- Cherokee = _Cherokee // Cherokee is the set of Unicode characters in script Cherokee.
- Common = _Common // Common is the set of Unicode characters in script Common.
- Coptic = _Coptic // Coptic is the set of Unicode characters in script Coptic.
- Cuneiform = _Cuneiform // Cuneiform is the set of Unicode characters in script Cuneiform.
- Cypriot = _Cypriot // Cypriot is the set of Unicode characters in script Cypriot.
- Cyrillic = _Cyrillic // Cyrillic is the set of Unicode characters in script Cyrillic.
- Deseret = _Deseret // Deseret is the set of Unicode characters in script Deseret.
- Devanagari = _Devanagari // Devanagari is the set of Unicode characters in script Devanagari.
- Egyptian_Hieroglyphs = _Egyptian_Hieroglyphs // Egyptian_Hieroglyphs is the set of Unicode characters in script Egyptian_Hieroglyphs.
- Ethiopic = _Ethiopic // Ethiopic is the set of Unicode characters in script Ethiopic.
- Georgian = _Georgian // Georgian is the set of Unicode characters in script Georgian.
- Glagolitic = _Glagolitic // Glagolitic is the set of Unicode characters in script Glagolitic.
- Gothic = _Gothic // Gothic is the set of Unicode characters in script Gothic.
- Greek = _Greek // Greek is the set of Unicode characters in script Greek.
- Gujarati = _Gujarati // Gujarati is the set of Unicode characters in script Gujarati.
- Gurmukhi = _Gurmukhi // Gurmukhi is the set of Unicode characters in script Gurmukhi.
- Han = _Han // Han is the set of Unicode characters in script Han.
- Hangul = _Hangul // Hangul is the set of Unicode characters in script Hangul.
- Hanunoo = _Hanunoo // Hanunoo is the set of Unicode characters in script Hanunoo.
- Hebrew = _Hebrew // Hebrew is the set of Unicode characters in script Hebrew.
- Hiragana = _Hiragana // Hiragana is the set of Unicode characters in script Hiragana.
- Imperial_Aramaic = _Imperial_Aramaic // Imperial_Aramaic is the set of Unicode characters in script Imperial_Aramaic.
- Inherited = _Inherited // Inherited is the set of Unicode characters in script Inherited.
- Inscriptional_Pahlavi = _Inscriptional_Pahlavi // Inscriptional_Pahlavi is the set of Unicode characters in script Inscriptional_Pahlavi.
- Inscriptional_Parthian = _Inscriptional_Parthian // Inscriptional_Parthian is the set of Unicode characters in script Inscriptional_Parthian.
- Javanese = _Javanese // Javanese is the set of Unicode characters in script Javanese.
- Kaithi = _Kaithi // Kaithi is the set of Unicode characters in script Kaithi.
- Kannada = _Kannada // Kannada is the set of Unicode characters in script Kannada.
- Katakana = _Katakana // Katakana is the set of Unicode characters in script Katakana.
- Kayah_Li = _Kayah_Li // Kayah_Li is the set of Unicode characters in script Kayah_Li.
- Kharoshthi = _Kharoshthi // Kharoshthi is the set of Unicode characters in script Kharoshthi.
- Khmer = _Khmer // Khmer is the set of Unicode characters in script Khmer.
- Lao = _Lao // Lao is the set of Unicode characters in script Lao.
- Latin = _Latin // Latin is the set of Unicode characters in script Latin.
- Lepcha = _Lepcha // Lepcha is the set of Unicode characters in script Lepcha.
- Limbu = _Limbu // Limbu is the set of Unicode characters in script Limbu.
- Linear_B = _Linear_B // Linear_B is the set of Unicode characters in script Linear_B.
- Lisu = _Lisu // Lisu is the set of Unicode characters in script Lisu.
- Lycian = _Lycian // Lycian is the set of Unicode characters in script Lycian.
- Lydian = _Lydian // Lydian is the set of Unicode characters in script Lydian.
- Malayalam = _Malayalam // Malayalam is the set of Unicode characters in script Malayalam.
- Mandaic = _Mandaic // Mandaic is the set of Unicode characters in script Mandaic.
- Meetei_Mayek = _Meetei_Mayek // Meetei_Mayek is the set of Unicode characters in script Meetei_Mayek.
- Meroitic_Cursive = _Meroitic_Cursive // Meroitic_Cursive is the set of Unicode characters in script Meroitic_Cursive.
- Meroitic_Hieroglyphs = _Meroitic_Hieroglyphs // Meroitic_Hieroglyphs is the set of Unicode characters in script Meroitic_Hieroglyphs.
- Miao = _Miao // Miao is the set of Unicode characters in script Miao.
- Mongolian = _Mongolian // Mongolian is the set of Unicode characters in script Mongolian.
- Myanmar = _Myanmar // Myanmar is the set of Unicode characters in script Myanmar.
- New_Tai_Lue = _New_Tai_Lue // New_Tai_Lue is the set of Unicode characters in script New_Tai_Lue.
- Nko = _Nko // Nko is the set of Unicode characters in script Nko.
- Ogham = _Ogham // Ogham is the set of Unicode characters in script Ogham.
- Ol_Chiki = _Ol_Chiki // Ol_Chiki is the set of Unicode characters in script Ol_Chiki.
- Old_Italic = _Old_Italic // Old_Italic is the set of Unicode characters in script Old_Italic.
- Old_Persian = _Old_Persian // Old_Persian is the set of Unicode characters in script Old_Persian.
- Old_South_Arabian = _Old_South_Arabian // Old_South_Arabian is the set of Unicode characters in script Old_South_Arabian.
- Old_Turkic = _Old_Turkic // Old_Turkic is the set of Unicode characters in script Old_Turkic.
- Oriya = _Oriya // Oriya is the set of Unicode characters in script Oriya.
- Osmanya = _Osmanya // Osmanya is the set of Unicode characters in script Osmanya.
- Phags_Pa = _Phags_Pa // Phags_Pa is the set of Unicode characters in script Phags_Pa.
- Phoenician = _Phoenician // Phoenician is the set of Unicode characters in script Phoenician.
- Rejang = _Rejang // Rejang is the set of Unicode characters in script Rejang.
- Runic = _Runic // Runic is the set of Unicode characters in script Runic.
- Samaritan = _Samaritan // Samaritan is the set of Unicode characters in script Samaritan.
- Saurashtra = _Saurashtra // Saurashtra is the set of Unicode characters in script Saurashtra.
- Sharada = _Sharada // Sharada is the set of Unicode characters in script Sharada.
- Shavian = _Shavian // Shavian is the set of Unicode characters in script Shavian.
- Sinhala = _Sinhala // Sinhala is the set of Unicode characters in script Sinhala.
- Sora_Sompeng = _Sora_Sompeng // Sora_Sompeng is the set of Unicode characters in script Sora_Sompeng.
- Sundanese = _Sundanese // Sundanese is the set of Unicode characters in script Sundanese.
- Syloti_Nagri = _Syloti_Nagri // Syloti_Nagri is the set of Unicode characters in script Syloti_Nagri.
- Syriac = _Syriac // Syriac is the set of Unicode characters in script Syriac.
- Tagalog = _Tagalog // Tagalog is the set of Unicode characters in script Tagalog.
- Tagbanwa = _Tagbanwa // Tagbanwa is the set of Unicode characters in script Tagbanwa.
- Tai_Le = _Tai_Le // Tai_Le is the set of Unicode characters in script Tai_Le.
- Tai_Tham = _Tai_Tham // Tai_Tham is the set of Unicode characters in script Tai_Tham.
- Tai_Viet = _Tai_Viet // Tai_Viet is the set of Unicode characters in script Tai_Viet.
- Takri = _Takri // Takri is the set of Unicode characters in script Takri.
- Tamil = _Tamil // Tamil is the set of Unicode characters in script Tamil.
- Telugu = _Telugu // Telugu is the set of Unicode characters in script Telugu.
- Thaana = _Thaana // Thaana is the set of Unicode characters in script Thaana.
- Thai = _Thai // Thai is the set of Unicode characters in script Thai.
- Tibetan = _Tibetan // Tibetan is the set of Unicode characters in script Tibetan.
- Tifinagh = _Tifinagh // Tifinagh is the set of Unicode characters in script Tifinagh.
- Ugaritic = _Ugaritic // Ugaritic is the set of Unicode characters in script Ugaritic.
- Vai = _Vai // Vai is the set of Unicode characters in script Vai.
- Yi = _Yi // Yi is the set of Unicode characters in script Yi.
-)
-
-// Generated by running
-// maketables --props=all --url=http://www.unicode.org/Public/6.3.0/ucd/
-// DO NOT EDIT
-
-// Properties is the set of Unicode property tables.
-var Properties = map[string]*RangeTable{
- "ASCII_Hex_Digit": ASCII_Hex_Digit,
- "Bidi_Control": Bidi_Control,
- "Dash": Dash,
- "Deprecated": Deprecated,
- "Diacritic": Diacritic,
- "Extender": Extender,
- "Hex_Digit": Hex_Digit,
- "Hyphen": Hyphen,
- "IDS_Binary_Operator": IDS_Binary_Operator,
- "IDS_Trinary_Operator": IDS_Trinary_Operator,
- "Ideographic": Ideographic,
- "Join_Control": Join_Control,
- "Logical_Order_Exception": Logical_Order_Exception,
- "Noncharacter_Code_Point": Noncharacter_Code_Point,
- "Other_Alphabetic": Other_Alphabetic,
- "Other_Default_Ignorable_Code_Point": Other_Default_Ignorable_Code_Point,
- "Other_Grapheme_Extend": Other_Grapheme_Extend,
- "Other_ID_Continue": Other_ID_Continue,
- "Other_ID_Start": Other_ID_Start,
- "Other_Lowercase": Other_Lowercase,
- "Other_Math": Other_Math,
- "Other_Uppercase": Other_Uppercase,
- "Pattern_Syntax": Pattern_Syntax,
- "Pattern_White_Space": Pattern_White_Space,
- "Quotation_Mark": Quotation_Mark,
- "Radical": Radical,
- "STerm": STerm,
- "Soft_Dotted": Soft_Dotted,
- "Terminal_Punctuation": Terminal_Punctuation,
- "Unified_Ideograph": Unified_Ideograph,
- "Variation_Selector": Variation_Selector,
- "White_Space": White_Space,
-}
-
-var _ASCII_Hex_Digit = &RangeTable{
- R16: []Range16{
- {0x0030, 0x0039, 1},
- {0x0041, 0x0046, 1},
- {0x0061, 0x0066, 1},
- },
- LatinOffset: 3,
-}
-
-var _Bidi_Control = &RangeTable{
- R16: []Range16{
- {0x061c, 0x061c, 1},
- {0x200e, 0x200f, 1},
- {0x202a, 0x202e, 1},
- {0x2066, 0x2069, 1},
- },
-}
-
-var _Dash = &RangeTable{
- R16: []Range16{
- {0x002d, 0x002d, 1},
- {0x058a, 0x058a, 1},
- {0x05be, 0x05be, 1},
- {0x1400, 0x1400, 1},
- {0x1806, 0x1806, 1},
- {0x2010, 0x2015, 1},
- {0x2053, 0x2053, 1},
- {0x207b, 0x207b, 1},
- {0x208b, 0x208b, 1},
- {0x2212, 0x2212, 1},
- {0x2e17, 0x2e17, 1},
- {0x2e1a, 0x2e1a, 1},
- {0x2e3a, 0x2e3b, 1},
- {0x301c, 0x301c, 1},
- {0x3030, 0x3030, 1},
- {0x30a0, 0x30a0, 1},
- {0xfe31, 0xfe32, 1},
- {0xfe58, 0xfe58, 1},
- {0xfe63, 0xfe63, 1},
- {0xff0d, 0xff0d, 1},
- },
- LatinOffset: 1,
-}
-
-var _Deprecated = &RangeTable{
- R16: []Range16{
- {0x0149, 0x0149, 1},
- {0x0673, 0x0673, 1},
- {0x0f77, 0x0f77, 1},
- {0x0f79, 0x0f79, 1},
- {0x17a3, 0x17a4, 1},
- {0x206a, 0x206f, 1},
- {0x2329, 0x232a, 1},
- },
- R32: []Range32{
- {0xe0001, 0xe0001, 1},
- {0xe0020, 0xe007f, 1},
- },
-}
-
-var _Diacritic = &RangeTable{
- R16: []Range16{
- {0x005e, 0x005e, 1},
- {0x0060, 0x0060, 1},
- {0x00a8, 0x00a8, 1},
- {0x00af, 0x00af, 1},
- {0x00b4, 0x00b4, 1},
- {0x00b7, 0x00b8, 1},
- {0x02b0, 0x034e, 1},
- {0x0350, 0x0357, 1},
- {0x035d, 0x0362, 1},
- {0x0374, 0x0375, 1},
- {0x037a, 0x037a, 1},
- {0x0384, 0x0385, 1},
- {0x0483, 0x0487, 1},
- {0x0559, 0x0559, 1},
- {0x0591, 0x05a1, 1},
- {0x05a3, 0x05bd, 1},
- {0x05bf, 0x05bf, 1},
- {0x05c1, 0x05c2, 1},
- {0x05c4, 0x05c4, 1},
- {0x064b, 0x0652, 1},
- {0x0657, 0x0658, 1},
- {0x06df, 0x06e0, 1},
- {0x06e5, 0x06e6, 1},
- {0x06ea, 0x06ec, 1},
- {0x0730, 0x074a, 1},
- {0x07a6, 0x07b0, 1},
- {0x07eb, 0x07f5, 1},
- {0x0818, 0x0819, 1},
- {0x08e4, 0x08fe, 1},
- {0x093c, 0x093c, 1},
- {0x094d, 0x094d, 1},
- {0x0951, 0x0954, 1},
- {0x0971, 0x0971, 1},
- {0x09bc, 0x09bc, 1},
- {0x09cd, 0x09cd, 1},
- {0x0a3c, 0x0a3c, 1},
- {0x0a4d, 0x0a4d, 1},
- {0x0abc, 0x0abc, 1},
- {0x0acd, 0x0acd, 1},
- {0x0b3c, 0x0b3c, 1},
- {0x0b4d, 0x0b4d, 1},
- {0x0bcd, 0x0bcd, 1},
- {0x0c4d, 0x0c4d, 1},
- {0x0cbc, 0x0cbc, 1},
- {0x0ccd, 0x0ccd, 1},
- {0x0d4d, 0x0d4d, 1},
- {0x0dca, 0x0dca, 1},
- {0x0e47, 0x0e4c, 1},
- {0x0e4e, 0x0e4e, 1},
- {0x0ec8, 0x0ecc, 1},
- {0x0f18, 0x0f19, 1},
- {0x0f35, 0x0f35, 1},
- {0x0f37, 0x0f37, 1},
- {0x0f39, 0x0f39, 1},
- {0x0f3e, 0x0f3f, 1},
- {0x0f82, 0x0f84, 1},
- {0x0f86, 0x0f87, 1},
- {0x0fc6, 0x0fc6, 1},
- {0x1037, 0x1037, 1},
- {0x1039, 0x103a, 1},
- {0x1087, 0x108d, 1},
- {0x108f, 0x108f, 1},
- {0x109a, 0x109b, 1},
- {0x17c9, 0x17d3, 1},
- {0x17dd, 0x17dd, 1},
- {0x1939, 0x193b, 1},
- {0x1a75, 0x1a7c, 1},
- {0x1a7f, 0x1a7f, 1},
- {0x1b34, 0x1b34, 1},
- {0x1b44, 0x1b44, 1},
- {0x1b6b, 0x1b73, 1},
- {0x1baa, 0x1bab, 1},
- {0x1c36, 0x1c37, 1},
- {0x1c78, 0x1c7d, 1},
- {0x1cd0, 0x1ce8, 1},
- {0x1ced, 0x1ced, 1},
- {0x1cf4, 0x1cf4, 1},
- {0x1d2c, 0x1d6a, 1},
- {0x1dc4, 0x1dcf, 1},
- {0x1dfd, 0x1dff, 1},
- {0x1fbd, 0x1fbd, 1},
- {0x1fbf, 0x1fc1, 1},
- {0x1fcd, 0x1fcf, 1},
- {0x1fdd, 0x1fdf, 1},
- {0x1fed, 0x1fef, 1},
- {0x1ffd, 0x1ffe, 1},
- {0x2cef, 0x2cf1, 1},
- {0x2e2f, 0x2e2f, 1},
- {0x302a, 0x302f, 1},
- {0x3099, 0x309c, 1},
- {0x30fc, 0x30fc, 1},
- {0xa66f, 0xa66f, 1},
- {0xa67c, 0xa67d, 1},
- {0xa67f, 0xa67f, 1},
- {0xa6f0, 0xa6f1, 1},
- {0xa717, 0xa721, 1},
- {0xa788, 0xa788, 1},
- {0xa7f8, 0xa7f9, 1},
- {0xa8c4, 0xa8c4, 1},
- {0xa8e0, 0xa8f1, 1},
- {0xa92b, 0xa92e, 1},
- {0xa953, 0xa953, 1},
- {0xa9b3, 0xa9b3, 1},
- {0xa9c0, 0xa9c0, 1},
- {0xaa7b, 0xaa7b, 1},
- {0xaabf, 0xaac2, 1},
- {0xaaf6, 0xaaf6, 1},
- {0xabec, 0xabed, 1},
- {0xfb1e, 0xfb1e, 1},
- {0xfe20, 0xfe26, 1},
- {0xff3e, 0xff3e, 1},
- {0xff40, 0xff40, 1},
- {0xff70, 0xff70, 1},
- {0xff9e, 0xff9f, 1},
- {0xffe3, 0xffe3, 1},
- },
- R32: []Range32{
- {0x110b9, 0x110ba, 1},
- {0x11133, 0x11134, 1},
- {0x111c0, 0x111c0, 1},
- {0x116b6, 0x116b7, 1},
- {0x16f8f, 0x16f9f, 1},
- {0x1d167, 0x1d169, 1},
- {0x1d16d, 0x1d172, 1},
- {0x1d17b, 0x1d182, 1},
- {0x1d185, 0x1d18b, 1},
- {0x1d1aa, 0x1d1ad, 1},
- },
- LatinOffset: 6,
-}
-
-var _Extender = &RangeTable{
- R16: []Range16{
- {0x00b7, 0x00b7, 1},
- {0x02d0, 0x02d1, 1},
- {0x0640, 0x0640, 1},
- {0x07fa, 0x07fa, 1},
- {0x0e46, 0x0e46, 1},
- {0x0ec6, 0x0ec6, 1},
- {0x180a, 0x180a, 1},
- {0x1843, 0x1843, 1},
- {0x1aa7, 0x1aa7, 1},
- {0x1c36, 0x1c36, 1},
- {0x1c7b, 0x1c7b, 1},
- {0x3005, 0x3005, 1},
- {0x3031, 0x3035, 1},
- {0x309d, 0x309e, 1},
- {0x30fc, 0x30fe, 1},
- {0xa015, 0xa015, 1},
- {0xa60c, 0xa60c, 1},
- {0xa9cf, 0xa9cf, 1},
- {0xaa70, 0xaa70, 1},
- {0xaadd, 0xaadd, 1},
- {0xaaf3, 0xaaf4, 1},
- {0xff70, 0xff70, 1},
- },
- LatinOffset: 1,
-}
-
-var _Hex_Digit = &RangeTable{
- R16: []Range16{
- {0x0030, 0x0039, 1},
- {0x0041, 0x0046, 1},
- {0x0061, 0x0066, 1},
- {0xff10, 0xff19, 1},
- {0xff21, 0xff26, 1},
- {0xff41, 0xff46, 1},
- },
- LatinOffset: 3,
-}
-
-var _Hyphen = &RangeTable{
- R16: []Range16{
- {0x002d, 0x002d, 1},
- {0x00ad, 0x00ad, 1},
- {0x058a, 0x058a, 1},
- {0x1806, 0x1806, 1},
- {0x2010, 0x2011, 1},
- {0x2e17, 0x2e17, 1},
- {0x30fb, 0x30fb, 1},
- {0xfe63, 0xfe63, 1},
- {0xff0d, 0xff0d, 1},
- {0xff65, 0xff65, 1},
- },
- LatinOffset: 2,
-}
-
-var _IDS_Binary_Operator = &RangeTable{
- R16: []Range16{
- {0x2ff0, 0x2ff1, 1},
- {0x2ff4, 0x2ffb, 1},
- },
-}
-
-var _IDS_Trinary_Operator = &RangeTable{
- R16: []Range16{
- {0x2ff2, 0x2ff3, 1},
- },
-}
-
-var _Ideographic = &RangeTable{
- R16: []Range16{
- {0x3006, 0x3007, 1},
- {0x3021, 0x3029, 1},
- {0x3038, 0x303a, 1},
- {0x3400, 0x4db5, 1},
- {0x4e00, 0x9fcc, 1},
- {0xf900, 0xfa6d, 1},
- {0xfa70, 0xfad9, 1},
- },
- R32: []Range32{
- {0x20000, 0x2a6d6, 1},
- {0x2a700, 0x2b734, 1},
- {0x2b740, 0x2b81d, 1},
- {0x2f800, 0x2fa1d, 1},
- },
-}
-
-var _Join_Control = &RangeTable{
- R16: []Range16{
- {0x200c, 0x200d, 1},
- },
-}
-
-var _Logical_Order_Exception = &RangeTable{
- R16: []Range16{
- {0x0e40, 0x0e44, 1},
- {0x0ec0, 0x0ec4, 1},
- {0xaab5, 0xaab6, 1},
- {0xaab9, 0xaab9, 1},
- {0xaabb, 0xaabc, 1},
- },
-}
-
-var _Noncharacter_Code_Point = &RangeTable{
- R16: []Range16{
- {0xfdd0, 0xfdef, 1},
- {0xfffe, 0xffff, 1},
- },
- R32: []Range32{
- {0x1fffe, 0x1ffff, 1},
- {0x2fffe, 0x2ffff, 1},
- {0x3fffe, 0x3ffff, 1},
- {0x4fffe, 0x4ffff, 1},
- {0x5fffe, 0x5ffff, 1},
- {0x6fffe, 0x6ffff, 1},
- {0x7fffe, 0x7ffff, 1},
- {0x8fffe, 0x8ffff, 1},
- {0x9fffe, 0x9ffff, 1},
- {0xafffe, 0xaffff, 1},
- {0xbfffe, 0xbffff, 1},
- {0xcfffe, 0xcffff, 1},
- {0xdfffe, 0xdffff, 1},
- {0xefffe, 0xeffff, 1},
- {0xffffe, 0xfffff, 1},
- {0x10fffe, 0x10ffff, 1},
- },
-}
-
-var _Other_Alphabetic = &RangeTable{
- R16: []Range16{
- {0x0345, 0x0345, 1},
- {0x05b0, 0x05bd, 1},
- {0x05bf, 0x05bf, 1},
- {0x05c1, 0x05c2, 1},
- {0x05c4, 0x05c5, 1},
- {0x05c7, 0x05c7, 1},
- {0x0610, 0x061a, 1},
- {0x064b, 0x0657, 1},
- {0x0659, 0x065f, 1},
- {0x0670, 0x0670, 1},
- {0x06d6, 0x06dc, 1},
- {0x06e1, 0x06e4, 1},
- {0x06e7, 0x06e8, 1},
- {0x06ed, 0x06ed, 1},
- {0x0711, 0x0711, 1},
- {0x0730, 0x073f, 1},
- {0x07a6, 0x07b0, 1},
- {0x0816, 0x0817, 1},
- {0x081b, 0x0823, 1},
- {0x0825, 0x0827, 1},
- {0x0829, 0x082c, 1},
- {0x08e4, 0x08e9, 1},
- {0x08f0, 0x08fe, 1},
- {0x0900, 0x0903, 1},
- {0x093a, 0x093b, 1},
- {0x093e, 0x094c, 1},
- {0x094e, 0x094f, 1},
- {0x0955, 0x0957, 1},
- {0x0962, 0x0963, 1},
- {0x0981, 0x0983, 1},
- {0x09be, 0x09c4, 1},
- {0x09c7, 0x09c8, 1},
- {0x09cb, 0x09cc, 1},
- {0x09d7, 0x09d7, 1},
- {0x09e2, 0x09e3, 1},
- {0x0a01, 0x0a03, 1},
- {0x0a3e, 0x0a42, 1},
- {0x0a47, 0x0a48, 1},
- {0x0a4b, 0x0a4c, 1},
- {0x0a51, 0x0a51, 1},
- {0x0a70, 0x0a71, 1},
- {0x0a75, 0x0a75, 1},
- {0x0a81, 0x0a83, 1},
- {0x0abe, 0x0ac5, 1},
- {0x0ac7, 0x0ac9, 1},
- {0x0acb, 0x0acc, 1},
- {0x0ae2, 0x0ae3, 1},
- {0x0b01, 0x0b03, 1},
- {0x0b3e, 0x0b44, 1},
- {0x0b47, 0x0b48, 1},
- {0x0b4b, 0x0b4c, 1},
- {0x0b56, 0x0b57, 1},
- {0x0b62, 0x0b63, 1},
- {0x0b82, 0x0b82, 1},
- {0x0bbe, 0x0bc2, 1},
- {0x0bc6, 0x0bc8, 1},
- {0x0bca, 0x0bcc, 1},
- {0x0bd7, 0x0bd7, 1},
- {0x0c01, 0x0c03, 1},
- {0x0c3e, 0x0c44, 1},
- {0x0c46, 0x0c48, 1},
- {0x0c4a, 0x0c4c, 1},
- {0x0c55, 0x0c56, 1},
- {0x0c62, 0x0c63, 1},
- {0x0c82, 0x0c83, 1},
- {0x0cbe, 0x0cc4, 1},
- {0x0cc6, 0x0cc8, 1},
- {0x0cca, 0x0ccc, 1},
- {0x0cd5, 0x0cd6, 1},
- {0x0ce2, 0x0ce3, 1},
- {0x0d02, 0x0d03, 1},
- {0x0d3e, 0x0d44, 1},
- {0x0d46, 0x0d48, 1},
- {0x0d4a, 0x0d4c, 1},
- {0x0d57, 0x0d57, 1},
- {0x0d62, 0x0d63, 1},
- {0x0d82, 0x0d83, 1},
- {0x0dcf, 0x0dd4, 1},
- {0x0dd6, 0x0dd6, 1},
- {0x0dd8, 0x0ddf, 1},
- {0x0df2, 0x0df3, 1},
- {0x0e31, 0x0e31, 1},
- {0x0e34, 0x0e3a, 1},
- {0x0e4d, 0x0e4d, 1},
- {0x0eb1, 0x0eb1, 1},
- {0x0eb4, 0x0eb9, 1},
- {0x0ebb, 0x0ebc, 1},
- {0x0ecd, 0x0ecd, 1},
- {0x0f71, 0x0f81, 1},
- {0x0f8d, 0x0f97, 1},
- {0x0f99, 0x0fbc, 1},
- {0x102b, 0x1036, 1},
- {0x1038, 0x1038, 1},
- {0x103b, 0x103e, 1},
- {0x1056, 0x1059, 1},
- {0x105e, 0x1060, 1},
- {0x1062, 0x1062, 1},
- {0x1067, 0x1068, 1},
- {0x1071, 0x1074, 1},
- {0x1082, 0x1086, 1},
- {0x109c, 0x109d, 1},
- {0x135f, 0x135f, 1},
- {0x1712, 0x1713, 1},
- {0x1732, 0x1733, 1},
- {0x1752, 0x1753, 1},
- {0x1772, 0x1773, 1},
- {0x17b6, 0x17c8, 1},
- {0x18a9, 0x18a9, 1},
- {0x1920, 0x192b, 1},
- {0x1930, 0x1938, 1},
- {0x19b0, 0x19c0, 1},
- {0x19c8, 0x19c9, 1},
- {0x1a17, 0x1a1b, 1},
- {0x1a55, 0x1a5e, 1},
- {0x1a61, 0x1a74, 1},
- {0x1b00, 0x1b04, 1},
- {0x1b35, 0x1b43, 1},
- {0x1b80, 0x1b82, 1},
- {0x1ba1, 0x1ba9, 1},
- {0x1bac, 0x1bad, 1},
- {0x1be7, 0x1bf1, 1},
- {0x1c24, 0x1c35, 1},
- {0x1cf2, 0x1cf3, 1},
- {0x24b6, 0x24e9, 1},
- {0x2de0, 0x2dff, 1},
- {0xa674, 0xa67b, 1},
- {0xa69f, 0xa69f, 1},
- {0xa823, 0xa827, 1},
- {0xa880, 0xa881, 1},
- {0xa8b4, 0xa8c3, 1},
- {0xa926, 0xa92a, 1},
- {0xa947, 0xa952, 1},
- {0xa980, 0xa983, 1},
- {0xa9b4, 0xa9bf, 1},
- {0xaa29, 0xaa36, 1},
- {0xaa43, 0xaa43, 1},
- {0xaa4c, 0xaa4d, 1},
- {0xaab0, 0xaab0, 1},
- {0xaab2, 0xaab4, 1},
- {0xaab7, 0xaab8, 1},
- {0xaabe, 0xaabe, 1},
- {0xaaeb, 0xaaef, 1},
- {0xaaf5, 0xaaf5, 1},
- {0xabe3, 0xabea, 1},
- {0xfb1e, 0xfb1e, 1},
- },
- R32: []Range32{
- {0x10a01, 0x10a03, 1},
- {0x10a05, 0x10a06, 1},
- {0x10a0c, 0x10a0f, 1},
- {0x11000, 0x11002, 1},
- {0x11038, 0x11045, 1},
- {0x11082, 0x11082, 1},
- {0x110b0, 0x110b8, 1},
- {0x11100, 0x11102, 1},
- {0x11127, 0x11132, 1},
- {0x11180, 0x11182, 1},
- {0x111b3, 0x111bf, 1},
- {0x116ab, 0x116b5, 1},
- {0x16f51, 0x16f7e, 1},
- },
-}
-
-var _Other_Default_Ignorable_Code_Point = &RangeTable{
- R16: []Range16{
- {0x034f, 0x034f, 1},
- {0x115f, 0x1160, 1},
- {0x17b4, 0x17b5, 1},
- {0x2065, 0x2065, 1},
- {0x3164, 0x3164, 1},
- {0xffa0, 0xffa0, 1},
- {0xfff0, 0xfff8, 1},
- },
- R32: []Range32{
- {0xe0000, 0xe0000, 1},
- {0xe0002, 0xe001f, 1},
- {0xe0080, 0xe00ff, 1},
- {0xe01f0, 0xe0fff, 1},
- },
-}
-
-var _Other_Grapheme_Extend = &RangeTable{
- R16: []Range16{
- {0x09be, 0x09be, 1},
- {0x09d7, 0x09d7, 1},
- {0x0b3e, 0x0b3e, 1},
- {0x0b57, 0x0b57, 1},
- {0x0bbe, 0x0bbe, 1},
- {0x0bd7, 0x0bd7, 1},
- {0x0cc2, 0x0cc2, 1},
- {0x0cd5, 0x0cd6, 1},
- {0x0d3e, 0x0d3e, 1},
- {0x0d57, 0x0d57, 1},
- {0x0dcf, 0x0dcf, 1},
- {0x0ddf, 0x0ddf, 1},
- {0x200c, 0x200d, 1},
- {0x302e, 0x302f, 1},
- {0xff9e, 0xff9f, 1},
- },
- R32: []Range32{
- {0x1d165, 0x1d165, 1},
- {0x1d16e, 0x1d172, 1},
- },
-}
-
-var _Other_ID_Continue = &RangeTable{
- R16: []Range16{
- {0x00b7, 0x00b7, 1},
- {0x0387, 0x0387, 1},
- {0x1369, 0x1371, 1},
- {0x19da, 0x19da, 1},
- },
- LatinOffset: 1,
-}
-
-var _Other_ID_Start = &RangeTable{
- R16: []Range16{
- {0x2118, 0x2118, 1},
- {0x212e, 0x212e, 1},
- {0x309b, 0x309c, 1},
- },
-}
-
-var _Other_Lowercase = &RangeTable{
- R16: []Range16{
- {0x00aa, 0x00aa, 1},
- {0x00ba, 0x00ba, 1},
- {0x02b0, 0x02b8, 1},
- {0x02c0, 0x02c1, 1},
- {0x02e0, 0x02e4, 1},
- {0x0345, 0x0345, 1},
- {0x037a, 0x037a, 1},
- {0x1d2c, 0x1d6a, 1},
- {0x1d78, 0x1d78, 1},
- {0x1d9b, 0x1dbf, 1},
- {0x2071, 0x2071, 1},
- {0x207f, 0x207f, 1},
- {0x2090, 0x209c, 1},
- {0x2170, 0x217f, 1},
- {0x24d0, 0x24e9, 1},
- {0x2c7c, 0x2c7d, 1},
- {0xa770, 0xa770, 1},
- {0xa7f8, 0xa7f9, 1},
- },
- LatinOffset: 2,
-}
-
-var _Other_Math = &RangeTable{
- R16: []Range16{
- {0x005e, 0x005e, 1},
- {0x03d0, 0x03d2, 1},
- {0x03d5, 0x03d5, 1},
- {0x03f0, 0x03f1, 1},
- {0x03f4, 0x03f5, 1},
- {0x2016, 0x2016, 1},
- {0x2032, 0x2034, 1},
- {0x2040, 0x2040, 1},
- {0x2061, 0x2064, 1},
- {0x207d, 0x207e, 1},
- {0x208d, 0x208e, 1},
- {0x20d0, 0x20dc, 1},
- {0x20e1, 0x20e1, 1},
- {0x20e5, 0x20e6, 1},
- {0x20eb, 0x20ef, 1},
- {0x2102, 0x2102, 1},
- {0x2107, 0x2107, 1},
- {0x210a, 0x2113, 1},
- {0x2115, 0x2115, 1},
- {0x2119, 0x211d, 1},
- {0x2124, 0x2124, 1},
- {0x2128, 0x2129, 1},
- {0x212c, 0x212d, 1},
- {0x212f, 0x2131, 1},
- {0x2133, 0x2138, 1},
- {0x213c, 0x213f, 1},
- {0x2145, 0x2149, 1},
- {0x2195, 0x2199, 1},
- {0x219c, 0x219f, 1},
- {0x21a1, 0x21a2, 1},
- {0x21a4, 0x21a5, 1},
- {0x21a7, 0x21a7, 1},
- {0x21a9, 0x21ad, 1},
- {0x21b0, 0x21b1, 1},
- {0x21b6, 0x21b7, 1},
- {0x21bc, 0x21cd, 1},
- {0x21d0, 0x21d1, 1},
- {0x21d3, 0x21d3, 1},
- {0x21d5, 0x21db, 1},
- {0x21dd, 0x21dd, 1},
- {0x21e4, 0x21e5, 1},
- {0x2308, 0x230b, 1},
- {0x23b4, 0x23b5, 1},
- {0x23b7, 0x23b7, 1},
- {0x23d0, 0x23d0, 1},
- {0x23e2, 0x23e2, 1},
- {0x25a0, 0x25a1, 1},
- {0x25ae, 0x25b6, 1},
- {0x25bc, 0x25c0, 1},
- {0x25c6, 0x25c7, 1},
- {0x25ca, 0x25cb, 1},
- {0x25cf, 0x25d3, 1},
- {0x25e2, 0x25e2, 1},
- {0x25e4, 0x25e4, 1},
- {0x25e7, 0x25ec, 1},
- {0x2605, 0x2606, 1},
- {0x2640, 0x2640, 1},
- {0x2642, 0x2642, 1},
- {0x2660, 0x2663, 1},
- {0x266d, 0x266e, 1},
- {0x27c5, 0x27c6, 1},
- {0x27e6, 0x27ef, 1},
- {0x2983, 0x2998, 1},
- {0x29d8, 0x29db, 1},
- {0x29fc, 0x29fd, 1},
- {0xfe61, 0xfe61, 1},
- {0xfe63, 0xfe63, 1},
- {0xfe68, 0xfe68, 1},
- {0xff3c, 0xff3c, 1},
- {0xff3e, 0xff3e, 1},
- },
- R32: []Range32{
- {0x1d400, 0x1d454, 1},
- {0x1d456, 0x1d49c, 1},
- {0x1d49e, 0x1d49f, 1},
- {0x1d4a2, 0x1d4a2, 1},
- {0x1d4a5, 0x1d4a6, 1},
- {0x1d4a9, 0x1d4ac, 1},
- {0x1d4ae, 0x1d4b9, 1},
- {0x1d4bb, 0x1d4bb, 1},
- {0x1d4bd, 0x1d4c3, 1},
- {0x1d4c5, 0x1d505, 1},
- {0x1d507, 0x1d50a, 1},
- {0x1d50d, 0x1d514, 1},
- {0x1d516, 0x1d51c, 1},
- {0x1d51e, 0x1d539, 1},
- {0x1d53b, 0x1d53e, 1},
- {0x1d540, 0x1d544, 1},
- {0x1d546, 0x1d546, 1},
- {0x1d54a, 0x1d550, 1},
- {0x1d552, 0x1d6a5, 1},
- {0x1d6a8, 0x1d6c0, 1},
- {0x1d6c2, 0x1d6da, 1},
- {0x1d6dc, 0x1d6fa, 1},
- {0x1d6fc, 0x1d714, 1},
- {0x1d716, 0x1d734, 1},
- {0x1d736, 0x1d74e, 1},
- {0x1d750, 0x1d76e, 1},
- {0x1d770, 0x1d788, 1},
- {0x1d78a, 0x1d7a8, 1},
- {0x1d7aa, 0x1d7c2, 1},
- {0x1d7c4, 0x1d7cb, 1},
- {0x1d7ce, 0x1d7ff, 1},
- {0x1ee00, 0x1ee03, 1},
- {0x1ee05, 0x1ee1f, 1},
- {0x1ee21, 0x1ee22, 1},
- {0x1ee24, 0x1ee24, 1},
- {0x1ee27, 0x1ee27, 1},
- {0x1ee29, 0x1ee32, 1},
- {0x1ee34, 0x1ee37, 1},
- {0x1ee39, 0x1ee39, 1},
- {0x1ee3b, 0x1ee3b, 1},
- {0x1ee42, 0x1ee42, 1},
- {0x1ee47, 0x1ee47, 1},
- {0x1ee49, 0x1ee49, 1},
- {0x1ee4b, 0x1ee4b, 1},
- {0x1ee4d, 0x1ee4f, 1},
- {0x1ee51, 0x1ee52, 1},
- {0x1ee54, 0x1ee54, 1},
- {0x1ee57, 0x1ee57, 1},
- {0x1ee59, 0x1ee59, 1},
- {0x1ee5b, 0x1ee5b, 1},
- {0x1ee5d, 0x1ee5d, 1},
- {0x1ee5f, 0x1ee5f, 1},
- {0x1ee61, 0x1ee62, 1},
- {0x1ee64, 0x1ee64, 1},
- {0x1ee67, 0x1ee6a, 1},
- {0x1ee6c, 0x1ee72, 1},
- {0x1ee74, 0x1ee77, 1},
- {0x1ee79, 0x1ee7c, 1},
- {0x1ee7e, 0x1ee7e, 1},
- {0x1ee80, 0x1ee89, 1},
- {0x1ee8b, 0x1ee9b, 1},
- {0x1eea1, 0x1eea3, 1},
- {0x1eea5, 0x1eea9, 1},
- {0x1eeab, 0x1eebb, 1},
- },
- LatinOffset: 1,
-}
-
-var _Other_Uppercase = &RangeTable{
- R16: []Range16{
- {0x2160, 0x216f, 1},
- {0x24b6, 0x24cf, 1},
- },
-}
-
-var _Pattern_Syntax = &RangeTable{
- R16: []Range16{
- {0x0021, 0x002f, 1},
- {0x003a, 0x0040, 1},
- {0x005b, 0x005e, 1},
- {0x0060, 0x0060, 1},
- {0x007b, 0x007e, 1},
- {0x00a1, 0x00a7, 1},
- {0x00a9, 0x00a9, 1},
- {0x00ab, 0x00ac, 1},
- {0x00ae, 0x00ae, 1},
- {0x00b0, 0x00b1, 1},
- {0x00b6, 0x00b6, 1},
- {0x00bb, 0x00bb, 1},
- {0x00bf, 0x00bf, 1},
- {0x00d7, 0x00d7, 1},
- {0x00f7, 0x00f7, 1},
- {0x2010, 0x2027, 1},
- {0x2030, 0x203e, 1},
- {0x2041, 0x2053, 1},
- {0x2055, 0x205e, 1},
- {0x2190, 0x245f, 1},
- {0x2500, 0x2775, 1},
- {0x2794, 0x2bff, 1},
- {0x2e00, 0x2e7f, 1},
- {0x3001, 0x3003, 1},
- {0x3008, 0x3020, 1},
- {0x3030, 0x3030, 1},
- {0xfd3e, 0xfd3f, 1},
- {0xfe45, 0xfe46, 1},
- },
- LatinOffset: 15,
-}
-
-var _Pattern_White_Space = &RangeTable{
- R16: []Range16{
- {0x0009, 0x000d, 1},
- {0x0020, 0x0020, 1},
- {0x0085, 0x0085, 1},
- {0x200e, 0x200f, 1},
- {0x2028, 0x2029, 1},
- },
- LatinOffset: 3,
-}
-
-var _Quotation_Mark = &RangeTable{
- R16: []Range16{
- {0x0022, 0x0022, 1},
- {0x0027, 0x0027, 1},
- {0x00ab, 0x00ab, 1},
- {0x00bb, 0x00bb, 1},
- {0x2018, 0x201f, 1},
- {0x2039, 0x203a, 1},
- {0x300c, 0x300f, 1},
- {0x301d, 0x301f, 1},
- {0xfe41, 0xfe44, 1},
- {0xff02, 0xff02, 1},
- {0xff07, 0xff07, 1},
- {0xff62, 0xff63, 1},
- },
- LatinOffset: 4,
-}
-
-var _Radical = &RangeTable{
- R16: []Range16{
- {0x2e80, 0x2e99, 1},
- {0x2e9b, 0x2ef3, 1},
- {0x2f00, 0x2fd5, 1},
- },
-}
-
-var _STerm = &RangeTable{
- R16: []Range16{
- {0x0021, 0x0021, 1},
- {0x002e, 0x002e, 1},
- {0x003f, 0x003f, 1},
- {0x055c, 0x055c, 1},
- {0x055e, 0x055e, 1},
- {0x0589, 0x0589, 1},
- {0x061f, 0x061f, 1},
- {0x06d4, 0x06d4, 1},
- {0x0700, 0x0702, 1},
- {0x07f9, 0x07f9, 1},
- {0x0964, 0x0965, 1},
- {0x104a, 0x104b, 1},
- {0x1362, 0x1362, 1},
- {0x1367, 0x1368, 1},
- {0x166e, 0x166e, 1},
- {0x1735, 0x1736, 1},
- {0x1803, 0x1803, 1},
- {0x1809, 0x1809, 1},
- {0x1944, 0x1945, 1},
- {0x1aa8, 0x1aab, 1},
- {0x1b5a, 0x1b5b, 1},
- {0x1b5e, 0x1b5f, 1},
- {0x1c3b, 0x1c3c, 1},
- {0x1c7e, 0x1c7f, 1},
- {0x203c, 0x203d, 1},
- {0x2047, 0x2049, 1},
- {0x2e2e, 0x2e2e, 1},
- {0x3002, 0x3002, 1},
- {0xa4ff, 0xa4ff, 1},
- {0xa60e, 0xa60f, 1},
- {0xa6f3, 0xa6f3, 1},
- {0xa6f7, 0xa6f7, 1},
- {0xa876, 0xa877, 1},
- {0xa8ce, 0xa8cf, 1},
- {0xa92f, 0xa92f, 1},
- {0xa9c8, 0xa9c9, 1},
- {0xaa5d, 0xaa5f, 1},
- {0xaaf0, 0xaaf1, 1},
- {0xabeb, 0xabeb, 1},
- {0xfe52, 0xfe52, 1},
- {0xfe56, 0xfe57, 1},
- {0xff01, 0xff01, 1},
- {0xff0e, 0xff0e, 1},
- {0xff1f, 0xff1f, 1},
- {0xff61, 0xff61, 1},
- },
- R32: []Range32{
- {0x10a56, 0x10a57, 1},
- {0x11047, 0x11048, 1},
- {0x110be, 0x110c1, 1},
- {0x11141, 0x11143, 1},
- {0x111c5, 0x111c6, 1},
- },
- LatinOffset: 3,
-}
-
-var _Soft_Dotted = &RangeTable{
- R16: []Range16{
- {0x0069, 0x006a, 1},
- {0x012f, 0x012f, 1},
- {0x0249, 0x0249, 1},
- {0x0268, 0x0268, 1},
- {0x029d, 0x029d, 1},
- {0x02b2, 0x02b2, 1},
- {0x03f3, 0x03f3, 1},
- {0x0456, 0x0456, 1},
- {0x0458, 0x0458, 1},
- {0x1d62, 0x1d62, 1},
- {0x1d96, 0x1d96, 1},
- {0x1da4, 0x1da4, 1},
- {0x1da8, 0x1da8, 1},
- {0x1e2d, 0x1e2d, 1},
- {0x1ecb, 0x1ecb, 1},
- {0x2071, 0x2071, 1},
- {0x2148, 0x2149, 1},
- {0x2c7c, 0x2c7c, 1},
- },
- R32: []Range32{
- {0x1d422, 0x1d423, 1},
- {0x1d456, 0x1d457, 1},
- {0x1d48a, 0x1d48b, 1},
- {0x1d4be, 0x1d4bf, 1},
- {0x1d4f2, 0x1d4f3, 1},
- {0x1d526, 0x1d527, 1},
- {0x1d55a, 0x1d55b, 1},
- {0x1d58e, 0x1d58f, 1},
- {0x1d5c2, 0x1d5c3, 1},
- {0x1d5f6, 0x1d5f7, 1},
- {0x1d62a, 0x1d62b, 1},
- {0x1d65e, 0x1d65f, 1},
- {0x1d692, 0x1d693, 1},
- },
- LatinOffset: 1,
-}
-
-var _Terminal_Punctuation = &RangeTable{
- R16: []Range16{
- {0x0021, 0x0021, 1},
- {0x002c, 0x002c, 1},
- {0x002e, 0x002e, 1},
- {0x003a, 0x003b, 1},
- {0x003f, 0x003f, 1},
- {0x037e, 0x037e, 1},
- {0x0387, 0x0387, 1},
- {0x0589, 0x0589, 1},
- {0x05c3, 0x05c3, 1},
- {0x060c, 0x060c, 1},
- {0x061b, 0x061b, 1},
- {0x061f, 0x061f, 1},
- {0x06d4, 0x06d4, 1},
- {0x0700, 0x070a, 1},
- {0x070c, 0x070c, 1},
- {0x07f8, 0x07f9, 1},
- {0x0830, 0x083e, 1},
- {0x085e, 0x085e, 1},
- {0x0964, 0x0965, 1},
- {0x0e5a, 0x0e5b, 1},
- {0x0f08, 0x0f08, 1},
- {0x0f0d, 0x0f12, 1},
- {0x104a, 0x104b, 1},
- {0x1361, 0x1368, 1},
- {0x166d, 0x166e, 1},
- {0x16eb, 0x16ed, 1},
- {0x17d4, 0x17d6, 1},
- {0x17da, 0x17da, 1},
- {0x1802, 0x1805, 1},
- {0x1808, 0x1809, 1},
- {0x1944, 0x1945, 1},
- {0x1aa8, 0x1aab, 1},
- {0x1b5a, 0x1b5b, 1},
- {0x1b5d, 0x1b5f, 1},
- {0x1c3b, 0x1c3f, 1},
- {0x1c7e, 0x1c7f, 1},
- {0x203c, 0x203d, 1},
- {0x2047, 0x2049, 1},
- {0x2e2e, 0x2e2e, 1},
- {0x3001, 0x3002, 1},
- {0xa4fe, 0xa4ff, 1},
- {0xa60d, 0xa60f, 1},
- {0xa6f3, 0xa6f7, 1},
- {0xa876, 0xa877, 1},
- {0xa8ce, 0xa8cf, 1},
- {0xa92f, 0xa92f, 1},
- {0xa9c7, 0xa9c9, 1},
- {0xaa5d, 0xaa5f, 1},
- {0xaadf, 0xaadf, 1},
- {0xaaf0, 0xaaf1, 1},
- {0xabeb, 0xabeb, 1},
- {0xfe50, 0xfe52, 1},
- {0xfe54, 0xfe57, 1},
- {0xff01, 0xff01, 1},
- {0xff0c, 0xff0c, 1},
- {0xff0e, 0xff0e, 1},
- {0xff1a, 0xff1b, 1},
- {0xff1f, 0xff1f, 1},
- {0xff61, 0xff61, 1},
- {0xff64, 0xff64, 1},
- },
- R32: []Range32{
- {0x1039f, 0x1039f, 1},
- {0x103d0, 0x103d0, 1},
- {0x10857, 0x10857, 1},
- {0x1091f, 0x1091f, 1},
- {0x10b3a, 0x10b3f, 1},
- {0x11047, 0x1104d, 1},
- {0x110be, 0x110c1, 1},
- {0x11141, 0x11143, 1},
- {0x111c5, 0x111c6, 1},
- {0x12470, 0x12473, 1},
- },
- LatinOffset: 5,
-}
-
-var _Unified_Ideograph = &RangeTable{
- R16: []Range16{
- {0x3400, 0x4db5, 1},
- {0x4e00, 0x9fcc, 1},
- {0xfa0e, 0xfa0f, 1},
- {0xfa11, 0xfa11, 1},
- {0xfa13, 0xfa14, 1},
- {0xfa1f, 0xfa1f, 1},
- {0xfa21, 0xfa21, 1},
- {0xfa23, 0xfa24, 1},
- {0xfa27, 0xfa29, 1},
- },
- R32: []Range32{
- {0x20000, 0x2a6d6, 1},
- {0x2a700, 0x2b734, 1},
- {0x2b740, 0x2b81d, 1},
- },
-}
-
-var _Variation_Selector = &RangeTable{
- R16: []Range16{
- {0x180b, 0x180d, 1},
- {0xfe00, 0xfe0f, 1},
- },
- R32: []Range32{
- {0xe0100, 0xe01ef, 1},
- },
-}
-
-var _White_Space = &RangeTable{
- R16: []Range16{
- {0x0009, 0x000d, 1},
- {0x0020, 0x0020, 1},
- {0x0085, 0x0085, 1},
- {0x00a0, 0x00a0, 1},
- {0x1680, 0x1680, 1},
- {0x2000, 0x200a, 1},
- {0x2028, 0x2029, 1},
- {0x202f, 0x202f, 1},
- {0x205f, 0x205f, 1},
- {0x3000, 0x3000, 1},
- },
- LatinOffset: 4,
-}
-
-// These variables have type *RangeTable.
-var (
- ASCII_Hex_Digit = _ASCII_Hex_Digit // ASCII_Hex_Digit is the set of Unicode characters with property ASCII_Hex_Digit.
- Bidi_Control = _Bidi_Control // Bidi_Control is the set of Unicode characters with property Bidi_Control.
- Dash = _Dash // Dash is the set of Unicode characters with property Dash.
- Deprecated = _Deprecated // Deprecated is the set of Unicode characters with property Deprecated.
- Diacritic = _Diacritic // Diacritic is the set of Unicode characters with property Diacritic.
- Extender = _Extender // Extender is the set of Unicode characters with property Extender.
- Hex_Digit = _Hex_Digit // Hex_Digit is the set of Unicode characters with property Hex_Digit.
- Hyphen = _Hyphen // Hyphen is the set of Unicode characters with property Hyphen.
- IDS_Binary_Operator = _IDS_Binary_Operator // IDS_Binary_Operator is the set of Unicode characters with property IDS_Binary_Operator.
- IDS_Trinary_Operator = _IDS_Trinary_Operator // IDS_Trinary_Operator is the set of Unicode characters with property IDS_Trinary_Operator.
- Ideographic = _Ideographic // Ideographic is the set of Unicode characters with property Ideographic.
- Join_Control = _Join_Control // Join_Control is the set of Unicode characters with property Join_Control.
- Logical_Order_Exception = _Logical_Order_Exception // Logical_Order_Exception is the set of Unicode characters with property Logical_Order_Exception.
- Noncharacter_Code_Point = _Noncharacter_Code_Point // Noncharacter_Code_Point is the set of Unicode characters with property Noncharacter_Code_Point.
- Other_Alphabetic = _Other_Alphabetic // Other_Alphabetic is the set of Unicode characters with property Other_Alphabetic.
- Other_Default_Ignorable_Code_Point = _Other_Default_Ignorable_Code_Point // Other_Default_Ignorable_Code_Point is the set of Unicode characters with property Other_Default_Ignorable_Code_Point.
- Other_Grapheme_Extend = _Other_Grapheme_Extend // Other_Grapheme_Extend is the set of Unicode characters with property Other_Grapheme_Extend.
- Other_ID_Continue = _Other_ID_Continue // Other_ID_Continue is the set of Unicode characters with property Other_ID_Continue.
- Other_ID_Start = _Other_ID_Start // Other_ID_Start is the set of Unicode characters with property Other_ID_Start.
- Other_Lowercase = _Other_Lowercase // Other_Lowercase is the set of Unicode characters with property Other_Lowercase.
- Other_Math = _Other_Math // Other_Math is the set of Unicode characters with property Other_Math.
- Other_Uppercase = _Other_Uppercase // Other_Uppercase is the set of Unicode characters with property Other_Uppercase.
- Pattern_Syntax = _Pattern_Syntax // Pattern_Syntax is the set of Unicode characters with property Pattern_Syntax.
- Pattern_White_Space = _Pattern_White_Space // Pattern_White_Space is the set of Unicode characters with property Pattern_White_Space.
- Quotation_Mark = _Quotation_Mark // Quotation_Mark is the set of Unicode characters with property Quotation_Mark.
- Radical = _Radical // Radical is the set of Unicode characters with property Radical.
- STerm = _STerm // STerm is the set of Unicode characters with property STerm.
- Soft_Dotted = _Soft_Dotted // Soft_Dotted is the set of Unicode characters with property Soft_Dotted.
- Terminal_Punctuation = _Terminal_Punctuation // Terminal_Punctuation is the set of Unicode characters with property Terminal_Punctuation.
- Unified_Ideograph = _Unified_Ideograph // Unified_Ideograph is the set of Unicode characters with property Unified_Ideograph.
- Variation_Selector = _Variation_Selector // Variation_Selector is the set of Unicode characters with property Variation_Selector.
- White_Space = _White_Space // White_Space is the set of Unicode characters with property White_Space.
-)
-
-// Generated by running
-// maketables --data=http://www.unicode.org/Public/6.3.0/ucd/UnicodeData.txt --casefolding=http://www.unicode.org/Public/6.3.0/ucd/CaseFolding.txt
-// DO NOT EDIT
-
-// CaseRanges is the table describing case mappings for all letters with
-// non-self mappings.
-var CaseRanges = _CaseRanges
-var _CaseRanges = []CaseRange{
- {0x0041, 0x005A, d{0, 32, 0}},
- {0x0061, 0x007A, d{-32, 0, -32}},
- {0x00B5, 0x00B5, d{743, 0, 743}},
- {0x00C0, 0x00D6, d{0, 32, 0}},
- {0x00D8, 0x00DE, d{0, 32, 0}},
- {0x00E0, 0x00F6, d{-32, 0, -32}},
- {0x00F8, 0x00FE, d{-32, 0, -32}},
- {0x00FF, 0x00FF, d{121, 0, 121}},
- {0x0100, 0x012F, d{UpperLower, UpperLower, UpperLower}},
- {0x0130, 0x0130, d{0, -199, 0}},
- {0x0131, 0x0131, d{-232, 0, -232}},
- {0x0132, 0x0137, d{UpperLower, UpperLower, UpperLower}},
- {0x0139, 0x0148, d{UpperLower, UpperLower, UpperLower}},
- {0x014A, 0x0177, d{UpperLower, UpperLower, UpperLower}},
- {0x0178, 0x0178, d{0, -121, 0}},
- {0x0179, 0x017E, d{UpperLower, UpperLower, UpperLower}},
- {0x017F, 0x017F, d{-300, 0, -300}},
- {0x0180, 0x0180, d{195, 0, 195}},
- {0x0181, 0x0181, d{0, 210, 0}},
- {0x0182, 0x0185, d{UpperLower, UpperLower, UpperLower}},
- {0x0186, 0x0186, d{0, 206, 0}},
- {0x0187, 0x0188, d{UpperLower, UpperLower, UpperLower}},
- {0x0189, 0x018A, d{0, 205, 0}},
- {0x018B, 0x018C, d{UpperLower, UpperLower, UpperLower}},
- {0x018E, 0x018E, d{0, 79, 0}},
- {0x018F, 0x018F, d{0, 202, 0}},
- {0x0190, 0x0190, d{0, 203, 0}},
- {0x0191, 0x0192, d{UpperLower, UpperLower, UpperLower}},
- {0x0193, 0x0193, d{0, 205, 0}},
- {0x0194, 0x0194, d{0, 207, 0}},
- {0x0195, 0x0195, d{97, 0, 97}},
- {0x0196, 0x0196, d{0, 211, 0}},
- {0x0197, 0x0197, d{0, 209, 0}},
- {0x0198, 0x0199, d{UpperLower, UpperLower, UpperLower}},
- {0x019A, 0x019A, d{163, 0, 163}},
- {0x019C, 0x019C, d{0, 211, 0}},
- {0x019D, 0x019D, d{0, 213, 0}},
- {0x019E, 0x019E, d{130, 0, 130}},
- {0x019F, 0x019F, d{0, 214, 0}},
- {0x01A0, 0x01A5, d{UpperLower, UpperLower, UpperLower}},
- {0x01A6, 0x01A6, d{0, 218, 0}},
- {0x01A7, 0x01A8, d{UpperLower, UpperLower, UpperLower}},
- {0x01A9, 0x01A9, d{0, 218, 0}},
- {0x01AC, 0x01AD, d{UpperLower, UpperLower, UpperLower}},
- {0x01AE, 0x01AE, d{0, 218, 0}},
- {0x01AF, 0x01B0, d{UpperLower, UpperLower, UpperLower}},
- {0x01B1, 0x01B2, d{0, 217, 0}},
- {0x01B3, 0x01B6, d{UpperLower, UpperLower, UpperLower}},
- {0x01B7, 0x01B7, d{0, 219, 0}},
- {0x01B8, 0x01B9, d{UpperLower, UpperLower, UpperLower}},
- {0x01BC, 0x01BD, d{UpperLower, UpperLower, UpperLower}},
- {0x01BF, 0x01BF, d{56, 0, 56}},
- {0x01C4, 0x01C4, d{0, 2, 1}},
- {0x01C5, 0x01C5, d{-1, 1, 0}},
- {0x01C6, 0x01C6, d{-2, 0, -1}},
- {0x01C7, 0x01C7, d{0, 2, 1}},
- {0x01C8, 0x01C8, d{-1, 1, 0}},
- {0x01C9, 0x01C9, d{-2, 0, -1}},
- {0x01CA, 0x01CA, d{0, 2, 1}},
- {0x01CB, 0x01CB, d{-1, 1, 0}},
- {0x01CC, 0x01CC, d{-2, 0, -1}},
- {0x01CD, 0x01DC, d{UpperLower, UpperLower, UpperLower}},
- {0x01DD, 0x01DD, d{-79, 0, -79}},
- {0x01DE, 0x01EF, d{UpperLower, UpperLower, UpperLower}},
- {0x01F1, 0x01F1, d{0, 2, 1}},
- {0x01F2, 0x01F2, d{-1, 1, 0}},
- {0x01F3, 0x01F3, d{-2, 0, -1}},
- {0x01F4, 0x01F5, d{UpperLower, UpperLower, UpperLower}},
- {0x01F6, 0x01F6, d{0, -97, 0}},
- {0x01F7, 0x01F7, d{0, -56, 0}},
- {0x01F8, 0x021F, d{UpperLower, UpperLower, UpperLower}},
- {0x0220, 0x0220, d{0, -130, 0}},
- {0x0222, 0x0233, d{UpperLower, UpperLower, UpperLower}},
- {0x023A, 0x023A, d{0, 10795, 0}},
- {0x023B, 0x023C, d{UpperLower, UpperLower, UpperLower}},
- {0x023D, 0x023D, d{0, -163, 0}},
- {0x023E, 0x023E, d{0, 10792, 0}},
- {0x023F, 0x0240, d{10815, 0, 10815}},
- {0x0241, 0x0242, d{UpperLower, UpperLower, UpperLower}},
- {0x0243, 0x0243, d{0, -195, 0}},
- {0x0244, 0x0244, d{0, 69, 0}},
- {0x0245, 0x0245, d{0, 71, 0}},
- {0x0246, 0x024F, d{UpperLower, UpperLower, UpperLower}},
- {0x0250, 0x0250, d{10783, 0, 10783}},
- {0x0251, 0x0251, d{10780, 0, 10780}},
- {0x0252, 0x0252, d{10782, 0, 10782}},
- {0x0253, 0x0253, d{-210, 0, -210}},
- {0x0254, 0x0254, d{-206, 0, -206}},
- {0x0256, 0x0257, d{-205, 0, -205}},
- {0x0259, 0x0259, d{-202, 0, -202}},
- {0x025B, 0x025B, d{-203, 0, -203}},
- {0x0260, 0x0260, d{-205, 0, -205}},
- {0x0263, 0x0263, d{-207, 0, -207}},
- {0x0265, 0x0265, d{42280, 0, 42280}},
- {0x0266, 0x0266, d{42308, 0, 42308}},
- {0x0268, 0x0268, d{-209, 0, -209}},
- {0x0269, 0x0269, d{-211, 0, -211}},
- {0x026B, 0x026B, d{10743, 0, 10743}},
- {0x026F, 0x026F, d{-211, 0, -211}},
- {0x0271, 0x0271, d{10749, 0, 10749}},
- {0x0272, 0x0272, d{-213, 0, -213}},
- {0x0275, 0x0275, d{-214, 0, -214}},
- {0x027D, 0x027D, d{10727, 0, 10727}},
- {0x0280, 0x0280, d{-218, 0, -218}},
- {0x0283, 0x0283, d{-218, 0, -218}},
- {0x0288, 0x0288, d{-218, 0, -218}},
- {0x0289, 0x0289, d{-69, 0, -69}},
- {0x028A, 0x028B, d{-217, 0, -217}},
- {0x028C, 0x028C, d{-71, 0, -71}},
- {0x0292, 0x0292, d{-219, 0, -219}},
- {0x0345, 0x0345, d{84, 0, 84}},
- {0x0370, 0x0373, d{UpperLower, UpperLower, UpperLower}},
- {0x0376, 0x0377, d{UpperLower, UpperLower, UpperLower}},
- {0x037B, 0x037D, d{130, 0, 130}},
- {0x0386, 0x0386, d{0, 38, 0}},
- {0x0388, 0x038A, d{0, 37, 0}},
- {0x038C, 0x038C, d{0, 64, 0}},
- {0x038E, 0x038F, d{0, 63, 0}},
- {0x0391, 0x03A1, d{0, 32, 0}},
- {0x03A3, 0x03AB, d{0, 32, 0}},
- {0x03AC, 0x03AC, d{-38, 0, -38}},
- {0x03AD, 0x03AF, d{-37, 0, -37}},
- {0x03B1, 0x03C1, d{-32, 0, -32}},
- {0x03C2, 0x03C2, d{-31, 0, -31}},
- {0x03C3, 0x03CB, d{-32, 0, -32}},
- {0x03CC, 0x03CC, d{-64, 0, -64}},
- {0x03CD, 0x03CE, d{-63, 0, -63}},
- {0x03CF, 0x03CF, d{0, 8, 0}},
- {0x03D0, 0x03D0, d{-62, 0, -62}},
- {0x03D1, 0x03D1, d{-57, 0, -57}},
- {0x03D5, 0x03D5, d{-47, 0, -47}},
- {0x03D6, 0x03D6, d{-54, 0, -54}},
- {0x03D7, 0x03D7, d{-8, 0, -8}},
- {0x03D8, 0x03EF, d{UpperLower, UpperLower, UpperLower}},
- {0x03F0, 0x03F0, d{-86, 0, -86}},
- {0x03F1, 0x03F1, d{-80, 0, -80}},
- {0x03F2, 0x03F2, d{7, 0, 7}},
- {0x03F4, 0x03F4, d{0, -60, 0}},
- {0x03F5, 0x03F5, d{-96, 0, -96}},
- {0x03F7, 0x03F8, d{UpperLower, UpperLower, UpperLower}},
- {0x03F9, 0x03F9, d{0, -7, 0}},
- {0x03FA, 0x03FB, d{UpperLower, UpperLower, UpperLower}},
- {0x03FD, 0x03FF, d{0, -130, 0}},
- {0x0400, 0x040F, d{0, 80, 0}},
- {0x0410, 0x042F, d{0, 32, 0}},
- {0x0430, 0x044F, d{-32, 0, -32}},
- {0x0450, 0x045F, d{-80, 0, -80}},
- {0x0460, 0x0481, d{UpperLower, UpperLower, UpperLower}},
- {0x048A, 0x04BF, d{UpperLower, UpperLower, UpperLower}},
- {0x04C0, 0x04C0, d{0, 15, 0}},
- {0x04C1, 0x04CE, d{UpperLower, UpperLower, UpperLower}},
- {0x04CF, 0x04CF, d{-15, 0, -15}},
- {0x04D0, 0x0527, d{UpperLower, UpperLower, UpperLower}},
- {0x0531, 0x0556, d{0, 48, 0}},
- {0x0561, 0x0586, d{-48, 0, -48}},
- {0x10A0, 0x10C5, d{0, 7264, 0}},
- {0x10C7, 0x10C7, d{0, 7264, 0}},
- {0x10CD, 0x10CD, d{0, 7264, 0}},
- {0x1D79, 0x1D79, d{35332, 0, 35332}},
- {0x1D7D, 0x1D7D, d{3814, 0, 3814}},
- {0x1E00, 0x1E95, d{UpperLower, UpperLower, UpperLower}},
- {0x1E9B, 0x1E9B, d{-59, 0, -59}},
- {0x1E9E, 0x1E9E, d{0, -7615, 0}},
- {0x1EA0, 0x1EFF, d{UpperLower, UpperLower, UpperLower}},
- {0x1F00, 0x1F07, d{8, 0, 8}},
- {0x1F08, 0x1F0F, d{0, -8, 0}},
- {0x1F10, 0x1F15, d{8, 0, 8}},
- {0x1F18, 0x1F1D, d{0, -8, 0}},
- {0x1F20, 0x1F27, d{8, 0, 8}},
- {0x1F28, 0x1F2F, d{0, -8, 0}},
- {0x1F30, 0x1F37, d{8, 0, 8}},
- {0x1F38, 0x1F3F, d{0, -8, 0}},
- {0x1F40, 0x1F45, d{8, 0, 8}},
- {0x1F48, 0x1F4D, d{0, -8, 0}},
- {0x1F51, 0x1F51, d{8, 0, 8}},
- {0x1F53, 0x1F53, d{8, 0, 8}},
- {0x1F55, 0x1F55, d{8, 0, 8}},
- {0x1F57, 0x1F57, d{8, 0, 8}},
- {0x1F59, 0x1F59, d{0, -8, 0}},
- {0x1F5B, 0x1F5B, d{0, -8, 0}},
- {0x1F5D, 0x1F5D, d{0, -8, 0}},
- {0x1F5F, 0x1F5F, d{0, -8, 0}},
- {0x1F60, 0x1F67, d{8, 0, 8}},
- {0x1F68, 0x1F6F, d{0, -8, 0}},
- {0x1F70, 0x1F71, d{74, 0, 74}},
- {0x1F72, 0x1F75, d{86, 0, 86}},
- {0x1F76, 0x1F77, d{100, 0, 100}},
- {0x1F78, 0x1F79, d{128, 0, 128}},
- {0x1F7A, 0x1F7B, d{112, 0, 112}},
- {0x1F7C, 0x1F7D, d{126, 0, 126}},
- {0x1F80, 0x1F87, d{8, 0, 8}},
- {0x1F88, 0x1F8F, d{0, -8, 0}},
- {0x1F90, 0x1F97, d{8, 0, 8}},
- {0x1F98, 0x1F9F, d{0, -8, 0}},
- {0x1FA0, 0x1FA7, d{8, 0, 8}},
- {0x1FA8, 0x1FAF, d{0, -8, 0}},
- {0x1FB0, 0x1FB1, d{8, 0, 8}},
- {0x1FB3, 0x1FB3, d{9, 0, 9}},
- {0x1FB8, 0x1FB9, d{0, -8, 0}},
- {0x1FBA, 0x1FBB, d{0, -74, 0}},
- {0x1FBC, 0x1FBC, d{0, -9, 0}},
- {0x1FBE, 0x1FBE, d{-7205, 0, -7205}},
- {0x1FC3, 0x1FC3, d{9, 0, 9}},
- {0x1FC8, 0x1FCB, d{0, -86, 0}},
- {0x1FCC, 0x1FCC, d{0, -9, 0}},
- {0x1FD0, 0x1FD1, d{8, 0, 8}},
- {0x1FD8, 0x1FD9, d{0, -8, 0}},
- {0x1FDA, 0x1FDB, d{0, -100, 0}},
- {0x1FE0, 0x1FE1, d{8, 0, 8}},
- {0x1FE5, 0x1FE5, d{7, 0, 7}},
- {0x1FE8, 0x1FE9, d{0, -8, 0}},
- {0x1FEA, 0x1FEB, d{0, -112, 0}},
- {0x1FEC, 0x1FEC, d{0, -7, 0}},
- {0x1FF3, 0x1FF3, d{9, 0, 9}},
- {0x1FF8, 0x1FF9, d{0, -128, 0}},
- {0x1FFA, 0x1FFB, d{0, -126, 0}},
- {0x1FFC, 0x1FFC, d{0, -9, 0}},
- {0x2126, 0x2126, d{0, -7517, 0}},
- {0x212A, 0x212A, d{0, -8383, 0}},
- {0x212B, 0x212B, d{0, -8262, 0}},
- {0x2132, 0x2132, d{0, 28, 0}},
- {0x214E, 0x214E, d{-28, 0, -28}},
- {0x2160, 0x216F, d{0, 16, 0}},
- {0x2170, 0x217F, d{-16, 0, -16}},
- {0x2183, 0x2184, d{UpperLower, UpperLower, UpperLower}},
- {0x24B6, 0x24CF, d{0, 26, 0}},
- {0x24D0, 0x24E9, d{-26, 0, -26}},
- {0x2C00, 0x2C2E, d{0, 48, 0}},
- {0x2C30, 0x2C5E, d{-48, 0, -48}},
- {0x2C60, 0x2C61, d{UpperLower, UpperLower, UpperLower}},
- {0x2C62, 0x2C62, d{0, -10743, 0}},
- {0x2C63, 0x2C63, d{0, -3814, 0}},
- {0x2C64, 0x2C64, d{0, -10727, 0}},
- {0x2C65, 0x2C65, d{-10795, 0, -10795}},
- {0x2C66, 0x2C66, d{-10792, 0, -10792}},
- {0x2C67, 0x2C6C, d{UpperLower, UpperLower, UpperLower}},
- {0x2C6D, 0x2C6D, d{0, -10780, 0}},
- {0x2C6E, 0x2C6E, d{0, -10749, 0}},
- {0x2C6F, 0x2C6F, d{0, -10783, 0}},
- {0x2C70, 0x2C70, d{0, -10782, 0}},
- {0x2C72, 0x2C73, d{UpperLower, UpperLower, UpperLower}},
- {0x2C75, 0x2C76, d{UpperLower, UpperLower, UpperLower}},
- {0x2C7E, 0x2C7F, d{0, -10815, 0}},
- {0x2C80, 0x2CE3, d{UpperLower, UpperLower, UpperLower}},
- {0x2CEB, 0x2CEE, d{UpperLower, UpperLower, UpperLower}},
- {0x2CF2, 0x2CF3, d{UpperLower, UpperLower, UpperLower}},
- {0x2D00, 0x2D25, d{-7264, 0, -7264}},
- {0x2D27, 0x2D27, d{-7264, 0, -7264}},
- {0x2D2D, 0x2D2D, d{-7264, 0, -7264}},
- {0xA640, 0xA66D, d{UpperLower, UpperLower, UpperLower}},
- {0xA680, 0xA697, d{UpperLower, UpperLower, UpperLower}},
- {0xA722, 0xA72F, d{UpperLower, UpperLower, UpperLower}},
- {0xA732, 0xA76F, d{UpperLower, UpperLower, UpperLower}},
- {0xA779, 0xA77C, d{UpperLower, UpperLower, UpperLower}},
- {0xA77D, 0xA77D, d{0, -35332, 0}},
- {0xA77E, 0xA787, d{UpperLower, UpperLower, UpperLower}},
- {0xA78B, 0xA78C, d{UpperLower, UpperLower, UpperLower}},
- {0xA78D, 0xA78D, d{0, -42280, 0}},
- {0xA790, 0xA793, d{UpperLower, UpperLower, UpperLower}},
- {0xA7A0, 0xA7A9, d{UpperLower, UpperLower, UpperLower}},
- {0xA7AA, 0xA7AA, d{0, -42308, 0}},
- {0xFF21, 0xFF3A, d{0, 32, 0}},
- {0xFF41, 0xFF5A, d{-32, 0, -32}},
- {0x10400, 0x10427, d{0, 40, 0}},
- {0x10428, 0x1044F, d{-40, 0, -40}},
-}
-var properties = [MaxLatin1 + 1]uint8{
- 0x00: pC, // '\x00'
- 0x01: pC, // '\x01'
- 0x02: pC, // '\x02'
- 0x03: pC, // '\x03'
- 0x04: pC, // '\x04'
- 0x05: pC, // '\x05'
- 0x06: pC, // '\x06'
- 0x07: pC, // '\a'
- 0x08: pC, // '\b'
- 0x09: pC, // '\t'
- 0x0A: pC, // '\n'
- 0x0B: pC, // '\v'
- 0x0C: pC, // '\f'
- 0x0D: pC, // '\r'
- 0x0E: pC, // '\x0e'
- 0x0F: pC, // '\x0f'
- 0x10: pC, // '\x10'
- 0x11: pC, // '\x11'
- 0x12: pC, // '\x12'
- 0x13: pC, // '\x13'
- 0x14: pC, // '\x14'
- 0x15: pC, // '\x15'
- 0x16: pC, // '\x16'
- 0x17: pC, // '\x17'
- 0x18: pC, // '\x18'
- 0x19: pC, // '\x19'
- 0x1A: pC, // '\x1a'
- 0x1B: pC, // '\x1b'
- 0x1C: pC, // '\x1c'
- 0x1D: pC, // '\x1d'
- 0x1E: pC, // '\x1e'
- 0x1F: pC, // '\x1f'
- 0x20: pZ | pp, // ' '
- 0x21: pP | pp, // '!'
- 0x22: pP | pp, // '"'
- 0x23: pP | pp, // '#'
- 0x24: pS | pp, // '$'
- 0x25: pP | pp, // '%'
- 0x26: pP | pp, // '&'
- 0x27: pP | pp, // '\''
- 0x28: pP | pp, // '('
- 0x29: pP | pp, // ')'
- 0x2A: pP | pp, // '*'
- 0x2B: pS | pp, // '+'
- 0x2C: pP | pp, // ','
- 0x2D: pP | pp, // '-'
- 0x2E: pP | pp, // '.'
- 0x2F: pP | pp, // '/'
- 0x30: pN | pp, // '0'
- 0x31: pN | pp, // '1'
- 0x32: pN | pp, // '2'
- 0x33: pN | pp, // '3'
- 0x34: pN | pp, // '4'
- 0x35: pN | pp, // '5'
- 0x36: pN | pp, // '6'
- 0x37: pN | pp, // '7'
- 0x38: pN | pp, // '8'
- 0x39: pN | pp, // '9'
- 0x3A: pP | pp, // ':'
- 0x3B: pP | pp, // ';'
- 0x3C: pS | pp, // '<'
- 0x3D: pS | pp, // '='
- 0x3E: pS | pp, // '>'
- 0x3F: pP | pp, // '?'
- 0x40: pP | pp, // '@'
- 0x41: pLu | pp, // 'A'
- 0x42: pLu | pp, // 'B'
- 0x43: pLu | pp, // 'C'
- 0x44: pLu | pp, // 'D'
- 0x45: pLu | pp, // 'E'
- 0x46: pLu | pp, // 'F'
- 0x47: pLu | pp, // 'G'
- 0x48: pLu | pp, // 'H'
- 0x49: pLu | pp, // 'I'
- 0x4A: pLu | pp, // 'J'
- 0x4B: pLu | pp, // 'K'
- 0x4C: pLu | pp, // 'L'
- 0x4D: pLu | pp, // 'M'
- 0x4E: pLu | pp, // 'N'
- 0x4F: pLu | pp, // 'O'
- 0x50: pLu | pp, // 'P'
- 0x51: pLu | pp, // 'Q'
- 0x52: pLu | pp, // 'R'
- 0x53: pLu | pp, // 'S'
- 0x54: pLu | pp, // 'T'
- 0x55: pLu | pp, // 'U'
- 0x56: pLu | pp, // 'V'
- 0x57: pLu | pp, // 'W'
- 0x58: pLu | pp, // 'X'
- 0x59: pLu | pp, // 'Y'
- 0x5A: pLu | pp, // 'Z'
- 0x5B: pP | pp, // '['
- 0x5C: pP | pp, // '\\'
- 0x5D: pP | pp, // ']'
- 0x5E: pS | pp, // '^'
- 0x5F: pP | pp, // '_'
- 0x60: pS | pp, // '`'
- 0x61: pLl | pp, // 'a'
- 0x62: pLl | pp, // 'b'
- 0x63: pLl | pp, // 'c'
- 0x64: pLl | pp, // 'd'
- 0x65: pLl | pp, // 'e'
- 0x66: pLl | pp, // 'f'
- 0x67: pLl | pp, // 'g'
- 0x68: pLl | pp, // 'h'
- 0x69: pLl | pp, // 'i'
- 0x6A: pLl | pp, // 'j'
- 0x6B: pLl | pp, // 'k'
- 0x6C: pLl | pp, // 'l'
- 0x6D: pLl | pp, // 'm'
- 0x6E: pLl | pp, // 'n'
- 0x6F: pLl | pp, // 'o'
- 0x70: pLl | pp, // 'p'
- 0x71: pLl | pp, // 'q'
- 0x72: pLl | pp, // 'r'
- 0x73: pLl | pp, // 's'
- 0x74: pLl | pp, // 't'
- 0x75: pLl | pp, // 'u'
- 0x76: pLl | pp, // 'v'
- 0x77: pLl | pp, // 'w'
- 0x78: pLl | pp, // 'x'
- 0x79: pLl | pp, // 'y'
- 0x7A: pLl | pp, // 'z'
- 0x7B: pP | pp, // '{'
- 0x7C: pS | pp, // '|'
- 0x7D: pP | pp, // '}'
- 0x7E: pS | pp, // '~'
- 0x7F: pC, // '\u007f'
- 0x80: pC, // '\u0080'
- 0x81: pC, // '\u0081'
- 0x82: pC, // '\u0082'
- 0x83: pC, // '\u0083'
- 0x84: pC, // '\u0084'
- 0x85: pC, // '\u0085'
- 0x86: pC, // '\u0086'
- 0x87: pC, // '\u0087'
- 0x88: pC, // '\u0088'
- 0x89: pC, // '\u0089'
- 0x8A: pC, // '\u008a'
- 0x8B: pC, // '\u008b'
- 0x8C: pC, // '\u008c'
- 0x8D: pC, // '\u008d'
- 0x8E: pC, // '\u008e'
- 0x8F: pC, // '\u008f'
- 0x90: pC, // '\u0090'
- 0x91: pC, // '\u0091'
- 0x92: pC, // '\u0092'
- 0x93: pC, // '\u0093'
- 0x94: pC, // '\u0094'
- 0x95: pC, // '\u0095'
- 0x96: pC, // '\u0096'
- 0x97: pC, // '\u0097'
- 0x98: pC, // '\u0098'
- 0x99: pC, // '\u0099'
- 0x9A: pC, // '\u009a'
- 0x9B: pC, // '\u009b'
- 0x9C: pC, // '\u009c'
- 0x9D: pC, // '\u009d'
- 0x9E: pC, // '\u009e'
- 0x9F: pC, // '\u009f'
- 0xA0: pZ, // '\u00a0'
- 0xA1: pP | pp, // '¡'
- 0xA2: pS | pp, // '¢'
- 0xA3: pS | pp, // '£'
- 0xA4: pS | pp, // '¤'
- 0xA5: pS | pp, // '¥'
- 0xA6: pS | pp, // '¦'
- 0xA7: pP | pp, // '§'
- 0xA8: pS | pp, // '¨'
- 0xA9: pS | pp, // '©'
- 0xAA: pLo | pp, // 'ª'
- 0xAB: pP | pp, // '«'
- 0xAC: pS | pp, // '¬'
- 0xAD: 0, // '\u00ad'
- 0xAE: pS | pp, // '®'
- 0xAF: pS | pp, // '¯'
- 0xB0: pS | pp, // '°'
- 0xB1: pS | pp, // '±'
- 0xB2: pN | pp, // '²'
- 0xB3: pN | pp, // '³'
- 0xB4: pS | pp, // '´'
- 0xB5: pLl | pp, // 'µ'
- 0xB6: pP | pp, // '¶'
- 0xB7: pP | pp, // '·'
- 0xB8: pS | pp, // '¸'
- 0xB9: pN | pp, // '¹'
- 0xBA: pLo | pp, // 'º'
- 0xBB: pP | pp, // '»'
- 0xBC: pN | pp, // '¼'
- 0xBD: pN | pp, // '½'
- 0xBE: pN | pp, // '¾'
- 0xBF: pP | pp, // '¿'
- 0xC0: pLu | pp, // 'À'
- 0xC1: pLu | pp, // 'Á'
- 0xC2: pLu | pp, // 'Â'
- 0xC3: pLu | pp, // 'Ã'
- 0xC4: pLu | pp, // 'Ä'
- 0xC5: pLu | pp, // 'Å'
- 0xC6: pLu | pp, // 'Æ'
- 0xC7: pLu | pp, // 'Ç'
- 0xC8: pLu | pp, // 'È'
- 0xC9: pLu | pp, // 'É'
- 0xCA: pLu | pp, // 'Ê'
- 0xCB: pLu | pp, // 'Ë'
- 0xCC: pLu | pp, // 'Ì'
- 0xCD: pLu | pp, // 'Í'
- 0xCE: pLu | pp, // 'Î'
- 0xCF: pLu | pp, // 'Ï'
- 0xD0: pLu | pp, // 'Ð'
- 0xD1: pLu | pp, // 'Ñ'
- 0xD2: pLu | pp, // 'Ò'
- 0xD3: pLu | pp, // 'Ó'
- 0xD4: pLu | pp, // 'Ô'
- 0xD5: pLu | pp, // 'Õ'
- 0xD6: pLu | pp, // 'Ö'
- 0xD7: pS | pp, // '×'
- 0xD8: pLu | pp, // 'Ø'
- 0xD9: pLu | pp, // 'Ù'
- 0xDA: pLu | pp, // 'Ú'
- 0xDB: pLu | pp, // 'Û'
- 0xDC: pLu | pp, // 'Ü'
- 0xDD: pLu | pp, // 'Ý'
- 0xDE: pLu | pp, // 'Þ'
- 0xDF: pLl | pp, // 'ß'
- 0xE0: pLl | pp, // 'à'
- 0xE1: pLl | pp, // 'á'
- 0xE2: pLl | pp, // 'â'
- 0xE3: pLl | pp, // 'ã'
- 0xE4: pLl | pp, // 'ä'
- 0xE5: pLl | pp, // 'å'
- 0xE6: pLl | pp, // 'æ'
- 0xE7: pLl | pp, // 'ç'
- 0xE8: pLl | pp, // 'è'
- 0xE9: pLl | pp, // 'é'
- 0xEA: pLl | pp, // 'ê'
- 0xEB: pLl | pp, // 'ë'
- 0xEC: pLl | pp, // 'ì'
- 0xED: pLl | pp, // 'í'
- 0xEE: pLl | pp, // 'î'
- 0xEF: pLl | pp, // 'ï'
- 0xF0: pLl | pp, // 'ð'
- 0xF1: pLl | pp, // 'ñ'
- 0xF2: pLl | pp, // 'ò'
- 0xF3: pLl | pp, // 'ó'
- 0xF4: pLl | pp, // 'ô'
- 0xF5: pLl | pp, // 'õ'
- 0xF6: pLl | pp, // 'ö'
- 0xF7: pS | pp, // '÷'
- 0xF8: pLl | pp, // 'ø'
- 0xF9: pLl | pp, // 'ù'
- 0xFA: pLl | pp, // 'ú'
- 0xFB: pLl | pp, // 'û'
- 0xFC: pLl | pp, // 'ü'
- 0xFD: pLl | pp, // 'ý'
- 0xFE: pLl | pp, // 'þ'
- 0xFF: pLl | pp, // 'ÿ'
-}
-
-var caseOrbit = []foldPair{
- {0x004B, 0x006B},
- {0x0053, 0x0073},
- {0x006B, 0x212A},
- {0x0073, 0x017F},
- {0x00B5, 0x039C},
- {0x00C5, 0x00E5},
- {0x00DF, 0x1E9E},
- {0x00E5, 0x212B},
- {0x0130, 0x0130},
- {0x0131, 0x0131},
- {0x017F, 0x0053},
- {0x01C4, 0x01C5},
- {0x01C5, 0x01C6},
- {0x01C6, 0x01C4},
- {0x01C7, 0x01C8},
- {0x01C8, 0x01C9},
- {0x01C9, 0x01C7},
- {0x01CA, 0x01CB},
- {0x01CB, 0x01CC},
- {0x01CC, 0x01CA},
- {0x01F1, 0x01F2},
- {0x01F2, 0x01F3},
- {0x01F3, 0x01F1},
- {0x0345, 0x0399},
- {0x0392, 0x03B2},
- {0x0395, 0x03B5},
- {0x0398, 0x03B8},
- {0x0399, 0x03B9},
- {0x039A, 0x03BA},
- {0x039C, 0x03BC},
- {0x03A0, 0x03C0},
- {0x03A1, 0x03C1},
- {0x03A3, 0x03C2},
- {0x03A6, 0x03C6},
- {0x03A9, 0x03C9},
- {0x03B2, 0x03D0},
- {0x03B5, 0x03F5},
- {0x03B8, 0x03D1},
- {0x03B9, 0x1FBE},
- {0x03BA, 0x03F0},
- {0x03BC, 0x00B5},
- {0x03C0, 0x03D6},
- {0x03C1, 0x03F1},
- {0x03C2, 0x03C3},
- {0x03C3, 0x03A3},
- {0x03C6, 0x03D5},
- {0x03C9, 0x2126},
- {0x03D0, 0x0392},
- {0x03D1, 0x03F4},
- {0x03D5, 0x03A6},
- {0x03D6, 0x03A0},
- {0x03F0, 0x039A},
- {0x03F1, 0x03A1},
- {0x03F4, 0x0398},
- {0x03F5, 0x0395},
- {0x1E60, 0x1E61},
- {0x1E61, 0x1E9B},
- {0x1E9B, 0x1E60},
- {0x1E9E, 0x00DF},
- {0x1FBE, 0x0345},
- {0x2126, 0x03A9},
- {0x212A, 0x004B},
- {0x212B, 0x00C5},
-}
-
-// FoldCategory maps a category name to a table of
-// code points outside the category that are equivalent under
-// simple case folding to code points inside the category.
-// If there is no entry for a category name, there are no such points.
-var FoldCategory = map[string]*RangeTable{
- "Common": foldCommon,
- "Greek": foldGreek,
- "Inherited": foldInherited,
- "L": foldL,
- "Ll": foldLl,
- "Lt": foldLt,
- "Lu": foldLu,
- "M": foldM,
- "Mn": foldMn,
-}
-
-var foldCommon = &RangeTable{
- R16: []Range16{
- {0x039c, 0x03bc, 32},
- },
-}
-
-var foldGreek = &RangeTable{
- R16: []Range16{
- {0x00b5, 0x0345, 656},
- },
-}
-
-var foldInherited = &RangeTable{
- R16: []Range16{
- {0x0399, 0x03b9, 32},
- {0x1fbe, 0x1fbe, 1},
- },
-}
-
-var foldL = &RangeTable{
- R16: []Range16{
- {0x0345, 0x0345, 1},
- },
-}
-
-var foldLl = &RangeTable{
- R16: []Range16{
- {0x0041, 0x005a, 1},
- {0x00c0, 0x00d6, 1},
- {0x00d8, 0x00de, 1},
- {0x0100, 0x012e, 2},
- {0x0132, 0x0136, 2},
- {0x0139, 0x0147, 2},
- {0x014a, 0x0178, 2},
- {0x0179, 0x017d, 2},
- {0x0181, 0x0182, 1},
- {0x0184, 0x0186, 2},
- {0x0187, 0x0189, 2},
- {0x018a, 0x018b, 1},
- {0x018e, 0x0191, 1},
- {0x0193, 0x0194, 1},
- {0x0196, 0x0198, 1},
- {0x019c, 0x019d, 1},
- {0x019f, 0x01a0, 1},
- {0x01a2, 0x01a6, 2},
- {0x01a7, 0x01a9, 2},
- {0x01ac, 0x01ae, 2},
- {0x01af, 0x01b1, 2},
- {0x01b2, 0x01b3, 1},
- {0x01b5, 0x01b7, 2},
- {0x01b8, 0x01bc, 4},
- {0x01c4, 0x01c5, 1},
- {0x01c7, 0x01c8, 1},
- {0x01ca, 0x01cb, 1},
- {0x01cd, 0x01db, 2},
- {0x01de, 0x01ee, 2},
- {0x01f1, 0x01f2, 1},
- {0x01f4, 0x01f6, 2},
- {0x01f7, 0x01f8, 1},
- {0x01fa, 0x0232, 2},
- {0x023a, 0x023b, 1},
- {0x023d, 0x023e, 1},
- {0x0241, 0x0243, 2},
- {0x0244, 0x0246, 1},
- {0x0248, 0x024e, 2},
- {0x0345, 0x0370, 43},
- {0x0372, 0x0376, 4},
- {0x0386, 0x0388, 2},
- {0x0389, 0x038a, 1},
- {0x038c, 0x038e, 2},
- {0x038f, 0x0391, 2},
- {0x0392, 0x03a1, 1},
- {0x03a3, 0x03ab, 1},
- {0x03cf, 0x03d8, 9},
- {0x03da, 0x03ee, 2},
- {0x03f4, 0x03f7, 3},
- {0x03f9, 0x03fa, 1},
- {0x03fd, 0x042f, 1},
- {0x0460, 0x0480, 2},
- {0x048a, 0x04c0, 2},
- {0x04c1, 0x04cd, 2},
- {0x04d0, 0x0526, 2},
- {0x0531, 0x0556, 1},
- {0x10a0, 0x10c5, 1},
- {0x10c7, 0x10cd, 6},
- {0x1e00, 0x1e94, 2},
- {0x1e9e, 0x1efe, 2},
- {0x1f08, 0x1f0f, 1},
- {0x1f18, 0x1f1d, 1},
- {0x1f28, 0x1f2f, 1},
- {0x1f38, 0x1f3f, 1},
- {0x1f48, 0x1f4d, 1},
- {0x1f59, 0x1f5f, 2},
- {0x1f68, 0x1f6f, 1},
- {0x1f88, 0x1f8f, 1},
- {0x1f98, 0x1f9f, 1},
- {0x1fa8, 0x1faf, 1},
- {0x1fb8, 0x1fbc, 1},
- {0x1fc8, 0x1fcc, 1},
- {0x1fd8, 0x1fdb, 1},
- {0x1fe8, 0x1fec, 1},
- {0x1ff8, 0x1ffc, 1},
- {0x2126, 0x212a, 4},
- {0x212b, 0x2132, 7},
- {0x2183, 0x2c00, 2685},
- {0x2c01, 0x2c2e, 1},
- {0x2c60, 0x2c62, 2},
- {0x2c63, 0x2c64, 1},
- {0x2c67, 0x2c6d, 2},
- {0x2c6e, 0x2c70, 1},
- {0x2c72, 0x2c75, 3},
- {0x2c7e, 0x2c80, 1},
- {0x2c82, 0x2ce2, 2},
- {0x2ceb, 0x2ced, 2},
- {0x2cf2, 0xa640, 31054},
- {0xa642, 0xa66c, 2},
- {0xa680, 0xa696, 2},
- {0xa722, 0xa72e, 2},
- {0xa732, 0xa76e, 2},
- {0xa779, 0xa77d, 2},
- {0xa77e, 0xa786, 2},
- {0xa78b, 0xa78d, 2},
- {0xa790, 0xa792, 2},
- {0xa7a0, 0xa7aa, 2},
- {0xff21, 0xff3a, 1},
- },
- R32: []Range32{
- {0x10400, 0x10427, 1},
- },
- LatinOffset: 3,
-}
-
-var foldLt = &RangeTable{
- R16: []Range16{
- {0x01c4, 0x01c6, 2},
- {0x01c7, 0x01c9, 2},
- {0x01ca, 0x01cc, 2},
- {0x01f1, 0x01f3, 2},
- {0x1f80, 0x1f87, 1},
- {0x1f90, 0x1f97, 1},
- {0x1fa0, 0x1fa7, 1},
- {0x1fb3, 0x1fc3, 16},
- {0x1ff3, 0x1ff3, 1},
- },
-}
-
-var foldLu = &RangeTable{
- R16: []Range16{
- {0x0061, 0x007a, 1},
- {0x00b5, 0x00df, 42},
- {0x00e0, 0x00f6, 1},
- {0x00f8, 0x00ff, 1},
- {0x0101, 0x012f, 2},
- {0x0133, 0x0137, 2},
- {0x013a, 0x0148, 2},
- {0x014b, 0x0177, 2},
- {0x017a, 0x017e, 2},
- {0x017f, 0x0180, 1},
- {0x0183, 0x0185, 2},
- {0x0188, 0x018c, 4},
- {0x0192, 0x0195, 3},
- {0x0199, 0x019a, 1},
- {0x019e, 0x01a1, 3},
- {0x01a3, 0x01a5, 2},
- {0x01a8, 0x01ad, 5},
- {0x01b0, 0x01b4, 4},
- {0x01b6, 0x01b9, 3},
- {0x01bd, 0x01bf, 2},
- {0x01c5, 0x01c6, 1},
- {0x01c8, 0x01c9, 1},
- {0x01cb, 0x01cc, 1},
- {0x01ce, 0x01dc, 2},
- {0x01dd, 0x01ef, 2},
- {0x01f2, 0x01f3, 1},
- {0x01f5, 0x01f9, 4},
- {0x01fb, 0x021f, 2},
- {0x0223, 0x0233, 2},
- {0x023c, 0x023f, 3},
- {0x0240, 0x0242, 2},
- {0x0247, 0x024f, 2},
- {0x0250, 0x0254, 1},
- {0x0256, 0x0257, 1},
- {0x0259, 0x025b, 2},
- {0x0260, 0x0263, 3},
- {0x0265, 0x0266, 1},
- {0x0268, 0x0269, 1},
- {0x026b, 0x026f, 4},
- {0x0271, 0x0272, 1},
- {0x0275, 0x027d, 8},
- {0x0280, 0x0283, 3},
- {0x0288, 0x028c, 1},
- {0x0292, 0x0345, 179},
- {0x0371, 0x0373, 2},
- {0x0377, 0x037b, 4},
- {0x037c, 0x037d, 1},
- {0x03ac, 0x03af, 1},
- {0x03b1, 0x03ce, 1},
- {0x03d0, 0x03d1, 1},
- {0x03d5, 0x03d7, 1},
- {0x03d9, 0x03ef, 2},
- {0x03f0, 0x03f2, 1},
- {0x03f5, 0x03fb, 3},
- {0x0430, 0x045f, 1},
- {0x0461, 0x0481, 2},
- {0x048b, 0x04bf, 2},
- {0x04c2, 0x04ce, 2},
- {0x04cf, 0x0527, 2},
- {0x0561, 0x0586, 1},
- {0x1d79, 0x1d7d, 4},
- {0x1e01, 0x1e95, 2},
- {0x1e9b, 0x1ea1, 6},
- {0x1ea3, 0x1eff, 2},
- {0x1f00, 0x1f07, 1},
- {0x1f10, 0x1f15, 1},
- {0x1f20, 0x1f27, 1},
- {0x1f30, 0x1f37, 1},
- {0x1f40, 0x1f45, 1},
- {0x1f51, 0x1f57, 2},
- {0x1f60, 0x1f67, 1},
- {0x1f70, 0x1f7d, 1},
- {0x1fb0, 0x1fb1, 1},
- {0x1fbe, 0x1fd0, 18},
- {0x1fd1, 0x1fe0, 15},
- {0x1fe1, 0x1fe5, 4},
- {0x214e, 0x2184, 54},
- {0x2c30, 0x2c5e, 1},
- {0x2c61, 0x2c65, 4},
- {0x2c66, 0x2c6c, 2},
- {0x2c73, 0x2c76, 3},
- {0x2c81, 0x2ce3, 2},
- {0x2cec, 0x2cee, 2},
- {0x2cf3, 0x2d00, 13},
- {0x2d01, 0x2d25, 1},
- {0x2d27, 0x2d2d, 6},
- {0xa641, 0xa66d, 2},
- {0xa681, 0xa697, 2},
- {0xa723, 0xa72f, 2},
- {0xa733, 0xa76f, 2},
- {0xa77a, 0xa77c, 2},
- {0xa77f, 0xa787, 2},
- {0xa78c, 0xa791, 5},
- {0xa793, 0xa7a1, 14},
- {0xa7a3, 0xa7a9, 2},
- {0xff41, 0xff5a, 1},
- },
- R32: []Range32{
- {0x10428, 0x1044f, 1},
- },
- LatinOffset: 4,
-}
-
-var foldM = &RangeTable{
- R16: []Range16{
- {0x0399, 0x03b9, 32},
- {0x1fbe, 0x1fbe, 1},
- },
-}
-
-var foldMn = &RangeTable{
- R16: []Range16{
- {0x0399, 0x03b9, 32},
- {0x1fbe, 0x1fbe, 1},
- },
-}
-
-// FoldScript maps a script name to a table of
-// code points outside the script that are equivalent under
-// simple case folding to code points inside the script.
-// If there is no entry for a script name, there are no such points.
-var FoldScript = map[string]*RangeTable{}
-
-// Range entries: 3471 16-bit, 832 32-bit, 4303 total.
-// Range bytes: 20826 16-bit, 9984 32-bit, 30810 total.
-
-// Fold orbit bytes: 63 pairs, 252 bytes
diff --git a/src/pkg/unicode/utf16/export_test.go b/src/pkg/unicode/utf16/export_test.go
deleted file mode 100644
index 306247e48..000000000
--- a/src/pkg/unicode/utf16/export_test.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package utf16
-
-// Extra names for constants so we can validate them during testing.
-const (
- MaxRune = maxRune
- ReplacementChar = replacementChar
-)
diff --git a/src/pkg/unicode/utf16/utf16.go b/src/pkg/unicode/utf16/utf16.go
deleted file mode 100644
index c0e47c535..000000000
--- a/src/pkg/unicode/utf16/utf16.go
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package utf16 implements encoding and decoding of UTF-16 sequences.
-package utf16
-
-// The conditions replacementChar==unicode.ReplacementChar and
-// maxRune==unicode.MaxRune are verified in the tests.
-// Defining them locally avoids this package depending on package unicode.
-
-const (
- replacementChar = '\uFFFD' // Unicode replacement character
- maxRune = '\U0010FFFF' // Maximum valid Unicode code point.
-)
-
-const (
- // 0xd800-0xdc00 encodes the high 10 bits of a pair.
- // 0xdc00-0xe000 encodes the low 10 bits of a pair.
- // the value is those 20 bits plus 0x10000.
- surr1 = 0xd800
- surr2 = 0xdc00
- surr3 = 0xe000
-
- surrSelf = 0x10000
-)
-
-// IsSurrogate returns true if the specified Unicode code point
-// can appear in a surrogate pair.
-func IsSurrogate(r rune) bool {
- return surr1 <= r && r < surr3
-}
-
-// DecodeRune returns the UTF-16 decoding of a surrogate pair.
-// If the pair is not a valid UTF-16 surrogate pair, DecodeRune returns
-// the Unicode replacement code point U+FFFD.
-func DecodeRune(r1, r2 rune) rune {
- if surr1 <= r1 && r1 < surr2 && surr2 <= r2 && r2 < surr3 {
- return (r1-surr1)<<10 | (r2 - surr2) + 0x10000
- }
- return replacementChar
-}
-
-// EncodeRune returns the UTF-16 surrogate pair r1, r2 for the given rune.
-// If the rune is not a valid Unicode code point or does not need encoding,
-// EncodeRune returns U+FFFD, U+FFFD.
-func EncodeRune(r rune) (r1, r2 rune) {
- if r < surrSelf || r > maxRune || IsSurrogate(r) {
- return replacementChar, replacementChar
- }
- r -= surrSelf
- return surr1 + (r>>10)&0x3ff, surr2 + r&0x3ff
-}
-
-// Encode returns the UTF-16 encoding of the Unicode code point sequence s.
-func Encode(s []rune) []uint16 {
- n := len(s)
- for _, v := range s {
- if v >= surrSelf {
- n++
- }
- }
-
- a := make([]uint16, n)
- n = 0
- for _, v := range s {
- switch {
- case v < 0, surr1 <= v && v < surr3, v > maxRune:
- v = replacementChar
- fallthrough
- case v < surrSelf:
- a[n] = uint16(v)
- n++
- default:
- r1, r2 := EncodeRune(v)
- a[n] = uint16(r1)
- a[n+1] = uint16(r2)
- n += 2
- }
- }
- return a[0:n]
-}
-
-// Decode returns the Unicode code point sequence represented
-// by the UTF-16 encoding s.
-func Decode(s []uint16) []rune {
- a := make([]rune, len(s))
- n := 0
- for i := 0; i < len(s); i++ {
- switch r := s[i]; {
- case surr1 <= r && r < surr2 && i+1 < len(s) &&
- surr2 <= s[i+1] && s[i+1] < surr3:
- // valid surrogate sequence
- a[n] = DecodeRune(rune(r), rune(s[i+1]))
- i++
- n++
- case surr1 <= r && r < surr3:
- // invalid surrogate sequence
- a[n] = replacementChar
- n++
- default:
- // normal rune
- a[n] = rune(r)
- n++
- }
- }
- return a[0:n]
-}
diff --git a/src/pkg/unicode/utf16/utf16_test.go b/src/pkg/unicode/utf16/utf16_test.go
deleted file mode 100644
index 3dca472bb..000000000
--- a/src/pkg/unicode/utf16/utf16_test.go
+++ /dev/null
@@ -1,149 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package utf16_test
-
-import (
- "reflect"
- "testing"
- "unicode"
- . "unicode/utf16"
-)
-
-// Validate the constants redefined from unicode.
-func TestConstants(t *testing.T) {
- if MaxRune != unicode.MaxRune {
- t.Errorf("utf16.maxRune is wrong: %x should be %x", MaxRune, unicode.MaxRune)
- }
- if ReplacementChar != unicode.ReplacementChar {
- t.Errorf("utf16.replacementChar is wrong: %x should be %x", ReplacementChar, unicode.ReplacementChar)
- }
-}
-
-type encodeTest struct {
- in []rune
- out []uint16
-}
-
-var encodeTests = []encodeTest{
- {[]rune{1, 2, 3, 4}, []uint16{1, 2, 3, 4}},
- {[]rune{0xffff, 0x10000, 0x10001, 0x12345, 0x10ffff},
- []uint16{0xffff, 0xd800, 0xdc00, 0xd800, 0xdc01, 0xd808, 0xdf45, 0xdbff, 0xdfff}},
- {[]rune{'a', 'b', 0xd7ff, 0xd800, 0xdfff, 0xe000, 0x110000, -1},
- []uint16{'a', 'b', 0xd7ff, 0xfffd, 0xfffd, 0xe000, 0xfffd, 0xfffd}},
-}
-
-func TestEncode(t *testing.T) {
- for _, tt := range encodeTests {
- out := Encode(tt.in)
- if !reflect.DeepEqual(out, tt.out) {
- t.Errorf("Encode(%x) = %x; want %x", tt.in, out, tt.out)
- }
- }
-}
-
-func TestEncodeRune(t *testing.T) {
- for i, tt := range encodeTests {
- j := 0
- for _, r := range tt.in {
- r1, r2 := EncodeRune(r)
- if r < 0x10000 || r > unicode.MaxRune {
- if j >= len(tt.out) {
- t.Errorf("#%d: ran out of tt.out", i)
- break
- }
- if r1 != unicode.ReplacementChar || r2 != unicode.ReplacementChar {
- t.Errorf("EncodeRune(%#x) = %#x, %#x; want 0xfffd, 0xfffd", r, r1, r2)
- }
- j++
- } else {
- if j+1 >= len(tt.out) {
- t.Errorf("#%d: ran out of tt.out", i)
- break
- }
- if r1 != rune(tt.out[j]) || r2 != rune(tt.out[j+1]) {
- t.Errorf("EncodeRune(%#x) = %#x, %#x; want %#x, %#x", r, r1, r2, tt.out[j], tt.out[j+1])
- }
- j += 2
- dec := DecodeRune(r1, r2)
- if dec != r {
- t.Errorf("DecodeRune(%#x, %#x) = %#x; want %#x", r1, r2, dec, r)
- }
- }
- }
- if j != len(tt.out) {
- t.Errorf("#%d: EncodeRune didn't generate enough output", i)
- }
- }
-}
-
-type decodeTest struct {
- in []uint16
- out []rune
-}
-
-var decodeTests = []decodeTest{
- {[]uint16{1, 2, 3, 4}, []rune{1, 2, 3, 4}},
- {[]uint16{0xffff, 0xd800, 0xdc00, 0xd800, 0xdc01, 0xd808, 0xdf45, 0xdbff, 0xdfff},
- []rune{0xffff, 0x10000, 0x10001, 0x12345, 0x10ffff}},
- {[]uint16{0xd800, 'a'}, []rune{0xfffd, 'a'}},
- {[]uint16{0xdfff}, []rune{0xfffd}},
-}
-
-func TestDecode(t *testing.T) {
- for _, tt := range decodeTests {
- out := Decode(tt.in)
- if !reflect.DeepEqual(out, tt.out) {
- t.Errorf("Decode(%x) = %x; want %x", tt.in, out, tt.out)
- }
- }
-}
-
-var decodeRuneTests = []struct {
- r1, r2 rune
- want rune
-}{
- {0xd800, 0xdc00, 0x10000},
- {0xd800, 0xdc01, 0x10001},
- {0xd808, 0xdf45, 0x12345},
- {0xdbff, 0xdfff, 0x10ffff},
- {0xd800, 'a', 0xfffd}, // illegal, replacement rune substituted
-}
-
-func TestDecodeRune(t *testing.T) {
- for i, tt := range decodeRuneTests {
- got := DecodeRune(tt.r1, tt.r2)
- if got != tt.want {
- t.Errorf("%d: DecodeRune(%q, %q) = %v; want %v", i, tt.r1, tt.r2, got, tt.want)
- }
- }
-}
-
-var surrogateTests = []struct {
- r rune
- want bool
-}{
- // from http://en.wikipedia.org/wiki/UTF-16
- {'\u007A', false}, // LATIN SMALL LETTER Z
- {'\u6C34', false}, // CJK UNIFIED IDEOGRAPH-6C34 (water)
- {'\uFEFF', false}, // Byte Order Mark
- {'\U00010000', false}, // LINEAR B SYLLABLE B008 A (first non-BMP code point)
- {'\U0001D11E', false}, // MUSICAL SYMBOL G CLEF
- {'\U0010FFFD', false}, // PRIVATE USE CHARACTER-10FFFD (last Unicode code point)
-
- {rune(0xd7ff), false}, // surr1-1
- {rune(0xd800), true}, // surr1
- {rune(0xdc00), true}, // surr2
- {rune(0xe000), false}, // surr3
- {rune(0xdfff), true}, // surr3-1
-}
-
-func TestIsSurrogate(t *testing.T) {
- for i, tt := range surrogateTests {
- got := IsSurrogate(tt.r)
- if got != tt.want {
- t.Errorf("%d: IsSurrogate(%q) = %v; want %v", i, tt.r, got, tt.want)
- }
- }
-}
diff --git a/src/pkg/unicode/utf8/example_test.go b/src/pkg/unicode/utf8/example_test.go
deleted file mode 100644
index 7b3e7ac74..000000000
--- a/src/pkg/unicode/utf8/example_test.go
+++ /dev/null
@@ -1,196 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package utf8_test
-
-import (
- "fmt"
- "unicode/utf8"
-)
-
-func ExampleDecodeLastRune() {
- b := []byte("Hello, 世界")
-
- for len(b) > 0 {
- r, size := utf8.DecodeLastRune(b)
- fmt.Printf("%c %v\n", r, size)
-
- b = b[:len(b)-size]
- }
- // Output:
- // 界 3
- // 世 3
- // 1
- // , 1
- // o 1
- // l 1
- // l 1
- // e 1
- // H 1
-}
-
-func ExampleDecodeLastRuneInString() {
- str := "Hello, 世界"
-
- for len(str) > 0 {
- r, size := utf8.DecodeLastRuneInString(str)
- fmt.Printf("%c %v\n", r, size)
-
- str = str[:len(str)-size]
- }
- // Output:
- // 界 3
- // 世 3
- // 1
- // , 1
- // o 1
- // l 1
- // l 1
- // e 1
- // H 1
-
-}
-
-func ExampleDecodeRune() {
- b := []byte("Hello, 世界")
-
- for len(b) > 0 {
- r, size := utf8.DecodeRune(b)
- fmt.Printf("%c %v\n", r, size)
-
- b = b[size:]
- }
- // Output:
- // H 1
- // e 1
- // l 1
- // l 1
- // o 1
- // , 1
- // 1
- // 世 3
- // 界 3
-}
-
-func ExampleDecodeRuneInString() {
- str := "Hello, 世界"
-
- for len(str) > 0 {
- r, size := utf8.DecodeRuneInString(str)
- fmt.Printf("%c %v\n", r, size)
-
- str = str[size:]
- }
- // Output:
- // H 1
- // e 1
- // l 1
- // l 1
- // o 1
- // , 1
- // 1
- // 世 3
- // 界 3
-}
-
-func ExampleEncodeRune() {
- r := '世'
- buf := make([]byte, 3)
-
- n := utf8.EncodeRune(buf, r)
-
- fmt.Println(buf)
- fmt.Println(n)
- // Output:
- // [228 184 150]
- // 3
-}
-
-func ExampleFullRune() {
- buf := []byte{228, 184, 150} // 世
- fmt.Println(utf8.FullRune(buf))
- fmt.Println(utf8.FullRune(buf[:2]))
- // Output:
- // true
- // false
-}
-
-func ExampleFullRuneInString() {
- str := "世"
- fmt.Println(utf8.FullRuneInString(str))
- fmt.Println(utf8.FullRuneInString(str[:2]))
- // Output:
- // true
- // false
-}
-
-func ExampleRuneCount() {
- buf := []byte("Hello, 世界")
- fmt.Println("bytes =", len(buf))
- fmt.Println("runes =", utf8.RuneCount(buf))
- // Output:
- // bytes = 13
- // runes = 9
-}
-
-func ExampleRuneCountInString() {
- str := "Hello, 世界"
- fmt.Println("bytes =", len(str))
- fmt.Println("runes =", utf8.RuneCountInString(str))
- // Output:
- // bytes = 13
- // runes = 9
-}
-
-func ExampleRuneLen() {
- fmt.Println(utf8.RuneLen('a'))
- fmt.Println(utf8.RuneLen('界'))
- // Output:
- // 1
- // 3
-}
-
-func ExampleRuneStart() {
- buf := []byte("a界")
- fmt.Println(utf8.RuneStart(buf[0]))
- fmt.Println(utf8.RuneStart(buf[1]))
- fmt.Println(utf8.RuneStart(buf[2]))
- // Output:
- // true
- // true
- // false
-}
-
-func ExampleValid() {
- valid := []byte("Hello, 世界")
- invalid := []byte{0xff, 0xfe, 0xfd}
-
- fmt.Println(utf8.Valid(valid))
- fmt.Println(utf8.Valid(invalid))
- // Output:
- // true
- // false
-}
-
-func ExampleValidRune() {
- valid := 'a'
- invalid := rune(0xfffffff)
-
- fmt.Println(utf8.ValidRune(valid))
- fmt.Println(utf8.ValidRune(invalid))
- // Output:
- // true
- // false
-}
-
-func ExampleValidString() {
- valid := "Hello, 世界"
- invalid := string([]byte{0xff, 0xfe, 0xfd})
-
- fmt.Println(utf8.ValidString(valid))
- fmt.Println(utf8.ValidString(invalid))
- // Output:
- // true
- // false
-}
diff --git a/src/pkg/unicode/utf8/utf8.go b/src/pkg/unicode/utf8/utf8.go
deleted file mode 100644
index 0dc859a04..000000000
--- a/src/pkg/unicode/utf8/utf8.go
+++ /dev/null
@@ -1,435 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package utf8 implements functions and constants to support text encoded in
-// UTF-8. It includes functions to translate between runes and UTF-8 byte sequences.
-package utf8
-
-// The conditions RuneError==unicode.ReplacementChar and
-// MaxRune==unicode.MaxRune are verified in the tests.
-// Defining them locally avoids this package depending on package unicode.
-
-// Numbers fundamental to the encoding.
-const (
- RuneError = '\uFFFD' // the "error" Rune or "Unicode replacement character"
- RuneSelf = 0x80 // characters below Runeself are represented as themselves in a single byte.
- MaxRune = '\U0010FFFF' // Maximum valid Unicode code point.
- UTFMax = 4 // maximum number of bytes of a UTF-8 encoded Unicode character.
-)
-
-// Code points in the surrogate range are not valid for UTF-8.
-const (
- surrogateMin = 0xD800
- surrogateMax = 0xDFFF
-)
-
-const (
- t1 = 0x00 // 0000 0000
- tx = 0x80 // 1000 0000
- t2 = 0xC0 // 1100 0000
- t3 = 0xE0 // 1110 0000
- t4 = 0xF0 // 1111 0000
- t5 = 0xF8 // 1111 1000
-
- maskx = 0x3F // 0011 1111
- mask2 = 0x1F // 0001 1111
- mask3 = 0x0F // 0000 1111
- mask4 = 0x07 // 0000 0111
-
- rune1Max = 1<<7 - 1
- rune2Max = 1<<11 - 1
- rune3Max = 1<<16 - 1
-)
-
-func decodeRuneInternal(p []byte) (r rune, size int, short bool) {
- n := len(p)
- if n < 1 {
- return RuneError, 0, true
- }
- c0 := p[0]
-
- // 1-byte, 7-bit sequence?
- if c0 < tx {
- return rune(c0), 1, false
- }
-
- // unexpected continuation byte?
- if c0 < t2 {
- return RuneError, 1, false
- }
-
- // need first continuation byte
- if n < 2 {
- return RuneError, 1, true
- }
- c1 := p[1]
- if c1 < tx || t2 <= c1 {
- return RuneError, 1, false
- }
-
- // 2-byte, 11-bit sequence?
- if c0 < t3 {
- r = rune(c0&mask2)<<6 | rune(c1&maskx)
- if r <= rune1Max {
- return RuneError, 1, false
- }
- return r, 2, false
- }
-
- // need second continuation byte
- if n < 3 {
- return RuneError, 1, true
- }
- c2 := p[2]
- if c2 < tx || t2 <= c2 {
- return RuneError, 1, false
- }
-
- // 3-byte, 16-bit sequence?
- if c0 < t4 {
- r = rune(c0&mask3)<<12 | rune(c1&maskx)<<6 | rune(c2&maskx)
- if r <= rune2Max {
- return RuneError, 1, false
- }
- if surrogateMin <= r && r <= surrogateMax {
- return RuneError, 1, false
- }
- return r, 3, false
- }
-
- // need third continuation byte
- if n < 4 {
- return RuneError, 1, true
- }
- c3 := p[3]
- if c3 < tx || t2 <= c3 {
- return RuneError, 1, false
- }
-
- // 4-byte, 21-bit sequence?
- if c0 < t5 {
- r = rune(c0&mask4)<<18 | rune(c1&maskx)<<12 | rune(c2&maskx)<<6 | rune(c3&maskx)
- if r <= rune3Max || MaxRune < r {
- return RuneError, 1, false
- }
- return r, 4, false
- }
-
- // error
- return RuneError, 1, false
-}
-
-func decodeRuneInStringInternal(s string) (r rune, size int, short bool) {
- n := len(s)
- if n < 1 {
- return RuneError, 0, true
- }
- c0 := s[0]
-
- // 1-byte, 7-bit sequence?
- if c0 < tx {
- return rune(c0), 1, false
- }
-
- // unexpected continuation byte?
- if c0 < t2 {
- return RuneError, 1, false
- }
-
- // need first continuation byte
- if n < 2 {
- return RuneError, 1, true
- }
- c1 := s[1]
- if c1 < tx || t2 <= c1 {
- return RuneError, 1, false
- }
-
- // 2-byte, 11-bit sequence?
- if c0 < t3 {
- r = rune(c0&mask2)<<6 | rune(c1&maskx)
- if r <= rune1Max {
- return RuneError, 1, false
- }
- return r, 2, false
- }
-
- // need second continuation byte
- if n < 3 {
- return RuneError, 1, true
- }
- c2 := s[2]
- if c2 < tx || t2 <= c2 {
- return RuneError, 1, false
- }
-
- // 3-byte, 16-bit sequence?
- if c0 < t4 {
- r = rune(c0&mask3)<<12 | rune(c1&maskx)<<6 | rune(c2&maskx)
- if r <= rune2Max {
- return RuneError, 1, false
- }
- if surrogateMin <= r && r <= surrogateMax {
- return RuneError, 1, false
- }
- return r, 3, false
- }
-
- // need third continuation byte
- if n < 4 {
- return RuneError, 1, true
- }
- c3 := s[3]
- if c3 < tx || t2 <= c3 {
- return RuneError, 1, false
- }
-
- // 4-byte, 21-bit sequence?
- if c0 < t5 {
- r = rune(c0&mask4)<<18 | rune(c1&maskx)<<12 | rune(c2&maskx)<<6 | rune(c3&maskx)
- if r <= rune3Max || MaxRune < r {
- return RuneError, 1, false
- }
- return r, 4, false
- }
-
- // error
- return RuneError, 1, false
-}
-
-// FullRune reports whether the bytes in p begin with a full UTF-8 encoding of a rune.
-// An invalid encoding is considered a full Rune since it will convert as a width-1 error rune.
-func FullRune(p []byte) bool {
- _, _, short := decodeRuneInternal(p)
- return !short
-}
-
-// FullRuneInString is like FullRune but its input is a string.
-func FullRuneInString(s string) bool {
- _, _, short := decodeRuneInStringInternal(s)
- return !short
-}
-
-// DecodeRune unpacks the first UTF-8 encoding in p and returns the rune and its width in bytes.
-// If the encoding is invalid, it returns (RuneError, 1), an impossible result for correct UTF-8.
-// An encoding is invalid if it is incorrect UTF-8, encodes a rune that is
-// out of range, or is not the shortest possible UTF-8 encoding for the
-// value. No other validation is performed.
-func DecodeRune(p []byte) (r rune, size int) {
- r, size, _ = decodeRuneInternal(p)
- return
-}
-
-// DecodeRuneInString is like DecodeRune but its input is a string.
-// If the encoding is invalid, it returns (RuneError, 1), an impossible result for correct UTF-8.
-// An encoding is invalid if it is incorrect UTF-8, encodes a rune that is
-// out of range, or is not the shortest possible UTF-8 encoding for the
-// value. No other validation is performed.
-func DecodeRuneInString(s string) (r rune, size int) {
- r, size, _ = decodeRuneInStringInternal(s)
- return
-}
-
-// DecodeLastRune unpacks the last UTF-8 encoding in p and returns the rune and its width in bytes.
-// If the encoding is invalid, it returns (RuneError, 1), an impossible result for correct UTF-8.
-// An encoding is invalid if it is incorrect UTF-8, encodes a rune that is
-// out of range, or is not the shortest possible UTF-8 encoding for the
-// value. No other validation is performed.
-func DecodeLastRune(p []byte) (r rune, size int) {
- end := len(p)
- if end == 0 {
- return RuneError, 0
- }
- start := end - 1
- r = rune(p[start])
- if r < RuneSelf {
- return r, 1
- }
- // guard against O(n^2) behavior when traversing
- // backwards through strings with long sequences of
- // invalid UTF-8.
- lim := end - UTFMax
- if lim < 0 {
- lim = 0
- }
- for start--; start >= lim; start-- {
- if RuneStart(p[start]) {
- break
- }
- }
- if start < 0 {
- start = 0
- }
- r, size = DecodeRune(p[start:end])
- if start+size != end {
- return RuneError, 1
- }
- return r, size
-}
-
-// DecodeLastRuneInString is like DecodeLastRune but its input is a string.
-// If the encoding is invalid, it returns (RuneError, 1), an impossible result for correct UTF-8.
-// An encoding is invalid if it is incorrect UTF-8, encodes a rune that is
-// out of range, or is not the shortest possible UTF-8 encoding for the
-// value. No other validation is performed.
-func DecodeLastRuneInString(s string) (r rune, size int) {
- end := len(s)
- if end == 0 {
- return RuneError, 0
- }
- start := end - 1
- r = rune(s[start])
- if r < RuneSelf {
- return r, 1
- }
- // guard against O(n^2) behavior when traversing
- // backwards through strings with long sequences of
- // invalid UTF-8.
- lim := end - UTFMax
- if lim < 0 {
- lim = 0
- }
- for start--; start >= lim; start-- {
- if RuneStart(s[start]) {
- break
- }
- }
- if start < 0 {
- start = 0
- }
- r, size = DecodeRuneInString(s[start:end])
- if start+size != end {
- return RuneError, 1
- }
- return r, size
-}
-
-// RuneLen returns the number of bytes required to encode the rune.
-// It returns -1 if the rune is not a valid value to encode in UTF-8.
-func RuneLen(r rune) int {
- switch {
- case r < 0:
- return -1
- case r <= rune1Max:
- return 1
- case r <= rune2Max:
- return 2
- case surrogateMin <= r && r <= surrogateMax:
- return -1
- case r <= rune3Max:
- return 3
- case r <= MaxRune:
- return 4
- }
- return -1
-}
-
-// EncodeRune writes into p (which must be large enough) the UTF-8 encoding of the rune.
-// It returns the number of bytes written.
-func EncodeRune(p []byte, r rune) int {
- // Negative values are erroneous. Making it unsigned addresses the problem.
- switch i := uint32(r); {
- case i <= rune1Max:
- p[0] = byte(r)
- return 1
- case i <= rune2Max:
- p[0] = t2 | byte(r>>6)
- p[1] = tx | byte(r)&maskx
- return 2
- case i > MaxRune, surrogateMin <= i && i <= surrogateMax:
- r = RuneError
- fallthrough
- case i <= rune3Max:
- p[0] = t3 | byte(r>>12)
- p[1] = tx | byte(r>>6)&maskx
- p[2] = tx | byte(r)&maskx
- return 3
- default:
- p[0] = t4 | byte(r>>18)
- p[1] = tx | byte(r>>12)&maskx
- p[2] = tx | byte(r>>6)&maskx
- p[3] = tx | byte(r)&maskx
- return 4
- }
-}
-
-// RuneCount returns the number of runes in p. Erroneous and short
-// encodings are treated as single runes of width 1 byte.
-func RuneCount(p []byte) int {
- i := 0
- var n int
- for n = 0; i < len(p); n++ {
- if p[i] < RuneSelf {
- i++
- } else {
- _, size := DecodeRune(p[i:])
- i += size
- }
- }
- return n
-}
-
-// RuneCountInString is like RuneCount but its input is a string.
-func RuneCountInString(s string) (n int) {
- for _ = range s {
- n++
- }
- return
-}
-
-// RuneStart reports whether the byte could be the first byte of
-// an encoded rune. Second and subsequent bytes always have the top
-// two bits set to 10.
-func RuneStart(b byte) bool { return b&0xC0 != 0x80 }
-
-// Valid reports whether p consists entirely of valid UTF-8-encoded runes.
-func Valid(p []byte) bool {
- i := 0
- for i < len(p) {
- if p[i] < RuneSelf {
- i++
- } else {
- _, size := DecodeRune(p[i:])
- if size == 1 {
- // All valid runes of size 1 (those
- // below RuneSelf) were handled above.
- // This must be a RuneError.
- return false
- }
- i += size
- }
- }
- return true
-}
-
-// ValidString reports whether s consists entirely of valid UTF-8-encoded runes.
-func ValidString(s string) bool {
- for i, r := range s {
- if r == RuneError {
- // The RuneError value can be an error
- // sentinel value (if it's size 1) or the same
- // value encoded properly. Decode it to see if
- // it's the 1 byte sentinel value.
- _, size := DecodeRuneInString(s[i:])
- if size == 1 {
- return false
- }
- }
- }
- return true
-}
-
-// ValidRune reports whether r can be legally encoded as UTF-8.
-// Code points that are out of range or a surrogate half are illegal.
-func ValidRune(r rune) bool {
- switch {
- case r < 0:
- return false
- case surrogateMin <= r && r <= surrogateMax:
- return false
- case r > MaxRune:
- return false
- }
- return true
-}
diff --git a/src/pkg/unicode/utf8/utf8_test.go b/src/pkg/unicode/utf8/utf8_test.go
deleted file mode 100644
index 758d7a0f8..000000000
--- a/src/pkg/unicode/utf8/utf8_test.go
+++ /dev/null
@@ -1,444 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package utf8_test
-
-import (
- "bytes"
- "testing"
- "unicode"
- . "unicode/utf8"
-)
-
-// Validate the constants redefined from unicode.
-func init() {
- if MaxRune != unicode.MaxRune {
- panic("utf8.MaxRune is wrong")
- }
- if RuneError != unicode.ReplacementChar {
- panic("utf8.RuneError is wrong")
- }
-}
-
-// Validate the constants redefined from unicode.
-func TestConstants(t *testing.T) {
- if MaxRune != unicode.MaxRune {
- t.Errorf("utf8.MaxRune is wrong: %x should be %x", MaxRune, unicode.MaxRune)
- }
- if RuneError != unicode.ReplacementChar {
- t.Errorf("utf8.RuneError is wrong: %x should be %x", RuneError, unicode.ReplacementChar)
- }
-}
-
-type Utf8Map struct {
- r rune
- str string
-}
-
-var utf8map = []Utf8Map{
- {0x0000, "\x00"},
- {0x0001, "\x01"},
- {0x007e, "\x7e"},
- {0x007f, "\x7f"},
- {0x0080, "\xc2\x80"},
- {0x0081, "\xc2\x81"},
- {0x00bf, "\xc2\xbf"},
- {0x00c0, "\xc3\x80"},
- {0x00c1, "\xc3\x81"},
- {0x00c8, "\xc3\x88"},
- {0x00d0, "\xc3\x90"},
- {0x00e0, "\xc3\xa0"},
- {0x00f0, "\xc3\xb0"},
- {0x00f8, "\xc3\xb8"},
- {0x00ff, "\xc3\xbf"},
- {0x0100, "\xc4\x80"},
- {0x07ff, "\xdf\xbf"},
- {0x0800, "\xe0\xa0\x80"},
- {0x0801, "\xe0\xa0\x81"},
- {0xd7ff, "\xed\x9f\xbf"}, // last code point before surrogate half.
- {0xe000, "\xee\x80\x80"}, // first code point after surrogate half.
- {0xfffe, "\xef\xbf\xbe"},
- {0xffff, "\xef\xbf\xbf"},
- {0x10000, "\xf0\x90\x80\x80"},
- {0x10001, "\xf0\x90\x80\x81"},
- {0x10fffe, "\xf4\x8f\xbf\xbe"},
- {0x10ffff, "\xf4\x8f\xbf\xbf"},
- {0xFFFD, "\xef\xbf\xbd"},
-}
-
-var surrogateMap = []Utf8Map{
- {0xd800, "\xed\xa0\x80"}, // surrogate min decodes to (RuneError, 1)
- {0xdfff, "\xed\xbf\xbf"}, // surrogate max decodes to (RuneError, 1)
-}
-
-var testStrings = []string{
- "",
- "abcd",
- "☺☻☹",
- "日a本b語ç日ð本Ê語þ日¥本¼語i日©",
- "日a本b語ç日ð本Ê語þ日¥本¼語i日©日a本b語ç日ð本Ê語þ日¥本¼語i日©日a本b語ç日ð本Ê語þ日¥本¼語i日©",
- "\x80\x80\x80\x80",
-}
-
-func TestFullRune(t *testing.T) {
- for _, m := range utf8map {
- b := []byte(m.str)
- if !FullRune(b) {
- t.Errorf("FullRune(%q) (%U) = false, want true", b, m.r)
- }
- s := m.str
- if !FullRuneInString(s) {
- t.Errorf("FullRuneInString(%q) (%U) = false, want true", s, m.r)
- }
- b1 := b[0 : len(b)-1]
- if FullRune(b1) {
- t.Errorf("FullRune(%q) = true, want false", b1)
- }
- s1 := string(b1)
- if FullRuneInString(s1) {
- t.Errorf("FullRune(%q) = true, want false", s1)
- }
- }
-}
-
-func TestEncodeRune(t *testing.T) {
- for _, m := range utf8map {
- b := []byte(m.str)
- var buf [10]byte
- n := EncodeRune(buf[0:], m.r)
- b1 := buf[0:n]
- if !bytes.Equal(b, b1) {
- t.Errorf("EncodeRune(%#04x) = %q want %q", m.r, b1, b)
- }
- }
-}
-
-func TestDecodeRune(t *testing.T) {
- for _, m := range utf8map {
- b := []byte(m.str)
- r, size := DecodeRune(b)
- if r != m.r || size != len(b) {
- t.Errorf("DecodeRune(%q) = %#04x, %d want %#04x, %d", b, r, size, m.r, len(b))
- }
- s := m.str
- r, size = DecodeRuneInString(s)
- if r != m.r || size != len(b) {
- t.Errorf("DecodeRuneInString(%q) = %#04x, %d want %#04x, %d", s, r, size, m.r, len(b))
- }
-
- // there's an extra byte that bytes left behind - make sure trailing byte works
- r, size = DecodeRune(b[0:cap(b)])
- if r != m.r || size != len(b) {
- t.Errorf("DecodeRune(%q) = %#04x, %d want %#04x, %d", b, r, size, m.r, len(b))
- }
- s = m.str + "\x00"
- r, size = DecodeRuneInString(s)
- if r != m.r || size != len(b) {
- t.Errorf("DecodeRuneInString(%q) = %#04x, %d want %#04x, %d", s, r, size, m.r, len(b))
- }
-
- // make sure missing bytes fail
- wantsize := 1
- if wantsize >= len(b) {
- wantsize = 0
- }
- r, size = DecodeRune(b[0 : len(b)-1])
- if r != RuneError || size != wantsize {
- t.Errorf("DecodeRune(%q) = %#04x, %d want %#04x, %d", b[0:len(b)-1], r, size, RuneError, wantsize)
- }
- s = m.str[0 : len(m.str)-1]
- r, size = DecodeRuneInString(s)
- if r != RuneError || size != wantsize {
- t.Errorf("DecodeRuneInString(%q) = %#04x, %d want %#04x, %d", s, r, size, RuneError, wantsize)
- }
-
- // make sure bad sequences fail
- if len(b) == 1 {
- b[0] = 0x80
- } else {
- b[len(b)-1] = 0x7F
- }
- r, size = DecodeRune(b)
- if r != RuneError || size != 1 {
- t.Errorf("DecodeRune(%q) = %#04x, %d want %#04x, %d", b, r, size, RuneError, 1)
- }
- s = string(b)
- r, size = DecodeRuneInString(s)
- if r != RuneError || size != 1 {
- t.Errorf("DecodeRuneInString(%q) = %#04x, %d want %#04x, %d", s, r, size, RuneError, 1)
- }
-
- }
-}
-
-func TestDecodeSurrogateRune(t *testing.T) {
- for _, m := range surrogateMap {
- b := []byte(m.str)
- r, size := DecodeRune(b)
- if r != RuneError || size != 1 {
- t.Errorf("DecodeRune(%q) = %x, %d want %x, %d", b, r, size, RuneError, 1)
- }
- s := m.str
- r, size = DecodeRuneInString(s)
- if r != RuneError || size != 1 {
- t.Errorf("DecodeRuneInString(%q) = %x, %d want %x, %d", b, r, size, RuneError, 1)
- }
- }
-}
-
-// Check that DecodeRune and DecodeLastRune correspond to
-// the equivalent range loop.
-func TestSequencing(t *testing.T) {
- for _, ts := range testStrings {
- for _, m := range utf8map {
- for _, s := range []string{ts + m.str, m.str + ts, ts + m.str + ts} {
- testSequence(t, s)
- }
- }
- }
-}
-
-// Check that a range loop and a []int conversion visit the same runes.
-// Not really a test of this package, but the assumption is used here and
-// it's good to verify
-func TestIntConversion(t *testing.T) {
- for _, ts := range testStrings {
- runes := []rune(ts)
- if RuneCountInString(ts) != len(runes) {
- t.Errorf("%q: expected %d runes; got %d", ts, len(runes), RuneCountInString(ts))
- break
- }
- i := 0
- for _, r := range ts {
- if r != runes[i] {
- t.Errorf("%q[%d]: expected %c (%U); got %c (%U)", ts, i, runes[i], runes[i], r, r)
- }
- i++
- }
- }
-}
-
-func testSequence(t *testing.T, s string) {
- type info struct {
- index int
- r rune
- }
- index := make([]info, len(s))
- b := []byte(s)
- si := 0
- j := 0
- for i, r := range s {
- if si != i {
- t.Errorf("Sequence(%q) mismatched index %d, want %d", s, si, i)
- return
- }
- index[j] = info{i, r}
- j++
- r1, size1 := DecodeRune(b[i:])
- if r != r1 {
- t.Errorf("DecodeRune(%q) = %#04x, want %#04x", s[i:], r1, r)
- return
- }
- r2, size2 := DecodeRuneInString(s[i:])
- if r != r2 {
- t.Errorf("DecodeRuneInString(%q) = %#04x, want %#04x", s[i:], r2, r)
- return
- }
- if size1 != size2 {
- t.Errorf("DecodeRune/DecodeRuneInString(%q) size mismatch %d/%d", s[i:], size1, size2)
- return
- }
- si += size1
- }
- j--
- for si = len(s); si > 0; {
- r1, size1 := DecodeLastRune(b[0:si])
- r2, size2 := DecodeLastRuneInString(s[0:si])
- if size1 != size2 {
- t.Errorf("DecodeLastRune/DecodeLastRuneInString(%q, %d) size mismatch %d/%d", s, si, size1, size2)
- return
- }
- if r1 != index[j].r {
- t.Errorf("DecodeLastRune(%q, %d) = %#04x, want %#04x", s, si, r1, index[j].r)
- return
- }
- if r2 != index[j].r {
- t.Errorf("DecodeLastRuneInString(%q, %d) = %#04x, want %#04x", s, si, r2, index[j].r)
- return
- }
- si -= size1
- if si != index[j].index {
- t.Errorf("DecodeLastRune(%q) index mismatch at %d, want %d", s, si, index[j].index)
- return
- }
- j--
- }
- if si != 0 {
- t.Errorf("DecodeLastRune(%q) finished at %d, not 0", s, si)
- }
-}
-
-// Check that negative runes encode as U+FFFD.
-func TestNegativeRune(t *testing.T) {
- errorbuf := make([]byte, UTFMax)
- errorbuf = errorbuf[0:EncodeRune(errorbuf, RuneError)]
- buf := make([]byte, UTFMax)
- buf = buf[0:EncodeRune(buf, -1)]
- if !bytes.Equal(buf, errorbuf) {
- t.Errorf("incorrect encoding [% x] for -1; expected [% x]", buf, errorbuf)
- }
-}
-
-type RuneCountTest struct {
- in string
- out int
-}
-
-var runecounttests = []RuneCountTest{
- {"abcd", 4},
- {"☺☻☹", 3},
- {"1,2,3,4", 7},
- {"\xe2\x00", 2},
-}
-
-func TestRuneCount(t *testing.T) {
- for _, tt := range runecounttests {
- if out := RuneCountInString(tt.in); out != tt.out {
- t.Errorf("RuneCountInString(%q) = %d, want %d", tt.in, out, tt.out)
- }
- if out := RuneCount([]byte(tt.in)); out != tt.out {
- t.Errorf("RuneCount(%q) = %d, want %d", tt.in, out, tt.out)
- }
- }
-}
-
-type RuneLenTest struct {
- r rune
- size int
-}
-
-var runelentests = []RuneLenTest{
- {0, 1},
- {'e', 1},
- {'é', 2},
- {'☺', 3},
- {RuneError, 3},
- {MaxRune, 4},
- {0xD800, -1},
- {0xDFFF, -1},
- {MaxRune + 1, -1},
- {-1, -1},
-}
-
-func TestRuneLen(t *testing.T) {
- for _, tt := range runelentests {
- if size := RuneLen(tt.r); size != tt.size {
- t.Errorf("RuneLen(%#U) = %d, want %d", tt.r, size, tt.size)
- }
- }
-}
-
-type ValidTest struct {
- in string
- out bool
-}
-
-var validTests = []ValidTest{
- {"", true},
- {"a", true},
- {"abc", true},
- {"Ж", true},
- {"ЖЖ", true},
- {"брэд-ЛГТМ", true},
- {"☺☻☹", true},
- {string([]byte{66, 250}), false},
- {string([]byte{66, 250, 67}), false},
- {"a\uFFFDb", true},
- {string("\xF4\x8F\xBF\xBF"), true}, // U+10FFFF
- {string("\xF4\x90\x80\x80"), false}, // U+10FFFF+1; out of range
- {string("\xF7\xBF\xBF\xBF"), false}, // 0x1FFFFF; out of range
- {string("\xFB\xBF\xBF\xBF\xBF"), false}, // 0x3FFFFFF; out of range
- {string("\xc0\x80"), false}, // U+0000 encoded in two bytes: incorrect
- {string("\xed\xa0\x80"), false}, // U+D800 high surrogate (sic)
- {string("\xed\xbf\xbf"), false}, // U+DFFF low surrogate (sic)
-}
-
-func TestValid(t *testing.T) {
- for _, tt := range validTests {
- if Valid([]byte(tt.in)) != tt.out {
- t.Errorf("Valid(%q) = %v; want %v", tt.in, !tt.out, tt.out)
- }
- if ValidString(tt.in) != tt.out {
- t.Errorf("ValidString(%q) = %v; want %v", tt.in, !tt.out, tt.out)
- }
- }
-}
-
-type ValidRuneTest struct {
- r rune
- ok bool
-}
-
-var validrunetests = []ValidRuneTest{
- {0, true},
- {'e', true},
- {'é', true},
- {'☺', true},
- {RuneError, true},
- {MaxRune, true},
- {0xD7FF, true},
- {0xD800, false},
- {0xDFFF, false},
- {0xE000, true},
- {MaxRune + 1, false},
- {-1, false},
-}
-
-func TestValidRune(t *testing.T) {
- for _, tt := range validrunetests {
- if ok := ValidRune(tt.r); ok != tt.ok {
- t.Errorf("ValidRune(%#U) = %t, want %t", tt.r, ok, tt.ok)
- }
- }
-}
-
-func BenchmarkRuneCountTenASCIIChars(b *testing.B) {
- for i := 0; i < b.N; i++ {
- RuneCountInString("0123456789")
- }
-}
-
-func BenchmarkRuneCountTenJapaneseChars(b *testing.B) {
- for i := 0; i < b.N; i++ {
- RuneCountInString("日本語日本語日本語日")
- }
-}
-
-func BenchmarkEncodeASCIIRune(b *testing.B) {
- buf := make([]byte, UTFMax)
- for i := 0; i < b.N; i++ {
- EncodeRune(buf, 'a')
- }
-}
-
-func BenchmarkEncodeJapaneseRune(b *testing.B) {
- buf := make([]byte, UTFMax)
- for i := 0; i < b.N; i++ {
- EncodeRune(buf, '本')
- }
-}
-
-func BenchmarkDecodeASCIIRune(b *testing.B) {
- a := []byte{'a'}
- for i := 0; i < b.N; i++ {
- DecodeRune(a)
- }
-}
-
-func BenchmarkDecodeJapaneseRune(b *testing.B) {
- nihon := []byte("本")
- for i := 0; i < b.N; i++ {
- DecodeRune(nihon)
- }
-}