Footnotes
By Adrian Sutton
Every fortnight or so the Ephox engineering team lets off steam by taking a couple of hours on a Friday afternoon to do cool stuff with our products using just the publically available APIs. Theres been some cool prototypes come out of it that may be turned into features later on but mostly it allows us to get a sense of what our customers go through when they try to extend or customize our products. You should see a number of improvements to our API appearing in future versions because of this experience1.
This time around, my little project was to add support for adding footnotes like what Daring Fireball uses. Since my thought process tends to ramble a fair bit, I wind up using a whole stack of parenthesis in my writing which makes things a little hard to follow. Hopefully with this new plugin making a footnote just a keystroke away, I’ll wind up with a more coherent main text with the extra information still available in footnotes2.
The downside at the moment is that I’ve also stuck with Daring Fireball’s use of the Unicode left hook arrow for the jump back link at the end of the footnote. This seems to display incorrectly on Windows a lot of the time3 which is unfortunate but doesn’t break the functionality. The current implementation somewhat unfortunately doesn’t use an actual list for the footnotes even though in hindsight it wouldn’t have been significantly more difficult to do. I just happened to choose paragraphs without thinking about it and by the time I noticed the difference there wasn’t enough time to change it. Using a list would also make it simple to have a divider line between the content and the footnotes whereas it requires extra markup or complex CSS that isn’t well supported when using paragraphs.
1 – Particularly our Java APIs, or advanced APIs as the product documentation calls them.↩
2 – Of course, I could just learn to write better but this seems more likely to happen.↩
3 – Sadly this behavior seems quite inconsistent and depends on the particular font. Font fallback routines in browsers should make this work, but apparently don't.↩