Possible SIM bug: Some fonts show digits but not letters in simulator upon dc.drawRadialText

Hello, having an issue with some fonts where their letters do not show up while their digits do show up:

  • Macbook Pro M1 + connectiq-sdk-mac-8.2.2-2025-07-17 + Java 21
  • this is an issue I have been facing for a very long time i.e. across many SDKs 
  • issue only takes place in simulator, i.e. all letters+digits show up properly on actual devices (e.g. Epix 2nd gen, Epix PRO 51mm)
  • issue seems to only apply to some fonts and only during dc.drawRadialText, e.g. as could be seen below:
    • screenshot '1': using vector-font 'BionicBold' and dc.drawRadialText results in letters not showing up; code is my WF.
    • screenshot '2': using vector-font 'RobotoCondensedRegular' and dc.drawRadialText results in letters showing up; code is my WF.
    • screenshot '3': using vector-font 'BionicBold' and dc.drawText results in letters showing up; code is Garmin SDK example modified to show experimental text.
  • impact-wise, according to my testing:
    • the following vector-fonts *DO* have this SIM-related-issue: BionicBold, SakkalMajallaBold, SakkalMajallaRoman
    • the following vector-fonts do *NOT* have this SIM-related-issue: all the remaning vector fonts, namely NanumGothicRegular, Swiss721Regular, RobotoCondensedRegular, PridiRegularGarmin, Swiss721Bold, NotoSansSCMedium, RobotoCondensedBold, KosugiRegular

Unless I am mistaken this seems to be an issue w/the sim, i.e. given (1) my WF-code being used in screenshots '1' and '2' is the very same code, and (2) works fine/no issues on actual devices.

BUT if anyone here thinks otherwise I would be happy to listen and learn.

UPDATE 2025-08-15:

While I do not want to cause annoying noise and confusion - since the following is confusing to follow - I think it is still worth sharing in case some are interested:

after posting the info above, I have tried to draw letters with vector-font BionicBold and dc.drawText in my WF-code,
since I knew it worked in the Garmin SDK example code;
And to my surprise I got same results as before i.e. as in screenshot '1' above, where letters did *NOT* show up.
I then suspected that the Garmin SDK example worked because it loaded some font which also has letters prior to the drawing w/the BionicBold vector-font,
and that the letters I thought were of the BionicBold font were in fact of another font,
with my guess being that when a font is loaded the SDK code fills/populates a 'global char-slots' array somewhere by overwriting w/whatever that font has, while leaving all other slots in it intacts,
so e.g. if font A - which has both numeric + letters chars - is loaded first, and then font B - which only has numeric chars - is loaded,
then that 'global char-slots' array will contain a mix of font-A-letter-chars and font-B-numeric-chars.
And I have tested that and it works in the sim:

instead of my original code of just:
font = Graphics.getVectorFont({:face => "BionicBold", :size => someSize});
...
dc.drawRadialText(..., font, ...)
-> result: letters do *NOT* show up in sim (see screenshot '1' above)

I now have my code as follows:
font = Graphics.getVectorFont({:face => "RobotoCondensedBold", :size => someSize}); // RobotoCondensedBold contains letters
font = Graphics.getVectorFont({:face => "BionicBold", :size => someSize});
...
dc.drawRadialText(..., font, ...)
-> result: letters *DO* show up in sim (see screenshot-4 below), and - as expected - the date/day at the top consists of 'Aug' and 'Fri' in letter-chars courtesy of RobotoCondensedBold, and '15' numeric-chars courtesy of BionicBold.
And, as expected further, if I change RobotoCondensedBold to some other font w/letters e.g. NanumGothicRegular, then the letters-chars in MONTH and DAY-OF-WEEK in the WF will reflect that.


And while there are some unanswered questions still, I got it to work so I will put them off for a later time.

screenshot-4:

  • some fonts only have numbers, others also letters. 

  • some fonts only have numbers, others also letters. 

    Yes, but:

    - they're saying that letters are displayed with drawText in the sim, and both dcDrawText and dcRadialText on a real device. If I'm understanding correctly, the only case they don't see letters is with drawRadialText in the sim

    - this is specifically about vector fonts. We know exactly how the old non-vector fonts worked - if you asked for FONT_NUMBER_*, you only got numbers (and a handful of other symbols), but if you asked for FONT_* (non-NUMBER), you got numbers and letters. It's not as clear what happens when you use getVectorFont() to ask for a vector font by name.

    As a matter of fact, the ability to ask for a font by name (e.g. "BionicBold") using getVectorFont() actually suggests that vector fonts shouldn't be restricted to numbers only, unless the name passed to getVectorFont() somehow contains the string "number" in it (but none of them do.) The existence of getVectorFont() suggests that these fonts are available for generic use, not just for numbers (in the case of the fonts that are used for numbers by the system).

    - we also know that older devices had a lot less storage space. fonts and languages were split up between different firmware for WW (worldwide) and APAC (asia-pacific) devices. With newer models, WW and APAC devices typically have the same firmware which contains all the fonts and languages. It isn't outside the realm of possibility that Garmin is also including numbers and letters for every vector font now, given that they have space for gigs of maps and music

    Having said all of that, the filename for the BionicBold font that the sim uses is "Bionic_Bold_Number_Only". No other font filename contains the string "number_only" though. Lots of font filenames do contain the string "number" without "only".

    This can be seen in the "Font" column for the device reference page for fenix7xpro (for example):

    https://developer.garmin.com/connect-iq/device-reference/fenix7xpro/

    The device config files show the same (in ConnectIQ\Devices on your computer):

    (It isn't surprising that they say the same thing as they're likely genned from the source)

    If you're seeing different behaviour with drawText and drawRadialText in the sim, and with the sim and a real device, I would report a bug.

  • Thank you for this pointer, I have found a workaround and updated my OP.