Home » Blog » Hacks » Bulk text resizing in PowerPoint 2011

Bulk text resizing in PowerPoint 2011

Original Japanese

Original Japanese

In-situ translation

In-situ translation

In-situ translation after bulk resizing

In-situ translation after bulk resizing

When Japanese is translated into English, the translated text generally occupies more space than the original. This can sometimes be a problem. For example, if you use a translation tool like OmegaT to perform an in-situ translation of a Japanese PowerPoint presentation, the English text is probably not going to fit properly. What you need is some sort of bulk text resizing tool.

PowerPoint doesn’t allow you to perform operations on all the slides in a presentation, like scaling down the font size of every text box. (As far as I can tell, it only allows you to select multiple text boxes and set them all to the same font size, one slide at a time.) However, it does support AppleScript, which can do the job for you.

The following script will adjust every text box in the entire presentation. It won’t do a perfect job because text boxes that contain text of different sizes will be resized to a single font size. However, it can save a lot of time when you have a large translated file with broken formatting.

You can run this script direct from the AppleScript Editor application, but if you think you’re going to use it a lot then you would be better off saving it in the PowerPoint scripts folder (~/Library/Application Support/Microsoft/Office/PowerPoint Script Menu Items/), from where it can be directly accessed via PowerPoint’s scripting menu.

The script below contains two variables that you can adjust to suit your needs: minFontSize (the font size below which no scaling takes place) and fontScaleFactor (the factor by which font sizes greater than minFontSize are scaled). Don’t forget to save a backup before running this script.

set minFontSize to 7
set fontScaleFactor to 0.65
tell application "Microsoft PowerPoint"
  tell active presentation
    set theSlideCount to count slides
    repeat with a from 1 to theSlideCount
      set numShapes to count shapes in slide a
      repeat with b from 1 to numShapes
        set sz to (font size of font of text range of text frame of shape b of slide a)
        if sz is greater than minFontSize then
          set sz to minFontSize + (szminFontSize) * fontScaleFactor as integer
          tell font of text range of text frame of shape b of slide a
            set font size to sz
          end tell
        end if
      end repeat
    end repeat
  end tell
end tell
This entry was posted in Hacks, Localisation and tagged . Bookmark the permalink.


More posts

Previous post:

Next post:

Header image: Busy night-time traffic appears as trails of light in this long exposure shot of Akasaka-Mitsuke (赤坂見附) in Tokyo by user DarkFritz at Wikimedia Commons.

Powered by WordPress