Under Review
over 1 year ago

FR645 and others since fw 7.20: major issues with custom fonts

  • Does anyone have an example of a case where a font generated with BMFont is causing this crash?

  • I can’t get into details about how we got where we are. It is an issue that affects both fr645m and edge130plus, but not other devices, and not the ConnectIQ simulator.

    The issue will occur when the height value of char 48 (‘0’) is larger than the base value.The base value is the measure from the baseline to the top of the tallest glyph in the glyph set, and the digit height is the height from the baseline to the top of the zero ‘0’ glyph.

    If you have hand edited .fnt files (often used for icons), the digit height and base value should probably just be equal. There is no descender for an icon, so making them equal makes sense.

  • I'm on a Mac en therefor are using the Hiero tool to convert my fonts. The Roboto font (free download on Google Fonts) causes this issue for example.

    When I manually set base height equal to the size of the 0 char in the .fnt file it works. So I've been through a lot of work to manually adapt all font files for all devices on all my products. It's just super odd this is suddenly handled differently on the FR645M device, while it even still works on the Simulator. 

  • Travis, currently I do not understand what to fix.

    It would be perfect to provide step-by-step guide for all with the clearest explanation why this happens, how to fix, and Garmin plans to fix it.

    I suspect not all developers will recompile their apps. Also why other devices work normally? What happened to the FR645M firmware?

  • You are not reading my comment, or have confused yourself by adding lineHeight to the mix.Please re-read the quote from the post above.

    What I said is consistent with what the bmfont docs say.. base is the height from the base line to the top of the tallest glyph. The char height is the height of the full character glyph- the base height plus any descender. But note that I specifically say we consider the digit height to be the height of the ‘0’ glyph, which would not normally have a descender.

    Your font has base height=13, and digit height is either 13 or 17 depending on whether or not ‘0’ is in the character set. If you leave out ‘0’ from the chars, your font will not crash the app. If you put it in, it will crash.

    If you have examples of ttf/otf font files that these conditions do not hold, please provide them.