Index: src/org/openstreetmap/josm/gui/mappaint/NodeElemStyle.java
===================================================================
--- src/org/openstreetmap/josm/gui/mappaint/NodeElemStyle.java	(revision 3990)
+++ src/org/openstreetmap/josm/gui/mappaint/NodeElemStyle.java	(working copy)
@@ -176,11 +176,8 @@
             symbol = createSymbol(env);
         }
 
-        if (icon == null && symbol == null && !allowOnlyText)
-            return null;
-
         NodeTextElement text = null;
-        TextElement te = TextElement.create(c, DEFAULT_TEXT_COLOR);
+        TextElement te = TextElement.create(c, DEFAULT_TEXT_COLOR, symbol == null && icon == null);
         // optimization: if we neither have a symbol, nor an icon, nor a text element
         // we don't have to check for the remaining style properties and we don't
         // have to allocate a node element style.
Index: src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java
===================================================================
--- src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(revision 3990)
+++ src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(working copy)
@@ -184,7 +184,7 @@
         if (!casing) {
             Keyword textPos = c.get("text-position", null, Keyword.class);
             if (textPos == null || equal(textPos.val, "line")) {
-                text = TextElement.create(c, PaintColors.TEXT.get());
+                text = TextElement.create(c, PaintColors.TEXT.get(), false);
             }
         }
 
Index: src/org/openstreetmap/josm/gui/mappaint/AreaElemStyle.java
===================================================================
--- src/org/openstreetmap/josm/gui/mappaint/AreaElemStyle.java	(revision 3990)
+++ src/org/openstreetmap/josm/gui/mappaint/AreaElemStyle.java	(working copy)
@@ -79,7 +79,7 @@
         TextElement text = null;
         Keyword textPos = c.get("text-position", null, Keyword.class);
         if (textPos == null || Utils.equal(textPos.val, "center")) {
-            text = TextElement.create(c, PaintColors.AREA_TEXT.get());
+            text = TextElement.create(c, PaintColors.AREA_TEXT.get(), true);
         }
         
         if (color != null)
Index: src/org/openstreetmap/josm/gui/mappaint/TextElement.java
===================================================================
--- src/org/openstreetmap/josm/gui/mappaint/TextElement.java	(revision 3990)
+++ src/org/openstreetmap/josm/gui/mappaint/TextElement.java	(working copy)
@@ -79,11 +79,12 @@
      * @param c the style properties
      * @return the label composition strategy
      */
-    protected static LabelCompositionStrategy buildLabelCompositionStrategy(Cascade c){
+    protected static LabelCompositionStrategy buildLabelCompositionStrategy(Cascade c, boolean defaultAnnotate){
         Keyword textKW = c.get("text", null, Keyword.class, true);
         if (textKW == null) {
             String textKey = c.get("text", null, String.class);
-            if (textKey == null) return null;
+            if (textKey == null) 
+                return defaultAnnotate ? AUTO_LABEL_COMPOSITION_STRATEGY : null;
             return new TagLookupCompositionStrategy(textKey);
         } else if (textKW.val.equals("auto"))
             return AUTO_LABEL_COMPOSITION_STRATEGY;
@@ -101,10 +102,10 @@
      * properties for text rendering
      * @throws IllegalArgumentException thrown if {@code defaultTextColor} is null
      */
-    public static TextElement create(Cascade c, Color defaultTextColor)  throws IllegalArgumentException{
+    public static TextElement create(Cascade c, Color defaultTextColor, boolean defaultAnnotate)  throws IllegalArgumentException{
         CheckParameterUtil.ensureParameterNotNull(defaultTextColor);
 
-        LabelCompositionStrategy strategy = buildLabelCompositionStrategy(c);
+        LabelCompositionStrategy strategy = buildLabelCompositionStrategy(c, defaultAnnotate);
         Font font = ElemStyle.getFont(c);
 
         float xOffset = 0;
