HiDPI

1. 개요
2. 역사와 원리
3. 어원
4. Microsoft Windows의 HiDPI 지원
4.1. HiDPI를 지원하는 주요 소프트웨어 목록
4.2. HiDPI를 제대로 지원하지 못하는 소프트웨어의 해결책
4.3. 기타
5. macOS의 HiDPI 지원
6. 리눅스의 HiDPI 지원

1. 개요

2013년 Windows 8.1부터 도입된 Microsoft Windows 기반 컴퓨터 디스플레이의 몇 배 더 많아진 픽셀 수만큼 몇 배로 더 선명하게 보여주는 표시 방식.

2. 역사와 원리

2000년대까지는 수많은 디지털 기기들이 화면에 대한 큰 욕심을 내지 않았다. 그저 '글씨를 보여 줄 수만 있는' 최소한의 낮은 해상도를 사용해왔던 것이다. 초창기 피처폰과 같은 경우도, 176*220(QCIF+)[1]이나 240*320(QVGA) 등의 낮은 해상도에서 문자를 사용자에게 보여주어서 편의적으로도, 심미적으로도 심각하게 좋지 못한 사용자 경험을 남겼다.[2]

2018년 기준, PC 모니터에 가장 많이 쓰이는 FHD(1920*1080) 해상도는 플래그쉽 스마트폰의 주력 해상도 WQHD(2560x1440)[3]보다 더 낮아졌다. 예외도 있긴 하지만 일반적인 스마트폰보다 일반적인 모니터가 화면에 들어간 점의 개수가 더 줄어들었다. 모니터는 큼직하고, 스마트폰은 손 안에 들어갈 정도로 작은 데도 말이다. 1인치의 길이에 들어가는 픽셀의 개수PPI(Pixels Per Inch)라는 단위로 표기하는데, 당연히 PPI 값은 스마트폰이 모니터보다 월등히 높다. 픽셀이 화면에 훨씬 빽빽히 모여 있으므로, 스마트폰에서는 모니터보다 훨씬 더 선명하게 문자를 나타낼 수 있다.

피쳐폰에서 스마트폰으로 넘어오는 과도기에는 스마트폰도 PPI 및 해상도가 지금보다는 훨씬 낮았고, 특히 480*800 해상도를 가진 4인치대 디스플레이[4]가 많이 쓰였었다. 그러다 2010년대 들어, PPI에 따른 화면의 선명함이 디스플레이의 중요한 미덕으로 떠오르기 시작했다.

이와 같은 스마트폰 디스플레이의 PPI 부문의 품질 경쟁을 촉발한 것은 애플이 2010년에 출시한 iPhone 4였다. 이 때 쓰인 레티나 디스플레이라는 용어는 300 PPI 이상의 화면을 가리키는 말이었고, 실제로 그 선명도는 326 PPI에 달해 당시 다른 스마트폰과 비교가 되지 않는 깔끔하고 선명한 디스플레이의 아름다움을 보여주었다. 이를 기점으로 출시되는 대다수의 스마트폰이 300PPI는 '당연히' 넘겨야 하는 기준선으로 삼기 시작했고, 갤럭시 S6의 경우에는 577 PPI라는 엄청난 선명도를 가진 디스플레이를 담고 나왔다. 참고로, 레티나 디스플레이라는 용어의 정의는 다소 모호해진 상태이다.

이런 고밀도 디스플레이를 컴퓨터 계열에서 보급한 것 역시 애플이었다.[5] 맥북에도 3K에 가까운(2880x1800) 레티나 디스플레이를 탑재하면서 처음으로 컴퓨터 화면을 선명하고 보기 좋게 만드는 데에 성공한 것이다. 또한 운영체제 UI 전체안티에일리어싱을 걸어버리는 macOS의 서체 렌더링을 통해 이러한 장점은 더욱 부각되었다. 운영체제와 하드웨어를 동시에 제작하는 애플이었기에 가능한 일이었고, 이 부분에서는 애플이 현재까지도 우위를 점하고 있다. 아이맥에는 무려 5K(5120x2880) 해상도를 탑재하면서 일체형 PC 계열에서도 레티나 디스플레이가 탑재되었다.

그러나 윈도우 PC, 특히 Windows 8 이전 버전에서는 아직도 초창기 피처폰 수준과 비슷한 선명도로 화면을 띄우고 있다. 물론 컴퓨터 디스플레이는 스마트폰보다 먼 곳에서 보기 때문에 선명도가 좀 떨어지더라도 큰 지장은 없지만, 시야 거리를 고려하더라도 컴퓨터가 스마트폰에 비할 때 해상도가 너무 낮은 것은 사실이다. 이러한 원인 중에는 PC의 많은 기능이 스마트폰으로 내려오면서 PC에 소홀했던 점도 있다.

윈도우가 운영체제 단에서 삼고 있는 기준은 96 PPI[6]밖에 되지 않는다. 이것은 윈도우 7 또는 이전 버전을 애플 MacBook ProBoot Camp로 설치할 경우 실감할 수 있다. 작업 표시줄 등 여러가지가 굉장히 작게 보인다. 9x 계열의 윈도우들 역시 화면 DPI 설정 기능 자체는 있었으나, 이 때의 DPI 설정 기능은 아예 96 DPI보다 더 낮은 해상도를 사용 할 것으로 가정하고 개발했던 것이라서 Windows 8.1 부터 지원되기 시작한 HiDPI 지원과는 거리가 굉장히 멀었다. 당시에는 고해상도 디스플레이가 상용화되지 않았기 때문에 9x 계열의 윈도우 에서 창을 최소화시키면 3000, 3000 좌표[7]에 창을 배치시켰다. NT 계열의 윈도우들과 GUI 스택 구조가 근본적으로 다른 탓에 화면 해상도를 높이면 Windows의 중요 모듈인 GDI, USER 등이 사용하는 힙(heap) 공간을 의미하는 리소스를 조금이나마 깎아먹기 때문에 해상도를 높게 잡기가 굉장히 부담스럽기 까지 했다.[8]

2013년 Windows 8.1 이후 본격적으로 고해상도 디스플레이를 위한 HiDPI를 지원하기 시작하면서, 상술된 문제들이 점차 해결되고 있다.

3. 어원

High DPI를 줄인 말로, High와 발음이 거의 같은 Hi로 바꾸고 DPI를 붙여서 HiDPI라는 단어로 압축하였다.

통상적으로 PPI는 Pixel이라는 단어가 들어가는 만큼 화면에서 쓰이고, DPI(Dots Per Inch)는 인쇄물에서 쓰이는 단위다. 그러나 워낙 비슷한 개념이다 보니 혼동해서 사용하는 경우가 상당히 많았고, 그것이 그대로 반영되어 지금은 HiDPI라는 용어로 굳어졌다.

물론 정확히 구분해서 쓰면 HiPPI라고 해야 되겠지만 이미 이쪽으로 굳어졌으며, 마이크로소프트에서도 공식적으로 HiDPI라는 용어를 사용한다.

4. Microsoft Windows의 HiDPI 지원

윈도우는 레거시 프로그램과 하위 호환을 어떻게든 끌고 가려는 끈질긴 운영체제다. 출시된 지 20년이 지난 옛날 게임인 스타크래프트가 공식적으로 최신 윈도우를 지원하게 된 1.18 패치 이전에도 윈도우 10으로 돌아갈 수 있었던 이유도 MS가 호환성을 유지하려고 부단히 노력한 덕택이다. 그러나 옛날 프로그램을 돌리는 것은 해낼지라도, 고해상도의 고밀도 디스플레이에서 적절한 배율로 늘려 제대로 된 크기로 나타내는 것에는 어려움이 있다. HiDPI 지원이 뛰어난 macOS의 경우에는 커널을 여러 번 갈아엎으면서 레거시 프로그램의 호환성을 끊어버려 HiDPI를 제대로 지원하는 프로그램이 대다수가 되었기 때문에 큰 문제가 없는 것이다.

화면 속에서, 원래는 a*b 크기인 오브젝트를 na*nb 크기로 키우는 것을 '스케일링(Scaling)'이라고 한다. 윈도우의 기본값은 100%(96 PPI)이며, 화면 크기보다 해상도가 높은 경우에 화면에 표시되는 프로그램 및 아이콘 등의 오브젝트들이 작게 표시되는데, 이를 n배로 확대시켜 보기 편하게 하는 것이 바로 HiDPI이다. 참고로 n에는 정수[9]가 들어가야만 계단이나 자글거림이 발생하지 않으며, 정수가 아닌 유리수[10]가 들어가면 비교적 덜 깔끔해진다. 물론 사람에 따라 불편함을 느끼지 않는 경우도 많으니, 직접 눈으로 확인해 보며 조절하는 것이 가장 좋다.

소위 '프로그램이 깨져 보인다'는 부작용이 일어나기도 하는데, 아주 먼 옛날 프로그램은 의외로 크게 문제를 보이지 않고 오히려 10년 전 정도의 근래의 프로그램에서 자주 발생한다. 아주 먼 옛날 프로그램은 이런 고해상도를 염두에 두지 않고 개발했기 때문에 OS에서 강제로 확대하면 끝이지만, HiDPI 지원의 과도기적인 근래의 프로그램의 경우 HiDPI가 어중간하게 지원하여서 오히려 이상하게 표시된다. 그러는 경우에 버튼이 어딘가로 튀어나가 있거나 글자가 상자를 뚫고 나오기도 한다. 비교적 최신 소프트웨어들에서는 HiDPI 관련 문제가 적은 편이다.

윈도우로 작동하는 프로그램은 HiDPI를 지원하는 걸 세 가지로 분류할 수 있다. 'HiDPI를 제대로 지원하는 것', '어중간한 것', '아예 지원하지 못하는 것'. 이 가운데에서 어중간하게 지원하는 것이 보통 문제가 된다.

HiDPI를 제대로 지원하는 경우 프로그램은 윈도우의 배율 설정을 제대로 알고 표시하기 때문에 문제가 발생하지 않는다. 아예 지원하지 않는 프로그램의 경우 윈도우에서 배율만큼 크게 표시한다. 단, 강제로 확대해서 표시하는 것이기 때문에 글자가 흐려진다. 참고로 macOS도 HiDPI를 지원하지 않는 앱의 경우 강제로 확대해서 표시된다.

여기서 크게 문제가 되는 어중간하게 지원하는 경우이며, 위에서 설명했지만 사람들이 자주 사용하는 근래의 프로그램이 대개 해당된다. '확대가 안 되는 것', '뭔가 제대로 꼬인 것'으로 다시 분류할 수 있다. 어중간하게 지원하는 프로그램의 경우 후술할 호환성 설정법으로 강제 확대할 수 있다.

확대가 안 되는 것은 배율설정을 무시하고 무조건 픽셀에 1:1 매칭되어 표시되는 프로그램으로, 시스템 비율이 200%(192 DPI)로 맞춰져 있더라도 프로그램은 무조건 100%(96 DPI)로 표시되기 때문에 정상적인 사용을 못 한다.

뭔가 제대로 꼬인 것 같은 프로그램은 개발툴[11]이 HiDPI를 제대로 지원하지 않았거나[12], 지원은 하지만 같이 사용한 서드파티 툴이 지원이 안 돼서 섞여 있거나, 개발자가 무시하고 개발하면 발생한다. 현재로서는 시간이 흘러 윈도우에서도 HiDPI 앱이 대세가 되기를 기다리는 수밖에 없다.

HiDPI를 제대로 지원하는 프로그램의 경우 실제 해상도가 더 높기에 더 깔끔하고 자연스럽게 표시된다. 아직은 HiDPI를 사용할 만한 초고해상도 디스플레이가 점유율을 차지한 지 얼마 되지 않았지만, 시간이 지나면서 초고해상도 화면을 가진 기기들이 눈에 띄게 늘어나고 있다. 삼성 노트북 9 프로델 XPS 15가 대표적이다. 와콤신티크 최신판, 모바일스튜디오 프로에서 4K를 지원하기 시작했다.

Windows 10부터는 HiDPI 지원을 위하는 Awareness 단계가 나누어져 있다.

  • 지원하지 않음: 모든 환경에서 96DPI로 고정된다. 이 환경에서는 비 정수배 스케일링 환경에서 흐릿하게 보이는 효과를 가져온다. Windows 8.1까지는 온전히 시스템의 스케일에 의존하게 된다. Windows 10부터는 이 방식의 어플리케이션은 비트맵 스케일링을 한다.
  • System: Windows Vista 부터 지원한 방식. 시스템 전역이 모두 같은 DPI값을 사용한다. 이 값은 로그인시 설정된 값을 사용한다.
  • DPI Upscale: Windows 10 1703 RS2 부터 지원된 방식. 기본적으로 100% (96DPI)로 고정되나, GDI 부분을 내부적으로 스케일링하여 렌더링한다. DPI Awareness가 없는 애플리케이션에 효과가 있으나, OpenGL과 같은 외부 뷰포트 등의 컴포넌트를 사용하는 경우 올바르게 스케일링되지 않는다.
  • DPI Aware: Windows 8.1부터 지원된 방식. 주 모니터의 DPI값을 모든 프로그램이 사용한다. 이 때문에 이 방식은 얼핏 보면 HiDPI를 잘 지원하는 것으로 보이나, 역으로 저 DPI 환경(e.g: 4K 200% → FHD 100%)으로 창을 이동하는 경우 내부적으로는 스케일링되어 있는 것을 다운스케일함으로써 흐릿하게 보인다.
  • Per-Monitor: 하위 창의 이벤트 처리에 따른 V1과 RS2 부터 지원된 V2가 있으며, 이 방식은 창이 있는 모니터별로 창의 스케일링이 변경될 수 있음을 알린다. 즉 200%로 스케일된 4K모니터와 100% 스케일을 사용하는 FHD모니터가 시스템에 설치되어 있는 경우, 4K 200%에서는 192 DPI로 스케일링되고 표시되며, FHD 100%에서는 96 DPI로 다시 렌더링되어서 가장 이상적인 환경을 볼 수 있다. Qt가 이 방식을 지원하는 것으로 보이지만, 위의 각 모니터간 DPI 변경에 따른 이벤트 부분 구현이 완벽하지 않아, 윈도우 핸들 등이 스케일링되지 않거나 200% 렌더링되어 있는 상태 그대로 이동되는 문제점이 있다.

4.1. HiDPI를 지원하는 주요 소프트웨어 목록

어쩡쩡하게 지원하는 것은 △ 표시.

추가바람

4.2. HiDPI를 제대로 지원하지 못하는 소프트웨어의 해결책

실행하려는 앱 파일을 우클릭한 뒤, 속성의 호환성 탭에서 "높은 DPI 동작을 재정의합니다."를 체크하고 '시스템'[22] 또는 '시스템(고급)'[23][24]을 선택하면 된다.

윈도우 10 빌드 15063 이전의 구 버전은 이 방법을 사용해야 한다.

4.3. 기타

클리어타입 대체용으로 만들어진 글꼴 렌더링 프로그램인 MacType이 있는데, HiDPI 환경에서 사용하면 글꼴이 상당히 매끄러워져서 보기가 편안해진다.

5. macOS의 HiDPI 지원

  자세한 내용은 Retina Display 문서를 참고하십시오.

6. 리눅스의 HiDPI 지원

데스크탑 환경이 GNOME, KDE, Xfce, LXDE 등등으로 나뉘게 되므로 각 데스크탑 환경마다 지원 실정이 다르다. HiDPI를 제대로 지원하는 데스크탑 환경도 있고, 그렇지 않은 환경도 있다.[25] 하지만 일단 제대로 지원하는 환경이기만 한다면 윈도우보다는 훨씬 사정이 낫다.

대표적으로 사용되는 데스크탑 환경 중 하나인 그놈은 최신 3.30 버전에서 2의 배수 단위로 스케일링을 지원하고 있다. 차후 윈도우와 비슷하게 공식적으로 125%, 150% 등의 세부 단위를 지원할 예정. GNOME Tweak Tool을 사용자가 직접 설치하여 스케일 상수를 바꿔주면 바로 사용할 수 있다. 정식 지원 기능이 아님에도 오히려 윈도우보다 더 잘 작동한다는게 아이러니하다.

윈도우와 비교했을때 리눅스의 장점으로는 윈도우처럼 HiDPI 과도기 프로그램 때문에 깨져보이는 프로그램은 상대적으로 적고[26] 글꼴 렌더링이 클리어타입이 아닌 macOS와 비슷한 FreeType을 사용하고 있으므로 고해상도에서 글자가 선명해보인다. 또한 굴림돋움 글꼴이 없기 때문에 상대적으로 웹페이지가 깨끗하게 보인다.

다중 모니터는 Wayland에서만 제대로 된 스케일링을 지원한다. Xorg에서도 xrandr을 사용하면 모니터마다 스케일링을 할 수 있지만, 일부 엔비디아 GPU에서 작동하지 않거나 화면이 깨지는 등 버그가 발생할 수 있으니 주의.


  1. [1] 삼성 애니콜의 저가 기종(C230, 블랙/화이트 UI 시기에 나오는 S 계열, LGT용 저가형을 제외한 일부 W 계열)에 많이 탑재되어서 악명이 높았다. SCH-S540 이후로는 더 이상 나오지 않는다.
  2. [2] 이 당시에는 폰이라는 개념이 단지 전화, 문자만 주고받는 물건이었기에 240*320(QVGA)도 고해상도로 취급되었다. (다만 일본의 경우 WVGA이상 피처폰이 발매되면서 QVGA폰들은 찾아보기가 어렵게되었다.) 1920*1080(FHD) 해상도의 스마트폰이 널리 보급되고 2560*1440(WQHD) 해상도의 스마트폰도 자주 쓰이는 2017년 현재 관점에서는 이해하기 어렵다.
  3. [3] QHD(Quad HD)라고도 표기하나, qHD(quarter FHD, 960*540)과 혼동할 여지가 있기 때문에 이 표기를 선호하는 경우가 많다.
  4. [4] 갤럭시 S(4.0"), 갤럭시 S II(4.3"), 베가 레이서(4.3") 등.
  5. [5] 바이오P 등 몇 차례의 시도가 있었지만 여러가지 요소가 겹치면서 실패하거나 전문가용 제품으로 극소수만 팔리던 실정이었다.
  6. [6] Windows 3.x까지는 72 PPI였다.
  7. [7] 이는 4K UHD 모니터 두 개만 써도 9x의 최소화된 프로그램이 노출된다는 이야기다.
  8. [8] 게다가, 이러한 리소스 공간은 일정한 크기로 고정되어있는 구조이기 때문에 단지 이 공간을 늘릴 목적으로만 램을 추가로 장착하는 것은 아무런 의미가 없다.
  9. [9] x2, x3, x4 등.
  10. [10] x1.5, x2.5, x3.5 등.
  11. [11] 2015년 7월에 정식 공개된 Visual Studio 2015도 HiDPI와 관련해서 문제가 발생하는 경우가 있다. WPF에 단순 버튼만 나열된 테스트 프로그램임에도 불구하고 제작한 프로그램이 UI 쪽에서 문제가 발생했다.
  12. [12] 의외로 Windows XP에도 HiDPI 설정이 있었다. 제대로 작동하지도 않는 과도기적 지원이었지만, 그때의 설정도 같이 지원하려고 하다 보니 더욱 문제가 되는 것.
  13. [13] CS6까지는 지원하지 않는다. Adobe Illustrator CC는 Per-monitor awareness가 지원되지만 컨텍스트 메뉴가 제대로 스케일링되지 않는다. Adobe Photoshop CC은 Per-monitor awareness가 지원되지만 스케일링 배율을 100%, 200% 두 가지만 지원했다가, CC 2018 버전에서 완전히 지원하게 되었다.
  14. [14] 참고로 Windows 문자표는 기본 프로그램임에도 HiDPI가 적용되지 않아서 UI가 깨진다. Windows 95부터 있었던 오래된 프로그램인 탓이 큰 듯.
  15. [스킨강제확대] 15.1 15.2 스킨을 강제로 확대하는 방식이기 때문에 완벽한 지원은 아니다.
  16. [16] 정식버전 기준으로는 스킨을 강제로 확대하기 때문에 아직 완벽하게 지원하는건 아니다. 그나마 지금 베타테스트 중인 신 UI는 150%배율 기준 완벽하게 지원하기 때문에 조만간 이러한 문제가 해결될 전망이다.
  17. [17] VMware 프로그램만 지원하는 게 아니라, 시스템의 DPI 설정과 VM의 DPI 설정을 동기화해주는 기능이 내장되어 있다.
  18. [18] 초창기에 나온 마이크로소프트 스토어 앱의 경우 제대로 지원하지 않는 경우도 존재했지만, Windows 10의 출시 이후 해결되었다.
  19. [19] 2014 VP와 NEO는 메뉴가 굴림체로 되어 있기 때문에 HiDPI 환경에서 상당한 괴리감이 느껴진다. 2018에서 글꼴이 변경되었다.
  20. [200%] 20.1 20.2 200%를 넘는 배율을 지원하지 못하는 반쪽짜리 지원이다. 예로서, 4K 노트북 등으로는 제대로 사용할 수 없다.
  21. [21] 어쩡쩡하게 지원한걸 지원했다고 자랑하는걸 보아 당분간 제대로 지원할 생각이 없을 것으로 보인디. 스킨을 강제로 확대하는 방식이다.
  22. [22] 단순 확대라서 흐려지는 건 어쩔 수 없다. 근본적으로 지원이 안 되는 걸 OS에서 하려면 아무래도 한계가 있으니..
  23. [23] '시스템'과 차이가 있을 수도 있고 없을 수도 있다. 효과가 있는 경우는 폰트가 뚜렷해진다. 이게 기본값인 걸로는 대표적으로 '장치 관리자'가 있다.
  24. [24] 여기서 고급은 영어 원문으로 enhanced이다. "고급"은 오역이고 "향상된"이 의미상 맞겠지만 최근 MS의 번역 수준은..
  25. [25] 대체로 GNOMEKDE가 HiDPI 지원이 잘 되있는 편.
  26. [26] 오픈 소스 프로그램이 주류인 리눅스는 버그가 발생하면 제작자에게 수정을 요청하거나 본인이 뜯어고치면 되므로 버려진 프로그램이 아닌 이상 과도기적 프로그램들이 그리 많지 않다.

최종 확인 버전:

cc by-nc-sa 2.0 kr

Contents from Namu Wiki

Contact - 미러 (Namu)는 나무 위키의 표가 깨지는게 안타까워 만들어진 사이트입니다. (89.97ms)