1 // Copyright 2015 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
9 // Class is the Unicode BiDi class. Each rune has a single class.
13 L Class = iota // LeftToRight
16 ES // EuropeanSeparator
17 ET // EuropeanTerminator
20 B // ParagraphSeparator
27 Control // Control LRO - PDI
31 LRO // LeftToRightOverride
32 RLO // RightToLeftOverride
33 LRE // LeftToRightEmbedding
34 RLE // RightToLeftEmbedding
35 PDF // PopDirectionalFormat
36 LRI // LeftToRightIsolate
37 RLI // RightToLeftIsolate
38 FSI // FirstStrongIsolate
39 PDI // PopDirectionalIsolate
41 unknownClass = ^Class(0)
44 var controlToClass = map[rune]Class{
45 0x202D: LRO, // LeftToRightOverride,
46 0x202E: RLO, // RightToLeftOverride,
47 0x202A: LRE, // LeftToRightEmbedding,
48 0x202B: RLE, // RightToLeftEmbedding,
49 0x202C: PDF, // PopDirectionalFormat,
50 0x2066: LRI, // LeftToRightIsolate,
51 0x2067: RLI, // RightToLeftIsolate,
52 0x2068: FSI, // FirstStrongIsolate,
53 0x2069: PDI, // PopDirectionalIsolate,
56 // A trie entry has the following bits:
57 // 7..5 XOR mask for brackets
58 // 4 1: Bracket open, 0: Bracket close