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년 기준, 플래그쉽 스마트폰의 주력 해상도 WQHD(2560x1440)[3]는 PC 모니터에 가장 많이 쓰이는 해상도인 FHD(1920*1080)보다 더 높아졌다. 예외도 있긴 하지만 일반적인 스마트폰보다 일반적인 모니터가 화면에 들어간 점의 개수가 더 줄어들었다. 모니터는 큼직하고, 스마트폰은 손 안에 들어갈 정도로 작은데도 말이다. 1인치의 길이에 들어가는 픽셀의 개수를 PPI(Pixels Per Inch)라는 단위로 표기하는데 당연히 PPI 값은 스마트폰이 모니터보다 월등히 높다. 픽셀이 화면에 훨씬 빽빽히 모여 있으므로, 스마트폰에서는 모니터보다 훨씬 더 선명하게 문자를 나타낼 수 있다.
피쳐폰에서 스마트폰으로 넘어오는 과도기에는 스마트폰도 PPI 및 해상도가 지금보다는 훨씬 낮았고, 특히 480*800 해상도를 가진 4인치대 디스플레이[4]가 많이 쓰였었다. 그러다 2010년대 들어, PPI에 따른 화면의 선명함이 디스플레이의 중요한 미덕으로 떠오르기 시작했다.
이와 같은 스마트폰 디스플레이의 PPI 부문의 품질 경쟁을 촉발한 것은 Apple이 2010년에 출시한 iPhone 4였다. 이 때 쓰인 Retina 디스플레이라는 용어는 300 PPI 이상의 화면을 가리키는 말이었고, 실제로 그 선명도는 326 PPI에 달해 당시 다른 스마트폰과 비교가 되지 않는 깔끔하고 선명한 디스플레이의 아름다움을 보여주었다. 이를 기점으로 출시되는 대다수의 스마트폰이 300PPI는 '당연히' 넘겨야 하는 기준선으로 삼기 시작했고, 엑스페리아 XZP의 경우에는 806 PPI라는 엄청난 선명도를 가진 디스플레이를 담고 나왔다. 참고로, 레티나 디스플레이라는 용어의 정의는 다소 모호해진 상태이다.
이런 고밀도 디스플레이를 컴퓨터 계열에서 보급한 것 역시 애플이었다.[5] 맥북에도 3K(2880x1800) 레티나 디스플레이를 탑재하면서 처음으로 컴퓨터 화면을 선명하고 보기 좋게 만드는 데에 성공한 것이다. 또한 '''운영체제 UI 전체'''에 안티에일리어싱을 걸어버리는 Apple macOS의 서체 렌더링을 통해 이러한 장점은 더욱 부각되었다. 운영체제와 하드웨어를 동시에 제작하는 Apple이었기에 가능한 일이었고, 이 부분에서는 Apple이 현재까지도 우위를 점하고 있다. 27형 iMac에는 무려 5.33K(5120x2880) 해상도의 Retina 5K 디스플레이를 탑재하면서 일체형 PC 계열에서도 Retina 디스플레이가 탑재되었다.
그러나 Windows PC, 특히 Windows 8 이전 버전에서는 아직도 초창기 피처폰 수준과 비슷한 선명도로 화면을 띄우고 있다. 물론 컴퓨터 디스플레이는 스마트폰보다 먼 곳에서 보기 때문에 선명도가 좀 떨어지더라도 큰 지장은 없지만, 시야 거리를 고려하더라도 컴퓨터가 스마트폰에 비할 때 해상도가 너무 낮은 것은 사실이다. 이러한 원인 중에는 PC의 많은 기능이 스마트폰으로 내려오면서 PC에 소홀했던 점도 있다.
Windows가 운영체제 단에서 삼고 있는 기준은 96 PPI[6]밖에 되지 않는다. 이것은 Windows 7 또는 이전 버전을 애플 MacBook Pro#s-2.3Boot 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라는 단어로 압축하였다.

4. Microsoft Windows의 HiDPI 지원


윈도우는 레거시 프로그램과 하위 호환을 어떻게든 끌고 가려는 끈질긴 운영체제다. 출시된 지 20년이 지난 옛날 게임인 스타크래프트가 공식적으로 최신 윈도우를 지원하게 된 1.18 패치 이전에도 Windows 10으로 돌아갈 수 있었던 이유도 MS가 호환성을 유지하려고 부단히 노력한 덕택이다. 그러나 옛날 프로그램을 돌리는 것은 해낼지라도, 고해상도의 고밀도 디스플레이에서 적절한 배율로 늘려 제대로 된 크기로 나타내는 것에는 어려움이 있다. HiDPI 지원이 뛰어난 macOS의 경우에는 커널을 여러 번 갈아엎으면서 '''레거시 프로그램의 호환성을 끊어버려''' HiDPI를 제대로 지원하는 프로그램이 대다수가 되었기 때문에 큰 문제가 없는 것이다. 특히 Windows의 레거시 지원은 어떠한 기능이 폐기(Deprecated) 되더라도 macOSLinux처럼 컴파일시 경고를 띄우거나 아예 오류가 나는 것이 아니라 그대로 사용이 가능하기 때문에 이런 신기능에 대한 학습이 없는 프로그래머들이 옛날 방식을 그대로 사용하게 되는 문제가 있어 2020년 현재에도 HiDPI 지원이 엉망인 프로그램들이 여전히 존재한다.
화면 속에서, 원래는 a*b 크기인 오브젝트를 '''n'''a*'''n'''b 크기로 키우는 것을 '스케일링(Scaling)'이라고 한다. WIndows의 기본값은 100%(96 PPI)이며, 화면 크기보다 해상도가 높은 경우에 화면에 표시되는 프로그램 및 아이콘 등의 오브젝트들이 작게 표시되는데, 이를 n배로 확대시켜 보기 편하게 하는 것이 바로 HiDPI이다. 참고로 n에는 자연수[9]가 들어가야만 계단이나 자글거림이 발생하지 않으며, 소수[10]가 들어가면 비교적 덜 깔끔해진다. 물론 사람에 따라 불편함을 느끼지 않는 경우도 많으니, 직접 눈으로 확인해 보며 조절하는 것이 가장 좋다.
소위 '프로그램이 깨져 보인다'는 부작용이 일어나기도 하는데, 아주 먼 옛날 프로그램은 의외로 크게 문제를 보이지 않고 오히려 10년 전 정도의 근래의 프로그램에서 자주 발생한다. 아주 먼 옛날 프로그램은 이런 고해상도를 염두에 두지 않고 개발했기 때문에 OS에서 강제로 확대하면 끝이지만, HiDPI 지원의 과도기적인 근래의 프로그램의 경우 HiDPI가 어중간하게 지원하여서 오히려 이상하게 표시된다. 그러는 경우에 버튼이 어딘가로 튀어나가 있거나 글자가 상자를 뚫고 나오기도 한다. 비교적 최신 소프트웨어들에서는 HiDPI 관련 문제가 적은 편이다.
윈도우로 작동하는 프로그램은 HiDPI를 지원하는 걸 세 가지로 분류할 수 있다. 'HiDPI를 제대로 지원하는 것', '어중간한 것', '아예 지원하지 못하는 것'. 이 가운데에서 어중간하게 지원하는 것이 보통 문제가 된다.
HiDPI를 제대로 지원하는 경우 프로그램은 Windows의 배율 설정을 제대로 알고 표시하기 때문에 문제가 발생하지 않는다. 아예 지원하지 않는 프로그램의 경우 윈도우에서 배율만큼 크게 표시한다. 단, 강제로 확대해서 표시하는 것이기 때문에 글자가 흐려진다. 또한 카탈리나부터 32비트 API인 카본이 삭제되면서 의미가 없어졌긴 했지만 macOS도 HiDPI를 지원하지 않는 앱의 경우 강제로 윈도우와 같이 확대해서 표시되어 카본이 살아있던 시기에는 윈도우처럼 흐릿하게 표시되는 프로그램들이 여럿 있었다.
여기서 크게 문제가 되는 어중간하게 지원하는 경우이며, 위에서 설명했지만 사람들이 자주 사용하는 근래의 프로그램이 대개 해당된다. '확대가 안 되는 것', '뭔가 제대로 꼬인 것'으로 다시 분류할 수 있다. 어중간하게 지원하는 프로그램의 경우 후술할 호환성 설정법으로 강제 확대할 수 있다.
확대가 안 되는 것은 배율설정을 무시하고 무조건 픽셀에 1:1 매칭되어 표시되는 프로그램으로, 시스템 비율이 200%(192 DPI)로 맞춰져 있더라도 프로그램은 무조건 100%(96 DPI)로 표시되기 때문에 정상적인 사용을 못 한다.
뭔가 제대로 꼬인 것 같은 프로그램은 개발툴[11]이 HiDPI를 제대로 지원하지 않았거나[12], 지원은 하지만 같이 사용한 서드파티 툴이 지원이 안 돼서 섞여 있거나, 개발자가 무시하고 개발하면 발생한다. 현재로서는 시간이 흘러 윈도우에서도 HiDPI 앱이 대세가 되기를 기다리는 수밖에 없다.
HiDPI를 제대로 지원하는 프로그램의 경우 실제 해상도가 더 높기에 더 깔끔하고 자연스럽게 표시된다. 아직은 HiDPI를 사용할 만한 초고해상도 디스플레이가 점유율을 차지한 지 얼마 되지 않았지만, 시간이 지나면서 초고해상도 화면을 가진 기기들이 눈에 띄게 늘어나고 있다. 삼성 노트북 9 프로델 XPS 15가 대표적이다. 와콤신티크 최신판, 모바일스튜디오 프로에서 4K를 지원하기 시작했다. 물론 이들의 가격은 MacBook Pro와 비슷하다는 게 함정이다.
Windows 10부터는 HiDPI 지원을 위하는 Awareness 단계가 나누어져 있다.
  • 지원하지 않음: 모든 환경에서 96DPI로 고정된다. Windows 8.1 부터 이 환경에서는 비트맵 스케일링을 하기 때문에 비 정수배 스케일링 환경에서 흐릿하게 보이는 효과를 가져온다.
  • System DPI Aware: Windows Vista 부터 지원한 방식. 주 모니터의 DPI를 설정을 모든 곳에서 사용한다. 이 때문에 모니터를 한대만 사용하거나 멀티 모니터여도 모니터간의 DPI가 동일하다면 HiDPI를 잘 지원하는 것으로 보이나, 주 모니터의 DPI만을 사용하게 되어서 시스템에 여러개의 각기 다른 DPI를 가진 모니터가 설치된 환경에서 모니터간 창을 이동하여도 창의 DPI가 변경되지 않는 문제점이 있는데 Windows 10 부터는 비트맵 스케일링을 하지만 근본적으로 네이티브 스케일링이 적용되지 않아 흐릿하게 보이게 된다. (e.g: 4K 200% → FHD 100%)
  • DPI Upscale: Windows 10 1703 RS2 부터 지원된 방식. 기본적으로 100% (96DPI)로 고정되나, GDI 부분을 내부적으로 스케일링하여 렌더링한다. DPI Awareness가 없고 GDI를 사용하는 레거시 프로그램들을 위한 과도기적 방법이기 때문에 OpenGL이나 DirectWrite와 같은 컴포넌트를 사용하는 부분은 스케일링을 지원하지 않는다.
  • Per-Monitor: Windows 8.1부터 지원되기 시작한 HiDPI지원. 이 방식은 창이 있는 모니터별로 창의 스케일링이 변경될 수 있음을 알린다. 즉 200%로 스케일된 4K모니터와 100% 스케일을 사용하는 FHD모니터가 시스템에 설치되어 있는 경우, 4K 200%에서는 192 DPI로 스케일링되고 표시되며, FHD 100%에서는 96 DPI로 다시 렌더링되어서 가장 이상적인 환경을 볼 수 있다. Chrome이 이를 지원하는 대표적인 예이다.
내부적으로 Per-Monitor V1과 Windows 10 1703 부터 지원된 Per-Monitor V2가 있는데, V1은 모니터간 DPI 변경을 감지하지만 모든 디스플레이의 좌표에 실제값을 사용해서 그에 맞춰 직접 스케일링해야 하는 것에 비해 V2의 경우 좌표 가상화를 지원한다.

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


불완전하게 지원하는 것은 △ 표시.
  • Adobe CC(Creative Cloud) 제품군[13]
  • Adobe Lightroom 5
  • BabelMap[14]
  • Microsoft Office 2013 이상
  • AutoCAD 2015 이상
  • 3ds Max
  • foobar2000[스킨강제확대]
  • 베가스 프로
  • Steam
  • Internet Explorer 11
  • Microsoft Edge
  • Chrome
  • Firefox
  • 클립 스튜디오
  • 메디방페인트
  • Battle.net[15]
  • Mudbox[스킨강제확대]
  • Visual Studio 2017 이상
  • Visual Studio Code
  • VirtualBox 6.0 이상
  • VMware[16]
  • IntelliJ IDEA 2018.1 이상
  • Universal Windows Platform[17]
  • 한컴오피스 2014 VP 이상[18]
  • 카카오톡 PC버전[19]
  • 팟플레이어[20]
  • AIMP(Per-Monitor V2 방식)
  • 반디집(Per-Monitor V2 방식)
  • Transmission Remote GUI(Per-Monitor V2 방식)
  • EditPlus
  • PaintTool SAI 2.0 버전 이상 △[21]
  • Origin(플랫폼)[스킨강제확대]
  • Xftp
  • wxWidgets 3.1.3부터는 Per-Monitor V2까지 완벽하게 지원한다.

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


실행하려는 앱 파일을 우클릭한 뒤, 속성의 호환성 탭에서 "높은 DPI 동작을 재정의합니다."를 체크하고 '시스템'[22] 또는 '시스템(고급)'[23][24]을 선택하면 된다.
윈도우 10 빌드 15063 이전의 구 버전은 이 방법을 사용해야 한다.

4.3. 기타


클리어타입 대체용으로 만들어진 글꼴 렌더링 프로그램인 MacType이 있는데, HiDPI 환경에서 사용하면 글꼴이 상당히 매끄러워져서 보기가 편안해진다. 다만 커널 후킹 방식으로 동작하기 때문에 호환성 문제가 발생할 수 있다.

5. macOS의 HiDPI 지원




6. 리눅스의 HiDPI 지원


데스크탑 리눅스의 경우 X11또는 Wayland 디스플레이 서버 위에서 GTK, Qt와 같은 UI 툴킷이 돌아가는 구조이다.
디스플레이 서버의 경우 구식 디자인의 X11보다는 Wayland가 더 현대 데스크탑에 맞게 설계되어 있다 보니 HiDPI를 더 잘 지원하고 있고, UI 툴킷의 경우 그에 맞추어 대표적으로 사용되는 GTK나 Qt 또한 디스플레이 서버의 HiDPI 프로토콜을 잘 지원하고 있기 때문에 오래된 툴킷을 사용하는 데스크탑 배포판 환경이 아닌 이상 (GTK2, Qt4 등) 어지간하면 다 지원하는 편이다
그리고 최종적으로 사용자가 보는 환경은 GNOME, KDE, XFCE, LXDE 등등으로 나뉘게 되는데 이 데스크탑 환경의 지원 수준에 따라 지원 실정이 다르다. HiDPI를 제대로 지원하는 데스크탑 환경도 있고, 그렇지 않은 환경도 있기에[25] 일단 제대로 지원하는 환경이기만 한다면 윈도우보다는 훨씬 사정이 낫다.
대표적으로 사용되는 데스크탑 환경 중 하나인 그놈은 최신 3.30 버전에서 2의 배수 단위로 스케일링을 지원하고 있다. 차후 윈도우와 비슷하게 공식적으로 125%, 150% 등의 세부 단위를 지원할 예정. GNOME Tweak Tool을 사용자가 직접 설치하여 스케일 상수를 바꿔주면 바로 사용할 수 있다. 정식 지원 기능이 아님에도 오히려 윈도우보다 더 잘 작동한다는게 아이러니하다.
Windows와 비교했을때 리눅스의 장점으로는 윈도우처럼 HiDPI 과도기 프로그램 때문에 깨져보이는 프로그램은 상대적으로 적고[26] 글꼴 렌더링이 클리어타입이 아닌 macOS와 비슷한 FreeType을 사용하고 있으므로 고해상도에서 글자가 선명해보인다. 또한 굴림돋움 글꼴이 없기 때문에 상대적으로 웹페이지가 깨끗하게 보인다.
다중 모니터는 Wayland에서만 제대로 된 스케일링을 지원한다. Xorg에서도 xrandr을 사용하면 모니터마다 스케일링을 할 수 있지만, 일부 엔비디아 GPU에서 작동하지 않거나 화면이 깨지는 등 버그가 발생할 수 있으니 주의.

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