Emacs has CTL support using libharfbuz as the text shaping engine.
But more importantly, Emacs has a “shell” app that lets you interact with a shell using the same textual interface that you would use when writing prose or code. To be sure, this is not a terminal emulator (although Emacs also has a terminal emulator app as well, called “term”), rather “shell” is a way of launching a POSIX process and interacting with it through the STDIN and STDOUT/STDERR channels. It is extremely useful, but does not always render the ANSI terminal escape codes cleanly (so colors and box drawing can sometimes end up garbled). Still, I find this much more useful than an ordinary terminal emulator, especially when dealing with CJK.