이 코드는위키피디아:
$ 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
단일 라인 블록 다이어그램 문자를 포함합니다. 터미널에 이중선 테두리 문자가 있나요?
예를 들어 "╢" 문자를 인쇄하는 방법입니다.
다음과 같이 C++ 프로그램에서 사용하겠습니다.
#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
}
답변1
터미널 설정에서는 어떤 문자 세트를 사용합니까? 아직 ASCII를 사용하고 있다면 두 라인 블록다이어그램 문자를 사용할 수 없습니다. UTF-8을 사용하는 경우 이러한 문자의 UTF-8 문자 시퀀스를 보낼 수 있습니다. printf("╢")
귀하의 컴파일러가 소스 코드에서 UTF-8을 허용 gcc
하는지 믿습니다 -finput-charset=UTF-8
.
답변2
일부 의견에서는 ncurses를 가능한 해결책으로 제안했습니다. 이렇게 하면 다음과 같은 장점/단점이 있습니다.
- ncurses는 화면을 가로질러 이동할 때 텍스트를 그리는 데
filter
유용합니다 (전체 화면 또는 전체 행 사용). OP의 예는 한 줄의 조각을 인쇄하며 토론에서는 이것이 일반적인지 여부에 대한 단서를 제공하지 않습니다.사용또는 더 복잡한 것의 일부입니다. - ncurses에는 일반적으로 사용되는 일련의 기호가 있습니다. 표시된 특정 예(단일 너비 기호와 이중 너비 기호 혼합)는 해당 목록에 없습니다.유니코드 문자 세트 '블록 다이어그램 세로 이중 왼쪽 단일' (U+2562)
ncurses는 UTF-8 문자열을 받아들이고 현재 위치를 추적하지만 블록다이어그램 기호에는 특별한 의미가 없습니다.아니요레퍼토리에서. ~부터2009년(버전 5.7 이후) 이중선 및 굵은 선 그리기에 대한 기호가 있지만 이는 전체 유니코드 상자 그리기 그래픽과는 거리가 멀습니다.혼합된. 다음은 ncurses가 지원하는 사전 정의된 기호를 보여주는 ncurses 테스트 프로그램의 일부 스크린샷입니다.