Glyph

GDS Element Properties (PROPATTR/PROPVALUE)

GDSII lets any BOUNDARY, BOX, PATH, TEXT, SREF or AREF element carry arbitrary key/value metadata as a trailing PROPATTR/PROPVALUE pair — an integer attribute index plus an ASCII string, repeated as many times as the authoring tool likes, right before the element's ENDEL. Nothing in GDSII's own geometry model uses this channel, which is exactly why real files lean on it for things geometry can't say: a foundry's PDK-specific device tag, an LVS/schematic pin number, a dose-class annotation for a multi-pass e-beam job, a foundry's own internal part ID.

Before v0.137.0, opening such a file in Glyph and saving it back out silently dropped every one of those pairs — the geometry survived, the metadata didn't, and nothing said so. This guide is a straight answer to "will my properties still be there after I edit this in Glyph": what's kept, what isn't, and the honest boundary around a preserve-only feature with no editing UI.

Time: ~6 min. You'll need: nothing to download — this is a reference walkthrough of a round-trip behaviour, not a build-along. If you want to see it for yourself, any GDS file with PROPATTR/PROPVALUE records — from a PDK export, from KLayout's own property editor, or from another tool's device-tagging feature — will do.

What Glyph preserves, and how

Every property Glyph doesn't itself interpret is carried through byte-for-byte, in the order it arrived, duplicates included — GDSII allows more than one PROPATTR/PROPVALUE pair with the same attribute index on one element, and both the order and the duplication are spec-legal and significant, so Glyph doesn't dedupe or reorder them. This applies to every element type that can carry them: BOUNDARY, BOX, PATH, TEXT, SREF and AREF. properties is undefined on a Glyph-authored element that never carried any — the field only appears on elements that arrived with real data attached, so an ordinary drawn shape doesn't grow an empty array it has to drag around.

This is GDS → GDS only. Open a .gds with properties attached, edit the geometry around them, save it back to .gds, and the properties are still on the same elements, in the same order. Export that same document as OASIS, CIF, DXF, SVG or EPS, and the properties are gone — same as every other GDS-only field in Glyph's format comparison table (library name aside, none of GDSII's structural extras survive a lossy interchange format either). OASIS has its own, separate S_GDS_PROPERTY mechanism that carries a narrower set of things (text size, font, and PRESENTATION justification — see the next section) — that one does round-trip through Glyph's OASIS reader/writer, but it isn't the same channel as an arbitrary foreign GDS property, and the two shouldn't be conflated.

The attribute indices that don't mean what you'd expect

Two things are genuinely worth knowing before you rely on this for anything load-bearing:

One more honest wrinkle, purely about file compatibility rather than data loss: GDSII strictly expects a property's PROPATTR/PROPVALUE pair to appear after the element's coordinate (XY) record. Some real files put it before instead — spec-legal but out of the field order KLayout enforces strictly enough to refuse such a file outright. Glyph reads it leniently either way and attaches the property correctly; if this happens, the import warnings say so, because it's the only signal you'd otherwise get that the file you just opened is more fragile against a stricter reader than it looks. Re-saving from Glyph always writes properties in the standard, after-XY position, so a round trip through Glyph alone fixes that fragility rather than propagating it.

The honest boundary: preserve-only

There is no editor UI in Glyph to view, add, or edit a foreign element's properties — no panel row, no dialog field, nothing in the Properties panel. If you need to inspect what a file actually carries, a tool built for it (KLayout's property editor, or gdstk/gdspy from a script) is the right instrument; Glyph's job here is narrowly to not lose the data while you edit the geometry around it, not to give you a second properties browser. That's a deliberate scope line, not a gap waiting to be filled by accident — every command that duplicates an element (cloneShape, cloneSref, cloneAref in Glyph's own undo/redo machinery) deep-copies its properties array explicitly, so a copy-paste or an undo/redo cycle keeps them attached to the right instance without ever surfacing them for editing.

Quick reference

Question Answer
Does .gds → edit → .gds keep foreign PROPATTR/PROPVALUE pairs? Yes, byte-for-byte, in order, duplicates included, since v0.137.0.
Does export to OASIS/CIF/DXF/SVG/EPS keep them? No — GDS-only, same as every other GDS-only field.
Can I view or edit a property's value in Glyph's UI? No — preserve-only. Use KLayout or a script if you need to inspect or change one.
What about OASIS's S_GDS_PROPERTY for text size/font/justification? Separate mechanism, its own round trip, unaffected by this feature.
What if a foreign file uses PROPATTR index 124–127? Read as Glyph's own text metadata, not preserved as an opaque foreign property — see the section above.
What if a property arrives with no element to attach to? Reported as data loss in the import warnings, naming the index and count — not silently dropped.

Next steps

See the GDSII file format reference for where PROPATTR/PROPVALUE sit in the record catalogue, and Open and save GDS files for everything else Glyph's native round trip preserves — library name, cell order, timestamps. Export to your toolchain covers exactly what survives when you leave GDS for CIF, OASIS or DXF, property metadata included in that accounting. Then open the editor and open a PDK export with real device tags on it to see this for yourself.

Updated 2026-08-30

Open Glyph — free, no install Your files never leave your computer.
Open Glyph →