diff options
Diffstat (limited to 'libgo/go/exp')
-rw-r--r-- | libgo/go/exp/ebnflint/doc.go | 4 | ||||
-rw-r--r-- | libgo/go/exp/ebnflint/ebnflint.go | 2 | ||||
-rw-r--r-- | libgo/go/exp/html/escape.go | 4 | ||||
-rw-r--r-- | libgo/go/exp/html/parse_test.go | 4 | ||||
-rw-r--r-- | libgo/go/exp/html/token.go | 3 | ||||
-rw-r--r-- | libgo/go/exp/html/token_test.go | 4 | ||||
-rw-r--r-- | libgo/go/exp/inotify/inotify_linux.go | 6 | ||||
-rw-r--r-- | libgo/go/exp/norm/composition.go | 20 | ||||
-rw-r--r-- | libgo/go/exp/norm/forminfo.go | 60 | ||||
-rw-r--r-- | libgo/go/exp/norm/input.go | 10 | ||||
-rw-r--r-- | libgo/go/exp/norm/maketables.go | 4 | ||||
-rw-r--r-- | libgo/go/exp/norm/normalize.go | 26 | ||||
-rw-r--r-- | libgo/go/exp/norm/normalize_test.go | 44 | ||||
-rw-r--r-- | libgo/go/exp/norm/tables.go | 488 | ||||
-rw-r--r-- | libgo/go/exp/signal/signal.go | 37 | ||||
-rw-r--r-- | libgo/go/exp/signal/signal_test.go | 24 | ||||
-rw-r--r-- | libgo/go/exp/types/gcimporter_test.go | 2 |
17 files changed, 409 insertions, 333 deletions
diff --git a/libgo/go/exp/ebnflint/doc.go b/libgo/go/exp/ebnflint/doc.go index f35976e..4bb22a4 100644 --- a/libgo/go/exp/ebnflint/doc.go +++ b/libgo/go/exp/ebnflint/doc.go @@ -4,7 +4,7 @@ /* -Ebnflint verifies that EBNF productions are consistent and gramatically correct. +Ebnflint verifies that EBNF productions are consistent and grammatically correct. It reads them from an HTML document such as the Go specification. Grammar productions are grouped in boxes demarcated by the HTML elements @@ -13,7 +13,7 @@ Grammar productions are grouped in boxes demarcated by the HTML elements Usage: - ebnflint [--start production] [file] + go tool ebnflint [--start production] [file] The --start flag specifies the name of the start production for the grammar; it defaults to "Start". diff --git a/libgo/go/exp/ebnflint/ebnflint.go b/libgo/go/exp/ebnflint/ebnflint.go index 2cb5aa6..d54fb22 100644 --- a/libgo/go/exp/ebnflint/ebnflint.go +++ b/libgo/go/exp/ebnflint/ebnflint.go @@ -21,7 +21,7 @@ var fset = token.NewFileSet() var start = flag.String("start", "Start", "name of start production") func usage() { - fmt.Fprintf(os.Stderr, "usage: ebnflint [flags] [filename]\n") + fmt.Fprintf(os.Stderr, "usage: go tool ebnflint [flags] [filename]\n") flag.PrintDefaults() os.Exit(1) } diff --git a/libgo/go/exp/html/escape.go b/libgo/go/exp/html/escape.go index 42be865..8f62a8c 100644 --- a/libgo/go/exp/html/escape.go +++ b/libgo/go/exp/html/escape.go @@ -233,8 +233,8 @@ func EscapeString(s string) string { if strings.IndexAny(s, escapedChars) == -1 { return s } - buf := bytes.NewBuffer(nil) - escape(buf, s) + var buf bytes.Buffer + escape(&buf, s) return buf.String() } diff --git a/libgo/go/exp/html/parse_test.go b/libgo/go/exp/html/parse_test.go index 1528dff..f3f966c 100644 --- a/libgo/go/exp/html/parse_test.go +++ b/libgo/go/exp/html/parse_test.go @@ -159,9 +159,9 @@ func dump(n *Node) (string, error) { if n == nil || len(n.Child) == 0 { return "", nil } - b := bytes.NewBuffer(nil) + var b bytes.Buffer for _, child := range n.Child { - if err := dumpLevel(b, child, 0); err != nil { + if err := dumpLevel(&b, child, 0); err != nil { return "", err } } diff --git a/libgo/go/exp/html/token.go b/libgo/go/exp/html/token.go index 5a385a1..b5e9c2d 100644 --- a/libgo/go/exp/html/token.go +++ b/libgo/go/exp/html/token.go @@ -77,8 +77,7 @@ func (t Token) tagString() string { if len(t.Attr) == 0 { return t.Data } - buf := bytes.NewBuffer(nil) - buf.WriteString(t.Data) + buf := bytes.NewBufferString(t.Data) for _, a := range t.Attr { buf.WriteByte(' ') buf.WriteString(a.Key) diff --git a/libgo/go/exp/html/token_test.go b/libgo/go/exp/html/token_test.go index 672d60c..61d7400 100644 --- a/libgo/go/exp/html/token_test.go +++ b/libgo/go/exp/html/token_test.go @@ -555,8 +555,8 @@ func TestUnescapeEscape(t *testing.T) { func TestBufAPI(t *testing.T) { s := "0<a>1</a>2<b>3<a>4<a>5</a>6</b>7</a>8<a/>9" - z := NewTokenizer(bytes.NewBuffer([]byte(s))) - result := bytes.NewBuffer(nil) + z := NewTokenizer(bytes.NewBufferString(s)) + var result bytes.Buffer depth := 0 loop: for { diff --git a/libgo/go/exp/inotify/inotify_linux.go b/libgo/go/exp/inotify/inotify_linux.go index f124366..912cf5d 100644 --- a/libgo/go/exp/inotify/inotify_linux.go +++ b/libgo/go/exp/inotify/inotify_linux.go @@ -107,7 +107,11 @@ func (w *Watcher) AddWatch(path string, flags uint32) error { } wd, err := syscall.InotifyAddWatch(w.fd, path, flags) if err != nil { - return &os.PathError{"inotify_add_watch", path, err} + return &os.PathError{ + Op: "inotify_add_watch", + Path: path, + Err: err, + } } if !found { diff --git a/libgo/go/exp/norm/composition.go b/libgo/go/exp/norm/composition.go index 7cad8a2..5b48292 100644 --- a/libgo/go/exp/norm/composition.go +++ b/libgo/go/exp/norm/composition.go @@ -98,10 +98,10 @@ func (rb *reorderBuffer) insertOrdered(info runeInfo) bool { func (rb *reorderBuffer) insert(src input, i int, info runeInfo) bool { if info.size == 3 { if rune := src.hangul(i); rune != 0 { - return rb.decomposeHangul(uint32(rune)) + return rb.decomposeHangul(rune) } } - if info.flags.hasDecomposition() { + if info.hasDecomposition() { dcomp := rb.f.decompose(src, i) rb.tmpBytes = inputBytes(dcomp) for i := 0; i < len(dcomp); { @@ -126,26 +126,26 @@ func (rb *reorderBuffer) insert(src input, i int, info runeInfo) bool { } // appendRune inserts a rune at the end of the buffer. It is used for Hangul. -func (rb *reorderBuffer) appendRune(r uint32) { +func (rb *reorderBuffer) appendRune(r rune) { bn := rb.nbyte sz := utf8.EncodeRune(rb.byte[bn:], rune(r)) rb.nbyte += utf8.UTFMax - rb.rune[rb.nrune] = runeInfo{bn, uint8(sz), 0, 0} + rb.rune[rb.nrune] = runeInfo{pos: bn, size: uint8(sz)} rb.nrune++ } // assignRune sets a rune at position pos. It is used for Hangul and recomposition. -func (rb *reorderBuffer) assignRune(pos int, r uint32) { +func (rb *reorderBuffer) assignRune(pos int, r rune) { bn := rb.rune[pos].pos sz := utf8.EncodeRune(rb.byte[bn:], rune(r)) - rb.rune[pos] = runeInfo{bn, uint8(sz), 0, 0} + rb.rune[pos] = runeInfo{pos: bn, size: uint8(sz)} } // runeAt returns the rune at position n. It is used for Hangul and recomposition. -func (rb *reorderBuffer) runeAt(n int) uint32 { +func (rb *reorderBuffer) runeAt(n int) rune { inf := rb.rune[n] r, _ := utf8.DecodeRune(rb.byte[inf.pos : inf.pos+inf.size]) - return uint32(r) + return r } // bytesAt returns the UTF-8 encoding of the rune at position n. @@ -237,7 +237,7 @@ func isHangulWithoutJamoT(b []byte) bool { // decomposeHangul algorithmically decomposes a Hangul rune into // its Jamo components. // See http://unicode.org/reports/tr15/#Hangul for details on decomposing Hangul. -func (rb *reorderBuffer) decomposeHangul(r uint32) bool { +func (rb *reorderBuffer) decomposeHangul(r rune) bool { b := rb.rune[:] n := rb.nrune if n+3 > len(b) { @@ -319,7 +319,7 @@ func (rb *reorderBuffer) compose() { // get the info for the combined character. This is more // expensive than using the filter. Using combinesBackward() // is safe. - if ii.flags.combinesBackward() { + if ii.combinesBackward() { cccB := b[k-1].ccc cccC := ii.ccc blocked := false // b[i] blocked by starter or greater or equal CCC? diff --git a/libgo/go/exp/norm/forminfo.go b/libgo/go/exp/norm/forminfo.go index d06a006..bf4443c 100644 --- a/libgo/go/exp/norm/forminfo.go +++ b/libgo/go/exp/norm/forminfo.go @@ -14,7 +14,6 @@ type runeInfo struct { } // functions dispatchable per form -type boundaryFunc func(f *formInfo, info runeInfo) bool type lookupFunc func(b input, i int) runeInfo type decompFunc func(b input, i int) []byte @@ -24,10 +23,8 @@ type formInfo struct { composing, compatibility bool // form type - decompose decompFunc - info lookupFunc - boundaryBefore boundaryFunc - boundaryAfter boundaryFunc + decompose decompFunc + info lookupFunc } var formTable []*formInfo @@ -49,27 +46,17 @@ func init() { } if Form(i) == NFC || Form(i) == NFKC { f.composing = true - f.boundaryBefore = compBoundaryBefore - f.boundaryAfter = compBoundaryAfter - } else { - f.boundaryBefore = decompBoundary - f.boundaryAfter = decompBoundary } } } -func decompBoundary(f *formInfo, info runeInfo) bool { - if info.ccc == 0 && info.flags.isYesD() { // Implies isHangul(b) == true - return true - } - // We assume that the CCC of the first character in a decomposition - // is always non-zero if different from info.ccc and that we can return - // false at this point. This is verified by maketables. - return false -} - -func compBoundaryBefore(f *formInfo, info runeInfo) bool { - if info.ccc == 0 && !info.flags.combinesBackward() { +// We do not distinguish between boundaries for NFC, NFD, etc. to avoid +// unexpected behavior for the user. For example, in NFD, there is a boundary +// after 'a'. However, a might combine with modifiers, so from the application's +// perspective it is not a good boundary. We will therefore always use the +// boundaries for the combining variants. +func (i runeInfo) boundaryBefore() bool { + if i.ccc == 0 && !i.combinesBackward() { return true } // We assume that the CCC of the first character in a decomposition @@ -78,15 +65,13 @@ func compBoundaryBefore(f *formInfo, info runeInfo) bool { return false } -func compBoundaryAfter(f *formInfo, info runeInfo) bool { - // This misses values where the last char in a decomposition is a - // boundary such as Hangul with JamoT. - return info.isInert() +func (i runeInfo) boundaryAfter() bool { + return i.isInert() } // We pack quick check data in 4 bits: // 0: NFD_QC Yes (0) or No (1). No also means there is a decomposition. -// 1..2: NFC_QC Yes(00), No (01), or Maybe (11) +// 1..2: NFC_QC Yes(00), No (10), or Maybe (11) // 3: Combines forward (0 == false, 1 == true) // // When all 4 bits are zero, the character is inert, meaning it is never @@ -95,15 +80,12 @@ func compBoundaryAfter(f *formInfo, info runeInfo) bool { // We pack the bits for both NFC/D and NFKC/D in one byte. type qcInfo uint8 -func (i qcInfo) isYesC() bool { return i&0x2 == 0 } -func (i qcInfo) isNoC() bool { return i&0x6 == 0x2 } -func (i qcInfo) isMaybe() bool { return i&0x4 != 0 } -func (i qcInfo) isYesD() bool { return i&0x1 == 0 } -func (i qcInfo) isNoD() bool { return i&0x1 != 0 } +func (i runeInfo) isYesC() bool { return i.flags&0x4 == 0 } +func (i runeInfo) isYesD() bool { return i.flags&0x1 == 0 } -func (i qcInfo) combinesForward() bool { return i&0x8 != 0 } -func (i qcInfo) combinesBackward() bool { return i&0x4 != 0 } // == isMaybe -func (i qcInfo) hasDecomposition() bool { return i&0x1 != 0 } // == isNoD +func (i runeInfo) combinesForward() bool { return i.flags&0x8 != 0 } +func (i runeInfo) combinesBackward() bool { return i.flags&0x2 != 0 } // == isMaybe +func (i runeInfo) hasDecomposition() bool { return i.flags&0x1 != 0 } // == isNoD func (r runeInfo) isInert() bool { return r.flags&0xf == 0 && r.ccc == 0 @@ -111,7 +93,7 @@ func (r runeInfo) isInert() bool { // Wrappers for tables.go -// The 16-bit value of the decompostion tries is an index into a byte +// The 16-bit value of the decomposition tries is an index into a byte // array of UTF-8 decomposition sequences. The first byte is the number // of bytes in the decomposition (excluding this length byte). The actual // sequence starts at the offset+1. @@ -137,7 +119,7 @@ func decomposeNFKC(s input, i int) []byte { // Note that the recomposition map for NFC and NFKC are identical. // combine returns the combined rune or 0 if it doesn't exist. -func combine(a, b uint32) uint32 { +func combine(a, b rune) rune { key := uint32(uint16(a))<<16 + uint32(uint16(b)) return recompMap[key] } @@ -148,10 +130,10 @@ func combine(a, b uint32) uint32 { // 12..15 qcInfo for NFKC/NFKD func lookupInfoNFC(b input, i int) runeInfo { v, sz := b.charinfo(i) - return runeInfo{0, uint8(sz), uint8(v), qcInfo(v >> 8)} + return runeInfo{size: uint8(sz), ccc: uint8(v), flags: qcInfo(v >> 8)} } func lookupInfoNFKC(b input, i int) runeInfo { v, sz := b.charinfo(i) - return runeInfo{0, uint8(sz), uint8(v), qcInfo(v >> 12)} + return runeInfo{size: uint8(sz), ccc: uint8(v), flags: qcInfo(v >> 12)} } diff --git a/libgo/go/exp/norm/input.go b/libgo/go/exp/norm/input.go index 42e6f1b..7276c66 100644 --- a/libgo/go/exp/norm/input.go +++ b/libgo/go/exp/norm/input.go @@ -14,7 +14,7 @@ type input interface { charinfo(p int) (uint16, int) decomposeNFC(p int) uint16 decomposeNFKC(p int) uint16 - hangul(p int) uint32 + hangul(p int) rune } type inputString string @@ -54,12 +54,12 @@ func (s inputString) decomposeNFKC(p int) uint16 { return nfkcDecompTrie.lookupStringUnsafe(string(s[p:])) } -func (s inputString) hangul(p int) uint32 { +func (s inputString) hangul(p int) rune { if !isHangulString(string(s[p:])) { return 0 } rune, _ := utf8.DecodeRuneInString(string(s[p:])) - return uint32(rune) + return rune } type inputBytes []byte @@ -96,10 +96,10 @@ func (s inputBytes) decomposeNFKC(p int) uint16 { return nfkcDecompTrie.lookupUnsafe(s[p:]) } -func (s inputBytes) hangul(p int) uint32 { +func (s inputBytes) hangul(p int) rune { if !isHangul(s[p:]) { return 0 } rune, _ := utf8.DecodeRune(s[p:]) - return uint32(rune) + return rune } diff --git a/libgo/go/exp/norm/maketables.go b/libgo/go/exp/norm/maketables.go index 9a97831..43e1429 100644 --- a/libgo/go/exp/norm/maketables.go +++ b/libgo/go/exp/norm/maketables.go @@ -562,7 +562,7 @@ func makeEntry(f *FormInfo) uint16 { switch f.quickCheck[MComposed] { case QCYes: case QCNo: - e |= 0x2 + e |= 0x4 case QCMaybe: e |= 0x6 default: @@ -718,7 +718,7 @@ func makeTables() { sz := nrentries * 8 size += sz fmt.Printf("// recompMap: %d bytes (entries only)\n", sz) - fmt.Println("var recompMap = map[uint32]uint32{") + fmt.Println("var recompMap = map[uint32]rune{") for i, c := range chars { f := c.forms[FCanonical] d := f.decomp diff --git a/libgo/go/exp/norm/normalize.go b/libgo/go/exp/norm/normalize.go index 3bd4047..26bb4a0 100644 --- a/libgo/go/exp/norm/normalize.go +++ b/libgo/go/exp/norm/normalize.go @@ -188,11 +188,11 @@ func doAppend(rb *reorderBuffer, out []byte, p int) []byte { var info runeInfo if p < n { info = fd.info(src, p) - if p == 0 && !fd.boundaryBefore(fd, info) { + if p == 0 && !info.boundaryBefore() { out = decomposeToLastBoundary(rb, out) } } - if info.size == 0 || fd.boundaryBefore(fd, info) { + if info.size == 0 || info.boundaryBefore() { if fd.composing { rb.compose() } @@ -257,11 +257,11 @@ func quickSpan(rb *reorderBuffer, i int) int { } cc := info.ccc if rb.f.composing { - if !info.flags.isYesC() { + if !info.isYesC() { break } } else { - if !info.flags.isYesD() { + if !info.isYesD() { break } } @@ -316,13 +316,13 @@ func firstBoundary(rb *reorderBuffer) int { } fd := &rb.f info := fd.info(src, i) - for n := 0; info.size != 0 && !fd.boundaryBefore(fd, info); { + for n := 0; info.size != 0 && !info.boundaryBefore(); { i += int(info.size) if n++; n >= maxCombiningChars { return i } if i >= nsrc { - if !fd.boundaryAfter(fd, info) { + if !info.boundaryAfter() { return -1 } return nsrc @@ -368,11 +368,11 @@ func lastBoundary(fd *formInfo, b []byte) int { if p+int(info.size) != i { // trailing non-starter bytes: illegal UTF-8 return i } - if fd.boundaryAfter(fd, info) { + if info.boundaryAfter() { return i } i = p - for n := 0; i >= 0 && !fd.boundaryBefore(fd, info); { + for n := 0; i >= 0 && !info.boundaryBefore(); { info, p = lastRuneStart(fd, b[:i]) if n++; n >= maxCombiningChars { return len(b) @@ -404,7 +404,7 @@ func decomposeSegment(rb *reorderBuffer, sp int) int { break } info = rb.f.info(rb.src, sp) - bound := rb.f.boundaryBefore(&rb.f, info) + bound := info.boundaryBefore() if bound || info.size == 0 { break } @@ -419,7 +419,7 @@ func lastRuneStart(fd *formInfo, buf []byte) (runeInfo, int) { for ; p >= 0 && !utf8.RuneStart(buf[p]); p-- { } if p < 0 { - return runeInfo{0, 0, 0, 0}, -1 + return runeInfo{}, -1 } return fd.info(inputBytes(buf), p), p } @@ -433,7 +433,7 @@ func decomposeToLastBoundary(rb *reorderBuffer, buf []byte) []byte { // illegal trailing continuation bytes return buf } - if rb.f.boundaryAfter(fd, info) { + if info.boundaryAfter() { return buf } var add [maxBackRunes]runeInfo // stores runeInfo in reverse order @@ -441,13 +441,13 @@ func decomposeToLastBoundary(rb *reorderBuffer, buf []byte) []byte { padd := 1 n := 1 p := len(buf) - int(info.size) - for ; p >= 0 && !rb.f.boundaryBefore(fd, info); p -= int(info.size) { + for ; p >= 0 && !info.boundaryBefore(); p -= int(info.size) { info, i = lastRuneStart(fd, buf[:p]) if int(info.size) != p-i { break } // Check that decomposition doesn't result in overflow. - if info.flags.hasDecomposition() { + if info.hasDecomposition() { dcomp := rb.f.decompose(inputBytes(buf), p-int(info.size)) for i := 0; i < len(dcomp); { inf := rb.f.info(inputBytes(dcomp), i) diff --git a/libgo/go/exp/norm/normalize_test.go b/libgo/go/exp/norm/normalize_test.go index 2e0c1f1..c7d5e08 100644 --- a/libgo/go/exp/norm/normalize_test.go +++ b/libgo/go/exp/norm/normalize_test.go @@ -495,11 +495,11 @@ func TestAppend(t *testing.T) { runAppendTests(t, "TestString", NFKC, stringF, appendTests) } -func doFormBenchmark(b *testing.B, f Form, s string) { +func doFormBenchmark(b *testing.B, inf, f Form, s string) { b.StopTimer() - in := []byte(s) + in := inf.Bytes([]byte(s)) buf := make([]byte, 2*len(in)) - b.SetBytes(int64(len(s))) + b.SetBytes(int64(len(in))) b.StartTimer() for i := 0; i < b.N; i++ { buf = f.Append(buf[0:0], in...) @@ -510,16 +510,43 @@ func doFormBenchmark(b *testing.B, f Form, s string) { var ascii = strings.Repeat("There is nothing to change here! ", 500) func BenchmarkNormalizeAsciiNFC(b *testing.B) { - doFormBenchmark(b, NFC, ascii) + doFormBenchmark(b, NFC, NFC, ascii) } func BenchmarkNormalizeAsciiNFD(b *testing.B) { - doFormBenchmark(b, NFD, ascii) + doFormBenchmark(b, NFC, NFD, ascii) } func BenchmarkNormalizeAsciiNFKC(b *testing.B) { - doFormBenchmark(b, NFKC, ascii) + doFormBenchmark(b, NFC, NFKC, ascii) } func BenchmarkNormalizeAsciiNFKD(b *testing.B) { - doFormBenchmark(b, NFKD, ascii) + doFormBenchmark(b, NFC, NFKD, ascii) +} + +func BenchmarkNormalizeNFC2NFC(b *testing.B) { + doFormBenchmark(b, NFC, NFC, txt_all) +} +func BenchmarkNormalizeNFC2NFD(b *testing.B) { + doFormBenchmark(b, NFC, NFD, txt_all) +} +func BenchmarkNormalizeNFD2NFC(b *testing.B) { + doFormBenchmark(b, NFD, NFC, txt_all) +} +func BenchmarkNormalizeNFD2NFD(b *testing.B) { + doFormBenchmark(b, NFD, NFD, txt_all) +} + +// Hangul is often special-cased, so we test it separately. +func BenchmarkNormalizeHangulNFC2NFC(b *testing.B) { + doFormBenchmark(b, NFC, NFC, txt_kr) +} +func BenchmarkNormalizeHangulNFC2NFD(b *testing.B) { + doFormBenchmark(b, NFC, NFD, txt_kr) +} +func BenchmarkNormalizeHangulNFD2NFC(b *testing.B) { + doFormBenchmark(b, NFD, NFC, txt_kr) +} +func BenchmarkNormalizeHangulNFD2NFD(b *testing.B) { + doFormBenchmark(b, NFD, NFD, txt_kr) } func doTextBenchmark(b *testing.B, s string) { @@ -657,3 +684,6 @@ const txt_cn = `您可以自由: 复制、发行、展览、表演、放映、 署名 — 您必须按照作者或者许可人指定的方式对作品进行署名。 相同方式共享 — 如果您改变、转换本作品或者以本作品为基础进行创作, 您只能采用与本协议相同的许可协议发布基于本作品的演绎作品。` + +const txt_cjk = txt_cn + txt_jp + txt_kr +const txt_all = txt_vn + twoByteUtf8 + threeByteUtf8 + txt_cjk diff --git a/libgo/go/exp/norm/tables.go b/libgo/go/exp/norm/tables.go index 9044a72..02a481b 100644 --- a/libgo/go/exp/norm/tables.go +++ b/libgo/go/exp/norm/tables.go @@ -4661,7 +4661,7 @@ var nfkcDecompLookup = [960]uint8{ var nfkcDecompTrie = trie{nfkcDecompLookup[:], nfkcDecompValues[:], nfkcDecompSparseValues[:], nfkcDecompSparseOffset[:], 66} // recompMap: 7448 bytes (entries only) -var recompMap = map[uint32]uint32{ +var recompMap = map[uint32]rune{ 0x00410300: 0x00C0, 0x00410301: 0x00C1, 0x00410302: 0x00C2, @@ -5637,7 +5637,7 @@ var charInfoValues = [1024]uint16{ 0x0136: 0x0001, 0x0137: 0x0001, 0x0138: 0x6601, 0x0139: 0x00dc, 0x013a: 0x00dc, 0x013b: 0x00dc, 0x013c: 0x00dc, 0x013d: 0x00e6, 0x013e: 0x00e6, 0x013f: 0x00e6, // Block 0x5, offset 0x140 - 0x0140: 0x33e6, 0x0141: 0x33e6, 0x0142: 0x66e6, 0x0143: 0x33e6, 0x0144: 0x33e6, 0x0145: 0x66f0, + 0x0140: 0x55e6, 0x0141: 0x55e6, 0x0142: 0x66e6, 0x0143: 0x55e6, 0x0144: 0x55e6, 0x0145: 0x66f0, 0x0146: 0x00e6, 0x0147: 0x00dc, 0x0148: 0x00dc, 0x0149: 0x00dc, 0x014a: 0x00e6, 0x014b: 0x00e6, 0x014c: 0x00e6, 0x014d: 0x00dc, 0x014e: 0x00dc, 0x0150: 0x00e6, 0x0151: 0x00e6, 0x0152: 0x00e6, 0x0153: 0x00dc, 0x0154: 0x00dc, 0x0155: 0x00dc, 0x0156: 0x00dc, 0x0157: 0x00e6, @@ -5645,12 +5645,12 @@ var charInfoValues = [1024]uint16{ 0x015e: 0x00ea, 0x015f: 0x00e9, 0x0160: 0x00ea, 0x0161: 0x00ea, 0x0162: 0x00e9, 0x0163: 0x00e6, 0x0164: 0x00e6, 0x0165: 0x00e6, 0x0166: 0x00e6, 0x0167: 0x00e6, 0x0168: 0x00e6, 0x0169: 0x00e6, 0x016a: 0x00e6, 0x016b: 0x00e6, 0x016c: 0x00e6, 0x016d: 0x00e6, 0x016e: 0x00e6, 0x016f: 0x00e6, - 0x0174: 0x3300, - 0x017a: 0x3000, - 0x017e: 0x3300, + 0x0174: 0x5500, + 0x017a: 0x5000, + 0x017e: 0x5500, // Block 0x6, offset 0x180 - 0x0184: 0x3000, 0x0185: 0x3100, - 0x0186: 0x1100, 0x0187: 0x3300, 0x0188: 0x1100, 0x0189: 0x1100, 0x018a: 0x1100, + 0x0184: 0x5000, 0x0185: 0x5100, + 0x0186: 0x1100, 0x0187: 0x5500, 0x0188: 0x1100, 0x0189: 0x1100, 0x018a: 0x1100, 0x018c: 0x1100, 0x018e: 0x1100, 0x018f: 0x1100, 0x0190: 0x1100, 0x0191: 0x8800, 0x0195: 0x8800, 0x0197: 0x8800, 0x0199: 0x8800, @@ -5673,7 +5673,7 @@ var charInfoValues = [1024]uint16{ 0x01f6: 0x8800, 0x01f7: 0x8800, 0x01f8: 0x8800, 0x01f9: 0x1100, 0x01fa: 0x8800, 0x01fe: 0x8800, // Block 0x8, offset 0x200 - 0x0207: 0x3000, + 0x0207: 0x5000, 0x0211: 0x00dc, 0x0212: 0x00e6, 0x0213: 0x00e6, 0x0214: 0x00e6, 0x0215: 0x00e6, 0x0216: 0x00dc, 0x0217: 0x00e6, 0x0218: 0x00e6, 0x0219: 0x00e6, 0x021a: 0x00de, 0x021b: 0x00dc, 0x021c: 0x00e6, 0x021d: 0x00e6, @@ -5689,8 +5689,8 @@ var charInfoValues = [1024]uint16{ 0x0252: 0x0022, 0x0253: 0x66e6, 0x0254: 0x66e6, 0x0255: 0x66dc, 0x0256: 0x00dc, 0x0257: 0x00e6, 0x0258: 0x00e6, 0x0259: 0x00e6, 0x025a: 0x00e6, 0x025b: 0x00e6, 0x025c: 0x00dc, 0x025d: 0x00e6, 0x025e: 0x00e6, 0x025f: 0x00dc, - 0x0270: 0x0023, 0x0275: 0x3000, - 0x0276: 0x3000, 0x0277: 0x3000, 0x0278: 0x3000, + 0x0270: 0x0023, 0x0275: 0x5000, + 0x0276: 0x5000, 0x0277: 0x5000, 0x0278: 0x5000, // Block 0xa, offset 0x280 0x0280: 0x9900, 0x0281: 0x9900, 0x0282: 0x1100, 0x0283: 0x1100, 0x0284: 0x1100, 0x0285: 0x1100, 0x0288: 0x9900, 0x0289: 0x9900, 0x028a: 0x1100, 0x028b: 0x1100, @@ -5700,21 +5700,21 @@ var charInfoValues = [1024]uint16{ 0x029f: 0x1100, 0x02a0: 0x9900, 0x02a1: 0x9900, 0x02a2: 0x9900, 0x02a3: 0x9900, 0x02a4: 0x9900, 0x02a5: 0x9900, 0x02a6: 0x9900, 0x02a7: 0x9900, 0x02a8: 0x9900, 0x02a9: 0x9900, 0x02aa: 0x9900, 0x02ab: 0x9900, 0x02ac: 0x9900, 0x02ad: 0x9900, 0x02ae: 0x9900, 0x02af: 0x9900, - 0x02b0: 0x9900, 0x02b1: 0x3300, 0x02b2: 0x1100, 0x02b3: 0x3300, 0x02b4: 0x9900, 0x02b5: 0x3300, - 0x02b6: 0x1100, 0x02b7: 0x3300, 0x02b8: 0x1100, 0x02b9: 0x3300, 0x02ba: 0x1100, 0x02bb: 0x3300, - 0x02bc: 0x9900, 0x02bd: 0x3300, + 0x02b0: 0x9900, 0x02b1: 0x5500, 0x02b2: 0x1100, 0x02b3: 0x5500, 0x02b4: 0x9900, 0x02b5: 0x5500, + 0x02b6: 0x1100, 0x02b7: 0x5500, 0x02b8: 0x1100, 0x02b9: 0x5500, 0x02ba: 0x1100, 0x02bb: 0x5500, + 0x02bc: 0x9900, 0x02bd: 0x5500, // Block 0xb, offset 0x2c0 - 0x02c0: 0x3000, 0x02c1: 0x3100, 0x02c2: 0x1100, 0x02c3: 0x1100, 0x02c4: 0x1100, - 0x02c6: 0x9900, 0x02c7: 0x1100, 0x02c8: 0x1100, 0x02c9: 0x3300, 0x02ca: 0x1100, 0x02cb: 0x3300, - 0x02cc: 0x1100, 0x02cd: 0x3100, 0x02ce: 0x3100, 0x02cf: 0x3100, 0x02d0: 0x1100, 0x02d1: 0x1100, - 0x02d2: 0x1100, 0x02d3: 0x3300, 0x02d6: 0x1100, 0x02d7: 0x1100, - 0x02d8: 0x1100, 0x02d9: 0x1100, 0x02da: 0x1100, 0x02db: 0x3300, 0x02dd: 0x3100, - 0x02de: 0x3100, 0x02df: 0x3100, 0x02e0: 0x1100, 0x02e1: 0x1100, 0x02e2: 0x1100, 0x02e3: 0x3300, + 0x02c0: 0x5000, 0x02c1: 0x5100, 0x02c2: 0x1100, 0x02c3: 0x1100, 0x02c4: 0x1100, + 0x02c6: 0x9900, 0x02c7: 0x1100, 0x02c8: 0x1100, 0x02c9: 0x5500, 0x02ca: 0x1100, 0x02cb: 0x5500, + 0x02cc: 0x1100, 0x02cd: 0x5100, 0x02ce: 0x5100, 0x02cf: 0x5100, 0x02d0: 0x1100, 0x02d1: 0x1100, + 0x02d2: 0x1100, 0x02d3: 0x5500, 0x02d6: 0x1100, 0x02d7: 0x1100, + 0x02d8: 0x1100, 0x02d9: 0x1100, 0x02da: 0x1100, 0x02db: 0x5500, 0x02dd: 0x5100, + 0x02de: 0x5100, 0x02df: 0x5100, 0x02e0: 0x1100, 0x02e1: 0x1100, 0x02e2: 0x1100, 0x02e3: 0x5500, 0x02e4: 0x1100, 0x02e5: 0x1100, 0x02e6: 0x1100, 0x02e7: 0x1100, 0x02e8: 0x1100, 0x02e9: 0x1100, - 0x02ea: 0x1100, 0x02eb: 0x3300, 0x02ec: 0x1100, 0x02ed: 0x3100, 0x02ee: 0x3300, 0x02ef: 0x3300, + 0x02ea: 0x1100, 0x02eb: 0x5500, 0x02ec: 0x1100, 0x02ed: 0x5100, 0x02ee: 0x5500, 0x02ef: 0x5500, 0x02f2: 0x1100, 0x02f3: 0x1100, 0x02f4: 0x1100, - 0x02f6: 0x9900, 0x02f7: 0x1100, 0x02f8: 0x1100, 0x02f9: 0x3300, 0x02fa: 0x1100, 0x02fb: 0x3300, - 0x02fc: 0x1100, 0x02fd: 0x3300, 0x02fe: 0x3800, + 0x02f6: 0x9900, 0x02f7: 0x1100, 0x02f8: 0x1100, 0x02f9: 0x5500, 0x02fa: 0x1100, 0x02fb: 0x5500, + 0x02fc: 0x1100, 0x02fd: 0x5500, 0x02fe: 0x5800, // Block 0xc, offset 0x300 0x0301: 0x1100, 0x0303: 0x8800, 0x0304: 0x1100, 0x0305: 0x8800, 0x0307: 0x1100, 0x0308: 0x8800, 0x0309: 0x1100, @@ -5738,8 +5738,8 @@ var charInfoValues = [1024]uint16{ 0x037c: 0x1100, 0x037d: 0x1100, // Block 0xe, offset 0x380 0x0394: 0x1100, - 0x0399: 0x6608, 0x039a: 0x6608, 0x039b: 0x3000, 0x039c: 0x3000, 0x039d: 0x8800, - 0x039e: 0x1100, 0x039f: 0x3000, + 0x0399: 0x6608, 0x039a: 0x6608, 0x039b: 0x5000, 0x039c: 0x5000, 0x039d: 0x8800, + 0x039e: 0x1100, 0x039f: 0x5000, 0x03a6: 0x8800, 0x03ab: 0x8800, 0x03ac: 0x1100, 0x03ad: 0x8800, 0x03ae: 0x1100, 0x03af: 0x8800, 0x03b0: 0x1100, 0x03b1: 0x8800, 0x03b2: 0x1100, 0x03b3: 0x8800, 0x03b4: 0x1100, 0x03b5: 0x8800, @@ -5754,7 +5754,7 @@ var charInfoValues = [1024]uint16{ 0x03ef: 0x8800, 0x03f0: 0x8800, 0x03f1: 0x8800, 0x03f2: 0x8800, 0x03f4: 0x1100, 0x03f7: 0x1100, 0x03f8: 0x1100, 0x03f9: 0x1100, 0x03fa: 0x1100, - 0x03fd: 0x8800, 0x03fe: 0x1100, 0x03ff: 0x3000, + 0x03fd: 0x8800, 0x03fe: 0x1100, 0x03ff: 0x5000, } // charInfoSparseOffset: 156 entries, 312 bytes @@ -5764,13 +5764,13 @@ var charInfoSparseOffset = []uint16{0x0, 0x8, 0x13, 0x21, 0x25, 0x2f, 0x36, 0x39 var charInfoSparseValues = [757]valueRange{ // Block 0x0, offset 0x1 {value: 0x0000, lo: 0x07}, - {value: 0x3000, lo: 0xa0, hi: 0xa0}, - {value: 0x3800, lo: 0xa8, hi: 0xa8}, - {value: 0x3000, lo: 0xaa, hi: 0xaa}, - {value: 0x3000, lo: 0xaf, hi: 0xaf}, - {value: 0x3000, lo: 0xb2, hi: 0xb5}, - {value: 0x3000, lo: 0xb8, hi: 0xba}, - {value: 0x3000, lo: 0xbc, hi: 0xbe}, + {value: 0x5000, lo: 0xa0, hi: 0xa0}, + {value: 0x5800, lo: 0xa8, hi: 0xa8}, + {value: 0x5000, lo: 0xaa, hi: 0xaa}, + {value: 0x5000, lo: 0xaf, hi: 0xaf}, + {value: 0x5000, lo: 0xb2, hi: 0xb5}, + {value: 0x5000, lo: 0xb8, hi: 0xba}, + {value: 0x5000, lo: 0xbc, hi: 0xbe}, // Block 0x1, offset 0x2 {value: 0x0000, lo: 0x0a}, {value: 0x1100, lo: 0x80, hi: 0x81}, @@ -5779,15 +5779,15 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x9900, lo: 0x92, hi: 0x93}, {value: 0x1100, lo: 0x94, hi: 0xa5}, {value: 0x1100, lo: 0xa8, hi: 0xb0}, - {value: 0x3000, lo: 0xb2, hi: 0xb3}, + {value: 0x5000, lo: 0xb2, hi: 0xb3}, {value: 0x1100, lo: 0xb4, hi: 0xb7}, {value: 0x1100, lo: 0xb9, hi: 0xbe}, - {value: 0x3000, lo: 0xbf, hi: 0xbf}, + {value: 0x5000, lo: 0xbf, hi: 0xbf}, // Block 0x2, offset 0x3 {value: 0x0000, lo: 0x0d}, - {value: 0x3000, lo: 0x80, hi: 0x80}, + {value: 0x5000, lo: 0x80, hi: 0x80}, {value: 0x1100, lo: 0x83, hi: 0x88}, - {value: 0x3000, lo: 0x89, hi: 0x89}, + {value: 0x5000, lo: 0x89, hi: 0x89}, {value: 0x9900, lo: 0x8c, hi: 0x8d}, {value: 0x1100, lo: 0x8e, hi: 0x91}, {value: 0x1100, lo: 0x94, hi: 0x99}, @@ -5797,7 +5797,7 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x1100, lo: 0xa2, hi: 0xa5}, {value: 0x9900, lo: 0xa8, hi: 0xab}, {value: 0x1100, lo: 0xac, hi: 0xbe}, - {value: 0x3800, lo: 0xbf, hi: 0xbf}, + {value: 0x5800, lo: 0xbf, hi: 0xbf}, // Block 0x3, offset 0x4 {value: 0x0000, lo: 0x03}, {value: 0x9900, lo: 0xa0, hi: 0xa1}, @@ -5805,13 +5805,13 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x8800, lo: 0xb7, hi: 0xb7}, // Block 0x4, offset 0x5 {value: 0x0000, lo: 0x09}, - {value: 0x3000, lo: 0x84, hi: 0x8c}, + {value: 0x5000, lo: 0x84, hi: 0x8c}, {value: 0x1100, lo: 0x8d, hi: 0x9c}, {value: 0x1100, lo: 0x9e, hi: 0xa3}, {value: 0x1100, lo: 0xa6, hi: 0xa9}, {value: 0x9900, lo: 0xaa, hi: 0xab}, {value: 0x1100, lo: 0xac, hi: 0xb0}, - {value: 0x3000, lo: 0xb1, hi: 0xb3}, + {value: 0x5000, lo: 0xb1, hi: 0xb3}, {value: 0x1100, lo: 0xb4, hi: 0xb5}, {value: 0x1100, lo: 0xb8, hi: 0xbf}, // Block 0x5, offset 0x6 @@ -5825,11 +5825,11 @@ var charInfoSparseValues = [757]valueRange{ // Block 0x6, offset 0x7 {value: 0x0000, lo: 0x02}, {value: 0x8800, lo: 0x92, hi: 0x92}, - {value: 0x3000, lo: 0xb0, hi: 0xb8}, + {value: 0x5000, lo: 0xb0, hi: 0xb8}, // Block 0x7, offset 0x8 {value: 0x0000, lo: 0x02}, - {value: 0x3000, lo: 0x98, hi: 0x9d}, - {value: 0x3000, lo: 0xa0, hi: 0xa4}, + {value: 0x5000, lo: 0x98, hi: 0x9d}, + {value: 0x5000, lo: 0xa0, hi: 0xa4}, // Block 0x8, offset 0x9 {value: 0x0000, lo: 0x0d}, {value: 0x8800, lo: 0x81, hi: 0x81}, @@ -5838,13 +5838,13 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x9900, lo: 0x8a, hi: 0x8b}, {value: 0x1100, lo: 0x8c, hi: 0x8d}, {value: 0x9900, lo: 0x8e, hi: 0x8e}, - {value: 0x3000, lo: 0x90, hi: 0x91}, - {value: 0x3800, lo: 0x92, hi: 0x92}, - {value: 0x3100, lo: 0x93, hi: 0x94}, - {value: 0x3000, lo: 0x95, hi: 0x96}, - {value: 0x3000, lo: 0xb0, hi: 0xb2}, - {value: 0x3000, lo: 0xb4, hi: 0xb5}, - {value: 0x3000, lo: 0xb9, hi: 0xb9}, + {value: 0x5000, lo: 0x90, hi: 0x91}, + {value: 0x5800, lo: 0x92, hi: 0x92}, + {value: 0x5100, lo: 0x93, hi: 0x94}, + {value: 0x5000, lo: 0x95, hi: 0x96}, + {value: 0x5000, lo: 0xb0, hi: 0xb2}, + {value: 0x5000, lo: 0xb4, hi: 0xb5}, + {value: 0x5000, lo: 0xb9, hi: 0xb9}, // Block 0x9, offset 0xa {value: 0x0000, lo: 0x0b}, {value: 0x8800, lo: 0x83, hi: 0x83}, @@ -5954,7 +5954,7 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x00e6, lo: 0x91, hi: 0x91}, {value: 0x00dc, lo: 0x92, hi: 0x92}, {value: 0x00e6, lo: 0x93, hi: 0x94}, - {value: 0x3300, lo: 0x98, hi: 0x9f}, + {value: 0x5500, lo: 0x98, hi: 0x9f}, // Block 0x16, offset 0x17 {value: 0x0000, lo: 0x02}, {value: 0x0007, lo: 0xbc, hi: 0xbc}, @@ -5965,18 +5965,18 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x1100, lo: 0x8b, hi: 0x8c}, {value: 0x0009, lo: 0x8d, hi: 0x8d}, {value: 0x6600, lo: 0x97, hi: 0x97}, - {value: 0x3300, lo: 0x9c, hi: 0x9d}, - {value: 0x3300, lo: 0x9f, hi: 0x9f}, + {value: 0x5500, lo: 0x9c, hi: 0x9d}, + {value: 0x5500, lo: 0x9f, hi: 0x9f}, // Block 0x18, offset 0x19 {value: 0x0000, lo: 0x03}, - {value: 0x3300, lo: 0xb3, hi: 0xb3}, - {value: 0x3300, lo: 0xb6, hi: 0xb6}, + {value: 0x5500, lo: 0xb3, hi: 0xb3}, + {value: 0x5500, lo: 0xb6, hi: 0xb6}, {value: 0x0007, lo: 0xbc, hi: 0xbc}, // Block 0x19, offset 0x1a {value: 0x0000, lo: 0x03}, {value: 0x0009, lo: 0x8d, hi: 0x8d}, - {value: 0x3300, lo: 0x99, hi: 0x9b}, - {value: 0x3300, lo: 0x9e, hi: 0x9e}, + {value: 0x5500, lo: 0x99, hi: 0x9b}, + {value: 0x5500, lo: 0x9e, hi: 0x9e}, // Block 0x1a, offset 0x1b {value: 0x0000, lo: 0x01}, {value: 0x0007, lo: 0xbc, hi: 0xbc}, @@ -5990,7 +5990,7 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x1100, lo: 0x8b, hi: 0x8c}, {value: 0x0009, lo: 0x8d, hi: 0x8d}, {value: 0x6600, lo: 0x96, hi: 0x97}, - {value: 0x3300, lo: 0x9c, hi: 0x9d}, + {value: 0x5500, lo: 0x9c, hi: 0x9d}, // Block 0x1d, offset 0x1e {value: 0x0000, lo: 0x03}, {value: 0x8800, lo: 0x92, hi: 0x92}, @@ -6036,7 +6036,7 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x6600, lo: 0x9f, hi: 0x9f}, // Block 0x24, offset 0x25 {value: 0x0000, lo: 0x03}, - {value: 0x3000, lo: 0xb3, hi: 0xb3}, + {value: 0x5000, lo: 0xb3, hi: 0xb3}, {value: 0x0067, lo: 0xb8, hi: 0xb9}, {value: 0x0009, lo: 0xba, hi: 0xba}, // Block 0x25, offset 0x26 @@ -6044,49 +6044,49 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x006b, lo: 0x88, hi: 0x8b}, // Block 0x26, offset 0x27 {value: 0x0000, lo: 0x02}, - {value: 0x3000, lo: 0xb3, hi: 0xb3}, + {value: 0x5000, lo: 0xb3, hi: 0xb3}, {value: 0x0076, lo: 0xb8, hi: 0xb9}, // Block 0x27, offset 0x28 {value: 0x0000, lo: 0x02}, {value: 0x007a, lo: 0x88, hi: 0x8b}, - {value: 0x3000, lo: 0x9c, hi: 0x9d}, + {value: 0x5000, lo: 0x9c, hi: 0x9d}, // Block 0x28, offset 0x29 {value: 0x0000, lo: 0x05}, - {value: 0x3000, lo: 0x8c, hi: 0x8c}, + {value: 0x5000, lo: 0x8c, hi: 0x8c}, {value: 0x00dc, lo: 0x98, hi: 0x99}, {value: 0x00dc, lo: 0xb5, hi: 0xb5}, {value: 0x00dc, lo: 0xb7, hi: 0xb7}, {value: 0x00d8, lo: 0xb9, hi: 0xb9}, // Block 0x29, offset 0x2a {value: 0x0000, lo: 0x0f}, - {value: 0x3300, lo: 0x83, hi: 0x83}, - {value: 0x3300, lo: 0x8d, hi: 0x8d}, - {value: 0x3300, lo: 0x92, hi: 0x92}, - {value: 0x3300, lo: 0x97, hi: 0x97}, - {value: 0x3300, lo: 0x9c, hi: 0x9c}, - {value: 0x3300, lo: 0xa9, hi: 0xa9}, + {value: 0x5500, lo: 0x83, hi: 0x83}, + {value: 0x5500, lo: 0x8d, hi: 0x8d}, + {value: 0x5500, lo: 0x92, hi: 0x92}, + {value: 0x5500, lo: 0x97, hi: 0x97}, + {value: 0x5500, lo: 0x9c, hi: 0x9c}, + {value: 0x5500, lo: 0xa9, hi: 0xa9}, {value: 0x0081, lo: 0xb1, hi: 0xb1}, {value: 0x0082, lo: 0xb2, hi: 0xb2}, - {value: 0x3300, lo: 0xb3, hi: 0xb3}, + {value: 0x5500, lo: 0xb3, hi: 0xb3}, {value: 0x0084, lo: 0xb4, hi: 0xb4}, - {value: 0x3300, lo: 0xb5, hi: 0xb6}, - {value: 0x3000, lo: 0xb7, hi: 0xb7}, - {value: 0x3300, lo: 0xb8, hi: 0xb8}, - {value: 0x3000, lo: 0xb9, hi: 0xb9}, + {value: 0x5500, lo: 0xb5, hi: 0xb6}, + {value: 0x5000, lo: 0xb7, hi: 0xb7}, + {value: 0x5500, lo: 0xb8, hi: 0xb8}, + {value: 0x5000, lo: 0xb9, hi: 0xb9}, {value: 0x0082, lo: 0xba, hi: 0xbd}, // Block 0x2a, offset 0x2b {value: 0x0000, lo: 0x0b}, {value: 0x0082, lo: 0x80, hi: 0x80}, - {value: 0x3300, lo: 0x81, hi: 0x81}, + {value: 0x5500, lo: 0x81, hi: 0x81}, {value: 0x00e6, lo: 0x82, hi: 0x83}, {value: 0x0009, lo: 0x84, hi: 0x84}, {value: 0x00e6, lo: 0x86, hi: 0x87}, - {value: 0x3300, lo: 0x93, hi: 0x93}, - {value: 0x3300, lo: 0x9d, hi: 0x9d}, - {value: 0x3300, lo: 0xa2, hi: 0xa2}, - {value: 0x3300, lo: 0xa7, hi: 0xa7}, - {value: 0x3300, lo: 0xac, hi: 0xac}, - {value: 0x3300, lo: 0xb9, hi: 0xb9}, + {value: 0x5500, lo: 0x93, hi: 0x93}, + {value: 0x5500, lo: 0x9d, hi: 0x9d}, + {value: 0x5500, lo: 0xa2, hi: 0xa2}, + {value: 0x5500, lo: 0xa7, hi: 0xa7}, + {value: 0x5500, lo: 0xac, hi: 0xac}, + {value: 0x5500, lo: 0xb9, hi: 0xb9}, // Block 0x2b, offset 0x2c {value: 0x0000, lo: 0x01}, {value: 0x00dc, lo: 0x86, hi: 0x86}, @@ -6102,7 +6102,7 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x00dc, lo: 0x8d, hi: 0x8d}, // Block 0x2e, offset 0x2f {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0xbc, hi: 0xbc}, + {value: 0x5000, lo: 0xbc, hi: 0xbc}, // Block 0x2f, offset 0x30 {value: 0x0000, lo: 0x01}, {value: 0x8800, lo: 0x80, hi: 0x92}, @@ -6189,17 +6189,17 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x00dc, lo: 0xad, hi: 0xad}, // Block 0x40, offset 0x41 {value: 0x0000, lo: 0x03}, - {value: 0x3000, lo: 0xac, hi: 0xae}, - {value: 0x3000, lo: 0xb0, hi: 0xba}, - {value: 0x3000, lo: 0xbc, hi: 0xbf}, + {value: 0x5000, lo: 0xac, hi: 0xae}, + {value: 0x5000, lo: 0xb0, hi: 0xba}, + {value: 0x5000, lo: 0xbc, hi: 0xbf}, // Block 0x41, offset 0x42 {value: 0x0000, lo: 0x03}, - {value: 0x3000, lo: 0x80, hi: 0x8d}, - {value: 0x3000, lo: 0x8f, hi: 0xaa}, - {value: 0x3000, lo: 0xb8, hi: 0xb8}, + {value: 0x5000, lo: 0x80, hi: 0x8d}, + {value: 0x5000, lo: 0x8f, hi: 0xaa}, + {value: 0x5000, lo: 0xb8, hi: 0xb8}, // Block 0x42, offset 0x43 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x9b, hi: 0xbf}, + {value: 0x5000, lo: 0x9b, hi: 0xbf}, // Block 0x43, offset 0x44 {value: 0x0000, lo: 0x0e}, {value: 0x00e6, lo: 0x80, hi: 0x81}, @@ -6231,8 +6231,8 @@ var charInfoSparseValues = [757]valueRange{ // Block 0x46, offset 0x47 {value: 0x0000, lo: 0x07}, {value: 0x1100, lo: 0x80, hi: 0x99}, - {value: 0x3000, lo: 0x9a, hi: 0x9a}, - {value: 0x3100, lo: 0x9b, hi: 0x9b}, + {value: 0x5000, lo: 0x9a, hi: 0x9a}, + {value: 0x5100, lo: 0x9b, hi: 0x9b}, {value: 0x9900, lo: 0xa0, hi: 0xa1}, {value: 0x1100, lo: 0xa2, hi: 0xb7}, {value: 0x9900, lo: 0xb8, hi: 0xb9}, @@ -6257,35 +6257,35 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x1100, lo: 0x80, hi: 0xb4}, {value: 0x9900, lo: 0xb6, hi: 0xb6}, {value: 0x1100, lo: 0xb7, hi: 0xba}, - {value: 0x3300, lo: 0xbb, hi: 0xbb}, + {value: 0x5500, lo: 0xbb, hi: 0xbb}, {value: 0x1100, lo: 0xbc, hi: 0xbc}, - {value: 0x3000, lo: 0xbd, hi: 0xbd}, - {value: 0x3300, lo: 0xbe, hi: 0xbe}, - {value: 0x3800, lo: 0xbf, hi: 0xbf}, + {value: 0x5000, lo: 0xbd, hi: 0xbd}, + {value: 0x5500, lo: 0xbe, hi: 0xbe}, + {value: 0x5800, lo: 0xbf, hi: 0xbf}, // Block 0x4a, offset 0x4b {value: 0x0000, lo: 0x0a}, - {value: 0x3300, lo: 0x80, hi: 0x81}, - {value: 0x3000, lo: 0x82, hi: 0x8a}, - {value: 0x3000, lo: 0x91, hi: 0x91}, - {value: 0x3000, lo: 0x97, hi: 0x97}, - {value: 0x3000, lo: 0xa4, hi: 0xa6}, - {value: 0x3000, lo: 0xaf, hi: 0xaf}, - {value: 0x3000, lo: 0xb3, hi: 0xb4}, - {value: 0x3000, lo: 0xb6, hi: 0xb7}, - {value: 0x3000, lo: 0xbc, hi: 0xbc}, - {value: 0x3000, lo: 0xbe, hi: 0xbe}, + {value: 0x5500, lo: 0x80, hi: 0x81}, + {value: 0x5000, lo: 0x82, hi: 0x8a}, + {value: 0x5000, lo: 0x91, hi: 0x91}, + {value: 0x5000, lo: 0x97, hi: 0x97}, + {value: 0x5000, lo: 0xa4, hi: 0xa6}, + {value: 0x5000, lo: 0xaf, hi: 0xaf}, + {value: 0x5000, lo: 0xb3, hi: 0xb4}, + {value: 0x5000, lo: 0xb6, hi: 0xb7}, + {value: 0x5000, lo: 0xbc, hi: 0xbc}, + {value: 0x5000, lo: 0xbe, hi: 0xbe}, // Block 0x4b, offset 0x4c {value: 0x0000, lo: 0x05}, - {value: 0x3000, lo: 0x87, hi: 0x89}, - {value: 0x3000, lo: 0x97, hi: 0x97}, - {value: 0x3000, lo: 0x9f, hi: 0x9f}, - {value: 0x3000, lo: 0xb0, hi: 0xb1}, - {value: 0x3000, lo: 0xb4, hi: 0xbf}, + {value: 0x5000, lo: 0x87, hi: 0x89}, + {value: 0x5000, lo: 0x97, hi: 0x97}, + {value: 0x5000, lo: 0x9f, hi: 0x9f}, + {value: 0x5000, lo: 0xb0, hi: 0xb1}, + {value: 0x5000, lo: 0xb4, hi: 0xbf}, // Block 0x4c, offset 0x4d {value: 0x0000, lo: 0x03}, - {value: 0x3000, lo: 0x80, hi: 0x8e}, - {value: 0x3000, lo: 0x90, hi: 0x9c}, - {value: 0x3000, lo: 0xa8, hi: 0xa8}, + {value: 0x5000, lo: 0x80, hi: 0x8e}, + {value: 0x5000, lo: 0x90, hi: 0x9c}, + {value: 0x5000, lo: 0xa8, hi: 0xa8}, // Block 0x4d, offset 0x4e {value: 0x0000, lo: 0x0d}, {value: 0x00e6, lo: 0x90, hi: 0x91}, @@ -6303,28 +6303,28 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x00e6, lo: 0xb0, hi: 0xb0}, // Block 0x4e, offset 0x4f {value: 0x0000, lo: 0x0e}, - {value: 0x3000, lo: 0x80, hi: 0x83}, - {value: 0x3000, lo: 0x85, hi: 0x87}, - {value: 0x3000, lo: 0x89, hi: 0x93}, - {value: 0x3000, lo: 0x95, hi: 0x96}, - {value: 0x3000, lo: 0x99, hi: 0x9d}, - {value: 0x3000, lo: 0xa0, hi: 0xa2}, - {value: 0x3000, lo: 0xa4, hi: 0xa4}, - {value: 0x3300, lo: 0xa6, hi: 0xa6}, - {value: 0x3000, lo: 0xa8, hi: 0xa8}, - {value: 0x3300, lo: 0xaa, hi: 0xab}, - {value: 0x3000, lo: 0xac, hi: 0xad}, - {value: 0x3000, lo: 0xaf, hi: 0xb1}, - {value: 0x3000, lo: 0xb3, hi: 0xb9}, - {value: 0x3000, lo: 0xbb, hi: 0xbf}, + {value: 0x5000, lo: 0x80, hi: 0x83}, + {value: 0x5000, lo: 0x85, hi: 0x87}, + {value: 0x5000, lo: 0x89, hi: 0x93}, + {value: 0x5000, lo: 0x95, hi: 0x96}, + {value: 0x5000, lo: 0x99, hi: 0x9d}, + {value: 0x5000, lo: 0xa0, hi: 0xa2}, + {value: 0x5000, lo: 0xa4, hi: 0xa4}, + {value: 0x5500, lo: 0xa6, hi: 0xa6}, + {value: 0x5000, lo: 0xa8, hi: 0xa8}, + {value: 0x5500, lo: 0xaa, hi: 0xab}, + {value: 0x5000, lo: 0xac, hi: 0xad}, + {value: 0x5000, lo: 0xaf, hi: 0xb1}, + {value: 0x5000, lo: 0xb3, hi: 0xb9}, + {value: 0x5000, lo: 0xbb, hi: 0xbf}, // Block 0x4f, offset 0x50 {value: 0x0000, lo: 0x03}, - {value: 0x3000, lo: 0x80, hi: 0x80}, - {value: 0x3000, lo: 0x85, hi: 0x89}, - {value: 0x3000, lo: 0x90, hi: 0xbf}, + {value: 0x5000, lo: 0x80, hi: 0x80}, + {value: 0x5000, lo: 0x85, hi: 0x89}, + {value: 0x5000, lo: 0x90, hi: 0xbf}, // Block 0x50, offset 0x51 {value: 0x0000, lo: 0x06}, - {value: 0x3000, lo: 0x89, hi: 0x89}, + {value: 0x5000, lo: 0x89, hi: 0x89}, {value: 0x8800, lo: 0x90, hi: 0x90}, {value: 0x8800, lo: 0x92, hi: 0x92}, {value: 0x8800, lo: 0x94, hi: 0x94}, @@ -6348,8 +6348,8 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x1100, lo: 0xa4, hi: 0xa4}, {value: 0x8800, lo: 0xa5, hi: 0xa5}, {value: 0x1100, lo: 0xa6, hi: 0xa6}, - {value: 0x3000, lo: 0xac, hi: 0xad}, - {value: 0x3000, lo: 0xaf, hi: 0xb0}, + {value: 0x5000, lo: 0xac, hi: 0xad}, + {value: 0x5000, lo: 0xaf, hi: 0xb0}, {value: 0x8800, lo: 0xbc, hi: 0xbc}, // Block 0x53, offset 0x54 {value: 0x0000, lo: 0x0b}, @@ -6370,75 +6370,75 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x1100, lo: 0xaa, hi: 0xad}, // Block 0x55, offset 0x56 {value: 0x0000, lo: 0x01}, - {value: 0x3300, lo: 0xa9, hi: 0xaa}, + {value: 0x5500, lo: 0xa9, hi: 0xaa}, // Block 0x56, offset 0x57 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0xa0, hi: 0xbf}, + {value: 0x5000, lo: 0xa0, hi: 0xbf}, // Block 0x57, offset 0x58 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x80, hi: 0xbf}, + {value: 0x5000, lo: 0x80, hi: 0xbf}, // Block 0x58, offset 0x59 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x80, hi: 0xaa}, + {value: 0x5000, lo: 0x80, hi: 0xaa}, // Block 0x59, offset 0x5a {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x8c, hi: 0x8c}, + {value: 0x5000, lo: 0x8c, hi: 0x8c}, // Block 0x5a, offset 0x5b {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0xb4, hi: 0xb6}, + {value: 0x5000, lo: 0xb4, hi: 0xb6}, // Block 0x5b, offset 0x5c {value: 0x0000, lo: 0x01}, - {value: 0x3300, lo: 0x9c, hi: 0x9c}, + {value: 0x5500, lo: 0x9c, hi: 0x9c}, // Block 0x5c, offset 0x5d {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0xbc, hi: 0xbd}, + {value: 0x5000, lo: 0xbc, hi: 0xbd}, // Block 0x5d, offset 0x5e {value: 0x0000, lo: 0x01}, {value: 0x00e6, lo: 0xaf, hi: 0xb1}, // Block 0x5e, offset 0x5f {value: 0x0000, lo: 0x02}, - {value: 0x3000, lo: 0xaf, hi: 0xaf}, + {value: 0x5000, lo: 0xaf, hi: 0xaf}, {value: 0x0009, lo: 0xbf, hi: 0xbf}, // Block 0x5f, offset 0x60 {value: 0x0000, lo: 0x01}, {value: 0x00e6, lo: 0xa0, hi: 0xbf}, // Block 0x60, offset 0x61 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x9f, hi: 0x9f}, + {value: 0x5000, lo: 0x9f, hi: 0x9f}, // Block 0x61, offset 0x62 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0xb3, hi: 0xb3}, + {value: 0x5000, lo: 0xb3, hi: 0xb3}, // Block 0x62, offset 0x63 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x80, hi: 0x95}, + {value: 0x5000, lo: 0x80, hi: 0x95}, // Block 0x63, offset 0x64 {value: 0x0000, lo: 0x08}, - {value: 0x3000, lo: 0x80, hi: 0x80}, + {value: 0x5000, lo: 0x80, hi: 0x80}, {value: 0x00da, lo: 0xaa, hi: 0xaa}, {value: 0x00e4, lo: 0xab, hi: 0xab}, {value: 0x00e8, lo: 0xac, hi: 0xac}, {value: 0x00de, lo: 0xad, hi: 0xad}, {value: 0x00e0, lo: 0xae, hi: 0xaf}, - {value: 0x3000, lo: 0xb6, hi: 0xb6}, - {value: 0x3000, lo: 0xb8, hi: 0xba}, + {value: 0x5000, lo: 0xb6, hi: 0xb6}, + {value: 0x5000, lo: 0xb8, hi: 0xba}, // Block 0x64, offset 0x65 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0xb1, hi: 0xbf}, + {value: 0x5000, lo: 0xb1, hi: 0xbf}, // Block 0x65, offset 0x66 {value: 0x0000, lo: 0x02}, - {value: 0x3000, lo: 0x80, hi: 0x8e}, - {value: 0x3000, lo: 0x92, hi: 0x9f}, + {value: 0x5000, lo: 0x80, hi: 0x8e}, + {value: 0x5000, lo: 0x92, hi: 0x9f}, // Block 0x66, offset 0x67 {value: 0x0000, lo: 0x02}, - {value: 0x3000, lo: 0x80, hi: 0x9e}, - {value: 0x3000, lo: 0xa0, hi: 0xbf}, + {value: 0x5000, lo: 0x80, hi: 0x9e}, + {value: 0x5000, lo: 0xa0, hi: 0xbf}, // Block 0x67, offset 0x68 {value: 0x0000, lo: 0x02}, - {value: 0x3000, lo: 0x80, hi: 0x87}, - {value: 0x3000, lo: 0x90, hi: 0xbe}, + {value: 0x5000, lo: 0x80, hi: 0x87}, + {value: 0x5000, lo: 0x90, hi: 0xbe}, // Block 0x68, offset 0x69 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x80, hi: 0xbe}, + {value: 0x5000, lo: 0x80, hi: 0xbe}, // Block 0x69, offset 0x6a {value: 0x0000, lo: 0x02}, {value: 0x00e6, lo: 0xaf, hi: 0xaf}, @@ -6448,7 +6448,7 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x00e6, lo: 0xb0, hi: 0xb1}, // Block 0x6b, offset 0x6c {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0xb0, hi: 0xb0}, + {value: 0x5000, lo: 0xb0, hi: 0xb0}, // Block 0x6c, offset 0x6d {value: 0x0000, lo: 0x01}, {value: 0x0009, lo: 0x86, hi: 0x86}, @@ -6489,90 +6489,90 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x1100, lo: 0x80, hi: 0xa3}, // Block 0x77, offset 0x78 {value: 0x0000, lo: 0x01}, - {value: 0x3300, lo: 0x80, hi: 0xbf}, + {value: 0x5500, lo: 0x80, hi: 0xbf}, // Block 0x78, offset 0x79 {value: 0x0000, lo: 0x09}, - {value: 0x3300, lo: 0x80, hi: 0x8d}, - {value: 0x3300, lo: 0x90, hi: 0x90}, - {value: 0x3300, lo: 0x92, hi: 0x92}, - {value: 0x3300, lo: 0x95, hi: 0x9e}, - {value: 0x3300, lo: 0xa0, hi: 0xa0}, - {value: 0x3300, lo: 0xa2, hi: 0xa2}, - {value: 0x3300, lo: 0xa5, hi: 0xa6}, - {value: 0x3300, lo: 0xaa, hi: 0xad}, - {value: 0x3300, lo: 0xb0, hi: 0xbf}, + {value: 0x5500, lo: 0x80, hi: 0x8d}, + {value: 0x5500, lo: 0x90, hi: 0x90}, + {value: 0x5500, lo: 0x92, hi: 0x92}, + {value: 0x5500, lo: 0x95, hi: 0x9e}, + {value: 0x5500, lo: 0xa0, hi: 0xa0}, + {value: 0x5500, lo: 0xa2, hi: 0xa2}, + {value: 0x5500, lo: 0xa5, hi: 0xa6}, + {value: 0x5500, lo: 0xaa, hi: 0xad}, + {value: 0x5500, lo: 0xb0, hi: 0xbf}, // Block 0x79, offset 0x7a {value: 0x0000, lo: 0x02}, - {value: 0x3300, lo: 0x80, hi: 0xad}, - {value: 0x3300, lo: 0xb0, hi: 0xbf}, + {value: 0x5500, lo: 0x80, hi: 0xad}, + {value: 0x5500, lo: 0xb0, hi: 0xbf}, // Block 0x7a, offset 0x7b {value: 0x0000, lo: 0x01}, - {value: 0x3300, lo: 0x80, hi: 0x99}, + {value: 0x5500, lo: 0x80, hi: 0x99}, // Block 0x7b, offset 0x7c {value: 0x0000, lo: 0x09}, - {value: 0x3000, lo: 0x80, hi: 0x86}, - {value: 0x3000, lo: 0x93, hi: 0x97}, - {value: 0x3300, lo: 0x9d, hi: 0x9d}, + {value: 0x5000, lo: 0x80, hi: 0x86}, + {value: 0x5000, lo: 0x93, hi: 0x97}, + {value: 0x5500, lo: 0x9d, hi: 0x9d}, {value: 0x001a, lo: 0x9e, hi: 0x9e}, - {value: 0x3300, lo: 0x9f, hi: 0x9f}, - {value: 0x3000, lo: 0xa0, hi: 0xa9}, - {value: 0x3300, lo: 0xaa, hi: 0xb6}, - {value: 0x3300, lo: 0xb8, hi: 0xbc}, - {value: 0x3300, lo: 0xbe, hi: 0xbe}, + {value: 0x5500, lo: 0x9f, hi: 0x9f}, + {value: 0x5000, lo: 0xa0, hi: 0xa9}, + {value: 0x5500, lo: 0xaa, hi: 0xb6}, + {value: 0x5500, lo: 0xb8, hi: 0xbc}, + {value: 0x5500, lo: 0xbe, hi: 0xbe}, // Block 0x7c, offset 0x7d {value: 0x0000, lo: 0x04}, - {value: 0x3300, lo: 0x80, hi: 0x81}, - {value: 0x3300, lo: 0x83, hi: 0x84}, - {value: 0x3300, lo: 0x86, hi: 0x8e}, - {value: 0x3000, lo: 0x8f, hi: 0xbf}, + {value: 0x5500, lo: 0x80, hi: 0x81}, + {value: 0x5500, lo: 0x83, hi: 0x84}, + {value: 0x5500, lo: 0x86, hi: 0x8e}, + {value: 0x5000, lo: 0x8f, hi: 0xbf}, // Block 0x7d, offset 0x7e {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x80, hi: 0xb1}, + {value: 0x5000, lo: 0x80, hi: 0xb1}, // Block 0x7e, offset 0x7f {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x93, hi: 0xbf}, + {value: 0x5000, lo: 0x93, hi: 0xbf}, // Block 0x7f, offset 0x80 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x80, hi: 0xbd}, + {value: 0x5000, lo: 0x80, hi: 0xbd}, // Block 0x80, offset 0x81 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x90, hi: 0xbf}, + {value: 0x5000, lo: 0x90, hi: 0xbf}, // Block 0x81, offset 0x82 {value: 0x0000, lo: 0x02}, - {value: 0x3000, lo: 0x80, hi: 0x8f}, - {value: 0x3000, lo: 0x92, hi: 0xbf}, + {value: 0x5000, lo: 0x80, hi: 0x8f}, + {value: 0x5000, lo: 0x92, hi: 0xbf}, // Block 0x82, offset 0x83 {value: 0x0000, lo: 0x02}, - {value: 0x3000, lo: 0x80, hi: 0x87}, - {value: 0x3000, lo: 0xb0, hi: 0xbc}, + {value: 0x5000, lo: 0x80, hi: 0x87}, + {value: 0x5000, lo: 0xb0, hi: 0xbc}, // Block 0x83, offset 0x84 {value: 0x0000, lo: 0x03}, - {value: 0x3000, lo: 0x90, hi: 0x99}, + {value: 0x5000, lo: 0x90, hi: 0x99}, {value: 0x00e6, lo: 0xa0, hi: 0xa6}, - {value: 0x3000, lo: 0xb0, hi: 0xbf}, + {value: 0x5000, lo: 0xb0, hi: 0xbf}, // Block 0x84, offset 0x85 {value: 0x0000, lo: 0x07}, - {value: 0x3000, lo: 0x80, hi: 0x84}, - {value: 0x3000, lo: 0x87, hi: 0x92}, - {value: 0x3000, lo: 0x94, hi: 0xa6}, - {value: 0x3000, lo: 0xa8, hi: 0xab}, - {value: 0x3000, lo: 0xb0, hi: 0xb2}, - {value: 0x3000, lo: 0xb4, hi: 0xb4}, - {value: 0x3000, lo: 0xb6, hi: 0xbf}, + {value: 0x5000, lo: 0x80, hi: 0x84}, + {value: 0x5000, lo: 0x87, hi: 0x92}, + {value: 0x5000, lo: 0x94, hi: 0xa6}, + {value: 0x5000, lo: 0xa8, hi: 0xab}, + {value: 0x5000, lo: 0xb0, hi: 0xb2}, + {value: 0x5000, lo: 0xb4, hi: 0xb4}, + {value: 0x5000, lo: 0xb6, hi: 0xbf}, // Block 0x85, offset 0x86 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x80, hi: 0xbc}, + {value: 0x5000, lo: 0x80, hi: 0xbc}, // Block 0x86, offset 0x87 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x81, hi: 0xbf}, + {value: 0x5000, lo: 0x81, hi: 0xbf}, // Block 0x87, offset 0x88 {value: 0x0000, lo: 0x06}, - {value: 0x3000, lo: 0x82, hi: 0x87}, - {value: 0x3000, lo: 0x8a, hi: 0x8f}, - {value: 0x3000, lo: 0x92, hi: 0x97}, - {value: 0x3000, lo: 0x9a, hi: 0x9c}, - {value: 0x3000, lo: 0xa0, hi: 0xa6}, - {value: 0x3000, lo: 0xa8, hi: 0xae}, + {value: 0x5000, lo: 0x82, hi: 0x87}, + {value: 0x5000, lo: 0x8a, hi: 0x8f}, + {value: 0x5000, lo: 0x92, hi: 0x97}, + {value: 0x5000, lo: 0x9a, hi: 0x9c}, + {value: 0x5000, lo: 0xa0, hi: 0xa6}, + {value: 0x5000, lo: 0xa8, hi: 0xae}, // Block 0x88, offset 0x89 {value: 0x0000, lo: 0x01}, {value: 0x00dc, lo: 0xbd, hi: 0xbd}, @@ -6594,7 +6594,7 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x0009, lo: 0xb9, hi: 0xba}, // Block 0x8b, offset 0x8c {value: 0x0000, lo: 0x06}, - {value: 0x3300, lo: 0x9e, hi: 0xa4}, + {value: 0x5500, lo: 0x9e, hi: 0xa4}, {value: 0x00d8, lo: 0xa5, hi: 0xa6}, {value: 0x0001, lo: 0xa7, hi: 0xa9}, {value: 0x00e2, lo: 0xad, hi: 0xad}, @@ -6606,75 +6606,75 @@ var charInfoSparseValues = [757]valueRange{ {value: 0x00e6, lo: 0x85, hi: 0x89}, {value: 0x00dc, lo: 0x8a, hi: 0x8b}, {value: 0x00e6, lo: 0xaa, hi: 0xad}, - {value: 0x3300, lo: 0xbb, hi: 0xbf}, + {value: 0x5500, lo: 0xbb, hi: 0xbf}, // Block 0x8d, offset 0x8e {value: 0x0000, lo: 0x01}, - {value: 0x3300, lo: 0x80, hi: 0x80}, + {value: 0x5500, lo: 0x80, hi: 0x80}, // Block 0x8e, offset 0x8f {value: 0x0000, lo: 0x01}, {value: 0x00e6, lo: 0x82, hi: 0x84}, // Block 0x8f, offset 0x90 {value: 0x0000, lo: 0x02}, - {value: 0x3000, lo: 0x80, hi: 0x94}, - {value: 0x3000, lo: 0x96, hi: 0xbf}, + {value: 0x5000, lo: 0x80, hi: 0x94}, + {value: 0x5000, lo: 0x96, hi: 0xbf}, // Block 0x90, offset 0x91 {value: 0x0000, lo: 0x08}, - {value: 0x3000, lo: 0x80, hi: 0x9c}, - {value: 0x3000, lo: 0x9e, hi: 0x9f}, - {value: 0x3000, lo: 0xa2, hi: 0xa2}, - {value: 0x3000, lo: 0xa5, hi: 0xa6}, - {value: 0x3000, lo: 0xa9, hi: 0xac}, - {value: 0x3000, lo: 0xae, hi: 0xb9}, - {value: 0x3000, lo: 0xbb, hi: 0xbb}, - {value: 0x3000, lo: 0xbd, hi: 0xbf}, + {value: 0x5000, lo: 0x80, hi: 0x9c}, + {value: 0x5000, lo: 0x9e, hi: 0x9f}, + {value: 0x5000, lo: 0xa2, hi: 0xa2}, + {value: 0x5000, lo: 0xa5, hi: 0xa6}, + {value: 0x5000, lo: 0xa9, hi: 0xac}, + {value: 0x5000, lo: 0xae, hi: 0xb9}, + {value: 0x5000, lo: 0xbb, hi: 0xbb}, + {value: 0x5000, lo: 0xbd, hi: 0xbf}, // Block 0x91, offset 0x92 {value: 0x0000, lo: 0x02}, - {value: 0x3000, lo: 0x80, hi: 0x83}, - {value: 0x3000, lo: 0x85, hi: 0xbf}, + {value: 0x5000, lo: 0x80, hi: 0x83}, + {value: 0x5000, lo: 0x85, hi: 0xbf}, // Block 0x92, offset 0x93 {value: 0x0000, lo: 0x06}, - {value: 0x3000, lo: 0x80, hi: 0x85}, - {value: 0x3000, lo: 0x87, hi: 0x8a}, - {value: 0x3000, lo: 0x8d, hi: 0x94}, - {value: 0x3000, lo: 0x96, hi: 0x9c}, - {value: 0x3000, lo: 0x9e, hi: 0xb9}, - {value: 0x3000, lo: 0xbb, hi: 0xbe}, + {value: 0x5000, lo: 0x80, hi: 0x85}, + {value: 0x5000, lo: 0x87, hi: 0x8a}, + {value: 0x5000, lo: 0x8d, hi: 0x94}, + {value: 0x5000, lo: 0x96, hi: 0x9c}, + {value: 0x5000, lo: 0x9e, hi: 0xb9}, + {value: 0x5000, lo: 0xbb, hi: 0xbe}, // Block 0x93, offset 0x94 {value: 0x0000, lo: 0x04}, - {value: 0x3000, lo: 0x80, hi: 0x84}, - {value: 0x3000, lo: 0x86, hi: 0x86}, - {value: 0x3000, lo: 0x8a, hi: 0x90}, - {value: 0x3000, lo: 0x92, hi: 0xbf}, + {value: 0x5000, lo: 0x80, hi: 0x84}, + {value: 0x5000, lo: 0x86, hi: 0x86}, + {value: 0x5000, lo: 0x8a, hi: 0x90}, + {value: 0x5000, lo: 0x92, hi: 0xbf}, // Block 0x94, offset 0x95 {value: 0x0000, lo: 0x02}, - {value: 0x3000, lo: 0x80, hi: 0xa5}, - {value: 0x3000, lo: 0xa8, hi: 0xbf}, + {value: 0x5000, lo: 0x80, hi: 0xa5}, + {value: 0x5000, lo: 0xa8, hi: 0xbf}, // Block 0x95, offset 0x96 {value: 0x0000, lo: 0x02}, - {value: 0x3000, lo: 0x80, hi: 0x8b}, - {value: 0x3000, lo: 0x8e, hi: 0xbf}, + {value: 0x5000, lo: 0x80, hi: 0x8b}, + {value: 0x5000, lo: 0x8e, hi: 0xbf}, // Block 0x96, offset 0x97 {value: 0x0000, lo: 0x03}, - {value: 0x3000, lo: 0x80, hi: 0x8a}, - {value: 0x3000, lo: 0x90, hi: 0xae}, - {value: 0x3000, lo: 0xb0, hi: 0xbf}, + {value: 0x5000, lo: 0x80, hi: 0x8a}, + {value: 0x5000, lo: 0x90, hi: 0xae}, + {value: 0x5000, lo: 0xb0, hi: 0xbf}, // Block 0x97, offset 0x98 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x80, hi: 0x8f}, + {value: 0x5000, lo: 0x80, hi: 0x8f}, // Block 0x98, offset 0x99 {value: 0x0000, lo: 0x01}, - {value: 0x3000, lo: 0x90, hi: 0x90}, + {value: 0x5000, lo: 0x90, hi: 0x90}, // Block 0x99, offset 0x9a {value: 0x0000, lo: 0x02}, - {value: 0x3000, lo: 0x80, hi: 0x82}, - {value: 0x3000, lo: 0x90, hi: 0xba}, + {value: 0x5000, lo: 0x80, hi: 0x82}, + {value: 0x5000, lo: 0x90, hi: 0xba}, // Block 0x9a, offset 0x9b {value: 0x0000, lo: 0x02}, - {value: 0x3000, lo: 0x80, hi: 0x88}, - {value: 0x3000, lo: 0x90, hi: 0x91}, + {value: 0x5000, lo: 0x80, hi: 0x88}, + {value: 0x5000, lo: 0x90, hi: 0x91}, // Block 0x9b, offset 0x9c {value: 0x0000, lo: 0x01}, - {value: 0x3300, lo: 0x80, hi: 0x9d}, + {value: 0x5500, lo: 0x80, hi: 0x9d}, } // charInfoLookup: 1152 bytes diff --git a/libgo/go/exp/signal/signal.go b/libgo/go/exp/signal/signal.go new file mode 100644 index 0000000..bce4530 --- /dev/null +++ b/libgo/go/exp/signal/signal.go @@ -0,0 +1,37 @@ +// 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 darwin freebsd linux netbsd openbsd + +// Package signal implements operating system-independent signal handling. +package signal + +import ( + "os" + "runtime" +) + +// Incoming is the global signal channel. +// All signals received by the program will be delivered to this channel. +var Incoming <-chan os.Signal + +func process(ch chan<- os.Signal) { + for { + var mask uint32 = runtime.Sigrecv() + for sig := uint(0); sig < 32; sig++ { + if mask&(1<<sig) != 0 { + ch <- os.UnixSignal(sig) + } + } + } +} + +func init() { + runtime.Siginit() + ch := make(chan os.Signal) // Done here so Incoming can have type <-chan Signal + Incoming = ch + go process(ch) +} + +// BUG(rsc): This package is unavailable on Plan 9 and Windows. diff --git a/libgo/go/exp/signal/signal_test.go b/libgo/go/exp/signal/signal_test.go new file mode 100644 index 0000000..a7cecb3 --- /dev/null +++ b/libgo/go/exp/signal/signal_test.go @@ -0,0 +1,24 @@ +// 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 darwin freebsd linux netbsd openbsd + +package signal + +import ( + "os" + "syscall" + "testing" +) + +const sighup = os.UnixSignal(syscall.SIGHUP) + +func TestSignal(t *testing.T) { + // Send this process a SIGHUP. + syscall.Syscall(syscall.SYS_KILL, uintptr(syscall.Getpid()), syscall.SIGHUP, 0) + + if sig := (<-Incoming).(os.UnixSignal); sig != sighup { + t.Errorf("signal was %v, want %v", sig, sighup) + } +} diff --git a/libgo/go/exp/types/gcimporter_test.go b/libgo/go/exp/types/gcimporter_test.go index 7475d35..912d467 100644 --- a/libgo/go/exp/types/gcimporter_test.go +++ b/libgo/go/exp/types/gcimporter_test.go @@ -31,7 +31,7 @@ func init() { gcPath = gcName return } - gcPath, _ = exec.LookPath(gcName) + gcPath = filepath.Join(runtime.GOROOT(), "/bin/tool/", gcName) } func compile(t *testing.T, dirname, filename string) { |