Zle cannot display UNICODE Private Use Area characters in BUFFER. % f() BUFFER=$'\uE0B0' % zle -N f % bindkey '^T' f % Expected: the last line shows the glyph for U+E0B0 (whichever way the terminal chooses to render it). Actual: the last line shows in reverse video. I haven't looked at the code but my guess is that zle assumes that characters from Private Use Area never have a native reasonable representation, so it attempts to show codepoints. This assumption is incorrect. I think Private Use Area characters shouldn't be handled specially. If there is no glyph in the terminal's font for a character, let the terminal decide how to present that. Note: Private Use Area characters work fine everywhere else. For example, in PS1. Roman.