I think I understand what the problem is: while it is rebuilding copies of xenial's and bionic's fontconfig tools that statically link to libfontconfig, it's using the xenial version of libfreetype2 for both.
I suspect that this old freetype version does not understand all the features of the font (e.g. the scalable colour emoji), so the generated cache also misses them.
I've just been reading through the code used to build the bin/fc-cache-v6 and bin/fc-cache-v7 binaries in the core snap:
https:/ /github. com/snapcore/ fc-cache- static- builder
I think I understand what the problem is: while it is rebuilding copies of xenial's and bionic's fontconfig tools that statically link to libfontconfig, it's using the xenial version of libfreetype2 for both.
I suspect that this old freetype version does not understand all the features of the font (e.g. the scalable colour emoji), so the generated cache also misses them.