Caracteres box_drawing de linha dupla no terminal

1

Este trecho de código na wikipedia :

$ char=( 6a 6b 6c 6d 6e 71 74 75 76 77 78 )
$ for i in ${char[*]}; do printf "0x$i \x$i \e(0\x$i\e(B\n"; done

inclui caracteres de desenho de caixa de uma linha. Existem caracteres de desenho de caixa de linha dupla no terminal?

Por exemplo, como posso imprimir o caractere "╢".

Vou usá-los em um programa C ++ como este:

#include <stdio.h>

int main()
{
    printf("\e(0\x6a\e(B "); // 188
    printf("\e(0\x6b\e(B "); // 187
    printf("\e(0\x6c\e(B "); // 201
    printf("\e(0\x6d\e(B "); // 200
    printf("\e(0\x6e\e(B "); // 206
    printf("\e(0\x71\e(B "); // 205
    printf("\e(0\x74\e(B "); // 204
    printf("\e(0\x75\e(B "); // 185
    printf("\e(0\x76\e(B "); // 202
    printf("\e(0\x77\e(B "); // 203
    printf("\e(0\x78\e(B "); // 186
}
    
por Gilles 07.09.2013 / 17:57

2 respostas

2

Qual charset você tem o seu terminal para usar? Se você ainda estiver usando ASCII, você não tem caracteres de desenho de caixa de linha dupla disponíveis para você. Se você estiver usando o UTF-8, poderá enviar a sequência de caracteres UTF-8 para esses caracteres. Acredito que printf("╢") funcionará se o compilador aceitar UTF-8 no código-fonte, por exemplo, gcc com -finput-charset=UTF-8 .

    
por 07.09.2013 / 18:23
1

Alguns dos comentários sugeriram ncurses como uma possível solução. Existem prós e contras para isso:

  • ncurses é útil para desenhar texto enquanto se move pela tela (tela cheia ou uma linha completa usando filter ). O exemplo do OP imprime um fragmento de uma única linha, e a discussão não deu pistas se isso era um típico uso , ou parte de algo mais elaborado.
  • ncurses tem um repertório de símbolos para linhas comumente usadas. O exemplo específico mostrado (um símbolo misto de largura simples e largura dupla) não está nessa lista, ou seja, Caractere Unicode 'DESENHOS DE CAIXA SINGLE DUPLO E ESQUERDO VERTICAL' (U + 2562)

ncursesaceitacadeiasdecaracteresUTF-8emantémocontroledaposiçãoatual,masnãoatribuisignificadoparticularaossímbolosdedesenhodecaixanãoemseurepertório.Desde 2009 (após a versão 5.7), ele possui símbolos para linhas duplas e grossas, mas estão longe de ser o conjunto completo de gráficos de desenho de caixa Unicode, pois não são misturados . Aqui estão alguns screenshots do programa de teste ncurses mostrando os símbolos pré-definidos que o ncurses suporta:

    
por 14.04.2016 / 02:22