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. 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. |
Ah, it reminds me
http://lists.squeakfoundation.org/pipermail/squeak-dev/2007-April/116179.html http://lists.squeakfoundation.org/pipermail/squeak-dev/2007-May/116508.html 2009/4/16 Andrey Larionov <[hidden email]>: > 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. 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. > > |
In reply to this post by Andrey Larionov
On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov <[hidden email]> wrote: Investigating reasons of fail FontTest tests i found bug in 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 |
Sorry for hestiating, but since Unicode is come and Character ranges
are enlarged, should we review this hardcodes? On Fri, Apr 17, 2009 at 01:09, Eliot Miranda <[hidden email]> wrote: > > > On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov <[hidden email]> > 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. >> > > > > > |
> On Fri, Apr 17, 2009 at 01:09, Eliot Miranda <[hidden email]> wrote:
> 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. If we talking about ranges from 1 to 256 yes, but if characters have zero based index, then 256, 257 On Fri, Apr 17, 2009 at 01:52, Andrey Larionov <[hidden email]> wrote: > Sorry for hestiating, but since Unicode is come and Character ranges > are enlarged, should we review this hardcodes? > > On Fri, Apr 17, 2009 at 01:09, Eliot Miranda <[hidden email]> wrote: >> >> >> On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov <[hidden email]> >> 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. >>> >> >> >> >> >> > |
In reply to this post by Andrey Larionov
On Thu, Apr 16, 2009 at 2:52 PM, Andrey Larionov <[hidden email]> wrote: Sorry for hestiating, but since Unicode is come and Character ranges Of course I was only trying to answer what they were used for. not suggesting they should continue to be used that way.
|
In reply to this post by Andrey Larionov
On Thu, Apr 16, 2009 at 2:57 PM, Andrey Larionov <[hidden email]> wrote:
I was only trying to explain what the meanings were.
|
But i'm just try to make more precise your explain :)
On Fri, Apr 17, 2009 at 02:18, Eliot Miranda <[hidden email]> wrote: > > > On Thu, Apr 16, 2009 at 2:57 PM, Andrey Larionov <[hidden email]> > wrote: >> >> > On Fri, Apr 17, 2009 at 01:09, Eliot Miranda <[hidden email]> >> > wrote: >> > 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. >> If we talking about ranges from 1 to 256 yes, but if characters have >> zero based index, then 256, 257 > > I was only trying to explain what the meanings were. > >> >> On Fri, Apr 17, 2009 at 01:52, Andrey Larionov <[hidden email]> >> wrote: >> > Sorry for hestiating, but since Unicode is come and Character ranges >> > are enlarged, should we review this hardcodes? >> > >> > On Fri, Apr 17, 2009 at 01:09, Eliot Miranda <[hidden email]> >> > wrote: >> >> >> >> >> >> On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov <[hidden email]> >> >> 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. >> >>> >> >> >> >> >> >> >> >> >> >> >> > >> > > > > > |
In reply to this post by Eliot Miranda-2
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 <[hidden email]>: > > > On Thu, Apr 16, 2009 at 2:52 PM, Andrey Larionov <[hidden email]> > 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 <[hidden email]> >> wrote: >> > >> > >> > On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov <[hidden email]> >> > 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. >> >> >> > >> > >> > >> > >> > >> > > > > > |
2009/4/17 Nicolas Cellier <[hidden email]>:
> 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 <[hidden email]>: >> >> >> On Thu, Apr 16, 2009 at 2:52 PM, Andrey Larionov <[hidden email]> >> 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 <[hidden email]> >>> wrote: >>> > >>> > >>> > On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov <[hidden email]> >>> > 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. |
That's the limit of operating in vivo: you need another display
mechanism while debugging... Changing the surface is easier: Andrey, you can try the changeSets (at your own risk) to be loaded in right order ! Be prepared to loose some images... Nicolas 2009/4/17 Igor Stasenko <[hidden email]>: > 2009/4/17 Nicolas Cellier <[hidden email]>: >> 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 <[hidden email]>: >>> >>> >>> On Thu, Apr 16, 2009 at 2:52 PM, Andrey Larionov <[hidden email]> >>> 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 <[hidden email]> >>>> wrote: >>>> > >>>> > >>>> > On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov <[hidden email]> >>>> > 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. > > TextStopConditions-Part1-nice.st (2K) Download Attachment TextStopConditions-Part2-nice.st (2K) Download Attachment TextStopConditions-Part3-nice.st (28K) Download Attachment TextStopConditions-Part4-nice.st (410 bytes) Download Attachment |
Thanks, try it tomorow. Also i have no my own image, so nothing to
loose :) Newbie On Fri, Apr 17, 2009 at 03:28, Nicolas Cellier <[hidden email]> wrote: > That's the limit of operating in vivo: you need another display > mechanism while debugging... > Changing the surface is easier: Andrey, you can try the changeSets (at > your own risk) to be loaded in right order ! > Be prepared to loose some images... > > Nicolas > > 2009/4/17 Igor Stasenko <[hidden email]>: >> 2009/4/17 Nicolas Cellier <[hidden email]>: >>> 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 <[hidden email]>: >>>> >>>> >>>> On Thu, Apr 16, 2009 at 2:52 PM, Andrey Larionov <[hidden email]> >>>> 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 <[hidden email]> >>>>> wrote: >>>>> > >>>>> > >>>>> > On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov <[hidden email]> >>>>> > 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. >> >> > > > > |
Free forum by Nabble | Edit this page |