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