IDL/Miscellaneous

앱 스케일링(App Scaling) 대응 기능에 관하여

이상우_IDL 2024. 5. 24. 14:38
728x90

OS가 MS Windows인 컴퓨터의 디스플레이 설정에서 고해상도로 화면 설정이 되어있는 상태에서 어떤 어플리케이션을 실행했을 때 전체적인 모습이 육안으로 보기에 적절한 크기가 되도록 자동으로 맞춰주는 기능을 앱 스케일링(App Scaling)이라고 합니다. 요즘에는 컴퓨터의 디스플레이 설정에서 화면 해상도를 UHD(3840x2160) 또는 QHD(2560x1440)로 설정할 수 있는 경우가 많은데, 이러한 상태에서 어플리케이션을 실행하면 앱의 인터페이스 내에서 글자 또는 버튼 등의 크기가 너무 작게 보여서 불편할 수가 있습니다. 그래서 고해상도 화면에서 앱들을 실행하더라도 앱 내의 각종 요소들의 크기를 육안으로 보기에 적절한 크기로 자동으로 조정해주는 기능을 말하는 것입니다.

 

일단 이러한 앱 스케일링 기능은 MS Windows OS의 디스플레이 설정에서 화면 해상도 뿐 아니라 배율에 대한 설정까지도 가능한 것과 연관이 있습니다. 실제로 이러한 설정 기능은 다음과 같은 형태로 지원됩니다(윈도우즈 11 기준).

 

이와 같이 설정하면 화면 해상도 자체는 3840x2160이지만 배율을 150%로 설정함으로써 육안으로는 화면의 해상도가 마치 2560x1440인 것처럼 보이게 됩니다. 데스크탑이 아닌 태블릿이나 노트북과 같이 화면이 비교적 작은 기기들의 경우는 배율 200%가 권장되기도 합니다. 따라서 어떤 어플리케이션이 앱 스케일링에 대응한다는 것은, 이와 같이 화면의 해상도 및 배율이 설정된 상태에서 그 앱을 실행했을 때 앱의 크기를 비롯하여 앱 내의 각종 요소들(문자, 버튼 등)의 크기가 육안으로 보기에 적절한 크기로 맞춰지게 된다는 의미입니다. 그런데 만약 이러한 디스플레이 설정 상태에서 실행된 어플리케이션이 앱 스케일링에 대응하지 않는다면, 이 앱은 화면 해상도를 3840x2160 그대로 인식하게 되면서 전반적으로 앱 자체의 크기 뿐 아니라 그 안의 문자 및 버튼 등과 같은 다양한 요소들의 크기가 너무 작게 보이게 됩니다. 이렇게 되면 유저 입장에서는 그 앱을 다루면서 눈이 쉽게 피로해질 수 있습니다.

 

따라서 요즘은 윈도우즈 PC용 어플리케이션들이 앱 스케일링 기능에 대응되도록 개발 또는 업데이트되는 것이 전반적인 추세입니다. 그래서 IDL의 경우도 8.9 버전부터(ENVI는 5.7 버전부터) 앱 스케일링에 대한 대응 기능이 지원되기 시작하였습니다. 그 효과는 IDL 워크벤치(IDLDE) 인터페이스의 각종 요소들의 크기뿐 아니라 IDL에서 표출되는 그림 자체에도 영향을 미치게 됩니다. 그러면 위와 같이 화면 해상도 및 배율이 설정된 상태에서 IDL 9.0을 실행하고 예제 그림을 표출해보면서 그 영향을 직접 확인해봅시다. 그림 표출을 위한 예제 프로그램은 다음과 같습니다.

 

xgz = 600
ygz = 600
data1 = FLTARR(xgz, ygz)
data2 = FLTARR(xgz, ygz)
data3 = FLTARR(xgz, ygz)
data1[1:400, 1:400] = HANNING(400, 400)*100
data2[300:599, 300:599] = HANNING(300, 300)*120
data3[120:419, 300:599] = HANNING(300, 300)*90
data = TEMPORARY(data1) + TEMPORARY(data2) + TEMPORARY(data3)
cvals = [50, 80]
win = WINDOW(DIMENSIONS=[720, 720], /NO_TOOLBAR)
c = CONTOUR(data, C_VALUE=cvals, COLOR='crimson', C_LABEL_SHOW=1, $
  C_THICK=2, XTITLE='Horizontal', YTITLE='Vertical', $
  AXIS_STYLE=2, FONT_SIZE=12, MARGIN=0.1, /CURRENT)

 

일단 여기서는 그래픽 창의 크기를 720x720으로 정의하였고 그림 내부의 문자들의 폰트 크기는 12로 설정하였습니다. 이제 앞서 언급한 것과 같은 화면 해상도 및 배율인 상태에서 IDL 9.0을 실행하고 이 프로그램을 실행하여 그림을 표출한 모습을 전체 화면으로 캡쳐한 모습은 다음과 같습니다.

 

이 모습을 잘 보면 일단 IDL 워크벤치 인터페이스 내의 글자 크기 및 버튼 크기 등은 어느 정도 무난하게 보이는 것 같습니다(물론 추가적인 세부 조정도 가능합니다). 그런데 여기서 중요한 것은 그래픽 창의 크기인데요. 전체 화면의 크기와 그래픽 창의 크기를 비교해볼 필요가 있습니다. 특히 세로 방향 크기를 주목해봅시다. 앞서 언급했듯이 프로그램에서 정의된 그래픽 창의 세로 방향 크기는 720 픽셀입니다. 그런데 이 크기는 전체 화면과 비교해보면 거의 절반에 해당된다는 것을 그냥 눈으로만 봐도 쉽게 알 수 있습니다. 앞서 언급했듯이 화면 해상도 자체는 3840x2160이지만 배율이 150%이기 때문에 마치 2560x1440인 것처럼 보이는 상태입니다. 이 상태에서 IDL에서는 720x720 크기의 그래픽 창을 정의하였으므로, 세로 방향만 본다면 720/1440 즉 절반 크기로 보이는 것이 실제로도 맞습니다. 즉 이러한 현상은 IDL 9.0이 앱 스케일링 설정에 대응하기 때문이라고 보면 됩니다. 이러한 특성은 IDL 8.9으로 테스트를 해봐도 마찬가지입니다.

 

그렇다면 만약 8.9 이전 버전의 IDL로 테스트를 해본다면 어떻게 될까요? 똑같은 화면 설정 상태에서 이번에는 IDL 8.8을 실행하여 동일한 예제 프로그램을 실행하고 결과를 얻어보았습니다. 그 결과를 전체 화면으로 보면 다음과 같습니다.

 

앞서 IDL 9.0으로 테스트한 결과와 비교해보면 분명히 차이가 보입니다. 일단 IDL 워크벤치 자체의 크기라든지 그 안의 글자 및 버튼 등의 크기도 좀 다릅니다. 그리고 중요한 것은 표출된 그림의 크기인데요. 프로그램에서 정의된 그래픽 창의 크기는 720x720 그대로입니다. 하지만 전체 화면에서 보면 앞서 IDL 9.0의 테스트 결과에 비해서는 그래픽 창이 더 작아진 것처럼 보입니다. 여기서도 세로 방향 크기만 주목해본다면, 그래픽 창의 720이란 크기는 전체 화면과 비교하면 약 1/3 정도로 보입니다. 실제로도 그렇습니다. 그 이유는 IDL 8.8은 앱 스케일링에 대응하지 않기 때문에 여기서 정의된 그래픽 창은 전체 화면의 해상도인 3840x2160만 고려되고 배율 150%는 전혀 고려되지 않습니다. 따라서 화면의 세로 방향 크기인 2160을 기준으로 하면 720이란 크기는 정확히 1/3에 해당됩니다. 그렇기 때문에 전체 화면이 저렇게 보이는 것입니다. 또한 그림 내부의 문자들의 크기도 전반적인 스케일이 앞서 IDL 9.0의 테스트 결과 화면에 비하여 꽤 커진 것이 보입니다. 이 부분 역시 앱 스케일링에 대응하지 않기 때문이라고 보면 됩니다.

 

물론 이와 같이 앱 스케일링에 대응하지 않는 버전의 IDL을 사용할 경우라 하더라도 IDL 워크벤치 인터페이스의 크기라든지 내부의 글자 크기 등에 대한 조절은 얼마든지 가능하기 때문에 유저가 편의에 맞게 조절하여 사용하면 됩니다. 그리고 그림 내의 문자들의 폰트 크기 역시 해당 기능(여기서는 PLOT 함수의 FONT_SIZE 속성)을 통하여 조절이 가능합니다. 따라서 앱 스케일링에 대응하지 않는다는 것이 IDL의 사용에 크게 지장을 주지는 않는다고 봐도 됩니다. 다만 요즘처럼 화면 해상도와 배율에 대한 조절이 모두 가능한 디스플레이 환경에서 IDL을 사용하게 될 경우에는 IDL의 버전에 따라 앱 스케일링에 대한 대응 여부의 차이점이 있다는 것을 염두에 두는 정도면 충분하지 않을까 싶습니다.

 

그리고 여기서 또 하나 주목해본다면, 앱 스케일링에 대응되는 IDL 8.9 및 이후의 버전을 사용할 경우에도 유저의 필요에 따라서는 앱 스케일링에 대한 대응 기능을 비활성화하는 것도 가능하다는 것입니다. 이러한 설정을 위해서는 먼저 파일 탐색기에서 IDL의 실행 파일을 찾아야 합니다. 앞서 살펴본 IDL 9.0의 사례를 기준으로 한다면 IDL 9.0의 실행 파일이 위치한 폴더 경로는 다음과 같습니다.

 

IDL 워크벤치 (IDLDE) : <INSTALL_DIR>\IDL90\bin\bin.x86_64\idlde.exe

커맨드 라인 모드의 IDL : <INSTALL_DIR>\IDL90\bin\bin.x86_64\idl.exe

 

이와 같이 해당 실행 파일을 먼저 찾은 다음 파일 아이콘 상에서 마우스 우측 버튼을 클릭하여 "속성" 인터페이스를 띄우고 "호환성" 탭으로 들어갑니다. 그 모습은 다음과 같습니다.

 

여기서 하단의 "높은 DPI 설정 변경" 버튼을 누릅니다. 그런데 만약 컴퓨터의 현재 유저 뿐만 아니라 모든 유저들을 대상으로 설정 변경을 해야 할 경우라면 그 밑에 보이는 "모든 사용자에 대한 설정 변경" 버튼을 누른 다음 여기서 "높은 DPI 설정 변경" 버튼을 누르면 됩니다. 물론 이와 같이 모든 사용자에 대하여 설정을 변경하는 것은 관리자 계정에서만 가능하다는 것을 유의해야 합니다. 어쨌든 "높은 DPI 설정 변경" 버튼을 누르면 다음과 같은 인터페이스가 또 뜹니다.

 

여기서 맨 하단에 보이는 "높은 DPI 조정 재정의" 섹션의 체크 버튼을 봅시다. 만약 이전에 이 설정을 변경한 적이 없다면 위와 같이 체크가 되지 않은 상태일 것입니다. 즉 체크가 되지 않은 상태가 앱 스케일링에 대응되도록 하는 상태입니다. 따라서 앱 스케일링 대응 기능을 비활성화하려면 이 체크 버튼을 다음과 같이 체크하고 확인 버튼을 누르면 됩니다.

 

그 다음에도 적용, 확인 등의 버튼들을 눌러서 설정을 마치면, 이제부터는 IDL 9.0이라 하더라도 앱 스케일링에 대응하지 않게 됩니다. 즉 앞서 살펴본 IDL 8.8의 테스트 결과와 동일한 상태가 됩니다. 실제로 이러한 설정 변경 후 IDL 9.0을 실행하여 위의 예제 코드를 실행하고 그림을 표출해본 모습은 다음과 같습니다. IDL 8.8의 테스트 결과와 동일하다는 것을 바로 알 수 있습니다.

 

결국 윈도우즈 OS에서 IDL 8.9 및 이후 버전의 IDL을 사용할 경우에는 앱 스케일링에 대한 대응 기능을 그대로 둬도 되고 아니면 위와 같은 별도의 설정 과정을 거쳐 비활성화해도 됩니다. 어쨌든 앱 스케일링에 대한 대응 기능을 사용할 것이냐는 어디까지나 선택의 문제이기 때문에 유저 각자의 상황에 맞게 설정을 하시면 되겠습니다. 그리고 오늘 소개된 내용은 MS Windows용 IDL에만 해당된다는 것도 다시 한번 유의하시기 바랍니다.

 

* 오늘 소개한 내용은 NV5 Geospatial의 웹페이지에 최근에 올라온 관련 게시물의 내용을 참조한 것입니다.

LIST