Font families and device testing

I build my app for a wide range of watches and chose to determine which fonts best fit the display at runtime rather than using resource files to define which fonts to use on which models.

One result of this approach is that I need to test how screens look on each model that I support if I make changes to the font related logic.

Does anyone know if the watch models are grouped by families which all use the same fonts ?

If I could test one model of a group that all use the same fonts, that would save a lot of test time.

Thanks in advance.

  • "Kind of" - Things like the f7 use the same fonts, but the size varies based on f7s,f7.f7x, and they are all different than say the f5, but the f5 is similar to the fr935.  To be honest, the best thing to do initially is a "smoke test" with every device you support.  Later, when you add a new device, be careful you don't break something on an older device.

    I have apps that support 100 or so devices devices (not counting APAC), that I started when there were only a handfull of CIQ devices, but will still check on some of the older devices when I add a new one.

    You'll probably learn some tricks as you do more apps (I use getWidth(), getHeight(), as well as getFontHeight() in some cases), and I know in one app, I had to make a 1 line change to support the f6, but nothing since for newer devices (well, except the Instict2 and it's subscreen)

  • Thanks Jim.

    Have you found a way to determine the amount of vertical space that the largest character in a font occupies, excluding all space above and below the character ?

    I've seen very inconsistent results using getFontHeight(), getFontAscent() , and getFontDescent().

    I haven't tried getHeight() believing that the font specific values would be most specific.

    I'll look at that.

  • One thing that can help is when you do the drawText)_. use TEXT_JUSTIFY_VCENTER.  For example, if you want the text in the center of the screen, it doesn't matter how much white space is above, below the characters.

    And I'll tell you, for a watch face, using custom fonts makes things easier.

    One set of fonts for 240x240 devices, another for 260x260, etc.  That way, you can reduce testing, and only test a couple of 240x240 devices, a couple of 260x260, etc...

  • Thanks Jim.

    I use VCENTER a lot but still get surprises based on the amount of space (or lack of space) included above and below fonts with the same font symbol ( Gfx.FONT_NUMBER_HOT etc) on different models of watches.

  • You are seeing an issue that has impacted every developer and app for the last 8 years, and there is no easy fix.

  • Yeah, I'm not surprised.

    I think I've spent more time on font related issues than any other aspect of my app, and it's a pretty technical app (see Sail2WIN).

    Correction... I do use getHeight() to determine screen height and use that while determining which fonts will fit in my screen layouts.

    Thanks again Jim

  • You might have better luck just starting with a font like FONT_MEDIUM and determine the spacing based on it's height on a device, then make tweeks based on that (change the spacing).  You'll probably find the FONT_NUMBER_* fonts the most difficult and may want to use an Alpha font and not a number font at times.

  • I'm not famaliar with Alpha fonts.

    What are those ?

    I'm using FONT_NUMBER fonts to get the largest numbers I can fit on the screen for readability at a glance.

  • I'm not famaliar with Alpha fonts.

    What are those ?

    He means fonts without NUMBER in their name which support non-numerical characters (like alphabetical characters.)

    e.g.

    FONT_XTINY
    FONT_TINY
    FONT_SMALL
    FONT_MEDIUM
    FONT_LARGE

  • Ahhh... got it.

    I use those as well but can't get very large number displays without switching to the FONT_NUMBER_* options.