Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Optimalizace webových fontů

Optimalizace webových fontů

Aleš Roubíček

March 21, 2024
Tweet

More Decks by Aleš Roubíček

Other Decks in Technology

Transcript

  1. /ˈhækə(r)/ a person who uses or writes computer programs with

    enthusiasm and skill /ˈstjuːdiəʊ/ a room where an artist works
  2. Kdo jsem • Weby dělám 25 let • Bloguju 20

    let • Zkušenosti z Atlas.cz, startupů i korporátů • Web Performance se věnuji dlouho a soustavně • https://www.rarous.net/weblog/2008/06/05/zvyste- vykon-vaseho-webu • https://youtu.be/Ue-VygGkn-A
  3. sIFR if(typeof sIFR == "function"){ // This is the preferred

    "named argument" syntax sIFR.replaceElement(named({sSelector:"body h1", sFlashSrc:"vandenkeere.swf", sColor:"#000000", sLinkColor:"#000000", sBgColor:"#FFFFFF", sHoverColor:"#CCCCCC", nPaddingTop:20, nPaddingBottom:20 sFlashVars:"textalign=center&offsetTop=6"})); // This is the older, ordered syntax sIFR.replaceElement("h5#pullquote", "vandenkeere.swf", "#000000", "#000000", "#FFFFFF", "#FFFFFF", 0, 0, 0, 0); sIFR.replaceElement("h2", "tradegothic.swf", "#000000", null, null, null, 0, 0, 0, 0); sIFR.replaceElement("h4.subhead", "tradegothic.swf", "#660000", null, null, null, 0, 0, 0, 0); sIFR.replaceElement("h3.sidebox","tradegothic.swf","#000000", "#000000", "#DCDCDC", "#DCDCDC", 0, 0, 0, null); sIFR.replaceElement("h3", "tradegothic.swf", "#000000", null, null, null, 0, 0, 0, 0, null); };
  4. Webové fonty • Řeší problém distribuce • Optimalizace velikosti •

    Komprese (gzip - woff, brotli - woff2) • Subsetting
  5. Webové fonty @font-face { font-family: "IBM Plex Sans Var"; font-style:

    italic; font-display: swap; src: local("IBM Plex Sans Var Italic"), local("IBMPlexSansVar-Italic"), url("/assets/css/IBMPlexSansVar-Italic-Latin1-5cb3a21093.woff2") format("woff2"); unicode-range: U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2 014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044 ,U+20AC,U+2122,U+2212,U+FB01-FB02 }
  6. Webové fonty @font-face { font-family: "IBM Plex Sans Var"; font-style:

    italic; font-display: swap; src: local("IBM Plex Sans Var Italic"), local("IBMPlexSansVar-Italic"), url("/assets/css/IBMPlexSansVar-Italic-Latin1-5cb3a21093.woff2") format("woff2"); unicode-range: U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2 014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044 ,U+20AC,U+2122,U+2212,U+FB01-FB02 }
  7. Webové fonty @font-face { font-family: "IBM Plex Sans Var"; font-style:

    italic; font-display: swap; src: local("IBM Plex Sans Var Italic"), local("IBMPlexSansVar-Italic"), url("/assets/css/IBMPlexSansVar-Italic-Latin1-5cb3a21093.woff2") format("woff2"); unicode-range: U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2 014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044 ,U+20AC,U+2122,U+2212,U+FB01-FB02 }
  8. Webové fonty @font-face { font-family: "IBM Plex Sans Var"; font-style:

    italic; font-display: swap; src: local("IBM Plex Sans Var Italic"), local("IBMPlexSansVar-Italic"), url("/assets/css/IBMPlexSansVar-Italic-Latin1-5cb3a21093.woff2") format("woff2"); unicode-range: U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2 014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044 ,U+20AC,U+2122,U+2212,U+FB01-FB02 }
  9. Webové fonty @font-face { font-family: "IBM Plex Sans Var"; font-style:

    italic; font-display: swap; src: local("IBM Plex Sans Var Italic"), local("IBMPlexSansVar-Italic"), url("/assets/css/IBMPlexSansVar-Italic- Latin1-5cb3a21093.woff2") format("woff2"); unicode-range: U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2 014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044 ,U+20AC,U+2122,U+2212,U+FB01-FB02 }
  10. Webové fonty @font-face { font-family: "IBM Plex Sans Var"; font-style:

    italic; font-display: swap; src: local("IBM Plex Sans Var Italic"), local("IBMPlexSansVar-Italic"), url("/assets/css/IBMPlexSansVar-Italic-Latin1-5cb3a21093.woff2") format("woff2"); unicode-range: U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02 DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2 022,U+2026,U+2030,U+2039-203A,U+2044,U+20AC,U+2122,U+2 212,U+FB01-FB02 }
  11. Variabilní fonty • Řezy jsou řešeny pomocí vektorových os ✅

    • ➡ méně souborů • Často distribuované jako TTF v plném unicode ⛔ • https://v-fonts.com/
  12. Subsetting • Výběr sub-setu znaků z fontu • Možnost rozložit

    font do vrstev, které se načítají podle potřeby • Možnost vybrat si jen konkrétní znaky, třeba pro logo • https://www.rarous.net/weblog/2024/02/27/ optimalizace-fontu
  13. Tipy na závěr • Nepoužívejte custom fonty • Když je

    musíte používat používejte variable fonty • Hostujte si fonty sami (v CDN) a optimalizujte je