--- pango-1.3.6.orig/pango/break.c	2003-09-24 22:31:15.000000000 +0000
+++ pango-1.3.6/pango/break.c	2004-03-26 17:17:21.000000000 +0000
@@ -362,6 +362,7 @@
 {
   WordNone,
   WordLetters,
+  OtherLetters,
   WordNumbers
 } WordType;
 
@@ -783,9 +784,38 @@
               /* nothing, we just eat these up as part of the word */
               break;
 
+            case G_UNICODE_OTHER_LETTER:
+              if (current_word_type == OtherLetters)
+                {
+                  /* Japanese special cases for ending the word */
+                  if (JAPANESE (last_word_letter) ||
+                      JAPANESE (wc))
+                    {
+                      if ((HIRAGANA (last_word_letter) &&
+                           !HIRAGANA (wc)) ||
+                          (KATAKANA (last_word_letter) &&
+                           !(KATAKANA (wc) || HIRAGANA (wc))) ||
+                          (KANJI (last_word_letter) &&
+                           !(HIRAGANA (wc) || KANJI (wc))) ||
+                          (JAPANESE (last_word_letter) &&
+                           !JAPANESE (wc)) ||
+                          (!JAPANESE (last_word_letter) &&
+                           JAPANESE (wc)))
+                        attrs[i].is_word_end = TRUE;
+                    }
+                }
+	      else
+                {
+                  attrs[i].is_word_end = TRUE;
+                  attrs[i].is_word_start = TRUE;
+                  current_word_type = OtherLetters;
+                }
+
+              last_word_letter = wc;
+              break;
+
             case G_UNICODE_LOWERCASE_LETTER:
             case G_UNICODE_MODIFIER_LETTER:
-            case G_UNICODE_OTHER_LETTER:
             case G_UNICODE_TITLECASE_LETTER:
             case G_UNICODE_UPPERCASE_LETTER:
               if (current_word_type == WordLetters)
@@ -843,9 +873,14 @@
           /* Check for a word start */
           switch (type)
             {
+            case G_UNICODE_OTHER_LETTER:
+              current_word_type = OtherLetters;
+              last_word_letter = wc;
+              attrs[i].is_word_start = TRUE;
+              break;
+
             case G_UNICODE_LOWERCASE_LETTER:
             case G_UNICODE_MODIFIER_LETTER:
-            case G_UNICODE_OTHER_LETTER:
             case G_UNICODE_TITLECASE_LETTER:
             case G_UNICODE_UPPERCASE_LETTER:
               current_word_type = WordLetters;
