Under Review
over 1 year ago

Users complain of very small text in simple data fields

Original thread: https://forums.garmin.com/developer/connect-iq/f/discussion/259355/users-complain-of-very-small-text-in-simple-data-fields

Although I can't personally recreate this problem, I am reposting it here for visibility, as multiple users have complained of this issue, for multiple simple data field apps.

Text of original post:


Is this happening to anyone else? At first it was only happening for one of my simple data field apps, so I thought it was an isolated incident.

Now a user of a 2nd simple data field app has made the same complaint. Some users report that they used to see normal-sized text, and one day it suddenly became small. More recently, some new users say that it's always been small.

In one case I'm only displaying characters available in number fonts (for simple data fields *) such as digits, ".", ":", and "-" (verified in the simulator). (* I'm aware that simple data fields may be slightly more restrictive than necessary when it comes to which characters it will display in numerical fonts. i.e. The set of available characters for number fonts may be bigger in some cases than the set of characters that a simple data field will render in a number font). Even in this case, I've asked an affected user to change the settings so that only digits are displayed, and the problem persists.

In the other case I'm only displaying digits.

And I can't recreate this in the simulator or on my real 935 device.

What I see on my watch (normal-sized text):

https://ibb.co/1QC0c5V

What they see on their watch (text that's too small):

https://ibb.co/sFCYvvY

It's not limited to one device as Vivoactive 4 and Edge 530 users have both complained.

The two apps in question are:

https://apps.garmin.com/en-US/apps/fd690281-9c22-4fee-a81e-3b7f39aa67c5

https://apps.garmin.com/en-US/apps/2bc8b0c1-dd83-4679-96f1-0ae2a0925920

The latter (Total Ascent) literally does nothing but convert ActivityInfo.totalAscent to the user's preferred units and round it to a whole number.

using Toybox.WatchUi;

class totalAscentView extends WatchUi.SimpleDataField {

	var elevationUnits;
	function getUnits()
	{
		var settings = System.getDeviceSettings();
		elevationUnits = settings.elevationUnits;
	}

	// m to feet
	private function convertAltitude(value)
	{
		if (value == null)
		{
			return null;
		}
		
		if (elevationUnits == System.UNIT_STATUTE)
		{
			value = value / 0.3048;
		}
		return value;
	}		


    function initialize() {
        SimpleDataField.initialize();
        label = "Ascent";
    }

    function compute(info) {
    	getUnits();
        
        var val = convertAltitude(info.totalAscent);
        if (val == null)
        {
        	return 0;
        }
        
        return Math.round(val).toNumber();
    }
}

Parents
  • The funny thing about your test results is that they show that number fonts don't support the space character on Edge devices. IIRC, most or all watches did support spaces in number fonts, at least at one point.

    A very long time ago, Garmin used to publish the supported characters for number fonts in the devices section of the documents. The space character would actually be part of the docs (if supported), but it was impossible to tell if it was there, because the docs would look something like this (with no quotes or other delineation):

    Supported characters for numerical fonts:

    0123456789:-+

    The only way you could tell if space was in there would be to select the text or inspect the HTML source / DOM.

    Another issue (in the past) was that the algorithm used by simple data fields to determine if a string was "purely numerical" (and could be rendered in the number font) would use a subset of the actual characters supported by said number font. So you might have a valid number font character (like space) which would nonetheless cause your string to be rendered with a smaller text font.

    Anyway, all of that is to say there's always been problems with this stuff. But it's pretty annoying to get bad reviews because of something that's beyond my control as a dev. (Obviously I am not going to redesign all my simple data fields to do their own layout/rendering, because I don't enjoy reinventing the wheel, even when I have appropriate code handy in another app. One obvious reason is that, in a perfect world, a CIQ data field shouldn't render itself unless it absolutely has to, since that way the firmware can provide as close to a native look and feel as possible. In a perfect world.)

Comment
  • The funny thing about your test results is that they show that number fonts don't support the space character on Edge devices. IIRC, most or all watches did support spaces in number fonts, at least at one point.

    A very long time ago, Garmin used to publish the supported characters for number fonts in the devices section of the documents. The space character would actually be part of the docs (if supported), but it was impossible to tell if it was there, because the docs would look something like this (with no quotes or other delineation):

    Supported characters for numerical fonts:

    0123456789:-+

    The only way you could tell if space was in there would be to select the text or inspect the HTML source / DOM.

    Another issue (in the past) was that the algorithm used by simple data fields to determine if a string was "purely numerical" (and could be rendered in the number font) would use a subset of the actual characters supported by said number font. So you might have a valid number font character (like space) which would nonetheless cause your string to be rendered with a smaller text font.

    Anyway, all of that is to say there's always been problems with this stuff. But it's pretty annoying to get bad reviews because of something that's beyond my control as a dev. (Obviously I am not going to redesign all my simple data fields to do their own layout/rendering, because I don't enjoy reinventing the wheel, even when I have appropriate code handy in another app. One obvious reason is that, in a perfect world, a CIQ data field shouldn't render itself unless it absolutely has to, since that way the firmware can provide as close to a native look and feel as possible. In a perfect world.)

Children
No Data