WIF steht für Weaving Information File (Webinformationsdatei). Es ist ein Klartextformat, das die meisten Webprogramme öffnen und speichern können, damit du eine Patrone zwischen Apps verschieben kannst, ohne sie neu zu zeichnen. Die Version, die alle verwenden, ist 1.1 vom 20. April 1997.
Unten gehen wir Abschnitt für Abschnitt durch, wie eine .wif-Datei aufgebaut ist, und notieren, was Bower und unser kostenloser WIF-Betrachter mit jedem Teil wirklich machen. Wenn du ein Werkzeug schreibst oder eine Datei reparierst, die sich nicht sauber öffnet, sollte das helfen. Für eine verständliche Einführung zuerst siehe Was ist eine WIF-Datei?.
Wenn wir etwas über Bower sagen, verwenden wir diese Labels:
- Unterstützt — wir lesen es, schreiben es, oder beides.
- Teilweise — wir verarbeiten es, aber nicht jeden Randfall aus dem 1.1-Text.
- Ignoriert — die Datei darf es enthalten; wir überspringen es und lassen den Import nicht allein deshalb scheitern.
- Nicht geschrieben — unser Export gibt es nie aus.
- In 1.1 ausgesetzt — steht noch im alten Formattext, gehört aber heute nicht mehr zum normalen Gebrauch.
1. Designziele
Die Gestalter von WIF wollten ein Format, das wachsen kann, ohne unlesbar zu werden, das ein Mensch in einem Texteditor öffnen und noch verstehen kann, und das jeder Rechner verarbeiten kann, der Klartext liest.
Sie wählten menschenfreundliche Kommalisten von Schaft- und Trittnummern statt gepackter Binärfelder. Das Layout sieht stark wie eine alte Windows-.INI-Datei aus — Abschnitte in eckigen Klammern, Zeilen Key=value — ist aber nicht auf die 64K klassischer Windows-3.1-Ini-Dateien begrenzt. Die alten Windows-Private-Profile-APIs kannst du nicht nutzen; du musst den Text selbst parsen.
2. Dateityp
Eine .wif-Datei ist einfach Text. Es gibt keinen Binärwrapper. Man erwartet die Endung .wif; entscheidend ist der Inhalt.
Typical extension .wif Character set ASCII (UTF-8 without BOM is fine in practice) Line endings LF or CRLF Order Readers must not depend on section or key order
Bower: Wir lesen und schreiben .wif als gewöhnlichen Text.
3. Lexikalische Regeln
Alles ist zeilenbasiert. Eine Zeile ist leer, ein Kommentar, ein Abschnittskopf oder ein Schlüssel/Wert-Paar.
- Leerzeilen werden ignoriert.
- Wenn das erste Nicht-Leerzeichen «;» ist, ist die ganze Zeile ein Kommentar. Du kannst auch nach einer Zahl oder einem Booleschen Wert einen Kommentar setzen (oft nach einem weiteren «;»). Freitext-Schlüssel sollten keine nachgestellten Kommentare in derselben Zeile haben.
- Abschnittsköpfe sehen aus wie [Section Name]. Der Vergleich ist groß-/kleinschreibungsunabhängig; konventionell stehen die Namen in Großbuchstaben.
- Zuweisungen sehen aus wie Key=value. Der Schlüsselvergleich ist groß-/kleinschreibungsunabhängig. Der Wert ist alles nach dem ersten «=» in dieser Zeile.
- Doppelte Schlüssel in einem Abschnitt sind schlechter Stil. Leser dürfen nicht abstürzen; sie können den ersten oder den letzten Wert behalten.
- Abschnittsreihenfolge und Schlüsselreihenfolge in einem Abschnitt spielen für einen korrekten Leser keine Rolle.
Hier ein winziges Fragment (keine vollständige Patrone):
; this line is ignored [WEAVING] Shafts=4 Treadles=4
Bower: Wir überspringen Leerzeilen und vollständige ;-Kommentarzeilen, vergleichen Namen groß-/kleinschreibungsunabhängig, und bei gewöhnlichen Schlüsseln gewinnt der letzte Wert. Strukturzeilen sind nach Nummer indiziert. Wir trimmen Werte, entfernen aber Inline-Kommentare am Zeilenende nicht extra.
4. Boolesche Werte und Symbole
Für wahr/falsch erlaubt das Format true, on, yes und 1 auf der wahren Seite, und false, off, no und 0 auf der falschen. Fehlt ein optionaler Boolescher Wert, behandle ihn als falsch, sofern ein Abschnitt nichts anderes sagt.
Bower: Wir behandeln true, yes und 1 als wahr. Alles andere Nicht-Leere zählt als falsch. on und off behandeln wir nicht gesondert.
Manche Programme speichern Patronen-«Symbole» (Zeichen statt gefüllter Kästchen). Die nutzen einen kleinen Symboltyp:
=1 digit =X single character ='X' quoted character =#219 character code 0..255 Write a space as ' ' or #32. Write a hash as '#' or #35.
Bower: Wir implementieren keine Symbole. Das Aussehen sind nur Farben. Symbolabschnitte werden beim Import ignoriert und beim Export nie geschrieben.
5. Mindestanforderungen
Eine korrekte 1.1-Datei hat immer [WIF] und [CONTENTS]. Jeder andere Abschnitt, der tatsächlich in der Datei vorkommt, sollte unter [CONTENTS] mit dem Wert true stehen. Du kannst unbenutzte Abschnitte weglassen oder als false listen. Ist ein Abschnitt vorhanden, sollten auch seine Pflichtschlüssel vorhanden sein.
Eine Datei, die nur Einzug hat und keinen [WIF]-Block, ist also kein gültiges WIF-1.1-Dokument — auch wenn manche Tools sie trotzdem zu lesen versuchen.
Bower: Der Import scheitert ohne [WIF]. [CONTENTS] verlangen und prüfen wir beim Einlesen nicht. Beim Export schreiben wir immer beides und markieren true für jeden Abschnitt, den wir ausgeben.
6. Informationsabschnitte, Datenabschnitte und spärliche Daten
Manche Abschnitte sind Hintergrund (Titel, Palettengröße, Webstuhlzähler), andere sind die eigentlichen Zeilen der Patrone (Einzug, Farben pro Faden usw.). [CONTENTS] listet, was enthalten ist. [WIF] selbst steht dort nicht.
Das Format erwartet spärliche Daten. Du erzeugst alle Kett- und Schussfäden aus Threads, füllst Defaults aus [WARP] und [WEFT], setzt Strukturzellen auf null (unbenutzt) und schreibst nur die Zeilen, die von diesen Defaults abweichen. Leser kehren den Prozess um.
Zum Beispiel: wenn acht Kettfäden dasselbe Rot sind und nur Faden 3 blau ist, kannst du Rot am Kett defaulten und eine Zeile überschreiben:
[WARP] Threads=8 Color=1 [WARP COLORS] 3=2
Fäden 1, 2, 4–8 bleiben bei Palettenfarbe 1; Faden 3 nutzt Palettenfarbe 2. Gleiche Idee bei der Struktur: eine fehlende Einzugszeile heißt «keine Schäfte an diesem Faden», nicht «vorherigen Faden kopieren».
Bower: Wir nutzen Fadenanzahlen und die Struktur-/Farbtabellen. Spacing/Thickness-Defaults und spärliches Thickness/Spacing implementieren wir nicht. Struktur ist standardmäßig leer; fehlende Strukturschlüssel bleiben leer. Ist eine Farbtabelle vorhanden, wenden wir [WARP]-/[WEFT]-Color-Defaults an, wenn der Index größer als null ist, und danach die Überschreibungen pro Faden und Schuss.
7. Private Abschnitte
Apps können eigene Daten ablegen, ohne alle anderen zu stören. Der Name muss eine eindeutige Source-ID enthalten, damit zwei Anbieter nicht kollidieren:
[PRIVATE <SourceID> <SectionName>] Lines inside must not start with '[' so a reader can find the next section.
Bower: Wir überspringen private Abschnitte und schreiben sie nie. Wir definieren keine private Source-ID.
8. Abschnittkatalog
Hier kommt jeder benannte Abschnitt aus WIF 1.1 und was wir damit machen. Wenn dich nur das Öffnen von Patronen in Bower interessiert, kannst du die «Ignoriert»-Einträge überfliegen und dich auf Struktur, Farben und die Exportliste in Abschnitt 10 konzentrieren.
8.1 [WIF] — erforderlich
Das ist der Identitätsblock. Ohne ihn behandeln wir die Datei nicht als WIF.
Key Official Description ---- -------- ----------- Version required e.g. 1.1 Date required free-form date string Developers required contact / authors Source Program required creating program name Source Version optional creating program version
Bower: Der Abschnitt selbst ist beim Import erforderlich. Wir schreiben Version=1.1, Date, Developers, Source Program=Bower und Source Version beim Export. Fehlende Einzelkeys in [WIF] lassen den Import nicht hart scheitern.
8.2 [CONTENTS] — in 1.1 erforderlich
Das ist ein Inhaltsverzeichnis: Abschnittsname als Schlüssel, true oder false als Wert. Nur vorhandene Abschnitte müssen als true gelistet werden. Manche Autoren listen alle möglichen Abschnitte mit true/false; das ist erlaubt, nicht Pflicht.
Theoretisch könnte ein sorgfältiger Leser allein aus CONTENTS entscheiden, was zu laden ist. In der Praxis laufen viele Tools (auch wir) einfach die ganze Datei ab.
Informational flags: COLOR PALETTE, WARP SYMBOL PALETTE, WEFT SYMBOL PALETTE, TEXT, WEAVING, WARP, WEFT Data flags: NOTES, TIEUP, COLOR TABLE, WARP SYMBOL TABLE, WEFT SYMBOL TABLE, THREADING, WARP THICKNESS, WARP THICKNESS ZOOM, WARP SPACING, WARP SPACING ZOOM, WARP COLORS, WARP SYMBOLS, TREADLING, LIFTPLAN, WEFT THICKNESS, WEFT THICKNESS ZOOM, WEFT SPACING, WEFT SPACING ZOOM, WEFT COLORS, WEFT SYMBOLS, PRIVATE <SourceID> <SectionName> Suspended / reserved: TRANSLATIONS BITMAP IMAGE, BITMAP FILE, BITMAP IMAGE DATA
Bower: CONTENTS verlangen wir beim Import nicht und nutzen es nicht zur Auswahl des Parsings. Beim Export schreiben wir true für jeden Abschnitt, den wir wirklich ausgeben.
8.3 [COLOR PALETTE]
Das sagt dir, wie groß die Palette ist und welchen Zahlenbereich die RGB-Werte nutzen. Ältere Dateien verwenden manchmal 0–999 statt 0–255, daher müssen Leser skalieren.
Key Official Description ---- -------- ----------- Entries required integer > 0, palette size Range required min,max with max > min Form=RGB obsolete do not write; ignore if present
Zum Beispiel: Range=0,999 und ein Tabelleneintrag 1=999,0,0 mappt den Rotkanal auf etwa 255 in 8 Bit. Bei Range=0,255 und 1=255,0,0 ist keine Skalierung nötig.
Bower: Wir lesen Range (Default 0,255 wenn fehlend) und wandeln jeden Kanal mit round((c − min) / (max − min) * 255) um, dann clamp auf 0–255. Ist max−min null oder negativ, scheitert der Import. Entries erzwingen wir nicht. Export nutzt immer Range=0,255.
8.4 [WARP SYMBOL PALETTE] / [WEFT SYMBOL PALETTE]
Key Official Description ---- -------- ----------- Entries required integer > 0
Bower: Ignoriert. Nicht geschrieben.
8.5 [TEXT]
Optionale Notizen zu Stück und Macher — Titel, Autor, Kontakt. Nichts davon ändert das Patronenraster.
Key Official ---- -------- Title optional Author optional Address optional EMail optional Telephone optional FAX optional
Bower: Ignoriert. Nicht geschrieben.
8.6 [WEAVING]
Webstuhlgröße und Fachkonvention. Schäfte und Tritte können wachsen, wenn Strukturabschnitte höhere Nummern nennen als hier deklariert.
Key Official Description ---- -------- ----------- Shafts required integer > 0 Treadles required integer > 0 Rising Shed optional true = listed shafts go up Profile obsolete ignore; do not write
Steigendes Fach heißt: die im Hubplan gelisteten Schäfte (oder über Tritt/Anbindung gehobenen) sind die, die heben. Fallendes Fach ist die andere physische Konvention. Sagt eine Datei fallendes Fach, invertieren wir nach dem Laden die Hubplan-Zellen — oder die Anbindungszellen —, damit unsere internen Gitter steigendes Fach bleiben und das Gewebe dem Dateisinn entspricht.
Bower: Wir lesen Shafts und Treadles (Default 4 wenn fehlend) und wachsen sie bei Bedarf aus der Struktur. Fehlendes Rising Shed gilt als true. False löst die Invertierung oben aus. Export schreibt immer Rising Shed=true und Treadles=0 im Hubplan-Modus. Profile wird ignoriert.
8.7 [WARP] und [WEFT]
Diese beschreiben die ganze Kette bzw. den ganzen Schuss und den Default pro Faden. Kennst du Threads, allokierst du so viele Enden oder Schüsse, wendest Defaults an und lässt spärliche Abschnitte Einzelne überschreiben (siehe Abschnitt 6).
Key Official Description
---- -------- -----------
Threads required number of ends or picks
Color optional palette index, or index + R,G,B
Symbol optional symbol type
Symbol Number optional index into symbol table
Units required if spacing/ Decipoints | Inches | Centimeters
thickness used
Spacing optional real ≥ 0
Thickness optional real ≥ 0
Spacing Zoom optional integer ≥ 0
Thickness Zoom optional integer ≥ 0
Obsolete in 1.1 (ignore / do not write):
Colors, Palette, ColorMix
Bei Color bevorzuge einen einfachen Palettenindex für den Austausch. Manche Dateien hängen auch ein RGB-Tripel an; wir nutzen nur den Index.
Color=2 ; every end/pick defaults to COLOR TABLE entry 2 Color=2,255,0,0 ; index plus optional RGB — we keep the index only
Unterstützt ein Programm nur eines von Spacing und Thickness, sagt das Format: Spacing bevorzugen, wenn beides da ist. Denkst du nur in «Dicke», schreibe Spacing (oder beides mit denselben Zahlen).
Bower: Wir lesen Threads (Defaults 32 für Kette und 48 für Schuss wenn fehlend) und Color als einen Palettenindex, wenn er größer als null ist. Symbole, Spacing, Thickness, Zooms und extra RGB an Color ignorieren wir. Export schreibt Threads, Color und Units=Centimeters.
8.8 [NOTES]
Freitext, ein String pro nummerierter Zeile. Gehört nicht zu den Patronengittern.
1=First line of notes 2=Second line
Bower: Ignoriert. Nicht geschrieben.
8.9 [TIEUP]
Jeder Tritt listet die Schäfte, die er hebt (Sinn steigendes Fach, vor jeder Invertierung). Das nutzt du mit Einzug und Trittreihenfolge, wenn du nicht im reinen Hubplan bist.
Key = treadle (1..n)
Value = shafts, comma-separated
0 alone means unused
Missing lines stay unused
Example: 1=1,2 → treadle 1 raises shafts 1 and 2
Bower: Unterstützt im Anbindungsmodus. Mehrschaft-Werte sind in Ordnung. Export schreibt eine Zeile pro Tritt.
8.10 [COLOR TABLE]
Das ist die Palette. Indizes hier sind das, worauf Kett-/Schuss-Color-Schlüssel zeigen. Die R,G,B-Zahlen liegen im Range von [COLOR PALETTE].
Key = palette index Value = R,G,B in the palette Range
Hier ein kleines Beispiel aus Palette, Kett-Default und zwei Überschreibungen:
[COLOR PALETTE] Entries=2 Range=0,255 [COLOR TABLE] 1=200,40,40 2=40,40,200 [WARP] Threads=4 Color=1 [WARP COLORS] 2=2 4=2
Fäden 1 und 3 defaulten auf den rötlichen Paletteneintrag; Fäden 2 und 4 nutzen den bläulichen.
Bower: Unterstützt, mit dem oben beschriebenen Range-Mapping. Export schreibt einen Tabelleneintrag pro eindeutiger Garnfarbe und nutzt immer Range=0,255.
8.11 [WARP SYMBOL TABLE] / [WEFT SYMBOL TABLE]
Key = symbol index Value = WIF symbol type (see section 4)
Bower: Ignoriert. Nicht geschrieben.
8.12 [THREADING]
Durch welche Schäfte jeder Kettfaden geht. Mehrere Schäfte an einem Faden sind erlaubt.
Key = warp end (1..n)
Value = shaft, or shaft,shaft,...
1=1,5 means end 1 is on shafts 1 and 5
0 means unused
Missing lines stay unused
Bower: Unterstützt, inklusive Mehrschaft-Fäden. Export schreibt eine Zeile pro Faden.
8.13 Abschnitte pro Faden und Schuss
Diese hängen Werte an einzelne Enden oder Schüsse. Drei Gruppen: Struktur (Trittreihenfolge / Hubplan), Farbe und Erscheinung (Dicke, Abstand, Symbole).
Section Value Default if missing
------- ----- ------------------
[WARP THICKNESS] real ≥ 0 [WARP].Thickness
[WARP THICKNESS ZOOM] integer ≥ 0 [WARP].Thickness Zoom
[WARP SPACING] real ≥ 0 [WARP].Spacing
[WARP SPACING ZOOM] integer ≥ 0 [WARP].Spacing Zoom
[WARP COLORS] palette idx [WARP].Color
(one integer; ignore old R,G,B tail)
[WARP SYMBOLS] symbol idx [WARP].Symbol Number
[TREADLING] treadles unused (zero)
[LIFTPLAN] shafts unused (zero)
[WEFT THICKNESS] real ≥ 0 [WEFT].Thickness
[WEFT THICKNESS ZOOM] integer ≥ 0 [WEFT].Thickness Zoom
[WEFT SPACING] real ≥ 0 [WEFT].Spacing
[WEFT SPACING ZOOM] integer ≥ 0 [WEFT].Spacing Zoom
[WEFT COLORS] palette idx [WEFT].Color
[WEFT SYMBOLS] symbol idx [WEFT].Symbol Number
Trittreihenfolge ist für den Anbindungsmodus: Schlüssel ist der Schuss, Wert welche Tritte du drückst, z. B. 5=1,2. Hubplan ist direkt: Schlüssel ist der Schuss, Wert welche Schäfte heben, z. B. 5=1,3. Eine normale Datei nutzt den einen oder den anderen Steuerweg, nicht beide gleichzeitig (siehe nächster Abschnitt).
Bower: Wir unterstützen Trittreihenfolge, Hubplan und Kett-/Schussfarben. Thickness, Spacing, Zoom und Symbolabschnitte ignorieren wir und schreiben sie nie.
8.14 Webstuhlmodus, steigendes Fach und Bindungspatrone
Es gibt keinen einzelnen «mode=»-Schlüssel in der Datei. Wie die Struktur zu lesen ist, ergibt sich aus dem, was vorhanden ist.
Das ist die Regel, die wir in Bower und im kostenlosen WIF-Betrachter verwenden:
If [LIFTPLAN] is present
and ([TREADLING] is missing or Treadles is 0)
then treat the file as liftplan
(THREADING + LIFTPLAN)
else treat it as tie-up
(THREADING + TIEUP + TREADLING)
Hubplan ist das Dobby-Modell «jeder Schuss listet Schäfte». Anbindung ist das klassische Schaftwebstuhl-Modell: Tritte wählen eine Spalte der Anbindung, Trittreihenfolge ist die Folge der Tritte.
Ist Rising Shed false, invertieren wir nach dem Laden jedes Hubplan-Zelle (Hubplan-Modus) oder jede Anbindungszelle (Anbindungsmodus). Einzug und Trittreihenfolge bleiben wie geschrieben.
Rising Shed=true, pick 1=1,2 → shafts 1 and 2 up
Rising Shed=false, same line → those shafts stored as down,
other shafts flipped on
Die Bindungspatrone (Drawdown) steckt nicht in der Datei. Nach dem Laden der Struktur (und jeder Fach-Invertierung) ist jede Gewebzelle Kette oben, wenn ein Schaft, der an diesem Faden eingezogen ist, in diesem Schuss auch gehoben ist — entweder aus dem Hubplan oder über einen aktiven Tritt und seine Anbindung. Sonst ist es Schuss oben. Programme berechnen das für die Anzeige neu; es gibt keinen Drawdown-Abschnitt zum Exportieren.
Bower: So laden und zeigen wir. Der kostenlose WIF-Betrachter folgt denselben Struktur- und Farbregeln. Im Hubplan-Modus lässt der Betrachter den leeren Anbindungsblock weg und zeigt Tritte als «-» im Seitenpanel.
8.15 Ausgesetzte und veraltete Teile
Suspended at 1.1: [TRANSLATIONS] [BITMAP FILE], [BITMAP IMAGE], [BITMAP IMAGE DATA] Dropped / obsolete in the 1.1 narrative: Design section, ColorMix, Colors key, Palette key, RGB tail on WARP/WEFT COLORS
Bower: Wir ignorieren all das und schreiben es nicht. Unbekannte Abschnitte lassen den Import allein nie scheitern.
9. Bower-Größenlimits
Das gehört nicht zu WIF 1.1. Beim Import klemmen wir Dimensionen, damit eine wilde Datei kein unbegrenztes Gitter anlegen kann. Werte außerhalb des Bereichs werden in den Bereich gezogen statt als «kein WIF» abgelehnt.
Warps, wefts 1 .. 4096 Shafts, treadles 1 .. 64
10. Was Bower schreibt
Unser Export ist eine vollständige Datei mit steigendem Fach, gedacht zum Öffnen in anderen 1.1-Lesern, die dieselben Kernabschnitte verstehen. Notizen, Symbole, Spacing oder private Herstellerdaten aus einem früheren Import bewahren wir nicht — die gehen bei einem Roundtrip über uns verloren.
- [WIF], [CONTENTS], [COLOR PALETTE] mit Range=0,255, [WEAVING] mit Rising Shed=true
- [WARP] und [WEFT] mit Threads, Color-Index, Units=Centimeters
- [COLOR TABLE], [THREADING], [WARP COLORS], [WEFT COLORS]
- Entweder [LIFTPLAN] und Treadles=0, oder sowohl [TIEUP] als auch [TREADLING]
- Keine TEXT-, NOTES-, Symbol-, Spacing-, Thickness-, privaten oder Bitmap-Abschnitte
11. Beispiele
Zwei kleine vollständige Dateien. Keine Farbtabelle — nur Struktur.
11.1 Anbindungsmodus
Acht Fäden, acht Schüsse, vier Schäfte, vier Tritte. Gerader Einzug, einfache Köper-Anbindung, Trittreihenfolge, die die vier Tritte zweimal abläuft.
[WIF] Version=1.1 Date=April 20, 1997 [email protected] Source Program=Example Source Version=1.0 [CONTENTS] WEAVING=true WARP=true WEFT=true THREADING=true TIEUP=true TREADLING=true [WEAVING] Shafts=4 Treadles=4 Rising Shed=true [WARP] Threads=8 [WEFT] Threads=8 [THREADING] 1=1 2=2 3=3 4=4 5=1 6=2 7=3 8=4 [TIEUP] 1=1,2 2=2,3 3=3,4 4=1,4 [TREADLING] 1=1 2=2 3=3 4=4 5=1 6=2 7=3 8=4
11.2 Hubplan-Modus
Vier Fäden, vier Schüsse. Treadles ist 0 und [LIFTPLAN] ist vorhanden, also wird die Datei als Hubplan gelesen. Jeder Schuss listet Schäfte direkt — keine Anbindung, keine Trittreihenfolge.
[WIF] Version=1.1 Date=April 20, 1997 [email protected] Source Program=Example [CONTENTS] WEAVING=true WARP=true WEFT=true THREADING=true LIFTPLAN=true [WEAVING] Shafts=4 Treadles=0 Rising Shed=true [WARP] Threads=4 [WEFT] Threads=4 [THREADING] 1=1 2=2 3=3 4=4 [LIFTPLAN] 1=1,2 2=2,3 3=3,4 4=1,4
12. Verwandte Werkzeuge
Du kannst eine .wif im kostenlosen WIF-Betrachter öffnen, um die Patrone im Browser zu prüfen, oder sie in Bower importieren (einschließlich In Bower öffnen aus dem Betrachter), wenn du bearbeiten willst.
13. Quellen
Das sind die Quellen für den Formattext. Die «Bower:»-Hinweise auf dieser Seite beschreiben unser Import- und Exportverhalten; sie sind nicht Teil der Spezifikation von 1997.
- Nielsen, Ravi, et al. Weaving Information File (WIF) Specification, Version 1.1. 20 April 1997. Contributors included Ravi Nielsen (Patternland / Maple Hill Software), Bob Keates (Fiberworks), Rob Sinkler (SwiftWeave), and members of the 1997 WIF email list. Text: http://www.tantradharma.com/maplehill/wif/wif1-1.txt.
- Nielsen, Ravi; Keates, Bob; Sinkler, Rob. Weaving Information File (WIF) Specification, Version 1.0. 3 March 1996. Superseded by 1.1 for current interchange.
- Asunder — Bower und der kostenlose WIF-Betrachter.