{"id":298,"date":"2003-03-16T17:01:30","date_gmt":"2003-03-16T22:01:30","guid":{"rendered":"\/?p=298"},"modified":"2025-03-04T15:28:40","modified_gmt":"2025-03-04T20:28:40","slug":"fonts_in_icab_and_safari","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2003\/03\/16\/fonts_in_icab_and_safari\/","title":{"rendered":"Fonts in iCab and Safari"},"content":{"rendered":"<p>Safari does a great job at rendering. It&rsquo;s approximately as compatible with interactive sites as iCab. (Some work in one but not the other, and in both cases I occasionally have to use Internet Explorer.) I have some quibbles about the way it handles downloads and such, but it&rsquo;s still beta and I think this stuff will all improve.<\/p>\n\n\n\n<p>The area I&rsquo;m concerned about is font rasterization. I don&rsquo;t like fuzzy text, and Safari uses CoreGraphics, which is <a href=\"http:\/\/mjtsai.com\/blog\/2002\/11\/09\/i_believe_antialiasing_is.html\">incapable<\/a> of drawing nice crisp text. Some will say this is a feature, that the poor spacing is because it is more precisely following the font metrics. That&rsquo;s taking WYSIWYG too far. The first job of a browsing application like Safari should be to make the content readable. If that means using a hand-tuned bitmap that is less true to the actual printed font, I&rsquo;m all for it.<\/p>\n\n\n\n<p>I am also well aware that many people like small anti-aliased text. Fine. I don&rsquo;t want to take it away from you, and Apple wouldn&rsquo;t listen to me anyway. However, I think Apple should let the user control the tradeoff between <a href=\"http:\/\/daringfireball.net\/2003\/03\/antialiasing.html\">flavor<\/a> and readability. This should be a system-level preference, and it should also be overridable at the application or font level.\n\n<\/p>\n\n\n\n<p>Until Apple fixes this or the iCab folks improve their CSS support, I will be switching back and forth between iCab and Safari depending on the length and type of content, and on how much the page I&rsquo;m reading uses CSS. (Developers: I would pay good money for a standards-compliant browser that uses QuickDraw.)<\/p>\n\n\n\n<p>Here are some examples of how iCab and Safari render the documentation for <a href=\"http:\/\/developer.apple.com\/techpubs\/macosx\/Cocoa\/Reference\/Foundation\/ObjC_classic\/Classes\/NSMutableArray.html#\/\/apple_ref\/occ\/cl\/NSMutableArray\">NSMutableArray<\/a>.<\/p>\n\n\n\n<p>This is the class description in iCab. The body text is Geneva 10, the header is Helvetica, and the code is in <a href=\"http:\/\/hyperarchive.lcs.mit.edu\/HyperArchive\/Archive\/font\/pro-font-22.hqx\">ProFont<\/a>. The text is crisp. It may not be beautiful, but I find it very easy to read. Note the way the descenders are drawn in the underlined text and how easy it is to see ProFont&rsquo;s exaggerated punctuation.<\/p>\n\n\n\n<blockquote><img decoding=\"async\" src=\"http:\/\/mjtsai.com\/blog\/images\/2003-03-16-class-desc-icab-g.png\" alt=\"Class description in Geneva, displayed in iCab\" \/><\/blockquote>\n\n\n\n<p>This is the class description in Safari. The fonts are Geneva and ProFont. (Safari doesn&rsquo;t provide an option for finer control, except through a custom stylesheet.) The bold text doesn&rsquo;t appear bold because CoreGraphics doesn&rsquo;t create synthetic styles. The descenders and the underlining are mashed together. The &ldquo;anObject&rdquo; in the code font stands out, jarringly so. The punctuation in the extended code example is muddy.<\/p>\n\n\n\n<blockquote><img decoding=\"async\" src=\"http:\/\/mjtsai.com\/blog\/images\/2003-03-16-class-desc-sfri-g.png\" alt=\"Class description in Geneva, displayed in Safari\" \/><\/blockquote>\n\n\n\n<p>This is the top of the page in iCab. The header is anti-aliased with QuickDraw, and I think it looks nice. The indented headers appear very bold. My only complaint is that there&rsquo;s a bit too much spacing after the opening parens.<\/p>\n\n\n\n<blockquote><img decoding=\"async\" src=\"http:\/\/mjtsai.com\/blog\/images\/2003-03-16-header-icab-g.png\" alt=\"Class header in Geneva, displayed in iCab\" \/><\/blockquote>\n\n\n\n<p>Here it is in Safari. Now it&rsquo;s really obvious that Safari can&rsquo;t do bold Geneva. The paren spacing is much better, though.<\/p>\n\n\n\n<blockquote><img decoding=\"async\" src=\"http:\/\/mjtsai.com\/blog\/images\/2003-03-16-header-sfri-g.png\" alt=\"Class header in Geneva, displayed in Safari\" \/><\/blockquote>\n\n\n\n<p>Here&rsquo;s the same page using Safari&rsquo;s default font, Lucida Grande. Now the bolds look nice. I&rsquo;ll use Lucida Grande from now on, because it&rsquo;s the font Apple uses to showcase CoreGraphics.<\/p>\n\n\n\n<blockquote><img decoding=\"async\" src=\"http:\/\/mjtsai.com\/blog\/images\/2003-03-16-header-sfri-l.png\" alt=\"Class header in Lucida, displayed in Safari\" \/><\/blockquote>\n\n\n\n<p>Here&rsquo;s the method summary in iCab.<\/p>\n\n\n\n<blockquote><img decoding=\"async\" src=\"http:\/\/mjtsai.com\/blog\/images\/2003-03-16-method-list-icab-g.png\" alt=\"Method list in Geneva, displayed in iCab\" \/><\/blockquote>\n\n\n\n<p>Here&rsquo;s the method summary in Safari. Behold the smudges.<\/p>\n\n\n\n<blockquote><img decoding=\"async\" src=\"http:\/\/mjtsai.com\/blog\/images\/2003-03-16-method-list-sfri-l.png\" alt=\"Method list in Lucida, displayed in Safari\" \/><\/blockquote>\n\n\n\n<p>Now, here&rsquo;s part of a <a href=\"http:\/\/mjtsai.com\/blog\/2003\/03\/14\/python_coding_standards.html\">post<\/a> from my blog.<\/p>\n\n\n\n<blockquote><img decoding=\"async\" src=\"http:\/\/mjtsai.com\/blog\/images\/2003-03-16-blog-icab-g.png\" alt=\"Blog in Geneva, displayed in iCab\" \/><\/blockquote>\n\n\n\n<p>In Safari, you can&rsquo;t even tell that the apostrophes are smart. The en-dash after the &ldquo;C&rdquo; looks shorter than the hyphen, and it&rsquo;s really fuzzy. One thing I like about Safari&rsquo;s rendering is that it doesn&rsquo;t underline the space after &ldquo;Python&rdquo;; iCab does this, even though there&rsquo;s a line break.<\/p>\n\n\n\n<blockquote><img decoding=\"async\" src=\"http:\/\/mjtsai.com\/blog\/images\/2003-03-16-blog-sfri-l.png\" alt=\"Blog in Lucida, displayed in Safari\" \/><\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Safari does a great job at rendering. It&rsquo;s approximately as compatible with interactive sites as iCab. (Some work in one but not the other, and in both cases I occasionally have to use Internet Explorer.) I have some quibbles about the way it handles downloads and such, but it&rsquo;s still beta and I think this [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"","apple_news_api_id":"","apple_news_api_modified_at":"","apple_news_api_revision":"","apple_news_api_share_url":"","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[104,302,30,655,103,2735],"class_list":["post-298","post","type-post","status-publish","format-standard","hentry","category-technology","tag-fontsmoothing","tag-icab","tag-mac","tag-mac-os-x-10-2-jaguar","tag-safari","tag-web-browser"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=298"}],"version-history":[{"count":4,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/298\/revisions"}],"predecessor-version":[{"id":15601,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/298\/revisions\/15601"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}