터미널 글리프가 글꼴에 의해 정의되는지 아니면 자체 소스 코드에서 직접 정의되는지 묻는 질문이 있습니까?

터미널 글리프가 글꼴에 의해 정의되는지 아니면 자체 소스 코드에서 직접 정의되는지 묻는 질문이 있습니까?

많은 최신 터미널 에뮬레이터에는 자체 소스 코드에 직접 블록 다이어그램 문자 모양의 정의가 포함되어 있으며 디스플레이를 렌더링할 때 글꼴에서 제공하는 버전을 무시합니다. 이런 방식으로 렌더링된 문자 모양을 감지하기 위해 터미널에서 실행되는 프로그램에 대한 보편적인 방법이 있습니까? 특히, 프로그램이 널리 지원되지 않는 추가 상자 문자 모양을 사용하는 경우 해당 문자가 사용 가능한지 확인하는 가장 좋은 방법은 무엇입니까? 아마도 terminfo?

현재 사용 사례는 ncurses그래픽 구성 요소를 위해 Python으로 작성된 소규모 개인 사용 프로젝트이므로 해당 구성 요소와 잘 어울리는 것이 장점이겠지만 모든 솔루션에 관심이 있습니다.


편집: 예를 들어 다음은kitty; 소스 코드의 주석은 전력선 통합을 위한 것임을 나타냅니다.

여기에 이미지 설명을 입력하세요.

그러나 Konsole에서 동일한 문자를 렌더링하려고 하면 다음과 같은 결과를 얻습니다.

여기에 이미지 설명을 입력하세요.

Kitty가 표시하는 문자는 터미널 자체에 의해 정의되는 반면 Konsole이 표시하는 문자는 사용하도록 구성된 글꼴로 제공됩니다. 전자와 후자와 같은 것을 보게 될지 여부를 감지하기 위해 모든 터미널에서 실행되는 프로그램에 대한 보편적인 방법이 있습니까?

답변1

분명히 당신이 사용하고 있는 문자는 유니코드 1.0.1 개인 사용 영역의 일부입니다. 블록다이어그램 문자는 이 영역에서 실제로 표준화되지 않았지만 편집기, 일부 쉘 및 기타 명령줄 도구용 플러그인에서 사용됩니다 powerline.vim

바라보다Superuser.SE에 대한 이 질문더 많은 정보를 알고 싶습니다.

KiTTY 개발자는 이러한 플러그인의 사용자일 수 powerline있으며 터미널 에뮬레이터에서 직접 블록 다이어그램 문자에 대한 지원을 구현한 것으로 보입니다.

내가 아는 한, 블록 다이어그램 문자의 가용성을 테스트하는 표준 프로그래밍 방법은 없습니다 powerline. 터미널 에뮬레이터의 기능 목록을 확인하고 직접 powerline지원이 포함되지 않은 경우 powerline패치된 글꼴을 사용해야 합니다.

Unix 스타일 터미널(및 터미널 에뮬레이터)에서 선 그리기 문자를 사용하는 고전적인 방법은 용어 정보 smacs/ rmacsacsc값에 의존합니다. 선 그리기 모드로 전환하고 사용할 문자를 설명하는 제어 코드 smacs입니다 . 일부 소프트웨어는 PC의 기본 코드 페이지 #437의 블록 다이어그램 문자를 사용할 수도 있지만 일반적으로 이를 위해서는 글꼴 전환 기능과 올바른 문자 세트가 있는 글꼴이 필요합니다.rmacsacsc

현대적인 접근 방식은 0x2500-0x257f 범위의 유니코드 표준 블록 다이어그램 문자를 사용하는 것입니다. 글꼴을 통해 제공되는지 아니면 터미널 에뮬레이터에서 직접 제공되는지 여부는 애플리케이션에 의미가 없는 구현 세부 사항이어야 합니다.


개인적으로 저는 powerline이와 같은 터미널 구성 해킹이 개발의 일부 단계에서 Unix/Linux 고급 사용자에게 일반적이라고 생각합니다.애벌레 단계전문 용어 파일에 설명된 프로그래머.

시스템 관리자 팀이 수십 또는 수백 개의 시스템을 유지 관리해야 하는 현실에 노출되면 터미널 환경을 강력하게 사용자 정의하려는 욕구가 사라지고 표준 또는 공장 기본 설정을 원활하게 사용할 수 있는 기능으로 대체되는 경우가 많습니다. 가장 자주 접하게 되는 시스템입니다. 사람들은 여전히 ​​선호하는 특정 맞춤 설정을 갖고 있을 수 있지만 화려한 외관을 희생하면서 중요한 기능의 핵심으로만 축소되는 경향이 있습니다.

아마도 이것은 일부 사람들이 powerline이와 같은 멋진 터미널 디스플레이를 매우 중요하다고 생각하지 않는 이유를 이해하는 데 도움이 될 것입니다.

관련 정보