Font embedding in PowerPoint is great, when it works. But macOS users can have mysterious problems that are hard to diagnose and even harder to fix. This article sorts out the most common PowerPoint for Mac font embedding issues and how to prevent them.
Some of Your Fonts Cannot Be Saved
The client has asked that the presentation be saved with the corporate fonts, to make distribution easier. On your Mac, you choose PowerPoint>Preferences>Save and check the Embed fonts in the file option, along with the Embed all characters sub-option, so the deck can be edited. Then you choose File>Save As to get the fonts embedded. But when you click the Save button, you get a dialog that reads: Some of your fonts cannot be saved with the presentation. Save the presentation anyway?
First, trying fixing this with PowerPoint’s Edit>Find>Replace Fonts utility. If that works, you’re good to go. But if it doesn’t, you’re probably dealing with a bullet font problem.
When you create a custom bullet in PowerPoint for Mac, PowerPoint uses the macOS Emojis & Symbols utility for picking the bullet. But the Emojis & Symbols dialog doesn’t immediately tell you which font is being used. You have to click on a sample in the Font Variation area to check the typeface. If you don’t choose a font variation, the Emojis dialog will give you a symbol from one the system fonts.
System Font Regular Can’t Be Embedded
When you first try to enter a custom bullet, the Emojis & Symbols dialog appears in condensed form:
It’s nearly impossible to insert an embeddable bullet from this dialog, as only macOS system fonts are displayed. Instead, click on the expander icon in the upper right corner (circled in red) to view the large form of the dialog:
A bullet is selected, and the preview in the upper right corner is labelled BULLET. When the font name is not displaying here, you are inserting a non-embeddable bullet from an Apple system font. Saving the file displays this dialog:
System Font Regular isn’t an actual font. It’s a pointer to whatever font macOS is currently using to display opertaing system text. The font can change between releases of macOS, but the pointer retains the same name.
Unsupported Font File Format
The key to choosing an embeddable bullet is to always choose one from the Font Variation panel in the lower right side of the dialog. But not all of those variations will work! Any font with Apple in the name is formatted as an AAT (Apple Advanced Typography) font. Here, I’ve chosen Apple SD Gothic Neo Regular as the bullet font:
But when I save, I see this:
AAT fonts can’t be embedded in Office files!
PowerPoint Font Embedding – What Works
All the other fonts that I’ve tried in the Font Variations panel can be embedded. Here, I’ve chosen Arial:
The file saves! No errors!
Here’s your working procedure for custom bullets in macOS:
Always expand the Emojis & Symbols dialog to full size.
Always choose a bullet from the Font Variations panel.
Never choose a bullet from a font that has Apple in the name, nor one that is called System Font Regular
I haven’t tested every font, so there could other than cause issues. If you find one, please write to me and I’ll update this article.
Keep in mind that fonts can also have embedding permissions set by the foundry that prohibit embedding, so these would be a poor choice for use with Office. But that’s an issue in Windows as well as macOS
PowerPoint Font Embedding – Fixing a Problem
You got the dreaded Save with Fonts dialog, and you’ve tried Edit>Find>Replace Fonts. The dialog still appears. What do you do now? That’s a real problem in PowerPoint for macOS.
In Windows, I fix these issues with the following steps:
Open the file in PowerPoint, choose Save As and set the Save as type dropdown to PowerPoint XML Presentation (*.xml) and click on Save. This saves the deck as one giant XML file instead of the usual format of many small XML files tucked into a Zip archive.
Open the XML file in a text editor. NotePad will work but a real coding editor like NotePad++ or Microsoft Code is better.
Do a Find and Replace, finding typeface=”System Font Regular” (substitute the problem font name) and replacing it with typeface=”Arial” (substitute a known embeddable font name).
Save the file, open it in PowerPoint, then resave in normal .pptx or .potx format.
Unfortunately, Microsoft has not given PowerPoint for Mac the XML single-file format. So the fix requires that you check each bullet in the slide master, slide layouts and slides. PowerPoint does not have a way of seeing what the font is for existing bullets, so you have to slog through and replace every damn one! Yuck!
Out of time and no access to PowerPoint for Windows? Send the file to us, and we’ll do the fix for you.
As Apple and Microsoft release new operating systems, it’s no longer possible to install the latest version of Office on your old computer. Here’s is a list of the most recent Office you can run for the operating system you have, plus where to find it.
Most Recent Office You Can Run on macOS
Rant alert! Microsoft supports the last three operating systems in both Windows and Mac. Unfortunately, Apple has a policy of releasing a new operating system every year, whether we need it or not. The result of these two business decisions is that there are rafts of perfectly serviceable Macs out there that can no longer install the current version of Office. It looks like Apple intends us to toss them and buy new ones. Another case of lip service to environmental sustainability. Rant over
If you buy or subscribe to Office for Mac today, you’ll only find the current versions of Microsoft 365 (the subscription version) and Office 2021 (the retail edition) to be easily available. But Microsoft maintains a page of older installers at Update history for Office for Mac. All of them can be activated under a current Microsoft 365 subscription or Office 2021 license.
Please note that all of these are final releases: there will be no security updates to follow. Be careful when downloading Office files from the interweb.
At the time of writing, the current crop of obsolete Macs are those that can only run Catalina. These are machines that are around 10 years old, but are completely useable for applications like Office. The last Office version that Catalina can run is 16.66. At the History page, look for the Installer dated October 11, 2022. Download and run the installer. Then, in an Office program, choose Help>Check for Updates to get the final 16.66.1 version.
Catalina was the first OS to require 64-bit software. This requirement made Office 2011 obsolete, since it’s 32-bit. But Office 2011 is still a useful edition in macOS. It can still do things that were permanently removed from later versions of Office. So you might want to stick with Mojave and install the newer Office that goes with it. (There’s no problem in having Office 2011 and a later version installed on the same computer.) In this scenario, download and install the 16.54 version dated October 12, 2021.
One of my favorite Macs is my 17″ MacBook Pro. It’s the machine that travels with me, but it’s 12 years old and can run only High Sierra. The most recent Office you can run on this computer is 16.43, dated November 10, 2020.
There’s a pattern here: Apple releases new operating systems in the fall, usually in September or October. The Office version that Microsoft releases the same month is the last one for the fourth-oldest macOS. I don’t have any machines running Sierra, but if I did, I would try the October 15, 2019 edition of Office 16.30.
As I mentioned earlier, you can run an older version of Office on an older computer. Since Office 2008, the file format has remained pretty constant, so the software can still be useful. You can install Office 2011 under Mojave or earlier, while Office 2008 can be installed under El Capitan and earlier. These versions can co-exist on a Mac with a newer version (or with each other), though Microsoft’s History page only goes back to 16.27 from July, 2019.
Most Recent Office You Can Run on Windows
Under Windows, the situation is easier, as Microsoft waits about 3 years between operating systems. Plus Windows isn’t as finicky about the hardware it runs on. I have an old Mac Pro from 2006 that can only run OS X Lion and Office 2011, but under Boot Camp it does either Windows Vista and Office 2010, or Windows 7 and Office 2016. Windows 8 is likewise limited to Office 2016, while Windows 10 (now 9 years old!) can run the current version of Office 2021 and Microsoft 365. You have to have a really old Windows computer to be unable to run a useable copy of Office.
Years ago, Ken Puls of the excellent Excelguru site published an Excel add-in that displays the icons built into Excel. This reference is useful for any programmer wanting to repurpose built-in icons to use with their own code. Here’s where you can download the original: Office 2007 Icon Gallery. His version has gradually become outdated as Microsoft has added more icons to the software, and there was no version for PowerPoint. The latter isn’t such a big deal, because Excel, Word and PowerPoint share a common library of icons.
With Ken’s gracious permission, I’ve created an updated PowerPoint version of this add-in. This displays all the icons in current versions of Office, and it runs under PowerPoint for Windows and for Mac.
This is version 2. If you downloaded this prior to January 24, 2023, please download and install this improved version. I haven’t created an installer for this, but here are the instructions for manual installation:
The download is a zip file that holds a single Icon Gallery.ppam file. Expand the zip and copy the .ppam file to your desktop or other easy-to-find location. Here’s how to make it appear in PowerPoint for Windows:
In PowerPoint, choose File>Options>Add-ins.
Change the Manage dropdown to PowerPoint Add-ins, then click on the Go button. The Add-ins dialog opens.
Click on the Add New button. Navigate to the location where you saved the .ppam file, select it and click on OK. The Add-ins dialog should look like this, displaying the add-in name with a check mark beside it:
Click on the Close button.
In PowerPoint, select the View tab. At the right end, you should see a new group called Office Icons:
In PowerPoint, choose Tools>PowerPoint Add-ins from the macOS menu bar. The Add-ins dialog opens.
Click on the Plus (+) sign. Navigate to the location where you saved the .ppam file, select it and click on OK.
PowerPoint will pop up a macro warning. Click on the Enable Macros button.
Then PowerPoint will pop up this dialog, astoundingly badly worded, even for Microsoft: It sounds like you’re turning off macro protection completely, right? Well you’re not. This just turns it off for this file, and it has no effect on the macro virus protection settings, so there’s nothing to even turn on again! Click on Turn Off.
The Add-ins dialog should look like this, displaying the add-in name with a check mark beside it:
Click on the OK button.
In PowerPoint, select the View tab. At the right end, you should see a new group called Office Icons:
Using the PowerPoint Icon Gallery
Click on one of the galleries to see a group of icons. Here are the first 256:
Hover over an icon to see its idMso command name.
Click on an icon to open a dialog that shows the command name for use with idMso or imageMso commands. Click on the Copy to Clipboard button to copy the command name. Then paste the name into your XML or other code. Due to a bug in File Explorer, all Explorer windows must be closed for this to work as expected.
Click on one of the galleries to see a group of icons: Note the grey spinning icons: Those are objects that exist in the Windows version, but not in macOS. One of the drawbacks of trying to develop for both platforms is that Microsoft has only done half the job in Office for Mac. Avoid these icons for cross-platform macros.
Hover over an icon to see its idMso command name.
Click on an icon to open a dialog that shows the command name for use with idMso or imageMso commands. Click on the Copy to Clipboard button to copy the command name. Then paste the name into your XML or other code.
Uninstalling the PowerPoint Icon Gallery
In PowerPoint, choose File>Options>Add-ins.
Change the Manage dropdown to PowerPoint Add-ins, then click on Go.
Select the add-in, then click on the Remove button. Close the dialog. The icon gallery disappears from the View tab.
In PowerPoint, choose Tools>PowerPoint Add-ins (on the macOS menu bar).
Select the add-in, then click on the Minus sign (-). Close the dialog. The icon gallery disappears from the View tab.
Wouldn’t it make more sense to have this on the Developer tab? Well, yes, it would, that’s where the Icon Gallery appears in Ken Puls’ original add-in. But I made one file to work on both Windows and macOS. PowerPoint for macOS is missing the Developer tab. So I put this on the View tab as a second-best location.
Why no icon preview, as in Ken’s original add-in? Previewing icons in VBA relies on the CommandBars.GetImageMso command. This has been deprecated and in recent versions of Office, does not deliver an accurate icon preview. The command is not available at all on Macs, so I removed the preview. But you can see the 32 x 32 version of the icon in the gallery dropdown, not much has been lost.
The ebook version of OOXML Hacking has been released. The last three years have gone into adding the equivalent of 40 pages of new information. This is in addition to the trove of unique techniques that already appeared in the print version. Here are screen shots of the table of contents, to give you an idea of the topics covered in this publication:
Barnes & Noble distributes only in the U.S., so use Kobo.com if you’re from another country.
As always, all techniques are covered in both Windows and Mac, where possible. The book contains a link to a downloadable text file of all listings in the book, so you don’t have to re-key text from the screen. The book is currently available on Kobo.com and Barnes & Noble. Barnes & Noble distributes only in the U.S., so use Kobo.com if you’re from another country.
Please note, this e-book has digital rights management applied. All code listings are available in a downloadable text file, so you don’t have to re-key anything. If you have any problems, please contact us at this address
I also answer questions at Experts Exchange, where I’ve been awarded a Distinguished Expert award for 2021.
This site isn’t free, but it is jam-packed with expertise. There’s a 7-day free trial, if you want to check it out. Tag your post with Microsoft PowerPoint, Microsoft Word, VBA and/or Fonts Typography to ensure your Office questions are answered.
The vast majority of presentations are created using the default templates that comes with Microsoft PowerPoint. All Microsoft-compatible PowerPoint templates have a uniform structure, and the result is that you can copy and paste slides between any deck and the paste works as expected: the content comes across perfectly, and the formatting is updated.
But in almost all corporate presentations with custom templates, this no longer works. Slides pasted from Microsoft-based presentations always need to be reformatted manually, because the custom template haven’t been created to be Microsoft-compatible.
It doesn’t have to be this way. Here’s how to create custom templates that will be both Microsoft-compatible and have a look and feel that is brand-compatible with the organization.
What’s in a Microsoft-Compatible PowerPoint Template?
Most designers create presentation templates incorrectly for the purpose of importing of slides created with Microsoft templates. Almost universal infractions include deleting or renaming the default slide layouts, and deleting or adding placeholders on whatever default slide layouts are left. Less common methods that designers use to wreck templates include deleting all placeholders on the master slide, and deleting all default layouts, then trying to replace them
To understand why these actions could cause problems, we need to understand the PowerPoint file structure. All new blank PowerPoint files contain the following:
1 Master Slide (in Slide Master view, the larger slide at the very top of the left-hand thumbnail list). The parent to all the layouts, to which the slide layouts are children. All text formatting is inherited from this slide. Deleting placeholders here will cripple the template.
11 default slide layouts, which inherit the formatting set in the master slide. These 11 comprise:
Title Slide, for the presentation title.
Title and Content, for the bulk of the presentation content.
Section Header, to divide the deck into relevant sections.
Two Content, with 2 content areas.
Comparison, similar to Two Content, but each content area also has a corresponding heading placeholder.
Title Only, displaying only a Title field, with the rest of the slide blank.
Blank, with not even a Title field.
Content with Caption, a little-used layout the includes a Title, Text and Content placeholder.
Picture with Caption, similar to Content with Caption, but with a Picture placeholder replacing the Content one.
Title and Vertical Text This layout is intended for Asian language use and is only displayed as a choice if your operating system has an Asian language set up.
Vertical Title and Text Similar to the previous layout, only visible on computers with Asian language input enabled in the operating system.
Each of these layouts has a specific layout type, set in XML and not alterable in the program interface. You can create the correct placeholder types by generating a new, blank PowerPoint file. Each of these layouts contains placeholders for the date and slide number, plus a footer field. All but 1 have a title placeholder.
Here’s the second line of a default Microsoft layout. In this example, obj is the XML type for a Title and Content layout:
PowerPoint reads the userDrawn property and will not treat your layout as a default layout no matter what you do to it. It will never be Microsoft-compatible.
If you have deleted a default slide layout, you can restore it by creating a new blank presentation, then copying and pasting the layout under the slide master of the deck to be repaired. You can also restore a default layout by running this VBA:
.Add(.Count + 1, ppLayoutObject).Delete
The example above restores a deleted Title and Content layout. Just change ppLayoutObject to the type you need from this list:
Title and Content
Content with Caption
Picture with Caption
Title and Vertical Text
Vertical Title and Text
Here are the recommendations that Microsoft should have published with the release of PowerPoint 2007: All new PowerPoint templates should include all default slide layouts and placeholders. That would have saved so much grief! Every file would be a Microsoft-compatible PowerPoint template or theme.
Please note, I am not suggesting that you restrict your design to only these layouts and placeholders. As long as you have the default layouts with the default placeholders, the rest of the master slide view can be filled with all kinds of special-purpose layouts with any number of placeholders. Just remember, whatever you create today must be supported in the future, if the slides are to remain paste-compatible. For more details, please see my article about best practices for reusing old (legacy) slides: Legacy Slides – Best Practices
I’m adding a plea for sanity on behalf of users everwhere: restraint in slide layout numbers is best for your client’s users. Too many layouts and they just don’t know which one to pick! Don’t confuse them more than they already are. Consider a limit of 25 layouts maximum.
We have years of expertise in this area and can assess your template for Microsoft compatibility, or create a template or theme for you that will work seamlessly with decks based on Microsoft templates. We’re here to help! Contact me at firstname.lastname@example.org.
Chart templates solve the old problem of having to send out copy-and-paste samples of graphs. But they only display the first 6 of the chart template colors you designed.
Adding More Colors
The most common application of chart templates is to overcome the design limitation of having only a 6-color palette to work with. I wrote about this problem years ago: Office Charts: 6 Colors Maximum! – Best Practices. After a chart uses Accents 1 to 6, it starts recycling those same 6 colors with automatically generated darker and lighter variations. Banks and wealth management clients often need many more than 6 data series in their charts, but still want to have colors that are on-brand and designed.
To create a wider range of data series colors, create a chart with the maximum number of data series that the client requires. Our record is 25 colors! Then right-click on the chart edge and choose Save as Template. This captures the formatting of the sample that you’ve created.
Your template will work just fine on charts that have already been created. Select the chart, choose Change Chart Type (yes, even if it’s the right type already), click on the Templates icon, select the chart template and click on Apply. Easy peasy, job done!
The New Chart Problem
But this process breaks down if you try to create a new chart from that template. Choose Insert>Chart, click on Templates, and select the chart type. Then start inputting data. As soon as you get past the 6th color, Office starts using those damn Microsoft default darker and lighter variations instead of the colors you set! This is Authoritarian Helpfulness at its worst!
Yes, you can fix this. Reapply the template by choosing Change Chart Type>Templates and reselecting the template. The colors are corrected to the design specs. But you shouldn’t have to do this! And now that you’ve found this article, you don’t have to.
Understanding Chart Template Colors
Let me back up a bit, and explain how chart templates are structured. The top level of the XML consists of [Content_Types].xml, a _rels folder for documenting the relationships of XML parts and a chart folder holding the good bits.
Inside the chart folder, we find chart.xml, which holds most of the formatting that we created when we made the custom chart. Chart.xml contains definitions that contain the intended series color. The colors in chart.xml get set when you save the file as a chart template, and they get used when you apply the template to an existing table. But they are not used when you create a new chart.
Each series is numbered starting with 0, so this is the series for the 7th color. For the first six, the color is set to an accent color. Starting with the 7th, the color fills are in RGB/hexadecimal. Here’s a sample:
In addition, there are subfolders for charts, media, theme, and _rels. The media folder only holds a BMP file that is used for thumbnail display in Office 2007 and 2010, but not in later versions. The _rels folder is for relationships of XML parts. The theme folder contains themeOverride1.xml. As the name suggests, this is a theme that overrides the theme of an Office file that hosts it. This allows you to use a chart template in any Office document while retaining the original design appearance. Finally, we have the charts folder, which has the XML part we’re looking for.
This folder contains 2 files: style1.xml, containing the formatting for all the chart parts and colors1.xml, with a list of default fill colors and transforms fo apply to those colors. Colors1.xml is the file that supplies the colors when a new chart is created from the template. Here’s what colors1.xml looks like:
On a newly inserted chart, an Office program will use the 6 colors in turn. Then it will cycle through them again, applying the a:lumMod val=”60000″ transform. LumMod modifies the luminance, turning each accent color to a dark version. The chart will follow this pattern instead of using the colors you designed for the extra data series. If you reapply the chart type to the chart, then it will update with your designed colors from chart.xml
Fixing Chart Template Colors
My first step was to read the Microsoft specs for cs:colorStyle. Under section 188.8.131.52 CT_ColorStyle, it reads: “The total set of colors is all contained colors repeated each time with each variation applied. A color style can contain 6 colors and 7 variations. This yields a total of 42 colors with the first 6 having the first variation applied, the second 6 having the second variation applied and so on.” Not promising, we really need more than 6 colors here.
After many fruitless experiments, I decided to see if I could add extra colors anyway:
To my astonishment, it worked! I could create a new chart and insert 10 dataseries with each displaying the designed color. No need to reapply the template! Who would ever have dreamt that Microsoft documentation has a mistake in it! ;-D
The takeaway is that to create a many-colored chart template that works as expected under all circumstances, you need to set the extra color values manually in colors1.xml.
For Office users, the closest thing to a “programming language of the people” is VBA. It’s not too hard to get started, there are gobs of help information from a good search, and the results are immediate. But VBA’s abilities haven’t expanded as its environment has changed. This has become abundantly clear with current versions of Office, where task panes and the Windows-version Backstage haven’t been included in the VBA object model. Many want to edit OOXML with VBA, but Microsoft prefers to shuffle you off to the Open XML SDK programmed with C# to do that job.
Fortunately, we’re on the case at Brandwares. We collaborated with programmer Jan Karel Pieterse to develop a PowerPoint version of his macro set that edits Excel OOXML. We’re making this freely available as a download so you can get the benefit of this.
Let me apologize to my macOS readers. I really try to provide solutions that work cross-platform, but this macro set relies on Windows system calls.
I’ll be honest, this isn’t the most elegant OOXML editing solution. The macro set unzips the OOXML to its component files, gives you the opportunity to edit the XML using VBA string manipulation, then rezips the OOXML to a usable PowerPoint file. The unzip/rezip operations are fairly slow, especially with large files. It’s not something you can use in a real-time editing situation.
One of Brandwares’s specialties is converting legacy presentations to new themes/templates. Often, there are OOXML mismatches that make reused slides retain artifacts or formatting from the old decks. We solve these issues with macro convertors that take a folder full of old decks and transform them into new presentations with new branding. This macro set is great for that.
Edit OOXML with VBA: a Peek Under the Hood
THe file contains 3 VBA modules and 1 class module. Module modConvert is the only one you need to modify. In it, Sub MainVBAOperations does the actual work of opening files, saving as a work file, calling the XML process, saving the modified file and deleting the work file. This is also where you would do any additional VBA processing. As one example, after you modify the XML of a slide master or layout, you have to reset the slide based on it to display the changes. MainVBAOperations is where you would do this.
The other Sub is ProcessXML. Here’s where you unzip the file being modified, open different XML parts for find and replace processes, followed by a rezip of all files back to a working file. The sample code in this module shows a typical revision to the idx numbers of placeholders, a common requirement of legacy presentation conversions and one that can’t be done with the PowerPoint interface.
The module modDisplay, by Shyam Pillai, provides the PowerPoint equivalent of the Application.Screenupdating command that exists in Word VBA. Useful to prevent the screen flashing and jumping as files are processed, it also helps speed code execution. modUNC by Randy Birch, assists with file management.
Jan Karel Pieterse wrote the class module clsEditOpenXML that does the heavy lifting of unzipping and rezipping the document to be modified and reading and writing the XML.
As noted in the code, You are free to use this code within your own applications, add-ins, documents etc but you are expressly forbidden from selling or otherwise distributing this source code without prior consent. This includes both posting free demo projects made from this code as well as reproducing the code in text or html format.
Converting Legacy Presentations
We use often use this macro set to update old (legacy) presentations with a new design. Successful updating requires meeting 5 criteria, please read this article for more details: Legacy Slides – Best Practices. As noted on that page, the 5th requirement is that placeholder idx numbers in the OOXML must match on the old and new layouts. There’s nothing in PowerPoint’s interface that allows you to set idx number, but this macro set allows you to do just that. The pre- and post-processing sections of the macros allow you to set the the other 4 parameters for each slide layout. Click here to download it.
The following advice is particular to presentation conversion. It’s routine that slide masters and layouts will be changed in that process. Then, to apply those changes to the actual slides in a presentation, the slides must be reset, as if you pressed the Home>Reset button in a presentation. Resetting slides wipes out character-based formatting. If a user has applied bold or italic or an underline to particular text, that all will disappear. It’s important to notify your client of this. To make an exact update would require a painstaking construction of a multi-dimensional array for each placeholder on each slide that would record all character-based formatting, then restore it after the update, for which you would have to charge many times as much as for the basic conversion work.
Brandwares is a world leader in presentation updating and conversion. We’re available for presentation assessments, to identify potential problems. We have multiple techniques for seamless re-use of legacy presentations. Contact us when you’re redesigning to ensure your new template will reuse your old slides without a hiccup.