Index: NSStringITerm.m
===================================================================
RCS file: /cvsroot/iterm/iTerm/NSStringITerm.m,v
retrieving revision 1.8
diff -u -r1.8 NSStringITerm.m
--- NSStringITerm.m	13 Nov 2006 08:01:04 -0000	1.8
+++ NSStringITerm.m	5 Nov 2007 14:04:20 -0000
@@ -286,6 +286,8 @@
 	0xfffd,
 };
 
+static int isJapaneseEnvironment = -1;
+
 
 @implementation NSString (iTerm)
 
@@ -296,8 +298,22 @@
 
 + (BOOL)isDoubleWidthCharacter:(unichar)unicode encoding:(NSStringEncoding) e
 {
-	if (unicode <= 0xa0 || (unicode>0x452 && unicode <0x200f))
-		return NO;
+    if (unicode <= 0xa0 || (unicode>0x452 && unicode <0x200f))
+        return NO;
+
+    if (isJapaneseEnvironment < 0) {
+        const char ja_JP[] = "ja_JP.";
+        const char *lang = getenv("LANG");
+
+        if (lang != NULL && strlen(lang) > sizeof(ja_JP) - 1 && !strncmp(lang, ja_JP, sizeof(ja_JP) - 1))
+            isJapaneseEnvironment = YES;
+        else
+            isJapaneseEnvironment = NO;
+    }
+
+    if (isJapaneseEnvironment && unicode >= 0x2000)
+        return YES;
+
     /*
      unicode character width check
      see. http://www.unicode.org
