hearmeneigh / fchat-rising

A heavily modded F-Chat 3.0 client for F-List
https://hearmeneigh.github.io/fchat-rising/
MIT License
40 stars 18 forks source link

Emojis from Emoji v14.0 (ratified 2021) no longer render in 1.25.1 on Windows 10 #304

Closed Gatheringofravens closed 9 months ago

Gatheringofravens commented 10 months ago

These emojis previously correctly rendered in f-chat rising version 1.24.2 but since upgrading they no longer do so.

https://emojipedia.org/emoji-14.0

Examples: πŸͺ© 🧌 πŸͺ· 🫘

Profiles that have these emojis as well as attempting to type them into chat just results in an unrenderable character box.

Issue exists on Windows 10 22H2.

Emojis down to emoji version 13.0 are affected. Version 12.0 work fine.

It is interesting to note that version 12 is the last one Windows 10 natively supports. A limitation of Microsoft's desire to force people onto Windows 11.

I assume the old version did not rely on the OS for this while the new one does.

Anything that can be done to restore the old behavior for those of us stuck on W10 (a significant amount of people)?

FatCatClient commented 9 months ago

I believe this is an issue with Electron (or rather Chromium itself), which I guess uses the operating system's text renderer rather than its own. Windows 11 has similar issues with flag emoji (like this one πŸ‡ΊπŸ‡Έ). I do believe you can override the emoji style with a font that contains it, like Noto Emoji. I don't know how well Chromium takes to that though, but if nothing else works there's always this JS library by Twitter that replaces emoji with SVG or PNG images.

Gatheringofravens commented 9 months ago

That was my impression as well. Just wasn't sure if there was anything the author could do, an option set with electron for example during build. However given it used to work I assume that old versions did not rely on this or had some sort of fallback. Also wasn't sure if maybe the author could just bundle an emoji font file or add the option for users to place one in the install directory to be used by it.

For what it's worth I tried upgrading the Windows 10 system emoji font which wasn't easy with permission issues, I replaced it with a copy from a Win11 install ISO but it didn't succeed in fixing the issue in rising and introduced other weirdness so I reverted that which seems to be a dead end.

Regarding override, how would that best be accomplished if you happen to know? I see the client has several alphanumerically named font files (woff2 and ttf) located in \fchat\app-1.25.1\resources\app\ folder in my install.

Ideally I'd love if there were a solution to this that could be enabled for all users as not only do I use them in chat at times but more relevantly I use them in some of my profiles and I'd rather other users be able to correctly see my profiles in the viewer as Win10 like Win7 before it is likely to have a significant userbase for some time after support officially ends.

FatCatClient commented 9 months ago

Well emoji are just unicode text, so by "override" I mean that if a specific font implements a look for a certain unicode character, it'll override the default look that the browser would use (or in Chromium's case, that Windows uses). Like this:

Safari 17 on MacOS

image

Firefox 121 on Win 11 image

Edge 120 (Chromium-based) on Win 11 image

(Font differences for the actual letters are because the font was not installed on the Win 11 machine and FF and Edge default to Arial and Times New Roman respectively.)

So yeah , I could probably write a PR real quick that adds one of the OpenMoji fonts to the font-family and bundles it in. Just have to figure out if the version of Chromium used by the Electron version the project uses supports specific types of font glyphs.

Gatheringofravens commented 9 months ago

That would be great if you could. I'm sure I and many others would really appreciate it. It would vastly improve things as I'm seeing more and more people using these emojis and getting blank boxes.

hearmeneigh commented 9 months ago

Fixed in 1.26.0