IDL의 NG 체계에서 Tex 형식의 특수 문자 및 기호들을 사용하는 방법에 관해서는 예전에 관련 게시물들(링크1, 링크2)을 통하여 소개한 바 있습니다. 예제를 하나 보면 다음과 같습니다.
win = WINDOW(DIMENSIONS=[600, 400], /NO_TOOLBAR)
tx = TEXT(0.5, 0.5, '$\alpha\beta\gamma\Mars\Sun$', $
FONT_SIZE=36, ALIGNMENT=0.5, /NORMAL)

이와 같은 방식으로 다양한 특수 문자 및 기호들을 표시할 수 있습니다. 그런데 이런 작업을 하다보면 특정한 문자나 기호가 제대로 표시되지 않는 경우가 가끔 있습니다. 예를 들면 Permil(천분율) 기호가 그러한 케이스인데요. 일단 이 기호의 모습을 보면 다음과 같습니다.

물론 이 기호 역시 IDL에서 표시가 가능하며, 다음과 같이 \permil 이라고 명시하면 표시가 되는 것이 정상입니다.
win = WINDOW(DIMENSIONS=[600, 400], /NO_TOOLBAR)
tx = TEXT(0.5, 0.5, '$\alpha\beta\gamma\permil$', $
FONT_SIZE=36, ALIGNMENT=0.5, /NORMAL)
그런데 위와 같은 내용을 실행한 결과를 보면 alpha, beta, gamma 등과 같은 문자들은 정상적으로 표시되는 반면 permil 기호는 전혀 표시되지 않는다는 것을 확인할 수 있습니다.

물론 이러한 현상이 IDL의 모든 버전 및 모든 OS에서 공통적으로 발생하는 것은 아님을 일단 유념할 필요는 있습니다. 즉 IDL의 버전 또는 OS에 따라서는 정상적으로 출력되는 경우도 있는 것으로 알고 있습니다. 하지만 위와 같이 여러분의 IDL에서 Permil 기호가 전혀 표시되지 않는다면 지금부터 소개할 대안을 한번 주목해보시기 바랍니다. 그 대안은 다음과 같이 \U 오퍼레이터를 사용하여 유니코드(Unicode) 문자로 표시하는 것입니다.
win = WINDOW(DIMENSIONS=[600, 400], /NO_TOOLBAR)
tx = TEXT(0.5, 0.5, '$\alpha\beta\gamma\U(2030)$', $
FONT_SIZE=36, ALIGNMENT=0.5, /NORMAL)
이와 같이 Permil 기호에 대한 유니코드(Unicode) 고유번호인 2030을 사용하여 \U(2030)과 같이 명시하면 다음과 같이 Permil 기호가 정상적으로 표시되는 것을 확인할 수 있습니다.

일단 Permil 기호가 왜 \permil과 같은 방식으로는 제대로 표시가 안되고 위와 같이 굳이 U 오퍼레이터를 \U(2030)과 같이 사용해야만 제대로 표시되는지 그 원인은 정확히는 모릅니다. 하지만 이와 같은 대안이 있다는 것을 알아두시면 좋을 것 같습니다. 사실 permil 기호의 표시 가능 여부와는 별도로 이와 같이 IDL에서 유니코드 문자를 표시하는 기능이 있다는 것을 잘 알아두면 여러모로 편리합니다. 기본적으로는 위에서 했던 것처럼 NG 체계의 TEXT 함수 내에서 \U 오퍼레이터를 사용하면서 고유번호를 명시하는 방식입니다. 이 때 고유번호는 16진수(Hexadecimal)로 명시되어야 합니다. 방금 위에서 사용했던 2030 역시 16진수들로 구성된 고유번호입니다. 따라서 예를 더 든다면 2F30이라든지 또는 A57D 등과 같은 16진수 번호 역시 \U 오퍼레이터에 대한 고유번호로서 사용이 가능합니다.
원래 유니코드(Unicode) 문자 자체는 그 종류가 엄청나게 많은데 약 50만개 정도가 있는 것으로 알려져 있습니다. 각 문자의 코드번호도 여기서는 2030과 같이 네 자리인 경우 외에도 1003F와 같이 다섯 자리인 경우도 있습니다. 다만 IDL에서 그 많은 유니코드 문자들을 모두 표시할 수 있는 것은 아니고 일부만 사용이 가능합니다. 여기서 일단 다음과 같은 일람표를 봅시다. 이 테이블은 IDL에서 사용 가능한 유니코드 문자들 중 고유번호가 2000~20FF의 범위인 것들의 목록입니다.

여기서 Permil 기호의 위치를 보면 테이블 상에서 2030+0=2030의 위치에 있는 것이 보입니다. 따라서 앞서 했던 것과 같이 \U 오퍼레이터에 고유번호 2030을 부여하여 \U(2030)으로 명시하면 permil 기호를 출력할 수 있게 됩니다. 그리고 다른 유니코드 문자들의 경우 역시 동일한 방식으로 위치에 맞는 고유번호를 사용하면 됩니다. 예를 들어서 ?? 기호의 경우는 2040+7=2047이 될 것입니다. 그리고 위의 테이블에서는 고유번호가 2000~20FF인 문자들이 열람되어 있는데, 기타 다른 고유번호들에 해당되는 여러가지 유니코드 문자들 역시 동일한 방법으로 접근할 수 있습니다. 이러한 예를 하나 더 보기 위하여 이번에는 다음 일람표를 한번 봅시다.

여기서는 고유번호가 0000~00FF인 유니코드 문자들을 확인할 수 있습니다. 이들 중에는 Angstrom 기호도 보입니다. 이 표에 의하면 대문자 angstrom의 고유번호는 00C5이고 소문자 angstrom의 고유번호는 00E5입니다. 따라서 이러한 기호들을 표시하려면 다음과 같이 \U 오퍼레이터에 해당 번호들을 투입하면 됩니다.
win = WINDOW(DIMENSIONS=[600, 400], /NO_TOOLBAR)
tx = TEXT(0.5, 0.5, '$\alpha\beta\gamma\U(00C5)\U(00E5)$', $
FONT_SIZE=36, ALIGNMENT=0.5, /NORMAL)

어쨌든 이와 같이 유니코드 문자들을 IDL에서 사용하는 것이 가능하다는 것을 알아두시면 좋을 것 같습니다. 참조를 위하여 앞서 본 것과 같은 유니코드 문자 테이블들을 아래에 첨부합니다. 여기서는 0000~00FF, 1000~10FF 등과 같은 방식으로 256개씩 나누어서 조회할 수 있습니다. 테이블 상에서 네모로 보이는 것들은 해당 문자가 없다는 의미로 보시면 됩니다. 그리고 표시 가능한 문자들이 아예 없는 번호 범위(예를 들어 0800~08FF)인 테이블들은 첨부하지 않았습니다. 이 테이블들을 참조하여 IDL에서 여러가지 유니코드 문자들을 \U 오퍼레이터 및 해당 고유번호를 통하여 표시할 수 있다는 것을 참조해두면 매우 다양한 특수 문자들의 표시가 가능해질 것입니다.






































이 글이 도움이 되었다면 게시물에 대하여 공감 버튼(하트 모양) 클릭 및 블로그 구독도 해주시면 더 큰 힘이 됩니다. 감사합니다.
'IDL > Programming' 카테고리의 다른 글
| QHULL 함수를 이용하여 최대 볼록 다각형 찾기 (3차원) (0) | 2025.05.14 |
|---|---|
| QHULL 함수를 이용하여 최대 볼록 다각형 찾기 (2차원) (0) | 2025.05.07 |
| Yale Bright Star Catalog 데이터 읽기 (개선된 방법) (0) | 2025.04.15 |
| Yale Bright Star Catalog 데이터를 읽고 처리하기 [4] (1) | 2025.04.08 |
| Yale Bright Star Catalog 데이터를 읽고 처리하기 [3] (0) | 2025.04.04 |