[squeak-dev] Fwd: A little font rendering speedup

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[squeak-dev] Fwd: A little font rendering speedup

Igor Stasenko
I put this on mantis, since i'm sure this applies to squeak3.10 and Pharo both.

http://bugs.squeak.org/view.php?id=7338


---------- Forwarded message ----------
From: Igor Stasenko <[hidden email]>
Date: 2009/4/19
Subject: A little font rendering speedup
To: Pharo Development <[hidden email]>


This is an image-side change, which makes a primitiveDisplayString to
not fail because StrikeFontSet returns nil for (font
characterToGlyphMap).

Since the code, which using fast primitive looks like following:

       self primDisplayString: aString from: startIndex to: stopIndex
                       map: font characterToGlyphMap xTable: font xTable
                       kern: kernDelta

I thought, why one would return nil in ( font characterToGlyphMap ).
Since #xTable in StrikeFontSet implemented as following:

xTable
       "Answer an Array of the left x-coordinate of characters in glyphs."

       ^ (fontArray  at: 1) xTable.

i think it is safe to do similar in characterToGlyphMap ,
this allows the primitive to work w/o failure, because otherwise, if
you look at implementation of

primDisplayString: aString from: startIndex to: stopIndex map:
glyphMap xTable: xTable kern: kernDelta

in fallback code it does same thing again (and ignoring glyphMap at all, btw).


To bench a difference, leave a couple of windows with text in world and then do:

[10 timesRepeat: [World fullDrawOn: World assuredCanvas] ] timeToRun

before change:

 645

after change:

 545




--
Best regards,
Igor Stasenko AKA sig.



StrikeFontSet-characterToGlyphMap.st (758 bytes) Download Attachment