Tuesday, 14 May 2013

Addressing CSS2.1/CSS3 @font-face 404s in Internet Explorer

And now for something completely different...

My employer works with several large partners of global brand. Recently, we noted a behavior in Internet Explorer versions 6, 7, and 8--note that we have generally retired support for IE6 and IE7, however a global brand can expose our properties to a large audience that is not technically savvy enough, or cares enough, for lofty principles of supporting core web standards.

The behavior was simply that our Performance Engineering team noted a long term trend of HTTP 404s that periodically spiked with ad campaigns for the brands. The 404s all had GET statements like this:

/webfont.woff')%20format('woff'),%20%20url('webfont.ttf')%20format('truetype'),%20%20url('webfont.svg');

I saw the problem immeditately: IE was reading @font-face rule declarations past the supported type. Let's look at a typical @font-face rule used1:

@font-face {
  src: url(FQURI/to/eot/font);
  src: url(FQURI/to/woff/font) format('woff'),
       url(FQURI/to/truetype/font) format('truetype'),
       url(FQURI/to/svg/font) format('svg');
  font-weight:normal;

}

One can see where the 404 is being generated. The above rule is documented as the preferred way to load the supporting font files across browsers supporting @font-face rules introduced in CSS2.1. The basic idea is that by loading the IE Embedded OpenType format first, IE will "see it," fetch it, and ignoring the rest of the font files and types.

I set to solving the problem. 

First, I installed Windows XP SP3 with IE6 and IE7 in dedicated VMs. Then I created a test page with a typical @font-face rule. Using Fiddler, I was able to track and reproduce the 404 behavior. After reading the CSS3 specification carefully, I started looking for parsing tricks that would halt IE from reading CSS declarations.

I was not finding any. 

So I set to using the specification precisely and found the local(font-name) property of the src declaration would stop IE from continuing to read src declarations:

@font-face {
  src: url(FQURI/to/eot/font);
  src: local(font-name),
       url(FQURI/to/woff/font) format('woff'),
       url(FQURI/to/truetype/font) format('truetype'),
       url(FQURI/to/svg/font) format('svg');
  font-weight:normal;
}

I call this the Irish Local Name Method after Paul Irish who documented this method in 2009-2010.

Editor's Note: It seems that fontsquirrel.com has found a less obtuse hack and is leveraging a more readily readable parsing hack and exploiting an MSDN note on support for the format property in IE8 and less2:

@font-face {
  font-family: 'Slab Bold';
  src: url('fonts/slabbold.eot');
  src: url('fonts/slabbold.eot?#iefix') format('embedded-opentype'),
        url('fonts/slabbold.woff') format('woff'), 
        url('fonts/eslabbold.ttf') format('truetype'), 
        url('fonts/slabbold.svg#Slab-Bold') format('svg');
}

The use of the format property achieves the same behavior as the use of the local property, but by restating the Embedded OpenType format property that is ignored by IE8 and less.




  1. [1] Brian Hogan in HTML5 and CSS3 recommends this format.

  2. [2] http://msdn.microsoft.com/en-us/library/ie/ms530757(v=vs.85).aspx To specify specific font formats (only for externally referenced font files), use a format hint (format(fontFormat)) where fontFormat is a comma-separated list of format strings that denote supported font formats. Possible fontFormat values are "woff", "truetype", "opentype", and "embedded-opentype". The format hint is optional starting in Internet Explorer 9. (format hints are not supported in Internet Explorer 8 and earlier versions and are ignored.)

Posted by caffeinated at 2:30 PM in 0xDECAF

Friday, 10 May 2013

The 2013 Blogging A-to-Z Collection

As last year, here is the Complete 2013 WFRP Blogging A to Z collection as a single PDF. The PDF includes all the posts and the NPCs.

Download WFRP Blogging A to Z 2013

I don't remember who gave me the idea, but I'm pretty sure I got it from a blog in the RPG Blog Alliance before I somehow got dropped from the rolls. Since RPGBA has some pretty crappy support channels--yeah yeah all volunteer, I get it, but then don't advertise your twitter account for support questions--I'm still not back on the roll. Maybe I'll pursue relisting soon.

Until then, don't forget you can always subscribe to the RSS feed to got all my current and previous attachments. There's even some old actual plays on that feed.

Posted by caffeinated at 8:27 PM in d10

2013 Blogging A-to-Z Retrospective

Another Caffeinated Day entered into the 2013 Blogging from A to Z challenge excited about the milestone, three years! Each year presented challenges, though for 2013 the greatest was just plain old discipline.

My biggest challenge in 2011 was wrapping my head around the ideas and focusing on a coherent topic. For 2012 it was scheduling. Each year's challenges welcome and the topic, Warhammer Fantasy Role Play, something that engaged me and my readers.

This year I hit the challenge running with a topic that I hope Warhammer fans could also take with them in the form of deeper fiction and NPCs, Non-Player Characters, for games they may be playing. And getting the NPCs out the door each day mid challenge became more difficult with each day due to daily demands of life.

Daily demands aside I can say that I never missed a EDT Midnight deadline--GMT doesn't count!

2013 also marks another milestone: introducing fans of Warhammer to more WFRP voices. JMT and Roger's A Life Full of Adventure and Mark's A Song of Middenheim expanded their audiences and introduced new and exciting Warhammer perspectives and fiction.

Each year finding a coherent topic focus with entries that start with the known Latin alphabet--no pedantics please!--is itself a challenge. It's my goal to rise to that challenge each year.

Til 2014...

Posted by caffeinated at 2:20 PM in d10

Monday, 6 May 2013

Missing NPCs

Update

All NPCs now have a complete character sheet. Enjoy

--

Apologies to the Blogging A-to-Z readers that subscribed to the RSS feed for ACD. It seems, as I prepare my 2013 retrospective and 2013 PDF collection, I have missed three NPCs!

A problem I will soon fix for the collection.

Posted by caffeinated at 6:37 PM in d10

Wednesday, 1 May 2013

April Referral Search Round Up

I always promise myself to do one of these entries a month as I like seeing what brings people to Another Caffeinated Day.

No question that Warhammer Fantasy Role Play is a big draw. But there is the occasional "What the Fuck?" that is at both times literal and ironic.

Last month, ACD ranks number 5 and 6 for Google searches for "ben 10 bestiality fanfic". That's right, proof you can find, at least look for, anything on the internet. I admit that fan fiction where in a teenage boy with an oversized Timex is paired with ... beasts is disturbing. Yet I wonder, having seen the cartoon, but never read such fan fiction, could the pairings be some sort of self gratification as well?

Top Ten April 2013 Searches

  1. inns of the empire
  2. fantasy inn names
  3. another caffeinated day wiki
  4. anothercaffeinatedday
  5. ben 10 bestiality fanfic
  6. business names for fantasy establishments
  7. expansion for scwcd
  8. http://www.anothercaffeinatedday.com/blog/default/2009/06/18/recognize.html
  9. inn generator wfrp
  10. inns of the empire generator

Posted by caffeinated at 4:00 PM in Bohemian Breakfast

We survived the 2013 A-to-Z Blogging Challenge

The 2013 A-to-Z Blogging Challenge is done.

I survived a third year diving into the grim and perilous world of Warhammer Fantasy as a fan and gamemaster of the Warhammer Fantasy Role Play 2e role playing game.

In the next week I'll be posting my reflections on this year's effort along with a downloadable PDF collecting all the entries and NPCs (available to readers of the RSS feed now!). 

I want to thank Roger Brasslett (+Roger Brasslett), Mark Torley (+Mark Torley), and jm tommasi (+jm tommasi) for joining me this year on their respective blogs below.

Til next year!

Posted by caffeinated at 2:28 PM in kaffehaus

Tuesday, 30 April 2013

Z is for Zuvassin the Undoer

Thoughout the Old World one may hear tales of miraculous healing of abominable mutations attributed to the goddess Shallya, news of a large cult of Tzeetch the Changer of Ways being destroyed by a righteous and pious Witch Hunter, or even diaries of insane wretches claiming to have been slaves to rats that walk on two legs in which tales of incredible plans collapsing upon execution.

Those that study the worship, strictures and rituals of the renegade gods whisper that Zuvassin the Undoer is behind it all. Zuvassin is a devious god of Chaos. 

These learned men, especially those that study the rat men known as Skaven believe that Zuvassin is so devious a power, seeking to waylay all worshippers, that the The Great Horned One, the father of all Skaven, is Zuvassin, undoing every grand scheme of the rat men in a long harbored grudge against the foul beasts.

And yet his worship is proscribed by all for his boon is the undoing of good or evil, naught a preference given or asked. The forbidden writings of countless academics--the ones not burned--speak of a hatred for Zuvassin by the Ruinous Gods themselves, save the twisted alliances that oft arise in the bitter infighting for souls by Khorne, Slaanesh, Tzeentch or Nurgle.

Zuvassin the Undoer is untrustworthy in any worship and never refuses a willing thrall. Yet any worshipper is a fool to enter into a bargain with Zuvassin as he is one that seeks to undo all in destructive reversal of desire.

Posted by caffeinated at 7:38 PM in d10

Monday, 29 April 2013

Y is for Yeoman, Simo Goubert

It is known that the life of a peasant throughout Bretonnia is barely more than a slave. None may own weapons or build with stone. Property is such that it is often taxed so heavily that it is often better to do without. When it is possible to escape this life, even for brief moments in troop musters for their liege, young men often seek adventure or just a regular ration.

The liege is often watching--well, the liege has charges that watch for him--for talent in the peasant fodders that he fields in combat. Simo Goubert is such a warrior talent.

Mustered as a peasant man-at-arms for what became a long winter campaign against the Greenskins in the Irrana Mountains, Simo distinguished himself in witness by his liege. Standing alone in the wreckage of peasants that was hastily built dirt wall on the flank of embattled front, he picked up a two-handed broadsword from the hands of a dead knight and waded into the line of Iron Orcs in front of him. The orcs fell like timbers as Simo's found sword swung through the legs and guts of orc after orc charging the earthenwork he stood atop. His action delayed the orcs for the precious few minutes his liege needed to organize his lance calvary behind him.

Simo's act was immediately rewarded. He was given a mount, permitted to keep the sword of the knight (at the insistence of the deceased knight's squire who witnessed the Simo's act), and put on his liege's war retinue. His new task: ride far afield and scout the terrain for camp or battle.

His steed and sword however promise Simo something greater than serving his liege until he is dead, freedom. Simo often looks on the foothills of the Irrana Mountains riding far from any chase. It would only be a matter of just not turning back to camp. Ride until he reaches the mountains and then seek a pass to Tilea.

The simple plans are always more likely to succeed.

Posted by caffeinated at 10:33 AM in d10

Saturday, 27 April 2013

X is for Xoanon of Taal and Rhya

Few know of the Xoanon of Taal and Rhya. Those that know of the pair of ancient oaks grown in an intertwined, disturbingly human, mating embrace are the same that know of and protect it.

Those few are the highest ranking of the Horned Hunters, Taal's zealots. Horned Hunters must pass an initiation right that will, in survival, lead them to the grove of the Xoanon. Here the initiate will pledge to the austere life of the hunters in an eight night ritual that an objective observer might find to be nothing more than a naked, hedonistic orgy serving, not Taal and Rhya, but the ruinous god of pleasure and excess, Slaanesh.

The Xoanon is only a rumor, denied by the Cult of Taal, as well as by the Cult of Rhya. No one outside of the Horned Hunters know of the great oaks location and only those Horned Hunters that have survived the initiation know of it in truth and experience.

The rumors of the Xoanon and its rituals are circulated in Talabecland and Talabheim, more often only in whispers. Not blostering its legitimacy is that these whispers are often spoken by members of Slaanesh cultists seeking a new hedonistic experience on the path to corruption. 

Posted by caffeinated at 11:32 AM in d10

Friday, 26 April 2013

W is for Wall Warden, Arbert

All nobles, iniquitous or benevolent, of Bretonnia are an aloof lot of great property owners.

And owning property comes a great responsibility of serf management in a highly structuralized order of society. Often that responsibility means recognizing peasants for natural talent or a skill often ritualized by family. The peasants do seem to have qualities of even the most inbreed noble clans.

Arbert is such a peasant though his status is never lost in quiet conversation with his wife or his mud hutch corn beer klatch.

He has a natural brain for engineering, and he's not even a Dwarf. Arbert is a Wall Warden for Duke Huebald of Carcassonne. What exactly is a "wall warden"? Arbert is in charge of the very stone walls that protect his liege from any and all enemies, known and unknown.

Wall Wardens literally stand and fall on the security of the walls built by their peasant charges. Arbert is more fortunate than many of his fellows--organized secretly and loosely in peasant guilds across Bretonnia--having a dwarf stonemason passing an art for precision fitting of stone work to himself and others.

And yet Arbert is also a master archer, a skill that all nobles dismiss to the point of abhoring. It is an added value to the Duke to have a wall warden that can hit a target at nearly 180 feet and he passes this skill to the defenders of the Duke's residence.

Yet Arbert harbors an unrequited inheritance, his father's illegally forged "birth sword." In Bretonnia peasants may not possess a weapon of the noble class. Arbert's father felt otherwise. Arbert hides this "birth sword" in his mud hut, only his elevated status protects him from others even thinking he possesses such a thing. And his skill and swiftness with a bow and knowledge of stone dismisses even the slightest rumor that he may harbor the heresy that "just because some watery tart promises a sip from a cheap wine glass" his liege has any authority.

Posted by caffeinated at 9:49 PM in d10