diff options
Diffstat (limited to 'dw/fltkplatform.cc')
-rw-r--r-- | dw/fltkplatform.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/dw/fltkplatform.cc b/dw/fltkplatform.cc index cc093d37..5c69a4ec 100644 --- a/dw/fltkplatform.cc +++ b/dw/fltkplatform.cc @@ -525,14 +525,18 @@ int FltkPlatform::textWidth (core::style::Font *font, const char *text, if ((cu = fl_toupper(c)) == c) { /* already uppercase, just draw the character */ fl_font(ff->font, ff->size); - width += font->letterSpacing; - width += (int)fl_width(text + curr, next - curr); + if (fl_nonspacing(cu) == 0) { + width += font->letterSpacing; + width += (int)fl_width(text + curr, next - curr); + } } else { /* make utf8 string for converted char */ nb = fl_utf8encode(cu, chbuf); fl_font(ff->font, sc_fontsize); - width += font->letterSpacing; - width += (int)fl_width(chbuf, nb); + if (fl_nonspacing(cu) == 0) { + width += font->letterSpacing; + width += (int)fl_width(chbuf, nb); + } } } } else { @@ -544,7 +548,9 @@ int FltkPlatform::textWidth (core::style::Font *font, const char *text, while (next < len) { next = nextGlyph(text, curr); - width += font->letterSpacing; + c = fl_utf8decode(text + curr, text + next, &nb); + if (fl_nonspacing(c) == 0) + width += font->letterSpacing; curr = next; } } |