Apologies for my phone related top posting.
I've been poking at pcb's internals for a long time now, and suspect I could (given time) fill in the geometry / rendering / connectivity parts of any file format extension. I just don't have a lot of time to drive the whole thing from design, documentation, discussion, testing etc..
Implementing editing support is often the hardest part of enabling a new feature. (Think gschem's paths - I never did finish support for creating those within gschem, only moving existing control points.)
I think any layer objects embeded in footprints (might as well include silk and copper in the same way  going forward), ought to reference predefined symbolic layer name or ID.
"TOP-SILK" "TOP-MASK" "TOP-COPPER" "INNER-COPPER" "INNER-ANTI-COPPER"* "BOTTOM-COPPER" etc...
*(inner anticopper might need some thought, possibly not one for today!).
These would no doubt be interpreted relative to the placement side. Names, and rules for these would need defining. Â Ideally, think how this applies to complex constructions like flex rigid and buried components. (If it is easy to design so we support / avoid breaking such flows, we should).
I'd be tempted to make pads layer objects going forward, (and let them reside on any copper layer), but perhaps for now, keeping them "special" and outside the normal layer data structure  may be cleaner due to the  fact they place objects on multiple "layers". (Copper, mask, paste etc...)
If there is need to define geometric areas (keepouts etc.), this should ideally be done with a primitive polycurve definition, not a collection of other objects. IDF supports line and circular arc segments for this, and I've been working on support for similar within PCBs polygons. You might need to consider how multiple outlines are handled.
I've been tempted to suggest a polycurve representation for pads too. Might want to indirect through a pad and/or padstack definition to avoid huge amounts of data repetition, and to allow the exporters to more easily group features into unique apertures etc.
If you have a link to hand, send me a pointer to the KiCAD footprint format reference please.
---
Peter Clifton <***@clifton-electronics.co.uk >
(Sent from my phone)
-------- Original message --------
From: Dave Curtis <***@sonic.net>
Date:09/07/2014 07:09 (GMT+00:00)
To: geda-***@delorie.com
Subject: Re: [geda-user] pour clearing around pads
On 07/08/2014 11:17 AM, Peter Clifton wrote:
Please don't use zero width pads...
OK :)
The file format makes no guarantee how they behave, and it seems like the special case free situation should view them as an under width DRC error.
Yes, its a total belly-flop onto "maybe it happens to work."
Adding support for defining additional mask within a footprint should not be insurmountable, just needs in the first instance, someone to define the extension to the file format.
Extending the file format is the easy part. I can come up with lots of ideas for syntax. And I could have a patch for the flex .l-file in minutes and recognize the the constructs in the bison code quite quickly as well. It's getting past that point is where we smack into a wall -- it's not clear to me that the internal data structures are ready to accept copper-clearance and mask-clearance features that are not associated with a pad or a pin.
A friend across town has been using KiCad for a while, and since we are interested in building the same sorts of things we try to share what we can in terms of tools and designs. Right now, we are hot on the "grand, unified, footprint generator script" problem.  We would like to come up with a single front-end that can create footprints for both pcb and KiCad so that we could share footprints more easily. So... I've been looking at the KiCad footprint file format and their new one can handle a lot of things that are somewhat vexing in pcb -- although I'm not too hot on the S-expression idea overall. Anyway, KiCad seems to leave some things out that my friend and I have been talking about -- like keep-outs.Â
So the point of the above paragraph is, yes, I can suggest some extensions, and now would be a good time to capture that since I am trying to wrap my head around the issues right now. What I can do:
1. write up some straw-man spec extensions
2. update the "footprint creation for.." document with what ever settles out of that.
What I can not do:
Investigate the feasibility of implementing the extensions. I simply don't know the code well enough.
-dave
Peter
---
Peter Clifton <***@clifton-electronics.co.uk >
(Sent from my phone)
-------- Original message --------
From: DJ Delorie
Date:07/07/2014 19:00 (GMT+00:00)
To: geda-***@delorie.com
Subject: Re: [geda-user] pour clearing around pads
Post by Dave CurtisI'm not sure where to look for how a zero-thickness pad might cause
phantom shorts or how it interacts with route blocking. Clues welcome.
The code considers a pad to be a line segment between two points, and
may do a "do these segments intersect" test independent of the "check
the width" test. djopt, I think, does this - intersection of segments
is a different test than the "happen to touch due to width" test.