Index: src/orca/scripts/apps/soffice/speech_generator.py
===================================================================
--- src/orca/scripts/apps/soffice/speech_generator.py	(revision 4656)
+++ src/orca/scripts/apps/soffice/speech_generator.py	(working copy)
@@ -275,8 +275,9 @@
                         objectText = _("blank")
 
                     utterances.append(objectText)
+                    tooLong = self._script.getTooLongMessage(obj, objectText)
             except NotImplementedError:
-                pass
+                tooLong = None
 
             if script_settings.speakCellCoordinates:
                 nameList = obj.name.split()
@@ -290,7 +291,12 @@
                     for char in name.decode("UTF-8"):
                         if char.isdigit():
                             utterances.append(name)
+                            if tooLong:
+                                utterances.append(tooLong)
                             return utterances
+
+            if tooLong:
+                utterances.append(tooLong)
         else:
             # Check to see how many children this table cell has. If it's
             # just one (or none), then pass it on to the superclass to be
Index: src/orca/scripts/apps/soffice/braille_generator.py
===================================================================
--- src/orca/scripts/apps/soffice/braille_generator.py	(revision 4656)
+++ src/orca/scripts/apps/soffice/braille_generator.py	(working copy)
@@ -249,6 +249,10 @@
                     objectText = self._script.getText(obj, 0, -1)
                     if objectText and len(objectText) != 0:
                         regions.append(braille.Region(" " + obj.name))
+                        tooLong = self._script.getTooLongMessage(
+                            obj, objectText)
+                        if tooLong:
+                            regions.append(braille.Region(" " + tooLong))
             except NotImplementedError:
                 pass
 
Index: src/orca/scripts/apps/soffice/script.py
===================================================================
--- src/orca/scripts/apps/soffice/script.py	(revision 4656)
+++ src/orca/scripts/apps/soffice/script.py	(working copy)
@@ -538,6 +538,48 @@
         else:
             return table.nRows == 65536
 
+    def getTooLongMessage(self, obj, objectText=None):
+        """If there is text in this spread sheet cell, compare the size of 
+        the text within the table cell with the size of the actual table 
+        cell and report back to the user if it is larger.
+
+        Arguments:
+        - obj: the object to check.
+
+        Returns an indication of how many characters are greater than the size 
+        of the spread sheet cell, or None if the message fits.
+        """
+
+        tooLong = None
+        
+        try:
+            text = obj.queryText()
+            if not objectText:
+                objectText = self.getText(obj, 0, -1).decode("UTF-8")
+            extents = obj.queryComponent().getExtents(pyatspi.DESKTOP_COORDS)
+        except NotImplementedError:
+            return tooLong
+        
+        print "OBJECT EXTENTS: x=%d y=%d width=%d height=%d" \
+              % (extents.x, extents.y, extents.width, extents.height)
+        tooLongCount = 0
+        for i in range(0, len(objectText)):
+            [x, y, width, height] = text.getRangeExtents(i, i+1, 0)
+            print "%s: x=%d y=%d width=%d height=%d" \
+                  % (objectText[i:i+1], x, y, width, height)
+            if x < extents.x:
+                tooLongCount += 1
+            elif (x + width) > extents.x + extents.width:
+                tooLongCount += len(objectText) - i
+                break
+
+        if tooLongCount > 0:
+            tooLong = _("%d characters too long") % tooLongCount
+
+        print "tooLong =", tooLong
+
+        return tooLong
+
     def isDesiredFocusedItem(self, obj, rolesList):
         """Called to determine if the given object and it's hierarchy of
            parent objects, each have the desired roles.
