KR20140074937A - 안티앨리어싱 기법을 이용하여 텍스트를 렌더링하기 위한 커버리지 값의 캐싱 기법 - Google Patents

안티앨리어싱 기법을 이용하여 텍스트를 렌더링하기 위한 커버리지 값의 캐싱 기법 Download PDF

Info

Publication number
KR20140074937A
KR20140074937A KR20147009568A KR20147009568A KR20140074937A KR 20140074937 A KR20140074937 A KR 20140074937A KR 20147009568 A KR20147009568 A KR 20147009568A KR 20147009568 A KR20147009568 A KR 20147009568A KR 20140074937 A KR20140074937 A KR 20140074937A
Authority
KR
South Korea
Prior art keywords
text
display
values
subpixel
value
Prior art date
Application number
KR20147009568A
Other languages
English (en)
Other versions
KR101993941B1 (ko
Inventor
메가 자인
마일즈 엠 코헨
로버트 에이 브라운
워라차이 차오위라프라시트
앤드류 엠 프레셔스
칸월 베드브래트
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20140074937A publication Critical patent/KR20140074937A/ko
Application granted granted Critical
Publication of KR101993941B1 publication Critical patent/KR101993941B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/02Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed
    • G09G5/026Control of mixing and/or overlay of colours in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/22Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of characters or indicia using display control signals derived from coded signals representing the characters or indicia, e.g. with a character-code memory
    • G09G5/24Generation of individual character patterns
    • G09G5/28Generation of individual character patterns for enhancement of character form, e.g. smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/12Indexing scheme for image data processing or generation, in general involving antialiasing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2320/00Control of display operating conditions
    • G09G2320/02Improving the quality of display appearance
    • G09G2320/0271Adjustment of the gradation levels within the range of the gradation scale, e.g. by redistribution or clipping
    • G09G2320/0276Adjustment of the gradation levels within the range of the gradation scale, e.g. by redistribution or clipping for the purpose of adaptation to the characteristics of a display device, i.e. gamma correction
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/04Changes in size, position or resolution of an image
    • G09G2340/0457Improvement of perceived resolution by subpixel rendering
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/10Mixing of images, i.e. displayed pixel being the result of an operation, e.g. adding, on the corresponding input pixels
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)
  • Image Generation (AREA)

Abstract

표시될 텍스트에 대한 서브픽셀 커버리지 값들을 계산하여 서브픽셀 커버리지 값들의 캐싱을 가능하게 하기 위한 기술들이 설명된다. 서브픽셀 커버리지 값들은 디스플레이를 제어하는 데 사용될 합성 컬러 값들을 계산하기 위해 텍스트에 대한 컬러 정보와 하나 이상의 다른 중첩 표시 요소에 대한 컬러 정보의 선형 결합을 가능하게 할 수 있다. 디스플레이의 서브픽셀들을 제어하는 데 사용될 그러한 합성 컬러 값들은 일부 실시예들에서 감마 보정 프로세스의 수행 없이 계산될 수 있다. 캐싱된 서브픽셀 커버리지 값들을 검색하고, 이 값들을 텍스트 및 다른 중첩 표시 요소들에 대한 컬러 정보와 결합하여 디스플레이의 서브픽셀들에 대한 합성 컬러 값들을 계산하기 위한 기술들도 설명된다. 적어도 하나의 그래픽 처리 유닛(GPU)이 서브픽셀 커버리지 정보를 이용하여 동작들을 수행하고, 서브픽셀들에 대한 합성 컬러 값들을 계산하도록 구성될 수 있다.

Description

안티앨리어싱 기법을 이용하여 텍스트를 렌더링하기 위한 커버리지 값의 캐싱 기법{CACHING COVERAGE VALUES FOR RENDERING TEXT USING ANTI-ALIASING TECHNIQUES}
컴퓨팅 장치들은 텍스트의 형태로 사용자들에게 정보를 표시할 수 있다. 텍스트는 캐릭터들(characters)의 열들로 이루어진다. 영어 텍스트의 경우, 캐릭터들은 레터들(letters) 및 구두점들의 형태를 갖는다. 다른 언어들로 제공되는 정보는 다른 캐릭터들을 사용할 수 있다. 특정 캐릭터들이 텍스트를 표현하는 데 사용되는 방식에 관계없이, 컴퓨팅 장치는 컴퓨터의 디스플레이 상에 렌더링될 텍스트를 정의하는 입력을 수신하고, 디스플레이에 대한 적절한 제어 신호들을 생성하여 텍스트가 적절히 표시되게 할 수 있는 유틸리티를 갖도록 구성될 수 있다.
디스플레이 상에 렌더링될 텍스트를 정의하는 입력은 글리프들(glyphs)의 정의들을 이용하는 것을 포함하는 임의의 적절한 형태를 가질 수 있다. 글리프는 텍스트의 요소, 예를 들어 캐릭터의 전부 또는 일부이다. 캐릭터들이 레터들과 구두점들인 경우, 글리프는 선들 및 점들과 같은 구두점 또는 레터의 전부 또는 일부일 수 있다. 글리프들의 정의들은 글리프의 형상을 기술하고, 임의의 적절한 포맷을 가질 수 있으며, 디스플레이에 대한 적절한 제어 신호들을 생성하기 위해 임의의 적절한 방식으로 사용될 수 있다.
텍스트의 적절한 표시를 위해 제어 신호들을 생성하기 위한 렌더링 프로세스는 다수의 단계를 포함할 수 있다. 이러한 단계들 중 일부는 사용자들이 텍스트를 더 즐겁게 볼 수 있게 하는 것과 관련될 수 있다. 컴퓨터 디스플레이 상에서 콘텐츠를 볼 때, 사람들은 다른 그래픽 객체들의 표현보다는 텍스트의 표현 방식에 더 민감한 경향이 있다. 따라서, 사람들이 보기에 편하다고 느끼는 방식으로 컴퓨터 디스플레이를 통해 텍스트를 제공하는 것은 이미지들을 제공하는 데 사용되는 단계들과 다른 단계들을 필요로 한다. 그러한 특별한 단계들의 일례는 텍스트의 글리프들의 에지들의 처리이다.
구체적으로, 많은 컴퓨터 사용자들은 디스플레이의 픽셀 값들이 글리프들에 딱딱하고 콘트라스트가 높은 에지들을 제공하도록 설정될 때 디스플레이 상에서 텍스트를 보는 것을 좋아하지 않거나, 보는 데 어려움을 느끼는데, 그 이유는 이것이 텍스트의 에지들에 농담이 고르지 않고 들쭉날쭉한 (또는 "앨리어싱된") 외관을 제공할 수 있기 때문이다. 보다 만족스러운 표현을 제공하기 위하여, "안티앨리어싱" 기술들이 이용된다. 안티앨리어싱 기법들은 글리프 및 글리프 주위의 영역들을 표현하기 위해 디스플레이의 어느 픽셀들을 사용할지를 선택하며, 글리프들의 에지들을 유연하게 하고 글리프들을 보다 만족스럽게 볼 수 있게 하기 위해 각각의 그러한 픽셀에 대한 강도를 설정한다.
텍스트가 디스플레이 상에 표시될 때, 텍스트는 다른 표시 요소들과 함께 표시될 수 있다. 예를 들어, 텍스트는 배경 또는 전경 그래픽들과 중첩되게 표시될 수 있다. 텍스트와 그래픽을 중첩되게 표시하기 위해, 컴퓨팅 장치는 텍스트와 그래픽이 중첩되는 효과를 생성할 디스플레이의 개별 픽셀들에 의해 방출될 합성 컬러를 결정한다. 합성 컬러를 결정하기 위해, 텍스트에 대한 컬러 정보 및 그래픽에 대한 컬러 정보를 이용하여 계산들이 수행된다. 텍스트 및 그래픽에 대한 컬러 정보는 디스플레이의 픽셀들에 대응하는 텍스트 및 그래픽 각각에 대한 컬러 값들 내에 포함될 수 있다. 예를 들어, 텍스트에 대한 컬러 정보가 특정 픽셀이 적색이어야 하는 것을 지시하고, 그래픽에 대한 컬러 정보가 그 특정 픽셀이 청색이어야 하는 것을 지시하는 경우, 그 픽셀에 대한 합성 컬러 값을 자주색으로서 식별함으로써 중첩 효과가 생성될 수 있다.
컬러 정보의 결합을 용이하게 하기 위해, 텍스트 및 중첩 표시 요소들에 대한 각각의 컬러 값이 ("알파" 값들이라고도 하는) 커버리지 값들에 의해 표현되는 "커버리지" 정보와 연관될 수 있다. 중첩 표시 요소들에 대한 컬러 값들을 결합함으로써 합성 컬러 값을 계산할 때, 각각의 표시 요소에 대한 커버리지 값들은 합성 컬러 값들에 대한 컬러 값들의 기여들 각각을 픽셀별로 가중화하는 데 사용된다. 구체적으로, 커버리지 값들은 하나의 표시 요소에 대한 컬러 값들을 다른 표시 요소에 대한 컬러 값들보다 적게 가중화함으로써 투명 효과를 삽입하는 데 사용될 수 있다. 예를 들어, 개별 픽셀에 대해, 커버리지 값들로부터의 가중화가 합성 컬러 값을 그래픽의 컬러에 더 유사하게 할 때, 밑에 있는 그래픽의 상부에 위치하도록 표시될 텍스트는 디스플레이 상에 투명하게 나타나거나, 합성 컬러 값이 텍스트 컬러에 더 유사한 경우보다 더 투명하게 나타날 수 있다.
커버리지 값들은 안티앨리어싱 기법들에서 텍스트의 에지들을 부드럽게 하고, 에지들이 중첩 표시 요소들과 유연하게 혼합된 것으로 보이게 하는 데에도 사용될 수 있다. 에지들이 유연하게 혼합된 것으로 보이게 하기 위해, 픽셀에 대한 합성 컬러 값을 결정할 때, 그 픽셀에 대한 텍스트에 대한 커버리지 값이 투명 효과를 생성하도록 설정될 수 있다. 예를 들어, 텍스트에 대한 커버리지 값들은 글리프의 중앙에 있거나 글리프의 에지에 가까운 픽셀들에 대해서는 더 불투명한 효과를 그리고 글리프의 에지로부터 떨어진 픽셀들에 대해서는 더 투명한 효과를 생성하도록 설정될 수 있으며, 이는 혼합 효과를 생성할 수 있다. 구체적으로, 텍스트에 대한 커버리지 값들은 텍스트의 임의의 캐릭터의 표시 영역 내에 속하는 픽셀의 비율에 기초하여 디스플레이의 픽셀마다 설정될 수 있다. 캐릭터의 영역 내에 완전히 속하는 픽셀의 경우, 커버리지 값은 100%로 지정될 수 있으며, 따라서 텍스트는 그 픽셀에서 투명하지 않다(즉, 픽셀의 컬러는 텍스트 컬러와 더 유사할 것이다). 또한, 완전히 텍스트의 임의의 캐릭터의 영역 밖에 있는 픽셀의 경우, 커버리지 값은 0%로 지정될 수 있으며, 따라서 텍스트는 그 픽셀에서 완전히 투명하고, 픽셀은 텍스트와 관련된 어떠한 정보도 표시하지 않을 것이다. 일부는 텍스트의 캐릭터들의 영역 내에 있고, 일부는 밖에 있을 수 있는, 텍스트의 에지들을 따르는 픽셀들은 픽셀과 중첩되는 임의의 캐릭터의 양에 기초하여 0%와 100% 사이의 텍스트에 대한 커버리지 값을 가질 것이다. 따라서, 픽셀의 합성 컬러 값에 대한 텍스트 컬러의 기여는 텍스트의 캐릭터의 표시 영역 내에 속하는 픽셀의 비율에 따라 가중화될 것이다. 이것은 텍스트가 유연화 효과(smoothing effect)를 갖도록 표시되는 것을 가능하게 하며, 이러한 유연화 효과는 텍스트가 배경과의 딱딱하고 높은 콘트라스트의 에지를 갖는 것이 아니라 에지들을 따라 배경 내에 혼합된 것으로 보이게 한다. 이러한 방식으로 설정되는 커버리지 값들은 0과 1 사이의 수치들로 정규화될 수 있다.
다양한 안티앨리어싱 기법들이 알려져 있다. 글리프들의 에지들을 쉐이딩(shading)하기 위한 하나의 안티앨리어싱 기법은 종종 "그레이스케일" 쉐이딩으로 지칭된다. 그레이스케일 쉐이딩을 이용하여, 텍스트에 대한 단일 커버리지 값이 전술한 기술들을 이용하여 픽셀에 대해 총괄적으로 설정된다.
다른 하나의 기술은 서브픽셀 안티앨리어싱으로서 또는 대안으로서 서브픽셀 커버리지로서 알려져 있다. 이러한 접근법은 정보를 컬러로 제공할 수 있는 많은 컴퓨터 디스플레이의 특성을 이용한다. 많은 타입의 디스플레이들의 픽셀들 각각은 픽셀로부터의 광을 투영하기 위해 함께 동작하는 다수의 서브픽셀을 포함한다. 픽셀의 각각의 서브픽셀은 적색, 녹색 또는 청색과 같은 상이한 컬러의 광을 방출한다. 서브픽셀들을 제어함으로써, 픽셀로부터 방출되는 광의 강도 및 컬러 양자가 제어될 수 있다.
서브픽셀 안티앨리어싱 기법들에서는, 전체 픽셀에 의해 방출될 광의 원하는 컬러 및 강도에 기초하여 서브픽셀들을 엄격히 제어하는 대신에, 각각의 서브픽셀을 개별적으로 제어하기 위한 값들이 글리프를 표시할 때 유연화 효과를 생성하도록 설정된다. 구체적으로, 서브픽셀 안티앨리어싱의 경우, 커버리지 값들은 그레이스케일 안티앨리어싱에서와 같이 전체 픽셀에 대해서가 아니라 픽셀의 각각의 서브픽셀에 대해 개별적으로 설정된다. 그레이스케일 안티앨리어싱에서는 픽셀에 대한 텍스트에 대한 커버리지 값이 캐릭터의 표시 영역 내에 속하는 픽셀의 양에 비례하도록 설정된 반면, 서브픽셀 안티앨리어싱에서는 커버리지 값이 각각의 서브픽셀의 양에 비례하도록 설정될 수 있다. 개별 서브픽셀들에 대한 커버리지 값들은 소정의 강도를 갖는 광을 방출하도록 서브픽셀들 각각을 제어하기 위한 합성 제어 값들을 설정할 때 사용될 수 있다. 구체적으로, 전술한 바와 같이, 텍스트에 대한 컬러 정보는 서브픽셀들에 대한 합성 제어 값들을 결정하기 위해 텍스트에 대한 서브픽셀 커버리지 값들 및 중첩 표시 요소들에 대한 컬러 정보와 결합될 수 있다. 디스플레이의 서브픽셀들은 전체 픽셀들보다 뛰어난 해상도를 가지므로, 각각의 서브픽셀에 대해 커버리지 값을 설정할 경우, 그레이스케일 안티앨리어싱을 이용할 경우에 가능한 것보다 뛰어난 유연성이 달성될 수 있으며, 텍스트의 시각적 외관은 그레이스케일 안티앨리어싱을 이용하여 달성될 수 있는 것보다 우수할 수 있다. 워싱턴 레드먼드의 마이크로소프트사로부터 입수 가능한 MICROSOFT(등록상표) CLEARTYPE(등록상표) 텍스트가 서브픽셀 안티앨리어싱을 이용하는 유연화 기술의 일례이다.
전술한 바와 같이, 커버리지 값들은 커버리지 값들이 디스플레이의 픽셀에 의해 제공될 합성 컬러 값들을 결정하기 위한 계산들에 미치는 영향으로 인해 그러한 투명성 및 유연화 효과들을 생성하는 데 사용될 수 있다. 컬러 값들에 대한 이러한 계산들은 (텍스트 및 그래픽과 같은) 다수의 표시 요소가 중첩되게 보이도록 표시될 때, 텍스트에 대한 커버리지 값들이 텍스트에 대한 컬러 값들을 변경하는 데 사용될 때 수행된다. 그러나, 다수의 표시 요소에 대한 컬러 정보를 결합할 때 복잡성이 발생한다. 대부분의 디스플레이들은 선형으로 응답하지 않으므로, 다수의 표시 요소에 대한 (커버리지 값들에 의해 변경된 바와 같은) 변경된 컬러 값들의 단순한 선형 보간은 사람의 눈에 텍스트와 그래픽의 중첩으로 보이지 않는 합성 컬러들을 생성할 것이다. 결과적으로, 텍스트 및 그래픽에 대한 변경된 컬러 값들이 선형 보간에 의해 결합되는 경우, 결과적인 표시는 사람에게 올바르게 보이지 않을 것이다. 이러한 결과를 피하기 위해, "감마 보정"이라고 하는 기술을 적용하여, 변경된 컬러 값들의 결합을 바꿈으로써, 합성 컬러가 사람 관찰자에게 의도된 중첩처럼 보이게 하는 것이 알려져 있다. 감마 보정에서, 선형 보간을 통해 생성되는 합성 컬러 값들은 사용될 디스플레이와 관련된 "감마 값"에 의해 변경되며, 따라서 합성 컬러 값들은 올바르게 보일 것이다.
본 출원인들은 처리 단계들의 적절한 배열에 의해 컴퓨팅 장치가 디스플레이 상에 텍스트를 렌더링할 때 더 빠르게, 높은 표시 품질을 갖도록 동작할 수 있다는 것을 인식하고 감지하였다. 단계들은 나중에 텍스트를 중첩되는 그래픽들에 대해 상이한 위치들에 렌더링하는 데 사용될 수 있는 정보의 캐싱(cashing)을 용이하게 하도록 배열될 수 있다. 텍스트의 빠르고 높은 품질의 표현은 캐싱할 정보 및 정보 캐싱 방식의 선택에 의해 더 용이해질 수 있다.
따라서, 본 명세서에서는, 서브픽셀 안티앨리어싱 기법들을 이용하여 결정되는 서브픽셀 커버리지 값들의 캐싱을 가능하게 하는 방식으로, 표시될 텍스트에 관한 정보를 처리하기 위한 기술들이 설명된다. 일부 실시예들에서, 기술들은 디스플레이의 픽셀들 및/또는 서브픽셀들의 합성 컬러 값들을 결정하기 위해 하나 이상의 중첩 표시 요소에 관한 정보와 선형으로 결합될 수 있는 텍스트에 대한 서브픽셀 커버리지 값들을 생성할 수 있다. 이러한 실시예들에서, 서브픽셀 커버리지 값들은 캐시로부터 검색될 때 중첩 표시 요소들에 관한 정보와 선형으로 결합될 수 있으므로, 중첩 표시 요소들과 함께하는 텍스트의 렌더링이 더 빠르고 효율적으로 수행될 수 있다. 서브픽셀 커버리지 값들은 텍스트에 대한 컬러 값들로부터 분리되어 캐싱될 수 있다. 일부 실시예들에서, 컬러 값들은 서브픽셀 커버리지 값들로부터 분리되고, 개별 데이터 구조 내에 저장될 수 있다.
위의 요약은 첨부된 청구항들에 의해 정의되는 본 발명의 비한정적인 요약이다.
첨부 도면들은 축척으로 도시하는 것을 의도하지 않는다. 도면들에서, 다양한 도면들에 도시되는 각각의 동일한 또는 거의 동일한 컴포넌트는 동일한 번호에 의해 표현된다. 명료화를 위해, 모든 도면에서 모든 컴포넌트가 라벨링되지는 않는다. 도면들에서:
도 1a는 서브픽셀 컬러 채널들을 갖는 예시적인 디스플레이의 블록도이다.
도 1b는 서브픽셀 안티앨리어싱 기법들을 이용하여 그려진 글리프의 일례이다.
도 2는 일부 실시예들이 동작할 수 있는 컴퓨팅 장치의 일부 컴포넌트들의 블록도이다.
도 3은 컴퓨터 디스플레이에 대한 텍스트의 렌더링에 사용하기 위해 안티앨리어싱 프로세스의 커버리지 값들을 캐싱하기 위한 예시적인 프로세스의 흐름도이다.
도 4는 컴퓨터 디스플레이에 대한 텍스트의 렌더링에 사용하기 위해 캐시로부터 안티앨리어싱 프로세스의 커버리지 값들을 검색하기 위한 예시적인 프로세스의 흐름도이다.
도 5는 안티앨리어싱 프로세스를 위한 커버리지 값들의 계산의 일부로서 수행될 수 있는 예시적인 프로세스의 흐름도이다.
도 6은 감마 보정 프로세스의 수행을 피하기 위해 커버리지 값들을 보정하기 위한 예시적인 프로세스의 흐름도이다.
도 7은 상이한 컬러들을 이용하여 표시될 텍스트에 대한 커버리지 값들을 저장하기 위한 예시적인 프로세스의 흐름도이다.
도 8은 일부 실시예들이 동작할 수 있는 컴퓨팅 장치의 블록도이다.
본 출원인들은 사용자 인터페이스 내의 텍스트의 표시에 필요한 처리 단계들이 인터페이스, 특히 애니메이션을 포함하거나, 사용자들에게 인터페이스의 요소들을 애니메이트하는 것을 허가하는 인터페이스들을 느리게 한다는 것을 인식하고 감지하였다. 그렇지만, 본 출원인들은 처리 단계들의 적절한 배열이 텍스트에 관한 정보의 캐싱을 가능하게 할 수 있고, 이러한 정보 캐싱이 텍스트의 렌더링을 촉진할 수 있다는 것을 더 인식하고 감지하였다. 게다가, 본 출원인들은 픽셀들에 대한 컬러 값들 및 커버리지 값들을 저장하기 위한 전통적인 기술들이 관련된 픽셀에 대한 값들을 함께 단일 데이터 구조 내에 저장한 반면에 서브픽셀 컬러 값들 및 서브픽셀 커버리지 값들이 그래픽 처리 유닛에 의해 처리될 상이한 데이터 구조들 내로 분리되는 경우에 텍스트의 렌더링이 촉진될 수 있다는 것을 인식하고 감지하였다.
더 구체적으로, 본 출원인들은 사용자 인터페이스들이 이전의 인터페이스들보다 더 상호작용하고 더 애니메이트되고 있으며, 애니메이션의 양의 이러한 상승이 사용자 인터페이스 내의 텍스트의 렌더링에 대한 특별한 어려움을 제공한다는 것을 인식하였다. 관찰자를 즐겁게 하는 방식의 텍스트 렌더링은 많은 처리 단계를 필요로 하며, 이러한 처리 단계들은 텍스트에 대한 커버리지 값들의 계산, 텍스트에 대한 컬러 정보 및 커버리지 값들과 중첩되는 그래픽들에 대한 컬러 정보의 결합, 및 결과적인 합성 컬러 값들의 감마 보정을 포함한다. 이러한 처리 단계들은 비교적 긴 실행 시간을 필요로 할 수 있으며, 이는 사용자 인터페이스들 내에 애니메이션이 포함될 때 시간 지연 문제를 유발할 수 있다. 예를 들어, 사용자 인터페이스들은 텍스트 상에서의 줌인 또는 배경 그래픽에 대한 텍스트의 스크롤 또는 이동과 같은 상호작용 애니메이션들을 허가한다. 전통적인 렌더링 기법들을 이용할 경우, 텍스트가 애니메이션 후에 다시 렌더링될 때마다, 텍스트와 그래픽들의 새로운 중첩을 위한 합성 컬러 값들을 결정하기 위해 동일 처리 단계들이 다시 실행되어야 한다. 따라서, 처리 단계들은 인터페이스가 사용자에 대해 일관성 없게 또는 느리게 응답하게 할 수 있다.
본 출원인들은 이러한 애니메이트되는 인터페이스들을 사용하는 장치 타입들이 변하고 있다는 것을 더 인식하고 감지하였다. 애니메이트되는 인터페이스들은 이동 전화 및 태블릿 컴퓨터와 같이 터치스크린 인터페이스를 갖는 핸드헬드 컴퓨터들에서 보편적이다. 그러나, 그러한 핸드헬드 컴퓨터들은 데스크탑 또는 랩탑 개인용 컴퓨터들에 비해 한정된 자원들 및 비교적 느린 프로세서들을 갖는다. 그러한 한정된 자원들을 이용하여 애니메이션 후에 텍스트에 대한 처리 단계들을 수행하는 것은 이러한 애니메이트되는 인터페이스들을 더 느리게 할 수 있다.
본 출원인들은 또한, 중첩 표시 요소들에 대한 텍스트의 위치가 변할 때, 합성 컬러 값들이 변할 수 있고, 전통적인 렌더링 프로세스는 새로운 합성 컬러 값들에 대해 감마 보정이 수행될 것을 필요로 하므로, 이러한 처리 단계들이 반복되어야 한다는 것을 인식하고 감지하였다. 그렇지만, 본 출원인들은 텍스트 정보와 다른 표시 요소들에 관한 정보가 감마 보정의 수행 없이 결합될 수 있는 경우에는 애니메이션 후에 수행되어야 하는 처리 단계들이 간소화될 수 있다는 것을 인식하고 감지하였다. 구체적으로, 감마 보정이 배제될 수 있는 경우, 텍스트 및 다른 중첩 표시 요소들에 대한 컬러 정보는 애니메이션 후에 선형으로 결합될 수 있다. 그러한 선형 결합은 빠르게 수행될 수 있다. 또한, 서브픽셀 커버리지 값들을 포함하는 텍스트 정보는 미리 캐싱될 수 있고, 단순히 애니메이션 후에 검색되어 중첩 표시 요소들에 관한 정보와 결합될 수 있다. 단순히 결합을 수행하는 것은 인터페이스의 렌더링을 촉진할 수 있으며, 인터페이스를 사용자들이 보고 조작하기에 더 즐겁게 할 수 있다.
게다가, 본 출원들은 일부 전통적인 그래픽 처리 유닛들(GPU들)이 컬러 정보의 선형 결합을 포함하는 일부 렌더링 동작들을 수행하도록 특별히 구성되고, 이러한 동작들을 빠르게 수행할 수 있다는 것을 인식하고 감지하였다. GPU들이 텍스트 및 다른 중첩 표시 요소들에 대한 컬러 정보의 결합을 위한 동작들을 수행하도록 구성될 수 있는 경우, 애니메이션 후의 렌더링 동작들은 더 촉진될 수 있다. 예를 들어, GPU가 캐싱된 서브픽셀 커버리지 값들의 데이터 구조 상에 작용하고, 캐싱된 서브픽셀 커버리지 값들과 텍스트 및 다른 중첩 표시 요소들에 대한 서브픽셀 컬러 정보를 결합하여 서브픽셀에 대한 합성 컬러 값들을 결정하도록 프로그래밍되는 경우, 렌더링 동작들이 촉진되고, 인터페이스들이 개선될 수 있다.
따라서, 본 명세서에서는, 커버리지 정보의 캐싱을 가능하게 하기 위해, 렌더링될 텍스트에 관한 커버리지 정보를 계산하기 위한 기술들이 설명된다. 일부 실시예들에서, 서브픽셀 안티앨리어싱 기법들과 함께 사용하기 위한 처리된 커버리지 값들이 계산되고 캐싱된다. 서브픽셀 커버리지 값들이 처리 후에 후속 사용을 위해 캐싱될 때, 서브픽셀 커버리지 값들은 컴퓨팅 장치의 메인 메모리(예를 들어, 시스템 메모리 또는 비디오 메모리) 내에 배치될 수 있으며, 처리된 값들은 서브픽셀들에 대한 컬러 정보와 결합되거나 연관되지 않는다. 처리된 커버리지 값들은 일부 실시예들에서 디스플레이를 제어하는 데 사용될 합성 컬러 값들을 계산하기 위한 텍스트에 대한 컬러 정보와 하나 이상의 다른 중첩 표시 요소에 대한 컬러 정보의 선형 결합을 가능하게 할 수 있다. 디스플레이의 서브픽셀들을 제어하는 데 사용될 그러한 합성 컬러 값들은 일부 실시예들에서 감마 보정 프로세스의 수행 없이 계산될 수 있다.
또한, 본 명세서에서는, 캐싱된 서브픽셀 커버리지 값들을 검색하고, 서브픽셀 커버리지 값들과 텍스트 및 다른 중첩 표시 요소들에 대한 컬러 정보를 결합하여, 서브픽셀들에 대한 합성 컬러 값들을 계산하기 위한 기술들이 설명된다. 일부 실시예들에서는, 적어도 하나의 그래픽 처리 유닛(GPU)이 서브픽셀 커버리지 정보를 이용하여 동작들을 수행하고, 서브픽셀들에 대한 합성 컬러 값들을 계산하도록 구성될 수 있다. 일부 예들에서, GPU(들)는 텍스트에 대한 서브픽셀 컬러 값들 및 별도로 저장되는 텍스트에 대한 서브픽셀 커버리지 값들에 기초하여 서브픽셀들에 대한 합성 컬러 값들을 계산하도록 구성될 수 있다. 예를 들어, (픽셀에 대한 적색, 녹색 및 청색 채널들에 대한 제어 값들일 수 있는) 서브픽셀 컬러 값들은 서브픽셀 커버리지 값들과 다른 데이터 구조 내에 저장될 수 있다. 이것은 GPU가 픽셀에 대한 4개의 필드/값: 픽셀에 대한 3개의 컬러 값(적색, 녹색 및 청색) 및 하나의 커버리지 값을 갖는 단일 데이터 구조 내에 배열되는 단일 픽셀에 대한 입력 정보를 처리하도록 고유하게 적응되는 경우일 수 있다. 일부 실시예들에서, 서브픽셀 커버리지 값들과 함께, GPU는 픽셀에 대한 6개의 값: 3개의 서브픽셀 컬러 값(적색, 녹색 및 청색) 및 3개의 서브픽셀 커버리지 값을 처리할 것이다. GPU(들)는 4개-값 포맷으로 배열될 때 입력 정보를 효율적으로, 빠르게 처리할 수 있다. 효율적인 처리를 위해 데이터를 4개 값 포맷으로 배치하기 위해, 일부 실시예들에서는 픽셀에 대한 컬러 값들이 픽셀에 대한 커버리지 값들로부터 분리되고, 상이한 데이터 구조 내에 배치된다. 일부 예들에서, 3개의 컬러 값은 하나의 4개 값 데이터 구조 내에 배치될 수 있으며, 3개의 서브픽셀 커버리지 값은 다른 4개 값 데이터 구조 내에 배치될 수 있다. 이어서, GPU(들)는 2개의 데이터 구조를 이용하여 단일 픽셀에 대한 정보를 처리하도록 구성될 수 있으며, 전통적으로 GPU들은 단일 데이터 구조를 이용하여 단일 픽셀에 대한 모든 정보(컬러 값들 및 커버리지 값)를 처리한다.
이러한 기술들의 다양한 예시적인 구현들이 아래에 설명된다. 그러나, 실시예들은 임의의 적절한 방식으로 구현될 수 있으므로, 실시예들은 설명되는 이러한 예시적인 기술들 중 임의의 기술을 구현하는 것으로 한정되지 않는다는 것을 알아야 한다.
전술한 바와 같이, 본 명세서에서 설명되는 기술들은 텍스트가 표시될 때 디스플레이의 픽셀들 및 서브픽셀들을 제어하기 위한 합성 컬러 값들을 결정하는 데 사용될 수 있다. 일부 예들에서, 텍스트는 단독으로 표시될 수 있으며, 서브픽셀 커버리지 값들은 합성 컬러 값들을 계산할 때 텍스트에 대한 컬러 정보만을 변경하는 데 사용될 수 있다. 그러나, 다른 예들에서는, 텍스트가 하나 이상의 다른 표시 요소와 중첩되어 표시될 수 있으며, 서브픽셀 커버리지 값들은 텍스트에 대한 컬러 정보 및 다른 표시 요소(들)에 대한 컬러 정보에 기초하여 합성 컬러 값들을 계산할 때 사용될 수 있다. 실시예들은 임의의 특정 표시 요소 또는 표시 요소들의 타입과 중첩되는 텍스트에 대한 합성 컬러 값들을 계산하는 것으로 한정되지 않는다. 다양한 실시예들에서, 중첩 표시 요소들은 텍스트의 상부에 또는 텍스트 뒤에 표시될 하나 이상의 그래픽일 수 있거나, 다른 텍스트일 수 있다. 설명의 편의를 위해, 아래의 예들에서, 서브픽셀 커버리지 값들은 텍스트가 다른 표시 요소와 중첩되는 경우에 합성 컬러 값들을 계산하는 데 사용되는 것으로 설명되며, 다른 중첩 표시 요소는 배경 그래픽으로서 설명된다. 그러나, 달리 지시되지 않는 한, 이러한 예시적인 기술들 중 임의의 기술은 다른 타입의 중첩 표시 요소들과 함께 또는 텍스트가 어떠한 다른 표시 요소와도 중첩되지 않는 경우에 사용될 수 있다는 것을 알아야 한다.
본 명세서에서 설명되는 기술들은 텍스트와 중첩 표시 요소 간의 관계가 변할 때 텍스트를 빠르고 효율적으로 표시하는 데 유용할 수 있다. 그러한 관계는 텍스트가 사용자 인터페이스 내에서 이동할 때를 포함하여, 텍스트 또는 중첩 표시 요소가 서로에 대해 이동할 때 변할 수 있다. 예를 들어, 본 명세서에서 설명되는 기술들은 텍스트가 배경 그래픽 위에서 스크롤될 때 유용할 수 있다. 이러한 기술들은 배경 그래픽이 텍스트에 대해 이동하는 경우에도 또는 텍스트와 중첩되는 이미지가 변할 때에도 사용될 수 있다. 설명의 편의를 위해, 아래의 예들은 텍스트가 배경 그래픽에 대해 이동할 때의 텍스트 렌더링과 관련하여 제공된다. 그러나, 이러한 기술들은 임의의 상대적 변화에 대한 응답 또는 텍스트에 대한 어떠한 변경과도 관련되지 않은 텍스트 표시 요청에 대한 응답을 포함하는 임의의 이유로 인한 텍스트 렌더링에 유용할 수 있다는 것을 알아야 한다.
일부 실시예들은 MICROSOFT(등록상표) CLEARTYPE(등록상표) 서브픽셀 안티앨리어싱 기법과 같은 서브픽셀 안티앨리어싱 기법들과 관련하여 동작할 수 있다. 서브픽셀 안티앨리어싱 기법들은 디스플레이의 픽셀들이 다수의 서브픽셀 조명 컴포넌트를 포함하는 디스플레이들과 관련하여 동작한다. 본 명세서에서 설명되는 바와 같은 텍스트 렌더링 기술들은 이 분야에 공지된 바와 같은 기술들을 포함하는 임의의 서브픽셀 안티앨리어싱 기법과 관련하여 사용될 수 있다.
도 1a는 일부 서브픽셀 안티앨리어싱 기법들이 동작할 수 있는 디스플레이의 일례를 블록도 형태로 도시한다. 도 1a의 디스플레이(100)는 픽셀(102)을 포함하는 5x7 픽셀들의 어레이를 포함한다. 디스플레이(100)의 픽셀들 각각은 3개의 서브픽셀 요소를 포함하며, 이들 각각은 소정 컬러의 광을 생성하도록 배열된다. 도 1a에서, 디스플레이(100)의 제1 행은 각각의 서브픽셀이 생성하도록 구성되는 광의 컬러: 적색(R), 녹색(G) 또는 청색(B)으로 라벨링된다. 예를 들어, 픽셀(102)은 적색 서브픽셀(102A), 녹색 서브픽셀(102B) 및 청색 서브픽셀(102C)을 포함한다.
디스플레이의 서브픽셀들은 픽셀이 전체로서 소정 컬러 또는 강도의 광을 방출하도록 제어될 수 있다. 예를 들어, 적색, 녹색 및 청색 서브픽셀들을 제어하여 소정 양의 광을 각각 방출하게 함으로써, 픽셀로부터 전체로서 자주색 광이 방출될 수 있다. 그레이스케일 안티앨리어싱 및 다른 커버리지 기술들을 사용할 경우, 픽셀 전체에 대해 단일 커버리지 값이 설정되고, 이 값은 서브픽셀들 각각에 대한 컬러 값들을 조정하는 데 사용된다. 그러나, 대신에 서브픽셀 안티앨리어싱 기법들을 사용할 경우, 서브픽셀들 각각에 개별 커버리지 값이 할당되며, 따라서 각각의 서브픽셀에 의해 출력되는 광은 각각의 서브픽셀을 이용하여 효과를 생성하도록 제어될 수 있다. 구체적으로, 서브픽셀들 각각은 중첩 배경 그래픽과 혼합되는 글리프의 외관을 생성하기 위해 유연화 효과를 제공하는 데 사용되는 커버리지 값을 할당받을 수 있다. 픽셀이 서브픽셀 커버리지 값들을 이용하여 조정되는 컬러 값들을 이용하여 전체로서 제어될 때, 서브픽셀들은 원하는 혼합 효과를 생성할 것이다.
도 1b는 개별 서브픽셀들에 커버리지 값들을 할당함으로써 혼합 효과를 생성하는 일례를 도시한다. 도 1b는 도 1a의 디스플레이(100)의 서브픽셀들에 각각 대응하는 커버리지 값들의 맵핑(110)을 나타낸다. 맵핑(110)은 'A' 글리프가 표시될 때 커버리지 값들이 어떻게 할당될 수 있는지를 나타낸다. 글리프가 표시될 때, 맵핑(110)은 디스플레이(100) 상에 표시할 글리프를 렌더링하기 위해 다른 정보와 결합될 수 있다.
맵핑(110)에서, 디스플레이의 서브픽셀들은 상이한 커버리지 값들을 할당받는다. 픽셀(112)의 예에 도시된 바와 같이, 하나의 픽셀의 서브픽셀들 각각은 상이한 커버리지 값들을 할당받을 수 있다. 각각의 서브픽셀에 할당되는 커버리지 값들은 배경 그래픽과의 혼합 효과를 생성하기 위해 서브픽셀을 이용하여 표시될 텍스트 컬러의 투명성을 제어하는 데 사용될 수 있다. 전술한 바와 같이, 텍스트에 대한 커버리지 값들은 합성 컬러의 계산에서 텍스트 컬러를 가중화함으로써 텍스트 컬러 및 배경 그래픽 컬러에 기초하여 합성 컬러를 결정할 때 사용될 수 있다. 서브픽셀 커버리지 값들의 경우, 서브픽셀이 소정 컬러의 광(예로서, 적색, 녹색 또는 청색 광)을 방출하는 경우, 서브픽셀 커버리지 값들은 각각의 서브픽셀로부터 방출되는 광의 양 또는 광의 강도를 결정하기 위해 텍스트 컬러 및 배경 그래픽 컬러와 함께 사용될 수 있다.
서브픽셀 커버리지 값들을 이용하여 광의 양/강도를 설정함으로써, 디스플레이에 표시될 텍스트에 대해 혼합 효과가 제공될 수 있다. 이러한 혼합은 전술한 바와 같이 텍스트의 에지들을 유연하게 하며, 텍스트를 사람들이 더 즐겁게 보게 할 수 있다.
도 1a 및 1b의 예에서 제공되는 서브픽셀들의 수, 컬러 및 배열은 예시적일 뿐이라는 것을 알아야 한다. 실시예들은 다른 컬러들의 서브픽셀들(예로서, 황색 서브픽셀들)과 함께, 픽셀당 더 많거나 적은 서브픽셀들(예로서, 4개의 서브픽셀)과 함께 동작할 수 있고/있거나, 픽셀들을 임의의 다른 방식(예로서, 적색-녹색-청색 대신에 청색-적색-녹색 배열)으로 배열할 수 있는데, 이는 실시예들이 이들과 관련하여 한정되지 않기 때문이다.
또한, 실시예들은 어떠한 특정 타입의 그래픽 인터페이스, 디스플레이 또는 컴퓨팅 장치와 함께 동작하는 것으로도 한정되지 않는다. 본 명세서에 설명되는 기술들은 임의의 적절한 디스플레이 내에 표시될 임의의 그래픽 인터페이스에 대한 텍스트 렌더링의 일부로서 사용될 수 있다. 또한, 그래픽 인터페이스 및 디스플레이는 임의의 적절한 컴퓨팅 장치와 함께 구현될 수 있다. 실시예들이 동작할 수 있는 컴퓨팅 장치들의 예들은 랩탑 또는 데스크탑 개인용 컴퓨터, 이동 전화, 스마트폰 및 개인 휴대 단말기(PDA)를 포함하는 핸드헬드 컴퓨터, 태블릿 컴퓨터 및 서버를 포함한다.
일부 실시예들이 동작할 수 있는 컴퓨팅 장치의 일례가 도 2에 도시되어 있다. 도 2의 블록도는 예시적인 컴퓨팅 장치(200)의 일부 컴포넌트들을 나타낸다. 도시된 바와 같이, 컴퓨팅 장치(200)는 (본 명세서에서 더 간단하게 "프로세스들"(202)이라고도 하는) 하나 이상의 실행 프로세스들(202)을 포함하며, 이들 각각은 콘텐츠가 디스플레이에 표시될 것을 요청하기 위해 그래픽 엔진(204)과 상호작용할 수 있다. 표시될 콘텐츠는 안티앨리어싱 기법들을 이용하여 그래픽 엔진(204)에 의해 렌더링될 수 있는 텍스트를 포함할 수 있다. 디스플레이에 표시할 텍스트를 포함하는 콘텐츠의 렌더링의 일부로서, 그래픽 엔진(204)은 적어도 하나의 그래픽 처리 유닛(GPU)(206)과 상호작용하여 렌더링과 관련된 일부 동작들을 수행할 수 있으며, 게다가 일부 정보를 메모리(208)에 저장할 수 있다.
프로세스들(202)은 임의 타입의 처리 또는 기능을 실행하는 임의의 적절한 프로세스들일 수 있는데, 이는 실시예들이 이와 관련하여 한정되지 않기 때문이다. 프로세스들의 예들은 애플리케이션 소프트웨어, 시스템 소프트웨어 및/또는 다른 타입의 소프트웨어와 관련된 것들을 포함한다. 각각의 프로세스의 기능은 프로세스들(202)의 다른 기능을 조작하거나 프롬프트(prompt)하기 위해 사용자에 의해 사용될 수 있는 그래픽 사용자 인터페이스(graphical user interface(GUI))의 적어도 일부를 제어하고/하거나 표시하기 위한 기능을 포함할 수 있다. GUI는 텍스트를 포함할 수 있으며, 이 경우에 GUI를 표시하는 것은 GUI 내에 텍스트를 표시하는 것을 포함할 수 있다. 실시예들은 텍스트를 임의의 적절한 형태로 표시하는 GUI들로 한정되지 않으며, 임의의 적절한 포맷으로 존재하는 텍스트로 한정되지 않는다. 텍스트가 영어 텍스트인 경우, 텍스트는 레터들과 구두점들의 결합을 포함할 수 있다. 텍스트가 다른 언어들의 텍스트인 경우, 다른 형태의 다른 캐릭터들이 사용될 수 있다.
GUI가 텍스트를 포함하는 경우, GUI는 일부 예들에서 텍스트의 애니메이션도 허가할 수 있다. 그러한 애니메이션들에 응답하여, 텍스트는 디스플레이 상에서 조정될 수 있다. 그러한 조정들은 인터페이스의 다른 표시 요소들에 대해 텍스트의 위치 또는 크기를 변경하는 것, 예를 들어 배경 그래픽에 대해 텍스트를 이동시키는 것, 텍스트에 대해 배경 그래픽을 이동시키는 것 또는 배경을 변경하는 것, 또는 전술한 바와 같은 임의의 다른 적절한 조정을 포함할 수 있다. 따라서, GUI를 표시하는 것은 예를 들어 다른 표시 요소들에 대한 새로운 위치 내의 텍스트를 이용하여 GUI의 표시를 갱신하는 것을 포함할 수 있다.
GUI를 표시하거나 GUI의 표시를 갱신하기 위하여, 프로세스들(202)은 그래픽 엔진(204)과 상호작용할 수 있다. 그래픽 엔진(204)은 디스플레이에 대한 그래픽 렌더링을 위해 컴퓨팅 장치(200)에 의해 실행되는 기능의 적어도 일부를 구현할 수 있다. 일부 실시예들에서, 그래픽 엔진(204)은 표시를 위해 렌더링될 텍스트와 관련된 서브픽셀 커버리지 값들을 결정하기 위한 안티앨리어싱 설비로서 동작할 수 있다. 일부 실시예들에서, 그래픽 엔진(204)은 그래픽 인터페이스 내에 표시할 텍스트를 준비하기 위해 텍스트의 래스터 이미지(raster image)를 생성하기 위한 기능을 더 포함할 수 있다. 그러한 래스터 이미지는 비트맵을 포함하는 임의의 적절한 포맷을 가질 수 있다. 또한, 일부 실시예들에서, 그래픽 엔진(204)은 표시될 텍스트에 관한 정보와 배경 그래픽들과 같은 다른 표시 요소들에 관한 정보를 결합하고, 예를 들어 디스플레이를 제어하는 데 사용될 합성 컬러 정보를 결정함으로써 디스플레이 상에 표시할 결합을 준비할 수 있다. 일부 실시예들에서, 그래픽 엔진(204)은 MICROSOFT(등록상표) Direct2d(상표) 및/또는 DIRECTX(등록상표) 그래픽 라이브러리들 중 일부를 구현할 수 있으며, 이들 각각은 워싱턴 레드먼드의 마이크로소프트사로부터 입수 가능하다. 그래픽 엔진(204)의 기능은 임의의 적절한 방식으로 실행될 수 있다. 일부 실시예들에서, 그래픽 엔진(204)의 기능은 컴퓨팅 장치(200)의 적어도 하나의 중앙 처리 유닛(CPU)에 의해 실행되는 명령어들을 통해 완전히 수행될 수 있다. 다른 실시예들에서, 기능 중 적어도 일부는 하나 이상의 GPU(206)에 의해 실행되는 명령어들을 통해 수행될 수 있다. 적어도 일부 기능이 GPU(206)를 이용하여 수행되는 경우, GPU(206)는 기능을 수행하도록 그래픽 엔진(204)에 의해 구성되고/되거나, 특정 명령어들을 실행하도록 구성될 수 있다.
따라서, 사용자와 상호작용하기 위한 GUI를 표시하고 갱신하기 위해, 프로세스(202)는 그래픽 엔진(204)과 상호작용할 수 있다. 그래픽 엔진(204)과의 상호작용을 통해, 프로세스(202)는 프로세스(202)가 디스플레이에 표시하기를 원하는 GUI의 콘텐츠를 그래픽 엔진(204)에 알릴 수 있다. GUI의 콘텐츠에 관한 정보는 GUI에 포함될 표시 요소들의 임의의 적절한 특성들을 포함할 수 있으며, 이들은 표시 요소들의 형상, 크기, 위치 및 컬러를 포함할 수 있다. GUI가 예를 들어 사용자 입력에 응답하여 갱신될 때, 임의의 또는 모든 특성들이 프로세스(202)와 그래픽 엔진(204) 사이에서 다시 통신될 수 있다. 표시 요소들에 관한 정보는 프로세스들(202)과 그래픽 엔진(204) 사이에서 임의의 적절한 방식으로 통신될 수 있다. 예를 들어, 일부 실시예들은 하나 이상의 애플리케이션 프로그래밍 인터페이스(API) 기능 호출들을 이용하여 프로세스(202)와 그래픽 엔진(204) 사이에 데이터를 교환할 수 있다.
전술한 바와 같이, 본 명세서에서 설명되는 기술들은 디스플레이 상에 표시될 인터페이스에 대한 텍스트를 렌더링하고 표시하는 데 사용될 수 있다. 따라서, 일부 실시예들에서, 프로세스(202)는 텍스트가 GUI 내에 표시되고/되거나 텍스트의 표시가 갱신될 것을 요청하기 위해 그래픽 엔진(204)과 상호작용할 수 있다. 임의의 적절한 텍스트가 인터페이스 내에 임의의 적절한 스타일로 표시될 수 있는데, 이는 실시예들이 이와 관련하여 한정되지 않기 때문이다.
본 명세서에서 설명되는 기술들에 따르면, 프로세스(202)가 디스플레이 상에 텍스트를 표시하기 위한 요청을 그래픽 엔진(204)으로 전송할 때, 그래픽 엔진(204)은 텍스트를 인터페이스 내에 어떻게 표시할지를 결정할 수 있다. 텍스트를 어떻게 표시할지를 결정하기 위해 그래픽 엔진(204)에 의해 실행될 수 있는 예시적인 동작들은 도 3-7과 관련하여 아래에서 상세히 설명된다. 그러나, 요컨대, 그래픽 엔진(204)은 글리프 설명들의 데이터 저장소(204A)에 기초하여 디스플레이 상에 표시될 텍스트에 대응하는 형상들을 식별할 수 있다. 전술한 바와 같이, 텍스트는 캐릭터들의 임의의 적절한 결합을 포함할 수 있으며, 글리프들은 캐릭터의 전부 또는 일부를 포함할 수 있다. 컴퓨팅 장치는 캐릭터를 그리는 데 사용될 글리프의 선들 또는 점들과 같이 글리프의 형상을 어떻게 그릴지를 지시하는 글리프 설명의 데이터 저장소(204A)를 포함할 수 있다. 글리프의 형상은 글리프의 이미지 또는 글리프의 형상의 수학적 설명을 포함하는 임의의 적절한 설명에 기초하여 식별될 수 있는데, 이는 실시예들이 이와 관련하여 한정되지 않기 때문이다.
데이터 저장소(204A)의 설명들로부터, 그래픽 엔진(204)은 디스플레이 상에 텍스트를 표시하는 데 사용될 디스플레이의 픽셀들 및 서브픽셀들에 대한 글리프 형상들의 맵핑을 결정할 수 있다. 그러한 맵핑의 일례가 위에서 설명되었고, 도 1b에 도시되어 있다. 이어서, 그래픽 엔진(204)은 서브픽셀 안티앨리어싱 기법을 이용하여 텍스트를 표시하는 데 사용될 서브픽셀 커버리지 값들을 계산할 수 있다.
일부 실시예들에서, 그래픽 엔진(204)이 텍스트에 대한 서브픽셀 커버리지 값들을 계산할 때, 서브픽셀 커버리지 값들은 값들이 캐싱된 후에 텍스트가 GUI 내에 표시되거나 갱신될 때 캐시로부터 검색될 수 있는 방식으로 계산될 수 있다. 예를 들어, 일부 실시예들에서, 서브픽셀 안티앨리어싱 기법들을 이용하여 텍스트에 대해 계산된 서브픽셀 커버리지 값들을 캐싱 전에 처리하여, 처리된 커버리지 값들을 생성할 수 있다. 처리는 안티앨리어싱 기법들을 이용하여 계산된 최초 커버리지 값들에 보정 값들을 적용함으로써 보정 값들을 변경하는 것을 포함할 수 있다. 보정 값들은 커버리지 값들의 캐싱 및 캐싱된 커버리지 값들의 사용을 가능하게 하기 위해 임의의 적절한 방식으로 최초 커버리지 값들을 보정할 수 있다. 일부 실시예들에서, 보정 값들은 인터페이스 내에 텍스트와 중첩 그래픽의 합성물을 표시하기 전에 합성물에 대해 수행될 수 있는 감마 보정 프로세스를 후속적으로 수행하는 효과를 모방하기 위해 최초 커버리지 값들을 변경할 수 있다. 커버리지 값들을 캐싱하기 전에 감마 보정 프로세스의 효과를 모방함으로써, 캐싱된 커버리지 값들은 텍스트가 표시될 디스플레이의 비선형성을 보상하도록 조정될 수 있다. 디스플레이의 그러한 비선형성은 전술한 바와 같이 텍스트 및 중첩 그래픽들에 대한 컬러 값들이 선형으로 결합되는 것을 방해한다. 커버리지 값들을 캐싱하기 전에 그러한 비선형성을 보상함으로써, 서브픽셀 커버리지 값들이 캐시로부터 검색될 때, 이 값들은 감마 보정 프로세스의 수행 없이도 텍스트 및 배경 그래픽에 대한 컬러 정보와 결합될 수 있다. 따라서, 그래픽 엔진(204)은, 텍스트에 대한 컬러 값들이 보정을 알리는 데 사용될 수는 있지만, 커버리지 값들이 서브픽셀들에 대한 텍스트 컬러 값들과 결합되지 않은 경우에도, 서브픽셀 커버리지 값들에 대해 직접 감마 보정 프로세스를 수행할 수 있다. 커버리지 보정 프로세스의 수행의 일부로서, 그래픽 엔진(204)은 커버리지 보정 값들의 데이터 저장소(204B)로부터 보정 값들을 검색할 수 있다. 커버리지 값들을 보정하기 위해 그래픽 엔진(204)에 의해 사용될 수 있는 기술들은 아래에서 도 5와 관련하여 상세히 설명된다.
그래픽 엔진(204)이 임의의 적절한 처리를 통해 처리된 커버리지 값들을 계산한 때, 처리된 커버리지 값들은 그래픽 엔진(204)에 의해 데이터 구조(210)에 기록될 수 있다. 임의의 적절한 데이터 구조가 사용될 수 있다. 일부 실시예들에서, 데이터 구조(210)는, 표시 요소들에 관한 컬러 정보를 저장하도록 구성되고, GPU가 처리하도록 고유하게 적응되는 4개 값 그래픽 구조일 수 있다. 4개 값 데이터 구조는 각각의 서브픽셀에 대해 하나씩인 3개의 컬러 값 및 픽셀에 대한 커버리지 값을 총괄적으로 저장할 수 있다. 그러한 구조의 일례는 3개의 컬러 값(청색, 녹색, 적색) 및 커버리지("알파") 값을 청색-녹색-적색-알파 포맷으로 저장하는 BGRA 데이터 구조이다. BGRA 구조는 4개의 상이한 값 각각에 대해 8비트를 사용할 수 있다.
GPU들은 그래픽에 관한 정보가 컬러 값들에 대한 3개 채널 및 커버리지 값들에 대한 제4 채널을 갖는 4개 채널 포맷을 가질 때 정보를 효율적으로 처리하도록 적응된다. GPU들은 이러한 포맷의 정보를 효율적으로 처리할 수 있는데, 그 이유는 GPU의 동작들 및 GPU의 하드웨어 레지스터들이 이러한 포맷의 값들을 저장하고 이러한 포맷의 값들을 조작하도록 사전 구성되기 때문이다. 따라서, 4개 값 구조가 본 명세서에서 설명되는 기술들에 따라 서브픽셀들에 대한 커버리지 정보를 캐싱하는 데 사용될 경우, 4개 값 포맷의 데이터는 다른 포맷들의 데이터보다 쉽게 GPU에 의해 처리될 수 있다.
따라서, 일부 실시예들에서, BGRA 구조는 서브픽셀 커버리지 값들을 저장하는 데 사용될 수 있다. 그러나, 전술한 바와 같이, 본 명세서에서 설명되는 기술들을 이용하여 픽셀에 대한 컬러 정보를 결정하기 위하여, 픽셀에 대해 6개의 값: 픽셀의 서브픽셀들에 대한 3개의 컬러 값(적색, 녹색 및 청색) 및 픽셀의 서브픽셀들에 대한 3개의 커버리지 값이 사용될 수 있다. 4개 값 구조가 서브픽셀 커버리지 값들을 저장하는 데 사용되는 실시예들에서는, 6개의 값이 하나의 데이터 구조 내에 저장되지 못한다. 따라서, 일부 실시예들에서, 컬러 제어 정보는 별도로, 예를 들어 다른 4개 값 구조 내에 저장될 수 있으며, 따라서 각각의 픽셀은 2개의 상이한 4개 값 구조와 연관될 수 있다. 그러한 경우에, 하나의 4개 값 구조는 커버리지 값들을 저장하는 데 사용될 수 있고, 제2의 4개 값 구조는 컬러 값들을 저장하는 데 사용될 수 있다.
GPU들이 4개 값 구조 내의 값들을 빠르고 효율적으로 처리하도록 적응되는 경우에, GPU들은 4개 값 구조의 대응하는 위치들 내의 값들이 서로 관련되는 경우에 그렇게 하도록 적응될 수 있다. 예를 들어, GPU는 각각의 4개 값 구조의 제1 값이 청색 서브픽셀과 관련되는 경우에 데이터를 빠르게 처리하도록 적응될 수 있다. 따라서, 일부 실시예들에서는 6개의 값이 2개의 상이한 4개 값 데이터 구조 내에 저장될 수 있지만, 이 값들은 하나의 구조 내의 4개의 값 및 다른 구조 내의 2개의 값으로 분할되지 않을 수도 있다. 값들이 이러한 방식으로 분할되는 경우, 값들 중 하나는 관련된 값들의 위치에 대응하지 않는 4개 값 구조 내의 위치에 배치될 것이다. 예를 들어, 3개의 컬러 값(청색, 녹색, 적색) 및 하나의 커버리지 값(청색)이 4개 값 데이터 구조 내에 배열되는 경우, 데이터 구조 내의 청색 값의 위치는 청색 커버리지 값의 위치에 대응하지 않을 것이다. 일부 GPU들은 이러한 방식으로 저장된 컬러 값들 및 커버리지 값들을 빠르고 효율적으로 처리하지 못할 수 있는데, 이는 GPU가 상이한 위치들에 저장된 청색 값들을 처리하도록 고유하게 구성되지 않기 때문이다. 따라서, 픽셀에 대한 3개의 컬러 값 및 3개의 커버리지 값이 분할되는 경우, 컬러 값들이 하나의 구조 내에 저장될 수 있고, 커버리지 값들이 다른 구조 내에 저장될 수 있다. 일부 그러한 예들에서, 4개 값 데이터 구조들 각각 내의 하나의 값은 비어 있을 수 있다.
그러나, 다른 데이터 구조 포맷들이 사용될 수 있다는 것을 알아야 한다. 예를 들어, RGBA 구조와 같이 데이터를 상이한 포맷으로 체계화하는 다른 4개 값 포맷들이 사용될 수 있다. 다른 예로서, 상이한 수의 채널을 갖는 데이터 구조들이 사용될 수 있다. 일부 실시예들에서는 커버리지 값들을 저장하기 위해 3 채널 데이터 구조들(예로서, BGR 구조들)이 사용될 수 있다. 다른 실시예들에서는, 3개의 상이한 서브픽셀 각각에 대한 서브픽셀 커버리지 값 및 컬러 값 양자(예로서, 적색, 녹색 및 청색 서브픽셀들에 대한 2개의 값)를 저장할 수 있는 6 채널 데이터 구조들이 사용될 수 있다.
구조(210)의 포맷에 관계없이, 처리된 커버리지 값들이 그래픽 엔진(204)에 의해 생성될 때, 처리된 커버리지 값들은 데이터 구조(210)로 출력될 수 있다. 출력될 수 있는 커버리지 값들은 픽셀의 각각의 서브픽셀에 대한 커버리지 값을 포함한다. 예를 들어, 청색 커버리지 값, 녹색 커버리지 값 및 적색 커버리지 값이 생성되고 저장될 수 있다. 데이터 구조가 컬러 고유 채널들을 포함하는 경우, 서브픽셀 커버리지 값들은 대응하는 채널들에 저장될 수 있다. 예를 들어, BGRA 구조의 경우, 전통적으로 청색 채널에 대한 컬러 제어 정보를 저장하는 B 채널은 청색 서브픽셀 커버리지 값들을 저장하는 데 사용될 수 있다.
이어서, 데이터 구조(210)는 임의의 적절한 방식으로 사용될 수 있다. 커버리지 값들을 캐싱하기 위하여, 데이터 구조(210)는 메모리(208) 내에, 예를 들어 텍스트에 대한 커버리지 값들의 캐시(208A) 내에 저장될 수 있다. 메모리(208)는 정보를 캐싱할 수 있는 임의의 적절한 메모리일 수 있으며, 랜덤 액세스 메모리(RAM) 또는 저장 드라이브를 포함할 수 있다. RAM의 예는 시스템 메모리 및 비디오 메모리를 포함한다. 저장 드라이브의 예는 하드 디스크 드라이브 및 반도체 드라이브(SSD)를 포함한다. 데이터 구조(210)는 또한 그래픽 관련 동작들에서의 사용을 위해 GPU(206)로 전송될 수 있다. 예를 들어, 데이터 구조(210)는 렌더링 프로세스의 일부로서 GPU(206)로 전송될 수 있다. 렌더링 프로세스의 일부로서, GPU(206)는 각각의 픽셀을 이용하여 표시될 표시 요소들에 기초하여 디스플레이의 각각의 서브픽셀에 대한 합성 컬러 정보를 결정할 수 있다. 텍스트를 표시할 픽셀들에 대해, 구조(210) 내에 저장된 서브픽셀 커버리지 값들은 합성 컬러 값들을 결정하기 위해 GPU(206)에 의해 사용될 수 있다.
일부 실시예들에서, 그래픽 엔진(204)은 구조(210) 내에 저장된 커버리지 값들을 처리할 수 있도록 GPU(206)를 구성할 수 있다. 전술한 바와 같이, GPU(206)는 BGRA 구조와 같은 4 채널 데이터 구조를 처리하도록 고유하게 적응될 수 있지만, GPU(206)는 커버리지 값들이 아니라 그러한 포맷의 컬러 값들을 처리하도록 적응될 수 있다. 따라서, 일부 실시예들에서, GPU(206)가 커버리지 값들을 처리하기 위해, GPU(206)는 구조(210)를 특정 방식으로 사용하도록 구성될 수 있다. GPU(206)는 텍스트에 대한 변경된 컬러 값들과 배경 그래픽에 대한 컬러 값들 간의 보간 전에 텍스트에 대한 컬러 값들을 변경하기 위해 구조(210)를 사용하도록 구성될 수 있다. 예를 들어, GPU(206)는 일부 예들에서 알파 채널로부터 데이터를 검색하는 것이 아니라, BGRA 구조의 청색, 녹색 및 적색 채널들 각각으로부터 서브픽셀 커버리지 값을 검색하도록 구성될 수 있다. GPU(206)는 그러한 서브픽셀 커버리지 값들과 개별 BGRA 구조 내의 청색, 녹색 및 적색 채널들 내의 컬러 값들을 곱하여 텍스트에 대한 변경된 컬러 값들을 산출하도록 더 구성될 수 있다. GPU(206)는 또한, 전술한 바와 같이, 변경된 컬러 값들과 배경 그래픽에 대한 컬러 정보를 결합하여 디스플레이의 서브픽셀들을 제어하기 위한 합성 컬러 값들을 산출하도록 구성될 수 있다. 4 채널 구조를 사용하지 않고, 대신에 커버리지 값들 및 컬러 값들 양자를 저장하는 6 채널 포맷과 같은 다른 포맷들을 사용하는 다른 실시예들에서, GPU(206)는 그러한 포맷들의 데이터를 임의의 적절한 방식으로 사용하도록 구성될 수 있다.
그래픽 엔진(204)은 디스플레이 내의 콘텐츠의 표시와 관련된 프로세스들(202)로부터의 임의의 적절한 입력들에 응답하여 임의의 적절한 액션들을 취할 수 있다. 일부 실시예들에서, 그래픽 엔진(204)은 표시될 텍스트의 콘텐츠 및 텍스트를 표시할 컬러를 프로세스(202)로부터 수신하는 것에 응답하여 텍스트에 대한 커버리지 값들을 계산하고 캐싱할 수 있다. 그래픽 엔진(204)은 일부 예들에서 텍스트 및 폰트 컬러의 수신에 응답하여 텍스트를 렌더링 또는 표시하지 않을 수 있다. 대신에, 그래픽 엔진(204)은 서브픽셀 커버리지 값들을 계산한 후에 데이터 구조(210)를 생성하고, 예를 들어 데이터 구조(210)를 메모리(208)의 캐시(208A) 내에 저장함으로써 커버리지 값들을 저장할 수 있다. 일부 실시예들에서, 그래픽 엔진(204)은 이 시간에 폰트 컬러 정보도 캐싱할 수 있다. 나중에, 그래픽 엔진(204)은 예를 들어 사용자 인터페이스 내에서 텍스트가 배경 그래픽에 대해 이동될 때 텍스트를 디스플레이 상의 특정 위치에 렌더링하기 위한 요청을 프로세스(202)로부터 수신할 수 있다. 그래픽 엔진(204)이 폰트 컬러를 캐싱하지 않는 경우, 텍스트를 렌더링하기 위한 요청은 텍스트에 대한 폰트 컬러도 포함할 수 있다. 그래픽 엔진(204)이 프로세스(202)로부터 위치 정보를 수신할 때, 그래픽 엔진(204)은 캐시(208A) 내의 데이터 구조(210) 내에 캐싱된 텍스트에 대한 서브픽셀 커버리지 값들을 검색하고, GPU(206)를 동작시켜, 캐싱된 커버리지 값들을 이용하여, 위치에 대응하는 디스플레이의 픽셀들 및 서브픽셀들에 대한 합성 컬러 값들을 계산할 수 있다.
전술한 바와 같이, 최신의 사용자 인터페이스들은 사용자들로 하여금 사용자 인터페이스 요소들의 많은 애니메이션을 수행하는 것을 가능하게 할 수 있다. 본 명세서에서 설명되는 기술들은 서브픽셀 커버리지 값들의 캐싱을 가능하게 함으로써 그러한 애니메이션 후에 디스플레이에 대한 텍스트의 더 빠른 렌더링을 가능하게 할 수 있다. 이전에는, 애니메이션 후에 텍스트가 다시 렌더링될 때마다, 텍스트의 새로운 위치들에 대해 커버리지 값들이 결정되는 것이 필요하고, 이어서 커버리지 값들이 텍스트 및 중첩 그래픽들에 대한 합성 컬러 값들을 결정하는 데 사용되고, 이어서 합성 컬러 값들이 디스플레이의 비선형성을 보상하도록 감마 보정되었을 것이다. 이러한 프로세스는 애니메이션들에 대한 인터페이스들의 집중적이고 느린 응답이다. 일부 실시예들에서는, 대신에, 비선형성을 보상하도록 이미 변경된 텍스트에 대한 서브픽셀 커버리지 값들이 저장되고, 검색을 위해 이용될 수 있다. 이어서, 텍스트가 재렌더링될 때, 서브픽셀 커버리지 값들이 단순히 검색되어, 다시 렌더링될 텍스트 및 배경 그래픽에 대한 컬러 정보와 결합된다. 그러한 프로세스는 더 효율적이며, GPU가 처리하도록 고유하게 적응되는 데이터 구조들에 대한 선형 동작들을 이용하여 수행될 수 있으며, 따라서 그러한 동작들은 GPU 상에서 빠르게 수행될 수 있다. 따라서, 재렌더링 프로세스는 훨씬 더 효율적이게 될 수 있다.
전술한 바와 같이, 그래픽 엔진(204)은 임의의 적절한 동작들을 실행하여, 텍스트가 처음 렌더링될 때 서브픽셀 커버리지 값들을 계산하고 서브픽셀 커버리지 값들을 캐싱하며, 텍스트가 재렌더링될 때, 캐싱된 서브픽셀 커버리지 값들을 이용하여 픽셀들에 대한 합성 컬러 값들을 결정할 수 있다. 일부 실시예들에서, 그래픽 엔진(204)은 적어도 캐싱된 커버리지 값들 및 명령어들을 GPU(206)로 전송함으로써 GPU(206)를 동작시켜, 이러한 동작들 중 적어도 일부를 실행할 수 있다.
도 3은 그래픽 엔진이 커버리지 값들을 계산하고 캐싱하기 위해 (일부 실시예들에서, GPU를 뒤따르게 구성함에 의한 것을 포함하여) 실행할 수 있는 하나의 예시적인 프로세스를 나타낸다. 도 3의 프로세스(300)의 시작 전에, 컴퓨팅 장치의 적어도 하나의 프로세서 상에서 실행되고 있는 실행 프로세스는 컴퓨팅 장치와 관련된 디스플레이에 표시될 텍스트에 관한 정보를 그래픽 엔진으로 전송했을 수 있다. 텍스트에 관한 정보는 표시될 텍스트의 콘텐츠를 포함할 수 있다. 콘텐츠는 캐릭터들의 열로서 또는 임의의 다른 적절한 형태로 표현되는 텍스트 자체일 수 있다. 텍스트에 관한 정보는 일부 예들에서는 텍스트에 대한 컬러, 텍스트의 위치, 또는 텍스트가 어떻게 표시될지에 관한 임의의 다른 파라미터들과 같은 텍스트에 대한 표시 특성들도 포함할 수 있다. 그러나, 다른 실시예들에서, 텍스트를 표시할 디스플레이 상의 위치와 같은 텍스트의 일부 파라미터들은 프로세스(300) 전에 수신되지 않을 수 있다. 어떤 정보가 수신되는지에 관계없이, 텍스트에 관한 정보가 그래픽 엔진에 의해 수신되면, 프로세스(300)가 시작된다.
도 3의 흐름도의 처음 3개의 블록의 동작들, 즉 블록 302, 304, 306은 공지 기술들을 이용하여 실행될 수 있다. 따라서, 여기서는 이러한 동작들의 상세한 설명이 필요하지 않다. 그러나, 실시예들을 구현할 수 있는 방법들의 설명을 위해, 이러한 동작들에 대한 간단한 설명이 제공된다.
블록 302에서, 그래픽 엔진은 텍스트의 콘텐츠에 대해, 표시될 글리프들의 형상들을 식별한다. 표시될 글리프들의 형상들을 식별하는 것은 텍스트를 표시하는 데 사용될 폰트에 대한 폰트 라이브러리로부터 형상들의 설명들을 검색하는 것을 포함할 수 있다.
글리프들을 표시하는 데 사용될 형상들이 검색될 때, 블록 304에서, 그래픽 엔진은 텍스트를 표시하는 데 사용될 디스플레이의 픽셀들에 대한 형상들의 맵을 생성할 수 있다. 이 맵은 각각의 글리프의 상대적 위치를 정의하며, 따라서 텍스트가 렌더링될 때 영향을 받을 디스플레이의 픽셀들 중 일부를 정의한다. 이 맵은 블록 306에서 서브픽셀들에 대한 커버리지 값들을 설정하는 데 사용될 것이다. 공지 기술들을 포함하는 임의의 적절한 기술을 이용하여, 각각의 픽셀 및 각각의 픽셀이 글리프들 각각의 형상들을 그리는 데 사용될지의 여부에 관한 정보를 이용하여 형상들의 맵이 생성될 수 있다. 일부 예들에서, 각각의 픽셀에 관한 정보는 픽셀이 글리프들의 형상들을 표현하는 데 사용될지의 여부를 지시하는 이진법의 예 또는 아니오일 수 있다. 그러한 이진 값들을 사용하는 일부 예들에서, 맵은 디스플레이의 각각의 픽셀에 대한 단일 비트를 이용하여 픽셀이 맵을 그리는 데 사용될지의 여부를 지시하는 픽셀당 1비트(one-bit-per-pixel) 맵일 수 있다. 이진 값들을 사용하는 다른 예들에서, 맵은 텍스트의 2개의 차원 중 하나 또는 둘 다에서 오버샘플링될 수 있다. 예를 들어, 공지된 CLEARTYPE(등록상표) 기술들을 이용하여, 글리프 형상의 적어도 일부를 표현하는 데 사용될 각각의 픽셀에 대해, 글리프 형상으로부터 다수의 "샘플"을 취함으로써, 오버샘플링된 맵핑이 생성될 수 있다. CLEARTYPE(등록상표)은 픽셀이 오버샘플링의 양에 대응하는 동일한 영역들: 6x1개의 영역(즉, 수직 방향의 단일 행에서, 수평 방향의 5개의 영역) 또는 6x5개의 영역(수직 방향의 5개의 행에서, 수평 방향의 6개의 영역)으로 분할되는 것으로 간주함으로써 샘플들을 취한다. 글리프들의 형상들이 픽셀들 및 각각의 픽셀에 대해 식별된 동일한 영역들과 비교될 때, 형상이 특정 영역과 중첩되는지의 여부를 지시하기 위해 이진 값이 사용될 수 있다.
그래픽 엔진은 각각의 글리프에 대한 개별 맵들을 생성한 후에 이러한 개별 맵들을 병합하여 텍스트에 대한 맵을 생성함으로써 또는 글리프들을 병합하고 텍스트에 대한 맵을 총괄적으로 생성함으로써 블록 304의 맵을 생성할 수 있는데, 이는 실시예들이 이와 관련하여 한정되지 않기 때문이다.
블록 304에서 맵이 생성되면, 맵은 블록 306에서 텍스트를 렌더링하는 데 사용될 디스플레이의 서브픽셀들에 대한 커버리지 값들을 설정하는 데 사용된다. 맵은 서브픽셀 안티앨리어싱을 위한 공지 기술들의 이용을 포함하는 임의의 적절한 방식에서 커버리지 값들을 설정하는 데 사용될 수 있다. 예를 들어, 공지 기술들을 이용하여, 오버샘플링된 맵의 이진 값들에 기초하는 것을 포함하여, 맵의 이진 값들에 기초하여 커버리지 값들이 설정될 수 있다. 예를 들어, 오버샘플링된 맵에 대해, 커버리지 값들은 샘플링에 따라 글리프의 형상을 표현하는 데 사용될 영역들의 수에 비례하도록 설정될 수 있다. 오버샘플링된 맵에 기초하여 커버리지 값들을 설정하는 것은 공지 기술들의 이용을 포함하는 임의의 적절한 방식으로 수행될 수 있는데, 이는 실시예들이 이러한 방식으로 한정되지 않기 때문이다. 예를 들어, 서브픽셀 안티앨리어싱의 경우, CLEARTYPE(등록상표) 기술들을 이용하여 픽셀의 서브픽셀들 각각에 대해 커버리지 값들이 결정될 수 있다. 오버샘플링이 사용되는 경우, 픽셀의 영역들 중 일부는 그 픽셀의 서브픽셀들 각각에 대응할 것이다. 서브픽셀에 대한 커버리지 값들은 그 서브픽셀에 대응하는 얼마나 많은 샘플들이 글리프의 형상에 대응하는지에 비례하도록 설정될 수 있다. 서브픽셀이 글리프의 형상에 대응하는 더 많은 샘플에 대응하는 경우, 서브픽셀에 대한 커버리지 값은 그 서브픽셀을 사용하여 텍스트에 대한 더 어두운 쉐이딩/컬러를 나타내도록 설정될 수 있다. 이와 달리, 서브픽셀이 더 적은 샘플에 대응하는 경우, 커버리지 값은 더 밝은 음영/컬러를 나타내도록 설정될 수 있다.
따라서, 픽셀이 3개의 수평 배열된 서브픽셀로 구성되는 경우, 각각의 서브픽셀에 대해 하나씩인 3개의 상이한 커버리지 값이 결정될 수 있다. 일부 실시예들에서, 각각의 서브픽셀에 대한 커버리지 값들은 예비 커버리지 값들에 기초하여 계산될 수 있다. 예를 들어, 전술한 6x5 샘플링 예에서와 같이, 블록 304에서 각각의 픽셀에 대해 샘플들의 다수의 수직 행이 취해지고, 픽셀이 3개의 수평 배열된 서브픽셀로 구성되는 경우에, 먼저 각각의 서브픽셀에 대해 다수의 커버리지 값이 획득될 수 있다. 이것은 이전의 6x1 예에서와 같이 샘플들의 각각의 행에 대한 각각의 서브픽셀에 대한 커버리지 값들을 결정함으로써 행해질 수 있으며, 이는 서브픽셀에 대해 샘플들의 각각의 행에 대해 하나씩인 각각의 서브픽셀에 대한 5개의 예비 커버리지 값을 생성할 것이다. 이어서, 이러한 예비 커버리지 값들은 서브픽셀에 대한 단일 커버리지 값을 생성하기 위해 서브픽셀에 대한 예비 커버리지 값들을 평균함에 의한 것을 포함하는 임의의 적절한 방식으로 결합될 수 있다.
블록 302, 304, 306의 동작들을 통해, 그래픽 엔진은 프로세스(300)의 시작 전에 실행 프로세스에 의해 요청되는 텍스트를 표시하는 데 사용될 서브픽셀들에 대한 서브픽셀 커버리지 값들의 세트를 결정할 수 있다. 블록 306에서 계산된 서브픽셀 커버리지 값들은 "초기" 커버리지 값들로서 간주될 수 있는데, 이는 일부 실시예들에서 이러한 커버리지 값들을 소정의 방식으로 더 처리하여 서브픽셀들에 대한 처리된 커버리지 값들을 생성할 수 있기 때문이다. 예를 들어, 블록 306에서 적용된 서브픽셀 안티앨리어싱 프로세스에 의해 생성된 초기 커버리지 값들을 사용자 선호들에 기초하여 조정하여, 처리된 커버리지 값들을 생성할 수 있다. 임의의 다른 처리도 수행될 수 있는데, 이는 실시예들이 이와 관련하여 한정되지 않기 때문이다. 따라서, 블록 308에서, 그래픽 엔진은 초기 커버리지 값들을 소정 방식으로 처리하여, 처리된 커버리지 값들을 생성한다.
일부 실시예들에서, 블록 308의 처리를 통해, 추가적인 변경을 필요로 하지 않고, (서브픽셀 커버리지 값들을 포함하는) 텍스트에 관한 컬러 정보가 텍스트와 함께 표시될 배경 그래픽들과 같은 다른 표시 요소들에 관한 컬러 정보와 직접, 선형으로 결합되는 것을 가능하게 하기 위해 커버리지 값들이 조정될 수 있다. 전통적인 기술들을 이용할 경우, 텍스트에 관한 컬러 정보 및 배경 이미지에 관한 컬러 정보와 함께 커버리지 값들을 이용하여, 텍스트를 표시할 디스플레이의 서브픽셀들을 제어하기 위한 합성 컬러 값들을 결정할 때, 결합을 보정하기 위해 추가적인 처리가 수행되어야 한다. 그러한 추가적인 처리는 감마 보정을 포함할 수 있다. 이것은 전술한 바와 같이 텍스트 및 그래픽에 대한 컬러 정보가 선형 보간을 이용하여 결합될 때 사람들이 결과적인 합성 컬러 값을 올바르게 인식하지 못하기 때문이다. 따라서, 감마 보정 프로세스 동안 전통적인 기술들을 이용하여 보간의 결과를 수정하여, 보정된 합성 컬러 값들을 생성한다. 그러나, 블록 308의 프로세스 동안, 그래픽 엔진은 초기 커버리지 값들을 처리하여, 디스플레이의 비선형성을 보상하고, 제한된 후속 처리를 이용하여 텍스트에 대한 컬러 정보가 배경 그래픽들에 대한 컬러 정보와 결합되는 것을 가능하게 할 수 있다. 예를 들어, 초기 커버리지 값들을 수정하여, 컬러 정보의 선형 결합을 가능하게 함으로써, 배경 그래픽들과 함께 텍스트를 표시하기 위한 합성 컬러 값들을 생성할 수 있다. 다른 예로서, 초기 커버리지 값들을 수정하여, 보간 후의 감마 보정 프로세스의 수행을 배제할 수 있다.
그래픽 엔진은 블록 308에서 임의의 적절한 방식으로 커버리지 값들의 임의의 적절한 처리를 실행할 수 있다. 실행될 수 있는 처리의 예들이 아래에서 도 5 및 6과 관련하여 설명된다.
그래픽 엔진이 커버리지 값들을 처리하여, 처리된 커버리지 값들을 생성하면, 블록 310에서, 그래픽 엔진은 처리된 커버리지 값들을 캐싱한다. 그래픽 엔진은 처리된 커버리지 값들을 임의의 적절한 방식으로 캐싱할 수 있다. 일부 실시예들에서, 그래픽 엔진은 그래픽 처리 유닛(GPU)의 하드웨어 및 고유 동작들의 구성과 매칭되는 크기 및 구성을 갖는 데이터 구조 내에 처리된 커버리지 값들을 캐싱할 수 있다. 예를 들어, 그래픽 엔진은 디스플레이에 텍스트를 표시하는 데 사용될 각각의 픽셀에 대한 처리된 서브픽셀 커버리지 값들을 3개의 컬러 값 및 하나의 커버리지 값에 대한 필드들을 갖는 4개 값 데이터 구조 내에 캐싱할 수 있다. 4개 값 데이터 구조 내에 배열되면, 커버리지 값들은 컴퓨팅 장치의 메모리 내에 저장될 수 있다. 커버리지 값들은 렌더링 동안의 후속 사용을 위해 컴퓨팅 장치의 시스템 메모리, 비디오 메모리 또는 저장 드라이브를 포함하는 컴퓨팅 장치의 메모리 내에 저장될 수 있다.
블록 308에서 처리된 서브픽셀 커버리지 값들이 블록 310에서 저장되면, 프로세스(300)가 종료된다. 프로세스(300) 후에, 그래픽 엔진은 서브픽셀 커버리지 값들에 관한 임의의 적절한 액션들을 취할 수 있다. 일부 실시예들에서, 그래픽 엔진은 캐싱된 서브픽셀 커버리지 값들에 대한 식별자를, 텍스트를 처음 제공한 실행 프로세스에 제공할 수 있다. 실행 프로세스에 제공되는 식별자는 임의의 적절한 식별자일 수 있으며, 이는 메모리 내의 캐싱된 커버리지 값들에 대한 주소, 또는 그래픽 엔진에 의해 사용되고, 이어서 그래픽 엔진이 캐싱된 커버리지 정보를 검색하는 데 사용할 수 있는 식별자를 포함할 수 있다.
이어서, 그래픽 엔진은 캐싱된 커버리지 값들을 임의의 적절한 방식으로, 임의의 적절한 시간에 사용할 수 있다. 이어서, 그래픽 엔진은 실행 프로세스로부터 디스플레이 상에 텍스트를 렌더링 및 표시하기 위한 요청을 수신할 수 있다. 실행 프로세스는 임의의 적절한 동작들 후에 또는 임의의 적절한 조건들에 응답하여 요청을 행할 수 있는데, 이는 실시예들이 이와 관련하여 한정되지 않기 때문이다. 일부 실시예들에서, 실행 프로세스는 인터페이스를 보기 위한 사용자의 요청에 응답하여 또는 인터페이스와의 사용자 상호작용에 응답하여 텍스트의 표시를 요청할 수 있다. 사용자 상호작용들은 사용자가 텍스트를 애니메이트할 때와 같이 상호작용들이 텍스트에 대한 변경을 유발할 때 텍스트의 재표시 또는 표시 갱신을 프롬프트할 수 있다. 예를 들어, 인터페이스 내에서 텍스트가 배경 그래픽들에 대해 이동될거나 애니메이트될 때, 텍스트가 재표시될 수 있다. 사용자와의 상호작용으로부터 발생하지 않은 사용자 인터페이스의 다른 애니메이션들은 텍스트의 재렌더링을 프롬프트할 수 있다. 예를 들어, 사용자 인터페이스가 디스플레이를 통해 스크롤하는 텍스트를 표시하도록 구성되는 경우, 텍스트는 그러한 스크롤링 동안 반복적으로 재렌더링될 수 있다.
실행 프로세스로부터의 요청의 수신에 응답하여, 그래픽 엔진은 커버리지 값들이 캐싱된 텍스트를 표시하기 위해 다양한 동작들을 수행할 수 있다. 도 4의 프로세스(400)는 커버리지 값들이 캐싱된 텍스트를 표시하기 위해 그래픽 엔진에 의해 구현될 수 있는 기술의 일례이다.
프로세스(400)의 시작 전에, 서브픽셀 커버리지 값들이 도 3의 프로세스(300)에 의한 것을 포함하는 임의의 적절한 방식으로 생성, 처리 및 캐싱되었을 수 있다. 프로세스(400)는 블록 402에서 시작되며, 여기서 그래픽 엔진은 텍스트를 렌더링하기 위해 실행 프로세스로부터 적어도 하나의 명령어를 수신한다. 실행 프로세스로부터의 명령어(들)는 텍스트에 대한 임의의 적절한 표시 특성들을 포함할 수 있다. 일부 실시예들에서, 텍스트에 대한 정보는 텍스트를 표시할 폰트 컬러 및 텍스트를 표시할 위치를 포함할 수 있다. 명령어(들)는 이전에 결정되고 캐싱된 서브픽셀 커버리지 값들에 대한 임의의 적절한 식별자도 포함할 수 있다. 일부 실시예들에서, 명령어(들)는 메모리 내의 캐싱된 서브픽셀 커버리지 값들에 대한 주소 또는 엔진이 값들을 검색하는 데 사용할 수 있는 캐싱된 커버리지 값들에 대해 그래픽 엔진에 의해 유지되는 식별자를 포함할 수 있다.
GPU가 텍스트를 재렌더링하기 위한 합성 컬러 값들을 결정하는 것을 가능하게 하기 위해, 그래픽 엔진은 블록 404에서 그래픽 처리 유닛(GPU)으로 하여금 텍스트에 대한 캐싱된 서브픽셀 커버리지 값들을 이용할 수 있게 한다. 일부 예들에서, 그래픽 엔진은 블록 402의 명령어에 응답하여 메모리로부터 캐싱된 커버리지 값들을 검색하고, 캐싱된 커버리지 값들을 GPU가 액세스할 수 있는 메모리 위치에 저장할 수 있다. 다른 예들에서, 그래픽 엔진은 캐싱된 커버리지 값들을 GPU가 액세스할 수 있는 메모리 위치에 이전에 배치했을 수 있다. 캐싱된 커버리지 값들이 GPU에 의해 이용될 수 있게 되는 경우, 일부 예들에서 그래픽 엔진은 캐싱된 커버리지 값들이 GPU에 의해 여전히 이용될 수 있는 것을 보증할 수 있다. 텍스트에 대한 커버리지 값들이 이용 가능해지면, 블록 406에서 그래픽 엔진은 유사한 방식으로 GPU로 하여금 텍스트와 중첩되게 표시될 인터페이스의 하나 이상의 다른 표시 요소에 대한 정보를 이용할 수 있게 한다. 하나 이상의 다른 표시 요소는 텍스트와 함께 그리고 디스플레이의 소정 위치들에서 텍스트와 중첩되게 표시될 배경 그래픽을 포함할 수 있다. 다른 표시 요소들에 관한 정보는 다른 표시 요소들을 표시할 디스플레이의 픽셀들 또는 서브픽셀들에 대한 컬러 값들을 포함할 수 있다.
전술한 바와 같이, 둘 이상의 표시 요소가 그래픽 인터페이스 내에 중첩되게 표시될 때, 디스플레이의 각각의 픽셀에 대한 컬러 값을 표시 요소들의 컬러들에 기초하여 계산함으로써 중첩 효과를 생성한다. 컴퓨팅 장치의 GPU는 그래픽들을 빠르게 렌더링하는 것과 관련된 다양한 동작들을 수행하도록 구성된다. 이러한 동작들 중에는 표시 요소들의 컬러들에 기초하여 픽셀에 대한 합성 컬러를 결정하는 동작이 있다.
GPU들은 통상적으로 전술한 BGRA 데이터 구조와 같은 4개 값 데이터 구조에 대해 그러한 동작들을 수행하도록 구성된다. 그러한 데이터 구조들은 3개의 서브픽셀 각각에 대한 컬러 값들 및 픽셀 전체에 대한 커버리지 값을 갖는다. 그러나, 전통적으로 GPU들은 다수의 서브픽셀 각각에 대한 커버리지 값들을 처리하도록 구성되지 않으며, 4개 값 구조의 컬러 채널들(즉, BGR 채널들)이 서브픽셀 커버리지 값들을 저장하는 BGRA 데이터 구조들을 처리하도록 적응되지 않는다. 대신에, 전통적으로 GPU들은 이러한 채널들에 저장된 컬러 값들을 사용하도록 구성된다. 그러나, 일부 실시예들에서, 블록 404에서 검색되는 서브픽셀 커버리지 값들은 텍스트에 대한 컬러 정보 및 배경 그래픽에 대한 컬러 정보에 기초하여 서브픽셀에 대한 합성 컬러 값을 결정하는 것의 일부로서 GPU에 의해 처리될 수 있다. 따라서, 블록 408에서, GPU는 적어도 3개의 채널에 서브픽셀 커버리지 정보를 저장하는 4개 값 데이터 구조를 처리하도록 구성될 수 있다. 블록 408의 구성은 임의의 적절한 방식으로 실행될 수 있다. 일부 예들에서, 블록 408의 구성은 4개 값 데이터 구조 내에 저장된 데이터를 서브픽셀 커버리지 값들로서 사용하는 실행될 명령어들을 GPU에 제공하는 것을 포함할 수 있다. GPU는 서브픽셀 커버리지 값들과 텍스트에 대한 컬러 정보를 결합함에 의한 것을 포함하는 임의의 적절한 방식으로 그러한 구조로부터의 서브픽셀 커버리지 값들을 사용할 수 있다.
블록 408에서 GPU가 구성되면, 블록 410에서 GPU는 GPU를 구성한 명령어들을 실행할 수 있다. 구체적으로, 블록 410에서 GPU는 텍스트 및 배경 그래픽 중첩을 표시할 디스플레이의 서브픽셀들에 대한 합성 컬러 값들을 결정한다. GPU는 각각의 서브픽셀에 대해 텍스트에 대한 커버리지 값들 및 컬러 값들과 배경 그래픽에 대한 컬러 값들을 결합하여 서브픽셀에 대한 합성 컬러 값들을 생성할 수 있다. 일부 실시예들에서, GPU는 텍스트에 대한 컬러 값들과 그래픽에 대한 컬러 값들 간의 선형 보간을 수행할 수 있다. 그러한 선형 보간을 수행하기 위하여, GPU는 텍스트에 대한 컬러 값들을 그래픽에 대한 컬러 값들에 더하여 합성 컬러 값들을 결정할 수 있으며, 텍스트에 대한 서브픽셀 커버리지 값들은 덧셈을 가중화하는 데 사용될 수 있다. 예를 들어, 픽셀에 대한 각각의 컬러 채널에 대한 서브픽셀 커버리지 값들은 배경 그래픽에 대한 컬러 값들에 더해지기 전에 텍스트에 대한 대응하는 컬러 채널 및 픽셀에 대한 컬러 값들에 의해 곱해질 수 있다. 추가로 또는 대안으로서, 서브픽셀 커버리지 값의 보수가 텍스트 컬러 값에 더해지기 전에 배경 컬러 값에 의해 곱해질 수 있다. 더 구체적으로, 일부 실시예들에서, 서브픽셀에 대한 합성 컬러 값은 텍스트 컬러 값(C)과 서브픽셀 커버리지 값(a)을 곱하고, 배경 컬러 값(B)과 서브픽셀 커버리지 값의 보수(1-a)를 곱하고, 이 곱들을 함께 더함으로써(C*a+(1-a)*B) 결정될 수 있다.
전술한 바와 같이, 블록 404에서 캐시에 캐싱되고 그로부터 검색되는 서브픽셀 커버리지 값들은 이러한 방식으로 텍스트 컬러 값들과 배경 컬러 값들의 선형 결합을 가능하게 하기 위해 처리되었을 수 있다. 서브픽셀 커버리지 값들은 선형 결합 후에 합성 커버리지 값들의 추가적인 처리를 제한 또는 배제하기 위해 처리되었을 수 있다. 예를 들어, 서브픽셀 커버리지 값들은 선형 보간 후의 감마 보정 프로세스를 필요 없게 하기 위해 처리되었을 수 있다. 오히려, 각각의 서브픽셀에 대한 합성 컬러 값들이 선형 보간을 통해 결정되면, 이러한 합성 컬러 값들은 텍스트 및 배경 그래픽을 표시하는 데 사용될 수 있다. 예를 들어, 합성 컬러 값들은 디스플레이를 제어하기 위해 직접 사용되거나, 합성 컬러 값들과 다른 표시 요소들에 관한 컬러 정보를 결합하여 추가적인 합성 컬러 값들을 생성하기 위해 추가적인 동작들에서 사용될 수 있다.
따라서, 합성 컬러 값들이 텍스트 및 배경 그래픽을 표시하는 데 사용될 디스플레이의 각각의 서브픽셀에 대해 계산되면, 블록 412에서 합성 컬러 값들은 디스플레이에 콘텐츠를 표시하는 데 사용될 수 있다. 콘텐츠가 표시되면, 프로세스(400)가 종료된다.
프로세스(400)에 이어서, 사용자는 다시 인터페이스와 상호작용할 수 있고, 인터페이스 내의 텍스트를 애니메이트할 수 있다. 텍스트가 다시 애니메이트될 때, 프로세스(400)는 텍스트에 대한 캐싱된 서브픽셀 커버리지 값들에 기초하여 디스플레이의 서브픽셀들 각각에 대한 새로운 합성 값들을 결정하기 위해 반복될 수 있다.
서브픽셀 커버리지 값들의 캐싱을 통해, 중첩 그래픽들과 함께하는 텍스트의 렌더링은 더 효율적이게 되고, 더 빠르게 행해질 수 있다. 렌더링 및 렌더링하기 위한 명령들을 실행하기 위한 하드웨어 상의 동작들도 더 효율적이게 될 수 있다. 예를 들어, 일부 실시예들에서, 캐싱된 서브픽셀 커버리지 값들과 하부의 그래픽들을 결합하기 위해 단일 API 호출이 행해질 수 있다. 예를 들어, 서브픽셀 커버리지 값과 목적지 표면을 혼합하기 위해 단일 API 호출이 행해질 수 있으며, 목적지 표면은 배경 그래픽들에 관한 컬러 정보를 이용하여 이전에 정의되었다. 또한, 그래픽 처리 유닛이 4 채널 데이터 구조 내에 저장된 서브픽셀 커버리지 값들을 인식하도록 구성되면, API 호출에 의해 트리거(trigger)되는 혼합은 각각의 서브픽셀에 대한 반복된 동작들을 통해서가 아니라 디스플레이의 서브픽셀들에 걸치는 단일 패스를 이용하여 GPU에 의해 수행될 수 있다.
도 3과 관련하여 전술한 바와 같이, 서브픽셀 안티앨리어싱 프로세스를 이용하여 텍스트에 대해 초기 서브픽셀 커버리지 값들이 결정될 때, 이러한 초기 커버리지 값들을 소정의 방식으로 처리하여, 처리된 커버리지 값들을 생성할 수 있다. 처리는 사용자 선호들과 관련된 처리, 감마 보정 프로세스가 나중에 수행될 필요성을 배제하거나 줄이는 것과 관련된 처리 또는 임의의 다른 처리를 포함할 수 있다. 실시예들은 이와 관련하여 한정되지 않는다.
도 5-6은 서브픽셀 안티앨리어싱 기법들을 이용하여 결정된 초기 커버리지 값들을 서브픽셀 커버리지 값들이 캐싱되기 전에 처리하는 데 사용될 수 있는 2개의 예시적인 프로세스를 나타낸다.
도 5의 프로세스(500)의 시작 전에, 그래픽 엔진은 표시될 텍스트의 콘텐츠 및 텍스트에 대한 폰트 컬러를 수신하고, 텍스트에 대한 서브픽셀 커버리지 값들을 계산한다. 프로세스(500)를 통해, 이러한 커버리지 값들이 변경될 수 있다.
프로세스(500)는 블록 502에서 시작되며, 여기서 그래픽 엔진은 안티앨리어싱 기법들에 관한 사용자 선호에 기초하여 초기 서브픽셀 커버리지 값들을 조정한다. 전술한 바와 같이, 안티앨리어싱 기법들은 텍스트를 사용자가 더 즐겁게 볼 수 있게 하는 데 사용된다. 상이한 사용자들은 텍스트에 관한 상이한 안락 레벨들을 가질 수 있으며, 따라서 일부 컴퓨팅 장치들은 사용자로 하여금 안티앨리어싱이 그레이스케일 안티앨리어싱이 아니라 서브픽셀 안티앨리어싱으로서 인식되어야 하는 정도를 지정하게 할 수 있다. 예를 들어, 사용자 선호 값이 소정의 방식으로 (예를 들어, 0의 값으로) 설정될 때, 그래픽 엔진은 픽셀에 대한 모든 서브픽셀 커버리지 값들을 동일하게 유지함으로써 서브픽셀 안티앨리어싱 프로세스가 아니라 그레이스케일 안티앨리어싱 프로세스를 수행할 수 있다. 그러한 사용자 선호들 및 그들을 설정하는 방법들은 이 분야에 공지되어 있으며, 실시예들은 공지 기술들을 포함하는, 그러한 선호들을 적용하기 위한 임의의 적절한 기술을 구현할 수 있다.
블록 502에서, 초기에 결정된 서브픽셀 커버리지 값들이 사용자 선호 설정에 기초하여 조정될 수 있다. 블록 502의 조정은 공지 기술들의 이용을 포함하는 임의의 적절한 방식으로 수행될 수 있다. MICROSOFT(등록상표) CLEARTYPE(등록상표) 텍스트 렌더링 소프트웨어는 일부 실시예들에서 사용될 수 있는, 사용자 선호에 기초하여 커버리지 값들을 조정하기 위한 공지 기술을 포함한다. 따라서, 여기서는 커버리지 값들의 조정에 대한 상세한 설명은 필요하지 않다. 요컨대, 블록 502에서, 그래픽 엔진은 사용자 선호에 기초하여 각각의 서브픽셀에 대해 설정된 커버리지 값을 픽셀의 인접 서브픽셀에 대해 설정된 커버리지 값에 대해 균형화할 수 있다. 예를 들어, (도 1a의 예에서와 같이) 적색, 녹색 및 청색의 순서로 배열된 3개의 서브픽셀을 포함하는 디스플레이들에서, 적색 및 녹색 서브픽셀들에 대한 커버리지 값들이 서로에 대해 균형화될 수 있으며, 녹색 및 청색 서브픽셀들에 대한 커버리지 값들이 서로에 대해 균형화될 수 있다. 그래픽 엔진은 선형 보간을 이용하여 균형화를 수행할 수 있다. 예를 들어, 사용자 선호 값(B)과 초기 적색 서브픽셀 커버리지 값(ar)을 곱하고, 사용자 선호 값의 보수(1-B)와 초기 녹색 서브픽셀 커버리지 값(ag)를 곱하고, 그러한 곱들을 더하여, 아래의 식 1을 실행함으로써, 적색 서브픽셀 커버리지 값이 조정될 수 있다.
Figure pct00001
식 2를 적용함으로써 청색 서브픽셀 커버리지 값에 대해 유사한 계산이 실행될 수 있다.
Figure pct00002
사용자 선호에 기초하여 초기 커버리지 값들을 조정한 후, 그래픽 엔진은 텍스트에 대한 컬러의 휘도에 기초하여 커버리지 값들을 더 조정하여, 텍스트가 양호한 콘트라스트로 표시되어, 보이는 것을 보증할 수 있다. 제1 단계로서, 블록 504에서, 그래픽 엔진은 텍스트의 표시를 요청하는 실행 프로세스로부터 입력으로서 수신된 폰트 컬러의 휘도를 계산한다. 3개의 부가 컬러 성분인 적색, 녹색 및 청색에 대한 폰트 컬러에 대한 컬러 값들을 가중화하고 더함으로써 휘도 값(L)이 얻어진다. 구체적으로, 휘도(L)는 식 3을 적용함으로써 설정될 수 있다.
Figure pct00003
여기서, R, G 및 B는 폰트 컬러에 대한 컬러 값들이다.
블록 506에서, 그래픽 엔진은 휘도에 기초하여 행해질 콘트라스트 조정을 식별하여, 텍스트와 배경의 양호한 콘트라스트를 보증할 수 있다. 이것은 MICROSOFT(등록상표) CLEARTYPE(등록상표) 텍스트 렌더링 소프트웨어에 의해 사용되는 것들과 같은 공지 기술들을 포함하는 임의의 적절한 방식으로 실행될 수 있다. 일부 실시예들에서, 컴퓨팅 장치는 그래픽 엔진이 텍스트의 휘도에 기초하여 조정할 수 있는 기본 콘트라스트 값을 가질 수 있다. 이러한 기본 콘트라스트 값은 사용자 선호에 기초하여 설정될 수 있거나, 고정될 수 있거나, 임의의 다른 방식으로 설정될 수 있는데, 이는 실시예들이 이와 관련하여 한정되지 않기 때문이다. 기본 콘트라스트 값(k)의 조정의 양은 블록 504에서 계산된 휘도 값에 의존할 수 있다. 예를 들어, 휘도 값이 0.5이하로서 계산되는 경우, 기본 콘트라스트 값을 조정하지 않기 위하여 조정 변수(c)가 1로 설정될 수 있다. 휘도 값이 0.5보다 크고 0.75보다 작은 것으로 계산되는 경우, 조정 값은 예를 들어 식 4를 적용함으로써 휘도 값(L)에 기초하여 설정될 수 있다.
Figure pct00004
휘도 값이 0.75 이상으로 계산되는 경우, 조정 값은 콘트라스트에 기초하는 커버리지 값들의 조정을 불능화하기 위해 0으로 설정될 수 있다. 조정 값(c)이 설정되면, 식 5를 적용하여 기본 콘트라스트 값과 조정 값을 곱함으로써 기본 콘트라스트 값이 조정될 수 있다.
Figure pct00005
이어서, 블록 508에서, 그래픽 엔진은 블록 502에서 변경된 서브픽셀 커버리지 값들을, 다시 블록 506에서 결정된 콘트라스트 값(k')에 기초하여 변경할 수 있다. 구체적으로, 식 6을 적용함으로써, 변경된 서브픽셀 커버리지 값들(a') 각각을 콘트라스트 값(k')에 기초하여 변경하여, 더 변경된 서브픽셀 커버리지 값(a'')을 생성할 수 있다.
Figure pct00006
텍스트에 대한 서브픽셀 커버리지 값들 각각이 식 6을 이용하여 변경되면, 프로세스(500)가 종료된다.
프로세스(600)는 초기 커버리지 값들을 처리하는 데 사용될 수 있는 다른 예시적인 프로세스를 나타낸다. 일부 실시예들에서, 프로세스(600)는 프로세스(500)와 함께 사용될 수 있으며, 프로세스(500) 후에 그래픽 엔진에 의해 수행될 수 있지만, 실시예들은 이와 관련하여 한정되지 않는다.
도 6의 프로세스(600)의 시작 전에, 그래픽 엔진은 표시될 텍스트의 콘텐츠 및 텍스트에 대한 폰트 컬러를 수신하고, 텍스트에 대한 서브픽셀 커버리지 값들을 계산한다. 프로세스(600)를 통해, 이러한 커버리지 값들이 변경될 수 있다.
프로세스(600)는 블록 602에서 시작되며, 여기서 그래픽 엔진은 텍스트를 표시하는 데 사용될 디스플레이와 관련된 감마 값(γ)을 식별한다. 디스플레이에 대한 감마 값은 공지된 방식으로 얻어지는 값이며, 이는 디스플레이의 제조자에 의해 설정될 수 있고, 사용자에 의해 조정될 수 있다. 블록 602에서, 그래픽 엔진은 디스플레이에 대한 드라이버와 관련된 데이터 저장소와 같은 컴퓨팅 장치의 데이터 저장소로부터 감마 값을 검색하는 것을 포함하는 임의의 적절한 방식으로 감마 값을 식별할 수 있다.
블록 604에서, 그래픽 엔진은 감마 값(γ)을 이용하여, 각각의 서브픽셀 커버리지 값에 대해, 서브픽셀 커버리지 값들을 보정하는 데 사용할 적어도 하나의 알파 보정 값을 결정할 수 있다. 알파 보정 값은 감마 보정 프로세스의 효과를 모방하기 위해 서브픽셀 커버리지 값들을 변경하는 임의의 값일 수 있다. 감마 보정 프로세스의 효과를 모방하는 방식으로 서브픽셀 커버리지 값들이 조정될 때, 감마 보정 프로세스에 대한 필요 없이, 서브픽셀 커버리지 값들을 사용하는 텍스트에 대한 컬러 정보가 배경 그래픽들에 대한 컬러 정보와 선형으로 결합될 수 있다. 결과적으로, 텍스트를 렌더링하기 위한 프로세스로부터 감마 보정 프로세스가 배제될 수 있으며, 렌더링 프로세스가 촉진될 수 있다.
감마 보정 프로세스의 효과를 모방하기 위해 서브픽셀 커버리지 값들을 변경하는 프로세스들이 공지되어 있으며, 이러한 프로세스들 중 임의의 프로세스가 블록 604 및 606에서 사용될 수 있다. 알파 보정 값들을 결정하기 위한 하나의 그러한 프로세스가 알파 보정 프로세스로서 공지되어 있으며, 2002년 12월 3일자로 출원된 "감마 보정의 결핍을 보상하는 알파 보정(Alpha correction to compensate for lack of gamma correction)"이라는 발명의 명칭을 가진 미국 특허 제6,933,947호('947 특허)에 상세히 설명되어 있다. 요컨대, '947 특허에 설명된 알파 보정 프로세스는 감마 값들에 의해 색인되는 알파 보정 값들의 테이블을 생성한다. 이러한 알파 보정 값들은 폰트 및 배경 컬러들의 결합으로부터 생성되는 합성 컬러들에 대한 감마 보정 프로세스의 영향의 관찰에 기초하여 감마 값들의 범위 각각 및 폰트 및 배경 컬러들의 범위 각각에 대해 결정된다. 감마 보정의 영향들의 반복된 관찰을 통해, 폰트 컬러에 대한 감마 보정의 영향이 각각의 감마 값에 대해 식별될 수 있다. 예를 들어, 반복된 관찰들로부터 결정된 영향 값들 각각에 기초하여, 강제된 최적화가 각각의 감마 값에 대해 수행될 수 있다. 이러한 강제된 최적화로부터, 알파 보정 값들이 각각의 감마 값에 대해 식별되고, 감마 색인 테이블 내에 저장될 수 있다. 블록 604에서, 감마 색인 테이블이 블록 602에서 식별된 감마 값에 기초하여 조회될 수 있으며, 감마 값에 대응하는 알파 보정 값들이 검색될 수 있다.
블록 606에서, 알파 보정 값들과 서브픽셀 커버리지 값들을 결합하여, 보정된 서브픽셀 커버리지 값들을 생성할 수 있다. '947 특허는 반복된 관찰들을 통해 각각의 감마 값에 대한 4개의 알파 보정 값을 식별하는 것을 설명하지만, 임의의 적절한 수의 알파 보정 값이 결정되고 사용될 수 있다. '947 특허는 4개의 알파 보정 값에 기초하여 그리고 폰트 컬러에 기초하여 서브픽셀 커버리지 값을 변경하는 것을 설명한다. 구체적으로, '947 특허는 위의 휘도 식 3을 이용하여 폰트 컬러에 대한 휘도 값(F)을 먼저 결정하는 것을 설명한다. 이어서, 식 7을 이용하여, 감마 값(γ)을 이용하여 폰트 컬러에 대한 휘도 값을 변경함으로써 감마 변경된 폰트 휘도(f)를 생성할 수 있다.
Figure pct00007
이어서, 식 8을 이용하여, 감마 변경된 폰트 휘도 및 4개의 알파 보정 값(c1, c2, c3, c4)을 이용하여 각각의 서브픽셀 커버리지 값(a)을 변경하여, 보정된 커버리지 값(acorrected)을 생성할 수 있다.
Figure pct00008
일부 실시예들에서, 그래픽 엔진은 블록 604 및 606에서 서브픽셀 커버리지 값들 각각에 대해 식 7 및 8 각각을 수행하는 것이 아니라, 그래픽 엔진은 알파 보정 값들의 감마 색인 테이블에 대한 액세스를 갖는 다른 그래픽 설비로부터 보정된 서브픽셀 커버리지 값들을 검색할 수 있다. 그러한 실시예들에서, 그래픽 엔진은 다른 그래픽 설비에 서브픽셀 커버리지 값, 디스플레이에 대한 감마 값, 및 서브픽셀 커버리지 값에 대응하는 서브픽셀에 대한 컬러 값을 제공할 수 있다. 이어서, 다른 그래픽 설비는 감마 색인 테이블을 검사하고 식 7 및 8을 수행함으로써, 보정된 서브픽셀 커버리지 값을 그래픽 엔진으로 반환할 수 있다.
커버리지 값들이 보정되는 방식에 관계없이, 그래픽 엔진이 블록 606에서 알파 보정 값들에 의해 서브픽셀 커버리지 값들 각각을 조정하면, 프로세스(600)가 종료된다.
도 5 및 6의 프로세스들(500, 600)은 초기 커버리지 값들을 처리하여, 처리된 커버리지 값들을 생성하는 데 사용될 수 있다. 도 3과 관련하여 전술한 바와 같이, 그래픽 엔진이 커버리지 값들을 처리하면, 예를 들어 4 채널 데이터 구조 내에 서브픽셀 커버리지 값들이 캐싱될 수 있다. 따라서, 프로세스들(500, 600) 중 어느 하나 또는 양자 후에, 처리된 커버리지 값들이 데이터 구조 내에 배열되고, 캐시 내에 배치될 수 있다.
도 3과 관련하여 또한 전술한 바와 같이, 실시예들은 특정 데이터 구조 또는 데이터 포맷을 이용하여 서브픽셀 커버리지 값들을 캐싱하는 것으로 한정되지 않는다. 오히려, 실시예들은 서브픽셀 커버리지 값들을 임의의 적절한 데이터 구조 내에 배열할 수 있다. 일부 실시예들에서는, 텍스트에 대한 컬러 값들이 추가로 개별 데이터 구조 내에 캐싱될 수 있다. 임의의 구조가 사용될 수 있지만, GPU들이 처리하도록 고유하게 적응되는 전술한 4개 값 구조와 같은 일부 구조들이 일부 실시예들에서 유리할 수 있고 사용될 수 있다.
일부 실시예들에서는, 전술한 바와 같이, 서브픽셀 커버리지 값들이 다수의 4개 값 데이터 구조 내에 배열될 수 있으며, 이러한 다수의 구조는 텍스처 아틀라스와 같은 컨테이너 구조 내에 함께 배열될 수 있다. 텍스트의 제1 부분에 대한 하나의 컬러 및 텍스트의 제2 부분에 대한 다른 컬러와 같은 다수의 컬러를 이용하여 디스플레이 상에 텍스트를 표시하는 일부 실시예들에서 컨테이너 구조가 사용될 수 있다. 위의 설명으로부터 알아야 하듯이, 텍스트에 대해 사용될 폰트 컬러에 적어도 부분적으로 기초하여 서브픽셀 커버리지 값들이 설정될 수 있다. 따라서, 상이한 폰트 컬러들이 사용되는 경우, 상이한 커버리지 값들이 발생할 수 있다. 일부 실시예들에서, 그러한 상이한 커버리지 값들은 하나의 맵 내에 함께 저장될 수 있다. 그러나, 다른 실시예들에서는, 상이한 맵들이 생성될 수 있고, 또한 텍스처 아틀라스 내에 함께 배열될 수 있다.
도 7은 다수의 맵을 텍스처 아틀라스 내에 함께 배열하기 위해 실행될 수 있는 하나의 예시적인 프로세스를 나타낸다. 프로세스(700)는 블록 702에서 시작되며, 여기서 그래픽 엔진은 텍스트를 표시하는 데 사용될 각각의 컬러에 대한 처리된 서브픽셀 커버리지 값들을 결정한다. 처리된 서브픽셀 커버리지 값들은 후술하는 기술들을 따르는 것을 포함하는 임의의 적절한 방식으로 결정될 수 있다.
블록 704에서, 지정된 컬러들 각각에 대해, 그래픽 엔진은 그 컬러의 텍스트를 표시하는 데 사용될 서브픽셀들에 대한 커버리지 값들을 포함하는 맵을 생성한다. 따라서, 각각의 맵의 콘텐츠는 그 맵과 관련된 컬러를 이용하여 표시될 텍스트의 부분들에 대응하는 디스플레이의 서브픽셀들 및 픽셀들에 대응할 것이다. 맵들 각각은 BGRA 데이터 구조 내에 배열되는 것을 포함하여 임의의 적절한 데이터 구조 내에 배열될 수 있다.
이어서, 블록 706에서, 그래픽 엔진은 일부 실시예들에서 텍스처 아틀라스일 수 있는 컨테이너 구조 내에 블록 704로부터의 다수의 맵을 함께 배열한다. 데이터 구조들이 함께 배열되면, 컨테이너 구조는 임의의 적절한 방식으로 캐싱될 수 있다. 컨테이너 구조가 캐싱된 후, 프로세스(700)가 종료된다.
본 명세서에서 설명되는 원리들에 따라 동작하는 기술들은 임의의 적절한 방식으로 구현될 수 있다. 서브픽셀 커버리지 값들을 계산 및 캐싱하고, 캐싱된 서브픽셀 커버리지 값들을 이용하여 디스플레이에 표시할 텍스트를 렌더링하는 다양한 프로세스들의 단계들 및 동작들을 나타내는 일련의 흐름도들이 위의 설명에 포함된다. 위의 흐름도들의 처리 및 결정 블록들은 이러한 다양한 프로세스들을 실행하는 알고리즘들 내에 포함될 수 있는 단계들 및 동작들을 나타낸다. 이러한 프로세스들로부터 도출되는 알고리즘들은 하나 이상의 단일 또는 다중 목적 프로세서들과 통합되고 그들의 동작을 지시하는 소프트웨어로서 구현될 수 있거나, 디지털 신호 프로세서(DSP) 회로 또는 주문형 집적 회로(ASIC)와 같은 기능적 등가 회로들로서 구현될 수 있거나, 임의의 다른 적절한 방식으로 구현될 수 있다. 본 명세서에 포함된 흐름도들은 임의의 특정 회로의 또는 임의의 특정 프로그래밍 언어의 또는 프로그래밍 언어의 타입의 신택스 또는 동작을 나타내지 않는다는 것을 알아야 한다. 오히려, 흐름도들은 이 분야의 통상의 기술자가 회로들을 제조하거나 컴퓨터 소프트웨어 알고리즘들을 구현하여 본 명세서에서 설명되는 기술들의 타입들을 실행하는 특정 장치의 처리를 수행하는 데 사용할 수 있는 기능 정보를 나타낸다. 본 명세서에서 달리 지시되지 않는 한, 각각의 흐름도에서 설명되는 단계들 및/또는 동작들의 특정 순서는 구현될 수 있는 알고리즘들을 예시할 뿐이며, 본 명세서에서 설명되는 원리들의 구현들 및 실시예들에서 변경될 수 있다는 것도 알아야 한다.
따라서, 일부 실시예들에서, 본 명세서에서 설명되는 기술들은 애플리케이션 소프트웨어, 시스템 소프트웨어, 펌웨어, 미들웨어, 내장 코드 또는 임의의 다른 적절한 타입의 소프트웨어를 포함하는 소프트웨어로서 구현되는 컴퓨터 실행 가능 명령어들 내에 구현될 수 있다. 그러한 컴퓨터 실행 가능 명령어들은 임의의 다양한 적절한 프로그래밍 언어 및/또는 프로그래밍 또는 스크립팅 도구를 이용하여 작성될 수 있으며, 프레임워크 또는 가상 기계 상에서 실행되는 실행 가능 기계 언어 코드 또는 중간 코드로서 컴파일될 수도 있다.
본 명세서에 설명되는 기술들이 컴퓨터 실행 가능 명령어들로서 구현될 때, 이러한 컴퓨터 실행 가능 명령어들은 이러한 기술들에 따라 동작하는 알고리즘들의 실행을 완료하기 위한 하나 이상의 동작을 각자 제공하는 다수의 기능 설비를 포함하는 임의의 적절한 방식으로 구현될 수 있다. 그러나, 인스턴스화된 "기능 설비"는 하나 이상의 컴퓨터와 통합되어 그에 의해 실행될 때 하나 이상의 컴퓨터로 하여금 특정 동작 역할을 수행하게 하는 컴퓨터 시스템의 구조적 컴포넌트이다. 기능 설비는 소프트웨어 요소의 일부 또는 전체 소프트웨어 요소일 수 있다. 예를 들어, 기능 설비는 프로세스의 기능으로서 또는 개별 프로세스로서 또는 임의의 다른 적절한 처리 유닛으로서 구현될 수 있다. 본 명세서에서 설명되는 기술들이 다수의 기능 설비로서 구현되는 경우, 각각의 기능 설비는 그 자신의 방식으로 구현될 수 있으며, 모두가 동일 방식으로 구현될 필요는 없다. 게다가, 이러한 기능 설비들은 적절한 경우에 병렬 및/또는 직렬로 실행될 수 있으며, 이들이 실행되고 있는 컴퓨터(들) 상의 공유 메모리를 이용하여, 메시지 전송 프로토콜을 이용하여 또는 임의의 다른 적절한 방식으로 서로 정보를 전송할 수 있다.
일반적으로, 기능 설비들은 특정 작업들을 수행하거나 특정 추상 데이터 타입들을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 통상적으로, 기능 설비들의 기능은 이들이 동작하는 시스템들 내에 필요에 따라 결합되건 분산될 수 있다. 일부 구현들에서, 본 명세서에서의 기술들을 실행하는 하나 이상의 기능 설비는 함께 완전한 소프트웨어 패키지를 형성할 수 있다. 이러한 기능 설비들은 대안 실시예들에서 다른 무관한 기능 설비들 및/또는 프로세스들과 상호작용하여 소프트웨어 프로그램 애플리케이션 또는 소프트웨어 시스템을 구현하도록 적응될 수 있다. 예를 들어, 일부 실시예들에서, 이러한 기술들을 구현하는 기능 설비들은 소프트웨어 애플리케이션들 내에 소프트웨어 애플리케이션의 그래픽 기능의 일부로서 그리고/또는 워싱턴 레드먼드의 마이크로소프트사로부터 입수 가능한 Direct2d(상표) 또는 DIRECTX(등록상표) 시스템들과 같은 그래픽 렌더링 시스템 내에 통합될 수 있다. 다른 구현들에서, 기능 설비들은 워싱턴 레드먼드의 마이크로소프트사로부터 입수 가능한 WINDOWS(등록상표) 운영 체제를 포함하는 운영 체제를 형성하는 것과 같은 방식으로 다른 기능 설비들과 상호작용하도록 적응될 수 있다. 즉, 일부 구현들에서, 기능 설비들은 대안으로서 운영 체제의 일부로서 또는 그 외부에 구현될 수 있다.
전술한 그래픽 엔진을 포함하여, 하나 이상의 작업을 실행하기 위한 일부 예시적인 기능 설비들이 본 명세서에서 설명되었다. 그러나, 설명된 기능 설비들 및 작업들의 분할은 본 명세서에서 설명되는 예시적인 기술들을 구현할 수 있는 기능 설비들의 타입을 예시할 뿐이며, 실시예들은 기능 설비들의 임의의 특정 수, 분할 또는 타입에서 구현되는 것으로 한정되지 않는다는 것을 알아야 한다. 일부 구현들에서, 모든 기능은 단일 기능 설비에서 구현될 수 있다. 일부 구현들에서는 본 명세서에서 설명되는 기능 설비들 중 일부가 다른 기능 설비들과 함께 또는 별개로(즉, 단일 유닛 또는 개별 유닛들로서) 구현될 수 있거나, 이러한 기능 설비들 중 일부가 구현되지 않을 수 있다는 것도 알아야 한다.
일부 실시예들에서, 본 명세서에서 설명되는 기술들을 구현하는 컴퓨터 실행 가능 명령어들은 (하나 이상의 기능 설비로서 또는 임의의 다른 방식으로 구현될 때) 하나 이상의 컴퓨터 판독 가능 매체 상에 인코딩되어 매체에 기능을 제공할 수 있다. 컴퓨터 판독 가능 매체는 하드 디스크 드라이브와 같은 자기 매체, 컴팩트 디스크(CD) 또는 디지털 다기능 디스크(DVD)와 같은 광학 매체, 영구적 또는 비영구적 반도체 메모리(예로서, 플래시 메모리, 자기 RAM 등) 또는 임의의 다른 적절한 저장 매체를 포함한다. 그러한 컴퓨터 판독 가능 매체는 후술하는 도 8의 컴퓨터 판독 가능 저장 매체(806)(즉, 컴퓨팅 장치(800)의 일부) 또는 독립적인 개별 저장 매체를 포함하는 임의의 적절한 방식으로 구현될 수 있다. 본 명세서에서 사용될 때, ("컴퓨터 판독 가능 저장 매체"라고도 하는) "컴퓨터 판독 가능 매체"는 유형의 저장 매체를 지칭한다. 유형의 저장 매체는 비일시적이며, 적어도 하나의 물리적, 구조적 컴포넌트를 갖는다. 본 명세서에서 사용되는 바와 같은 "컴퓨터 판독 가능 매체"에서, 적어도 하나의 물리적, 구조적 컴포넌트는 내장된 정보를 갖는 매체를 생성하는 프로세스, 매체 상에 정보를 기록하는 프로세스 또는 매체에 정보를 인코딩하는 임의의 다른 프로세스 동안 소정의 방식으로 변경될 수 있는 적어도 하나의 물리적 특성을 갖는다. 예를 들어, 컴퓨터 판독 가능 매체의 물리적 구조의 일부의 자화 상태가 기록 프로세스 동안 변경될 수 있다.
또한, 전술한 일부 기술들은 이러한 기술들에 의한 사용을 위해 정보(예로서, 데이터 및/또는 명령어들)를 소정 방식들로 저장하는 동작들을 포함한다. 이러한 기술들의 일부 구현들, 예를 들어 기술들이 컴퓨터 실행 가능 명령어들로서 구현되는 구현들에서는, 정보가 컴퓨터 판독 가능 저장 매체 상에 인코딩될 수 있다. 본 명세서에서 특정 구조들이 이러한 정보를 저장하는 유리한 포맷들로서 설명되는 경우, 이러한 구조들은 정보가 저장 매체 상에 인코딩될 때 정보의 물리적 체계화를 제공하는 데 사용될 수 있다. 또한, 이러한 유리한 구조들은 정보와 상호작용하는 하나 이상의 프로세서의 동작들에 영향을 줌으로써, 예를 들어 프로세서(들)에 의해 수행되는 컴퓨터 동작들의 효율을 향상시킴으로써 저장 매체에 기능을 제공할 수 있다.
기술들이 컴퓨터 실행 가능 명령어들로서 구현될 수 있는 일부, 그러나 전부는 아닌, 구현들에서, 이러한 명령어들은 도 2의 예시적인 컴퓨터 시스템을 포함하는 임의의 적절한 컴퓨터 시스템에서 동작하는 하나 이상의 적절한 컴퓨팅 장치(들) 상에서 실행될 수 있거나, 하나 이상의 컴퓨팅 장치(또는 하나 이상의 컴퓨팅 장치의 하나 이상의 프로세서)가 컴퓨터 실행 가능 명령어들을 실행하도록 프로그래밍될 수 있다. 컴퓨팅 장치 또는 프로세서는 명령어들이 컴퓨팅 장치/프로세서에 의해 액세스될 수 있는 방식으로, 예를 들어 로컬 메모리(예로서, 온칩 캐시 또는 명령어 레지스터, 버스를 통해 액세스 가능한 컴퓨터 판독 가능 저장 매체, 하나 이상의 네트워크를 통해 액세스 가능하고 장치/프로세서에 의해 액세스 가능한 컴퓨터 판독 가능 저장 매체 등) 내에 저장될 때 명령어들을 실행하도록 프로그래밍될 수 있다. 이러한 컴퓨터 실행 가능 명령어들을 포함하는 기능 설비들은 단일 다목적 프로그래밍 가능 디지털 컴퓨터, 처리 능력을 공유하고, 본 명세서에서 설명되는 기술들을 공동으로 실행하는 (같은 곳에 위치하거나 지리적으로 분산된) 둘 이상의 다목적 컴퓨터의 통합 시스템, 본 명세서에서 설명되는 기술들을 실행하도록 전용화된 단일 컴퓨터 또는 (같은 곳에 위치하거나 지리적으로 분산된) 컴퓨터들의 통합 시스템, 본 명세서에서 설명되는 기술들을 실행하기 위한 하나 이상의 필드 프로그래머블 게이트 어레이(FPGA) 또는 임의의 다른 적절한 장치를 포함하는 컴퓨팅 장치들과 통합되어 그들의 동작을 지시할 수 있다.
도 8은 본 명세서에서 설명되는 기술들을 구현하는 시스템에서 사용될 수 있는 컴퓨팅 장치(800)의 형태의 컴퓨팅 장치의 하나의 예시적인 구현을 나타내지만, 다른 것들도 가능하다. 도 8은 컴퓨팅 장치가 본 명세서에서 설명되는 원리들에 따라 동작하는 데 필요한 컴포넌트들의 도시를 의도하지 않으며, 포괄적인 도시도 의도하지 않는다는 것을 알아야 한다.
컴퓨팅 장치(800)는 적어도 하나의 프로세서(802), 네트워크 어댑터(804) 및 컴퓨터 판독 가능 저장 매체(806)를 포함할 수 있다. 컴퓨팅 장치(800)는 예를 들어 데스크탑 또는 랩탑 개인용 컴퓨터, 개인용 휴대 단말기(PDA), 스마트 이동 전화, 태블릿 컴퓨터, 서버 또는 임의의 다른 적절한 컴퓨팅 장치일 수 있다. 프로세서들(802)은 중앙 처리 유닛(CPU) 및/또는 그래픽 처리 유닛(GPU)을 포함하는 임의의 적절한 프로세서들을 포함할 수 있다. 네트워크 어댑터(804)는 컴퓨팅 장치(800)로 하여금 임의의 적절한 컴퓨팅 네트워크를 통해 임의의 다른 적절한 컴퓨팅 장치와 유선 및/또는 무선으로 통신하는 것을 가능하게 하기 위한 임의의 적절한 하드웨어 및/또는 소프트웨어일 수 있다. 컴퓨팅 네트워크는 무선 액세스 포인트, 스위치, 라우터, 게이트웨이 및/또는 다른 네트워킹 장비는 물론, 인터넷을 포함하는, 둘 이상의 컴퓨터 사이에서 데이터를 교환하기 위한 임의의 적절한 유선 및/또는 무선 통신 매체 또는 매체들도 포함할 수 있다. 컴퓨터 판독 가능 저장 매체(806)는 프로세서(802)에 의해 처리될 데이터 및/또는 실행될 명령어들을 저장하도록 적응되는 하나 이상의 매체일 수 있다. 프로세서(802)는 데이터의 처리 및 명령어들의 실행을 가능하게 한다. 데이터 및 명령어들은 컴퓨터 판독 가능 저장 매체(806) 상에 저장될 수 있으며, 예를 들어 컴퓨팅 장치(800)의 컴포넌트들 간의 통신을 가능하게 할 수 있다.
컴퓨터 판독 가능 저장 매체(806) 상에 저장되는 데이터 및 명령어들은 본 명세서에서 설명되는 원리들에 따라 동작하는 기술들을 구현하는 컴퓨터 실행 가능 명령어들을 포함할 수 있다. 도 8의 예에서, 컴퓨터 판독 가능 저장 매체(806)는 다양한 설비들을 구현하는 컴퓨터 실행 가능 명령어들을 저장하고, 전술한 바와 같은 다양한 정보를 저장한다. 컴퓨터 판독 가능 저장 매체(806)는 컴퓨팅 장치(800)와 관련된 디스플레이에 텍스트를 렌더링하고 표시하기 위한 그래픽 엔진(808)을 저장할 수 있다. 그래픽 엔진(808)은 서브픽셀 커버리지 값들을 결정, 처리 및 캐싱하기 위해 그래픽 엔진(808)의 일부로서 구현될 수 있는 커버리지 설비(810)를 포함할 수 있다. 컴퓨터 판독 가능 저장 매체(808)는 디스플레이에 표시되거나 표시될 텍스트에 대한 커버리지 값들을 캐싱하는 데이터 저장소(812)도 포함할 수 있다. 컴퓨터 판독 가능 저장 매체(806)는 서브픽셀 커버리지 값들을 결정하고 처리하기 위해 그래픽 엔진(808) 및/또는 커버리지 설비(810)에 의해 사용될 수 있는 알파 보정 값들의 테이블(814)도 저장할 수 있다.
도 8에는 도시되지 않았지만, 컴퓨팅 장치는 입력 및 출력 장치들을 포함하는 하나 이상의 컴포넌트 및 주변 장치를 더 구비할 수 있다. 이러한 장치들은 많은 가운데 특히 사용자 인터페이스를 제공하는 데 사용될 수 있다. 사용자 인터페이스를 제공하는 데 사용될 수 있는 출력 장치들의 예들은 출력의 시각적 표현을 위한 프린터 또는 디스플레이 및 출력의 가청 표현을 위한 스피커 또는 다른 사운드 생성 장치를 포함한다. 사용자 인터페이스를 위해 사용될 수 있는 입력 장치들의 예들은 키보드, 마우스와 같은 포인팅 장치, 터치 패드 및 디지타이징 태블릿을 포함한다. 다른 예로서, 컴퓨팅 장치는 음성 인식을 통해 또는 다른 가청 포맷으로 입력 정보를 수신할 수 있다.
기술들이 회로 및/또는 컴퓨터 실행 가능 명령어들 내에 구현되는 실시예들이 설명되었다. 일부 실시예들은 그의 적어도 하나의 예가 제공된 방법의 형태일 수 있다는 것을 알아야 한다. 방법의 일부로서 수행되는 동작들은 임의의 적절한 방식으로 배열될 수 있다. 따라서, 도시된 실시예들에서는 순차적인 동작들로서 도시되더라도, 일부 동작들의 동시 수행을 포함할 수 있는, 도시된 것과 다른 순서로 동작들을 수행하는 실시예들이 구성될 수 있다.
전술한 실시예들의 다양한 양태들은 단독으로, 결합하여, 또는 위에 설명된 실시예들에서 구체적으로 설명되지 않은 다양한 배열로 이용될 수 있으며, 따라서 위의 설명에서 설명되거나 도면들에 도시된 컴포넌트들의 상세들 및 배열들로 그의 응용이 한정되지 않는다. 예를 들어, 일 실시예에서 설명되는 양태들은 다른 실시예들에서 설명되는 양태들과 임의의 방식으로 결합될 수 있다.
청구항들에서 청구항 요소를 수식하기 위한 "제1", "제2", "제3" 등과 같은 순서 용어들의 사용은 그것만으로는 하나의 청구항 요소의 다른 청구항 요소에 대한 임의의 우선 순위, 서열 또는 순서, 또는 방법의 동작들이 수행되는 시간적 순서를 의미하는 것이 아니라, 소정의 이름을 갖는 하나의 청구항 요소를 (단지 순서 용어의 사용을 위해) 동일 이름을 갖는 다른 요소와 구별하여 청구항 요소들을 구별하기 위한 표시들로서 사용될 뿐이다.
또한, 본 명세서에서 사용되는 표현 및 용어는 설명의 목적을 위한 것이며, 한정으로 간주되지 않아야 한다. 본 명세서에서 "포함하는", "구비하는" 및 이들의 변형들의 사용은 그 뒤에 열거되는 항목들 및 이들의 균등물들은 물론 추가적인 항목들을 포함하는 것을 의도한다.
본 명세서에서 단어 "예시적인"은 예, 사례 또는 실례로서의 사용을 의미하는 데 사용된다. 따라서, 본 명세서에서 예시적인 것으로서 설명되는 임의의 실시예, 구현, 프로세스, 특징 등은 설명적인 예인 것으로 이해되어야 하고, 달리 지시되지 않는 한 바람직한 또는 유리한 예인 것으로 이해되지 않아야 한다.
적어도 하나의 실시예의 여러 양태를 설명하였지만, 다양한 변형들, 변경들 및 개량들이 당업자들에게 쉽게 떠오를 것이라는 것을 알아야 한다. 그러한 변형들, 변경들 및 개량들은 본 발명의 일부인 것을 의도하며, 본 명세서에서 설명되는 원리들의 사상 및 범위 내에 있는 것을 의도한다. 따라서, 위의 설명 및 도면들은 예시적일 뿐이다.

Claims (10)

  1. 컴퓨팅 장치의 그래픽 인터페이스 내에 표시될 텍스트를 처리하는 방법으로서,
    상기 텍스트에 대한 맵핑을 생성하는 단계와 - 상기 맵핑은 상기 텍스트의 적어도 하나의 형상을 나타내는 정보를 포함하고 상기 텍스트를 표시하는 데 사용될 디스플레이의 복수의 서브픽셀에 대응함 -,
    서브픽셀 안티앨리어싱 기법을 이용하여 상기 복수의 서브픽셀에 대한 초기 서브픽셀 커버리지 값을 결정하는 단계와,
    상기 초기 서브픽셀 커버리지 값을 처리하여, 이미지 데이터의 복수의 픽셀에 대한 처리된 서브픽셀 커버리지 값을 생성하는 단계와,
    상기 그래픽 인터페이스 내에 상기 텍스트를 렌더링함에 있어서 후속 사용을 위해 상기 처리된 서브픽셀 커버리지 값을 캐싱하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 텍스트에 대한 상기 처리된 서브픽셀 커버리지 값을 캐싱하는 단계는 상기 텍스트를 상기 그래픽 인터페이스 내에 표시할 컬러에 관한 정보를 데이터 구조 내에 저장하지 않고서 상기 처리된 서브픽셀 커버리지 값을 상기 데이터 구조 내에 저장하는 단계를 포함하는
    방법.
  3. 제1항에 있어서,
    상기 초기 서브픽셀 커버리지 값을 처리하여 상기 처리된 커버리지 값을 생성하는 단계는 상기 그래픽 인터페이스를 표시할 디스플레이의 비선형성을 보상하기 위해 상기 초기 서브픽셀 커버리지 값을 조정하는 단계를 포함하는
    방법.
  4. 제3항에 있어서,
    비선형성을 보상하기 위해 상기 초기 서브픽셀 커버리지 값을 조정하는 단계는 상기 초기 서브픽셀 커버리지 값 및 상기 텍스트에 대한 컬러 값과, 상기 텍스트와 중첩되게 표시될 적어도 하나의 다른 표시 요소에 대한 컬러 값을 선형으로 결합함으로써 디스플레이를 제어하기 위한 합성 컬러 값이 계산되는 것을 가능하게 하기 위해 상기 초기 서브픽셀 커버리지 값을 변경하는 단계를 포함하는
    방법.

  5. 제1항에 있어서,
    상기 생성, 결정, 처리 및 캐싱 단계는 상기 텍스트의 콘텐츠를 적어도 포함하고 상기 텍스트를 렌더링할 상기 디스플레이 상의 위치를 포함하지 않는 명령어를 실행 프로세스로부터 수신하는 것에 응답하여 수행되는
    방법.
  6. 장치로서,
    적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는
    디스플레이에 대해 텍스트를 렌더링하기 위한 요청을 수신하는 것에 응답하여, 상기 텍스트에 대한 서브픽셀 커버리지 값들을 캐시로부터 검색하고 - 상기 서브픽셀 커버리지 값은 상기 장치의 적어도 하나의 그래픽 처리 유닛(GPU)의 하드웨어 구성에 따라 배열되는 데이터 구조 내에 배열되고, 상기 데이터 구조는 4개의 필드를 포함하고, 상기 서브픽셀 커버리지 값은 상기 데이터 구조의 3개의 필드 내에 배열됨 -,
    상기 텍스트를 표시할 디스플레이의 픽셀에 대한 합성 컬러 값을 결정하도록 적어도 하나의 GPU를 구성하고 - 상기 구성은 상기 데이터 구조로부터 상기 서브픽셀 커버리지 값을 검색하도록 상기 적어도 하나의 GPU를 구성하는 것을 포함함 -,
    상기 텍스트를 표시할 상기 픽셀에 대한 상기 합성 컬러 값을 상기 적어도 하나의 GPU로부터 수신하고,
    상기 합성 컬러 값에 기초하여, 상기 디스플레이에 상기 텍스트의 안티앨리어싱된 버전을 렌더링하도록 프로그래밍되는
    장치.
  7. 제6항에 있어서,
    상기 적어도 하나의 프로세서는 상기 서브픽셀 커버리지 값에 의해 변경되는 상기 텍스트에 대한 컬러 값과 상기 디스플레이 상에 상기 텍스트와 중첩되게 표시될 적어도 하나의 다른 표시 요소에 대한 컬러 값을 선형으로 결합함으로써 적어도 부분적으로 상기 픽셀에 대한 상기 합성 컬러 값을 결정하도록 상기 적어도 하나의 GPU를 구성하도록 프로그래밍되는
    장치.
  8. 제6항에 있어서,
    상기 적어도 하나의 프로세서는 상기 디스플레이의 픽셀에 대한 합성 컬러 값을 상기 데이터 구조로부터의 상기 픽셀에 대한 상기 서브픽셀 커버리지 값 및 상기 데이터 구조와 다른 제2 데이터 구조로부터의 상기 픽셀에 대한 서브픽셀 컬러 값에 적어도 부분적으로 기초하여 결정하도록 상기 적어도 하나의 GPU를 구성하도록 프로그래밍되고, 상기 제2 데이터 구조는 상기 장치의 적어도 하나의 그래픽 처리 유닛(GPU)의 하드웨어 구성에 따라 배열되는
    장치.
  9. 제8항에 있어서,
    상기 적어도 하나의 프로세서는 상기 디스플레이에 상기 텍스트를 렌더링하기 위한 상기 요청을 수신하도록 더 프로그래밍되고, 상기 요청은 상기 서브픽셀 컬러 값을 포함하는 상기 제2 데이터 구조를 포함하는
    장치.
  10. 제8항에 있어서,
    상기 적어도 하나의 프로세서는 상기 요청의 수신에 응답하여 상기 캐시로부터 상기 서브픽셀 컬러 값을 포함하는 상기 제2 데이터 구조를 검색하도록 더 프로그래밍되는
    장치.
KR1020147009568A 2011-10-11 2012-10-11 안티앨리어싱 기법을 이용하여 텍스트를 렌더링하기 위한 커버리지 값의 캐싱 기법 KR101993941B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/270,926 US9171386B2 (en) 2011-10-11 2011-10-11 Caching coverage values for rendering text using anti-aliasing techniques
US13/270,926 2011-10-11
PCT/US2012/059626 WO2013055838A1 (en) 2011-10-11 2012-10-11 Caching coverage values for rendering text using anti-aliasing techniques

Publications (2)

Publication Number Publication Date
KR20140074937A true KR20140074937A (ko) 2014-06-18
KR101993941B1 KR101993941B1 (ko) 2019-06-27

Family

ID=47645362

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147009568A KR101993941B1 (ko) 2011-10-11 2012-10-11 안티앨리어싱 기법을 이용하여 텍스트를 렌더링하기 위한 커버리지 값의 캐싱 기법

Country Status (6)

Country Link
US (1) US9171386B2 (ko)
EP (1) EP2766874B1 (ko)
JP (1) JP6046152B2 (ko)
KR (1) KR101993941B1 (ko)
CN (1) CN102930572B (ko)
WO (1) WO2013055838A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USD705787S1 (en) * 2012-06-13 2014-05-27 Microsoft Corporation Display screen with animated graphical user interface
KR101971924B1 (ko) * 2012-10-05 2019-04-25 삼성디스플레이 주식회사 표시 장치 및 표시 장치의 구동 방법
US20140320527A1 (en) * 2013-04-30 2014-10-30 Microsoft Corporation Hardware glyph cache
US11082738B2 (en) * 2015-08-21 2021-08-03 Microsoft Technology Licensing, Llc Faster determination of a display element's visibility
CN107481200B (zh) * 2017-07-31 2018-09-18 腾讯科技(深圳)有限公司 图像处理方法和装置
KR102015874B1 (ko) * 2019-04-16 2019-08-30 삼성디스플레이 주식회사 표시 장치 및 표시 장치의 구동 방법
JP7433703B2 (ja) 2020-01-16 2024-02-20 アルパイン株式会社 表示制御装置および表示制御方法
CN113031896B (zh) * 2021-03-31 2023-01-20 卡莱特云科技股份有限公司 文本循环滚动播放方法、播放控制装置及计算机设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040151398A1 (en) * 1999-07-30 2004-08-05 Claude Betrisey Methods and apparatus for filtering and caching data representing images
US20050212799A1 (en) * 2004-03-24 2005-09-29 Canon Kabushiki Kaisha Rendering images containing video
US20050253865A1 (en) * 2004-05-11 2005-11-17 Microsoft Corporation Encoding ClearType text for use on alpha blended textures
US20060114258A1 (en) * 2002-06-06 2006-06-01 Microsoft Corporation Dropout control in subpixel rendering
US20070216687A1 (en) * 2001-05-02 2007-09-20 Kaasila Sampo J Methods, systems, and programming for producing and displaying subpixel-optimized font bitmaps using non-linear color balancing
US20080186325A1 (en) * 2005-04-04 2008-08-07 Clairvoyante, Inc Pre-Subpixel Rendered Image Processing In Display Systems
US7623130B1 (en) * 2005-04-25 2009-11-24 Apple Inc. Text rendering with improved command stream operations
US20100123721A1 (en) * 2008-11-18 2010-05-20 Hon Wah Wong Image device and data processing system
US20110285747A1 (en) * 2010-05-21 2011-11-24 Kilgard Mark J Jittered coverage accumulation path rendering
US20120026216A1 (en) * 2001-05-09 2012-02-02 Candice Hellen Brown Elliott Methods and systems for sub-pixel rendering with adaptive filtering

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3009525B2 (ja) * 1991-10-28 2000-02-14 株式会社リコー ベクトル画像描画装置
US7046250B1 (en) 2002-07-11 2006-05-16 Sun Microsystems, Inc. Caching fonts for improved bandwidth of transmitted text
US6933947B2 (en) 2002-12-03 2005-08-23 Microsoft Corporation Alpha correction to compensate for lack of gamma correction
US7081902B1 (en) * 2003-09-24 2006-07-25 Nvidia Corporation Apparatus, system, and method for gamma correction of smoothed primitives
JPWO2005071659A1 (ja) * 2004-01-27 2007-08-23 富士通株式会社 表示装置,表示制御装置,表示方法,表示制御プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体
US7456904B2 (en) 2005-09-22 2008-11-25 Pelco, Inc. Method and apparatus for superimposing characters on video
US8159495B2 (en) 2006-06-06 2012-04-17 Microsoft Corporation Remoting sub-pixel resolved characters
JP4698709B2 (ja) * 2008-08-28 2011-06-08 シャープ株式会社 データ作成装置、データ作成方法、データ作成用プログラム、描画装置、描画方法、描画用プログラム、および、コンピュータ読取可能な記録媒体
KR101012855B1 (ko) 2009-05-25 2011-02-08 (주)한양정보통신 보안성을 강화한 안티 엘리어싱 기반의 폰트 표시방법 및 폰트 표시 시스템

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040151398A1 (en) * 1999-07-30 2004-08-05 Claude Betrisey Methods and apparatus for filtering and caching data representing images
US20070216687A1 (en) * 2001-05-02 2007-09-20 Kaasila Sampo J Methods, systems, and programming for producing and displaying subpixel-optimized font bitmaps using non-linear color balancing
US20120026216A1 (en) * 2001-05-09 2012-02-02 Candice Hellen Brown Elliott Methods and systems for sub-pixel rendering with adaptive filtering
US20060114258A1 (en) * 2002-06-06 2006-06-01 Microsoft Corporation Dropout control in subpixel rendering
US20050212799A1 (en) * 2004-03-24 2005-09-29 Canon Kabushiki Kaisha Rendering images containing video
US20050253865A1 (en) * 2004-05-11 2005-11-17 Microsoft Corporation Encoding ClearType text for use on alpha blended textures
US20080186325A1 (en) * 2005-04-04 2008-08-07 Clairvoyante, Inc Pre-Subpixel Rendered Image Processing In Display Systems
US7623130B1 (en) * 2005-04-25 2009-11-24 Apple Inc. Text rendering with improved command stream operations
US20100123721A1 (en) * 2008-11-18 2010-05-20 Hon Wah Wong Image device and data processing system
US20110285747A1 (en) * 2010-05-21 2011-11-24 Kilgard Mark J Jittered coverage accumulation path rendering

Also Published As

Publication number Publication date
EP2766874A1 (en) 2014-08-20
CN102930572A (zh) 2013-02-13
CN102930572B (zh) 2016-07-06
JP2015501442A (ja) 2015-01-15
KR101993941B1 (ko) 2019-06-27
JP6046152B2 (ja) 2016-12-14
US20130088505A1 (en) 2013-04-11
EP2766874A4 (en) 2015-06-17
WO2013055838A1 (en) 2013-04-18
US9171386B2 (en) 2015-10-27
EP2766874B1 (en) 2018-09-12

Similar Documents

Publication Publication Date Title
KR101993941B1 (ko) 안티앨리어싱 기법을 이용하여 텍스트를 렌더링하기 위한 커버리지 값의 캐싱 기법
US20150287220A1 (en) Rendering text using anti-aliasing techniques, cached coverage values, and/or reuse of font color values
US10540744B2 (en) Flexible control in resizing of visual displays
JP6726946B2 (ja) レンダリング方法、レンダリング装置及び電子装置
US10223761B2 (en) Graphics pipeline method and apparatus
KR102073848B1 (ko) 웹 브라우저를 위한 몰입 모드
US9292903B2 (en) Overlap aware reordering of rendering operations for efficiency
CN105787875A (zh) 用于在计算机系统中控制空间分辨率的方法和装置
KR102666129B1 (ko) 픽셀 값들 대 픽셀들의 매핑을 통한 이미지 디스플레이의 제어
TWI597708B (zh) 電子顯示器
WO2010036128A2 (en) Improvements in and relating to electronic visual displays
CA2501671A1 (en) Dynamic window anatomy
JP6545996B2 (ja) 映像表示システム
KR102374160B1 (ko) 스케일링을 사용하여 디스플레이 지연을 감소시키는 방법 및 장치
US8952981B2 (en) Subpixel compositing on transparent backgrounds
US8854385B1 (en) Merging rendering operations for graphics processing unit (GPU) performance
JP6364066B2 (ja) 複数のプリミティブを使用するグラフィック処理
US20140253584A1 (en) Subpixel Shape Smoothing Based On Predicted Shape Background Information
US10553004B2 (en) Method and apparatus for processing image and recording medium storing program therefor
US20090009529A1 (en) Adaptive contextual filtering
US20130063475A1 (en) System and method for text rendering
US10074152B2 (en) GPU rendering of knockout groups
JP6626698B2 (ja) レンダリング計算方法および表示装置
NL2023600B1 (en) Method, device and computer program for overlaying a graphical image
CN106815800A (zh) 用于在计算机系统中控制空间分辨率的方法和装置

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right