Index: fontbox/src/main/java/org/apache/fontbox/cmap/CMapParser.java
===================================================================
--- fontbox/src/main/java/org/apache/fontbox/cmap/CMapParser.java	(revision 1495976)
+++ fontbox/src/main/java/org/apache/fontbox/cmap/CMapParser.java	(working copy)
@@ -495,11 +495,14 @@
 			StringBuffer buffer = new StringBuffer();
 			int stringByte = is.read();
 
-			while( !isWhitespaceOrEOF( stringByte ) )
+			while( !isWhitespaceOrEOF( stringByte ) && !isDelimiter( stringByte ) )
 			{
 				buffer.append( (char)stringByte );
 				stringByte = is.read();
 			}
+			if (isDelimiter( stringByte)) {
+				is.unread(stringByte);
+			}
 			retval = new LiteralName( buffer.toString() );
 			break;
 		}
@@ -548,11 +551,15 @@
 			buffer.append( (char)nextByte );
 			nextByte = is.read();
 
-			while( !isWhitespaceOrEOF( nextByte ) )
+			while( !isWhitespaceOrEOF( nextByte ) && !isDelimiter( nextByte ) &&
+					!Character.isDigit( nextByte ) )
 			{
 				buffer.append( (char)nextByte );
 				nextByte = is.read();
 			}
+			if (isDelimiter( nextByte) || Character.isDigit( nextByte )) {
+				is.unread(nextByte);
+			}
 			retval = new Operator( buffer.toString() );                        
 
 			break;
@@ -576,6 +583,20 @@
 		return aByte == -1 || aByte == 0x20 || aByte == 0x0D || aByte == 0x0A; 
 	}
 
+	private boolean isDelimiter(int aByte)
+	{
+		return
+			aByte == '(' ||
+			aByte == ')' ||
+			aByte == '<' ||
+			aByte == '>' ||
+			aByte == '[' ||
+			aByte == ']' ||
+			aByte == '{' ||
+			aByte == '}' ||
+			aByte == '/' ||
+			aByte == '%';
+	}
 
 	private void increment( byte[] data )
 	{
Index: fontbox/src/test/java/org/apache/fontbox/cmap/TestCMapParser.java
===================================================================
--- fontbox/src/test/java/org/apache/fontbox/cmap/TestCMapParser.java	(revision 1495976)
+++ fontbox/src/test/java/org/apache/fontbox/cmap/TestCMapParser.java	(working copy)
@@ -30,6 +30,28 @@
 public class TestCMapParser extends TestCase 
 {
 
+    public void testWithWhitespace() throws IOException
+    {
+        final String resourceDir= "src/test/resources/cmap";
+        File inDir = new File(resourceDir);
+
+        CMapParser parser = new CMapParser();
+        CMap cMap = parser.parse( resourceDir, new FileInputStream(new File(inDir, "CMapWithWhitespace")));
+        assertNotNull(cMap);
+        assertEquals("Incorrect CMap name", "DDACTR+F1+0", cMap.getName());
+    }
+
+    public void testNoWhitespace() throws IOException
+    {
+        final String resourceDir= "src/test/resources/cmap";
+        File inDir = new File(resourceDir);
+
+        CMapParser parser = new CMapParser();
+        CMap cMap = parser.parse( resourceDir, new FileInputStream(new File(inDir, "CMapNoWhitespace")));
+        assertNotNull(cMap);
+        assertEquals("Incorrect CMap name", "DDACTR+F1+0", cMap.getName());
+    }
+
     /**
      * Check whether the parser and the resulting mapping is working correct.
      * @throws IOException If something went wrong
Index: fontbox/src/test/resources/cmap/CMapNoWhitespace
===================================================================
--- fontbox/src/test/resources/cmap/CMapNoWhitespace	(revision 0)
+++ fontbox/src/test/resources/cmap/CMapNoWhitespace	(working copy)
@@ -0,0 +1,32 @@
+%% 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.
+%%
+%% This file isn't a valid CMap file, but it contains everything what
+%% is needed to test the CMapParser
+%%
+%%EndComments
+
+/CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo <</Registry (DDACTR+F1+0) /Ordering (0) /Supplement 0 >> def/CMapName /DDACTR+F1+0 def
+/CMapType 2 def1 begincodespacerange <0000> <FFFF> endcodespacerange7 beginbfchar<0003> <0020>
+<0011> <002e>
+<001a> <0037>
+<001b> <0038>
+<0026> <0043>
+<0083> <00b0>
+<00ed> <2212>
+endbfcharendcmap CMapName currentdict /CMap defineresource pop end end
+
+%%EndResource
+%%EOF
Index: fontbox/src/test/resources/cmap/CMapWithWhitespace
===================================================================
--- fontbox/src/test/resources/cmap/CMapWithWhitespace	(revision 0)
+++ fontbox/src/test/resources/cmap/CMapWithWhitespace	(working copy)
@@ -0,0 +1,32 @@
+%% 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.
+%%
+%% This file isn't a valid CMap file, but it contains everything what
+%% is needed to test the CMapParser
+%%
+%%EndComments
+
+/CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo <</Registry (DDACTR+F1+0) /Ordering (0) /Supplement 0 >> def /CMapName /DDACTR+F1+0 def
+/CMapType 2 def 1 begincodespacerange <0000> <FFFF> endcodespacerange7 beginbfchar<0003> <0020>
+<0011> <002e>
+<001a> <0037>
+<001b> <0038>
+<0026> <0043>
+<0083> <00b0>
+<00ed> <2212>
+endbfcharendcmap CMapName currentdict /CMap defineresource pop end end
+
+%%EndResource
+%%EOF
