Hi!
Something that has bugged me for awhile is there does not seem to be a good replacement for “Symbol Std” - the same typeface as the 8-bit pi encoded font Symbol but Unicode.
This is not the kind of thing that would be worth it for a distro to worry about, but it still bugs me.
Unfortunately you can’t just use “Standard Symbols L” or “Standard Symbols PS” as a replacement for “Symbol Std” because when one of the glyphs has an 8-bit Unicode value but the 8-bit pi encoding is different location you get the wrong glyph because the 8-bit request to the font will get you the glyph at that 8-bit encoding instead of the glyph with that 8-bit Unicode value. There are six such glyphs with that issue in the Symbol typeface.
That’s why transcoding 8-bit symbol to Unicode requires changing the font requested to “Symbol Std” which is not an 8-bit pi encoded font.
To complicate things, Symbol predates Unicode so for some glyphs, there are more than one possible Unicode value that might be used.
To complicate things further, Symbol has both Serif and Sans-Serif versions of “Copyright Sign”, “Trademark Sign”, and “Registered Sign” but Unicode codepoints for those don’t care about serif vs sans-serif, and many versions of “Symbols Std” only use PUA codepoints for either case without even supporting the Unicode codepoints!
Symbol typeface is a serif typeface (look at the Greek letters) so what Apple does in macOS is the serif versions of those glyphs are available at both the official Unicode codepoints and at the PUA codepoints Adobe uses, and they have a PUA “transcode hint” codepoint that if it directly follows the official Unicode codepoint, triggers the sans-serif version of the glyph to be used.
I like it except what happens on a system that is not a mac when a sans-serif copyright/trademark/registered sign glyph is transcoded to the official Unicode codepoint followed by that PUA hint is that a missing glyph tofu is rendered.
So anyway, I’m producing a font I call “Symbols Sanity” that is meant to be a substitute fontconfig can suggest when the “Symbols Std” typeface is requested. It’s not intended for use in new documents, everything Symbol typeface was used for in the 8-bit character encoding era can now be done better with Unicode. It’s intended for cases where 8-bit symbol was converted to “Symbols Std” Unicode but you want to keep the Symbol typeface which can be important especially if PUA glyphs were used in the transcode as is often the case.
It supports Apple’s PUA codepoint for turning those three serif signs into the sans-serif version but it also supports using a ZWSP (Zero-Width Space) which I prefer because if a document is rendered on a system without the font, the ZWSP glyph almost certainly will supported on the font. The only downside to using a ZWSP as the transcode hint is sometimes ZWSP was used to indicate the word can be split between two lines at the spot without a hyphen. That’s probably why Apple went with a PUA codepoint instead. I also thought about using invisible times instead of ZWSP but that seemed improper.
I’m almost done enough to release it on gitlab. For the glyphs, I started with “Standard Symbols L” using the version in TeXLive 2025, that font is GPL licensed. There’s just a few tweaks left to make, but so far it is doing everything I meant it to do.
I even tested it in Libre Office. Inserting the Unicode value for copyright gave a serif copyright glyph. Following it with a ZWSP and the Copyright glyph changed to sans-serif version.
This is what it looks like in FontForge:
For the second copyright, I inserted the serif copyright followed by the ZWSP triggering the glyph substitution. I also tested it in a browser using HTML entities for the codepoints including testing with Apple’s PUA codepoint as the transcode hint instead of a ZWSP and it worked. Well, except in FireFox, which seems to only support this OpenType feature is some specific language scripts, but it worked in all the other browsers including the default Gnome browser (Epiphany rebranded as “Web”). The fact that it doesn’t work in FireFox doesn’t really matter, it just means you get the serif version of the glyph instead of the sans-serif being substituted.
I need to make a replacement for the Apple logo (I’m thinking a pear) that has the same metrics as the Apple logo so that it can be assigned the same PUA codepoint, and I want to make a Tux logo that uses the same PUA codepoint the Linux Libertine font uses. Not for “Symbol Std” compatibility but just because I want to.
Then I’ll upload the FontForge project to gitlab with a shell script for generating the font.
This is something most people don’t care about until they get a document that uses Symbol Std and some glyphs don’t render because PUA codepoints were used. In theory, this should also work with documents that used 8-bit Symbol and were converted to Unicode on macOS including sans versions of those legal sign glyphs but I don’t know what typeface name they use for transcoded strings (hopefully “Symbol Std” but knowing Apple, it may not be, I don’t have a Mac).
There are some glyphs I want to eventually redraw myself just because FontForge complains they are missing points at extrema. Honestly I do not think that matters but still…it probably is best practice to not have missing points at extrema.
FontForge from Fedora 42 is what I’m using.
