[squeak-dev] Unicode fonts and MultiCompositionScaner

Igor Stasenko siguctua at gmail.com
Thu Apr 16 22:52:35 UTC 2009


2009/4/17 Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>:
> A possible solution:
> Make stopConditions an object with inst vars 'stops crossedX endOfRun'.
> Then replace (stops at: CrossedX) with: (stops crossedX) in
> CharacterScanner and friends.
> Default initialization would be crossedX := #crossedX. endOfRun := #endOfRun.
> It only costs and indirection when executing (stops at: asciiValue + 1).
> (Remember this part has to be fast).
>
> By the way, did you notice the mess between inst var stopConditions
> and argument stops?
> This is http://bugs.squeak.org/view.php?id=6450
>

IMO the character scanner is too complicated for displaying a plain
text paragraph. It tries to be everything at once, like when you can
use it to draw characters over a spline path..
My feelings, that this part of output (which needs to be fast and
simple) is heavily over-engineered.

I would really love to see somebody to wipe this stuff out.

>
> 2009/4/17 Eliot Miranda <eliot.miranda at gmail.com>:
>>
>>
>> On Thu, Apr 16, 2009 at 2:52 PM, Andrey Larionov <anlarionov at gmail.com>
>> wrote:
>>>
>>> Sorry for hestiating, but since Unicode is come and Character ranges
>>> are enlarged, should we review this hardcodes?
>>
>> Of course  I was only trying to answer what they were used for. not
>> suggesting they should continue to be used that way.
>>>
>>> On Fri, Apr 17, 2009 at 01:09, Eliot Miranda <eliot.miranda at gmail.com>
>>> wrote:
>>> >
>>> >
>>> > On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov <anlarionov at gmail.com>
>>> > wrote:
>>> >>
>>> >> Investigating reasons of fail FontTest tests i found bug in
>>> >> MultiCompositionScaner (or it maybe some related class). Looks like
>>> >> what Character value: 257 had a special meaning in squeak.
>>> >
>>> > 257 was the code THE scan characters primitive answered when it reached
>>> > the
>>> > end of the input string.
>>> > 258 was the code it returned when the next character to be output would
>>> > have
>>> > crOssed over the right-hand margin.
>>> > Alas none of this is documented in the blue book.  You have to extract
>>> > it
>>> > from e.g. the Xerox V2.0 sources.
>>> > Here's the defines from an ancient VM of mine:
>>> > /* TextConstants pool variables initialised in Text */
>>> > #define CrossedX 258
>>> > #define EndOfRun 257
>>> >
>>> >>
>>> >> If not use
>>> >> StrikeFont everything is well, but if you choose FreeType font the
>>> >> doing something
>>> >> (Character value: 257) asString asTextMorph openInWorld
>>> >> creates an endles loop in composer. It founds character falls in
>>> >> crossedX method (this character is stopCondition) and then remove
>>> >> character from composition and starts again.
>>> >>
>>> >
>>> >
>>> >
>>> >
>>> >
>>>
>>
>>
>>
>>
>>
>
>



-- 
Best regards,
Igor Stasenko AKA sig.



More information about the Squeak-dev mailing list