diff --git a/pango/pango-utils.c b/pango/pango-utils.c
index 100dbc7..6ce061f 100644
--- a/pango/pango-utils.c
+++ b/pango/pango-utils.c
@@ -1161,55 +1161,69 @@ pango_find_base_dir (const gchar *text,
 
 /**
  * pango_is_zero_width:
- * @ch: a Unicode character
+ * @ch: a Unicode codepoint
  *
- * Checks @ch to see if it is a character that should not be
- * normally rendered on the screen.  This includes all Unicode characters
- * with "ZERO WIDTH" in their name, as well as <firstterm>bidi</firstterm> formatting characters, and
- * a few other ones.  This is totally different from g_unichar_iszerowidth()
- * and is at best misnamed.
+ * Checks @ch to see if it is a codepoint that should not be normally
+ * rendered on the screen (but they may affect the behavior and display of
+ * neighboring characters).  These are all Unicode codepoints with the
+ * Default_Ignorable_Code_Point property; see The Unicode Standard, Section
+ * 5.21 for more details.  This is totally different from
+ * g_unichar_iszerowidth() and is at best misnamed.
  *
- * Return value: %TRUE if @ch is a zero-width character, %FALSE otherwise
+ * Return value: %TRUE if @ch is a Default Ignorable codepoint, %FALSE
+ * otherwise
  *
  * Since: 1.10
  */
 gboolean
 pango_is_zero_width (gunichar ch)
 {
-/* Zero Width characters:
- *
- *  00AD  SOFT HYPHEN
- *  034F  COMBINING GRAPHEME JOINER
- *
- *  200B  ZERO WIDTH SPACE
- *  200C  ZERO WIDTH NON-JOINER
- *  200D  ZERO WIDTH JOINER
- *  200E  LEFT-TO-RIGHT MARK
- *  200F  RIGHT-TO-LEFT MARK
- *
- *  2028  LINE SEPARATOR
- *
- *  202A  LEFT-TO-RIGHT EMBEDDING
- *  202B  RIGHT-TO-LEFT EMBEDDING
- *  202C  POP DIRECTIONAL FORMATTING
- *  202D  LEFT-TO-RIGHT OVERRIDE
- *  202E  RIGHT-TO-LEFT OVERRIDE
- *
- *  2060  WORD JOINER
- *  2061  FUNCTION APPLICATION
- *  2062  INVISIBLE TIMES
- *  2063  INVISIBLE SEPARATOR
- *
- *  FEFF  ZERO WIDTH NO-BREAK SPACE
+/* Default Ignorable codepoints:
+ *
+ *  00AD          SOFT HYPHEN
+ *  034F          COMBINING GRAPHEME JOINER
+ *  115F..1160    HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER
+ *  17B4..17B5    KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+ *  180B..180D    MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+ *  200B..200F    ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK
+ *  202A..202E    LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+ *  2060..2064    WORD JOINER..INVISIBLE PLUS
+ *  2065..2069    <reserved-2065>..<reserved-2069>
+ *  206A..206F    INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
+ *  3164          HANGUL FILLER
+ *  FE00..FE0F    VARIATION SELECTOR-1..VARIATION SELECTOR-16
+ *  FEFF          ZERO WIDTH NO-BREAK SPACE
+ *  FFA0          HALFWIDTH HANGUL FILLER
+ *  FFF0..FFF8    <reserved-FFF0>..<reserved-FFF8>
+ *  1D173..1D17A  MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+ *  E0000         <reserved-E0000>
+ *  E0001         LANGUAGE TAG
+ *  E0002..E001F  <reserved-E0002>..<reserved-E001F>
+ *  E0020..E007F  TAG SPACE..CANCEL TAG
+ *  E0080..E00FF  <reserved-E0080>..<reserved-E00FF>
+ *  E0100..E01EF  VARIATION SELECTOR-17..VARIATION SELECTOR-256
+ *  E01F0..E0FFF  <reserved-E01F0>..<reserved-E0FFF>
+ *
+ * Total code points: 4167
  */
   return ((ch & ~(gunichar)0x007F) == 0x2000 && (
 		(ch >= 0x200B && ch <= 0x200F) ||
 		(ch >= 0x202A && ch <= 0x202E) ||
-		(ch >= 0x2060 && ch <= 0x2063) ||
-		(ch == 0x2028)
+		(ch >= 0x2060 && ch <= 0x206F)
 	 )) || G_UNLIKELY (ch == 0x00AD
 			|| ch == 0x034F
-			|| ch == 0xFEFF);
+			|| ch == 0x115F
+			|| ch == 0x1160
+			|| ch == 0x17B4
+			|| ch == 0x17B5
+			|| (ch >= 0x180B && ch <= 0x180D)
+			|| ch == 0x3164
+			|| (ch >= 0xFE00 && ch <= 0xFE0F)
+			|| ch == 0xFEFF
+			|| ch == 0xFFA0
+			|| (ch >= 0xFFF0 && ch <= 0xFFF8)
+			|| (ch >= 0x1D173 && ch <= 0x1D17A)
+			|| (ch >= 0xE0000 && ch <= 0xE0FFF));
 }
 
 /**
