서브픽셀 렌더링

서브픽셀 렌더링 시뮬레이션 파란색 채널이 분리되어 애니메이션화됨 화소 기하학의 예시로, 서브픽셀 렌더링에 고려되어야 하는 다양한 화소 및 서브픽셀 배열을 보여준다. 빨간색, 녹색, 파란색 서브픽셀로 구성된 LCD 디스플레이(오른쪽 하단이 가장 일반적인 예시)가 서브픽셀 렌더링에 가장 적합하다. **서브픽셀 렌더링**(Subpixel rendering)은 컬러 디스플레이 장치의 유효 해상도를 높이는 데 사용되는 방법이다. 이 방법은 각 화소의 구성을 활용하는데, 각 화소는 디스플레이 매트릭스에서 개별적으로 주소 지정이 가능한 빨간색, 녹색, 파란색의 세 가지 서브픽셀로 구성된다. 서브픽셀 렌더링은 주로 표준 DPI 디스플레이의 텍스트 렌더링에 사용된다. 내재된 색상 이상에도 불구하고 일반 그래픽을 렌더링하는 데에도 사용될 수 있다.
# 역사
오늘날 사용되는 서브픽셀 렌더링의 기원은 논란의 여지가 있다. 애플, IBM, 마이크로소프트는 각 기술이 의도하는 바에 따라 특정 기술적 차이를 가진 다양한 구현에 대한 특허를 냈다.John Markoff, "Microsoft's Cleartype Sets Off Debate on Originality date=2017-04-21", New York Times, December 7, 1998 마이크로소프트는 RGB 스트라이프 레이아웃에서 텍스트 렌더링을 위한 서브픽셀 렌더링 기술에 대한 여러 소프트웨어 특허를 미국에 가지고 있었다. 6,219,025, 6,239,783, 6,307,566, 6,225,973, 6,243,070, 6,393,145, 6,421,054, 6,282,327, 6,624,828 특허는 1998년 10월 7일부터 1999년 10월 7일 사이에 출원되었으며, 2019년 7월 30일에 만료되었다. FreeType의 특허 분석에 따르면 서브픽셀 렌더링 아이디어 자체는 특허로 보호되지 않지만, 색상 균형을 맞추는 마지막 단계에 사용되는 실제 필터가 보호된다. 마이크로소프트의 특허는 각 서브픽셀 값을 R, G, B 화소에 동일하게 분배하는 가장 작은 필터를 설명한다. 다른 어떤 필터도 더 흐릿하거나 색상 인공물을 유발할 것이다. 애플은 교차 라이선스 계약으로 인해 Mac OS X에서 이를 사용할 수 있었다.url-status=live
# 특성
컬러 디스플레이의 단일 화소는 여러 서브픽셀로 구성되는데, 일반적으로 빨간색, 녹색, 파란색(RGB)으로 왼쪽에서 오른쪽으로 배열된 세 개의 서브픽셀이다. 이 구성 요소들은 작은 돋보기(예: 확대경)로 보면 쉽게 볼 수 있다. 이러한 화소 구성 요소들은 광학적 흐림 및 눈의 신경 세포에 의한 공간 통합 때문에 인간의 눈에는 단일 색상으로 보인다. 그러나 눈은 위치에 훨씬 더 민감하다. 따라서 한 화소의 G와 B를 켜고 다음 화소의 R을 켜면 흰색 점이 생성되지만, 이는 첫 번째 화소의 RGB만으로 보았을 흰색 점보다 화소의 1/3만큼 오른쪽에 있는 것처럼 보인다. 서브픽셀 렌더링은 이러한 이점을 활용하여 렌더링된 이미지의 수평 해상도를 세 배로 높인다. 그러나 서브픽셀 렌더링을 하지 않을 때와 동일한 양의 빨간색, 녹색, 파란색이 켜지도록 하여 올바른 색상을 생성하려면 이 이미지를 흐리게 처리해야 한다. 서브픽셀 렌더링은 안티앨리어싱을 필수로 하지 않으며, 안티앨리어싱 사용 여부와 관계없이 더 부드러운 결과를 제공한다.access-date=2023-11-11 이는 인위적으로 해상도를 높이기 때문이다. 그러나 서브픽셀은 색상을 띠고 있기 때문에 색상 에일리어싱을 유발한다. 색상 아티팩트를 제거하기 위해 적용되는 후속 필터링은 안티앨리어싱의 한 형태이지만, 그 목적은 기존 안티앨리어싱처럼 들쭉날쭉한 모양을 부드럽게 하는 것이 아니다. 서브픽셀 렌더링은 소프트웨어가 서브픽셀의 레이아웃을 알아야 한다. 가장 흔한 오류는 모니터가 90도(또는 180도) 회전할 수 있다는 점인데, 모니터는 BGR이나 삼각형 모양, 또는 RGBW 사각형과 같은 4가지 색상으로 다른 서브픽셀 배열로 제조된다. 이러한 디스플레이에서 잘못된 서브픽셀 렌더링 결과는 서브픽셀 렌더링을 전혀 하지 않았을 때보다 더 나쁠 것이다(색상 아티팩트를 생성하지는 않지만, 노이즈가 많은 가장자리를 생성할 것이다).
# 구현

## 애플 II
스티브 깁슨은 1977년에 출시된 애플 II가 고해상도(280x192) 그래픽 모드에서 초기 형태의 서브픽셀 렌더링을 지원한다고 주장했다.url-status=live 워즈니악 특허는 2개의 "서브픽셀"만 사용했다.David Turner (2006년 9월 24일 20:00) LCD 렌더링 패치 date=2007-02-08 애플 II 고해상도 화면 버퍼를 구성하는 바이트는 7개의 가시 비트(각각 화소에 직접 해당)와 보라색/녹색 또는 파란색/주황색 색상 세트 중에서 선택하는 데 사용되는 플래그 비트를 포함한다. 각 화소는 단일 비트로 표현되므로 켜지거나 꺼진다. 화소 자체 내에는 색상이나 밝기를 지정하는 비트가 없다. 대신 색상은 NTSC 색상 인코딩 방식의 시각적 인공물로 생성되며, 수평 위치에 따라 결정된다. 짝수 수평 좌표의 화소는 항상 보라색(또는 플래그 비트가 설정된 경우 파란색)이며, 홀수 화소는 항상 녹색(또는 주황색)이다. 서로 옆에 있는 두 개의 켜진 화소는 쌍이 짝수/홀수 또는 홀수/짝수인지 여부와 플래그 비트 값에 관계없이 항상 흰색이다. 이것은 근사치이지만, 당시 애플의 고해상도 모드를 사용하는 대부분의 프로그래머들이 염두에 두었을 것이다. 깁슨의 예시는 인접한 두 비트가 흰색 블록을 만들기 때문에 실제로는 화소당 두 비트가 존재한다고 주장한다. 하나는 화소의 보라색 왼쪽 절반을 활성화하고, 다른 하나는 화소의 녹색 오른쪽 절반을 활성화한다. 만약 프로그래머가 대신 화소의 녹색 오른쪽 절반과 다음 화소의 보라색 왼쪽 절반을 활성화한다면, 그 결과는 1/2 화소만큼 오른쪽으로 이동한 흰색 블록이 되는데, 이는 실제로 서브픽셀 렌더링의 한 예시이다. 그러나 애플 II의 어떤 프로그래머도 비트 쌍을 화소로 간주했는지, 대신 각 비트를 화소라고 불렀는지는 명확하지 않다. 각 바이트의 플래그 비트는 화소를 반 화소 너비만큼 오른쪽으로 이동시켜 색상에 영향을 미친다. 이 반 화소 이동은 고해상도 그래픽 모드를 사용하여 텍스트를 표시하는 애플 유틸리티인 HRCG(High-Resolution Character Generator)와 같은 일부 그래픽 소프트웨어에 의해 대각선을 부드럽게 하는 데 활용되었다.
## 클리어타입
클리어타입 마이크로소프트는 1998년 COMDEX에서 클리어타입이라는 서브픽셀 렌더링 기술을 발표했다. 마이크로소프트는 2000년 5월에 클리어타입의 필터링을 설명하는 "패턴 디스플레이를 위한 변위 필터링"이라는 논문을 발표했다.url-status=live 이후 윈도우 XP에서 사용할 수 있게 되었지만, 윈도우 비스타까지는 기본적으로 활성화되지 않았다. (그러나 윈도우 XP OEM은 기본 설정을 변경할 수 있었고 실제로 변경했다.)그렉 히치콕 (스티븐 시노프스키의 서문 포함) "Engineering Changes to ClearType in Windows 7 date=2012-12-18", MSDN blogs, 2009년 6월 23일
## 프리타입
X 윈도 시스템에서 대부분의 현재 소프트웨어가 사용하는 라이브러리인 프리타입은 두 가지 오픈 소스 구현을 포함한다. 원래 구현은 클리어타입 안티앨리어싱 필터를 사용하며 다음 고지 사항이 포함되어 있다. "서브픽셀 렌더링을 위한 마이크로소프트 클리어타입 기술의 색상 필터링 알고리즘은 특허로 보호된다. 이러한 이유로 FreeType의 해당 코드는 기본적으로 비활성화되어 있다. 서브픽셀 렌더링 자체는 선행 기술임을 유의해야 하며, 다른 색상 필터를 사용하면 마이크로소프트의 특허 주장을 쉽게 회피할 수 있다."url-status=liveurl-status=live FreeType은 다양한 색상 필터를 제공한다. 버전 2.6.2부터 기본 필터는 라이트(light)이며, 이 필터는 정규화되고(값이 1로 합산됨) 색상이 균형 잡혀 있다(해상도를 희생하여 색상 가장자리를 제거함).url-status=dead 버전 2.8.1부터 "해상도 3배 증가 및 필터링과 같은 클리어타입 기술에 의존하지 않고 고품질 LCD 최적화 출력을 제공하는" 하모니(Harmony)라는 두 번째 구현이 존재한다. 이것이 기본적으로 활성화된 방법이다. 이 방법을 사용할 때 "각 색상 채널은 글리프 윤곽을 이동시킨 후 별도로 생성되며, LCD 패널의 색상 격자가 화소의 3분의 1만큼 이동한다는 사실을 활용한다. 이 출력은 가벼운 3탭 필터가 적용된 클리어타입과 구별할 수 없다."url-status=live 하모니 방법은 추가 필터링을 필요로 하지 않으므로 클리어타입 특허에 포함되지 않는다.
## 쿨타입
어도비는 자체 서브픽셀 렌더러인 쿨타입을 개발하여 윈도우, MacOS, 리눅스 등 다양한 운영 체제에서 동일한 방식으로 문서를 표시할 수 있게 했다. 2001년경에 출시되었을 때, 쿨타입은 마이크로소프트의 클리어타입보다 더 넓은 범위의 글꼴을 지원했다. 당시 마이크로소프트는 트루타입 글꼴에 국한되었지만, 어도비의 쿨타입은 포스트스크립트 글꼴 (및 해당 오픈타입 등가물)도 지원했다.Felici, James (2000년 4월) "ClearType, CoolType: The Eyes Have It", Seybold Report on Internet Publishing, Vol. 4 Issue 8
## macOS
Mac OS X (이후 OS X, 현재 macOS)도 쿼츠 2D의 일부로 서브픽셀 렌더링을 사용했다. 그러나 레티나 디스플레이가 도입된 후 제거되었다. 가독성을 극대화하기 위해 격자에 밀착되도록 하는(폰트 힌팅) 마이크로소프트의 구현과 달리, 애플의 구현은 디자이너가 설정한 글리프의 모양을 우선시한다.url-status=live