WIF (Weaving Information File, vävinformationsfil) är ett radbaserat textformat för att utbyta vävnotor mellan program. Version 1.1, daterad 20 april 1997, är den version som används för dagens utbyte.
Detta dokument är en annoterad referens till WIF 1.1. Formatreglerna följer specifikationen från 1997. Anteckningar märkta Bower beskriver hur Bower och den kostnadsfria WIF-visaren implementerar de reglerna. Bower-anteckningar är implementationsdokumentation; de ingår inte i 1997 års specifikation. För en icke-normativ översikt, se Vad är en WIF-fil?.
Bower-anteckningar använder följande statusbegrepp:
- Stöds — fältet eller avsnittet läses, skrivs, eller båda.
- Ignoreras — fältet eller avsnittet får förekomma i en fil; det hoppas över och får inte ensamt få importen att misslyckas.
- Skrivs inte — exporten ger aldrig ut det.
- Vilande i 1.1 — upptaget i 1997 års text, men inte del av dagens utbyte.
1. Konstruktionsmål
WIF är konstruerat att förbli utbyggbart, läsbart i en textredigerare och bearbetbart av varje system som kan läsa ren text.
Strukturdata lagras som kommaseparerade skaft- och tramponummer, inte som packade binära bitfält. Den fysiska layouten liknar en Windows-.INI-fil: avsnittsrubriker inom hakparenteser och rader Key=value. Till skillnad från klassiska Windows 3.1-private-profile-filer är WIF inte begränsat till 64K, och Windows private-profile-API:er kan inte användas för att tolka det. En särskild parser krävs.
2. Filtyp
En WIF-fil är ren text. Det finns ingen binär behållare. Den vanliga filändelsen är .wif. Formatet identifieras utifrån avsnittet [WIF].
Filändelse .wif Teckenkodning ASCII (UTF-8 utan BOM godtas i praktiken) Radslut LF eller CRLF Ordning Avsnitts- och nyckelordning saknar betydelse
Bower. Import och export behandlar .wif som vanlig text.
3. Lexikala regler
Grammatiken är radbaserad. Varje rad är tom, en kommentar, en avsnittsrubrik eller ett nyckel/värde-par.
- Tomma rader ignoreras.
- Om det första tecknet som inte är blanksteg är
;är hela raden en kommentar. En avslutande kommentar får följa ett tal eller ett booleskt värde, ofta efter ett andra;. Fritextvärden får inte ha en avslutande kommentar på samma rad. - Avsnittsrubriker har formen
[Section Name]. Jämförelsen ignorerar skiftläge. Enligt konvention skrivs namnen med versaler. - Tilldelningar har formen
Key=value. Nyckeljämförelsen ignorerar skiftläge. Värdet är resten av raden efter det första=. - Dubbla nycklar i ett avsnitt är icke-konforma. En läsare får inte underkänna filen enbart på grund av en dubblett; den får behålla det första eller det sista värdet.
- Avsnittsordning och nyckelordning inom ett avsnitt saknar betydelse.
Följande fragment visar de lexikala formerna. Det är inte en fullständig vävnota:
; den här raden ignoreras [WEAVING] Shafts=4 Treadles=4
Bower. Tomma rader och helradskommentarer med ; hoppas över. Namn jämförs utan hänsyn till skiftläge. För vanliga nycklar vinner det sista värdet. Strukturrader indexeras med nummer. Värden trimmas. Avslutande kommentarer på samma rad tas inte bort.
4. Booleska värden och symboler
Booleska värden som godtas som sanna är true, on, yes och 1. Värden som godtas som falska är false, off, no och 0. Ett utelämnat valfritt booleskt värde är falskt om inte ett visst avsnitt säger något annat.
Bower. true, yes och 1 behandlas som sanna. Varje annat icketomt värde behandlas som falskt. on och off särbehandlas inte.
En symboltyp kodar ett enda visningstecken som används i stället för en fylld cell:
=1 siffra =X ett tecken ='X' tecken inom citattecken =#219 teckencode 0..255 Skriv ett blanksteg som ' ' eller #32. Skriv ett fyrkantstecken som '#' eller #35.
Bower. Symboler är inte implementerade. Utseendet är enbart färger. Symbolavsnitt ignoreras vid import och skrivs aldrig vid export.
5. Minimikrav
En konform 1.1-fil innehåller [WIF] och [CONTENTS]. Varje annat avsnitt som förekommer i filen måste listas under [CONTENTS] med värdet true. Oanvända avsnitt får utelämnas eller listas som false. Om ett avsnitt finns ska även dess obligatoriska nycklar finnas.
En fil som innehåller solgningsdata men inget [WIF]-block är inte ett giltigt WIF 1.1-dokument, även om vissa verktyg försöker läsa den.
Bower. Importen misslyckas utan [WIF]. [CONTENTS] krävs inte och valideras inte vid import. Exporten skriver alltid båda avsnitten och markerar true för varje avsnitt som skrivs ut.
6. Avsnittsklasser och glesa data
Informationsavsnitt lagrar bakgrundsvärden (titel, palettstorlek, vävstolsantal). Dataavsnitt lagrar rader per varptråd och inslag (solvning, färger och tillhörande tabeller). [CONTENTS] listar inkluderade avsnitt. Det listar inte [WIF].
Data är glesa. Varptrådar och inslag allokeras från Threads. Standardvärden tas från [WARP] och [WEFT]. Strukturceller är noll som standard (oanvända). Endast nycklar som skiljer sig från de standardvärdena behöver skrivas. Läsare vänder på den processen.
Om åtta varptrådar delar en färg och bara tråd 3 skiljer sig ger varpens standard den gemensamma färgen, och en enda överskrivning registrerar undantaget:
[WARP] Threads=8 Color=1 [WARP COLORS] 3=2
Trådarna 1, 2 och 4–8 använder palettfärg 1; tråd 3 använder palettfärg 2. Samma regel gäller strukturen: en saknad solgningsrad betyder inga skaft på den tråden, inte en kopia av föregående tråd.
Bower. Trådantal samt struktur- och färgtabeller används. Standardvärden för avstånd och tjocklek, och glesa tjockleks- och avståndstabeller, är inte implementerade. Strukturen är tom som standard; saknade strukturnycklar förblir tomma. När en färgtabell finns tillämpas Color-standardvärden från [WARP] / [WEFT] när indexet är större än noll, därefter överskrivningar per tråd och inslag.
7. Privata avsnitt
Implementationer får lagra privata data utan att bryta utbytet. Avsnittsnamnet måste innehålla en unik källidentifierare så att leverantörer inte krockar:
[PRIVATE <SourceID> <SectionName>] Rader inuti får inte börja med '[' så att en läsare kan hitta nästa avsnitt.
Bower. Privata avsnitt hoppas över och skrivs aldrig. Ingen privat Source ID definieras.
8. Avsnittskatalog
Detta avsnitt listar varje namngivet avsnitt i WIF 1.1 och Bower-implementationens status för vart och ett. Utbyte med Bower beror på struktur, färg och exportprofilen i avsnitt 10.
8.1 [WIF] — obligatoriskt
Obligatoriskt identitetsavsnitt. En fil utan [WIF] är inte ett giltigt WIF 1.1-dokument.
Nyckel Officiellt Beskrivning ---- -------- ----------- Version obligatorisk t.ex. 1.1 Date obligatorisk fritt datumfält Developers obligatorisk kontakt / upphovspersoner Source Program obligatorisk skapande programnamn Source Version valfri skapande programversion
Bower. Avsnittet krävs vid import. Exporten skriver Version=1.1, Date=April 20, 1997, [email protected], Source Program=Bower och Source Version=1.0. Saknade enskilda nycklar i [WIF] får inte importen att misslyckas.
8.2 [CONTENTS] — obligatoriskt i 1.1
Innehållsförteckning: avsnittsnamn som nyckel, true eller false som värde. Endast avsnitt som finns behöver listas som true. Att lista varje definierat avsnitt med true eller false är tillåtet, inte obligatoriskt.
En läsare får välja avsnitt enbart utifrån CONTENTS.
Informationsflaggor: COLOR PALETTE, WARP SYMBOL PALETTE, WEFT SYMBOL PALETTE, TEXT, WEAVING, WARP, WEFT Dataflaggor: 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> Vilande / reserverat: TRANSLATIONS BITMAP IMAGE, BITMAP FILE, BITMAP IMAGE DATA
Bower. CONTENTS krävs inte vid import och används inte för att välja vad som ska tolkas. Exporten skriver true för varje avsnitt som faktiskt skrivs ut.
8.3 [COLOR PALETTE]
Anger palettstorlek och det numeriska intervallet för RGB-värden. Äldre filer kan använda 0–999 i stället för 0–255; läsare måste skala.
Nyckel Officiellt Beskrivning ---- -------- ----------- Entries obligatorisk heltal > 0, palettstorlek Range obligatorisk min,max med max > min Form=RGB föråldrat skriv inte; ignorera om det finns
Range=0,999 med tabellposten 1=999,0,0 mappar den röda kanalen till 255 i 8 bitar. Range=0,255 med 1=255,0,0 kräver ingen skalning.
Bower. Range läses (standard 0,255 om den saknas). Varje kanal omvandlas med round((c − min) / (max − min) * 255) och kläms till 0–255. Om max−min är noll eller negativ misslyckas importen. Entries tvingas inte. Exporten använder alltid Range=0,255.
8.4 [WARP SYMBOL PALETTE] / [WEFT SYMBOL PALETTE]
Nyckel Officiellt Beskrivning ---- -------- ----------- Entries obligatorisk heltal > 0
Bower. Ignoreras. Skrivs inte.
8.5 [TEXT]
Valfria metadata om stycket och upphovspersonen: titel, författare, kontaktuppgifter. Ingen av dessa nycklar påverkar vävnoterutnätet.
Nyckel Officiellt ---- -------- Title valfri Author valfri Address valfri EMail valfri Telephone valfri FAX valfri
Bower. Ignoreras. Skrivs inte.
8.6 [WEAVING]
Vävstolsstorlek och skälkonvention. Skaft- och tramponantal kan öka om strukturavsnitt namnger högre index än de som anges här.
Nyckel Officiellt Beskrivning ---- -------- ----------- Shafts obligatorisk heltal > 0 Treadles obligatorisk heltal > 0 Rising Shed valfri true = listade skaft går upp Profile föråldrat ignorera; skriv inte
Stigande skäl betyder att skaften som listas i dragnotan (eller lyfts via tramp/uppknytningsvägen) lyfts. Fallande skäl är den motsatta fysiska konventionen. När en fil anger fallande skäl inverteras dragnotaceller — eller uppknytningsceller — efter inläsning så att interna rutnät förblir stigande skäl och tyget stämmer med filen.
Bower. Shafts och Treadles läses (standard 4 om de saknas) och utökas från strukturen vid behov. Saknat Rising Shed behandlas som true. False utlöser inverteringen ovan. Exporten skriver alltid Rising Shed=true, och Treadles=0 i dragnoteläge. Profile ignoreras.
8.7 [WARP] och [WEFT]
Dessa avsnitt beskriver varpen eller inslaget som helhet och standardvärdet för varje tråd. När Threads är känt allokeras så många varptrådar eller inslag, standardvärden tillämpas och glesa avsnitt skriver över enskilda (avsnitt 6).
Nyckel Officiellt Beskrivning
---- -------- -----------
Threads obligatorisk antal varptrådar eller inslag
Color valfri palettindex, eller index + R,G,B
Symbol valfri symboltyp
Symbol Number valfri index i symboltabellen
Units obligatorisk om Decipoints | Inches | Centimeters
avstånd/tjocklek
Spacing valfri reellt ≥ 0
Thickness valfri reellt ≥ 0
Spacing Zoom valfri heltal ≥ 0
Thickness Zoom valfri heltal ≥ 0
Föråldrat i 1.1 (ignorera / skriv inte):
Colors, Palette, ColorMix
För Color är ett enkelt palettindex den föredragna utbytesformen. Vissa filer lägger också ett RGB-trippel efter indexet.
Color=2 ; varje tråd/inslag tar COLOR TABLE-post 2 som standard Color=2,255,0,0 ; index plus valfritt RGB — bara indexet behålls
Om en implementation bara stöder ett av avstånd och tjocklek föredras Spacing när båda finns. En implementation som bara modellerar tjocklek bör skriva Spacing, eller skriva båda med samma tal.
Bower. Threads läses (standard 32 för varp och 48 för inslag om det saknas). Color läses som ett palettindex när det är större än noll. Symboler, avstånd, tjocklek, zoom och extra RGB på Color ignoreras. Exporten skriver Threads, Color och Units=Centimeters.
8.8 [NOTES]
Fritext, en sträng per numrerad rad. Ingår inte i vävnoterutnätet.
1=Första notraden 2=Andra raden
Bower. Ignoreras. Skrivs inte.
8.9 [TIEUP]
Varje trampa listar skaften den lyfter (stigande-skäl-mening, före eventuell invertering). Används med solvning och trampning när filen inte är en ren dragnota.
Nyckel = trampa (1..n)
Värde = skaft, kommaseparerade
0 ensamt betyder oanvänd
Saknade rader förblir oanvända
Exempel: 1=1,2 → trampa 1 lyfter skaft 1 och 2
Bower. Stöds i uppknytningsläge. Flerskaftsvärden godtas. Exporten skriver en rad per trampa.
8.10 [COLOR TABLE]
Palettposter. Color-nycklar för varp och inslag pekar på index i den här tabellen. R,G,B-talen använder Range från [COLOR PALETTE].
Nyckel = palettindex Värde = R,G,B i palettens Range
Palett, varpstandard och två överskrivningar per tråd:
[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
Trådarna 1 och 3 tar palettpost 1 som standard; trådarna 2 och 4 använder palettpost 2.
Bower. Stöds, med Range-mappningen som beskrivs ovan. Exporten skriver en tabellpost per unik garnfärg och använder alltid Range=0,255.
8.11 [WARP SYMBOL TABLE] / [WEFT SYMBOL TABLE]
Nyckel = symbolindex Värde = WIF-symboltyp (se avsnitt 4)
Bower. Ignoreras. Skrivs inte.
8.12 [THREADING]
Skaft för varje varptråd. Flera skaft på en tråd är tillåtna.
Nyckel = varptråd (1..n)
Värde = skaft, eller skaft,skaft,...
1=1,5 betyder att tråd 1 sitter på skaft 1 och 5
0 betyder oanvänd
Saknade rader förblir oanvända
Bower. Stöds, inklusive flerskaftstrådar. Exporten skriver en rad per tråd.
8.13 Avsnitt per tråd och inslag
Dessa avsnitt knyter värden till enskilda trådar eller inslag. Tre grupper finns: struktur (trampning / dragnota), färg och utseende (tjocklek, avstånd, symboler).
Avsnitt Värde Standard om saknas
------- ----- ------------------
[WARP THICKNESS] reellt ≥ 0 [WARP].Thickness
[WARP THICKNESS ZOOM] heltal ≥ 0 [WARP].Thickness Zoom
[WARP SPACING] reellt ≥ 0 [WARP].Spacing
[WARP SPACING ZOOM] heltal ≥ 0 [WARP].Spacing Zoom
[WARP COLORS] palettidx [WARP].Color
(ett heltal; ignorera gammal R,G,B-svans)
[WARP SYMBOLS] symbolidx [WARP].Symbol Number
[TREADLING] trampor oanvänd (noll)
[LIFTPLAN] skaft oanvänd (noll)
[WEFT THICKNESS] reellt ≥ 0 [WEFT].Thickness
[WEFT THICKNESS ZOOM] heltal ≥ 0 [WEFT].Thickness Zoom
[WEFT SPACING] reellt ≥ 0 [WEFT].Spacing
[WEFT SPACING ZOOM] heltal ≥ 0 [WEFT].Spacing Zoom
[WEFT COLORS] palettidx [WEFT].Color
[WEFT SYMBOLS] symbolidx [WEFT].Symbol Number
Trampning är uppknytningsvägen: nyckeln är inslaget, värdet är de trampor som trycks, till exempel 5=1,2. Dragnotan är direkt: nyckeln är inslaget, värdet är de skaft som lyfts, till exempel 5=1,3. En typisk fil använder en styrsväg, inte båda (avsnitt 8.14).
Bower. Trampning, dragnota och varp-/inslagsfärger stöds. Avsnitt för tjocklek, avstånd, zoom och symboler ignoreras och skrivs aldrig.
8.14 Vävstolsläge, stigande skäl och vävnota
Det finns ingen nyckel mode=. Vävstolsläget härleds från vilka strukturavsnitt som finns.
Bower och den kostnadsfria WIF-visaren använder följande regel:
Om [LIFTPLAN] finns
och ([TREADLING] saknas eller Treadles är 0)
så behandla filen som dragnota
(THREADING + LIFTPLAN)
annars behandla den som uppknytning
(THREADING + TIEUP + TREADLING)
Dragnota är skaftmaskinsmodellen: varje inslag listar skaft. Uppknytning är skaftvävstolsmodellen: trampor väljer en kolumn i uppknytningen, och trampningen är följden av trampor.
När Rising Shed är false inverteras varje dragnotacell (dragnoteläge) eller varje uppknytningscell (uppknytningsläge) efter att rutnäten lästs in. Solvning och trampning lämnas som de är skrivna.
Rising Shed=true, inslag 1=1,2 → skaft 1 och 2 upp
Rising Shed=false, samma rad → de skaften lagras som ner,
övriga skaft vänds upp
Vävnotan lagras inte i filen. Efter att strukturen lästs in och eventuell skälinvertering tillämpats är en tygcell varp upp om något skaft som är solvat på den tråden också lyfts på det inslaget — från dragnotan, eller från en aktiv trampa och dess uppknytning. Annars är cellen inslag upp. Program räknar om vävnotan för visning; det finns inget vävnoteavsnitt att exportera.
Bower. Inläsning och visning följer den här proceduren. Den kostnadsfria WIF-visaren använder samma struktur- och färgregler. I dragnoteläge utelämnar visaren det tomma uppknytningsblocket och visar trampor som “-” i sidopanelen.
8.15 Vilande och föråldrade poster
Vilande i 1.1: [TRANSLATIONS] [BITMAP FILE], [BITMAP IMAGE], [BITMAP IMAGE DATA] Borttaget / föråldrat i 1.1-berättelsen: avsnittet Design, ColorMix, nyckeln Colors, nyckeln Palette, RGB-svans på WARP/WEFT COLORS
Bower. Allt ovan ignoreras och skrivs inte. Okända avsnitt får inte importen att misslyckas ensamma.
9. Implementationsstorleksgränser
Dessa gränser ingår inte i WIF 1.1. Vid import kläms dimensioner så att en fil inte kan allokera ett obegränsat rutnät. Värden utanför intervallet dras in i intervallet i stället för att avvisas som icke-WIF.
Varp, inslag 1 .. 4096 Skaft, trampor 1 .. 64
10. Exportprofil
Bowers export är en fullständig stigande-skäl-WIF 1.1-fil avsedd för läsare som förstår kärnavsnitten nedan. Anteckningar, symboler, avstånd och privata leverantörsdata från en tidigare import bevaras inte vid en tur-och-retur.
- [WIF], [CONTENTS], [COLOR PALETTE] med Range=0,255, [WEAVING] med Rising Shed=true
- [WARP] och [WEFT] med Threads, Color-index, Units=Centimeters
- [COLOR TABLE], [THREADING], [WARP COLORS], [WEFT COLORS]
- Antingen [LIFTPLAN] och Treadles=0, eller både [TIEUP] och [TREADLING]
- Inga TEXT-, NOTES-, symbol-, avstånds-, tjockleks-, privata eller bitmap-avsnitt
11. Exempel
Följande exempel är fullständiga WIF 1.1-filer. De innehåller bara struktur; de utelämnar en färgtabell.
11.1 Uppknytningsläge
Åtta trådar, åtta inslag, fyra skaft, fyra trampor. Rak solvning, kypertliknande uppknytning och trampning som upprepar de fyra trampornas följd.
[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 Dragnoteläge
Fyra trådar, fyra inslag. Treadles är 0 och [LIFTPLAN] finns, så filen läses som dragnota. Varje inslag listar skaft direkt. Det finns varken uppknytning eller trampning.
[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. Relaterad programvara
En .wif-fil kan öppnas i den kostnadsfria WIF-visaren för att granska vävnotan i en webbläsare, eller importeras i Bower för redigering. Visaren har åtgärden Öppna i Bower.
13. Källor
Källor till formattexten. Anteckningar märkta Bower på den här sidan beskriver Bowers import- och exportbeteende; de ingår inte i 1997 års specifikation.
- Nielsen, Ravi, et al. Weaving Information File (WIF) Specification, Version 1.1. 20 april 1997. Medverkande var Ravi Nielsen (Patternland / Maple Hill Software), Bob Keates (Fiberworks), Rob Sinkler (SwiftWeave) och medlemmar i WIF-e-postlistan 1997. 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 mars 1996. Ersatt av 1.1 för dagens utbyte.
- Asunder — Bower och den kostnadsfria WIF-visaren.