[squeak-dev] #createSegmentsFromSVG: [was: Bezier filled shape rendering artifacts]

Klaus D. Witzel klaus.witzel at cobss.com
Tue Mar 25 15:20:47 UTC 2008


On Tue, 25 Mar 2008 14:36:49 +0100, Gary Chambers wrote:

> Though I did find a bug (rarely encountered) in
> SVGPathMorph>>createSegmentsFromSVG.
>
> Replace
>
> 	data do: [:cmd |
> 		((cmd = $S or: [cmd = $s]) and: ['CcSs' includes: c not])
> 			ifTrue: [lastCubicControl := position].
> 		((cmd = $T or: [cmd = $t]) and: ['QqTt' includes: c not])
> 			ifTrue: [lastQuadraticControl := position].
>
> with
>
> 	data do: [:cmd |
> 		((cmd key = $S or: [cmd key = $s]) and: ['CcSs' includes: c not])
> 			ifTrue: [lastCubicControl := position].
> 		((cmd key = $T or: [cmd key = $t]) and: ['QqTt' includes: c not])
> 			ifTrue: [lastQuadraticControl := position].

Yes, seen that. But the glyph files that I tested never did the #ifTrue:  
part in the patched (last week, by me) version, because, otherwise  
aCharacter would have DNU'ed #not ;-)

Also[1], command $Z is not handeled in #createSegmentsFromSVG: and in  
#pathDataFromSVG: ($z is, both methods can do what $z does when it's $Z  
and when after the data do: it's not $Z). I had just converted $Z to $z in  
#pathDataFromSVG: and let the rest as is.

Also[2], use of temp names lastCubicControl,lastQuadraticControl seems not  
to be consistent in the $t branch (compared to the $T branch).

>
> Also, never did get to the bottom of why the page bounds sometimes come  
> out
> wrong... (perhaps because taken from the SVG rather than computed
> "after-the-fact").
>
> Glad someone is still using the old SVGMorph "experiment"!

Yay, and it works :) still can't believe it :)

There are BTW "only" some 6,000 known glyphs of this sort; my Inkskape  
instance will surely get burned when I do change the scaling of the 2,500  
[many duplicates] .svg files that I have in my directory.

/Klaus

> Regards, Gary.




More information about the Squeak-dev mailing list