<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Digital Ramble &#187; msie6</title>
	<atom:link href="http://www.digitalramble.com/tags/msie6/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.digitalramble.com</link>
	<description>surveyor of the foothills, valleys and occasional sheer cliff drops of the world of computer programming...</description>
	<lastBuildDate>Wed, 30 May 2007 05:37:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<image>
  <link>http://www.digitalramble.com</link>
  <url>http://www.digitalramble.com/wordpress/favinit.gif</url>
  <title>Digital Ramble</title>
</image>
		<item>
		<title>fixing IE7 layout problems</title>
		<link>http://www.digitalramble.com/2006/10/30/82/</link>
		<comments>http://www.digitalramble.com/2006/10/30/82/#comments</comments>
		<pubDate>Mon, 30 Oct 2006 18:03:37 +0000</pubDate>
		<dc:creator>Cindy</dc:creator>
				<category><![CDATA[browsers]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[msie6]]></category>
		<category><![CDATA[msie7]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.digitalramble.com/2006/10/30/82/</guid>
		<description><![CDATA[As I noted earlier, while IE6 displayed this site (in Nearly-Sprung) correctly, IE7 did not.
The reason is this:  the bug in IE6 and previous that allowed the following CSS hack to work

* html .anelement { layout fixes }

has been fixed in IE7.  However, many of the layout issues that were fixed in the [...]]]></description>
			<content:encoded><![CDATA[<p>As I noted earlier, while IE6 displayed this site (in Nearly-Sprung) correctly, IE7 did not.</p>
<p>The reason is this:  the bug in IE6 and previous that allowed the following CSS hack to work<br />
<pre><code>
* html .anelement { layout fixes }
</code></pre><br />
has been fixed in IE7.  However, many of the layout issues that were fixed in the escaped code have NOT been fixed.  In my case the particular culprits were these:<br />
<pre><code>
/* Essential Layout (IE Fix) */
* html #leftsidebar {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left: 150px;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* RC fullwidth */
}

/* Hides from IE5-mac \*/
* html li {height: 1%;}
/* End hide from IE5-mac */

/* Hides from IE5-mac \*/
* html #postnavigation {width: 145px; height: 2px;}
/* End hide from IE5-mac */

</code></pre><br />
IE7, like IE6, needs the <code>left:</code> setting, but as it no longer works with the <code>* html</code> escape (for an explanation of why this is, see the excellent article <a href="http://www.positioniseverything.net/articles/ie7-dehacker.html">here</a>) it is not getting these settings as it should.  The result on my site was the left sidebar&#8217;s utter disappearance.</p>
<p>The workaround is to isolate the IE hacks into a separate .css file and call it with an escape that all IE derivatives still honor.  (Wonder how long this escape will last&#8230;)  While tedious, this is overall a better solution than embedding hacks within a css file.  Such hacks can be relegated to a separate file which can later be removed when IE is finally fixed (these glasses seem awfully pink, don&#8217;t they?).</p>
<p>So, in general this is the way to fix such problems.  I checked my css files for any instances of<br />
<pre><code>
* html
</code></pre><br />
Some of these might be in a &#8220;<a href="http://www.communitymx.com/content/article.cfm?page=2&#038;cid=C37E0">holly hack</a>,&#8221; which should be moved along with the rest of the markup.</p>
<p>I created a new css file, <code>iehacks.css</code> is fine, and dumped all the hacks into this file. Now, I <b>removed all instances of * html</b> (this is the crucial part, otherwise no improvement is seen for IE7).  In my case, this new file wound up containing the following:<br />
<pre><code>
#leftsidebar {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left: 150px;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* RC fullwidth */
}

/* holly hacks to fix peekabo bugs in IE */

/* Hides from IE5-mac \*/
li {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: 1%;
}
/* End hide from IE5-mac */

/* Hides from IE5-mac \*/
#postnavigation {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width: 145px; height: 2px;
}
/* End hide from IE5-mac */
</code></pre><br />
(Note the holly hacks in the last two rules.)  Now, I needed to modify my <code>&lt;head&gt;</code> element to include this css file, which was easily done via adding<br />
<pre><code>
&lt;!--[if IE]&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;iehacks.css&quot; /&gt;
&lt;![endif]--&gt;
</code></pre></p>
<p>In WordPress, this meant modifying my header.php file (of course I made a backup copy of it first) as follows:<br />
<pre><code>
&lt;!--[if IE]&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;&lt;?php bloginfo(&#039;stylesheet_directory&#039;); ?&gt;/iehacks.css&quot; /&gt;
&lt;![endif]--&gt;
</code></pre><br />
I added this just before the call to <code>wp_head</code>.  This would make a VERY simple plugin; I could create one if people wish.  But this is pretty straightforward as is.</p>
<p><b>Update</b><br />
Probably the best way to do this, allowing for testing in IE7 before proceeding completely, is to <i>copy</i> the suspect elements over to the new css file.  Since IE7 doesn&#8217;t work with the current css file anyway, it doesn&#8217;t hurt to leave the elements in place while getting the iehacks file to work.  Add the [if IE] call to the headers and check in IE6, IE7.  Once everything looks okay, then remove the suspect elements from the original css file, one by one.</p>
<hr/>Copyright &copy; 2010 <strong><a href="http://www.digitalramble.com">Digital Ramble</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@www.digitalramble.com so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://www.digitalramble.com/2006/10/30/82/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>the new &amp; improved Internet Explorer</title>
		<link>http://www.digitalramble.com/2006/10/26/80/</link>
		<comments>http://www.digitalramble.com/2006/10/26/80/#comments</comments>
		<pubDate>Thu, 26 Oct 2006 17:36:22 +0000</pubDate>
		<dc:creator>Cindy</dc:creator>
				<category><![CDATA[applications]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[compatibility]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[msie6]]></category>
		<category><![CDATA[msie7]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.digitalramble.com/2006/10/26/80/</guid>
		<description><![CDATA[Roger Johansson (of 456 Berea Street) and Lorelle VanFossen both remind us that the new Internet Explorer has been released into the wild and what does that mean for all our web pages?
I want to point out that Internet Explorer really has three main versions right now.  (I have to support multiple platforms, so [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.456bereastreet.com/archive/200610/internet_explorer_7_final_is_now_available/">Roger Johansson</a> (of 456 Berea Street) and <a href="http://lorelle.wordpress.com/2006/10/16/are-wordpress-themes-and-plugins-ready-for-internet-explorer-7/">Lorelle VanFossen</a> both remind us that the new Internet Explorer has been released into the wild and what does that mean for all our web pages?</p>
<p>I want to point out that Internet Explorer really has three main versions right now.  (I have to support multiple platforms, so this sort of thing is a large concern for me).  IE7 is intended only for XP and Vista.  Anyone who has not migrated to either of these platforms will use IE6.  Since Win2K is pretty decent, and there&#8217;s a lot of people out there who haven&#8217;t bothered to shell out for the bigger badder etc computer, I expect that the web pages I work on will continue to have a substantial proportion of IE6 users.  So the IE6 bugs remain a real and ongoing concertn.</p>
<p>In testing with IE7, we have noticed that there can be different behavior between IE7 on XP and IE7 on Vista!  Now, some of this may be due to the different beta versions of Vista &#8212; I believe we&#8217;ve gone through at least two updates on Vista beta.  However the possibility remains very high that IE7XP and IE7Vista will behave differently from each other as well.</p>
<p>So now that means <i>three</i> platforms to support in place of one!</p>
<p>In any case I&#8217;m aware that IE7 does not handle this website gracefully even though IE6 does, as you can see in <a href="http://digitalramble.com/public/misc/digitalramble-xpsp2-ie7rc1.jpg">this screen shot</a>.  </p>
<hr/>Copyright &copy; 2010 <strong><a href="http://www.digitalramble.com">Digital Ramble</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@www.digitalramble.com so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://www.digitalramble.com/2006/10/26/80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Part III: wandering through unicode, legacy fonts, and browsers</title>
		<link>http://www.digitalramble.com/2006/08/10/58/</link>
		<comments>http://www.digitalramble.com/2006/08/10/58/#comments</comments>
		<pubDate>Fri, 11 Aug 2006 00:59:54 +0000</pubDate>
		<dc:creator>Cindy</dc:creator>
				<category><![CDATA[browsers]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[msie6]]></category>
		<category><![CDATA[msie7]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.digitalramble.com/2006/08/10/58/</guid>
		<description><![CDATA[Unicode &#8212; Supplementary Planes
Back to Unicode.  Even Unicode needs room to expand.  The Basic Multilingual Plane (BMP, also known as Plane 0) has codepoints 0 through FFFF hex (0 through 65,535) and contains, ignoring various special mathematical characters, historical quirks, and just plain oddities, most of the current alphabets and symbols in use [...]]]></description>
			<content:encoded><![CDATA[<h3>Unicode &#8212; Supplementary Planes</h3>
<p>Back to Unicode.  Even Unicode needs room to expand.  The Basic Multilingual Plane (BMP, also known as Plane 0) has codepoints 0 through FFFF hex (0 through 65,535) and contains, ignoring various special mathematical characters, historical quirks, and just plain oddities, most of the current alphabets and symbols in use today, even including the vast array of Chinese kanji.  But of course there&#8217;s more room needed once historical alphabets and other special character sets are also considered.  <i>Supplementary planes</i> such as Plane 1 are simply sets of 65,535 code points following Plane 0 (some of us refer to these as astral planes <img src='http://www.digitalramble.com/wordpress/smilies/yahoo_smiley.gif' alt='&#58;&#45;&#41;' class='wp-smiley' width='18' height='18' title='&#58;&#45;&#41;' /> ).  Using hexadecimal notation, it&#8217;s easy to spot Plane 1: all Plane 0 codepoints use four hexadecimal digits; all Plane 1 use five, etc.</p>
<p>Here is an example of a Plane 1 character: <code>&amp;#x1D50A;</code> which renders as 𝔊 (marks a septaugint reference).  In case anyone viewing this is having trouble, here&#8217;s an image: <img src="http://digitalramble.com/public/unex/septaugint.jpg"> </p>
<p>To set things up to view this can be an interesting process.  First of all it&#8217;s necessary to find a unicode font that supports plane 1 characters.   Not all such will actually show the above, for example <a target="window" href="http://home.att.net/~jameskass/">Code2001</a>, an otherwise excellent unicode font, does not include historical Greek musical notation however <a href="http://scholarsfonts.net/cardofnt.html">Cardo</a> works nicely.  Just because a font is unicode based does not mean it will be &#8220;complete&#8221; (such a font would be staggeringly large).  In particular, when choosing among unicode fonts, pay attention to which version of  unicode is being supported, and what the target languages are.  Plane 1 characters start to appear in Unicode versions 3.2 and up.</p>
<p>Second, the operating system might need slight adjusting to see Plane 1.  I&#8217;m talking, of course, about Windows, XP and earlier versions.  <a target="window" href="http://www.i18nguy.com/surrogates.html">This page</a> discusses how to do the registry edits necessary both for the operating system and for IE6 <img src='http://www.digitalramble.com/wordpress/smilies/yahoo_eyeroll.gif' alt='&#56;&#45;&#124;' class='wp-smiley' width='18' height='18' title='&#56;&#45;&#124;' />.</p>
<p>Linux/*nix, Mac, and Vista are all presently able to handle Plane 1 without modifications. My understanding is that for Windows Me and anything prior to NT, it&#8217;s hopeless.  </p>
<p>Third, applications in general and browsers in particular may need slight tweaking to see Plane 1 characters.  As usual, IE6 is the worst offender in this regard requiring not just setup but also a registry edit.  In general, once the browser is set up with a Plane 1 aware font, it&#8217;s good to go.  Firefox, Safari, Opera, and Konqueror all fall under this category.</p>
<p>A few notes: IE6 needs to be set to user-defined encoding plus the extended font needs to be listed under User Defined (rather than any of the specific regions listed, which refer back to non-unicode encodings as discussed in part 1).  Opera actually reverses from the general MO of other browsers: under Tools->Preferences->Advanced->International Fonts, it&#8217;s possible to set a particular unicode font to a particular language (going by Unicode&#8217;s code blocks).  This is the direction other browsers should no doubt take in the future.</p>
<hr/>Copyright &copy; 2010 <strong><a href="http://www.digitalramble.com">Digital Ramble</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@www.digitalramble.com so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://www.digitalramble.com/2006/08/10/58/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>fun with browsers and javascript</title>
		<link>http://www.digitalramble.com/2006/07/27/61/</link>
		<comments>http://www.digitalramble.com/2006/07/27/61/#comments</comments>
		<pubDate>Thu, 27 Jul 2006 19:43:29 +0000</pubDate>
		<dc:creator>Cindy</dc:creator>
				<category><![CDATA[browsers]]></category>
		<category><![CDATA[compatibility]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[msie6]]></category>
		<category><![CDATA[opera]]></category>

		<guid isPermaLink="false">http://www.digitalramble.com/2006/07/27/61/</guid>
		<description><![CDATA[Since javascript is a client side implementation (meaning that it is the browser and not the host site (such as is the case with php/perl/other cgi scripting) that actually runs the script) this means I can have endless fun finding out the many ways in which javascript gets completely hosed up.  
I mean, take [...]]]></description>
			<content:encoded><![CDATA[<p>Since javascript is a client side implementation (meaning that it is the <i>browser</i> and not the host site (such as is the case with php/perl/other cgi scripting) that actually runs the script) this means I can have endless fun finding out the many ways in which javascript gets completely hosed up.  </p>
<p>I mean, take a pretty simple bit of javascripting:<br />
<code>document.getElementById(&#039;cleanslate&#039;).innerHTML = s;</code><br />
where s is a nice little list of selectable (checkbox) items in a list to be output.</p>
<p>And then of course, in the html we have:<br />
<code>&lt;span id = &quot;cleanslate&quot;&gt;&lt;/span&gt;</code></p>
<p>How much simpler does it get?</p>
<p>Well.  It worked beautifully in Firefox.<br />
Didn&#8217;t do a single thing in IE6.</p>
<p>And it&#8217;s hard to figure out where to even <i>start</i>.  In no amount of googling have I found a book, or a faq, or any kind of documentation that extensively details the ways in which Javascript differs from browser to browser.  I would think this would be a huge niche.  I certainly found many many questions on this stuff.  Even if the differences are under constant change, I would still expect at least some online resources to be out there.  (Anyone know of any?)  </p>
<p>I did find another site that demonstrated a very similar problem: <a target="window" href="http://intertwingly.net/stories/2006/04/18/chameleon">Chameleon</a> but which offered no solution, only the illustration.</p>
<p>After much experimenting, I finally figured out that the issue was really this:<br />
<pre><code>
&lt;p&gt;
&lt;span id = &quot;cleanslate&quot;&gt;&lt;/span&gt;
</code></pre></p>
<p>There is something about the unclosed <code>&lt;p&gt;</code> that IE6 does not like.  This actually kind of makes sense &#8212; since it&#8217;s not closed (yes, I know, slap my hands already), the question is what is the actual DOM?  Firefox obviously defaults to something reasonable to handle it, IE6 takes the novel approach of displaying nothing at all.  Well the &#8220;Sun Java Console&#8221; (now there&#8217;s a misnomer if there ever was) does come up with the every helpful:<br />
<code>&quot;Unknown run time error on line...&quot;</code></p>
<p>As an aside: I just gotta love this &#8220;Sun Java Console&#8221; for its utter uselessness.  It&#8217;s not even possible to copy and paste the message somewhere for future reference.  I can&#8217;t make use of IE6 until I close the window.  It offers no means of running anything, debugging, tracing, etc.  There&#8217;s an <a target="window" href="http://www.microsoft.com/downloads/details.aspx?familyid=2f465be0-94fd-4569-b3c4-dffdf19ccd99&#038;displaylang=en">extension </a> available at Microsoft but even after I jumped through the <a target="window" href="http://en.wikipedia.org/wiki/Windows_Genuine_Advantage">WGA</a> hoops to download it, when I ran it to install it, it said &#8220;No Installation Data available.&#8221;  It&#8217;s particularly annoying after using so many lovely Firefox extensions that enable extensive Javascript debugging.</p>
<p>But here&#8217;s the odd part.  Removing the <code>&lt;p&gt;</code> altogether fixed IE6.  Finishing it off <i>before</i> the opening <code>&lt;span&gt;</code> worked, as well.  But <i>enclosing</i> the span within the paragraph did <i>not</i> work.  Throughout all these variations, Firefox worked throughout. </p>
<p>Opera, unfortunately, is an entirely different story&#8230;!  It looks fine, on the first pass.  But it&#8217;s clearly not actually getting the checkboxed items into its form when the form button on that page is pressed.  Ugh.</p>
<hr/>Copyright &copy; 2010 <strong><a href="http://www.digitalramble.com">Digital Ramble</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@www.digitalramble.com so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://www.digitalramble.com/2006/07/27/61/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Part II: wandering through unicode, legacy fonts, and browsers</title>
		<link>http://www.digitalramble.com/2006/07/25/57/</link>
		<comments>http://www.digitalramble.com/2006/07/25/57/#comments</comments>
		<pubDate>Tue, 25 Jul 2006 23:46:41 +0000</pubDate>
		<dc:creator>Cindy</dc:creator>
				<category><![CDATA[compatibility]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[konqueror]]></category>
		<category><![CDATA[msie6]]></category>
		<category><![CDATA[msie7]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[utf-8]]></category>

		<guid isPermaLink="false">http://www.digitalramble.com/2006/07/25/57/</guid>
		<description><![CDATA[Precomposed versus Combining
In the course of putting together the encodings (called code points) in Unicode, a number of decisions had to be made regarding the current existing encodings, particularly well known and/or well established ones.  In some cases, even though the Unicode Consortium has a particular policy regarding some encode vs render issues, there [...]]]></description>
			<content:encoded><![CDATA[<h3>Precomposed versus Combining</h3>
<p>In the course of putting together the encodings (called code points) in Unicode, a number of decisions had to be made regarding the current existing encodings, particularly well known and/or well established ones.  In some cases, even though the Unicode Consortium has a particular policy regarding some encode vs render issues, there are inconsistent inclusions due to this grandfathering of prior established encodings and (to be quite honest) outright mistakes on the part of the Consortium.   The question of precomposed characters versus combining characters is a classic one.</p>
<p><span id="more-57"></span></p>
<p>As a simple example, let&#8217;s take the greek letter alpha &#8212; <font face="Cardo">ά</font> &#8212; with an acute accent.  Should this be represented as <code>&amp;#x1F85;</code> or as <code>&amp;#x03B1;&amp;#x0314;&amp;#x0301;&amp;#x0345;</code>?  (See <a target="window" href="http://www.unicode.org/charts/PDF/U0370.pdf">here</a> and <a target="window" href="http://www.unicode.org/charts/PDF/U0300.pdf">here</a> for the code charts.) In other words, should a single fixed code point be used to represent something that&#8217;s really a combination of a letter and an accent, or should there be a code point for the letter and a code point for a <i>combining</i> accent which is then combined with the previous letter?</p>
<p>My two cents worth is that since the <i>concept</i> of an accent applies to more than one character, it is an independent concept, and thus combining is the way to go.  Not to mention more economical &#8212; with this approach, to add an accent to any other character requires only one additional code point in the charts.  Implementing it the other way means for each character that might be accented, a second code point must be reserved &#8212; and as that cannot possibly be comprehensive, it will be by nature reserved to &#8220;legal&#8221; or &#8220;existing&#8221; combinations at the very least.  So why are both present?  That&#8217;s the grandfather clause at work, since the concept of combining characters postdates the establishment of many of the old encodings.  But philosphically, the Unicode Consortium&#8217;s wise enough to agree with me <img src='http://www.digitalramble.com/wordpress/smilies/yahoo_wink.gif' alt='&#59;&#45;&#41;' class='wp-smiley' width='18' height='18' title='&#59;&#45;&#41;' /></p>
<p>Now suppose a web developer needs to represent some manuscript online.  The texts may themselves contain &#8220;mistakes&#8221; which are intended to be reproduced as is.  For example, in (ancient) Greek, an epsilon will never be combined with a circumflex due to the rules of the language.  But perhaps an idiosyncratic author did so anyway, or a manuscript is badly marked up, etc.  If the only encoding at hand for ancient Greek contained only the &#8220;legal&#8221; stuff, I&#8217;d be out of luck if I needed to show this.  Given this, clearly the use of combining diacritics makes every sense.  While there is no precomposed character for epsilon-with-circumflex, I could still use <code>&amp;#x03B5;&amp;#x0342;</code> to represent this &#8212; <span style="font-family:Cardo; font-size:100%;">&#x03B5;&#x0342;̂</span> &#8230;</p>
<p>But wait!  That&#8217;s not quite the end of the story!  Not all browsers are good about combining diacritics.  It&#8217;s actually something of an artform, and the positionings will depend whether the base letter is small or caps, and whether there are other diacritics also being combined with it.  Frankly, most browsers <i>don&#8217;t</i> cope so well.  So to get a usable display in as many cases as possible, I find it worth scanning ahead in the text to find all the associated diacritics and checking for the existence of a precomposed character before attempting to do it through building it up.</p>
<h3>Test Case</h3>
<p>Let&#8217;s take an interesting example here: <img src="http://digitalramble.com/public/unex/alpha.png" /><br />
That is an alpha with a rough breathing, an acute accent, and an iota subscript.<br />
If the alpha is uppercased, it looks like this: <img src="http://digitalramble.com/public/unex/Alpha.png" /><br />
Notice how the positioning of the iota subscript changes when alpha is capital, and both the breathing and the accent sidle a little to the side to get out of the base letter&#8217;s way.</p>
<p>I&#8217;m going to demonstrate how this pair of letters looks in precomposed versus combining notation in assorted browsers and operating systems.  First of all here&#8217;s the table I used to build up my examples.  The first column has the precomposed character for each of the above images.  The second has the base character plus the combining diacritics for the above images.  The diacritics are in &#8220;proper&#8221; order.  This order is particular to each language, and in this case the order is supposed to be breathings-accents-iotas and that is what drives the order you see in the final representation &#8212; the breathing will always be to the left of an accent, and so on.  The third column has the diacritics in reversed order.  This is a very interesting situation that I don&#8217;t believe has yet been well enough assessed.  I don&#8217;t even know that it <i>should</i> be: just as it&#8217;s reasonable to expect words to only  make sense if their letters are ordered properly, it could be just as reasonable to expect diacritics to be listed in proper order.  On the other hand, it might be reasonable for some programs (especially a word processor) to order them properly &#8212; these <i>are</i> computers and can churn out a few more CPU cycles, after all.  I found it very interesting how badly handled this third column was, so I included it for interest&#8217;s sake.</p>
<table class="unicodetest" cellpadding="5">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<td class="unicodetest"><font face="Cardo">&#x1F85;</font></td>
<td class="unicodetest">&#x03B1;&#x0314;&#x0301;&#x0345;</td>
<td class="unicodetest">&#x03B1;&#x0345;&#x0301;&#x0314;</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td class="unicodetest">&#x1F8D;</td>
<td class="unicodetest">&#x0391;&#x0314;&#x0301;&#x0345;</td>
<td class="unicodetest">&#x0391;&#x0345;&#x0301;&#x0314;</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<p>There are several things to note here.  First of all, particular diacritics, depending on the language of course, have particular positions.  Some combine below, some along the top, some to either side and some as &#8220;overstrikes.&#8221;  In addition, if there are multiple diacritics that are positioned similarly there is usually an order of precedence.  Finally, if the letter is capitalised, that often affects the placement of the diacritic.  In the images above (and in the table, if your browser is working correctly) the iota subscript moves to the side of the capital alpha.</p>
<p>First up on the chopping block: Internet Explorer (IE6 and IE7):</p>
<table border="1">
<tr style="background-color:#e6f2f2;">
<td></td>
<td>IE6 (SP2)</td>
<td>IE7 (beta 3)</td>
</tr>
<tr>
<td>Windows XP SP2 w/Cardo</td>
<td><img src="http://digitalramble.com/public/unex/ie6-windows-cardo.jpg" /></td>
<td><img src="http://digitalramble.com/public/unex/ie7-windows-cardo.jpg" /></td>
</tr>
<tr>
<td>Windows XP SP2 w/regedits &#038; w/Cardo</td>
<td><img src="http://digitalramble.com/public/unex/ie6-windows-regedits-cardo.jpg" /></td>
<td><img src="http://digitalramble.com/public/unex/ie7-windows-regedits-cardo.jpg" /></td>
</tr>
<tr>
<td>Vista (beta 2) w/Cardo</td>
<td align="center">n/a</td>
<td><img src="http://digitalramble.com/public/unex/ie7-vista-cardo.jpg" /></td>
</table>
<p>I will admit I was surprised at how well Internet Explorer did here when it&#8217;s usually so miserable at dealing with odd things, <i>especially</i> internationalization issues.  However, do notice that it&#8217;s clear MS didn&#8217;t consider the case where the combining characters might not be &#8220;in order&#8221;.    In the third column, the diacritics along the top haven&#8217;t been properly spaced from each other, nor are they shifted slightly in the capital letter version.  And the iota fails to adjust to the capital letter.</p>
<p>Moving along to Firefox and Opera, we have the following table:</p>
<table border="1">
<tr style="background-color:#e6f2f2;">
<td></td>
<td>Firefox (1.5)</td>
<td>Opera (9)</td>
</tr>
<tr>
<td>Windows XP SP2 w/Cardo</td>
<td><img src="http://digitalramble.com/public/unex/firefox-windows-cardo.jpg" /></td>
<td><img src="http://digitalramble.com/public/unex/opera-windows-cardo.jpg" /></td>
</tr>
<tr>
<td>Windows XP SP2 w/regedits &#038; w/Cardo</td>
<td><img src="http://digitalramble.com/public/unex/firefox-windows-regedits-cardo.jpg" /></td>
<td><img src="http://digitalramble.com/public/unex/opera-windows-regedits-cardo.jpg" /></td>
</tr>
<tr>
<td>Vista (beta 2) w/Cardo</td>
<td><img src="http://digitalramble.com/public/unex/firefox-vista-cardo.jpg" /></td>
<td><img src="http://digitalramble.com/public/unex/opera-vista-cardo.jpg" /></td>
</tr>
<tr>
<td>Linux (Ubuntu 6.06) w/Cardo</td>
<td><img src="http://digitalramble.com/public/unex/firefox-linux-cardo.jpg" /></td>
<td><img src="http://digitalramble.com/public/unex/opera-linux-cardo.jpg" /></td>
</tr>
<tr>
<td>Mac 10.4.7 w/Cardo</td>
<td><img src="http://digitalramble.com/public/unex/firefox-mac-cardo.jpg" /></td>
<td><img src="http://digitalramble.com/public/unex/opera-mac-cardo.jpg" /></td>
</tr>
</table>
<p>What I find very interesting is how the registry edits for Windows XP improve both Firefox and Opera&#8217;s ability to display combining characters properly.  However, this ability immediately disappears in the tricky third column.  </p>
<p>I&#8217;m surprised by Opera&#8217;s complete failure to try combining the characters on the Mac, especially since it did combining in both Windows and Linux.  Note that it simply listed each after the base letter in the order given in the table.  Opera lets you define which font you want to use for the &#8216;Greek and Coptic&#8217; and the &#8216;Greek Extended&#8217; blocks. Now, I&#8217;ve set Cardo as my default font for everything, so that should override anything that&#8217;s there.  &#8220;Should&#8221; being the operative word.  Here&#8217;s the problem: I go to Preferences &#8211;> Web Pages &#8211;> Normal Font and I select Cardo there.  However, this doesn&#8217;t seem to affect the display of Greek text in Mac Opera. This is odd, since it does affect the display of Greek in Linux and Windows Operas.  I can instead change the display of Greek text in MacOpera by going through Preferences &#8211;> Advanced &#8211;> Fonts &#8211;> International Fonts and there selecting &#8216;Greek&#8217; as the &#8216;writing system&#8217;. However, Cardo is not listed here. And since &#8216;Greek&#8217; is actually Opera&#8217;s name for the &#8216;Greek and Coptic&#8217; set, to make sure I can render all of Polytonic Greek correctly I also have to select &#8216;Extended Greek&#8217; as the writing system. Cardo is not listed there either. Why is it not listed there when it&#8217;s clearly installed and is available system-wide? I do not know. </p>
<p>Let&#8217;s check the last two browsers of interest: Konqueror and Safari:</p>
<table border="1">
<tr style="background-color:#e6f2f2;">
<td></td>
<td>Konqueror (3.5.2)</td>
<td>Safari (2.0.4)</td>
</tr>
<tr>
<td>Linux (Ubuntu 6.06) w/Cardo</td>
<td><img src="http://digitalramble.com/public/unex/konqueror-linux-cardo.jpg" /></td>
<td align="center">n/a</td>
</tr>
</tr>
<tr>
<td>Mac OS 10.4.7</td>
<td align="center">n/a</td>
<td><img src="http://digitalramble.com/public/unex/safari-mac-cardo.jpg" /></td>
</tr>
</table>
<p>I&#8217;m giving Konqueror bonus points for the creativity it shows in vertically stacking the rough breathing and accent.  Unfortunately, it&#8217;s completely invalid on technical merits.  The iota subscript isn&#8217;t even underneath the base letter, either.  Konqueror needs to completely fix this aspect of their rendering engine.  Surprisingly, though (and I say that because Konqueror and Safari both share the KHTML rendering engine) Safari comes out a winner here, rendering the combining characters correctly. </p>
<p>So what I see here is IE6 (shockingly enough), IE7, and Safari handling the combining characters the best.  I say that because both of them are able to render the test cases properly without any outside modifications.  Firefox&#8217;s correct rendering on Windows with regedits but <i>not</i> on any other operating system, nor on Windows without regedits leaves me to believe the credit lies not with the browser but with whatever effect the registry edits has on Windows.  Still it did a decent job and it handled the reordered combining letters no worse than the properly ordered combining letters.  Opera was neck to neck with Firefox for all the same reasons, but fell behind for its odd handling of the test cases on the Mac.  </p>
<p>Konqueror and Safari wind up being the most puzzling since they use the same rendering engine.  In theory, then, if one works, so should the other.  I may try to rustle up other versions of Konqueror on other Linux distributions and if anything else might be going on.</p>
<h3>Microsoft&#8217;s Registry Edits</h3>
<p>Microsoft details up to three registry edits that are necessary to to set up Windows NT, 2K and XP for unicode functionality.  (Vista comes already set up, and does seem to actually work.) The first edit is the most important.  It enables <a target="window" href="http://en.wikipedia.org/wiki/Uniscribe">Uniscribe</a> support which is what Windows applications use in order to be able to render Unicode characters.     It&#8217;s responsible for rendering input text, for substituting character variations according to context, and for ordering displayed text based on text flow direction.  </p>
<p>The second registry edit adds support for the supplementary plane characters in IE (which I will cover in the next post).  The third adds the ability (in Win XP only) to specify a default font for supplementary plane characters.</p>
<p>Presumably the first edit is what enables Firefox and Opera to be able to handle combining diacritics.  I&#8217;m at a loss to explain IE6&#8217;s behavior, unless a fairly recent patch to it enables the same thing.  Unfortunately, I don&#8217;t have an earlier unpatched IE6 to test that theory out with (if I&#8217;m correct, such an earlier version of IE6 would need this registry edit to display properly).  Installing certain language packages will also install the Uniscribe module &#8220;behind the scenes,&#8221; but as I had the same language packs before and after adding the registry edits, that doesn&#8217;t explain this either.</p>
<p>The full instructions for doing the registry edits may be found <a target="window" href="http://www.i18nguy.com/surrogates.html">here</a>.</p>
<h3>Excellent Resources</h3>
<p>For much more informative commentary, check these pages out:</p>
<ul>
<li><a target="windo" href="http://www.i18nguy.com/UnicodeBenefits.html">Benefits of the Unicode™ Character Standard</a>
<li><a target="window" href="http://www.i18nguy.com/unicode/codepages.html">Character Sets And Code Pages At The Push Of A Button</a>
<li><a target="window" href="http://www.cs.tut.fi/~jkorpela/chars.html#characters">More about the character concept</a> (the entire article is excellent as well)
<li><a target="window" href="http://www.alanwood.net/unicode/combining_diacritical_marks.html">Combining Diacritical Marks</a>
</ul>
<hr/>Copyright &copy; 2010 <strong><a href="http://www.digitalramble.com">Digital Ramble</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@www.digitalramble.com so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://www.digitalramble.com/2006/07/25/57/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
