c393e88f08a9eb02de50d25760f5144d696c5d33
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c
index a737b56..2cfd9ee 100644
--- a/gtk/gtkentry.c
+++ b/gtk/gtkentry.c
@@ -1090,6 +1090,37 @@ gtk_entry_get_property (GObject         *object,
     }
 }
 
+static gunichar
+find_invisible_char (GtkWidget *widget)
+{
+  gint i;
+  gunichar invisible_chars [] = {
+    0x25cf, /* BLACK CIRCLE */
+    0x2022, /* BULLET */
+    0x2731, /* HEAVY ASTERISK */
+    0x273a, /* SIXTEEN POINTED ASTERISK */
+    0x002a, /* ASTERISK */
+  };
+
+  for (i = 0; i < G_N_ELEMENTS (invisible_chars); i++)
+    {
+      PangoLayout *layout;
+      gchar text[7] = { 0, };
+      gint count;
+
+      g_unichar_to_utf8 (invisible_chars[i], text);
+      layout = gtk_widget_create_pango_layout (widget, text);
+
+      count = pango_layout_get_unknown_glyphs_count (layout);
+      g_object_unref (layout);
+
+      if (count == 0)
+        return invisible_chars[i];
+    }
+
+  return '*';
+}
+
 static void
 gtk_entry_init (GtkEntry *entry)
 {
@@ -1103,7 +1134,7 @@ gtk_entry_init (GtkEntry *entry)
 
   entry->editable = TRUE;
   entry->visible = TRUE;
-  entry->invisible_char = '*';
+  entry->invisible_char = find_invisible_char (GTK_WIDGET (entry));
   entry->dnd_position = -1;
   entry->width_chars = -1;
   entry->is_cell_renderer = FALSE;
