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: