KannadaFormatter.java
3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/*
* Decompiled with CFR 0_118.
*/
package com.adobe.fontengine.inlineformatting.infontformatting;
import com.adobe.fontengine.inlineformatting.AttributedRun;
import com.adobe.fontengine.inlineformatting.infontformatting.IndicFormatter;
public class KannadaFormatter
extends IndicFormatter {
protected int splitVowelsAndNormalize(AttributedRun run, int start, int limit) {
block7 : while (start < limit) {
int usv = run.elementAt(start);
switch (usv) {
case 3264: {
run.replace(start, new int[]{3263, 3285});
++limit;
start += 2;
continue block7;
}
case 3271: {
run.replace(start, new int[]{3270, 3285});
++limit;
start += 2;
continue block7;
}
case 3272: {
run.replace(start, new int[]{3270, 3286});
++limit;
start += 2;
continue block7;
}
case 3274: {
run.replace(start, new int[]{3270, 3266});
++limit;
start += 2;
continue block7;
}
case 3275: {
run.replace(start, new int[]{3270, 3266, 3285});
limit += 2;
start += 3;
continue block7;
}
}
++start;
}
return limit;
}
protected int nukta() {
return 3260;
}
protected int virama() {
return 3277;
}
protected boolean isConsonant(int usv) {
return 3221 <= usv && usv <= 3257 || 9676 == usv;
}
protected boolean hasNukta(int usv) {
return false;
}
protected int removeNukta(int usv) {
return usv;
}
protected boolean isMark(int usv) {
return 3073 <= usv && usv <= 3075 || 3260 == usv || 3262 <= usv && usv <= 3286;
}
protected boolean isIndependentVowel(int usv) {
return 3205 <= usv && usv <= 3220 || 9676 == usv;
}
protected IndicFormatter.Position getPosition(int usv) {
switch (usv) {
case 3262:
case 3263:
case 3270:
case 3276: {
return IndicFormatter.Position.topMatra;
}
case 3265:
case 3266:
case 3267:
case 3268:
case 3285:
case 3286: {
return IndicFormatter.Position.rightMatra;
}
case 3073:
case 3074:
case 3075: {
return IndicFormatter.Position.rightOther;
}
}
return IndicFormatter.Position.any;
}
protected IndicFormatter.Shape rephLike(int usv) {
if (usv == 3248) {
return IndicFormatter.Shape.rephVowel;
}
return IndicFormatter.Shape.any;
}
protected boolean subjoins(int usv) {
return this.isConsonant(usv);
}
protected boolean postjoins(int usv) {
return false;
}
protected boolean postjoinsIndependentVowels(int usv) {
return false;
}
}