One big problem is that we are having a big character set on modern computer systems, the logic could be simpler if we only need to support 256 ASCII characters. However on a modern system, we have to support more than one million characters. To build up a encoding lookup table that huge on hardware in not cost effective. On early days the basic display hardware for terminals are actually doing something like this, they store a looking table for the fonts of each character that it can display, and print that font onto the screen, and we call such display mode Text mode. In this mode the screen is divided into multiple grids, each grid is a character cell which can display a character. Terminal emulators (like the one come with macOS) are actually emulating the behavior of such hardware, that why it is called an "emulator". In the old days the character sets are small and the fonts are ugly(bitmaps with only a few pixels). Nowadays we have to display multiple languages, support beautiful fonts, even displaying emojis, and we have powerful CPUs, so just implement it in software will be a more viable solution.
Hardware logics usually have large benefits when the workload has constantly huge dataflow and been quite computational complex. CPUs on most computers struggles on the task which is both IO intensive and computational intensive.