internal/number: preperation for CLDR 32
change index size
Change-Id: Iff47132d6d5d4c72abb1e8005fc0d1ca0eae2bd8
Reviewed-on: https://go-review.googlesource.com/82902
Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
diff --git a/internal/number/common.go b/internal/number/common.go
index e428a72..052876e 100644
--- a/internal/number/common.go
+++ b/internal/number/common.go
@@ -33,8 +33,19 @@
NumSymbolTypes
)
+const hasNonLatnMask = 0x8000
+
+// symOffset is an offset into altSymData if the bit indicated by hasNonLatnMask
+// is not 0 (with this bit masked out), and an offset into symIndex otherwise.
+//
+// TODO: this type can be a byte again if we use an indirection into altsymData
+// and introduce an alt -> offset slice (the length of this will be number of
+// alternatives plus 1). This also allows getting rid of the compactTag field
+// in altSymData. In total this will save about 1K.
+type symOffset uint16
+
type altSymData struct {
compactTag uint16
+ symIndex symOffset
system system
- symIndex byte
}
diff --git a/internal/number/gen.go b/internal/number/gen.go
index 598c96c..48f180f 100644
--- a/internal/number/gen.go
+++ b/internal/number/gen.go
@@ -255,10 +255,10 @@
// resolveSymbolIndex gets the index from the closest matching locale,
// including the locale itself.
- resolveSymbolIndex := func(langIndex int, ns system) byte {
+ resolveSymbolIndex := func(langIndex int, ns system) symOffset {
for {
if sym := symbolMap[key{langIndex, ns}]; sym != nil {
- return byte(m[*sym])
+ return symOffset(m[*sym])
}
if langIndex == 0 {
return 0 // und, latn
@@ -270,7 +270,7 @@
// Create an index with the symbols for each locale for the latn numbering
// system. If this is not the default, or the only one, for a locale, we
// will overwrite the value later.
- var langToDefaults [language.NumCompactTags]byte
+ var langToDefaults [language.NumCompactTags]symOffset
for _, l := range data.Locales() {
langIndex, _ := language.CompactIndex(language.MustParse(l))
langToDefaults[langIndex] = resolveSymbolIndex(langIndex, 0)
@@ -300,8 +300,8 @@
for _, l := range data.Locales() {
langIndex, _ := language.CompactIndex(language.MustParse(l))
start := len(langToAlt)
- if start > 0x7F {
- log.Fatal("Number of alternative assignments > 0x7F")
+ if start >= hasNonLatnMask {
+ log.Fatalf("Number of alternative assignments >= %x", hasNonLatnMask)
}
// Create the entry for the default value.
def := defaults[langIndex]
@@ -328,7 +328,7 @@
langToAlt = langToAlt[:start]
} else {
// Overwrite the entry in langToDefaults.
- langToDefaults[langIndex] = 0x80 | byte(start)
+ langToDefaults[langIndex] = hasNonLatnMask | symOffset(start)
}
}
w.WriteComment(`
diff --git a/internal/number/gen_common.go b/internal/number/gen_common.go
index c4b791c..f88b838 100644
--- a/internal/number/gen_common.go
+++ b/internal/number/gen_common.go
@@ -37,8 +37,19 @@
NumSymbolTypes
)
+const hasNonLatnMask = 0x8000
+
+// symOffset is an offset into altSymData if the bit indicated by hasNonLatnMask
+// is not 0 (with this bit masked out), and an offset into symIndex otherwise.
+//
+// TODO: this type can be a byte again if we use an indirection into altsymData
+// and introduce an alt -> offset slice (the length of this will be number of
+// alternatives plus 1). This also allows getting rid of the compactTag field
+// in altSymData. In total this will save about 1K.
+type symOffset uint16
+
type altSymData struct {
compactTag uint16
+ symIndex symOffset
system system
- symIndex byte
}
diff --git a/internal/number/number.go b/internal/number/number.go
index 336c0d8..2a21f07 100644
--- a/internal/number/number.go
+++ b/internal/number/number.go
@@ -17,7 +17,7 @@
// Info holds number formatting configuration data.
type Info struct {
system systemData // numbering system information
- symIndex byte // index to symbols
+ symIndex symOffset // index to symbols
}
// InfoFromLangID returns a Info for the given compact language identifier and
@@ -26,16 +26,16 @@
func InfoFromLangID(compactIndex int, numberSystem string) Info {
p := langToDefaults[compactIndex]
// Lookup the entry for the language.
- pSymIndex := byte(0) // Default: Latin, default symbols
+ pSymIndex := symOffset(0) // Default: Latin, default symbols
system, ok := systemMap[numberSystem]
if !ok {
// Take the value for the default numbering system. This is by far the
// most common case as an alternative numbering system is hardly used.
- if p&0x80 == 0 { // Latn digits.
+ if p&hasNonLatnMask == 0 { // Latn digits.
pSymIndex = p
} else { // Non-Latn or multiple numbering systems.
// Take the first entry from the alternatives list.
- data := langToAlt[p&^0x80]
+ data := langToAlt[p&^hasNonLatnMask]
pSymIndex = data.symIndex
system = data.system
}
@@ -44,21 +44,7 @@
ns := system
outerLoop:
for ; ; p = langToDefaults[langIndex] {
- if langIndex == 0 {
- // The CLDR root defines full symbol information for all
- // numbering systems (even though mostly by means of
- // aliases).
- // Fall back to the default entry for Latn if there is
- // no data for the numbering system of this language.
- if ns == 0 {
- break
- }
- // Fall back to Latin and start from the original
- // language. See
- // http://unicode.org/reports/tr35/#Locale_Inheritance.
- ns = numLatn
- langIndex = compactIndex
- } else if p&0x80 == 0 {
+ if p&hasNonLatnMask == 0 {
if ns == 0 {
// The index directly points to the symbol data.
pSymIndex = p
@@ -68,8 +54,24 @@
langIndex = int(internal.Parent[langIndex])
} else {
// The index points to a list of symbol data indexes.
- for _, e := range langToAlt[p&^0x80:] {
+ for _, e := range langToAlt[p&^hasNonLatnMask:] {
if int(e.compactTag) != langIndex {
+ if langIndex == 0 {
+ // The CLDR root defines full symbol information for
+ // all numbering systems (even though mostly by
+ // means of aliases). Fall back to the default entry
+ // for Latn if there is no data for the numbering
+ // system of this language.
+ if ns == 0 {
+ break
+ }
+ // Fall back to Latin and start from the original
+ // language. See
+ // http://unicode.org/reports/tr35/#Locale_Inheritance.
+ ns = numLatn
+ langIndex = compactIndex
+ continue outerLoop
+ }
// Fall back to parent.
langIndex = int(internal.Parent[langIndex])
} else if e.system == ns {
diff --git a/internal/number/tables.go b/internal/number/tables.go
index 286712b..b50fd64 100644
--- a/internal/number/tables.go
+++ b/internal/number/tables.go
@@ -329,192 +329,192 @@
// langToDefaults maps a compact language index to the default numbering system
// and default symbol set
-var langToDefaults = [754]uint8{
+var langToDefaults = [754]symOffset{
// Entry 0 - 3F
- 0x80, 0x06, 0x13, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x83, 0x02, 0x02, 0x02,
- 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02,
- 0x02, 0x04, 0x02, 0x04, 0x02, 0x02, 0x02, 0x03,
- 0x02, 0x00, 0x85, 0x00, 0x00, 0x00, 0x86, 0x05,
- 0x06, 0x06, 0x06, 0x06, 0x06, 0x01, 0x01, 0x01,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00,
+ 0x8000, 0x0006, 0x0013, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x8003, 0x0002, 0x0002, 0x0002,
+ 0x0002, 0x0003, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
+ 0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0003, 0x0002, 0x0002,
+ 0x0002, 0x0004, 0x0002, 0x0004, 0x0002, 0x0002, 0x0002, 0x0003,
+ 0x0002, 0x0000, 0x8005, 0x0000, 0x0000, 0x0000, 0x8006, 0x0005,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0000,
// Entry 40 - 7F
- 0x00, 0x00, 0x89, 0x00, 0x00, 0x8a, 0x00, 0x00,
- 0x8c, 0x01, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06,
- 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08,
- 0x00, 0x00, 0x00, 0x00, 0x8e, 0x09, 0x09, 0x90,
- 0x01, 0x01, 0x01, 0x93, 0x00, 0x0a, 0x0a, 0x0a,
- 0x00, 0x00, 0x0b, 0x07, 0x0b, 0x0c, 0x0b, 0x0b,
- 0x0c, 0x0b, 0x0d, 0x0d, 0x0b, 0x0b, 0x01, 0x01,
- 0x00, 0x01, 0x01, 0x95, 0x00, 0x00, 0x00, 0x0e,
+ 0x0000, 0x0000, 0x8009, 0x0000, 0x0000, 0x800a, 0x0000, 0x0000,
+ 0x800c, 0x0001, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0008, 0x0008,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x800e, 0x0009, 0x0009, 0x8010,
+ 0x0001, 0x0001, 0x0001, 0x8013, 0x0000, 0x000a, 0x000a, 0x000a,
+ 0x0000, 0x0000, 0x000b, 0x0007, 0x000b, 0x000c, 0x000b, 0x000b,
+ 0x000c, 0x000b, 0x000d, 0x000d, 0x000b, 0x000b, 0x0001, 0x0001,
+ 0x0000, 0x0001, 0x0001, 0x8015, 0x0000, 0x0000, 0x0000, 0x000e,
// Entry 80 - BF
- 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x06,
- 0x00, 0x00, 0x00, 0x0b, 0x10, 0x00, 0x06, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00,
- 0x00, 0x00, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x00,
- 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x000e, 0x000e, 0x000f, 0x000f, 0x000f, 0x0000, 0x0000, 0x0006,
+ 0x0000, 0x0000, 0x0000, 0x000b, 0x0010, 0x0000, 0x0006, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x000b, 0x0000, 0x000a, 0x0000, 0x0000,
+ 0x0011, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
// Entry C0 - FF
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00,
- 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x14, 0x14,
- 0x06, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06,
- 0x01, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x00,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0000, 0x0000,
+ 0x000f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0014, 0x0014,
+ 0x0006, 0x0000, 0x0006, 0x0006, 0x0000, 0x0000, 0x0006, 0x0006,
+ 0x0001, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000,
// Entry 100 - 13F
- 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
- 0x06, 0x00, 0x00, 0x06, 0x06, 0x15, 0x15, 0x06,
- 0x06, 0x01, 0x01, 0x97, 0x16, 0x16, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x17, 0x17, 0x00, 0x00, 0x18,
- 0x18, 0x18, 0x9a, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x06, 0x06, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x0000, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0000,
+ 0x0006, 0x0000, 0x0000, 0x0006, 0x0006, 0x0015, 0x0015, 0x0006,
+ 0x0006, 0x0001, 0x0001, 0x8017, 0x0016, 0x0016, 0x0001, 0x0001,
+ 0x0001, 0x0001, 0x0001, 0x0017, 0x0017, 0x0000, 0x0000, 0x0018,
+ 0x0018, 0x0018, 0x801a, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0006, 0x0006, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
// Entry 140 - 17F
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x9d,
- 0x00, 0x06, 0x06, 0x19, 0x19, 0x19, 0x19, 0xa0,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x1a, 0x1a, 0x00, 0x00,
- 0x06, 0x06, 0x06, 0x0b, 0x0b, 0x01, 0x01, 0x1b,
- 0x1b, 0x0a, 0x0a, 0xa2, 0x00, 0x00, 0x00, 0x06,
+ 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0000, 0x801d,
+ 0x0000, 0x0006, 0x0006, 0x0019, 0x0019, 0x0019, 0x0019, 0x8020,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x001a, 0x001a, 0x0000, 0x0000,
+ 0x0006, 0x0006, 0x0006, 0x000b, 0x000b, 0x0001, 0x0001, 0x001b,
+ 0x001b, 0x000a, 0x000a, 0x8022, 0x0000, 0x0000, 0x0000, 0x0006,
// Entry 180 - 1BF
- 0x06, 0x06, 0x1c, 0x06, 0x06, 0x06, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x1d,
- 0x1d, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x01, 0x0d, 0x0d, 0x00, 0x00, 0x1e,
- 0x1e, 0x06, 0x06, 0x1f, 0x1f, 0x00, 0x00, 0x06,
- 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xa5, 0x1a, 0x00, 0x00, 0x01, 0x01, 0x20, 0x20,
- 0x00, 0x00, 0x00, 0x21, 0x21, 0x00, 0x00, 0x06,
+ 0x0006, 0x0006, 0x001c, 0x0006, 0x0006, 0x0006, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0006, 0x0006, 0x0000, 0x0000, 0x0000, 0x001d,
+ 0x001d, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0001, 0x0001, 0x000d, 0x000d, 0x0000, 0x0000, 0x001e,
+ 0x001e, 0x0006, 0x0006, 0x001f, 0x001f, 0x0000, 0x0000, 0x0006,
+ 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8025, 0x001a, 0x0000, 0x0000, 0x0001, 0x0001, 0x0020, 0x0020,
+ 0x0000, 0x0000, 0x0000, 0x0021, 0x0021, 0x0000, 0x0000, 0x0006,
// Entry 1C0 - 1FF
- 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06,
- 0x06, 0x06, 0x22, 0x22, 0xa7, 0x00, 0x00, 0x15,
- 0x15, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x23,
- 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0d,
- 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06,
- 0x00, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x06,
- 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0xaa, 0x24,
- 0xac, 0x00, 0x00, 0x00, 0x00, 0xad, 0x14, 0x14,
+ 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0022, 0x0022, 0x8027, 0x0000, 0x0000, 0x0015,
+ 0x0015, 0x0006, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0023,
+ 0x0023, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x000d,
+ 0x0000, 0x0000, 0x0006, 0x0006, 0x0000, 0x0000, 0x0006, 0x0006,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x8029, 0x0000, 0x0000, 0x0006,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x802a, 0x0024,
+ 0x802c, 0x0000, 0x0000, 0x0000, 0x0000, 0x802d, 0x0014, 0x0014,
// Entry 200 - 23F
- 0x00, 0x00, 0x06, 0x06, 0x06, 0xb0, 0x00, 0x00,
- 0xb1, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
- 0x01, 0x01, 0x14, 0x14, 0x06, 0x06, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x25, 0x25, 0x25, 0xb4,
- 0xb6, 0x1a, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
- 0x01, 0xb8, 0x26, 0x06, 0x01, 0x06, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x8030, 0x0000, 0x0000,
+ 0x8031, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0001, 0x0001, 0x0014, 0x0014, 0x0006, 0x0006, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0025, 0x0025, 0x0025, 0x8034,
+ 0x8036, 0x001a, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x8038, 0x0026, 0x0006, 0x0001, 0x0006, 0x0001, 0x0001,
+ 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
// Entry 240 - 27F
- 0x00, 0x06, 0x00, 0x00, 0x19, 0x19, 0x06, 0x06,
- 0x06, 0x06, 0x06, 0x00, 0x00, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x06, 0x06, 0x00, 0x00,
- 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29,
- 0x29, 0x29, 0x29, 0x06, 0x06, 0x0d, 0x0d, 0x06,
- 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, 0x2a, 0x2a,
- 0x2b, 0x2b, 0x2c, 0x2c, 0x00, 0x00, 0x00, 0x2d,
- 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0000, 0x0006, 0x0000, 0x0000, 0x0019, 0x0019, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0000, 0x0000, 0x0027, 0x0027, 0x0027,
+ 0x0027, 0x0027, 0x0027, 0x0027, 0x0006, 0x0006, 0x0000, 0x0000,
+ 0x0028, 0x0028, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0029,
+ 0x0029, 0x0029, 0x0029, 0x0006, 0x0006, 0x000d, 0x000d, 0x0006,
+ 0x0006, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x002a, 0x002a,
+ 0x002b, 0x002b, 0x002c, 0x002c, 0x0000, 0x0000, 0x0000, 0x002d,
+ 0x002d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
// Entry 280 - 2BF
- 0x00, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06,
- 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
- 0x00, 0x00, 0x00, 0xba, 0x20, 0x20, 0x20, 0x00,
- 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x00,
- 0x2f, 0x2f, 0x06, 0x06, 0x06, 0x00, 0x0d, 0x0d,
- 0x01, 0x01, 0x00, 0x00, 0x30, 0x30, 0xbd, 0xbf,
+ 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0000, 0x0000, 0x0000, 0x803a, 0x0020, 0x0020, 0x0020, 0x0000,
+ 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002e, 0x002e, 0x0000,
+ 0x002f, 0x002f, 0x0006, 0x0006, 0x0006, 0x0000, 0x000d, 0x000d,
+ 0x0001, 0x0001, 0x0000, 0x0000, 0x0030, 0x0030, 0x803d, 0x803f,
// Entry 2C0 - 2FF
- 0x1a, 0xc0, 0xc2, 0x26, 0xc4, 0x32, 0x31, 0x31,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x00,
- 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x34, 0x34, 0x01, 0x01, 0xc6, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x34, 0x34, 0x34, 0x34,
- 0x00, 0x00,
-} // Size: 754 bytes
+ 0x001a, 0x8040, 0x8042, 0x0026, 0x8044, 0x0032, 0x0031, 0x0031,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0033, 0x0033, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0034, 0x0034, 0x0001, 0x0001, 0x8046, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x0000, 0x0000,
+} // Size: 1508 bytes
// langToAlt is a list of numbering system and symbol set pairs, sorted and
// marked by compact language index.
var langToAlt = []altSymData{ // 73 elements
- 1: {compactTag: 0x0, system: 0x3, symIndex: 0x35},
- 2: {compactTag: 0x0, system: 0x4, symIndex: 0x3b},
- 3: {compactTag: 0xc, system: 0x3, symIndex: 0x36},
- 4: {compactTag: 0xc, system: 0x0, symIndex: 0x2},
- 5: {compactTag: 0x2a, system: 0x6, symIndex: 0x0},
- 6: {compactTag: 0x2e, system: 0x0, symIndex: 0x5},
- 7: {compactTag: 0x2e, system: 0x3, symIndex: 0x37},
- 8: {compactTag: 0x2e, system: 0x4, symIndex: 0x3b},
- 9: {compactTag: 0x42, system: 0x6, symIndex: 0x0},
- 10: {compactTag: 0x45, system: 0x0, symIndex: 0x0},
- 11: {compactTag: 0x45, system: 0x36, symIndex: 0x45},
- 12: {compactTag: 0x48, system: 0x0, symIndex: 0x1},
- 13: {compactTag: 0x48, system: 0x3, symIndex: 0x35},
- 14: {compactTag: 0x5c, system: 0x3, symIndex: 0x37},
- 15: {compactTag: 0x5c, system: 0x0, symIndex: 0x9},
- 16: {compactTag: 0x5f, system: 0x0, symIndex: 0x1},
- 17: {compactTag: 0x5f, system: 0x3, symIndex: 0x35},
- 18: {compactTag: 0x5f, system: 0x4, symIndex: 0x3b},
- 19: {compactTag: 0x63, system: 0x0, symIndex: 0x0},
- 20: {compactTag: 0x63, system: 0x3, symIndex: 0x35},
- 21: {compactTag: 0x7b, system: 0x36, symIndex: 0x46},
- 22: {compactTag: 0x7b, system: 0x0, symIndex: 0x0},
- 23: {compactTag: 0x113, system: 0x4, symIndex: 0x3c},
- 24: {compactTag: 0x113, system: 0x0, symIndex: 0x16},
- 25: {compactTag: 0x113, system: 0x3, symIndex: 0x37},
- 26: {compactTag: 0x122, system: 0x0, symIndex: 0x1},
- 27: {compactTag: 0x122, system: 0x3, symIndex: 0x38},
- 28: {compactTag: 0x122, system: 0x4, symIndex: 0x3d},
- 29: {compactTag: 0x157, system: 0x0, symIndex: 0x0},
- 30: {compactTag: 0x157, system: 0x3, symIndex: 0x37},
- 31: {compactTag: 0x157, system: 0x4, symIndex: 0x3b},
- 32: {compactTag: 0x15f, system: 0x0, symIndex: 0x0},
- 33: {compactTag: 0x15f, system: 0x3, symIndex: 0x35},
- 34: {compactTag: 0x17b, system: 0x0, symIndex: 0x0},
- 35: {compactTag: 0x17b, system: 0x3, symIndex: 0x35},
- 36: {compactTag: 0x17b, system: 0x4, symIndex: 0x3b},
- 37: {compactTag: 0x1b0, system: 0x4, symIndex: 0x3b},
- 38: {compactTag: 0x1b0, system: 0x0, symIndex: 0x1a},
- 39: {compactTag: 0x1cc, system: 0x4, symIndex: 0x3b},
- 40: {compactTag: 0x1cc, system: 0x0, symIndex: 0x0},
- 41: {compactTag: 0x1ec, system: 0xb, symIndex: 0x0},
- 42: {compactTag: 0x1f6, system: 0x23, symIndex: 0x44},
- 43: {compactTag: 0x1f6, system: 0x0, symIndex: 0x24},
- 44: {compactTag: 0x1f8, system: 0x4, symIndex: 0x3b},
- 45: {compactTag: 0x1fd, system: 0x0, symIndex: 0x14},
- 46: {compactTag: 0x1fd, system: 0x3, symIndex: 0x39},
- 47: {compactTag: 0x1fd, system: 0x4, symIndex: 0x3e},
- 48: {compactTag: 0x205, system: 0xb, symIndex: 0x0},
- 49: {compactTag: 0x208, system: 0x0, symIndex: 0x6},
- 50: {compactTag: 0x208, system: 0x3, symIndex: 0x35},
- 51: {compactTag: 0x208, system: 0x4, symIndex: 0x3b},
- 52: {compactTag: 0x227, system: 0x0, symIndex: 0x0},
- 53: {compactTag: 0x227, system: 0x4, symIndex: 0x3f},
- 54: {compactTag: 0x228, system: 0x4, symIndex: 0x3b},
- 55: {compactTag: 0x228, system: 0x0, symIndex: 0x1a},
- 56: {compactTag: 0x231, system: 0x4, symIndex: 0x3b},
- 57: {compactTag: 0x231, system: 0x0, symIndex: 0x26},
- 58: {compactTag: 0x293, system: 0x0, symIndex: 0x20},
- 59: {compactTag: 0x293, system: 0x3, symIndex: 0x3a},
- 60: {compactTag: 0x293, system: 0x4, symIndex: 0x40},
- 61: {compactTag: 0x2be, system: 0x0, symIndex: 0x1a},
- 62: {compactTag: 0x2be, system: 0x4, symIndex: 0x41},
- 63: {compactTag: 0x2bf, system: 0x4, symIndex: 0x41},
- 64: {compactTag: 0x2c1, system: 0x0, symIndex: 0x31},
- 65: {compactTag: 0x2c1, system: 0x4, symIndex: 0x42},
- 66: {compactTag: 0x2c2, system: 0x4, symIndex: 0x3b},
- 67: {compactTag: 0x2c2, system: 0x0, symIndex: 0x26},
- 68: {compactTag: 0x2c4, system: 0x0, symIndex: 0x32},
- 69: {compactTag: 0x2c4, system: 0x4, symIndex: 0x43},
- 70: {compactTag: 0x2e6, system: 0x0, symIndex: 0x0},
- 71: {compactTag: 0x2e6, system: 0x3, symIndex: 0x35},
- 72: {compactTag: 0x2e6, system: 0x4, symIndex: 0x3b},
-} // Size: 316 bytes
+ 1: {compactTag: 0x0, symIndex: 0x35, system: 0x3},
+ 2: {compactTag: 0x0, symIndex: 0x3b, system: 0x4},
+ 3: {compactTag: 0xc, symIndex: 0x36, system: 0x3},
+ 4: {compactTag: 0xc, symIndex: 0x2, system: 0x0},
+ 5: {compactTag: 0x2a, symIndex: 0x0, system: 0x6},
+ 6: {compactTag: 0x2e, symIndex: 0x5, system: 0x0},
+ 7: {compactTag: 0x2e, symIndex: 0x37, system: 0x3},
+ 8: {compactTag: 0x2e, symIndex: 0x3b, system: 0x4},
+ 9: {compactTag: 0x42, symIndex: 0x0, system: 0x6},
+ 10: {compactTag: 0x45, symIndex: 0x0, system: 0x0},
+ 11: {compactTag: 0x45, symIndex: 0x45, system: 0x36},
+ 12: {compactTag: 0x48, symIndex: 0x1, system: 0x0},
+ 13: {compactTag: 0x48, symIndex: 0x35, system: 0x3},
+ 14: {compactTag: 0x5c, symIndex: 0x37, system: 0x3},
+ 15: {compactTag: 0x5c, symIndex: 0x9, system: 0x0},
+ 16: {compactTag: 0x5f, symIndex: 0x1, system: 0x0},
+ 17: {compactTag: 0x5f, symIndex: 0x35, system: 0x3},
+ 18: {compactTag: 0x5f, symIndex: 0x3b, system: 0x4},
+ 19: {compactTag: 0x63, symIndex: 0x0, system: 0x0},
+ 20: {compactTag: 0x63, symIndex: 0x35, system: 0x3},
+ 21: {compactTag: 0x7b, symIndex: 0x46, system: 0x36},
+ 22: {compactTag: 0x7b, symIndex: 0x0, system: 0x0},
+ 23: {compactTag: 0x113, symIndex: 0x3c, system: 0x4},
+ 24: {compactTag: 0x113, symIndex: 0x16, system: 0x0},
+ 25: {compactTag: 0x113, symIndex: 0x37, system: 0x3},
+ 26: {compactTag: 0x122, symIndex: 0x1, system: 0x0},
+ 27: {compactTag: 0x122, symIndex: 0x38, system: 0x3},
+ 28: {compactTag: 0x122, symIndex: 0x3d, system: 0x4},
+ 29: {compactTag: 0x157, symIndex: 0x0, system: 0x0},
+ 30: {compactTag: 0x157, symIndex: 0x37, system: 0x3},
+ 31: {compactTag: 0x157, symIndex: 0x3b, system: 0x4},
+ 32: {compactTag: 0x15f, symIndex: 0x0, system: 0x0},
+ 33: {compactTag: 0x15f, symIndex: 0x35, system: 0x3},
+ 34: {compactTag: 0x17b, symIndex: 0x0, system: 0x0},
+ 35: {compactTag: 0x17b, symIndex: 0x35, system: 0x3},
+ 36: {compactTag: 0x17b, symIndex: 0x3b, system: 0x4},
+ 37: {compactTag: 0x1b0, symIndex: 0x3b, system: 0x4},
+ 38: {compactTag: 0x1b0, symIndex: 0x1a, system: 0x0},
+ 39: {compactTag: 0x1cc, symIndex: 0x3b, system: 0x4},
+ 40: {compactTag: 0x1cc, symIndex: 0x0, system: 0x0},
+ 41: {compactTag: 0x1ec, symIndex: 0x0, system: 0xb},
+ 42: {compactTag: 0x1f6, symIndex: 0x44, system: 0x23},
+ 43: {compactTag: 0x1f6, symIndex: 0x24, system: 0x0},
+ 44: {compactTag: 0x1f8, symIndex: 0x3b, system: 0x4},
+ 45: {compactTag: 0x1fd, symIndex: 0x14, system: 0x0},
+ 46: {compactTag: 0x1fd, symIndex: 0x39, system: 0x3},
+ 47: {compactTag: 0x1fd, symIndex: 0x3e, system: 0x4},
+ 48: {compactTag: 0x205, symIndex: 0x0, system: 0xb},
+ 49: {compactTag: 0x208, symIndex: 0x6, system: 0x0},
+ 50: {compactTag: 0x208, symIndex: 0x35, system: 0x3},
+ 51: {compactTag: 0x208, symIndex: 0x3b, system: 0x4},
+ 52: {compactTag: 0x227, symIndex: 0x0, system: 0x0},
+ 53: {compactTag: 0x227, symIndex: 0x3f, system: 0x4},
+ 54: {compactTag: 0x228, symIndex: 0x3b, system: 0x4},
+ 55: {compactTag: 0x228, symIndex: 0x1a, system: 0x0},
+ 56: {compactTag: 0x231, symIndex: 0x3b, system: 0x4},
+ 57: {compactTag: 0x231, symIndex: 0x26, system: 0x0},
+ 58: {compactTag: 0x293, symIndex: 0x20, system: 0x0},
+ 59: {compactTag: 0x293, symIndex: 0x3a, system: 0x3},
+ 60: {compactTag: 0x293, symIndex: 0x40, system: 0x4},
+ 61: {compactTag: 0x2be, symIndex: 0x1a, system: 0x0},
+ 62: {compactTag: 0x2be, symIndex: 0x41, system: 0x4},
+ 63: {compactTag: 0x2bf, symIndex: 0x41, system: 0x4},
+ 64: {compactTag: 0x2c1, symIndex: 0x31, system: 0x0},
+ 65: {compactTag: 0x2c1, symIndex: 0x42, system: 0x4},
+ 66: {compactTag: 0x2c2, symIndex: 0x3b, system: 0x4},
+ 67: {compactTag: 0x2c2, symIndex: 0x26, system: 0x0},
+ 68: {compactTag: 0x2c4, symIndex: 0x32, system: 0x0},
+ 69: {compactTag: 0x2c4, symIndex: 0x43, system: 0x4},
+ 70: {compactTag: 0x2e6, symIndex: 0x0, system: 0x0},
+ 71: {compactTag: 0x2e6, symIndex: 0x35, system: 0x3},
+ 72: {compactTag: 0x2e6, symIndex: 0x3b, system: 0x4},
+} // Size: 462 bytes
var tagToDecimal = []uint8{ // 754 elements
// Entry 0 - 3F
@@ -1151,4 +1151,4 @@
0x0},
Flags: 0x0}}
-// Total table size 7101 bytes (6KiB); checksum: 5190D0B3
+// Total table size 8001 bytes (7KiB); checksum: F318E707