Details
-
Task
-
Resolution: Unresolved
-
P2: Important
-
None
-
6.0
-
None
Description
There are currently four competing color font formats on the market.
1. Google's CBDT/CBLC, which is basically embedded PNGs rendered at different sizes and typically downscaled to the target font size. This is an extension of EBDT/EBLC tables for monochromatic bitmap fonts.
2. Microsoft's COLR/CPAL, where each glyph has multiple layers of normal single-colored vector shapes, expressed using curves, like with ordinary vector fonts. Each layer has a specific color, and the font is scalable to any size.
3. Apple's SBIX table, which is similar to CBDT/CBLC but also allows embedding JPEG or TIFF.
4. Mozilla/Adobe's SVG-on-OpenType, which is based on a subset of SVG features.
Support in Qt is dependent on support in the underlying font system.
Initial assumptions:
A. Freetype has supported CBDT/CBLC since 2.5. It also has support for SBIX, but it is uncertain if this only extends to embedded PNG or if it also decodes JPEG or TIFF. Since 2.10 it also has support for COLR/CPAL, but I am unsure if this comes out of the box with the normal rendering calls or if we have to use the new functions to manually composite the glyphs. I can't find any documentation that SVG-on-OT is supposed to be supported.
B. Windows DirectWrite initially (Windows 8.1) only had support for COLR/CPAL. In Windows 10 Anniversary update (1607) they added support for all remaining formats. We may need to do some tweaking in Qt for this support to be enabled, as the APIs we currently use are very much special-made for COLR format fonts. This is something to check, at least we should be able to support others.
C. CoreText should support all formats, since macOS 10.14 / iOS 12, hopefully out of the box.
The task is to test/verify, and document which formats are supported. If support is missing on a backend that could support the format, make new tasks to fill in the gaps.