| 1 |
diff -ruN Canna37p1.orig/lib/canna/romaji.c Canna37p1/lib/canna/romaji.c
|
| 2 |
--- Canna37p1.orig/lib/canna/romaji.c 2004-03-17 17:56:42.651277000 +0900
|
| 3 |
+++ Canna37p1/lib/canna/romaji.c 2004-03-17 17:57:23.207908504 +0900
|
| 4 |
@@ -21,7 +21,7 @@
|
| 5 |
*/
|
| 6 |
|
| 7 |
#if !defined(lint) && !defined(__CODECENTER__)
|
| 8 |
-static char rcs_id[] = "@(#) 102.1 $Id: romaji.c,v 1.10 2003/09/17 08:50:53 aida_s Exp $";
|
| 9 |
+static char rcs_id[] = "@(#) 102.1 $Id: romaji.c,v 1.11 2004/03/15 04:33:23 aida_s Exp $";
|
| 10 |
#endif /* lint */
|
| 11 |
|
| 12 |
#include "canna.h"
|
| 13 |
@@ -2626,6 +2626,7 @@
|
| 14 |
yc->englishtype = CANNA_ENG_KANA;
|
| 15 |
yc->cStartp = yc->cRStartp = 0;
|
| 16 |
yc->jishu_kEndp = 0;
|
| 17 |
+ yc->n_susp_chars = 0;
|
| 18 |
}
|
| 19 |
|
| 20 |
static int
|
| 21 |
@@ -2782,8 +2783,13 @@
|
| 22 |
}
|
| 23 |
yc->last_rule = 0;
|
| 24 |
howManyDelete = howFarToGoBackward(yc);
|
| 25 |
- if (howManyDelete > 0 && (yc->generalFlags & CANNA_YOMI_BREAK_ROMAN)) {
|
| 26 |
- yc->generalFlags &= ~CANNA_YOMI_BREAK_ROMAN;
|
| 27 |
+ if (howManyDelete > 0 && (yc->generalFlags & CANNA_YOMI_BREAK_ROMAN)
|
| 28 |
+ && (yc->kAttr[yc->kCurs] & SENTOU)) {
|
| 29 |
+ /*
|
| 30 |
+ * ¥í¡¼¥Þ»ú1ʸ»ú¤ËÂбþ¤¹¤ë²¾Ì¾¤ò¾Ã¤·¤¿»þ¤Ï¥í¡¼¥Þ»ú¡¢²¾Ì¾¤È¤â
|
| 31 |
+ * SENTOU¥Õ¥é¥°¤¬1¸Ä¸º¤ë¡£
|
| 32 |
+ * ¤½¤¦¤Ç¤Ê¤¤¤È¤¤ÏSENTOU¥Õ¥é¥°¤Î¸Ä¿ô¤ÏÊѤï¤é¤Ê¤¤
|
| 33 |
+ */
|
| 34 |
yc->rStartp = yc->rCurs - 1;
|
| 35 |
while ( yc->rStartp > 0 && !(yc->rAttr[yc->rStartp] & SENTOU) ) {
|
| 36 |
yc->rStartp--;
|
| 37 |
@@ -2792,16 +2798,23 @@
|
| 38 |
yc->kRStartp = yc->kCurs - 1;
|
| 39 |
while ( yc->kRStartp > 0 && !(yc->kAttr[yc->kRStartp] & SENTOU) )
|
| 40 |
yc->kRStartp--;
|
| 41 |
+ /* ¤³¤ìɬ¤º¿¿¤Ç¤Ï? */
|
| 42 |
prevflag = (yc->kAttr[yc->kRStartp] & SENTOU);
|
| 43 |
kanaReplace(yc->kRStartp - yc->kCurs,
|
| 44 |
yc->romaji_buffer + yc->rStartp,
|
| 45 |
yc->rCurs - yc->rStartp,
|
| 46 |
0);
|
| 47 |
+ /* ¥í¡¼¥Þ»ú1ʸ»ú¤ËÂбþ¤¹¤ë²¾Ì¾¤ò¾Ã¤·¤¿¤È¤¤ÏºÇ½é¤«¤éSENTOU¤Ç¤¢¤ë */
|
| 48 |
yc->kAttr[yc->kRStartp] |= prevflag;
|
| 49 |
yc->n_susp_chars = 0; /* ¤È¤ê¤¢¤¨¤º¥¯¥ê¥¢¤·¤Æ¤ª¤¯ */
|
| 50 |
makePhonoOnBuffer(d, yc, (unsigned char)0, 0, 0);
|
| 51 |
+ /* °ÊÁ°¤Ï¾ï¤Ë¥Õ¥é¥°¤ò²¼¤²¤Æ¤¤¤¿¤¬¡¢Ì¤ÊÑ´¹¥í¡¼¥Þ»ú¤¬»Ä¤Ã¤Æ¤¤¤ë¤È¤¤Ï
|
| 52 |
+ * ¥Õ¥é¥°¤ò²¼¤²¤Ê¤¤¤³¤È¤Ë¤¹¤ë */
|
| 53 |
+ if (yc->kRStartp == yc->kCurs)
|
| 54 |
+ yc->generalFlags &= ~CANNA_YOMI_BREAK_ROMAN;
|
| 55 |
}
|
| 56 |
else {
|
| 57 |
+ yc->generalFlags &= ~CANNA_YOMI_BREAK_ROMAN;
|
| 58 |
if ( yc->kAttr[yc->kCurs - howManyDelete] & HENKANSUMI ) {
|
| 59 |
if (yc->kAttr[yc->kCurs - howManyDelete] & SENTOU) {
|
| 60 |
/* ¥í¡¼¥Þ»ú¤«¤ÊÊÑ´¹¤ÎÀèÆ¬¤À¤Ã¤¿¤é */
|
| 61 |
@@ -2821,6 +2834,12 @@
|
| 62 |
yc->rEndp -= n;
|
| 63 |
}
|
| 64 |
else {
|
| 65 |
+ /* ²¾Ì¾¤Î¥«¡¼¥½¥ë°ÌÃÖ¤ÏÀèÆ¬¤Ë¤Ê¤ë¤Î¤Ç¥í¡¼¥Þ»ú¤Î¥«¡¼¥½¥ë¤âư¤«¤¹*/
|
| 66 |
+ while ( yc->rCurs > 0 && !(yc->rAttr[--yc->rCurs] & SENTOU) )
|
| 67 |
+ ;
|
| 68 |
+ if (yc->rCurs < yc->rStartp) {
|
| 69 |
+ yc->rStartp = yc->rCurs;
|
| 70 |
+ }
|
| 71 |
yc->kAttr[yc->kCurs] |= SENTOU;
|
| 72 |
}
|
| 73 |
}
|
| 74 |
@@ -2829,6 +2848,12 @@
|
| 75 |
romajiReplace(-howManyDelete, (wchar_t *)NULL, 0, 0);
|
| 76 |
}
|
| 77 |
kanaReplace(-howManyDelete, (wchar_t *)NULL, 0, 0);
|
| 78 |
+ if ((yc->rAttr[yc->rCurs] & SENTOU) && yc->kRStartp == yc->kCurs) {
|
| 79 |
+ /* ̤ÊÑ´¹¤Î¥í¡¼¥Þ»ú¤ò¾Ã¤·¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç¡¢¼¡¤ËÆþÎϤ·¤¿¥í¡¼¥Þ»ú¤Ï
|
| 80 |
+ * SENTOU¤Ë¤Ê¤ëÊý¤¬¼«Á³¤À¤í¤¦
|
| 81 |
+ */
|
| 82 |
+ yc->rStartp = yc->rCurs;
|
| 83 |
+ }
|
| 84 |
}
|
| 85 |
debug_yomi(yc);
|
| 86 |
return(0);
|
| 87 |
@@ -2944,6 +2969,7 @@
|
| 88 |
currentModeInfo(d);
|
| 89 |
}
|
| 90 |
makeYomiReturnStruct(d);
|
| 91 |
+ debug_yomi(yc);
|
| 92 |
return 0;
|
| 93 |
}
|
| 94 |
|