<?xml version="1.0" encoding="utf-8"?><rss version="2.0">
   <channel>
      <title>lowest-common-denominator</title>
      <link>http://www.lowest-common-denominator.com/</link>
      <description>Guff and nuisance about web design and typeface development</description>
      <language>en</language>
      <copyright>Copyright 2008</copyright>
      <lastBuildDate>Thu, 22 May 2008 13:11:45 -0100</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=4.01</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

      
      <item>
         <title>Title Case for Movable Type</title>
         <description><![CDATA[<p>John Gruber shared a code snippet that <a href="http://daringfireball.net/2008/05/title_case" title="Title Case">converts strings to Title Case</a>. It&#8217;s actually more clever than it sounds, taking into account the need to keep a collection of small words uncapitalised, and correctly handling punctuation issues.</p>

<p>Here&#8217;s a version for Movable Type that can be used to automatically convert entry titles to title case. It is essentially a wrapper for John&#8217;s script that adds some functionality to deal with html entities (so it should play nice with <a href="http://daringfireball.net/projects/smartypants/" title="Smarty Pants">Smarty Pants</a> and <a href="http://www.lowest-common-denominator.com/2006/08/widont_for_movable_type.php" title="Widon't for Movable Type">Widon&#8217;t</a>).</p>

<h3>Download</h3>

<p><a href="http://www.lowest-common-denominator.com/downloads/TitleCase_1.1_for_MovableType.zip" class="download">Title Case for Movable Type v1.1</a> (2008-05-23)</p>

<h3>Installation</h3>

<p>Unzip the file and place TitleCase.pl in the plugins directory of your Movable Type installation.</p>

<div class="code"><code>(mthome)/plugins/TitleCase.pl</code></div>

<h3>Usage</h3>

<p>For titles, add the global filter <code>titlecase="1"</code> to your entry title tags:</p>

<div class="code"><code>&lt;mt:EntryTitle titlecase="1"/&gt;</code></div>
]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2008%2F05%2Ftitle_case_for_movable_type.php&amp;seed_title=Title+Case+for+Movable+Type</link>
         <guid>http://www.lowest-common-denominator.com/2008/05/title_case_for_movable_type.php</guid>
         <category></category>
         <pubDate>Thu, 22 May 2008 13:11:45 -0100</pubDate>
      </item>
      
      <item>
         <title>TextMate Tip for CSS -- Single Line Overview</title>
         <description><![CDATA[<p>CSS files need to be formatted so they are readable at two levels: the broad level of scanning the document selectors, and the finer level of locating individual property rules within selector blocks.</p>

<p>I&#8217;ve tried several ways of formatting my CSS to balance these two views, without much success. I&#8217;ve tried indenting rules based on their place in the document hierarchy, or making heavy use of summary comments to facilitate searching, broken groups of selectors over several cumbersome files and used <a href="http://orderedlist.com/articles/single-line-css" title="Single Line CSS">single line selector blocks</a>. None of these techniques helped tame unruly CSS files once they exceed a few hundred lines. </p>

<p>That last technique though, of using single line selector blocks, does help with the broad level view, but renders the property rule level unreadable. I still want each property on its own line. How do I achieve both views?</p>

<h3>Code folding in TextMate</h3>

<p><a href="http://macromates.com/" title="The Missing Editor for Mac OS X">TextMate</a> for OS X (and probably other quality text editors on other platforms) has the ability to <a href="http://macromates.com/textmate/manual/navigation_overview#collapsing_text_blocks_foldings" title="Collapsing Text Blocks (Foldings)">fold blocks of code</a>, collapsing each block except for their first lines. Doing this to a CSS file (<code>Alt+Cmd+0</code>) leaves just the document selectors on single lines, temporarily hiding their property rules. This is perfect for scanning through a large file to locate a specific selector. When it&#8217;s time to focus on the finer level of detail, the block can be revealed by toggling the selected block (<code>F1</code> or clicking the arrow in the gutter). When you&#8217;re finished, toggle it back up again. As there is only one or two blocks unfolded at a time, it&#8217;s very easy to focus on the code without getting lost.</p>
]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2008%2F05%2Ftextmate_tip_for_css_singlelin.php&amp;seed_title=TextMate+Tip+for+CSS+--+Single+line+overview</link>
         <guid>http://www.lowest-common-denominator.com/2008/05/textmate_tip_for_css_singlelin.php</guid>
         <category></category>
         <pubDate>Fri, 09 May 2008 10:58:22 -0100</pubDate>
      </item>
      
      <item>
         <title>del.ija.vu -- Already Bookmarked</title>
         <description><![CDATA[<p>While chatting with a friend on IM, we came up with a term to describe what happens when you bookmark a page, only to find that you&#8217;ve already bookmarked it sometime previously: <em>del.ija.vu</em>. If you find yourself in this situation, add &#8220;del.ija.vu&#8221; to the tags for that page. We can&#8217;t be the only people this happens to!</p>
]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2008%2F02%2Fdelijavu_already_bookmarked.php&amp;seed_title=del.ija.vu+--+already+bookmarked</link>
         <guid>http://www.lowest-common-denominator.com/2008/02/delijavu_already_bookmarked.php</guid>
         <category></category>
         <pubDate>Tue, 12 Feb 2008 18:13:58 -0100</pubDate>
      </item>
      
      <item>
         <title>Break Out of Your Feed Reader and Enjoy the View</title>
         <description><![CDATA[<p>Reading an article by <a href="http://astheria.com/" title="Astheria">Kyle Meyer</a> about <a href="http://astheria.com/design/do-feed-readers-kill-blog-identity" title="Do feed readers kill blog identity?">blog identity in the age of feed readers</a> reminds me once again of my own feed reading habits. </p>

<p>I started subscribing to feeds a couple of years ago, using the serviceable <a href="http://sage.mozdev.org/" title="Sage: a feed reader for Firefox">Sage extension for Firefox</a>, before ditching it in favour of the remotely hosted <a href="http://www.google.com/reader/" title="Google Reader">Google Reader</a>. It&#8217;s taken some time to attain a sustainable habit, swinging between binge and fast, but recently I think I&#8217;ve pegged it.</p>

<p>In Google Reader, having the articles laid out on a level playing field seemed like a good thing, at least initially. Set as they were under the uni-identity of the reader, I was ploughing through several hundred posts a day, not exactly at my most discerning.</p>

<p>But, I started to miss the design of the web-sites, even though I was reading their actual content. I wanted to enjoy posts in their proper context again. I ended up reading about my field (web design), while at the same time cutting myself off from it.</p>

<p>Recently, I started following a practise picked up from <a href="http://zenhabits.net/2007/09/haiku-productivity-the-fine-art-of-limiting-yourself-to-the-essential/" title="Haiku Productivity">Zen Habits</a> (I mentioned it previously in my <em>Interesting elsewhere</em> links):</p>

<blockquote>
  <p>RSS posts: I&#8217;ve been adjusting this as I&#8217;ve experimented, but I&#8217;ve settled on reading 6 posts per day. The method: I open my Google Reader in list view, scan through the headlines, and choose just 6 to read, opening them in new tabs. I then &#8220;Mark All as Read&#8221; and go and read my 6 posts in further detail. It has made RSS reading super fast.</p>
</blockquote>

<p>I definitely read more than 6 a day, but a lot less than previously. That leaves just the interesting articles, and the crucial step of opening them in a series of new tabs means leaving the sterile environment of the reader. It&#8217;s like using a catalogue with a printed list to shop for books. Select the ones you want to read, then leave the list behind.</p>
]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2007%2F10%2Fbreak_out_of_your_feed_reader_and_enjoy_the_view.php&amp;seed_title=Break+out+of+your+feed+reader+and+enjoy+the+view</link>
         <guid>http://www.lowest-common-denominator.com/2007/10/break_out_of_your_feed_reader_and_enjoy_the_view.php</guid>
         <category></category>
         <pubDate>Tue, 16 Oct 2007 19:36:25 -0100</pubDate>
      </item>
      
      <item>
         <title>iTunes &amp; Quicksilver: If You Like It, ★++ It</title>
         <description><![CDATA[<p>Obsessively rating music is a frustrating waste of time. Listen to a track, give it a rating between 1 and 5 stars. Sounds easy, but my problem is, I don&#8217;t really know how much I like a track, at least not definitively. I mean, I like it, certainly, but exactly how much? Are these 1-5 stars even on a linear scale or does it get progressively harder to achieve the next level? Will the track get offended if it&#8217;s only a two? Is one star a hated track (the notion of rewarding stars, even one to a song you hate is oxymoronic, why not just uncheck or, in the worst case, delete it)? I don&#8217;t need this cognitive and emotional load in my life just to demonstrate I like a tune.</p>

<p>I also don&#8217;t want to rely on having rated <em>everything</em> just to help organise my listening. It&#8217;s certainly helpful to have a few smart playlists which use track ratings, but I can&#8217;t rate it all! And I definitely don&#8217;t want to be <a href="http://dougscripts.com/itunes/scripts/scripts09.php?page=4#ratemerateme" title="Rate me! Rate me!">nagged to rate unrated tracks</a>. I&#8217;ve got about 60 days of audio, I&#8217;d go insane.</p>

<p>I want to rate a song when the feeling takes. To say, &#8220;I&#8217;m liking this!&#8221;, without too much baggage and without having to switch into iTunes and decide which of the fiddley stars to click on, or to engage in what it might <em>mean</em>. I want the results of a system, without having to engage too actively with it. I don&#8217;t want to have to remember whether I&#8217;ve previously rated it. In fact, I want to make a virtue of this possibility.</p>

<p>To achieve this I use the wonderful <a href="http://quicksilver.blacktree.com/" title="quicksilver: act without doing">Quicksilver</a> and its iTunes plugin. If I like something, I use the iTunes plugin&#8217;s <em>Increase Rating.scpt</em> script which will increase the tracks rating by one, whatever its previous rating, up to five. As soon as I&#8217;ve thought of doing it, it&#8217;s done. The more often a track grabs my attention, the more likely it will eventually achieve a high rating. It&#8217;s a system that matures, and where each track has to earn its stars.</p>
]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2007%2F10%2Fitunes_quicksilver_if_you_like.php&amp;seed_title=iTunes+%26amp%3B+Quicksilver%3A+If+you+like+it%2C+%E2%98%85%2B%2B+it</link>
         <guid>http://www.lowest-common-denominator.com/2007/10/itunes_quicksilver_if_you_like.php</guid>
         <category></category>
         <pubDate>Fri, 05 Oct 2007 14:35:32 -0100</pubDate>
      </item>
      
      <item>
         <title>Widon&apos;t Ready for Movable Type 4</title>
         <description><![CDATA[<p>I've tested Widon't for Movable Type with the latest <a href="http://www.movabletype.com/mt4/"><span class="caps">MT4 </span>beta</a> and, apart from a few small changes to make it display correctly in the plugins list, it works as expected.</p>

<p>I've also fixed the unquoted string warnings some people were experiencing.</p>

<p>Get the latest version of Widon't for Movable Type (works with both 3 and 4): <a href="http://www.lowest-common-denominator.com/2006/08/widont_for_movable_type.php">Widon't for Movable Type</a></p>]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2007%2F07%2Fwidont_ready_for_movable_type.php&amp;seed_title=Widon%26apos%3Bt+ready+for+Movable+Type+4</link>
         <guid>http://www.lowest-common-denominator.com/2007/07/widont_ready_for_movable_type.php</guid>
         <category></category>
         <pubDate>Sun, 15 Jul 2007 07:44:48 -0100</pubDate>
      </item>
      
      <item>
         <title>SVN Helper Script for RoboFab</title>
         <description><![CDATA[<p>Following on from my article about <a href="http://www.lowest-common-denominator.com/2007/02/version_control_for_typeface_de.php">version control for typeface development</a>, I've updated the "Export to <span class="caps">UFO </span>and commit to <span class="caps">SVN</span>" python script I used as an example. This present article will be the script's permanent home.</p>

<p>I can't offer much in the way of support, and the script does do some heavy lifting (like removing all <span class="caps">GLIF</span>s in the <span class="caps">UFO </span>before exporting a new one), so please have a good look at the script before using it. I don't want to be held accountable if your machine starts vomiting kittens. The script is meant to serve as an example use of pysvn in the context of typeface development. Having said that, I find it very useful.</p>

<h3>Features</h3>

<p>The current version (v1.3) of ExportToUFOCommitSVN.py does the following:</p>


<ul>
<li>exports the current font in FontLab to <span class="caps">UFO,</span></li>
<li>add new <acronym title="GLyph Interchange Format">GLIF</acronym>s to the working copy,</li>
<li>delete removed <span class="caps">GLIF</span>s from the working copy (new in v1.1!),</li>
<li>commit a new revision to the <span class="caps">SVN </span>repository.</li>
</ul>



<h3>Requirements</h3>

<p>In addition to having a copy of FontLab, you'll need:</p>


<ul>
<li><a href="http://robofab.org/">RoboFab</a>: Python library for font development</li>
<li><a href="http://pysvn.tigris.org/">pysvn</a>: <span class="caps">SVN </span>extension for python (make sure you get the same version as your own <span class="caps">SVN </span>installation if you intend to use both)</li>
</ul>



<h3>Download</h3>

<p><a href="/downloads/ExportToUFOCommitSVN_v1.3.zip" class="download">ExportToUFOCommitSVN.py v1.3</a> (2007-03-28)</p>

<p>The script is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/">Creative Commons Attribution-NonCommercial-ShareAlike license</a>.</p>]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2007%2F03%2Fsvn_helper_script_for_robobab.php&amp;seed_title=SVN+helper+script+for+RoboFab</link>
         <guid>http://www.lowest-common-denominator.com/2007/03/svn_helper_script_for_robobab.php</guid>
         <category></category>
         <pubDate>Sun, 18 Mar 2007 16:38:35 -0100</pubDate>
      </item>
      
      <item>
         <title>Typeface Development Bundle for TextMate</title>
         <description><![CDATA[<p>For Mac users who rock the magnificent <a href="http://macromates.com/">TextMate</a> text editor, I've put together a small typeface development Bundle.</p>

<p>At the moment it covers Adobe's <a href="http://partners.adobe.com/public/developer/opentype/afdko/topic_feature_file_syntax.html">OpenType Feature File Specification</a> used by the <acronym title="Adobe Font Development Kit for OpenType">AFDKO</acronym>. As well as syntactic highlighting, there are also a couple of snippets for creating features, tables etc.</p>

<h3>Download</h3>

<p><a href="/downloads/typodev_bundle_tm_v1.1.zip" class="download">Typeface development Bundle for TextMate v1.1</a> (2007-03-02)</p>

<h4>Update</h4>

<p><a href="http://www.typesupply.com" title="typesupply.com">Tal Leming</a> generously donated the contents of his own bundle for feature files. I've incorporated some of his snippets and keywords and released a new version, above. There's also a bug fix related to single quote use in substitutes (thanks <a href="http://benkiel.com" title="benkiel.com">Ben</a>!).</p>

<h3>Installation</h3>

<p>If you've got TextMate installed, you should be able to just unzip the archive and double-click the .tmbundle file.</p>

<p>(Windows users can try Adam Twardoch's <a href="http://www.twardoch.com/adam/project.php?pid=0066">Typographic extensions for UltraEdit-32</a>.)</p>]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2007%2F03%2Ftypeface_development_bundle_fo.php&amp;seed_title=Typeface+development+Bundle+for+TextMate</link>
         <guid>http://www.lowest-common-denominator.com/2007/03/typeface_development_bundle_fo.php</guid>
         <category></category>
         <pubDate>Thu, 01 Mar 2007 16:11:24 -0100</pubDate>
      </item>
      
      <item>
         <title>Version Control for Typeface Development</title>
         <description><![CDATA[<p>I've wanted to write a bit about version control in relation to font software for a while, but Version Control is a big subject (hence the capitals!) and has been extensively covered elsewhere for software development, so I'll try to limit myself to a description of how it can be used for typeface development. More information about the system used here (Subversion) can be found at the '<a href="http://svnbook.red-bean.com/" title="Version Control with Subversion">Red Bean</a>' <span class="caps">SVN </span>book web-site.</p>

<h3>Font files are software (and how <acronym title="Subversion">SVN</acronym> can help)</h3>

<p>First off, I'll start by stating that Fonts Are Software. And not just in a pragmatic fit-the-definition-for-intellectual-property-law sort of way, but in a real code-compile-interpret sense. Obviously fonts aren't <em>just</em> software, they contain tables of data that are the realisation of a designer's vision for a typeface, but because the design transmitted is in the form of code, there are coding practices we can learn from the software engineering community that can help us make better font files. One such practice is the use of version control systems.</p>

<p>Version control systems, like the open-source, <a href="http://subversion.tigris.org/" title="Subversion at tigris.org">Subversion</a> (SVN), store files in a repository who's job is to manage change between versions. To work on these files, you have to check-out a copy, then save back any changes to the repository. Every time you save a new version of your files to the repository, known as 'committing', the revision number for the repository increments, starting from 0. So, every revision of your work has a unique rev number.</p>

<p>The most fundamental benefit of using version control is as a simple backup of your work. The repository is stored separately from your working copy, often remotely on a web-server. So, if the worst happens to your computer, you've got a recent copy of your files saved to go back to. The life of a typeface project is long, the chances of losing work are high, so this alone sells it for me!</p>

<p>But better than that, version control systems don't just save a copy of the latest version, they also allow you to go back to <em>any</em> version you've committed to the repository. This is great, because if you've made a bad design decision, after a night at the pub say, you can easily go back and retrieve a previous version not inspired by several pints of terrible British lager.</p>

<p>If you work in a team, you're likely to run into problems if two people have made changes to the same file. It can be a fiddle to get changes integrated or in the worst case, someone's work is going to be overwritten and lost. Subversion uses a copy-modify-merge model to handle this problem. Each user has a copy of the file from the repository. They make modifications. Then, when they each commit that file back to the repository, the changes are merged together. </p>

<p>For example, Alice makes a change to the features file by adding some more substitutions to the <acronym title="Standard Ligatures">LIGA</acronym> feature. Bert is also working with a copy of the same features file and has made changes to the <acronym title="Localised Forms">LOCL</acronym> feature. Alice doesn't have Bert's changes and visa versa. After Alice has committed her changes to the repository, when Bert commits his changes, Subversion will merge the changes together automatically creating a file with both changes to <span class="caps">LIGA </span>and <span class="caps">LOCL.</span></p>

<p>What if Alice and Bert have both been working on <span class="caps">LIGA</span>? If there is an overlap in the changes made to a file, when the second person (Bert) commits the file there will be a conflict. This isn't as bad as it sounds. The file will be flagged as being conflicted and Bert can decide which changes to keep, mark the file as resolved and carry on committing it to the repository.</p>

<p>For a (much) better description of this process have a look at <a href="http://svnbook.red-bean.com/nightly/en/svn.basic.vsn-models.html" title="Versioning Models, in Version Control with Subversion">Versioning Models</a> in the <span class="caps">SVN </span>book.</p>

<h3>Binary to text files</h3>

<p><span class="caps">SVN </span>prefers plain text files (like this <acronym title="Hyper Text Markup Language">HTML</acronym> page). This is a bit of a problem for most of us, because programs like <a href="http://www.fontlab.com/FontEditors/FontLab-Studio/">FontLab Studio</a> store your work in a binary format, like .vfb files. <span class="caps">SVN </span>is happy to store them, but we can't easily do the cool stuff <span class="caps">SVN </span>offers, like merging or dealing with version conflicts. Feature files and class data can be exported as text files, but what about glyph data?</p>

<p>Thanks to <a href="http://robofab.org/">Robofab</a>, and in particular the <a href="http://robofab.org/ufo/index.html" title="Unified Font Object"><span class="caps">UFO</span></a> format, we <em>can</em> store our glyph data in text files! Robofab comes with tools, written in Python, for exporting and importing between FontLab and the <span class="caps">UFO </span>format.</p>

<p>When you export a font to <span class="caps">UFO, </span>each glyph is stored in its own text file, the <acronym title="GLyph Interchange Format">GLIF</acronym>. So when you've added or modified a glyph to the <span class="caps">SVN </span>repository, it's easy to see what was committed during a particular revision, and conversely, which revisions contain changes to a particular glyph.</p>

<h3>Python and <span class="caps">SVN</span></h3>

<p>If you're into Python scripting, you might want to use the <a href="http://pysvn.tigris.org/">pysvn extension</a> to make use of <span class="caps">SVN </span>in your FontLab and Robofab scripts. Here are some examples:</p>

<h4>Export to <span class="caps">UFO </span>and commit to <span class="caps">SVN</span></h4>

<p>Below is an example script that uses pysvn to export the current font to <span class="caps">UFO, </span>add un-versioned files to <span class="caps">SVN </span>control, and commit the changed <span class="caps">UFO </span>and .vfb files to the repository as a new revision.</p>

<p><a href="/downloads/ExportToUFOCommitSVN_v1.3.zip" class="download">ExportToUFOCommitSVN.py v1.3</a></p>

<p>(Works within FontLab, and requires Robofab and pysvn. More info about the script <a href="/2007/03/svn_helper_script_for_robobab.php" title="SVN helper script for RoboFab">here</a>.)</p>

<h4>Generate a font with the latest rev number attached</h4>

<p>When you generate a font file from your project, you can include the revision number as part of it's font information. Below is a modified version of <a href="http://www.benkiel.com/typeDesign/" title="Ben's Python scripts for typeface design">Ben Kiel's</a> betterGenerateFont.py, that generates a font file and adds the current revision number as part of the minor version information. This way, you know exactly which revision a font was generated from. So, if your font is major version 1, and it was generated from rev. 23, the generated font would be version 1.23.</p>

<p><a href="/downloads/betterGenerateFontSVN.zip" class="download">betterGenerateFontSVN.py</a></p>

<p>Works within FontLab, and requires Robofab and pysvn.)</p>]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2007%2F02%2Fversion_control_for_typeface_de.php&amp;seed_title=Version+control+for+typeface+development</link>
         <guid>http://www.lowest-common-denominator.com/2007/02/version_control_for_typeface_de.php</guid>
         <category></category>
         <pubDate>Sat, 03 Feb 2007 12:51:01 -0100</pubDate>
      </item>
      
      <item>
         <title>New Version of Widon&apos;t for MT</title>
         <description><![CDATA[<p>Well, sort of... It's actually the same as the beta version I previewed a while ago, but I've been using it without any problems so thought it was time to release it properly.</p>

<p>You can now prevent widows appearing in header tags (h1, h2, etc) used in the entry body as well as in entry titles.</p>

<p>You can find version 1.2 here: <a href="http://www.lowest-common-denominator.com/2006/08/widont_for_movable_type.php">Widon't for Movable Type</a></p>]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2006%2F12%2Fnew_version_of_widont_for_mt_1.php&amp;seed_title=New+version+of+Widon%26apos%3Bt+for+MT</link>
         <guid>http://www.lowest-common-denominator.com/2006/12/new_version_of_widont_for_mt_1.php</guid>
         <category></category>
         <pubDate>Tue, 26 Dec 2006 10:40:26 -0100</pubDate>
      </item>
      
      <item>
         <title>Let Them Eat Lexicon</title>
         <description><![CDATA[<p>Reaction to Ellen Lupton's <a href="http://www.designwritingresearch.org/free_fonts.html" title="Free font manifesto">proposal</a>, suggested as part of her keynote to <acronym title="Association Typographique Internationale">ATypI</acronym>'s <a href="http://www.atypi.org/06_Lisbon">annual conference</a>, has been heated, to say the least. Stoking up the fires of an argument thought long resolved within the type design community, free fonts (of a sort) are back on the agenda.</p>

<p>Proposing Free Fonts to the ATypI is analogous to arguing for "Intelligent Design" to a society of evolutionary biologists. It's simply not considered necessary to debate within the expert group, but it seems to get a lot of undue attention around the margins. Still, the mere suggestion raises the blood pressure while casual acceptance of license violations within the graphic design community, and the scars of unabashed piracy, set the context for such a suggestion.</p>

<p>It's not that her idea is necessarily bad, it's just ill-defined. Both the issue it's trying to resolve and the solution proposed fall wide of the mark (<a href="http://www.lowest-common-denominator.com/2006/08/adobe_web_fonts_neither_likely.php" title="Adobe web fonts -- neither likely or desirable">sounds familiar</a>). </p>

<p>As far as I can interpret, the suggested beneficiaries fall into three groups; students, users of under-represented character sets, and the rest of humanity (whoever they are?).</p>


<h3>A student addiction</h3>

<div class="figure"><img src="/images/manifesto_students.gif" width="220" height="83" alt="What if a few design students on earth licensed one good typeface (each, not between you!) as a gift to type foundries?" /></div>

<p>Apparently, students need more free fonts. But they already have some, right? Well, yes, but they're unsatisfied with the fonts available on their operating systems, or bundled with their design applications, or even those available as part of the site licenses provided by their academic institutions. So, they're seeking out unlicensed typefaces and criminalising themselves. Poor souls, it's a tough life when you have to make a decision between having a night-out, or licensing a typeface.</p>

<p>They want <strong>more</strong>, damn it! Their insatiable appetite for a type high drives them to the dodgier parts of town where they can find the perfect letterage on which to binge. There's nothing sadder than stepping over the prone body of an unconscious design student lying in a puddle of their own punctuation, with the stains of tightly spaced extra-black around their mouth from the previous night's font debauchery.</p>

<p>They say they're looking to expand their minds (man), but really they're just bored with the current scene.</p>

<p>But the damage to society is too great to be left in the hands of <em>criminals</em>. We need to legalise this unlicensed addiction! By controlling the quality, and regulating the dose, we can strive towards teaching a better understanding of moderation.</p>

<p>Yet more free fonts will do nothing to prevent the real separation between students of design and the designers they should be learning to view as their peers. Rather than fostering further separation, I'd prefer to see students being encouraged to actually engage with type designers and foundries, carefully select a font purchase and view it as an investment. Something to become familiar with and understand. Payment is tangible recognition of another's work and helps to encourage the investment in time it takes to use a typeface well. It also teaches against the assumption that typefaces are just "there", as if by magic. An expectation that fonts are free is a bad habit to get into. Habits picked up as a student will be with you for life, good and bad.</p>

<h3>What's getting given away</h3>

<div class="figure"><img src="/images/manifesto_rave_flyer.gif" width="220" height="83" alt="What if a few type foundries gave away one font that wasn't selling well as a gift to rave-flyer designers?" /></div>

<p>I don't see many foundries truly giving away their best assets. Many foundries already give away single, obscure members of a larger family or some display face that wasn't selling anyway. I can't see this changing anytime soon. A good typeface just represents too large an investment to turn over to the public domain. When it comes down to it, there a lot of typefaces in the world, but few good ones.</p>

<p>A student building up a collection of these rag-bag, disparate fonts might actually be tempted to use them! Perhaps students don't need access to more fonts, but less.</p>

<h3>Meet specific needs, empower appropriate designers</h3>

<div class="figure"><img src="/images/manifesto_funded.gif" width="220" height="83" alt="What if many individuals funded the design of a few good typefaces as a gift to under-represented language groups?" /></div>

<p>Our second beneficiary are the groups who's languages aren't adequately represented by the currently available free fonts. Projects like Victor Gaultney's <a href="http://www.sil.org/~gaultney/gentium/">Gentium</a> best represent movement in this area.</p>

<p>These projects require a lot of research and a specialist knowledge that manifests as a proportionate investment of time and resources. It's just not possible to produce this sort of work for free. The work is usually supported by a funding organisation, or private investment.</p>

<p>There's certainly something to be said for further work in this area. Currently, under-represented language groups are either creating typefaces themselves, or extending existing efforts, with varying degrees of success.</p>

<p>Requesting this work to be given away by foundries might be asking the wrong group, though. My immediate thoughts were that a foundation to fund work like this would make the most sense. That way, the most appropriate designer/researchers could be funded by an organisation to represent and ensure the interests of the recipient groups. Perhaps a foundation like this could help finance scholarships (similar to the <a href="http://www.linotype.com/scholarship" title="The Linotype Scholarship">Linotype scholarship</a>) for native users of the language in question to study at somewhere like <a href="http://www.reading.ac.uk/AcaDepts/lt/home.html?courses%2Fpostgraduate%2Ftype.html" title="MA Typeface Design">Reading</a>. Simply asking designers/foundries to submit work they happen to have around is not likely to fulfil the need for typefaces of this sort adequately.</p>]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2006%2F10%2Flet_them_eat_lexicon.php&amp;seed_title=Let+them+eat+Lexicon</link>
         <guid>http://www.lowest-common-denominator.com/2006/10/let_them_eat_lexicon.php</guid>
         <category></category>
         <pubDate>Sun, 15 Oct 2006 10:01:53 -0100</pubDate>
      </item>
      
      <item>
         <title>Adobe Web Fonts -- Neither Likely Nor Desirable</title>
         <description><![CDATA[<p>Andrei Herasimchuk from <a href="http://www.designbyfire.com/">Design by Fire</a> (and ex-Adobe employee) has written an <a href="http://www.designbyfire.com/?p=30">open letter to Adobe</a>, asking them to release a set of core fonts for the web into the public domain. These fonts would then be available to the major <acronym title="Operating System">OS</acronym> manufacturers to bundle in future releases.</p>

<p>Andrei acknowledges that properly addressing font distribution for the web is a difficult issue, but seems to think getting Adobe to release a set of fonts from their collection will be a quick win in the mean time.</p>

<p>Although polite and well intentioned, addressing the problem of fonts for the web to Adobe is slightly wide of the mark. Apart from de-valuing the work of Adobe's awesome type development team (as if fonts that have been decades in the making should be distributed like sweets), there are some major technical and licensing difficulties.</p>

<p>All the typefaces mentioned in Andrei's dream list are PostScript-flavoured OpenType format (the majority of the fonts in Adobe's collection are either PostScript or <acronym title="PostScript">PS</acronym> flavoured OpenType). This is significant because to render type on screen is a tricky business and requires additional, size specific, instructions called hinting. PostScript <acronym title="OpenType">OT</acronym> fonts have a basic hinting model that's fine for previewing in InDesign, but doesn't quite stand up to the pressures of extended reading for the web. This basically means they will look like smudgy thin trash at small sizes in a web page, not because they aren't good typefaces, but because they weren't designed specifically for the screen.</p>

<p>We take them for granted, and familiarity has certainly bred contempt, but Verdana, Georgia and the like are an astonishing achievement. They have defined the standard for screen rendering for many years. The reason for this is because they were primarily designed for the screen and, getting back to formats, they are TrueType. With TrueType (and TrueType flavoured OpenType) comes TrueType hinting. Unlike PS hints, <acronym title="TrueType">TT</acronym> hinting is a sophisticated programming language that can define very precisely the rasterizing of individual characters at small sizes. Hinting type to this quality is a long-winded manual process and usually requires quite a "special" personality (i.e. it's boring).</p>

<p>The other problem with Andrei's list is that half of these typefaces are licensed from <a href="http://www.linotype.com/">Linotype</a>. Although the "amount of revenue lost [...] surely can’t have a significant impact on Adobe’s bottom line" (this may or may not be true), for Linotype it's their core business. Frutiger, Futura, Helvetica Neue and Univers are all top sellers.</p>

<p>Perhaps Andrei is just looking toward the wrong company for a quick fix. Along with Microsoft's release of Vista, they will be bundling a <a href="http://www.microsoft.com/resources/design/ClearType.html">new set of fonts</a> designed specifically for screen. These are modern typefaces designed by some of the <a href="http://www.tiro.com/">world's</a> <a href="http://www.lucasfonts.com/">top</a> <a href="http://carterandcone.com/">typeface</a> <a href="http://www.typography.net/">designers</a>. As suggested by <a href="http://www2.jeffcroft.com/2006/aug/29/open-letter-apple-and-microsoft/">Jeff Croft</a>, if Microsoft bundled these with the upcoming <acronym title="Internet Explorer 7">IE7</acronym>, that would go some way to reinvigorating type on the web.</p>

<p>Top tip: Windows users can "beta test" the new Microsoft ClearType fonts as part of the <a href="http://www.microsoft.com/office/preview/beta/getthebeta.mspx/">Office2007 Beta</a>. In fact, I've specified Corbel, Constantia and Consolas as the default typefaces in the <acronym title="Cascading Style Sheets">CSS</acronym> of this very site.</p>]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2006%2F08%2Fadobe_web_fonts_neither_likely.php&amp;seed_title=Adobe+web+fonts+--+neither+likely+nor+desirable</link>
         <guid>http://www.lowest-common-denominator.com/2006/08/adobe_web_fonts_neither_likely.php</guid>
         <category></category>
         <pubDate>Thu, 31 Aug 2006 23:01:17 -0100</pubDate>
      </item>
      
      <item>
         <title>Widon&apos;t for Movable Type</title>
         <description><![CDATA[<p>Widon't for <a href="http://www.sixapart.com/movabletype/">Movable Type</a> is a plugin to prevent widows from appearing in titles and entry headers. Widows are single words, left on their lonesome on a line at the end of a paragraph, and generally look poo.</p>

<p>Widon't simply adds a non-breaking space entity between the last two words of an entry title, so if the last word has to wrap, it takes a friend with it.</p>

<p><a href="http://shauninman.com/plete/2006/08/widont-wordpress-plugin">Widon't for Wordpress</a> was originally released a few days ago by <a href="http://shauninman.com/plete/">Shaun Inman</a>, but I didn't want to be left out as an <acronym title="Movable Type">MT</acronym> user, so I've ported it across to Perl. All credit for the idea and <span class="caps">PHP </span>version goes to Shaun, any failures in this MT version are down to me.</p>

<h3>Download</h3>

<p><a href="/downloads/widont_1.4_for_MovableType.zip" class="download">Widon't for Movable Type v1.4</a> (2008-07-11)</p>

<h3>Installation</h3>

<p>Unzip the file and place Widont.pl in the plugins directory of your Movable Type installation.</p>

<div class="code"><code>(mthome)/plugins/Widont.pl</code></div>

<h3>Usage</h3>

<p>For titles, add the global filter <code>widont=&quot;1&quot;</code> to your entry title tags:</p>

<div class="code"><code>&lt;mt:EntryTitle widont=&quot;1&quot; /&gt;</code></div>

<p>To prevent widows in header tags used in entries, add the widont filter to the appropriate <span class="caps">MTE</span>ntry tag:</p>

<div class="code"><code>&lt;mt:EntryExcerpt widont=&quot;1&quot; /&gt;
&lt;mt:EntryBody widont=&quot;1&quot; /&gt;
&lt;mt:EntryMore widont=&quot;1&quot; /&gt;</code></div>

<p>I'm no Perl ninja, so if there are any problems let me know.</p>]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2006%2F08%2Fwidont_for_movable_type.php&amp;seed_title=Widon%26apos%3Bt+for+Movable+Type</link>
         <guid>http://www.lowest-common-denominator.com/2006/08/widont_for_movable_type.php</guid>
         <category></category>
         <pubDate>Sat, 26 Aug 2006 16:15:10 -0100</pubDate>
      </item>
      
      <item>
         <title>IE7 PNG Transparency and Flash</title>
         <description><![CDATA[<div class="notice">

<h4>Update: 25th August 2006</h4>

<p>This article relates to <span class="caps">IE7</span> Beta3. A day after I wrote this article, Microsoft released <span class="caps">IE7 RC1 </span>which seems to have fixed this problem (at least, according to the tests below). So, hooray!</p>

</div>

<p>Alpha support for <acronym title="Portable Network Graphic">PNG</acronym> images is one of many <a href="http://blogs.msdn.com/ie/archive/2006/08/22/712830.aspx">fixes and features</a> we can get excited about in <acronym title="Internet Explorer 7">IE7</acronym>. Well... sort of.</p>

<p>Following news that the new <span class="caps">PNG </span>transparency support might <a href="http://ajaxian.com/archives/ie-7-are-transparent-pngs-using-native-support">not be as native as previously supposed</a>, I ran into another strange issue while <a href="http://www.lowest-common-denominator.com/2006/08/dehacking_css_for_ie7_beta_3.php">preparing a website for <span class="caps">IE7</span></a>. </p>

<p>In some circumstances, transparent <span class="caps">PNG </span>background images of a parent node will be rendered within a child node. <span class="caps">IE7 </span>seems to triggered this behaviour when a Flash movie is embedded into a page. This situation isn't particularly unusual, for example, we have a heading with a link inside:</p>

<div class="code"><code>&lt;h2&gt;
   &lt;a href=&quot;http://example.com&quot;&gt;My Great Heading!&lt;/a&gt;
&lt;/h2&gt;</code></div>

<p>The <code>h2</code> is then styled with a background image and the link is coloured red when hovered over:</p>

<div class="code"><code>h2 {
   width: 100px;
   height: 50px;
   background: transparent url(myImage.png) no-repeat top;
}

h2 a:hover {
   color: #FF0000;
}</code></div>

<p>If a Flash movie is embedded in a page the link will render the background of its parent when hovered over. Strangely, minimising, then restoring the window will reset the link background (until it's hovered over again). Also, once the bug is triggered by a Flash movie, visiting pages without Flash will still render the background when the link is hovered over. Below is a screen capture of the rendering bug.</p>

<p><img alt="Screen capture of IE7 PNG rendering bug" src="http://www.lowest-common-denominator.com/images/ie7_png_screenshot.jpg" width="371" height="342" /></p>

<p>Check out the live demos (you'll need <a href="http://www.microsoft.com/windows/ie/downloads/default.mspx"><span class="caps">IE7</span> Beta3</a>): </p>

<p><a href="/demos/ie7_png_tests/ie7_png_tests_no_flash.html">Transparent <span class="caps">PNG </span>test with no Flash</a></p>

<p><a href="/demos/ie7_png_tests/ie7_png_tests_flash.html">Transparent <span class="caps">PNG </span>test with Flash movie embedded</a></p>]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2006%2F08%2Fie7_png__transparency_and_flash.php&amp;seed_title=IE7+PNG+transparency+and+Flash</link>
         <guid>http://www.lowest-common-denominator.com/2006/08/ie7_png__transparency_and_flash.php</guid>
         <category></category>
         <pubDate>Wed, 23 Aug 2006 23:12:17 -0100</pubDate>
      </item>
      
      <item>
         <title>De-Hacking CSS for IE7 Beta 3</title>
         <description><![CDATA[<p>This is an update on my <a href="http://www.lowest-common-denominator.com/2006/08/the_css_hack_rapture_is_nearly.php">previous post</a> about checking <acronym title="Cascading Style Sheet">CSS</acronym> hacks in <acronym title="Internet Explorer 7">IE7</acronym>. I'll run through a <span class="caps">CSS </span>browser check using <a href="http://ingeniousireland.com">Ingenious Ireland</a> as an example.</p>

<h3>Getting the tools together</h3>

<p>When you install Internet Explorer 7 Beta 3, as downloaded from the <a href="http://www.microsoft.com/windows/ie/default.mspx">Microsoft website</a>, Internet Explorer 6 is replaced. This is bad news for web developers who understand <acronym title="Internet Explorer 6">IE6</acronym> isn't quite off our backs just yet and want to be able to test easily in multiple browsers.</p>

<p>There are two ways to have both <span class="caps">IE6 </span>and <span class="caps">IE7 </span>run on the same machine (three if you include Virtual PC but I resent having to install a whole OS just to run a browser!). The first is to install <span class="caps">IE7 </span>then a standalone version of <span class="caps">IE6 </span>from <a href="http://browsers.evolt.org/?ie%2F32bit%2Fstandalone">evolt.org's browser archive</a>.</p>

<p>The second method is slightly more complicated, involving changes to the registry and startup scripts, but it allows you to keep the default installation of <span class="caps">IE6 </span>and run <span class="caps">IE7 </span>as a standalone. This is done using either the method described by <a href="http://weblogs.asp.net/jgalloway/archive/2006/07/26/IE7-Standalone-_2800_Updated-for-IE7-Beta-3_2900_.aspx">Jon Galloway</a> or the pre-packaged <a href="http://tredosoft.com/IE7_standalone">standalone installer</a> created by Yousif Al Saif.</p>

<p>Whilst <span class="caps">IE7 </span>is still in beta, I prefer to keep <span class="caps">IE6 </span>installed as the default, so older versions and beta browsers are run as the exception. With this in mind I opt for the second method and use the standalone installer for <span class="caps">IE7</span>beta3. Once the final version of <span class="caps">IE7 </span>is released (<a href="http://www.microsoft.com/technet/updatemanagement/windowsupdate/ie7announcement.mspx">4th Quarter of 2006</a>, allegedly), I'll switch to the first method; running <span class="caps">IE6 </span>as a standalone.</p>

<h3>Checking previous hacks</h3>

<p>After getting the browser sorted, I want to check through the hacks I implemented for <span class="caps">IE6 </span>and see if they still affect <span class="caps">IE7.</span></p>

<p>I keep all browser specific rules quarantined in separate .css files. Much like plague victims. These get included in the top of my main css file. Opening up ie6win.css I can see the various workarounds and hacks I used to bully <span class="caps">IE6 </span>into submission.</p>

<p>In my example, all the rules use the invalid <code>* html</code> selector to target for <span class="caps">IE6.</span> As mentioned in the previous article, this particularly useful bug has been fixed so none of these rules will apply to <span class="caps">IE7.</span> This is actually good though, because some of the rules used to workaround <span class="caps">IE6 </span>bugs and deficiencies are no longer needed.</p>

<h4>The good news -- transparent <span class="caps">PNG </span>support</h4>

<p>Most of the <span class="caps">IE6 </span>specific rules we used for Ingenious Ireland were to overcome the browsers terrible support for transparent <acronym title="Portable Network Graphic">PNG</acronym> images. For example, the page header is a transparent <span class="caps">PNG </span>so its rounded corners would allow the various colours of background to show through:</p>

<div class="code"><code>* html #header{
   background-image:none;
   filter:progid:DXImageTransform.Microsoft.</code> <span class="breakMark">&raquo;</span><br /><code>      AlphaImageLoader(enabled=true, </code> <span class="breakMark">&raquo;</span><br /><code>      sizingMethod=crop, src='furniture/banner.png');
   position: static;
}</code></div>

<p>This rule defines a proprietary filter allowing partial support for <span class="caps">PNG </span>transparency.</p>

<p>Luckily, <a href="http://blogs.msdn.com/ie/archive/2005/04/26/412263.aspx"><span class="caps">IE7 </span>will support <span class="caps">PNG </span>transparency</a>, and because <span class="caps">IE7 </span>will not recognise the invalid <code>* html</code>, it will not see the <span class="caps">IE6 </span>specific rule, so we can just forget about all this filtering nonsense.</p>

<h4>The bad news -- the language pseudo selector</h4>

<p>As Ingenious Ireland is a bilingual site, certain text-carrying background images, defined in the <span class="caps">CSS, </span>are selected based on the value of the language attribute in the <code>html</code> tag. This attribute can be targeted in the <span class="caps">CSS </span>using the <code>:lang()</code> pseudo selector, e.g. an Irish banner image:</p>

<div class="code"><code>html:lang(ga-IE) #header {
   background-image: url(banner_irish.png)
}</code></div>

<p>(More details about this technique have been described in <a href="http://www.lowest-common-denominator.com/2006/07/designing_a_bilingual_website.php">a previous article</a>.)</p>

<p>The problem is, no version of Internet Explorer on the PC supports the <code>:lang()</code> pseudo selector, including <span class="caps">IE7. </span>(IE 5.x on the Mac does support it, but it always was the Best Browser In The World.)</p>

<p>We used an additional value for the class attribute in the body tag to specify the base language of a page for browsers that don't support the <span class="caps">CSS </span>language pseudo selector, targeting it thus:</p>

<div class="code"><code>* html body.gaIE #header{
   background-image: url(../furniture/banner_ga.png);
}</code></div>

<p>Now the Internet Explorer team have fixed all those useful bugs we used to filter for <span class="caps">IE6, </span>like <code>* html</code> how can we target rules for <span class="caps">IE7</span>?</p>

<h3>Conditional Comments and The Volatile Header</h3>

<p>If you want to target <span class="caps">CSS </span>rules specifically for Internet Explorer, the official recommendation from Microsoft is to use <a href="http://msdn.microsoft.com/workshop/author/dhtml/overview/ccomment_ovw.asp">conditional comments</a>. This is a proprietary method for specifying <em>html</em> for various combinations of Internet Explorer 5 and above.</p>

<p>So, to link an <span class="caps">IE7 </span>only stylesheet, we add the following into the head of every document:</p>

<div class="code">&lt;<code>!--[if IE 7]</code>&gt;<code>
   &lt;link rel=&quot;stylesheet&quot; ref=&quot;/stylesheets/ie7win.css&quot;/&gt;
</code>&lt;<code>![endif]--</code>&gt;</div>

<p>All rules we want to target for just <span class="caps">IE7 </span>go in this stylesheet.</p>

<p>Why, after our best efforts creating stable mark-up, do we have to make additions to the header to make up for a browsers <span class="caps">CSS </span>deficiencies? I'd much prefer to link one stylesheet per alternative or device. The <span class="caps">IE7 </span>only stylesheet is really just an supplement for the main, screen stylesheet, not a new alternative.</p>

<p>It's a shame there isn't an officially sanctioned way to target for specific browsers within the <span class="caps">CSS </span>specification. The reality is we use hacks to achieve this anyway with the potential risk that the hack will be fixed, or new browser implementations will interpret the rules in an unexpected manner. Much better would be to provide a safe, stable way to achieve this by using some sort of conditional in the <span class="caps">CSS.</span></p>]]></description>
         <link>http://lowest-common-denominator.com/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2.0%29&amp;seed=http%3A%2F%2Fwww.lowest-common-denominator.com%2F2006%2F08%2Fdehacking_css_for_ie7_beta_3.php&amp;seed_title=De-hacking+CSS+for+IE7+beta+3</link>
         <guid>http://www.lowest-common-denominator.com/2006/08/dehacking_css_for_ie7_beta_3.php</guid>
         <category></category>
         <pubDate>Sun, 13 Aug 2006 22:05:04 -0100</pubDate>
      </item>
      
   </channel>
</rss>
