diff --git a/fop-core/src/main/java/org/apache/fop/fo/FOPropertyMapping.java b/fop-core/src/main/java/org/apache/fop/fo/FOPropertyMapping.java
index 0b8da47..c96e34b 100644
--- a/fop-core/src/main/java/org/apache/fop/fo/FOPropertyMapping.java
+++ b/fop-core/src/main/java/org/apache/fop/fo/FOPropertyMapping.java
@@ -53,6 +53,7 @@
 import org.apache.fop.fo.properties.LineHeightPropertyMaker;
 import org.apache.fop.fo.properties.ListProperty;
 import org.apache.fop.fo.properties.NumberProperty;
+import org.apache.fop.fo.properties.OptionalCharacterProperty;
 import org.apache.fop.fo.properties.PageBreakShorthandParser;
 import org.apache.fop.fo.properties.PageDimensionMaker;
 import org.apache.fop.fo.properties.PositionShorthandParser;
@@ -1105,7 +1106,7 @@
         addPropertyMaker("hyphenate", m);
 
         // hyphenation-character
-        m  = new CharacterProperty.Maker(PR_HYPHENATION_CHARACTER);
+        m  = new OptionalCharacterProperty.Maker(PR_HYPHENATION_CHARACTER);
         m.setInherited(true);
         m.setDefault("-");
         addPropertyMaker("hyphenation-character", m);
diff --git a/fop-core/src/main/java/org/apache/fop/fo/properties/CommonHyphenation.java b/fop-core/src/main/java/org/apache/fop/fo/properties/CommonHyphenation.java
index 4c87030..256c6dd 100644
--- a/fop-core/src/main/java/org/apache/fop/fo/properties/CommonHyphenation.java
+++ b/fop-core/src/main/java/org/apache/fop/fo/properties/CommonHyphenation.java
@@ -58,7 +58,7 @@
     public final EnumProperty hyphenate;
 
     /** The "hyphenation-character" property */
-    public final CharacterProperty hyphenationCharacter;
+    public final OptionalCharacterProperty hyphenationCharacter;
 
     /** The "hyphenation-push-character-count" property */
     public final NumberProperty hyphenationPushCharacterCount;
@@ -74,7 +74,7 @@
                               StringProperty country,
                               StringProperty script,
                               EnumProperty hyphenate,
-                              CharacterProperty hyphenationCharacter,
+                              OptionalCharacterProperty hyphenationCharacter,
                               NumberProperty hyphenationPushCharacterCount,
                               NumberProperty hyphenationRemainCharacterCount) {
         this.language = language;
@@ -104,8 +104,8 @@
             = (StringProperty) propertyList.get(Constants.PR_SCRIPT);
         EnumProperty hyphenate
             = (EnumProperty) propertyList.get(Constants.PR_HYPHENATE);
-        CharacterProperty hyphenationCharacter
-            = (CharacterProperty) propertyList.get(Constants.PR_HYPHENATION_CHARACTER);
+        OptionalCharacterProperty hyphenationCharacter
+            = (OptionalCharacterProperty) propertyList.get(Constants.PR_HYPHENATION_CHARACTER);
         NumberProperty hyphenationPushCharacterCount
             = (NumberProperty) propertyList.get(Constants.PR_HYPHENATION_PUSH_CHARACTER_COUNT);
         NumberProperty hyphenationRemainCharacterCount
@@ -132,7 +132,10 @@
      * @param font the font
      * @return the effective hyphenation character.
      */
-    public char getHyphChar(org.apache.fop.fonts.Font font) {
+    public Character getHyphChar(org.apache.fop.fonts.Font font) {
+        if (hyphenationCharacter.getObject() == null) {
+            return null;
+        }
         char hyphChar = hyphenationCharacter.getCharacter();
         if (font.hasChar(hyphChar)) {
             return hyphChar; //short-cut
@@ -183,8 +186,8 @@
      * @return the IPD in millipoints for the hyphenation character.
      */
     public int getHyphIPD(org.apache.fop.fonts.Font font) {
-        char hyphChar = getHyphChar(font);
-        return font.getCharWidth(hyphChar);
+        Character hyphChar = getHyphChar(font);
+        return (hyphChar == null) ? 0 : font.getCharWidth(hyphChar);
     }
 
     /**
diff --git a/fop-core/src/main/java/org/apache/fop/fo/properties/OptionalCharacterProperty.java b/fop-core/src/main/java/org/apache/fop/fo/properties/OptionalCharacterProperty.java
new file mode 100644
index 0000000..73c1f86
--- /dev/null
+++ b/fop-core/src/main/java/org/apache/fop/fo/properties/OptionalCharacterProperty.java
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id$ */
+
+package org.apache.fop.fo.properties;
+
+import org.apache.fop.fo.FObj;
+import org.apache.fop.fo.PropertyList;
+
+/**
+ * Superclass for properties that wrap an optional character value
+ * TODO convert character value to int in order to denote unicode scalar value
+ * instead of a single UTF-16 code element
+ */
+public final class OptionalCharacterProperty extends Property {
+
+    /**
+     * Inner class for creating instances of OptionalCharacterProperty
+     */
+    public static class Maker extends PropertyMaker {
+
+        /**
+         * @param propId the id of the property for which a Maker should be created
+         */
+        public Maker(int propId) {
+            super(propId);
+        }
+
+        /** {@inheritDoc} */
+        public Property make(PropertyList propertyList, String value,
+                             FObj fo) {
+            if (value.isEmpty()) {
+                return OptionalCharacterProperty.getInstance(null);
+            } else {
+                char c = value.charAt(0);
+                return OptionalCharacterProperty.getInstance(c);
+            }
+        }
+
+    }
+
+    /** cache containing all canonical OptionalCharacterProperty instances */
+    private static final PropertyCache<OptionalCharacterProperty> CACHE
+            = new PropertyCache<OptionalCharacterProperty>();
+
+    private final Character character;
+
+    /**
+     * @param character character value to be wrapped in this property
+     */
+    private OptionalCharacterProperty(Character character) {
+        this.character = character;
+    }
+
+    /**
+     * Get character property instance for character.
+     * @param character the character
+     * @return the character property instance
+     */
+    public static OptionalCharacterProperty getInstance(Character character) {
+        return CACHE.fetch(new OptionalCharacterProperty(character));
+    }
+
+    /**
+     * @return this.character cast as an Object
+     */
+    public Object getObject() {
+        return character;
+    }
+
+    /**
+     * @return this.character
+     */
+    public char getCharacter() {
+        return character == null ? 0 : this.character;
+    }
+
+    /**
+     * @return this.character cast as a String
+     */
+    public String getString() {
+        return character == null ? "" : character.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof OptionalCharacterProperty) {
+            OptionalCharacterProperty ocp = (OptionalCharacterProperty) obj;
+            return character == ocp.character
+                   || character != null
+                      && character.equals(ocp.character);
+        } else {
+            return false;
+        }
+    }
+
+    @Override
+    public int hashCode() {
+        return character == null ? 0 : character.hashCode();
+    }
+}
diff --git a/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java b/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java
index 3134ebb..8611cbd 100644
--- a/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java
+++ b/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java
@@ -550,7 +550,10 @@
         }
 
         private void addHyphenationChar() {
-            wordChars.append(foText.getCommonHyphenation().getHyphChar(font));
+            Character hyphChar = foText.getCommonHyphenation().getHyphChar(font);
+            if (hyphChar != null) {
+                wordChars.append(hyphChar);
+            }
             // [TBD] expand bidi word levels, letter space adjusts, gpos adjusts
             // [TBD] [GA] problematic in bidi context... what is level of hyphen?
             textArea.setHyphenated();
