괘선문자

특수 문자 단말 에뮬레이터에서 괘선문자를 사용하는 [[미드나이트 커맨더]] **괘선문자**(box-drawing characters)는 텍스트 사용자 인터페이스에서 다양한 기하학적 프레임과 상자를 그리는 데 널리 사용되는 세미그래픽스의 한 형태이다. 이 문자들은 수평 및 수직으로 인접한 문자와 연결되도록 설계되었다는 특징이 있으며, 이를 위해서는 적절한 정렬이 필요하다. 따라서 괘선문자는 일반적으로 고정폭 글꼴에서만 잘 작동한다. 그래픽 사용자 인터페이스에서는 그래픽 API로 선과 직사각형을 직접 그리는 것이 더 간단하므로 이러한 문자들의 유용성은 훨씬 줄어든다. 그러나 명령줄 인터페이스와 소스 코드 내의 일반 텍스트 주석에는 여전히 유용하다. 일부 최신 임베디드 시스템도 독점적인 문자 집합을 사용하는데, 일반적으로 ISO 8859 문자 집합의 확장이며, 괘선문자 또는 기타 특수 기호를 포함한다. 다른 유형의 괘선문자로는 블록 요소, 음영 문자, 터미널 그래픽 문자가 있다. 이들은 화면의 영역을 채우고 드롭 섀도를 묘사하는 데 사용될 수 있다.
# 유니코드

## 상자 그리기
유니코드는 상자 그리기 블록에 128개의 이러한 문자를 포함한다. 많은 유니코드 글꼴에서 WGL4 문자 집합의 일부로 정의되어 있기 때문에 IBM PC 문자 집합에서도 사용할 수 있는 부분 집합만 존재한다. Unicode chart Box Drawing 아래 이미지는 이러한 기호를 직접 표시할 수 없는 시스템을 위한 빠른 참조로 제공된다. left -
## 블록 요소
블록 요소 유니코드 블록에는 음영 문자가 포함되어 있다. 이 블록에는 32개의 문자가 포함되어 있다. Unicode chart Block Elements
## 레거시 컴퓨팅용 기호
버전 13.0에서 유니코드는 많은 그래픽 문자를 포함하는 또 다른 블록인 레거시 컴퓨팅용 기호(Symbols for Legacy Computing)로 확장되었는데, 여기에는 구식 운영 체제(주로 1980년대)에서 사용되던 몇 가지 괘선문자 및 기타 기호가 포함된다. 이러한 문자를 지원하는 글꼴은 거의 없지만(Noto Sans Symbols 2가 그 중 하나임), 기호 표는 다음과 같다. Unicode chart Symbols for Legacy Computing 아래 이미지는 이러한 기호를 직접 표시할 수 없는 시스템을 위한 빠른 참조로 제공된다. left -
## 레거시 컴퓨팅 보충용 기호
버전 16.0(2024년 9월)에서 유니코드는 많은 그래픽 문자를 포함하는 또 다른 블록인 레거시 컴퓨팅 보충용 기호(Symbols for Legacy Computing Supplement)로 확장되었는데, 여기에는 구식 운영 체제(주로 1970년대와 1980년대)에서 사용되던 몇 가지 괘선문자 및 기타 기호가 포함된다. Unicode chart Symbols for Legacy Computing Supplement
# 플랫폼별
다양한 플랫폼에서 고유한 괘선문자 세트를 정의했다.
## 도스
원래 IBM PC의 하드웨어 코드 페이지는 도스가 지금 코드 페이지 437이라고 부르는 다음 괘선문자를 제공했다. 따라서 유니코드 괘선문자 중 이 부분 집합은 WGL4에 포함되어 있으며 훨씬 더 널리 사용되고 올바르게 렌더링될 가능성이 높다. {| class="wikitable" ! !0!!1!!2!!3!!4!!5!!6!!7!!8!!9!!A!!B!!C!!D!!E!!F |- !B |░||▒||▓||│||┤||╡||╢||╖||╕||╣||║||╗||╝||╜||╛||┐ |- !C |└||┴||┬||├||─||┼||╞||╟||╚||╔||╩||╦||╠||═||╬||╧ |- !D |╨||╤||╥||╙||╘||╒||╓||╫||╪||┘||┌||█||▄||▌||▐||▀ |} 정수 절반도 0xB3와 함께 사용되므로 괘선문자이다. {| class="wikitable" ! !4!!5 |- !F |⌠||⌡ |} 단일 및 이중 선, 왼쪽 및 오른쪽 절반 블록, 그리고 정수 절반을 다른(일반적으로 알파벳) 문자로 대체하는 코드 페이지(코드 페이지 850 등)에서는 그 수가 28자로 추가로 제한된다. {| class="wikitable" ! !0!!1!!2!!3!!4!!5!!6!!7!!8!!9!!A!!B!!C!!D!!E!!F |- !B |░||▒||▓||│||┤|| || || || ||╣||║||╗||╝|| || ||┐ |- !C |└||┴||┬||├||─||┼|| || ||╚||╔||╩||╦||╠||═||╬|| |- !D | || || || || || || || || ||┘||┌||█||▄|| || ||▀ |} 참고: 이중이 아닌 문자들은 가는(light) 문자(U+2500, U+2502)이며, 굵은(heavy) 문자(U+2501, U+2503)가 아니다. 일부 OEM 도스 컴퓨터는 다른 문자 집합을 지원했는데, 예를 들어 휴렛 팩커드의 HP 110 / HP Portable 및 HP 110 Plus / HP Portable Plus는 수정된 버전의 문자 집합에 괘선문자가 일반 HP Roman-8 문자 집합의 예약된 영역에 추가되었다. {| class="wikitable" ! !0!!1!!2!!3!!4!!5!!6!!7!!8!!9!!A!!B!!C!!D!!E!!F |- !8 | || || || ||╝||╗||╔||╚||╣||╩||╦||╠||═||║||╬|| |- !9 | ||▀||▄|| ||┘||┐||┌||└||┤||┴||┬||├||─||│||┼||█ |}
## 유닉스, CP/M, BBS
많은 유닉스 시스템과 초기 다이얼업 BBS에서는 괘선문자의 유일한 공통 표준이 VT100 대체 문자 집합이었다(참고: DEC 특수 그래픽스). 이스케이프 시퀀스 `Esc ( 0`는 소문자 ASCII 문자의 코드를 이 세트를 그리도록 전환했고, 시퀀스 `Esc ( B`는 다시 전환했다. {| class="wikitable" ! !!0!!1!!2!!3!!4!!5!!6!!7!!8!!9!!A!!B!!C!!D!!E!!F |- !6 | || || || || || || || || || ||┘||┐||┌||└||┼|| | |- !7 | ||─|| || ||├||┤||┴||┬||│|| || || || || || || | |} 일부 터미널에서는 이러한 문자를 전혀 사용할 수 없었고, 이스케이프 시퀀스의 복잡성으로 인해 사용이 억제되었다. 그래서 종종 하이픈, 수직선, 밑줄, 등호 및 덧셈기호와 같은 괘선문자와 유사한 아스키 아트 방식의 ASCII 문자만 사용되었다. 최신 유닉스 단말 에뮬레이터는 유니코드를 사용하므로 위에 나열된 선 그리기 문자에 접근할 수 있다.
## 문자 다중 방송
문자 다중 방송 (WST)은 일부 그래픽에 픽셀 그리기 문자를 사용한다. 문자 셀은 2×3 영역으로 나뉘며, 픽셀의 가능한 모든 조합에 대해 26 = 64개의 코드 위치가 할당된다. 이 문자들은 버전 13의 유니코드 표준에 추가되었다.access-date=2020-04-19
## 역사적인
1970년대와 1980년대의 많은 마이크로컴퓨터는 자체적인 독점 문자 집합을 가지고 있었고, 여기에는 괘선문자도 포함되어 있었다. 이들 중 상당수는 레거시 컴퓨팅용 기호로 유니코드에 추가되었다.
### 코모도어
PETSCII 코모도어 PET 및 코모도어 64와 같은 코모도어 장비는 PETSCII 문자 집합에 블록 요소 및 디더링 패턴이 있는 텍스트 세미그래픽스 세트를 포함했다. PET 2001 키보드 레이아웃]] -
### 신클레어
ZX81 세미그래픽스 신클레어 ZX80, ZX81, 그리고 ZX 스펙트럼은 쿼드런트 기반 블록 요소가 있는 텍스트 세미그래픽스 세트를 포함했다. ZX80과 ZX81은 또한 디더링 패턴이 있는 텍스트 세미그래픽스 세트를 포함했다. -
### BBC 및 아콘
BBC 마이크로는 문자 다중 방송 7비트 문자 집합을 사용할 수 있었는데, 이 문자 집합에는 일반 영숫자 및 구두점 문자와 코드 포인트가 공유되는 128개의 괘선문자가 있었다. 제어 문자를 사용하여 일반 텍스트와 상자 그리기 사이를 전환했다. {| class="wikitable" |+ 문자 다중 방송 G1 블록 모자이크 세트 ! !0!!1!!2!!3!!4!!5!!6!!7!!8!!9!!A!!B!!C!!D!!E!!F |- !2 | NBSP | 🬀 | 🬁 | 🬂 | 🬃 | 🬄 | 🬅 | 🬆 | 🬇 | 🬈 | 🬉 | 🬊 | 🬋 | 🬌 | 🬍 | 🬎 |- !3 | 🬏 | 🬐 | 🬑 | 🬒 | 🬓 | ▌ | 🬔 | 🬕 | 🬖 | 🬗 | 🬘 | 🬙 | 🬚 | 🬛 | 🬜 | 🬝 |- !6 | 🬞 | 🬟 | 🬠 | 🬡 | 🬢 | 🬣 | 🬤 | 🬥 | 🬦 | 🬧 | ▐ | 🬨 | 🬩 | 🬪 | 🬫 | 🬬 |- !7 | 🬭 | 🬮 | 🬯 | 🬰 | 🬱 | 🬲 | 🬳 | 🬴 | 🬵 | 🬶 | 🬷 | 🬸 | 🬹 | 🬺 | 🬻 | █ |} {| class="wikitable" |+ 점자 섹스턴트 모자이크 세트 ! !0!!1!!2!!3!!4!!5!!6!!7!!8!!9!!A!!B!!C!!D!!E!!F |- !2 | NBSP | 🬳 | 🬇 | 🬷 | 🬥 | 🬡 | 🬴 | 🬏 | 🬺 | 🬻 | 🬟 | 🬯 | 🬞 | 🬭 | 🬠 | 🬑 |- !3 | 🬵 | 🬃 | 🬓 | 🬋 | 🬩 | 🬢 | 🬚 | 🬹 | 🬱 | 🬖 | 🬧 | 🬦 | 🬣 | █ | 🬘 | 🬨 |- !4 | 🬁 | 🬀 | 🬄 | 🬂 | 🬊 | 🬈 | 🬆 | 🬎 | 🬌 | 🬅 | 🬍 | 🬐 | ▌ | 🬒 | 🬙 | 🬗 |- !5 | 🬕 | 🬝 | 🬛 | 🬔 | 🬜 | 🬮 | 🬲 | 🬫 | 🬰 | 🬸 | 🬶 | 🬤 | 🬪 | 🬬 | 🬉 | ▐ |} BBC 마스터 및 이후의 아콘 컴퓨터는 기본적으로 선 그리기 문자로 정의된 소프트 글꼴을 가지고 있다. {| class="wikitable" ! !0!!1!!2!!3!!4!!5!!6!!7!!8!!9!!A!!B!!C!!D!!E!!F |- !A | ||╷||╶||┌||╴||┐||─||┬||╵||│||└||├||┘||┤||┴||┼ |- !B |╭||╮||╰||╯|| || || || || || || || || || || || |}
### 암스트래드
암스트래드 CPC 문자 집합도 기본적으로 블록 및 선 그리기 문자로 정의된 소프트 문자를 가지고 있다. {| class="wikitable" ! !0!!1!!2!!3!!4!!5!!6!!7!!8!!9!!A!!B!!C!!D!!E!!F |- !8 | ||▘||▝||▀||▖||▍||▞||▛||▗||▚||▐||▜||▃||▙||▟||▉ |- !9 | ||╵||╶||└||╷||│||┌||├||╴||┘||─||┴||┐||┤||┬||┼ |} 암스트래드의 CPC, PCW 및 ZX 스펙트럼 계열의 다양한 컴퓨터에서 사용된 CP/M Plus character set도 풍부한 선 그리기 문자를 포함하고 있었다. {| class="wikitable" ! !0!!1!!2!!3!!4!!5!!6!!7!!8!!9!!A!!B!!C!!D!!E!!F |- !8 | ||╧||╟||╚||╤||║||╔||╠||╢||╝||═||╩||╗||╣||╦||╬ |- !9 | ||╵||╶||└||╷||│||┌||├||╴||┘||─||┴||┐||┤||┬||┼ |}
### 애플
마우스텍스트(MouseText)는 애플 IIc, 애플 IIe, 애플 IIGS를 위한 디스플레이 문자 세트로, 괘선문자를 포함하고 있다.
# 인코딩
많은 플랫폼에서 문자 모양은 문자 코드로부터 프로그래밍 방식으로 결정된다. * ZX 스펙트럼 블록 문자: *: 0x80 + topright*1 + topleft*2 + bottomright*4 + bottomleft*8 * 암스트래드 CPC 블록 문자: *: 0x80 + topleft*1 + topright*2 + bottomleft*4 + bottomright*8 * 암스트래드 CPC 선 문자: *: 0x90 + up*1 + right*2 + down*4 + left*8 * BBC 마스터 선 문자: *: 0xA0 + down*1 + right*2 + left*4 + up*8 * 문자 다중 방송 블록 문자: *: 0xA0 + topleft*1 + topright*2 + middleleft*4 + middleright*8 + bottomleft*16 + bottomright*64 그러나 도스 선 및 괘선문자는 어떤 프로그래밍 방식대로 정렬되어 있지 않으므로 특정 문자 모양을 계산하려면 조회 테이블을 사용해야 한다.
# 예시
고정폭 글꼴을 사용한 표준 괘선문자로 만든 샘플 다이어그램:

┌─┬┐ ╔═╦╗ ╓─╥╖ ╒═╤╕
│ ││ ║ ║║ ║ ║║ │ ││
├─┼┤ ╠═╬╣ ╟─╫╢ ╞═╪╡
└─┴┘ ╚═╩╝ ╙─╨╜ ╘═╧╛
┌───────────────────┐
│ ╔═══╗ Some Text │▒
│ ╚═╦═╝ in the box │▒
╞═╤══╩══╤═══════════╡▒
│ ├──┬──┤ │▒
│ └──┴──┘ │▒
└───────────────────┘▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒