The following changes are made in this commit:
**(1)** Add the WOFF2 variant of web fonts. [WOFF2 standard](https://w3c.github.io/woff/woff2/) reduces the file sizes significantly. This is important to make our website more accessible to folks with limited Internet connections.
96% of browsers support WOFF2 ([source](https://caniuse.com/?search=woff2)) and we still have WOFF and TTF/OTF/EOT formats for those edge-cases which don't support it.
Real examples of the file size reductions for php.net:
```
Fira Sans Regular: 183 KB (woff) -> 129 KB (woff2) --> 30% reduction in size
Fira Mono Regular: 87 KB (woff) -> 65 KB (woff2) --> 35% reduction in size
```
**(2)** Use `font-display: swap` for web fonts (see [MDN Docs for font-display](https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display))
This is recommended to not block the rendering the page for a long time if the web font is not available. Again, this is important for folks with suboptimal network connections.
The `swap` value is also the default option in popular font services like [Google Fonts](https://fonts.google.com/).
**(3)** Update the list of alternative font families.
I updated the sans-serif and mono font stack used in the design. The new stacks are much longer (not a problem in practice thanks to CSS variables) but they cover all common browsing devices (including smartphones). I crafted the list from the recommended font stacks of the most popular CSS frameworks and the most popular websites for developers.
This patch adds some missing newlines, trims some multiple redundant
final newlines into a single one, and trims few redundant leading
newlines.
According to POSIX, a line is a sequence of zero or more non-'<newline>'
characters plus a terminating '<newline>' character. [1] Files should
normally have at least one final newline character.
C89 [2] and later standards [3] mention a final newline:
"A source file that is not empty shall end in a new-line character,
which shall not be immediately preceded by a backslash character."
Although it is not mandatory for all files to have a final newline
fixed, a more consistent and homogeneous approach brings less of commit
differences issues and a better development experience in certain text
editors and IDEs.
[1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206
[2] https://port70.net/~nsz/c/c89/c89-draft.html#2.1.1.2
[3] https://port70.net/~nsz/c/c99/n1256.html#5.1.1.2
Remove Fira Sans SemiBold from fira.css, since after these corrections
it is no longer in use. This is one less thing to download, and saves
80KB over the wire.
This trims out 5.0KB uncompressed and about 0.5KB when compressed.
If the removed font (700 weight) is actually used somewhere then the
savings are larger, but quality will suffer. The 600 weight font should
be used instead if anyone finds a 700 weight Fira Sans.
I've deliberately implemented this in such a way as to allow for further social
media buttons down the track if we want. I've also kept it intentionally
unobtrusive: it's there (previously, we only mentioned the Twitter account on
the mailing lists page, which was weird), but pretty subtle in the sidebar.
There's one additional dependency: a one glyph subset of Font Awesome (created
using Fontello) containing the Twitter icon. (Should we later want to include
other icons from Font Awesome, fonts/Font-Awesome/config.json can be fed back
into Fontello as a starting point.) The additional style sheet and font file
are cached correctly, and once loaded by the user, shouldn't need to be loaded
again, as with Fira Sans. On a cold page load, this adds two requests and just
under 3 kB to the page load.
I consider all of this reasonable, both technically and in terms of promoting
@official_php a little more, but I won't be terribly offended if someone wants
to revert this.