                 var bitmap :Bitmap = _bitmaps[idx];
                 if (nvalue != 0x20) {
                     if (bitmap == null) {
-                        _bitmaps[idx] = bitmap = new Bitmap();
+                        _bitmaps[idx] = bitmap = (_bitmapPool.length == 0) ?
+                            new Bitmap() : _bitmapPool.pop();
                         bitmap.x = _x + xx*_charWidth;
                         bitmap.y = _y + yy*_charHeight;
                         addChildAt(bitmap, 1);

    /** The character bitmaps for each location. */
    protected var _bitmaps :Array;

    /** The cached bitmap data for each character. */
    protected var _bitmapData :Object;


                } else if (bitmap != null) {
                    removeChild(bitmap);
                    _bitmaps[idx] = null;
                    bitmap.bitmapData = null;
                    _bitmapPool.push(bitmap);
                }
            }
        }
