Frustratingly, I am unable to make emoji render properly in any terminal on up-to-date Ubuntu 22.04. I have them working in the browser (fully expected), LibreOffice, even Emacs shell but not in any of my terminals. I've checked the locale (en_GB.UTF-8), fc-list "MesloLGS NF Regular" (or any other emoji friendly font installed with apt like fonts-noto-color-emoji or fonts-emojione and they all check out. I've rebuilt the fc-cache.
If I run shell in emacs alongside a terminal window and run the same commands in both, I get identical answers until I try to cat my test file. In Emacs shell I get
Hello World 😄
but in terminal (either Tilix, Guake or GNOME Termial 3.44.0) I get
Hello World
Yes, the emoji character is there, it is just displayed as an empty character (and I know that because it pasted into my browser correctly so I had to remove it for illustrative purposes).
As requested, running
od -c emoji_test.txt
puts out
0000000 H e l l o W o r l d 360 237 230 2040000020 \n
The hex for the test emoji should be 😄
1F604 hex maps to 373004 in octal so I think I've got that bit right.
It doesn't make any difference what shell I'm running - zsh, bash or even sh.
I'm running libcairo2 version 1.16.0-5ubuntu2 and I do have an emoji conf file in .config/fontmanager/conf.d pointing to Noto Color Emoji.
I know I'm being stupid somewhere but has anyone got a debug guide to help me pin point just where?