Compare commits
5 Commits
master
...
884ba56619
| Author | SHA1 | Date | |
|---|---|---|---|
| 884ba56619 | |||
| 9afad8e4ff | |||
| 64d50afc6b | |||
| b887972fb2 | |||
| d06cef6575 |
6
ko.c
6
ko.c
@@ -206,12 +206,14 @@ transko(Im *im, Rune c)
|
|||||||
sputr(&e.s, c);
|
sputr(&e.s, c);
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
e.eat = 1;
|
e.eat = 1;
|
||||||
last = slastr(&im->pre);
|
last = slastr(&im->pre);
|
||||||
if(last == 0){
|
if(last == 0){
|
||||||
sputr(&e.next, jm);
|
sputr(&e.next, jm);
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!issyl(last)){
|
if(!issyl(last)){
|
||||||
ci = Choidx(last);
|
ci = Choidx(last);
|
||||||
ji = Jungidx(jm);
|
ji = Jungidx(jm);
|
||||||
@@ -232,7 +234,9 @@ transko(Im *im, Rune c)
|
|||||||
sputr(&e.next, jm);
|
sputr(&e.next, jm);
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
decompose(last, &ci, &ji, &joi);
|
decompose(last, &ci, &ji, &joi);
|
||||||
|
|
||||||
if(joi == 0){
|
if(joi == 0){
|
||||||
ni = Jongidx(jm);
|
ni = Jongidx(jm);
|
||||||
if(ni > 0){
|
if(ni > 0){
|
||||||
@@ -251,6 +255,7 @@ transko(Im *im, Rune c)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(joi > 0){
|
if(joi > 0){
|
||||||
comb = combine(cjong, nelem(cjong), jong[joi], jm);
|
comb = combine(cjong, nelem(cjong), jong[joi], jm);
|
||||||
if(comb){
|
if(comb){
|
||||||
@@ -281,6 +286,7 @@ transko(Im *im, Rune c)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
e.s = im->pre;
|
e.s = im->pre;
|
||||||
sputr(&e.next, jm);
|
sputr(&e.next, jm);
|
||||||
return e;
|
return e;
|
||||||
|
|||||||
26
vi.c
26
vi.c
@@ -31,12 +31,24 @@ static struct {
|
|||||||
{L'Y', {L'Ý', L'Ỳ', L'Ỷ', L'Ỹ', L'Ỵ'}},
|
{L'Y', {L'Ý', L'Ỳ', L'Ỷ', L'Ỹ', L'Ỵ'}},
|
||||||
};
|
};
|
||||||
|
|
||||||
static int tonetab[128] = {
|
static int
|
||||||
['s'] = 1, ['f'] = 2, ['r'] = 3, ['x'] = 4, ['j'] = 5,
|
istone(Rune c)
|
||||||
};
|
{
|
||||||
|
return c == 's' || c == 'f' || c == 'r' || c == 'x' || c == 'j';
|
||||||
|
}
|
||||||
|
|
||||||
#define Istone(c) ((c) < 128 && tonetab[(c)] > 0)
|
static int
|
||||||
#define Toneidx(c) (tonetab[(c)] - 1)
|
toneidx(Rune c)
|
||||||
|
{
|
||||||
|
switch(c){
|
||||||
|
case 's': return 0;
|
||||||
|
case 'f': return 1;
|
||||||
|
case 'r': return 2;
|
||||||
|
case 'x': return 3;
|
||||||
|
case 'j': return 4;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
isvowel(Rune c)
|
isvowel(Rune c)
|
||||||
@@ -85,7 +97,7 @@ transvi(Im *im, Rune c)
|
|||||||
int i, tidx, vi, last, penult;
|
int i, tidx, vi, last, penult;
|
||||||
Rune v, b1, b2;
|
Rune v, b1, b2;
|
||||||
|
|
||||||
if(!Istone(c) && c != 'z')
|
if(!istone(c) && c != 'z')
|
||||||
return transmap(im, c);
|
return transmap(im, c);
|
||||||
|
|
||||||
memset(&e, 0, sizeof e);
|
memset(&e, 0, sizeof e);
|
||||||
@@ -139,7 +151,7 @@ transvi(Im *im, Rune c)
|
|||||||
if(c == 'z')
|
if(c == 'z')
|
||||||
mapped.r[vi] = removetone(mapped.r[vi]);
|
mapped.r[vi] = removetone(mapped.r[vi]);
|
||||||
else{
|
else{
|
||||||
tidx = Toneidx(c);
|
tidx = toneidx(c);
|
||||||
mapped.r[vi] = applytone(mapped.r[vi], tidx);
|
mapped.r[vi] = applytone(mapped.r[vi], tidx);
|
||||||
}
|
}
|
||||||
e.eat = 1;
|
e.eat = 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user