{"id":861,"date":"2009-10-10T14:14:17","date_gmt":"2009-10-10T19:14:17","guid":{"rendered":"http:\/\/www.phpied.com\/?p=861"},"modified":"2009-10-20T01:29:21","modified_gmt":"2009-10-20T06:29:21","slug":"gzip-your-font-face-files","status":"publish","type":"post","link":"https:\/\/www.phpied.com\/gzip-your-font-face-files\/","title":{"rendered":"Gzip your @font-face files"},"content":{"rendered":"<p>Adding custom fancy fonts to a web page seems to be all the rage these days. Looking at some examples with Net panel on, I saw some of those font files are 100K which is a pretty big price to pay for an ornament like this. I mean you can build <a href=\"http:\/\/search.yahoo.com\/search?p=start+wearing+purple\">whole pages<\/a>, with fancy scripts, images, gradients and all, that are less than that size.<\/p>\n<p>Made me wonder about the sizes of those font files and in particular is there an easy gzipping win. Turns out yes - you can and should gzip the custom font files you use with <code>@font-face<\/code>.<\/p>\n<p><strong>UPDATE Oct 19, 09<\/strong>: Gzip all font files except those in WOFF format, <a href=\"https:\/\/www.phpied.com\/font-face-gzipping-take-ii\/\">more info...<\/a> <\/p>\n<h3>Quick background<\/h3>\n<p>In order to include a custom font on a page you can use <a href=\"http:\/\/paulirish.com\/2009\/bulletproof-font-face-implementation-syntax\/\">Paul Irish's bulletproof way<\/a>, something like:<\/p>\n<div class=\"hl-main\">\n<pre><span class=\"hl-var\">@font<\/span><span class=\"hl-code\">-<\/span><span class=\"hl-identifier\">face<\/span><span class=\"hl-code\"> <\/span><span class=\"hl-brackets\">{<\/span><span class=\"hl-code\">\r\n  <\/span><span class=\"hl-reserved\">font-family:<\/span><span class=\"hl-code\"> '<\/span><span class=\"hl-code\">gzipper<\/span><span class=\"hl-code\">'<\/span><span class=\"hl-reserved\"><\/span><span class=\"hl-code\">;\r\n  <\/span><span class=\"hl-reserved\">src:<\/span><span class=\"hl-code\"> <\/span><span class=\"hl-code\">url<\/span><span class=\"hl-code\">(<\/span><span class=\"hl-code\">yanone<\/span><span class=\"hl-code\">.<\/span><span class=\"hl-code\">eot<\/span><span class=\"hl-code\">)<\/span><span class=\"hl-reserved\"><\/span><span class=\"hl-code\">;\r\n  <\/span><span class=\"hl-reserved\">src:<\/span><span class=\"hl-code\"> <\/span><span class=\"hl-code\">local<\/span><span class=\"hl-code\">('<\/span><span class=\"hl-code\">gzipper<\/span><span class=\"hl-code\">'), \r\n         <\/span><span class=\"hl-code\">url<\/span><span class=\"hl-code\">(<\/span><span class=\"hl-code\">yanone<\/span><span class=\"hl-code\">.<\/span><span class=\"hl-code\">ttf<\/span><span class=\"hl-code\">) <\/span><span class=\"hl-code\">format<\/span><span class=\"hl-code\">('<\/span><span class=\"hl-code\">truetype<\/span><span class=\"hl-code\">')<\/span><span class=\"hl-reserved\"><\/span><span class=\"hl-code\">;\r\n<\/span><span class=\"hl-brackets\">}<\/span><span class=\"hl-code\">\r\n    \r\n<\/span><span class=\"hl-identifier\">body<\/span><span class=\"hl-code\"> <\/span><span class=\"hl-brackets\">{<\/span><span class=\"hl-code\">\r\n    <\/span><span class=\"hl-reserved\">font-family:<\/span><span class=\"hl-code\"> <\/span><span class=\"hl-code\">gzipper<\/span><span class=\"hl-reserved\"><\/span><span class=\"hl-code\">;\r\n<\/span><span class=\"hl-brackets\">}<\/span><\/pre>\n<\/div>\n<h4>What's going on here?<\/h4>\n<ol>\n<li>You give your custom font a name, like \"gzipper\"<\/li>\n<li>This line is for IE - <code>src: url(yanone.eot);<\/code>. It asks for an <strong>.eot<\/strong> font file<\/li>\n<li>This line is for pretty much every other browser <code>url(yanone.ttf) format('truetype')<\/code>. It needs a <strong>.ttf<\/strong> font file<\/li>\n<li>That last line has variations, you can use an <strong>.otf<\/strong> file instead of .ttf, interchangeably, like so <code>url(yanone.otf) format('opentype')<\/code><\/li>\n<li>SVG font file (for Chrome) is also an option instead of, or in addition to, ttf, like: <code>url(yanone.svg) format('svg')<\/code><\/li>\n<\/ol>\n<p>So that leaves us with 4 different types of files:<\/p>\n<ul>\n<li>svg<\/li>\n<li>ttf<\/li>\n<li>otf<\/li>\n<li>eot<\/li>\n<\/ul>\n<p>How about gzipping these? <\/p>\n<h3>SVG<\/h3>\n<p>SVG is easy, it's an XML file. XML files are plain text files so they must always be gzipped. Potential savings? Anywhere around (and I'm pulling this off my hat) 30-70%.<\/p>\n<h3>TTF<\/h3>\n<p>Turns out TTF is also mostly a text file, and it can safely be served gzipped. I tested FF 3.5, Opera 10, Safari 4, works everywhere. <a href=\"https:\/\/www.phpied.com\/files\/fonts\/fonts.html\">The test page is here<\/a>.<\/p>\n<p>Grabbing some files to test from <a href=\"http:\/\/www.fontsquirrel.com\/fonts\/list\/mostdownloaded\">here<\/a> and one from <a href=\"http:\/\/opentype.info\/demo\/webfontdemo.html\">here<\/a> (and having my kid's tae-kwon-do lesson to sit through on this beautiful Santa Monica Saturday morning) I gzipped them and compared the results.<\/p>\n<p>On average - <strong>41.48% savings<\/strong>.<\/p>\n<style>td {text-align: right;border-bottom: 1px solid #93BB3A;} td.fontname {text-align: left;} th {padding: 5px;background:#C1E56D;}<\/style>\n<table>\n<tr>\n<th>font file<\/th>\n<th>plain size, bytes<\/th>\n<th>gzipped size, bytes<\/th>\n<th>savings, %<\/th>\n<\/tr>\n<tr>\n<td class=\"fontname\">AllerDisplay.ttf<\/td>\n<td>95,616<\/td>\n<td>47,771<\/td>\n<td>50.04%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Aller_Bd.ttf<\/td>\n<td>128,368<\/td>\n<td>59,884<\/td>\n<td>53.35%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Aller_BdIt.ttf<\/td>\n<td>123,556<\/td>\n<td>58,942<\/td>\n<td>52.30%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Aller_It.ttf<\/td>\n<td>120,876<\/td>\n<td>58,459<\/td>\n<td>51.64%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Aller_Lt.ttf<\/td>\n<td>132,780<\/td>\n<td>60,766<\/td>\n<td>54.24%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Aller_LtIt.ttf<\/td>\n<td>122,296<\/td>\n<td>57,342<\/td>\n<td>53.11%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Aller_Rg.ttf<\/td>\n<td>134,436<\/td>\n<td>63,379<\/td>\n<td>52.86%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">FFF_Tusj.ttf<\/td>\n<td>1,543,648<\/td>\n<td>1,008,083<\/td>\n<td>34.69%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">MarketingScript.ttf<\/td>\n<td>55,160<\/td>\n<td>25,026<\/td>\n<td>54.63%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Sansation_Bold.ttf<\/td>\n<td>19,644<\/td>\n<td>10,467<\/td>\n<td>46.72%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Sansation_Light.ttf<\/td>\n<td>19,568<\/td>\n<td>10,425<\/td>\n<td>46.72%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Sansation_Regular.ttf<\/td>\n<td>19,480<\/td>\n<td>10,172<\/td>\n<td>47.78%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Ubuntu-Title.ttf<\/td>\n<td>15,108<\/td>\n<td>7,473<\/td>\n<td>50.54%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">UglyQua-Italic.ttf<\/td>\n<td>184,300<\/td>\n<td>103,863<\/td>\n<td>43.64%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">UglyQua.ttf<\/td>\n<td>120,424<\/td>\n<td>59,502<\/td>\n<td>50.59%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Vera-Bold-Italic.ttf<\/td>\n<td>63,208<\/td>\n<td>38,398<\/td>\n<td>39.25%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Vera-Bold.ttf<\/td>\n<td>58,716<\/td>\n<td>36,644<\/td>\n<td>37.59%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Vera-Italic.ttf<\/td>\n<td>63,684<\/td>\n<td>38,629<\/td>\n<td>39.34%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Vera.ttf<\/td>\n<td>65,932<\/td>\n<td>40,173<\/td>\n<td>39.07%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">YanoneTagesschrift.ttf<\/td>\n<td>105,016<\/td>\n<td>59,732<\/td>\n<td>43.12%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">daniel.ttf<\/td>\n<td>51,984<\/td>\n<td>35,250<\/td>\n<td>32.19%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">danielbd.ttf<\/td>\n<td>63,688<\/td>\n<td>40,701<\/td>\n<td>36.09%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">danielbk.ttf<\/td>\n<td>88,760<\/td>\n<td>56,697<\/td>\n<td>36.12%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">journal.ttf<\/td>\n<td>130,956<\/td>\n<td>76,506<\/td>\n<td>41.58%<\/td>\n<\/tr>\n<\/table>\n<p>I couldn't help but notice huge differences between different font files, even in this small sample. Sansation_Regular.ttf is 10K while FFF_Tusj.ttf is 1 Meg! So keep in mind to check the size of the font you're about to use, there might be smaller and similar fonts.<\/p>\n<h3>OTF<\/h3>\n<p>Same thing, testing with some files found <a href=\"http:\/\/opentype.info\/demo\/webfontdemo.html\">here<\/a>, the results are <strong>45.40% savings<\/strong> on average when gzipping the .otf font files.<\/p>\n<table>\n<tr>\n<th>font file<\/th>\n<th>plain size, bytes<\/th>\n<th>gzipped size, bytes<\/th>\n<th>savings, %<\/th>\n<\/tr>\n<tr>\n<td class=\"fontname\">Diavlo_BLACK_II_37.otf<\/td>\n<td>33,964<\/td>\n<td>25,477<\/td>\n<td>24.99%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Diavlo_LIGHT_II_37.otf<\/td>\n<td>33,404<\/td>\n<td>25,157<\/td>\n<td>24.69%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Fertigo_PRO.otf<\/td>\n<td>52,636<\/td>\n<td>35,498<\/td>\n<td>32.56%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Fontin-Bold.otf<\/td>\n<td>30,460<\/td>\n<td>16,285<\/td>\n<td>46.54%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Fontin-Italic.otf<\/td>\n<td>30,636<\/td>\n<td>16,447<\/td>\n<td>46.31%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Fontin-Regular.otf<\/td>\n<td>30,396<\/td>\n<td>15,870<\/td>\n<td>47.79%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Fontin-SmallCaps.otf<\/td>\n<td>29,308<\/td>\n<td>15,419<\/td>\n<td>47.39%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Fontin_Sans_B_45b.otf<\/td>\n<td>24,984<\/td>\n<td>17,576<\/td>\n<td>29.65%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Fontin_Sans_I_45b.otf<\/td>\n<td>24,772<\/td>\n<td>17,730<\/td>\n<td>28.43%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Fontin_Sans_R_45b.otf<\/td>\n<td>25,564<\/td>\n<td>18,018<\/td>\n<td>29.52%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Fontin_Sans_SC_45b.otf<\/td>\n<td>27,384<\/td>\n<td>18,200<\/td>\n<td>33.54%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">GraublauWeb.otf<\/td>\n<td>41,464<\/td>\n<td>31,528<\/td>\n<td>23.96%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">GraublauWebBold.otf<\/td>\n<td>44,040<\/td>\n<td>31,999<\/td>\n<td>27.34%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Tallys_15.otf<\/td>\n<td>19,996<\/td>\n<td>16,404<\/td>\n<td>17.96%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">YanoneKaffeesatz-Bold.otf<\/td>\n<td>55,568<\/td>\n<td>21,904<\/td>\n<td>60.58%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">YanoneKaffeesatz-Light.otf<\/td>\n<td>58,328<\/td>\n<td>24,655<\/td>\n<td>57.73%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">YanoneKaffeesatz-Regular.otf<\/td>\n<td>58,528<\/td>\n<td>24,681<\/td>\n<td>57.83%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">YanoneKaffeesatz-Thin.otf<\/td>\n<td>58,292<\/td>\n<td>24,324<\/td>\n<td>58.27%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">pykes_peak_zero.otf<\/td>\n<td>122,832<\/td>\n<td>32,259<\/td>\n<td>73.74%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">vollkorn.otf<\/td>\n<td>30,065<\/td>\n<td>25,173<\/td>\n<td>16.27%<\/td>\n<\/tr>\n<\/table>\n<h3>EOT<\/h3>\n<p>The case with <strong>.eot<\/strong> is a little more interesting (like anything to do with IE, right?). Apparently MS provides <a href=\"http:\/\/www.microsoft.com\/typography\/WEFT.mspx\">software, called WEFT<\/a> to create those files, but looks like people <a href=\"http:\/\/snook.ca\/archives\/html_and_css\/becoming-a-font-embedding-master\">have hard time<\/a> making it work. <\/p>\n<p>The good thing about this tool is that it can create compressed <strong>.eot<\/strong> files which is excellent. You can see some examples linked to from <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms533034(VS.85).aspx\">this MSDN article<\/a>. Some of those EOTs in the examples are as small as 4K which is totally acceptable. So it's worth the time to figure it out because it can save quite a bit.<\/p>\n<p>The other option to create EOTs is to use the free open source tool <a href=\"http:\/\/code.google.com\/p\/ttf2eot\/\">ttf2eot<\/a> and convert TTFs to EOTs. The tool doesn't create compressed files, so generally the size of the EOT is about the size of the input TTF. In this case you must gzip the .eot before you send it to the browser.<\/p>\n<p>So I took my test TTFs, converted to EOT and checked the gzip savings. On average - <strong>41.49% savings<\/strong> when gzipping the uncompressed .eot<\/p>\n<table>\n<tr>\n<th>font file<\/th>\n<th>plain size, bytes<\/th>\n<th>gzipped size, bytes<\/th>\n<th>savings, %<\/th>\n<\/tr>\n<tr>\n<td class=\"fontname\">AllerDisplay.eot<\/td>\n<td>95,806<\/td>\n<td>47,867<\/td>\n<td>50.04%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Aller_Bd.eot<\/td>\n<td>128,530<\/td>\n<td>60,201<\/td>\n<td>53.16%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Aller_BdIt.eot<\/td>\n<td>123,746<\/td>\n<td>59,034<\/td>\n<td>52.29%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Aller_It.eot<\/td>\n<td>121,046<\/td>\n<td>58,554<\/td>\n<td>51.63%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Aller_Lt.eot<\/td>\n<td>132,962<\/td>\n<td>60,863<\/td>\n<td>54.23%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Aller_LtIt.eot<\/td>\n<td>122,490<\/td>\n<td>57,437<\/td>\n<td>53.11%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Aller_Rg.eot<\/td>\n<td>134,594<\/td>\n<td>63,480<\/td>\n<td>52.84%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">FFF_Tusj.eot<\/td>\n<td>1,543,820<\/td>\n<td>1,008,160<\/td>\n<td>34.70%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">MarketingScript.eot<\/td>\n<td>55,352<\/td>\n<td>25,105<\/td>\n<td>54.64%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Sansation_Bold.eot<\/td>\n<td>19,820<\/td>\n<td>10,531<\/td>\n<td>46.87%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Sansation_Light.eot<\/td>\n<td>19,748<\/td>\n<td>10,489<\/td>\n<td>46.89%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Sansation_Regular.eot<\/td>\n<td>19,668<\/td>\n<td>10,230<\/td>\n<td>47.99%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Ubuntu-Title.eot<\/td>\n<td>15,298<\/td>\n<td>7,533<\/td>\n<td>50.76%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">UglyQua-Italic.eot<\/td>\n<td>184,482<\/td>\n<td>103,965<\/td>\n<td>43.64%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">UglyQua.eot<\/td>\n<td>120,594<\/td>\n<td>59,598<\/td>\n<td>50.58%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Vera-Bold-Italic.eot<\/td>\n<td>63,458<\/td>\n<td>38,467<\/td>\n<td>39.38%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Vera-Bold.eot<\/td>\n<td>58,934<\/td>\n<td>36,712<\/td>\n<td>37.71%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Vera-Italic.eot<\/td>\n<td>63,914<\/td>\n<td>38,696<\/td>\n<td>39.46%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">Vera.eot<\/td>\n<td>66,142<\/td>\n<td>40,249<\/td>\n<td>39.15%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">YanoneTagesschrift.eot<\/td>\n<td>105,274<\/td>\n<td>59,875<\/td>\n<td>43.12%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">daniel.eot<\/td>\n<td>52,184<\/td>\n<td>35,358<\/td>\n<td>32.24%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">danielbd.eot<\/td>\n<td>63,892<\/td>\n<td>40,815<\/td>\n<td>36.12%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">danielbk.eot<\/td>\n<td>88,984<\/td>\n<td>56,816<\/td>\n<td>36.15%<\/td>\n<\/tr>\n<tr>\n<td class=\"fontname\">journal.eot<\/td>\n<td>131,180<\/td>\n<td>76,536<\/td>\n<td>41.66%<\/td>\n<\/tr>\n<\/table>\n<p>I tried my <a href=\"https:\/\/www.phpied.com\/files\/fonts\/fonts.html\">test page<\/a> in IE6 and it worked with the gzipping, so I'm assuming IE7,8 are fine too.<\/p>\n<h3>Summary<\/h3>\n<ul>\n<li>Always send your font files gzipped, average 40% to be won, but could be 70% you never know<\/li>\n<li>Dig into WEFT to make sure you create small, compressed EOTs<\/li>\n<li>Keep an eye on the font file sizes you're about to use, they can be huge. When you have a choice, opt in for the 10K font file and not the 1.5 megs one<\/li>\n<\/ul>\n<h3>links<\/h3>\n<ul>\n<li><a href=\"https:\/\/www.phpied.com\/files\/fonts\/fonts.html\">My gzipped fonts test page<\/a><\/li>\n<li><a href=\"http:\/\/articles.sitepoint.com\/article\/web-site-optimization-steps\/2\">Configure gzip in hosting environments with variable degree of hostility<\/a><\/li>\n<li><a href=\" http:\/\/paulirish.com\/2009\/fighting-the-font-face-fout\/\">Paul Irish on \"FOUT\" and more on loading font files<\/a><\/li>\n<li><a href=\"http:\/\/paulirish.com\/2009\/bulletproof-font-face-implementation-syntax\/\">Paul Irish - bulletproof font face declaration<\/a><\/li>\n<li><a href=\"http:\/\/snook.ca\/archives\/html_and_css\/becoming-a-font-embedding-master\">Snook's font mastery post<\/a><\/li>\n<li><a href=\"http:\/\/code.google.com\/p\/ttf2eot\/\">TTF-to-EOT converter<\/a><\/li>\n<li><a href=\"http:\/\/www.microsoft.com\/typography\/WEFT.mspx\">WEFT tool for EOTs<\/a><\/li>\n<li><a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms533034(VS.85).aspx\">MSDN examples<\/a><\/li>\n<li><a href=\"http:\/\/www.fontsquirrel.com\/\">Free fonts - awesome<\/a><\/li>\n<li><a href=\"http:\/\/opentype.info\/demo\/webfontdemo.html\">10 free fonts<\/a><\/li>\n<li><a href=\"http:\/\/openfontlibrary.org\/\">Free fonts<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Adding custom fancy fonts to a web page seems to be all the rage these days. Looking at some examples with Net panel on, I saw some of those font files are 100K which is a pretty big price to pay for an ornament like this. I mean you can build whole pages, with fancy [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[9,262,43],"tags":[370,263,397,264,382],"_links":{"self":[{"href":"https:\/\/www.phpied.com\/wp-json\/wp\/v2\/posts\/861"}],"collection":[{"href":"https:\/\/www.phpied.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.phpied.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.phpied.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.phpied.com\/wp-json\/wp\/v2\/comments?post=861"}],"version-history":[{"count":0,"href":"https:\/\/www.phpied.com\/wp-json\/wp\/v2\/posts\/861\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.phpied.com\/wp-json\/wp\/v2\/media?parent=861"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.phpied.com\/wp-json\/wp\/v2\/categories?post=861"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.phpied.com\/wp-json\/wp\/v2\/tags?post=861"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}