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