Discussion:
Replacing fonts -- double-byte vs. single-byte
(too old to reply)
Kamran
2009-10-19 16:49:18 UTC
Permalink
Once again, Microsoft has managed to ramp up the frustration meter.......

I'm trying to replace fonts, and I keep getting this message that I'm trying
to replace a double-byte font with a single-byte font. But the genius of the
whole system is: they don't tell you which ones are single and which ones
are double. How do I know?
Echo S
2009-10-19 17:29:16 UTC
Permalink
You don't. Until you try to replace it and it won't replace. At least that's
how it always works for me!

http://www.pptfaq.com/FAQ00287.htm might give you some ideas for replacing
the font.
--
Echo [MS PPT MVP] http://www.echosvoice.com
What's new in PPT 2007? http://www.echosvoice.com/2007.htm
Fixing PowerPoint Annoyances http://tinyurl.com/36grcd
PowerPoint 2007 Complete Makeover Kit http://tinyurl.com/32a7nx
Post by Kamran
Once again, Microsoft has managed to ramp up the frustration meter.......
I'm trying to replace fonts, and I keep getting this message that I'm trying
to replace a double-byte font with a single-byte font. But the genius of the
whole system is: they don't tell you which ones are single and which ones
are double. How do I know?
j***@gmail.com
2015-06-04 17:31:42 UTC
Permalink
Post by Echo S
You don't. Until you try to replace it and it won't replace. At least that's
how it always works for me!
http://www.pptfaq.com/FAQ00287.htm might give you some ideas for replacing
the font.
--
Echo [MS PPT MVP] http://www.echosvoice.com
What's new in PPT 2007? http://www.echosvoice.com/2007.htm
Fixing PowerPoint Annoyances http://tinyurl.com/36grcd
PowerPoint 2007 Complete Makeover Kit http://tinyurl.com/32a7nx
Echo S,

Thanks so much for your post and links!

Before reading your post, I was trying to replace "Arial (Headings)" which apparently was a double byte font with "Arial" which was identified as a single byte font. After learning that Asian characters are generally double byte, I globally replaced "Arial (Headings)" with "AngsanaUPC", then globally replaced AngsanaUPC with plain old Arial and it worked!

For those who want to know how to globally replace fonts in a document, I found this page very helpful.
http://www.geekshangout.com/content/powerpoint-some-your-fonts-cannot-be-saved-presentation
Steve Rindsberg
2009-10-19 20:19:34 UTC
Permalink
Post by Kamran
Once again, Microsoft has managed to ramp up the frustration meter.......
I'm trying to replace fonts, and I keep getting this message that I'm trying
to replace a double-byte font with a single-byte font. But the genius of the
whole system is: they don't tell you which ones are single and which ones
are double. How do I know?
For starters, any Unicode and most Chinese/Japanese/Korean (CJK) fonts will be
doublebyte.

Here's a little trick, though. Run the following VBA code on a COPY of your
presntation. It simply asks PPT to replace each font in the presentation with
Arial (change the Replacement:="Arial" line if you want a different font).

PPT won't error but it won't replace doublebyte fonts with single byte fonts.
After you run the code, choose Format, Replace fonts. What you'll have left in
the upper list box is Arial (of course) plus your double-byte font names.

Sub FiddleDaFonts()

Dim x As Long
On Error Resume Next

With ActivePresentation
With .Fonts
For x = 1 To .Count
With .Item(x)
Debug.Print .Name
ActivePresentation.Fonts.Replace _
Original:=.Name, Replacement:="Arial"
End With
Next
End With
End With

End Sub


==============================
PPT Frequently Asked Questions
http://www.pptfaq.com/

PPTools add-ins for PowerPoint
http://www.pptools.com/
TAJ Simmons
2009-10-20 10:07:15 UTC
Permalink
Kamran,

Arial is a double byte font - I believe

cheers
TAJ Simmons
PowerPoint Master

http://www.awesomebackgrounds.com
awesome - powerpoint templates,
powerpoint backgrounds, free samples, ppt tutorials...
Post by Kamran
Once again, Microsoft has managed to ramp up the frustration meter.......
I'm trying to replace fonts, and I keep getting this message that I'm trying
to replace a double-byte font with a single-byte font. But the genius of the
whole system is: they don't tell you which ones are single and which ones
are double. How do I know?
Steve Rindsberg
2009-10-20 14:41:35 UTC
Permalink
Post by TAJ Simmons
Kamran,
Arial is a double byte font - I believe
Unicode, at least in some versions, and I don't think Unicode is exactly the
same as double-byte, at least not from PPT's POV.

Interesting though ... in 2007, when you do Replace Fonts, it only shows you
acceptable replacement fonts in the lower dropdown box when you choose a
unicode font in the upper one. Nice touch.



==============================
PPT Frequently Asked Questions
http://www.pptfaq.com/

PPTools add-ins for PowerPoint
http://www.pptools.com/
Echo S
2009-10-20 14:53:29 UTC
Permalink
Post by Steve Rindsberg
Post by TAJ Simmons
Kamran,
Arial is a double byte font - I believe
Unicode, at least in some versions, and I don't think Unicode is exactly the
same as double-byte, at least not from PPT's POV.
Interesting though ... in 2007, when you do Replace Fonts, it only shows you
acceptable replacement fonts in the lower dropdown box when you choose a
unicode font in the upper one. Nice touch.
FWIW, PPT gives me the "you're trying to replace a double-byte font" message
when I try to replace Arial Unicode with Arial.

So I guess I always associated Arial Unicode with double-byte and consider
"regular" Arial a single-byte font.
--
Echo [MS PPT MVP] http://www.echosvoice.com
What's new in PPT 2007? http://www.echosvoice.com/2007.htm
Fixing PowerPoint Annoyances http://tinyurl.com/36grcd
PowerPoint 2007 Complete Makeover Kit http://tinyurl.com/32a7nx
Steve Rindsberg
2009-10-20 19:38:59 UTC
Permalink
Post by Echo S
Post by Steve Rindsberg
Post by TAJ Simmons
Kamran,
Arial is a double byte font - I believe
Unicode, at least in some versions, and I don't think Unicode is exactly the
same as double-byte, at least not from PPT's POV.
Interesting though ... in 2007, when you do Replace Fonts, it only shows you
acceptable replacement fonts in the lower dropdown box when you choose a
unicode font in the upper one. Nice touch.
FWIW, PPT gives me the "you're trying to replace a double-byte font" message
when I try to replace Arial Unicode with Arial.
So I guess I always associated Arial Unicode with double-byte and consider
"regular" Arial a single-byte font.
Hmmm.

Have you checked the current version of Arial on your system with the font
properties extension? I'm sure it was once non-unicode/non-doublebyte. But
given the size and the number of glyphs it includes now, it simply can't be
single-byte (which'd be limited to 255 characters)

I suspect that we're getting the generic "Can't do that, boss" font error and
it's just badly/vaguely worded.

Ya think they let the "File not found" guy near the keyboard again?


==============================
PPT Frequently Asked Questions
http://www.pptfaq.com/

PPTools add-ins for PowerPoint
http://www.pptools.com/
Steve Rindsberg
2009-10-21 19:09:02 UTC
Permalink
This gets interesting. Did a bit more digging and found:

First, in PPT 2003 and 2007, if I set text in MS Arial Unicode, then try to do
Replace Fonts, it only offers me (what I think are) Unicode fonts in the
Replace With dropdown.

It also restricts the Replace With choices in some other circumstances.

Next, doublebyte is not the same as Unicode, at least not in the usual way
"doublebyte" is used.

This is probably way oversimplified, but in Unicode, every character is a two
byte number that tells the system where the font stores the info needed to draw
the character.

Before Unicode, languages like Chinese/Japanese/Korean (CJK) used a different
type of encoding to point to the right character info in a font.

You might have a string of single bytes; these would point to the same
characters as our usual Western fonts. Then there might be a couple of "flag"
or "shift" bytes, an ESC character followed by another byte, for example.
This'd tell the system to shift to doublebyte mode; from then until another
shift sequence came by, the system would read the first byte of each character
pair as a pointer to the character TABLE, and the next byte as the pointer to
the character within that table.

Kinda like:

Letter 001
Letter 008
Letter 042
YO! SHIFT IN!
Page 012 Letter 008
Page 018 Letter 003
YO! SHIFT OUT!
Letter 018
Letter 012

etc., with none of the numbers > 256

Where Unicode is more like:

Letter 02345
Letter 00002
Letter 73459

and so on with none of the numbers greater than umptybazillion.

OK. So what, right? ;-)

Well, with all that shiftystuff, traditional doublebyte is fragile. Lose one
byte at the wrong time and your text is hosed.

And there were quite a few different doublebyte encoding systems; in Japanese,
they were all similar enough that it was VERY difficult (impossible in some
cases) to tell accurately which you were looking at. And all just different
enough that if you guessed wrong (or your PC did) you got gibberish.

So I'm guessing that MS is trying to guarantee first and foremost that they
don't mung our text. That'd mean not allowing us to substitute just any
doublebyte font for any other. The encoding would have to match or at least be
compatible.

And of course, substituting a single byte for a double byte font would
virtually guarantee that the text would get hosed, so they don't want to do
that either.

I suppose they could let you choose a different font on a provisional basis,
then read through all the text in the file and if there's so much as one non-
latin character that isn't available in the new font, kibosh the deal, but
that'd be slow, error prone, almost as frustrating to the user and would take a
lot of dev time to implement; time they could put to use against features/bugs
that'd affect far more people.

And why not let us sub Unicode fonts for any ol' double byte font? Because
there's no one-to-one match between characters and there's no guarantee that a
unicode font would even HAVE the needed characters. Hardly any of them have
the whole universe of possible characters, y'see. MS Arial Uni's the exception
(and wouldja lookit the SIZE of that thing!).

Arial has 1674 characters, Arial UNI 50,000+

Unicode fonts also have named groups and the font properties tell you whether
the font contains the characters in a given group, so PPT might be looking at
the original font and only presenting possible replacements that support the
same groups. If the original font is available; if not, we're back to the
original problem of working out what encoding's used, if we can, and whether
the characters needed by each character in each bit of text in the presentation
are supported by the chosen substitute font. And again, I figure that's too
much work and too likely to fail. So we get the PPT "Nuh-uh, not gonna"
instead.

Not that any of this helps solve the problem of course ... but I guess it's
interesting to know the breed of dog that's sunk its teeth into your butt and
why he's mad at you if you can't get him to turn loose in any case.




==============================
PPT Frequently Asked Questions
http://www.pptfaq.com/

PPTools add-ins for PowerPoint
http://www.pptools.com/
Lucy Thomson
2009-10-21 22:04:33 UTC
Permalink
Fascinating stuff. Thanks for sharing Steve.

Lucy
--
Lucy Thomson
PowerPoint MVP
MOS Master Instructor
www.aneasiertomorrow.com.au
Post by Steve Rindsberg
First, in PPT 2003 and 2007, if I set text in MS Arial Unicode, then try to do
Replace Fonts, it only offers me (what I think are) Unicode fonts in the
Replace With dropdown.
It also restricts the Replace With choices in some other circumstances.
Next, doublebyte is not the same as Unicode, at least not in the usual way
"doublebyte" is used.
This is probably way oversimplified, but in Unicode, every character is a two
byte number that tells the system where the font stores the info needed to draw
the character.
Before Unicode, languages like Chinese/Japanese/Korean (CJK) used a different
type of encoding to point to the right character info in a font.
You might have a string of single bytes; these would point to the same
characters as our usual Western fonts. Then there might be a couple of "flag"
or "shift" bytes, an ESC character followed by another byte, for example.
This'd tell the system to shift to doublebyte mode; from then until another
shift sequence came by, the system would read the first byte of each character
pair as a pointer to the character TABLE, and the next byte as the pointer to
the character within that table.
Letter 001
Letter 008
Letter 042
YO! SHIFT IN!
Page 012 Letter 008
Page 018 Letter 003
YO! SHIFT OUT!
Letter 018
Letter 012
etc., with none of the numbers > 256
Letter 02345
Letter 00002
Letter 73459
and so on with none of the numbers greater than umptybazillion.
OK. So what, right? ;-)
Well, with all that shiftystuff, traditional doublebyte is fragile. Lose one
byte at the wrong time and your text is hosed.
And there were quite a few different doublebyte encoding systems; in Japanese,
they were all similar enough that it was VERY difficult (impossible in some
cases) to tell accurately which you were looking at. And all just different
enough that if you guessed wrong (or your PC did) you got gibberish.
So I'm guessing that MS is trying to guarantee first and foremost that they
don't mung our text. That'd mean not allowing us to substitute just any
doublebyte font for any other. The encoding would have to match or at least be
compatible.
And of course, substituting a single byte for a double byte font would
virtually guarantee that the text would get hosed, so they don't want to do
that either.
I suppose they could let you choose a different font on a provisional basis,
then read through all the text in the file and if there's so much as one non-
latin character that isn't available in the new font, kibosh the deal, but
that'd be slow, error prone, almost as frustrating to the user and would take a
lot of dev time to implement; time they could put to use against features/bugs
that'd affect far more people.
And why not let us sub Unicode fonts for any ol' double byte font?
Because
there's no one-to-one match between characters and there's no guarantee that a
unicode font would even HAVE the needed characters. Hardly any of them have
the whole universe of possible characters, y'see. MS Arial Uni's the exception
(and wouldja lookit the SIZE of that thing!).
Arial has 1674 characters, Arial UNI 50,000+
Unicode fonts also have named groups and the font properties tell you whether
the font contains the characters in a given group, so PPT might be looking at
the original font and only presenting possible replacements that support the
same groups. If the original font is available; if not, we're back to the
original problem of working out what encoding's used, if we can, and whether
the characters needed by each character in each bit of text in the presentation
are supported by the chosen substitute font. And again, I figure that's too
much work and too likely to fail. So we get the PPT "Nuh-uh, not gonna"
instead.
Not that any of this helps solve the problem of course ... but I guess it's
interesting to know the breed of dog that's sunk its teeth into your butt and
why he's mad at you if you can't get him to turn loose in any case.
==============================
PPT Frequently Asked Questions
http://www.pptfaq.com/
PPTools add-ins for PowerPoint
http://www.pptools.com/
Steve Rindsberg
2009-10-22 01:37:05 UTC
Permalink
Post by Lucy Thomson
Fascinating stuff. Thanks for sharing Steve.
Sharing (or getting it written coherently enough to share) helps me
understand it. Or understand what I don't understand. ;-)


==============================
PPT Frequently Asked Questions
http://www.pptfaq.com/

PPTools add-ins for PowerPoint
http://www.pptools.com/
TAJ Simmons
2009-10-23 12:28:01 UTC
Permalink
Thanks for clarifying :)

TAJ
a***@gmail.com
2015-07-23 19:30:01 UTC
Permalink
Not sure if this will help anyone but I encountered this issue with PPT where a font was embedded accidentally in the presentation but was not being used. It basically made it so that anyone else who received the PPT would not be able to save it. Strange error. So logically I wanted to do a font replacement. However, it would not let me substitute a "double byte font" for a "single byte font".


To fix this, I exported the presentation as an XML. Opened the XML in notepad, Did a Find & Replace on the offending font and replaced with Arial. Saved. Reopened in PPT and saved back to PPT format.

Hope that saves someone hours of frustration in the future. Cheers.

Adam
Post by Kamran
Once again, Microsoft has managed to ramp up the frustration meter.......
I'm trying to replace fonts, and I keep getting this message that I'm trying
to replace a double-byte font with a single-byte font. But the genius of the
whole system is: they don't tell you which ones are single and which ones
are double. How do I know?
p***@astreetpress.com
2015-09-30 20:04:07 UTC
Permalink
Post by a***@gmail.com
Not sure if this will help anyone but I encountered this issue with PPT where a font was embedded accidentally in the presentation but was not being used. It basically made it so that anyone else who received the PPT would not be able to save it. Strange error. So logically I wanted to do a font replacement. However, it would not let me substitute a "double byte font" for a "single byte font".
To fix this, I exported the presentation as an XML. Opened the XML in notepad, Did a Find & Replace on the offending font and replaced with Arial. Saved. Reopened in PPT and saved back to PPT format.
Hope that saves someone hours of frustration in the future. Cheers.
Adam
Post by Kamran
Once again, Microsoft has managed to ramp up the frustration meter.......
I'm trying to replace fonts, and I keep getting this message that I'm trying
to replace a double-byte font with a single-byte font. But the genius of the
whole system is: they don't tell you which ones are single and which ones
are double. How do I know?
Adam- Thanks. That absolutely helped. Simple, clean and legit. After cleaning up the font situraiton, I used that technique to clean up several rogue colors scattered throughout a 600 slide presentation.

Paul
l***@gmail.com
2015-10-17 02:22:02 UTC
Permalink
Adam, you're a lifesaver. Just wanted to say thanks :)
Post by a***@gmail.com
Not sure if this will help anyone but I encountered this issue with PPT where a font was embedded accidentally in the presentation but was not being used. It basically made it so that anyone else who received the PPT would not be able to save it. Strange error. So logically I wanted to do a font replacement. However, it would not let me substitute a "double byte font" for a "single byte font".
To fix this, I exported the presentation as an XML. Opened the XML in notepad, Did a Find & Replace on the offending font and replaced with Arial. Saved. Reopened in PPT and saved back to PPT format.
Hope that saves someone hours of frustration in the future. Cheers.
Adam
Post by Kamran
Once again, Microsoft has managed to ramp up the frustration meter.......
I'm trying to replace fonts, and I keep getting this message that I'm trying
to replace a double-byte font with a single-byte font. But the genius of the
whole system is: they don't tell you which ones are single and which ones
are double. How do I know?
zeniph
2015-11-19 05:36:36 UTC
Permalink
Thank you - this is an excellent solution.

I had the same scenario with fonts previously embedded - this was the only way to get rid of them.
a***@gmail.com
2016-01-25 11:12:51 UTC
Permalink
Awesome fix, Adam. Many thanks :)
s***@gmail.com
2018-01-20 09:27:02 UTC
Permalink
Soooo thank you. This is genius.
s***@gmail.com
2018-01-20 09:28:25 UTC
Permalink
Soooo thank you, Adam, for the xml trick. This is genius.
g***@gmail.com
2018-09-24 00:34:34 UTC
Permalink
Post by a***@gmail.com
Not sure if this will help anyone but I encountered this issue with PPT where a font was embedded accidentally in the presentation but was not being used. It basically made it so that anyone else who received the PPT would not be able to save it. Strange error. So logically I wanted to do a font replacement. However, it would not let me substitute a "double byte font" for a "single byte font".
To fix this, I exported the presentation as an XML. Opened the XML in notepad, Did a Find & Replace on the offending font and replaced with Arial. Saved. Reopened in PPT and saved back to PPT format.
Hope that saves someone hours of frustration in the future. Cheers.
Adam
Post by Kamran
Once again, Microsoft has managed to ramp up the frustration meter.......
I'm trying to replace fonts, and I keep getting this message that I'm trying
to replace a double-byte font with a single-byte font. But the genius of the
whole system is: they don't tell you which ones are single and which ones
are double. How do I know?
Thanks Adam for the help. You saved me!
f***@gmail.com
2019-06-12 02:23:57 UTC
Permalink
Great solution. Thanks Adam!!
Post by a***@gmail.com
Not sure if this will help anyone but I encountered this issue with PPT where a font was embedded accidentally in the presentation but was not being used. It basically made it so that anyone else who received the PPT would not be able to save it. Strange error. So logically I wanted to do a font replacement. However, it would not let me substitute a "double byte font" for a "single byte font".
To fix this, I exported the presentation as an XML. Opened the XML in notepad, Did a Find & Replace on the offending font and replaced with Arial. Saved. Reopened in PPT and saved back to PPT format.
Hope that saves someone hours of frustration in the future. Cheers.
Adam
Post by Kamran
Once again, Microsoft has managed to ramp up the frustration meter.......
I'm trying to replace fonts, and I keep getting this message that I'm trying
to replace a double-byte font with a single-byte font. But the genius of the
whole system is: they don't tell you which ones are single and which ones
are double. How do I know?
e***@solarwatt.com
2020-02-28 12:39:00 UTC
Permalink
Post by a***@gmail.com
Not sure if this will help anyone but I encountered this issue with PPT where a font was embedded accidentally in the presentation but was not being used. It basically made it so that anyone else who received the PPT would not be able to save it. Strange error. So logically I wanted to do a font replacement. However, it would not let me substitute a "double byte font" for a "single byte font".
To fix this, I exported the presentation as an XML. Opened the XML in notepad, Did a Find & Replace on the offending font and replaced with Arial. Saved. Reopened in PPT and saved back to PPT format.
Hope that saves someone hours of frustration in the future. Cheers.
Adam
Adam, you just saved me from a mental breakdown in the office, as this issue appeared out of the blue in our new company presentation we've been working on for weeks. THANK YOU!
j***@gmail.com
2016-04-04 19:06:35 UTC
Permalink
Post by Kamran
Once again, Microsoft has managed to ramp up the frustration meter.......
I'm trying to replace fonts, and I keep getting this message that I'm trying
to replace a double-byte font with a single-byte font. But the genius of the
whole system is: they don't tell you which ones are single and which ones
are double. How do I know?
The FiddleDaFonts macro seemed to work for me on PowerPoint 2013 and Windows 7 - thank you very much!
w***@gmail.com
2017-03-25 23:04:39 UTC
Permalink
Post by Kamran
Once again, Microsoft has managed to ramp up the frustration meter.......
I'm trying to replace fonts, and I keep getting this message that I'm trying
to replace a double-byte font with a single-byte font. But the genius of the
whole system is: they don't tell you which ones are single and which ones
are double. How do I know?
clicked on every piece of text in my 30 page slide presentation and it still doesn't work!
e***@gmail.com
2017-05-05 13:08:34 UTC
Permalink
Just wanted to say thanks to those who contributed to this thread, and helped me solve a font substitution and embedding problem.

In case it helps anyone else, I had Powerpoint telling me that a used font ("Lucida Grande") could not be embedded in my presentation.

Powerpoint wouldn't replace that font using the font replace option function. And I couldn't find anywhere in the deck that that font had been used, even when I exported it as an XML file or Word file and used the formatting and text searches in those programs.

I eventually solved the problem by deleting all the Slide Masters one by one until I deleted the Master where Lucida Grande had been (invisibly) used.

This font embedding and substitution issue - with its weird double vs single byte replacement restriction - has been around for ages. It boggles my mind that Microsoft still haven't fixed it, or at least made it easier for us to solve it.
Loading...