UX Guide update

In a recent SDK release, it was a welcome sight to see that Garmin has restored the section on font descriptions that disappeared a while back.

But it's still desperately in need of housekeeping.

The fonts are described and examples are shown but they reference the fonts by an arcane naming convention like "Roboto Condensed 10 pt" which mean absolutely nothing to the developer who has to access it by its Graphics font name, "Graphics.FONT_TINY" (and I've probably got that wrong!)

Secondly, although it presents examples of the font: 

  1. they include characters that are not supported in the font: e.g the number fonts include examples of text.
  2. More importantly, they do not include all the characters available in that font: e.g, some number fonts don't include "+" 

There's a similar issue with the colours, which are presented with their hex values, but again, we developers usually refer to them by their Graphics names, e.g. Graphics.COLOR_YELLOW.

It's just a pity they didn't beta test the new stuff with developers, the only group that would need it!



Top Replies

All Replies

  • The fonts are described and examples are shown but they reference the fonts by an arcane naming convention like "Roboto Condensed 10 pt" which mean absolutely nothing to the developer who has to access it by its Graphics font name, "Graphics.FONT_TINY" (and I've probably got that wrong!)

    Not sure if that's meant to be 100% serious, but "Roboto Condensed" is literally the name of the actual font in the "real world" and "10 pt" is the font size: https://www.1001fonts.com/roboto-condensed-font.html

    Obviously it's the Garmin constants like Graphics.FONT_TINY which are fairly meaningless labels (outside of Garmin), as it's specific to Garmin devices, unless all you ever do is develop for Garmin.

    If a non-Garmin developer were to ask you "What font did you use for your watchface?", what would be the more meaningful answer? "Roboto Condensed" or "Garmin Graphics.FONT_TINY" (which isn't even the same for every device, and even changes for the same device between APAC and worldwide variants.)

    Sure it would be nice to see the mapping from Garmin font enums to actual fonts in the UX guide, but if you do need to see that it's in simulator.json (sort of) for each device.

    e.g. fr955/simulator.json:

     "fonts": [
            {
                "fontSet": "ww",
                "fonts": [
                    {
                        "filename": "FNT_006B402400_CDPG_ROBOTO_13B",
                        "name": "xtiny"
                    },
                    {
                        "filename": "FNT_006B402400_CDPG_ROBOTO_18B",
                        "name": "tiny"
                    },
                    {
                        "filename": "FNT_006B402400_CDPG_ROBOTO_20B",
                        "name": "small"
                    },
                    {
                        "filename": "FNT_006B402400_CDPG_ROBOTO_24B",
                        "name": "medium"
                    },
                    {
                        "filename": "FNT_006B402400_CDPG_ROBOTO_25B",
                        "name": "large"
                    },
                    {
                        "filename": "FNT_006B402400_ROBOTO_BC_NUMBER_FONT_30",
                        "name": "numberMild"
                    },
                    {
                        "filename": "FNT_006B402400_ROBOTO_BC_NUMBER_FONT_36",
                        "name": "numberMedium"
                    },
                    {
                        "filename": "FNT_006B402400_ROBOTO_BLACK_NUMBER_FONT_49",
                        "name": "numberHot"
                    },
                    {
                        "filename": "FNT_006B402400_ROBOTO_BLACK_NUMBER_FONT_57",
                        "name": "numberThaiHot"
                    },

    There's a similar issue with the colours, which are presented with their hex values, but again, we developers usually refer to them by their Graphics names, e.g. Graphics.COLOR_YELLOW.

    But again, the hex values have a standard, well-known meaning outside of the Garmin ecosystem. Again, it would be great if there was a mapping in the UX guide, but that doesn't mean the hex values are meaningless. As a matter of fact you can use the hex values in your code, since they're interchangeable with the enums.

    In this case the mapping from enums to enum values (standard color values) is in the API docs:

    https://developer.garmin.com/connect-iq/api-docs/Toybox/Graphics.html

    Name Value Since Description
    COLOR_WHITE 0xFFFFFF

    API Level 1.0.0

    White

    ...

    Furthermore, there are only 14 color enums (+ transparent), whereas many Garmin devices support 64 colors and some Garmin devices support 1000s of colors.

    Hopefully it's obvious why Garmin didn't expand the set of color enums to cover all 65536 colors available in the AMOLED devices....

    And if you use an external image editor to create a bitmap to be displayed on a Garmin device, you sort of need to know the available colors based on the standard hex values that everyone uses.

    Secondly, although it presents examples of the font: 

    1. they include characters that are not supported in the font: e.g the number fonts include examples of text.
    2. More importantly, they do not include all the characters available in that font: e.g, some number fonts don't include "+" 

    The old UX guide used to list characters that were available for number fonts, for each device. Too bad they got rid of that. Even back then, it wasn't perfect, as the space character was available for some devices and not others, but it was impossible to tell by looking at the UX guide unless you inspected the HTML source.

  • Not sure if that's meant to be 100% serious, but "Roboto Condensed" is literally the name of the actual font in the "real world" and "10 pt" is the font size: https://www.1001fonts.com/roboto-condensed-font.html

    Obviously it's the Garmin constants like Graphics.FONT_TINY which are fairly meaningless labels (outside of Garmin), as it's specific to Garmin devices, unless all you ever do is develop for Garmin.

    If a non-Garmin developer were to ask you "What font did you use for your watchface?",

    I think you're missing the point!

    • Only Garmin developers will be reading this, so it should be directly addressed to them.
    • There's no such thing as an "Actual font". "Roboto Condensed" exists in a very small ecosphere that is remote to most.
    • Dev's only have access to the fonts via the Garmin Graphics name
    • When have you ever been asked "What font did you use..." 
    but if you do need to see that it's in simulator.json (sort of) for each device.

    Exactly! If we can do this by every time reverse engineering the Devices files, why the heck didn't Garmin have the nous do it once in the UX guide????

  • Hopefully it's obvious why Garmin didn't expand the set of color enums to cover

    And I didn't suggest that either.

    But since they went to the effort of listing the 64 colours in the UX guide, why didn't they go the extra yard and label the named ones?

    It's the lack of that "extra yard" in the documentation that rankles.

  • I think you're missing the point!

    • Only Garmin developers will be reading this, so it should be directly addressed to them.
    • There's no such thing as an "Actual font". "Roboto Condensed" exists in a very small ecosphere that is remote to most.
    • Dev's only have access to the fonts via the Garmin Graphics name
    • When have you ever been asked "What font did you use..." 

    I understood the point 100%, but I disagree with the details of the argument.

    I think the ecosphere of Garmin developers is much smaller than the ecosphere of people who care what Roboto Condensed 10 Pt means. And even normal users have the ability to install a font like Roboto Condensed on their PC or Mac systems.

    By your argument, the font picker in Word, Google Docs, or MacOS Pages is stupid because it refers to made-up names like Arial and Times New Roman.

    Nope, those are the actual names for those fonts.

    Roboto Condensed is the actual name for the font that Garmin uses on that device.

    Only Garmin developers will be reading this, so it should be directly addressed to them.

    It could be addressed to people who aren't yet Garmin developers. It could be addressed to designers who won't actually be coding.

    Dev's only have access to the fonts via the Garmin Graphics name

    That's a good point, but then you extended that argument to Graphics.Color where it's invalid for several reasons.

    There's no such thing as an "Actual font". "Roboto Condensed" exists in a very small ecosphere that is remote to most.

    Sure there is. Somebody created the Roboto Condensed font and gave it a name. Garmin chose to use this font for some of its devices.

    Same as how many people have a good idea of what Arial and Times New Roman are. (Arial is known to be a sans serif font, even if many ppl don't know the term "sans serif", and Times New Roman is known to be a serif font.) It's also fairly well known that Comic Sans is a joke font and that Courier New is a fixed-width font.

    Graphics.FONT_TINY is the meaningless label, except insofar as it's supposed to represent a given "class" of fonts that has a similar size/purpose across different Garmin devices.

    I agree that it would be very helpful for the Garmin label to also be in the UX guide. I don't think the actual name of the font should be removed tho.

  • But since they went to the effort of listing the 64 colours in the UX guide, why didn't they go the extra yard and label the named ones?

    I actually agree with that, but that's classic Garmin. OTOH I can see why they would think it isn't necessary.

    My point was that the color argument is not the same as font argument, despite the implication in the OP.

    I think labelling the fonts with the garmin font enums would be far more helpful.

  • When have you ever been asked "What font did you use..." 

    I think professional designers care a lot about specific fonts.

    And the question of fonts comes up a lot in watchfaces, especially in the context of custom fonts (often when trying to draw text that's smaller than the smallest built-in fonts).

    And "Roboto Condensed 10 Pt" isn't some arcane naming convention that Garmin made up, it's literally the name of the font and its size, which would be understandable to every designer, most or all web developers, and maybe some normal end-users who care about fonts when they make documents.

  • Here's an example of where I care about specific fonts in a Garmin context.

    *Most* devices use fixed-width fonts for numbers, but Fenix 3 actually uses a proportional font. I have some code in a datafield which dynamically centers content in a table. For the devices with fixed-width fonts, this looks fine, but for the Fenix 3 it looks bad, because the width of the content changes even when the number of digits stays the same, due to the proportional font. So the content "jumps around" as the value changes.

  • The fonts are described and examples are shown but they reference the fonts by an arcane naming convention like "Roboto Condensed 10 pt" which mean absolutely nothing to the developer who has to access it by its Graphics font name, "Graphics.FONT_TINY" (and I've probably got that wrong!)

    Having the actual font name also has it's use, for instance if you would want to have a consistent look of your app accross devices you could opt to add Roboto Condensed as a custom font to the devices where the Font_tiny is using another typeface

  • Having the actual font name also has it's use, for instance if you would want to have a consistent look of your app accross devices you could opt to add Roboto Condensed as a custom font to the devices where the Font_tiny is using another typeface

    This is a great example. It's incredibly disingenuous to pretend that "Roboto Condensed" is some arbitrary, made-up name which has no value to the developer.

    It's literally the name of the font.

    Would it be helpful to have the Graphics.{FONT_ENUM} label in the UX guide? Yes.

    Is the actual font name useless? No.

  • The name might be useful to some, but what I'm pointing out is that there's no mapping between the font name and the Graphics font name in the UX-Guide. 

    Today, for example,I had to try it out to see if FONT_MEDIUM was bigger or smaller than FONT_MILD. They are just not referenced in the UX-Guide. 

    (which is what prompted this tirade in the first place!)