During the six hours wasted with Ubuntu today (13 would no longer upgrade, so I removed it and decided to start afresh with 14—big mistake, since it would not let me use the same hard drive), I had to open up my five-year-old Windows Vista laptop and upgrade my Firefox. After all, what were the odds that Mozilla would cock up its flagship browser on two OSs? After all, it’s fine on Mac OS X and Linux.
As it turns out, pretty high. Just as in Windows 7, Firefox for Windows Vista displays no text. And unlike Windows 7, which was solved by switching on hardware acceleration, Windows Vista proved a bit of a bugger to fix.
During the months where I was trouble-shooting, and after my last post, one of the more knowledgeable Mozilla volunteers admitted that there is a fault with the Cairo rendering engine in Firefox: ‘This means that (at least in your case) the issue is most likely specific to the cairo drawing backend. Good to know, thanks.’
It is still definitely related to the 2011 bug I filed where PostScript Type 1 fonts were incompatible with Firefox due to something breaking that time.
Firefox for Windows Vista’s bug, as far as I can make out, is down to Type 1 fonts being incompatible with the browser, even though they are compatible with nearly everything else on the OS. This is slightly different from the Windows 7 fault, as I still have PostScript Type 1 fonts on that computer, but Firefox simply ignores those when specified in a stylesheet in favour of what it can load under hardware acceleration (usually the default).
Despite my updating some of the system fonts that were particular to my Vista set-up to OpenType (which Firefox might have trouble with sometimes, too), that did not fix it. Firefox requires you to delete fonts off your system.
On some websites, including Facebook, Helvetica is specified before Arial in stylesheets. If your Helvetica (not Neue Helvetica) is PostScript Type 1—and it probably would be on a Windows machine—Firefox will detect it, and return blank spaces.
This is still a daft state of affairs with Cairo. Here’s how (to my very basic layman’s mind, and obviously to the minds of everyone at Adobe and a bunch of other places) how a program should deal with fonts:
* Is it installed on the system? Yes.
* Use it.
Firefox seems to adopt this approach:
* Is it installed on the system? Yes.
* Let’s ignore the ones our programmers dislike in favour of the ones our programmers like, which would only be certain TrueType fonts, and to heck with the people who have licensed other fonts and installed them in good faith. Let’s punish anyone who decided to carry over older software. Let’s also fail selected OpenType fonts such as the italics in Source Sans Pro for no apparent reason. [PS.: If the first font family is incompatible, let’s display nothing. On a stylesheet, if one does not work, we won’t load the second one, but we will try to load the system font even if that is incompatible, too.]
When it comes to stylesheets, neither OS makes much sense. Normally a program would go through each font specified, and display in the first one available. I don’t understand the rationale but Firefox will skip the ones in the stylesheet even when installed, even when compatible, and opt for system fonts or those specified as defaults in the program.
All of this is counter-intuitive, and if it weren’t for what must be my OCD, I’d never have found out, and have given up to use another browser.
Not that IE11 is much good:
Loading up the next ASCII character makes little sense, either.
Firefox isn’t unique in mucking up type on Windows. Back in the days of versions 1 and 2, I avoided it because it was incapable of displaying ASCII characters above 128 in the same font. This still afflicted Opera, the last time I saw it in 2010. Chrome wasn’t much better: it will pick one character and display that in a different font or fail on the font-face spec in HTML. For years, Internet Explorer would only let you use TrueType.
I don’t fully understand why Windows browsers must behave differently—no doubt it’s to do with Flash or HTML 5 or something connected with rendering—but it is very annoying when every other program I have gets this right.