What would cause a character to change after exporting?

I’ve tried once again to solve this problem on my own and once again to no avail.

I’m having an issue where, upon exporting, I type “!” but get “.”—any idea what would cause a problem like this? My thanks to anyone willing and able to help.

Open the font and see what’s in the ! slot.

An obvious solution one might think. Everything appears to be in order on the glyphs side. However, when I work with the font in Illustrator CC, the “!” is a “.” with no real indicator to me as to why. See below screenshots.

In glyphs:

In Illustrator CC:

Does that make sense?

Possibly you have any unconventional features sub?

From Illustrator it looks that you have a /period linked to the /exclam in some way.

The other thing you can check is the unicodes. Try running /Glyph/Update Glyph Info

Yeah, I’ve already tried that. The unicode checks out, too. Take a look at my subs and tell me if you see anything suspect:

.salt subs:

.ss01 subs:

In fact, you’ll notice in my Illustrator screenshot that the “exclam.ss01” even exports correctly, but I don’t see the regular exclamation point anywhere in the glyphs menu in Illustrator.

Does the exclam has all extreme points?

Bingo! That was it—a rookie mistake on my part. I never would have thought of that on my own. Thank you so much! See before and after below:

Thank you again!

Why is the lack of extreme points causing the top of the exclamation mark to disappear? Is the remove overlap filter deleting in due to the lack of extreme points? Or is this one of those things where hinting goes wrong without extreme points?

I have no clue. @GeorgSeifert?

Maybe it is because there are just a couple of nodes present?

As a side note, I wonder if it will still export if you add one or two additional non-extreme or off-extreme nodes. It is obviously not the correct way to do it, but still curious.

The Adobe rasterizer seems to check if there is something to draw by the bounding box of the on curve points. And if that is empty, it skips the outline.

That is why 2-node paths are a bad idea.