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

Optimalizace webových fontů

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Optimalizace webových fontů

Avatar for Aleš Roubíček

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