Today is the first snow day this year. Yay for snow!
Posts from October 2005
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:
- XSLT 1.0
- XPath 1.0
- Web Forms 2.0
- Web Apps 1.0 CANVAS element
- designMode (more details to come)
- Some CSS3 Selectors
- TLS 1.1 and TLS Extensions
- Partial SVG Basic 1.1
- Netscape Plug-in API Extensions
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).
OBJECTandIFRAMEelements respectz-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:

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):

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

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

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%):

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:

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:

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:

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:

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


