Jump to content

Subpixel rendering

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Thumperward (talk | contribs) at 22:29, 6 February 2024 (split lead into paragraphs). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
A simulation of subpixel rendering.
Examples of pixel geometry, showing various arrangements of pixels and subpixels, which must be considered for subpixel rendering. LCD displays consisting of red, green, and blue subpixels (bottom right is the most typical example) are best suited to subpixel rendering
"Aa" rendered in subpixel
The previous image, with the R, G and B channel separated and animated

Subpixel rendering is a method used to increase the effective resolution of a color display device. It takes advantage of each pixel's composition of individually addressable red, green, and blue components adjacent on the display matrix, called subpixels, and uses them as rendering units instead of pixels.

Subpixel rendering is primarily used for text rendering on standard DPI displays.

Despite the inherent color anomalies, it can also be used to render general graphics.

Characteristics

A single pixel on a color display is made of several subpixels, typically three arranged left-to-right as red, green, blue (RGB). The components are easily visible when viewed with a small magnifying glass, such as a loupe. These pixel components appear as a single color to the human eye because of blurring by the optics and spatial integration by nerve cells in the eye. However the eye is much more sensitive to the location. Therefore, turning on the GB of one pixel and the R of the next one to the right will produce a white dot but it will appear to be 1/3 of a pixel to the right of the white dot that you would see from the RGB of the first pixel. Subpixel rendering takes advantage of this to provide three times the horizontal resolution of the rendered image, though it has to blur this image to produce the correct color by making sure the same amount of red, green, and blue are turned on as when no subpixel rendering is being done.

Subpixel rendering does not necessitate the use of antialiasing, and gives a smoother result regardless of whether antialiasing is used or not [1] since it artificially increases the resolution. However, it introduces color aliasing since subpixels are colored. Subsequent filtering applied to remove the color artifacts is a form of antialiasing, although its purpose is not smoothing jagged shapes as in conventional antialiasing.

Subpixel rendering requires the software to know the layout of the subpixels. The most common reason it is wrong is monitors that can be rotated 90 (or 180) degrees, though monitors are manufactured with other arrangements of the subpixels, such as BGR or in triangles, or with 4 colors like RGBW squares. On any such display the result of incorrect subpixel rendering will be worse than if no subpixel rendering was done at all (it will not produce color artifacts, but it will produce noisy edges).

History and patents

The origin of subpixel rendering as used today remains controversial. Apple Inc., IBM, and Microsoft patented various implementations with certain technical differences owing to the different purposes their technologies were intended for.[2]

Microsoft had several patents in the United States on subpixel rendering technology for text rendering on RGB Stripe layouts. The patents 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 were filed between October 7, 1998, and October 7, 1999, and expired on July 30, 2019.[3] Analysis of the patent by FreeType[4] indicates that the idea of subpixel rendering is not covered by the patent, but by the actual filter used as a last step to balance the color. Microsoft's patent describes the smallest filter possible that distributes each subpixel value to an equal amount of R,G, and B pixels. Any other filter will either be blurrier or will introduce color artifacts.

Apple was able to use it in Mac OS X due to a patent cross-licensing agreement.[5]

Apple II

It is sometimes claimed (such as by Steve Gibson[6]) that the Apple II, introduced in 1977, supports an early form of subpixel rendering in its high-resolution (280×192) graphics mode.

David Turner of the FreeType project criticized Gibson's theory as to the invention, at least as far as patent law is concerned, in the following way: "For the record, the Wozniak patent is explicitly referenced in the [Microsoft U.S. patent 6,188,385], and the claims are worded precisely to avoid colliding with it (which is easy, since the Apple II only used 2 "sub-pixels", instead of the 'at minimum 3' claimed by MS)."[7]

The bytes that comprise the Apple II high-resolution screen buffer contain seven visible bits (each corresponding directly to a pixel) and a flag bit used to select between purple/green or blue/orange color sets. Each pixel, since it is represented by a single bit, is either on or off; there are no bits within the pixel itself for specifying color or brightness. Color is instead created as an artifact of the NTSC color encoding scheme, determined by horizontal position: pixels with even horizontal coordinates are always purple (or blue, if the flag bit is set), and odd pixels are always green (or orange). Two lit pixels next to each other are always white, regardless of whether the pair is even/odd or odd/even, and irrespective of the value of the flag bit. The foregoing is only an approximation of the true interplay of the digital and analog behavior of the Apple's video output circuits on one hand, and the properties of real NTSC monitors on the other hand. However, this approximation is what most programmers of the time would have in mind while working with the Apple's high-resolution mode.

Gibson's example claims that because two adjacent bits make a white block, there are in fact two bits per pixel: one which activates the purple left half of the pixel, and the other which activates the green right half of the pixel. If the programmer instead activates the green right half of a pixel and the purple left half of the next pixel, then the result is a white block that is 1/2 pixel to the right, which is indeed an instance of subpixel rendering. However, it is not clear whether any programmers of the Apple II have considered the pairs of bits as pixels—instead calling each bit a pixel. While the quote from Apple II inventor Steve Wozniak on Gibson's page seems to imply that vintage Apple II graphics programmers routinely used subpixel rendering, it is difficult to make a case that many of them thought of what they were doing in such terms.

The flag bit in each byte affects color by shifting pixels half a pixel-width to the right. This half-pixel shift was exploited by some graphics software, such as HRCG (High-Resolution Character Generator), an Apple utility that displayed text using the high-resolution graphics mode, to smooth diagonals. (Many Apple II users had monochrome displays, or turned down the saturation on their color displays when running software that expected a monochrome display, so this technique was useful.) Although it did not provide a way to address subpixels individually, it did allow positioning of pixels at fractional pixel locations, and can thus be considered a form of subpixel rendering. However, this technique is not related to LCD subpixel rendering as described in this article.

IBM

IBM's U.S. Patent #5341153 — Filed: 1988-06-13, "Method of and apparatus for displaying a multicolor image" may cover some of these techniques.

ClearType

Microsoft announced its subpixel rendering technology, called ClearType, at COMDEX in 1998.[8] Microsoft published a paper in May 2000, Displaced Filtering for Patterned Displays, describing the filtering behind ClearType.[9] It was then made available in Windows XP, but it was not activated by default until Windows Vista. (Windows XP OEMs, however, could and did change the default setting.)[10]

FreeType

FreeType, the library used by most current software on the X Window System, contains two open source implementations. The original implementation uses the ClearType antialiasing filters and carries the following notice: "The colour filtering algorithm of Microsoft's ClearType technology for subpixel rendering is covered by patents; for this reason the corresponding code in FreeType is disabled by default. Note that subpixel rendering per se is prior art; using a different colour filter thus easily circumvents Microsoft's patent claims."[4][3]

FreeType offers a variety of color filters. Since version 2.6.2, the default filter is light, a filter that is both normalized (value sums up to 1) and color-balanced (eliminate color fringes at the cost of resolution).[11]

Since version 2.8.1, a second implementation exists, called Harmony, that "offers high quality LCD-optimized output without resorting to ClearType techniques of resolution tripling and filtering". This is the method enabled by default. When using this method, "each color channel is generated separately after shifting the glyph outline, capitalizing on the fact that the color grids on LCD panels are shifted by a third of a pixel. This output is indistinguishable from ClearType with a light 3-tap filter."[12] Since the Harmony method does not require additional filtering, it is not covered by the ClearType patents.

SubLCD

SubLCD is another open-source subpixel rendering method that claims to not infringe existing patents, and promises to remain unpatented.[13] It uses a "2-pixel" subpixel rendering,[14] where G is one subpixel, and the R and B of two adjacent pixels are combined into a "purple subpixel", to avoid the Microsoft patent. This also has the claimed advantage of a more equal perceived brightness of the two subpixels, somewhat easier power-of-2 math, and a sharper filter. However it only produces two-thirds of the resulting resolution.

David Turner was however skeptical of SubLCD's author's claims: "Unfortunately, I, as the FreeType author, do not share his enthusiasm. The reason is precisely the very vague patent claims [by Microsoft] described previously. To me, there is a non-negligible (even if small) chance, that these claims also cover the SubLCD technique. The situation would probably be different if we could invalidate the broader patent claims, but this is not the case currently."[3]

CoolType

Adobe created their own subpixel renderer called CoolType, allowing them to display documents the same way across various operating systems: Windows, MacOS, Linux etc. When it was launched around the year 2001, CoolType supported a wider range of fonts than Microsoft's ClearType, which at the time was limited to TrueType fonts, whereas Adobe's CoolType also supported PostScript fonts (and their OpenType equivalent as well).[15]

OS X

Mac OS X used to use subpixel rendering as well, as part of Quartz 2D. However, it was removed after the introduction of Retina displays. Unlike Microsoft's implementation, which favors a tight fit to the grid (font hinting) to maximize legibility, Apple's implementation prioritizes the shape of the glyphs as set out by their designer.[16]

See also

References

  1. ^ "A Treatise on Font Rasterisation With an Emphasis on Free Software". 2010-09-15. Retrieved 2023-11-11.
  2. ^ John Markoff, "Microsoft's Cleartype Sets Off Debate on Originality Archived 2017-04-21 at the Wayback Machine", New York Times, December 7, 1998
  3. ^ a b c David Turner (June 1, 2007). "ClearType Patents, FreeType and the Unix Desktop: an explanation". Archived from the original on 2009-03-31. Retrieved April 9, 2009.
  4. ^ a b "FreeType and Patents". FreeType.org. February 13, 2018. Archived from the original on 2018-11-10. Retrieved November 29, 2018.
  5. ^ "LCD Rendering Patches". September 24, 2006. Archived from the original on 2011-06-03. Retrieved April 9, 2009.
  6. ^ "GRC - The Origins of Sub-Pixel Font Rendering". grc.com. Archived from the original on 2006-03-06. Retrieved 2006-03-02.
  7. ^ David Turner (24 Sep 20:00 2006) LCD Rendering Patches Archived 2007-02-08 at the Wayback Machine (was Re: [ft] Regression in rendering quality with subpixel antialiasing)
  8. ^ ICT Bill Gates 1998 keynote comdex 1998, archived from the original on 2021-11-30, retrieved 2021-11-30
  9. ^ Platt, John; Keely, Bert; Hill, Bill; Dresevic, Bodin; Betrisey, Claude; Mitchell, Don P.; Hitchcock, Greg; Blinn, Jim; Whitted, Turner (2000-05-01). "Displaced Filtering for Patterned Displays": 296–299. Archived from the original on 2021-11-30. Retrieved 2021-11-30. {{cite journal}}: Cite journal requires |journal= (help)
  10. ^ Greg Hitchcock (with introduction by Steven Sinofsky) "Engineering Changes to ClearType in Windows 7 Archived 2012-12-18 at the Wayback Machine", MSDN blogs, June 23, 2009
  11. ^ "On slight hinting, proper text rendering, stem darkening and LCD filters". freetype.org. Archived from the original on 2020-11-12. Retrieved 2020-11-14.
  12. ^ Lemberg, Werner (2017-09-16). "Announcing FreeType 2.8.1". Archived from the original on 2019-11-16. Retrieved 2019-04-30.
  13. ^ "SubLCD". www.oyhus.no. Archived from the original on 2006-11-09. Retrieved 2006-08-30.
  14. ^ "SubLCD". Archived from the original on 2006-11-09. Retrieved 2006-08-30.
  15. ^ Felici, James (April 2000) "ClearType, CoolType: The Eyes Have It", Seybold Report on Internet Publishing, Vol. 4 Issue 8
  16. ^ "The Ails Of Typographic Anti-Aliasing". November 2, 2009. Archived from the original on 2014-08-09. Retrieved 2014-08-11.