OSDN Git Service

- 二倍幅ASCII表示で、漢字の2byte目のattr(色指定)を勝手に255に決め打ちして
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Fri, 3 May 2002 10:30:37 +0000 (10:30 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Fri, 3 May 2002 10:30:37 +0000 (10:30 +0000)
  2byte目の識別に使っていたら、screen dumpでそれを素直に出力して文字化け
  していたので、修正。255にせず、0xf0を加えるだけにした。
- さらに、win版で二倍幅豆腐の内部コードに使っていた「Å」もそのまま出力
  されてしまいそうなので、代りに「■」を使う事にした。
  本当は出力時に「#」に置き変えるのが一番いいが、なんかコードの都合上
  大がかりなハックになってしまうのでやめておく。

src/cave.c
src/main-win.c
src/z-term.c

index 964cf7d..4476d96 100644 (file)
@@ -1747,7 +1747,7 @@ void map_info(int y, int x, byte *ap, char *cp)
 #ifdef JP
 /*
  * Table of Ascii-to-Zenkaku
- * ¡Ö¢ò¡×¤ÏÆóÇÜÉýƦÉå¤ÎÆâÉô¥³¡¼¥É¤Ë»ÈÍÑ¡£
+ * ¡Ö¢£¡×¤ÏÆóÇÜÉýƦÉå¤ÎÆâÉô¥³¡¼¥É¤Ë»ÈÍÑ¡£
  */
 static char ascii_to_zenkaku[2*128+1] =  "\
 ¡¡¡ª¡É¡ô¡ð¡ó¡õ¡Ç¡Ê¡Ë¡ö¡Ü¡¤¡Ý¡¥¡¿\
@@ -1755,7 +1755,7 @@ static char ascii_to_zenkaku[2*128+1] =  "\
 ¡÷£Á£Â£Ã£Ä£Å£Æ£Ç£È£É£Ê£Ë£Ì£Í£Î£Ï\
 £Ð£Ñ£Ò£Ó£Ô£Õ£Ö£×£Ø£Ù£Ú¡Î¡À¡Ï¡°¡²\
 ¡Æ£á£â£ã£ä£å£æ£ç£è£é£ê£ë£ì£í£î£ï\
-£ð£ñ£ò£ó£ô£õ£ö£÷£ø£ù£ú¡Ð¡Ã¡Ñ¡Á¢ò";
+£ð£ñ£ò£ó£ô£õ£ö£÷£ø£ù£ú¡Ð¡Ã¡Ñ¡Á¢£";
 #endif
 
 /*
@@ -1773,7 +1773,7 @@ static void bigtile_attr(char *cp, byte *ap, char *cp2, byte *ap2)
 #ifdef JP
        if (isprint(*cp) || *cp == 127)
        {
-               *ap2 = 255;
+               *ap2 = (*ap) | 0xf0;
                *cp2 = ascii_to_zenkaku[2*(*cp-' ') + 1];
                *cp = ascii_to_zenkaku[2*(*cp-' ')];
                return;
index baf2aca..124891f 100644 (file)
@@ -2357,7 +2357,7 @@ static errr Term_text_win(int x, int y, int n, byte a, const char *s)
                for (i = 0; i < n; i++)
                {
 #ifdef JP
-                       if (use_bigtile && *(s+i)=="¢ò"[0] && *(s+i+1)=="¢ò"[1])
+                       if (use_bigtile && *(s+i)=="¢£"[0] && *(s+i+1)=="¢£"[1])
                        {
                                rc.right += td->font_wid;
 
index 120b3d3..e301704 100644 (file)
@@ -570,7 +570,7 @@ void Term_queue_char(int x, int y, byte a, char c)
        if (x < Term->x1[y]) Term->x1[y] = x;
        if (x > Term->x2[y]) Term->x2[y] = x;
 
-       if (scrn->a[y][x] == 255)
+       if ((scrn->a[y][x] & 0xf0) == 0xf0)
                if ((x - 1) < Term->x1[y]) Term->x1[y]--;
 }
 
@@ -1156,7 +1156,7 @@ static void Term_fresh_row_both(int y, int x1, int x2)
 #endif /* USE_TRANSPARENCY */
 
                /* 2nd byte of bigtile */
-               if (na == 255) continue;
+               if ((na & 0xf0) == 0xf0) continue;
 
                /* Handle high-bit attr/chars */
                if ((na & 0x80) && (nc & 0x80))