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.htm... http://lists.squeakfoundation.org/pipermail/squeak-dev/2007-May/116508.html
2009/4/16 Andrey Larionov anlarionov@gmail.com:
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.
On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov anlarionov@gmail.comwrote:
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.
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 eliot.miranda@gmail.com wrote:
On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov anlarionov@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.
On Fri, Apr 17, 2009 at 01:09, Eliot Miranda eliot.miranda@gmail.com 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 anlarionov@gmail.com 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 eliot.miranda@gmail.com wrote:
On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov anlarionov@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.
On Thu, Apr 16, 2009 at 2:57 PM, Andrey Larionov anlarionov@gmail.comwrote:
On Fri, Apr 17, 2009 at 01:09, Eliot Miranda eliot.miranda@gmail.com
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 anlarionov@gmail.com 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 eliot.miranda@gmail.com
wrote:
On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov anlarionov@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.
But i'm just try to make more precise your explain :)
On Fri, Apr 17, 2009 at 02:18, Eliot Miranda eliot.miranda@gmail.com wrote:
On Thu, Apr 16, 2009 at 2:57 PM, Andrey Larionov anlarionov@gmail.com wrote:
On Fri, Apr 17, 2009 at 01:09, Eliot Miranda eliot.miranda@gmail.com 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 anlarionov@gmail.com 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 eliot.miranda@gmail.com wrote:
On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov anlarionov@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.
On Thu, Apr 16, 2009 at 2:52 PM, Andrey Larionov anlarionov@gmail.comwrote:
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@gmail.com
wrote:
On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov anlarionov@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.
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@gmail.com:
On Thu, Apr 16, 2009 at 2:52 PM, Andrey Larionov anlarionov@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@gmail.com wrote:
On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov anlarionov@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.
2009/4/17 Nicolas Cellier nicolas.cellier.aka.nice@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@gmail.com:
On Thu, Apr 16, 2009 at 2:52 PM, Andrey Larionov anlarionov@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@gmail.com wrote:
On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov anlarionov@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.
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 siguctua@gmail.com:
2009/4/17 Nicolas Cellier nicolas.cellier.aka.nice@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@gmail.com:
On Thu, Apr 16, 2009 at 2:52 PM, Andrey Larionov anlarionov@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@gmail.com wrote:
On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov anlarionov@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.
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 nicolas.cellier.aka.nice@gmail.com 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 siguctua@gmail.com:
2009/4/17 Nicolas Cellier nicolas.cellier.aka.nice@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@gmail.com:
On Thu, Apr 16, 2009 at 2:52 PM, Andrey Larionov anlarionov@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@gmail.com wrote:
On Thu, Apr 16, 2009 at 1:05 PM, Andrey Larionov anlarionov@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.
squeak-dev@lists.squeakfoundation.org