variable fonts in chrome
play

Variable Fonts in Chrome Webengines Hackfest, Igalia, A Corua - PowerPoint PPT Presentation

Variable Fonts in Chrome Webengines Hackfest, Igalia, A Corua Behdad Esfahbod behdad@google.com Dominik Rttsches drott@google.com Demos Responsive Web Typography Font Playground Underwares HOI Variable Fonts in CSS


  1. Variable Fonts in Chrome Webengines Hackfest, Igalia, A Coruña Behdad Esfahbod behdad@google.com Dominik Röttsches drott@google.com

  2. Demos ● Responsive Web Typography ● Font Playground ● Underware’s HOI

  3. Variable Fonts in CSS Level 4 Fonts

  4. font-weight , font-stretch , font-style before

  5. font-weight , font-stretch , font-style variable

  6. Ranges in @font-face @font-face { font-family: Roboto; font-weight: 700; /* or: 400, 600, 900,... */ font-style: normal; /* or: italic, oblique */ font-stretch: condensed; /* or: expanded, ultra-expanded */ }

  7. Ranges in @font-face @font-face { font-family: Roboto; font-weight: 400 700; font-style: 10deg 20deg; font-stretch: 50% 200%; }

  8. New Font Style Matching Algorithm ● https://drafts.csswg.org/css-fonts-4/#font-style-matching ● Previously, for a font request: ○ Match font-stretch , font-style , font-weight by traversing keyword values, find closest keyword ● New definition: Search for numerically nearest value ○ As defined by @font-face and ○ Within the range that the variable font allows

  9. font-optical-sizing

  10. font-variation-settings ● Similar to font-feature-settings ● Sequence of 4 character axis name plus font-variation-settings: ‘wght’ 700, ‘UPWD’ 200;

  11. Variable Fonts in Blink

  12. New CSS Font Matching Algorithm ● Implements font-stretch , font-style , font-weight matching based on numbers, not based on keywords FontTraits replaced with FontSelectionRequest ● ○ Now storing three FontSelectionValues (numerical values for stretch, style weight) ● FontSelectionCapabilities are storing what the @font-face definition provides

  13. Example: Font Style Matching - Before @font-face { @font-face { @font-face { Font-family: Roboto; Font-family: Roboto; Font-family: Roboto; Src: url(Roboto-light.otf); Src: url(Roboto-regular.otf); Src: url(Roboto-bold.otf); Font-weight: 200; Font-weight: 400; Font-weight: 700; } } } ? <div style=”font-weight: 600;”> Bold text </div>

  14. Example: Font Style Matching - New @font-face { @font-face { Font-family: Roboto; Font-family: Roboto; Src: url(Roboto-lighter.otf); Src: url(Roboto-bolder.otf); Font-weight: 100 300; Font-weight: 500 700; } } ] ] [ [ ? <div style=”font-weight: 600;”> Bold text </div>

  15. Rasterizing Variable Fonts ● Rasterization of variable fonts is controlled by axis parameters ● Passing variation axes parameters to Skia SkFontMgr::FontParameters::Axis weight_axis = { SkSetFourByteTag('w', 'g', 'h', 't'), SkFloatToScalar(selection_capabilities.weight.clampToRange( selection_request.weight))};

  16. The Cross-platform Challenge ● Skia uses platform specific font rasterization engines ● Only FreeType, CoreText on Mac 10.12 support, newer Windows 10 support rasterizing ?

  17. OS ChromeOS Linux Android Windows Mac OS Font Rasterizing FreeType FreeType FreeType DirectWrite CoreText for existing fonts CoreText Variable FreeType FreeType FreeType FreeType Fonts FreeType

  18. Font-format specific web font instantiation ● Is this web font variable? = Does it have an fvar table? ○ If yes, do we have platform support? ■ If yes, use the platform rasterizer If not, use built-in FreeType! ■ ○ If it is not variable, keep using the existing platform rasterizer

  19. Windows Chrome Binary Size Without Variations With Variations (+ 0.08%)

  20. Shipping FreeType on all platforms ● FreeType harmonized and unified between PDFium and Blink ● third_party/freetype2 and third_party/freetype-android unified ● 3 different checkouts for building Chrome reduced to one

  21. https://blog.chromium.org/2017/09/chrome-62-beta-network-quality.html

  22. New applications of Hybrid Font Stack

  23. CFF2 ● Adobe CFF2 format, alternative to TrueType contours format ● Adobe Variable Font Prototype exists as CFF2 version

  24. CBDT / CBLC ● Color font format ● Noto Color Emoji

  25. SBIX ● Color font format ● Apple Color Emoji

  26. COLR/CPAL ● Color Font Format ● Twemoji, COLR/CPAL example font, Mozilla’s default emoji font

  27. Summary ● Hybrid Font Stack without increasing binary size ● Cross Platform Support ● Reaping the benefits: Additional format support for color and CFF2 fonts

  28. Chromacheck ● https://pixelambacht.nl/chromacheck/

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend