Index: trunk/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java	(revision 16950)
+++ trunk/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java	(revision 16951)
@@ -213,5 +213,5 @@
                 name.append(" \u200E(");
                 name.append(CoordinateFormatManager.getDefaultFormat().toString(node, ", "));
-                name.append(')');
+                name.append(")\u200C");
             }
         }
@@ -306,4 +306,5 @@
         }
         decorateNameWithId(name, way);
+        name.append('\u200C');
 
         String result = name.toString();
Index: trunk/src/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferable.java	(revision 16950)
+++ trunk/src/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferable.java	(revision 16951)
@@ -91,5 +91,5 @@
             sb.append(OsmPrimitiveType.from(primitive).getAPIName()).append(' ').append(primitive.getId());
         }
-        return sb.toString().replace("\u200E", "").replace("\u200F", "");
+        return sb.toString().replace("\u200C", "").replace("\u200E", "").replace("\u200F", "");
     }
 }
Index: trunk/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java	(revision 16950)
+++ trunk/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java	(revision 16951)
@@ -107,5 +107,5 @@
               .append('\n');
         }
-        return sb.toString().replace("\u200E", "").replace("\u200F", "");
+        return sb.toString().replace("\u200C", "").replace("\u200E", "").replace("\u200F", "");
     }
 
Index: trunk/test/unit/org/openstreetmap/josm/data/osm/DefaultNameFormatterTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/osm/DefaultNameFormatterTest.java	(revision 16950)
+++ trunk/test/unit/org/openstreetmap/josm/data/osm/DefaultNameFormatterTest.java	(revision 16951)
@@ -124,18 +124,19 @@
     @Test
     public void testWayName() {
-        assertEquals("building (0 nodes)", getFormattedWayName("building=yes"));
-        assertEquals("House number 123 (0 nodes)", getFormattedWayName("building=yes addr:housenumber=123"));
-        assertEquals("House number 123 at FooStreet (0 nodes)", getFormattedWayName("building=yes addr:housenumber=123 addr:street=FooStreet"));
-        assertEquals("House FooName (0 nodes)", getFormattedWayName("building=yes addr:housenumber=123 addr:housename=FooName"));
+        assertEquals("\u200Ebuilding\u200E (0 nodes)\u200C", getFormattedWayName("building=yes"));
+        assertEquals("\u200EHouse number 123\u200E (0 nodes)\u200C",
+                getFormattedWayName("building=yes addr:housenumber=123"));
+        assertEquals("\u200EHouse number 123 at FooStreet\u200E (0 nodes)\u200C",
+                getFormattedWayName("building=yes addr:housenumber=123 addr:street=FooStreet"));
+        assertEquals("\u200EHouse FooName\u200E (0 nodes)\u200C",
+                getFormattedWayName("building=yes addr:housenumber=123 addr:housename=FooName"));
     }
 
     static String getFormattedRelationName(String tagsString) {
-        return DefaultNameFormatter.getInstance().format((Relation) OsmUtils.createPrimitive("relation " + tagsString))
-                .replace("\u200E", "").replace("\u200F", "");
+        return DefaultNameFormatter.getInstance().format((Relation) OsmUtils.createPrimitive("relation " + tagsString));
     }
 
     static String getFormattedWayName(String tagsString) {
-        return DefaultNameFormatter.getInstance().format((Way) OsmUtils.createPrimitive("way " + tagsString))
-                .replace("\u200E", "").replace("\u200F", "");
+        return DefaultNameFormatter.getInstance().format((Way) OsmUtils.createPrimitive("way " + tagsString));
     }
 
Index: trunk/test/unit/org/openstreetmap/josm/data/validation/util/MultipleNameVisitorTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/validation/util/MultipleNameVisitorTest.java	(revision 16950)
+++ trunk/test/unit/org/openstreetmap/josm/data/validation/util/MultipleNameVisitorTest.java	(revision 16951)
@@ -33,5 +33,5 @@
         MultipleNameVisitor visitor = new MultipleNameVisitor();
         visitor.visit(Arrays.asList(new Way(), new Way()));
-        assertEquals("2 ways: ‎0‎ (0 nodes), ‎0‎ (0 nodes)", visitor.toString());
+        assertEquals("2 ways: \u200E0\u200E (0 nodes)\u200C, \u200E0\u200E (0 nodes)\u200C", visitor.toString());
     }
 
@@ -46,5 +46,5 @@
                 TestUtils.newWay("addr:housename=Stark"),
                 TestUtils.newRelation("type=route")));
-        assertEquals("3 objects: foo, ‎House Stark‎ (0 nodes), route (0, 0 members)", visitor.toString());
+        assertEquals("3 objects: foo, \u200EHouse Stark\u200E (0 nodes)\u200C, route (0, 0 members)", visitor.toString());
     }
 }
