BengaliFormatter.java
3.47 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
124
125
126
127
128
129
130
131
132
133
/*
* Decompiled with CFR 0_118.
*/
package com.adobe.fontengine.inlineformatting.infontformatting;
import com.adobe.fontengine.inlineformatting.AttributedRun;
import com.adobe.fontengine.inlineformatting.infontformatting.IndicFormatter;
final class BengaliFormatter
extends IndicFormatter {
BengaliFormatter() {
}
protected int splitVowelsAndNormalize(AttributedRun run, int start, int limit) {
block4 : while (start < limit) {
int usv = run.elementAt(start);
switch (usv) {
case 2507: {
run.replace(start, new int[]{2503, 2494});
++limit;
start += 2;
continue block4;
}
case 2508: {
run.replace(start, new int[]{2503, 2519});
++limit;
start += 2;
continue block4;
}
}
++start;
}
return limit;
}
protected int nukta() {
return 2492;
}
protected int virama() {
return 2509;
}
protected boolean isSatelliteWhenInitial(int usv) {
return usv == 2480;
}
protected boolean isConsonant(int usv) {
return 2453 <= usv && usv <= 2489 || 2524 <= usv && usv <= 2529 || 2544 <= usv && usv <= 2544 || 9676 == usv;
}
protected boolean hasNukta(int usv) {
return 2524 == usv || 2525 == usv || 2527 == usv;
}
protected int removeNukta(int usv) {
switch (usv) {
case 2524: {
return 2465;
}
case 2525: {
return 2466;
}
case 2527: {
return 2479;
}
}
return usv;
}
protected boolean isMark(int usv) {
return 2494 <= usv && usv <= 2508 || 2530 <= usv && usv <= 2531 || 2433 <= usv && usv <= 2435 || 2519 <= usv && usv <= 2519;
}
protected boolean isIndependentVowel(int usv) {
return 2437 <= usv && usv <= 2452 || 2530 <= usv && usv <= 2531 || 9676 == usv;
}
protected IndicFormatter.Position getPosition(int usv) {
switch (usv) {
case 2495:
case 2503:
case 2504: {
return IndicFormatter.Position.left;
}
case 2433: {
return IndicFormatter.Position.topOther;
}
case 2497:
case 2498:
case 2499:
case 2500:
case 2530:
case 2531: {
return IndicFormatter.Position.bottom;
}
case 2377:
case 2378:
case 2379:
case 2380:
case 2494:
case 2496: {
return IndicFormatter.Position.rightMatra;
}
case 2434:
case 2435:
case 2519: {
return IndicFormatter.Position.rightOther;
}
}
return IndicFormatter.Position.any;
}
protected IndicFormatter.Shape rephLike(int usv) {
if (2480 == usv) {
return IndicFormatter.Shape.rephCons;
}
return IndicFormatter.Shape.any;
}
protected boolean subjoins(int usv) {
return usv == 2480 || usv == 2544 || usv == 2476;
}
protected boolean postjoins(int usv) {
return usv == 2479;
}
protected boolean postjoinsIndependentVowels(int usv) {
return usv == 2479;
}
}