Title: CSS Fonts Module Level 4
Shortname: css-fonts
Level: 4
Status: ED
Work Status: Exploring
Group: CSSWG
ED: https://dev.w3.org/csswg/css-fonts-4/
Editor: John Daggett, Mozilla, jdaggett@mozilla.com
Abstract: This specification defines modifications to the existing CSS Fonts 3 specification along with additional experimental features.
Ignored Terms: font-palette, 

This document contains ideas and experiments that may or may not end up in the final version of a CSS Fonts specification. Implementors are encouraged to ask about the status of a particular feature listed here on the www-style mailing list.

Introduction

The CSS3 Fonts specification ([[!CSS-FONTS-3]]) describes the basic controls CSS provides for selecting and using fonts within documents. The ideas here are additions or modifications to the properties and rules defined in CSS3 Fonts.

Controlling font palette colors

Resolved at 2015 Sydney to add font-palette control. Original proposal. Details: multicolor fonts now exist. They expose several "palette indexes" that can be given different colors. They might also expose predefined palettes. We want to be able to tell the browser to use a predefined palette, or to provide our own colors for a palette. Final proposal is: 1. Add a 'font-palette' property. For now the grammar is just:
<> | light | dark | <#
with <> selecting the nth palette in the font, and ''light'' and ''dark'' selecting the first palette designated "light" or "dark" (this is metadata that's already part of the format). If there's any font fallback, the fallback fonts don't use a palette. 2. Add ''@palette-entries'' to ''@font-feature-values'', with the name of each declaration defining a name for a particular palette color, and the value being an integer for the index of that palette color. <> is <> <>. Any palette colors not given an explicit value default to value of 'color' (so by default it just renders solidly with 'color' value, as normal). If a palette color name occurs more than once, the last one wins (so you can declare a palette in a variable, and override bits as desired).

Expanding the scale of font-weight

Expand the range of weights possible within the font-weight property and font-weight descriptor to include integer values within the range [1..999]. Define precisely how the font matching algorithm works when using weights in this range.

Example of using new font weights mixed with old ones

Minimum and maximum font-size

Define new properties to control the minimum and maximum font-size, min-font-size and max-font-size.

New generic font families

For most languages and scripts, existing generics can be mapped to something comparable to that script. That's useful for the web so that generics like serif and sans-serif map to something reasonable independent of the language of the content. But typographic traditions vary widely across the world and many scripts have a variety of common typeface designs that don't map cleanly into these existing generics. In situations where a similar typeface is used across a wide variety of platforms, it's useful to extend the set of predefined CSS generic font families to cover these type styles.

Add new generic font families for:

New small-caps value for font-synthesis

Since small capitals are often synthesized for fonts lacking smalls-caps glyphs, add a small-caps value to the font-synthesis property to allow small-caps synthesis to be disabled. (www-style discussion)

Font fallback for emoji codepoints

Many codepoints supported by emoji fonts overlap with codepoints supported by existing fonts. In fallback situations where it's not clear whether to use an emoji font or not, UTR51 defines a the default behavior for a given codepoint.

Authors can explicitly control emoji or text display using selectors.

Example of author control over emoji/text styles

Acknowledgments