From: Cedric B. <ced...@fr...> - 2009-08-10 12:59:00
|
On Mon, Aug 10, 2009 at 2:46 PM, Thiago Borges Abdnur<bo...@gm...> wrote: > On Sun, Aug 9, 2009 at 7:27 PM, Gustavo Sverzut Barbieri > <bar...@pr...> wrote: >> On Sat, Aug 8, 2009 at 11:24 AM, Thiago Borges Abdnur<bo...@gm...> >> wrote: >> > Hi guys! >> > >> > I'm trying to make a textblock wrap the text with wrap=word in style. >> It's >> > working, but when long words are set, it doesn't break them. Isn't there >> a >> > style option that tries to break the words and then, if there are words >> that >> > won't fit, break them as wrap=char does? >> >> not there. I could say "go and do it", but bear in mind that this is >> tricky to get good. I did it once (2002) for Freevo project and lots >> of heuristics to have something acceptable in English... Latex uses >> hypenization mappings to know where to break it, and it changes >> between languages... just doing naive "if not word, break at ANY char" >> is bad, and somethings can cause weird meanings... also, need to add >> "-" and accounting that is tricky as well, as kerning and ligatures >> may change the size, you cannot say width of "-" is W, so I need room >> to fit W... you need to add it and recalculate the size, possible >> going back more than one character. >> >> Anyway, it can be done, we could even do some good heuristics, but it >> consumes lots of manpower... if you want to give it a try, be my guest >> :-) > > That would be much more complex. Just breaking the text anywhere would work > nicely, as wrap=char does. > Another question: is there a way to know which part of the text didn't fit? > Maybe a way to calculate the hight the text will need, so it could be split > into various textblocks. Thing is I'm thinking of putting an image beside > the text, but to achieve that, I need two textblocks, and I need to know > what didn't fit in the first block. > > Any tips? I would "just" add the support for exclusion object inside textblock. Something that would work like the clip API, but the other way arround and just for textblock. It is doable, not easy, but basically only one C file should be modified, src/lib/canvas/evas_object_textblock.c around function _layout at line 2047. This feature is somewhere inside Evas TODO list, but not an high priority right now for anyone as far as I know. So if you are skilled in C, have some aspirin, this could be a good standalone patch for evas waiting for anyone to spend time on it... -- Cedric BAIL |