Leaving no pixel behind

Point of Sale (POS) systems are usually deployed at retail businesses such as restaurants or grocery stores. Most modern POS systems feature a touch-screen virtual computer that does not have keyboard or mouse. As such, it is operated by navigating through the available menus / features via on-screen selections. Due to the very nature of operating environment, these selections are done mostly manually (with fingers touching the screen). Here is how a sample POS system looks like:

Since pressing your fingers on the screen is the only way to operate a POS system, all the controls need to be extra large.

I have already touched on subject of high-DPI support in Substance look-and-feel (part 1, part 2, part 3). Since the vast majority of Substance visuals are done with vector-based graphics, it should be able to scale to any font size. The real life, however, is not so simple and there are a lot of visual glitches that become apparent only at large scale values.

Here is a screenshot of an editable combobox using 72 pixel font under Substance 4.2. Note the clipped text, the gray margin around the text field editor and cap / join of the arrow icon:

And here is the same editable combobox under Substance 4.3:

Here is a screenshot of an icon button using 72 pixel font under Substance 4.2. Note the icon text gap, focus ring touching the text and the corners radius:

And here is the same button under Substance 4.3:

Here is a screenshot of a radio button using 72 pixel font under Substance 4.2. Note the checkmark text gap, focus ring weight, focus ring corner radius and the outer edge of the checkmark:

And here is the same radio button under Substance 4.3:

And finally, here is a screenshot of a checkbox using 72 pixel font under Substance 4.2. Note the checkmark text gap, focus ring weight and the focus ring corner radius:

And here is the same checkbox under Substance 4.3:

The latest development drop of Substance 4.3 has the first support for very large font sizes (which come with their own set of visual pitfalls, as illustrated above). It is in feature freeze state, with release candidate scheduled on March 31st, and the final release scheduled on April 14.

If you are interested in the topic of high-resolution monitors and the issues that they pose for UI applications in general, and for Swing in particular, please consider coming to a birds-of-feather session that i will be presenting with Mike Swingler (of Apple’s Swing team) at this year’s JavaOne. It is a little late (21:30 on Tuesday), but hopefully it will be worth it. Looking forward to seeing you.