Here is more information about the problem: as said, the issue comes from widthOfString:. So, I tested the basic infrastructure:

[10 to: 100 do: [ :x |
(LogicalFont familyName: 'Arial' pointSize: x)
widthOfString: 'test' ]] timeToRun

This one gets ==> 5s

So, where are the rest of the 20s being spent in Roassal? Essentially, given that Roassal will get a new logical font instance every time it tries to display, it essentially slows down everything in the image when multiple fonts are displayed.

I think we should find a way to cache the logical fonts in ROFontOrganizerAthens, or at least to provide the ability to set the font from outside in ROAbstractLabel (rather than just provide the font size).

Cheers,
Doru





On Sat, Aug 24, 2013 at 9:34 AM, Tudor Girba <tudor@tudorgirba.com> wrote:
Indeed, the issue we have is related to real font caching. It would be great to get a working solution for this. I guess this will not be available in Pharo 2.0 (it would make sense to focus on Pharo 3.0), but maybe we can get some hints as to how to build a little workaround.

I would like to release the Moose 4.8 image with Athens enabled, but I am not sure it's a good idea with this little issue inside.

Doru


On Fri, Aug 23, 2013 at 10:58 PM, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
Igor is working out on textEditor with fernando and they are making progress. 
I know that igor want to build a cache for fonts and that now he changed the API of Cairo because the previous one was making approximations that led to 
problems when zooming (and then to identify character under the mouse).
Now I do not know how and if it will have an impact (probably on this one).
One objectives is also to see how to reuse some of the morphs made on top of Rubric (but not rubric because it is based on the old and bad paragraph editor).

Stef

Hi,

Try this:
[view := ROMondrianViewBuilder new.
view shape label fontSize: [:x | x ].
view nodes: (10 to: 100).
view open] timeToRun  

On my MacBookPro i7 2.6 GHz this takes 23s.

The actual reason is that LogicalFont>>widthOfString: looks up the real font when the font is not yet cached. And this ends up looking for files on the disk.

I do not know an easy way out, but as it is, we cannot use font scaling essentially. And because of that, visualizations like Annotation Constellation are not practicable anymore:

Cheers,
Doru

--

"Every thing has its own flow"
_______________________________________________
Moose-dev mailing list
Moose-dev@iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev


_______________________________________________
Moose-dev mailing list
Moose-dev@iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev




--

"Every thing has its own flow"



--
www.tudorgirba.com

"Every thing has its own flow"