The thing about emojis and fonts is that what you see is not always what the receiver gets. For example, your hotdog might have a squiggle of mustard down the center because this is what your emoji pack has picked for "hotdog". The person you're sending the hotdog to may have a plan dog that is a little browner in their emoji pack, so your hotdog will not be what they get, they will get a plan dog that is browner. Why? Because it is all about what you have on your phone vs what they have on their phone. The same is true if they send you a telephone. If their telephone is a red retro phone with a dial but your phone resembles an Android slab phone you will get an Android slab phone because your emoji pack doesn't have the red retro one. It's the same with fonts, if you have comic sans and they don't they will get some other font. Everything still works, it all translates but it isn't exactly what you see or think you're sending. If you convince your friend to get the same emoji pack as you, then they will see what you see and vice versa. I guess it's the equivalent of the saying, it's the thought that counts, they get the thought just not what you pictured to represent the thought.
As for why does it work in some apps and not in others, that would be because some apps have their own emoji packs built in or select the emoji database they choose to use. In this way apps can kind of control what is shared and they can create a uniform experience for their users. If you send a hotdog with a squiggle of yellow mustard the other person gets a hotdog with a yellow squiggle of mustard but so does everyone on the app. Equal outcome for all. For those apps you'd probably find that no matter what pack you installed the emojis will not change because it will not change for everyone and everyone has to get the same thing.