¿Puede un script determinar qué caracteres puede mostrar una terminal?

¿Puede un script determinar qué caracteres puede mostrar una terminal?

Estoy trabajando en un script que muestra caracteres UTF-8 como resultado. En mi Terminal Gnome, esto imprime una bonita hoja de arce (

Respuesta1

Una aplicación que se ejecuta en una terminal no tiene forma de averiguar desde la terminal cómo se ven los glifos que la terminal ha dibujado (o incluso si son caracteres sustitutos/marcadores de posición).

Una cosa la aplicaciónpoderLo que debemos hacer es averiguar si el terminal admite UTF-8 y, si lo hace, si admite caracteres de ancho variable. El método es como sigue:

  • Lea la posición del cursor escribiendo ESC [ 6 ny esperando ESC[ línea ; columna R
  • Escribe la secuencia de 2 bytes "\xc2\xa0". Si el terminal admite UTF-8, este es un espacio único e ininterrumpido. Si el terminal no soporta UTF-8, es algo desconocido pero que probablemente ocupe 2 posiciones de caracteres (probablemente Âseguido de un espacio sin separación, de hecho).
  • Lea la posición del cursor nuevamente y descubra si el cursor se ha movido una o dos posiciones.

Si el terminal admite UTF-8, entonces puede averiguar si admite anchos de caracteres variables usando básicamente el mismo truco. Lea la posición del cursor, escriba un carácter que se supone que tiene doble ancho en fuentes monoespaciadas, como あ, y luego lea la posición del cursor nuevamente. Si el terminal no soporta caracteres de doble ancho, el cursor probablemente se habrá movido ingenuamente sólo una posición.

información relacionada