diff options
Diffstat (limited to 'dw/fltkviewbase.cc')
-rw-r--r-- | dw/fltkviewbase.cc | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/dw/fltkviewbase.cc b/dw/fltkviewbase.cc index 7969665f..97a78edb 100644 --- a/dw/fltkviewbase.cc +++ b/dw/fltkviewbase.cc @@ -479,8 +479,23 @@ void FltkWidgetView::drawText (core::style::Font *font, FltkFont *ff = (FltkFont*)font; setfont(ff->font, ff->size); setcolor(((FltkColor*)color)->colors[shading]); - drawtext(text, len, - translateCanvasXToViewX (x), translateCanvasYToViewY (y)); + + if (!font->letterSpacing) { + drawtext(text, len, + translateCanvasXToViewX (x), translateCanvasYToViewY (y)); + } else { + /* Nonzero letter spacing adjustment, draw each glyph individually */ + int viewX = translateCanvasXToViewX (x), + viewY = translateCanvasYToViewY (y); + int curr = 0, next = 0; + + while (next < len) { + next = theLayout->nextGlyph(text, curr); + drawtext(text + curr, next - curr, viewX, viewY); + viewX += font->letterSpacing + (int)getwidth(text + curr,next - curr); + curr = next; + } + } } void FltkWidgetView::drawImage (core::Imgbuf *imgbuf, int xRoot, int yRoot, |