Incompatible font sizes between FR935 and FR945

Hi,

A user complaint about the font sizes of my datafield in the new FR945. He mentioned that on the FR935 things were super cool and he can't read anything on the 945 due to bigger font sizes. Why is Garmin doing this incompatibility. This means either I have a lot of work and another file in my repository to support and maintain or to have to discontinue.

I am using e. g. this statement (an own wrapper for the dc.drawText which does in principal the same):

drawText(dc, 67, 107, 7, leftPaceField, true, false);

Are there any other suggestions?

  • TL;DR:

    1. If you have hardcoded fonts (as you seem to do), then for 945/245 they will be too big, as you have seen.
    2. If you have fonts that are programmatically selected (based on text height/width from API), then on 945/245, they will be too small, because of the large amount of empty space at the top of fonts for those devices.

    My solution was to modify 2) (programmatically selecting fonts) by overriding the font height on some devices (including 945/245), by manually counting visible pixels. I didn't want to do this, but users kinda demanded it. I don't have multiple files for this, but I do have multiple "getOverriddenHeight()" functions, which I manage using exclude annotations.

    Another approach could be just to hardcode different fonts for different devices, but then you run into problems if content can have unpredictable width.

    If you're curious, the device families for which I overrided font heights included: 230/235/630, 245/945, VA3/Approach S60, MARQ and Fenix 3

    ---

    The longer story:

    For my full-screen datafields (e.g. 6 fields at once), I originally did 2). Then users complained that fonts seemed too small on some devices -- IOW it seemed to them that the fonts could be bigger and still fit in the data fields (especially when comparing my app to native data fields.) So I ended up counting visible pixels manually and overriding the font height on certain devices.

    The good news is that whatever you do, it will work for both 945 and 245, since they have the same fonts. The bad news is MARQ has a different set of fonts, too.

    I have a generic drawText() function which draws text in a bounded box, automatically choosing that largest possible font based on the width from the API, and my own custom height function. For many devices, this custom height function just returns the height from the API; for devices like 945/245, it returns the height that I manually hardcoded. I use exclude annotations to do this; my jungle files have a bunch of definitions for different device "font families".

    Of course, since the empty space is at the top of the text, you will also have to subtract a Y offset. This offset can be determined programmatically by subtracting the hardcoded height from the API height. Alternatively, you can just use vertical centering for all your text. I've taken both approaches for different apps.

  • Keep in mind you may see the same with the Marq and va3 devices

  • In my opinion the best option for me is to discontinue the support of those devices. It's too much work for doing it in the spare time. 

  • Update: Since I have a wrapper as well for the drawText I was able override the constants quickly. Saying this, the fonts seems now to be too small and this is since Garmn has packed a totally different font for the number font type. 

  • I've started using custom fonts that look much more like those on the 935/F5+.  I generally find those fonts more appealing anyway.  I do wish Garmin would be more consistent here, or at least supply the fonts from the older devices.  Obviously this isn't an option if you are running into memory issues.

    I've also isolated all my graphics calls and use constants F0, F1, F2, F3, F4, FN0, FN1, FN2, FN3 for my fonts.  Makes the code more readable to me plus made it really easy to adapt here.

  • Which fonts did you use to replace it?

  • Font size (and shape)  is a real problem.

    For data fields I have changed all my layout for the MARQ series but I have found a compromised which minimize modifications according to devices, only f735xt have a special case.

    For texts in menus I calculate the best font according space available, like you do in 2)

  • I agree, too much work (including to much test). All my texts/drawing positions are relative to screen resolution.

  • Same here.. It's a real pain dealing with the differning font sizes across the devices even with the same screen resolution.