Estoy ejecutando Arch Linux con terminal simple usando la fuente Adobe Source Code Pro. Mi configuración regional está configurada correctamente LANG=en_US.UTF-8.
Quiero imprimir caracteres Unicode que representan naipes en mi terminal. Estoy usando Wikipedia como referencia .
Los caracteres Unicode para trajes de cartas funcionan bien. Por ejemplo, emitiendo
$ printf "\u2660"
imprime un corazón negro en la pantalla.
Sin embargo, estoy teniendo problemas con cartas específicas. Emisor
$ printf "\u1F0A1"
imprime el símbolo en Ἂ1lugar del as de espadas 🂡. Que va mal
Este problema persiste en varios terminales (urxvt, xterm, termite) y en todas las fuentes que he probado (DejaVu, Inconsolata).

Respuestas:
help printfdifiereprintf(1)para las secuencias de escape interpretadas, y los documentos para GNU printf dicen:Algo similar se especifica en el manual Bash para ANSI C Quoting y
echo:En resumen:
\uno es para 5 dígitos hexadecimales. Es\U:fuente
La respuesta de Muru es completamente correcta, pero solo para aclarar un punto:
Cuando imprime
\u1F0A1, se interpreta como un escape Unicode de dieciséis bits\u1F0A, seguido del carácter literal1(ya que\utoma los siguientes cuatro caracteres, ni más, ni menos). U + 1F0A a continuación, daἊ, una alfa griega con un par de diacríticos en él ( griego Mayúscula alfa con Psili y Varia , para ser exactos).Si quieres más de dieciséis bits en tu escape de Unicode, debes usarlo
\U, que requiere un hexadecimal de ocho caracteres:\U0001F0A1te dará la carta de juego.fuente
\U0001F0A1en realidad es más portátil que\U1F0A1. Es laprintfutilidad independiente de GNU que introdujo esas\uXXXX/\UXXXXXXXXsecuencias por primera vez y requiere 4 dígitos para\uy 8 para\U. Otrasprintfimplementaciones como la construcción del shell GNU, ksh93 y zsh son más laxas. En cualquier casoprintf '\u/\U'no es POSIX. Sin embargo, POSIX especificará zsh$'\U1F0A1'y no requerirá los 8 dígitos.\uxxxxtiene hasta 4 dígitos y\Uxxxxxxxxtiene hasta 8 dígitos. Tenga en cuenta que Unicode ahora está limitado a los puntos de código 0 a 0x10FFFF (una limitación traída por UTF16), por lo que los puntos de código nunca tendrán más de 6 dígitos (aún\U123456789se interpretarían como el carácter del punto de código 0x12345678 seguido de9y fallará). La especificación POSIX para$'\u\U'todavía no está finalizada (ver austingroupbugs.net/view.php?id=249 ). En un borrador anterior, requerían todos los dígitos de 4/8 pero eso cambió más tarde (a petición mía).