On Tuesday 17 June 2003 16:22, Dirk Schönberger wrote: > > KWord needs to find out where a sentence breaks on the page. Or in other > > words; how much text (glyphs) fit in x milimeters. Well, KoTextFormatter looks at the width of each char, and decides that on its own. I don't think this is the job of the renderer (KPainter). All we need is metrics. > That's why I introduced text model in my design ideas. a text model managed > the conversion of a high level text description (e.g. simple text or KWord) > into a set of KPainter calls (drawGlyph, drawString, drawChar). > It uses its own metrics, but it can also use KPainter generated metrics for > real fonts. > > This sounds similar, but it is not. > > Anyone familiar with TeX recongnizes the last solution since it is what gives > > TeX the power to insert a word somewhere on the page without making the > > paragraph take an extra line; they just 'shrink' the font a little bit over > > the horizontal line. > > But this means you need the actual font outline in the text model, no? Not necessarily. I could pass a transformation matrix that transforms the outline so that it fits horizontally (i.e. a horizontal zoom factor). > > Anyway; to render fonts in KWord correctly I think the following approuch > > should be taken: > > > > 1) take a big line (paragraph of QtRT) and a rectangle (in mm) and ask the > > painter where the line would break. > > or the font metrics? Yes, metrics are enough. > > 2) repeat for rest of paragraph. > > > > Using the line-breakings data-structure for painting. > > > > 1) Give array of glyphs and size (in pixels) to the renderer for painting. > > drawGlyph() calls? Not sure how to obtain the glyph number, but I guess so. > > 2) KPainter figures out what size (in pixels) the string is and scales the > > text horizontally and vertically (both, but independend) to make it fit. [1] > > If you call drawGlyph(), KPainter doesn't know anymore that it is supposed > to render a text string. Doesn't matter - his idea (passing a rect) is like mine (passing a matrix): in both cases it's about scaling the outline so that it takes the desired width and height. -- David Faure -- faure@kde.org, dfaure@klaralvdalens-datakonsult.se Qt/KDE/KOffice developer Klarälvdalens Datakonsult AB, Platform-independent software solutions _______________________________________________ koffice-devel mailing list koffice-devel@mail.kde.org http://mail.kde.org/mailman/listinfo/koffice-devel