[squeak-dev] Unicode fonts and MultiCompositionScaner

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Thu Apr 16 22:40:24 UTC 2009


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


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.
>> >>
>> >
>> >
>> >
>> >
>> >
>>
>
>
>
>
>



More information about the Squeak-dev mailing list