Microsoft Expression uses a profile shape method that is just like what Bulia suggested.  The width equals the path length and the  nodes along the profile shape equal the distance away from the centerline for the brush object's width.

The LPE could be given three pieces of information... bottom most item is the stroke path, then brush object and then the profile path.  If no profile path is selected, then the brush object is drawn along the stroke path without any change in brush width.

----- Original Message ----
Message: 2
Date: Wed, 03 Sep 2008 20:15:14 +0200
From: Maximilian Albert <Anhalter42@...173...>
Subject: Re: [Inkscape-devel] "Live Pen" Feature Bounty
To: bulia byak <buliabyak@...400...>
Cc:, J.B.C.Engelen@...1578...
Message-ID: <48BED432.6080504@...173...>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

bulia byak schrieb:

> I think we will need to store widths not per node, but as a list of
> length along path/width pairs, with length measured in percentages
> of the total length of subpath

That's an excellent idea. Since I had something like Pajarico's other
suggestion in mind (see different email), I was thinking about how to
store per-node information. But separating the width info from nodes and
storing it in the described way will make the LPE very powerful and

>> And finally, for the actual profile shape I think we should use a
>> Spiro path for extra smoothness and natural flow. However, if we want
>> to eventually support sharp width changes, we will need to store for
>> each point its type - whether it is a smooth Spiro point or a cusp
>> point.

> I'm not sure if I understand you correctly here (in particular: what do
> you mean by "profile shape"?), but why not apply the LPE to any path
> whatsoever? The 2geom routines are flexible enough to make this
> possible. If you want it to be on top of a spiro path, just use LPE
> stacking.

> Max