While looking for the robux .svg files and ways to implement custom emojis, I found this buried in the release notes for 541:
This led me to believe that giving developers access to Unicode PUA’s would be feasible, perhaps through a service-type api or an instanced system similar to how MaterialService works
--- adds `rbxassetid://` emoji to the experience in runtime
EmojiService:RegisterEmoji(Name: string, AssetId: string): ()
--- returns string `utfCodepoint` of emoji registered by `RegisterEmoji()`
EmojiService:GetEmojiCodepoint(Name: string): string
--[[
...
or an "Emoji" instance that has its own properties like .AssetId, .Name, etc
and a read-only .Codepoint property that is assigned within the unicode PUA range
]]
…regardless of how this feature is implemented, it would allow developers freedom to embed their own custom emojis into text strings without having to rely on workarounds like prepending/appending an ImageLabel to a TextLabel
EmojiService:RegisterEmoji("InGameCurrency1", "rbxassetid://1234567890") --- this is like a "coins" currency
local Codepoint = EmojiService:GetEmojiCodepoint("InGameCurrency1") --- "\u{Ewxyz}"
local ItemCost = 9999
...
TextLabel.Text = `{CodePoint} {ItemCost}` --- $ 9999
...
local PlayerChatMessage = "i cant believe the price was raised to :Currency1: 10000!!!"
PlayerChatMessage:gsub(":Currency1:", CodePoint) --- could be passed into something like the ChatService callback