The Good Life... a weblog about life, technology, and the Opera web browser

Posts from October 2005

Date
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

And then there was Merlin, AKA Opera 9.0 Preview 1 released!

A month ago, I introduced you to Merlin. Now, it's time to spend some quality time together. That's right, Opera 9.0 Preview 1, code-named Merlin, is now available for Windows, Macintosh (PPC and Intel!), Linux, FreeBSD, and Solaris. As with most previews, it's still pretty rough around the edges. But don't fret, we're already well on the way to making Merlin the best Opera release yet!

Remember, this is just a preview release and it may cause problems. The new IMAP back-end should only be used with test accounts, as there are still ways to lose mail.

In my previous post, I told you about many of the new features in Merlin, but I also left quite a few out. Here are the new specifications implemented in the core browser engine:

Of course, the core browser engine isn't the only part of Opera that received new features:

  • M2 now sports support for Atom 1.0 and the new IMAP back-end previously previewed in 8.0 Preview 5.1 (more details to come).
  • We've added quick access to most preferences via opera:config.
  • We added site-specific preferences (currently only accessible via opera.ini; more details to come)
  • You can now choose to reparse invalid XML documents as HTML
  • There's a new internal source viewer and editor (if you save your changes, the page is automatically reloaded with your changes included).
  • Tabs can now be locked via the tab context menu so they can't be accidentally closed.
  • Finding text on Web pages will highlight all matches.
  • There's a new message console used for everything from JavaScript to Opera Mail errors.
  • The default user agent is set back to Opera.
  • The Macintosh version is now packaged as a universal binary, allowing Opera to run on Intel-based Macintosh systems without emulation.

We're not just in the business of adding new features; we also fixed a huge number of bugs, including:

  • Acid2 is just one bug fix away from completion (more details to come).
  • OBJECT and IFRAME elements respect z-index
  • Fixed problems with width inheritance for positioned elements
  • Improved our margin-collapsing code
  • Key presses won't be lost after Alt+Tab
  • Full-screen will fallback to screen media stylesheets if no projection stylesheets are found
  • Many, many more!

We're proud of the work we're doing and we want you to enjoy it too. Happy browsing!

Acid2 - Rows 7 and 8 revisited

Another Acid2 fix came in build 7966. This issue wasn't even a bug, per se, as no specification defines how to handle it. The fix was made more to be compatible with Acid2 and other browsers than because it caused problems on actual sites. It's also the most trivial issue in Opera's rendering of the Acid2 test. Despite all that, it's my pet Acid2 issue. Without further ado, I give you, the Four Corners "bug".

The diamond nose in the Acid2 test is created using concepts from CSS Border Slants. The nose is actually made from the borders of two elements placed next to each other. This may be easier to understand using some screenshots. The following image (based on this test) shows a 2em by 2em DIV with 1em borders, blue on top and bottom, orange on left and right:

Screenshot

If two such squares are put next to each other and the outer borders are changed to blue, the nose starts to form from the remaining orange borders (based on this test):

Screenshot

When the white squares are removed, the nose takes shape (based on this test):

Screenshot

Drop the blue borders and only a perfect diamond nose remains (based on this test):

Screenshot

Without anti-aliasing, only one color can be used for each screen pixel. Thus, the rendering engine has to choose which side of a border to give priority to for each border intersection. In 8.5, Opera draws single borders around an element in the following order: top, left, right, and bottom. This means that the bottom border will extend all the way across a figure, the left and right borders will extend all the way to the top, and the top border won't touch either corner at the top of the figure, like so (based on the first test above zoomed to 300%):

Screenshot

Other browsers appear to draw the top border last, extending it to both corners at the top of the figure. What does this mean for the Acid2 test? It means the nose is one pixel higher in Opera than in other browsers. This is easily seen using the third test above zoomed to 300%. In 8.5, there's a row of blue pixels across the bottom of the test:

Screenshot

The only reason I noticed this discrepancy is because I opened the Acid2 test in one page and the reference rendering in another page and went back and forth between them. Lo and behold, the nose looked like it was bouncing up and down. And we can't have that. So, we changed the drawing order for borders. Now, Opera draws single borders in the following order: bottom, left, right, and top, like so:

Screenshot

This change made the rendering of the rows 7 and 8 compatible with the Acid2 reference rendering. Check these test cases to see how your browser handles border intersection: one, two, three, four, and five.

Here's the updated rendering with this fix:

Screenshot of the Acid2 test

To see the difference between the above screenshot and the Acid2 reference rendering, just open these three images in separate pages and move back and forth between them (using 1 and 2): our previous rendering, our current rendering, and the reference rendering.


More information about CSS Borders Slants and shapes can be found at the following pages:

Cravings

Rebekah has been surprisingly devoid of cravings. I'm a bit disappointed, actually. I had this great picture in my head of late night runs to the store for pickles and peanut butter or Doritos with strawberry jelly. It's not that I mind—I'd be making those late night store runs—but I feel like I'm missing out on part of the ambiance of being the husband of a pregnant woman. Then again, maybe she'd want fish or liver paste. Eww. It's probably for the best.

Acid2 - Rows 4 and 5

One more Acid2 fix came in build 7841: if a :before or :after pseudo-element existed in a page's stylesheet that didn't match anything in the document, it would cause odd things to happen. I sincerely doubt any other browser has this problem, but if you really want to check, use this test case. The eyes now render, though there are still other problems in rows 4 and 5.

Here's the updated rendering with this fix:

Screenshot of the Acid2 test

We're now finally up-to-date with the internal build screenshot posted at the beginning of August. Here on out is uncharted territory.

Acid2 - Rows 13, 14, and beyond

Our next update comes from Merlin build 7830, which includes three fixes for problems seen in the Acid2 test. First, we fixed a problem with anonymous table creation. More specifically, if a table existed within an anonymous table row, then the table row was terminated after that table. This partially fixed the problems in row 14 and beyond. Check this test case to see how your browser handles it.

Second, we fixed a problem drawing backgrounds on tables without rows, but with both width and height specified. This change fixed the rest of the problems seen in row 14 and beyond. Check this test case to see how your browser handles it.

Third, we now correctly parse SGML comments in Standards mode. I posted about this previously because at the time we weren't sure we would fix this issue. We decided to give it a go, but we're already seeing problems on several pages. We'll gather additional feedback during alpha and beta releases of Merlin and make a decision whether or not to keep this change before the final release.

Here's the updated rendering with these three fixes:

Screenshot of the Acid2 test

PHP-based Genealogy Software?

Anyone know of some good PHP-based genealogy software? Rebekah started working on our family tree, but doesn't like the site she's using. I'd also like to have it at our disposal, so we can customize it and have full control of the information.

I found TUFaT and TNG 5, but I'm a big fan of try-before-you-buy (or not buying, but contributing back to the project). I just ran across PhpGedView, which we'll probably give a try. It seems like it's under active development and has been around for a couple of years.