WIF (Weaving Information File, fichier d’information de tissage) est un format texte orienté lignes pour l’échange de dessins d’armure entre programmes. La version 1.1, datée du 20 avril 1997, est celle utilisée pour l’échange actuel.
Ce document est une référence annotée du WIF 1.1. Les règles de format suivent la spécification de 1997. Les notes étiquetées Bower décrivent la façon dont Bower et la visionneuse WIF gratuite implémentent ces règles. Les notes Bower sont de la documentation d’implémentation ; elles ne font pas partie de la spécification de 1997. Pour un aperçu non normatif, voir Qu’est-ce qu’un fichier WIF ?.
Les notes Bower emploient les termes d’état suivants :
- Pris en charge — le champ ou la section est lu, écrit, ou les deux.
- Ignoré — le champ ou la section peut figurer dans un fichier ; il est sauté et ne fait pas échouer l’import à lui seul.
- Non écrit — l’export ne l’émet jamais.
- Suspendu en 1.1 — listé dans le texte de 1997, mais hors de l’échange actuel.
1. Objectifs de conception
WIF est conçu pour rester extensible, lisible dans un éditeur de texte, et traitable par tout système capable de lire du texte brut.
Les données de structure sont stockées comme numéros de lames et de marches séparés par des virgules, plutôt que comme champs binaires compactés. La mise en page physique ressemble à un fichier .INI Windows : en-têtes de section entre crochets et lignes Key=value. Contrairement aux fichiers private-profile classiques de Windows 3.1, WIF n’est pas limité à 64 Ko, et les API private-profile de Windows ne peuvent pas servir à l’analyser. Un analyseur dédié est requis.
2. Type de fichier
Un fichier WIF est du texte brut. Il n’y a pas de conteneur binaire. L’extension conventionnelle est .wif. Le format est identifié à partir de la section [WIF].
Extension .wif Encodage ASCII (UTF-8 sans BOM accepté en pratique) Fins de ligne LF ou CRLF Ordre L’ordre des sections et des clés n’est pas significatif
Bower : L’import et l’export traitent le .wif comme du texte ordinaire.
3. Règles lexicales
La grammaire est fondée sur les lignes. Chaque ligne est vide, un commentaire, un en-tête de section, ou une paire clé/valeur.
- Les lignes vides sont ignorées.
- Si le premier caractère non blanc est
;, la ligne entière est un commentaire. Un commentaire final peut suivre un nombre ou un booléen, souvent après un second;. Les valeurs en texte libre ne doivent pas porter de commentaire en fin de ligne. - Les en-têtes de section ont la forme
[Section Name]. La comparaison ignore la casse. Par convention, les noms sont en majuscules. - Les affectations ont la forme
Key=value. La comparaison de clé ignore la casse. La valeur est le reste de la ligne après le premier=. - Des clés en double dans une section sont non conformes. Un lecteur ne doit pas faire échouer le fichier pour cette seule raison ; il peut retenir la première ou la dernière valeur.
- L’ordre des sections et l’ordre des clés dans une section ne sont pas significatifs.
Le fragment suivant illustre les formes lexicales. Ce n’est pas un dessin d’armure complet :
; cette ligne est ignorée [WEAVING] Shafts=4 Treadles=4
Bower : Les lignes vides et les commentaires ; de ligne entière sont sautés. Les noms sont comparés sans distinction de casse. Pour les clés ordinaires, la dernière valeur l’emporte. Les lignes de structure sont indexées par numéro. Les valeurs sont rognées. Les commentaires finaux en ligne ne sont pas retirés.
4. Booléens et symboles
Les valeurs booléennes acceptées comme vrai sont true, on, yes et 1. Les valeurs acceptées comme faux sont false, off, no et 0. Un booléen optionnel omis est faux, sauf si une section particulière en dispose autrement.
Bower : true, yes et 1 sont traités comme vrai. Toute autre valeur non vide est traitée comme faux. on et off ne sont pas des cas particuliers.
Un type symbole encode un caractère d’affichage unique utilisé à la place d’une case remplie :
=1 chiffre =X caractère unique ='X' caractère entre quotes =#219 code de caractère 0..255 Écrire un espace comme ' ' ou #32. Écrire un dièse comme '#' ou #35.
Bower : Les symboles ne sont pas implémentés. L’apparence se limite aux couleurs. Les sections de symboles sont ignorées à l’import et ne sont jamais écrites à l’export.
5. Exigences minimales
Un fichier 1.1 conforme contient [WIF] et [CONTENTS]. Toute autre section présente dans le fichier doit être listée sous [CONTENTS] avec la valeur true. Les sections inutilisées peuvent être omises, ou listées comme false. Si une section est présente, ses clés obligatoires doivent l’être aussi.
Un fichier qui contient des données de rentrage mais pas de bloc [WIF] n’est pas un document WIF 1.1 valide, même si certains outils tentent de le lire.
Bower : L’import échoue sans [WIF]. [CONTENTS] n’est ni exigé ni validé à l’import. L’export écrit toujours les deux sections et marque true pour chaque section émise.
6. Classes de sections et données éparses
Les sections d’information enregistrent des valeurs de fond (titre, taille de palette, effectifs du métier). Les sections de données enregistrent les lignes par fil et par duite (rentrage, couleurs et tables associées). [CONTENTS] liste les sections incluses. Il ne liste pas [WIF].
Les données sont éparses. Les fils de chaîne et les duites sont alloués à partir de Threads. Les valeurs par défaut viennent de [WARP] et [WEFT]. Les cases de structure valent zéro par défaut (inutilisées). Seules les clés qui diffèrent de ces défauts ont besoin d’être écrites. Les lecteurs inversent ce processus.
Si huit fils de chaîne partagent une couleur et que seul le fil 3 diffère, le défaut de chaîne fournit la couleur commune et une seule surcharge enregistre l’exception :
[WARP] Threads=8 Color=1 [WARP COLORS] 3=2
Les fils 1, 2 et 4–8 utilisent la couleur de palette 1 ; le fil 3 utilise la couleur de palette 2. La même règle s’applique à la structure : une ligne de rentrage absente signifie aucune lame sur ce fil, et non une copie du fil précédent.
Bower : Les nombres de fils et les tables de structure et de couleur sont utilisés. Les défauts d’espacement et d’épaisseur, ainsi que les tables éparses d’épaisseur et d’espacement, ne sont pas implémentés. La structure vaut vide par défaut ; les clés de structure absentes restent vides. Lorsqu’une table de couleurs est présente, les défauts Color de [WARP] / [WEFT] s’appliquent si l’index est supérieur à zéro, puis les surcharges par fil et par duite.
7. Sections privées
Les implémentations peuvent stocker des données privées sans casser l’échange. Le nom de section doit inclure un identifiant de source unique afin que les éditeurs ne se collisionnent pas :
[PRIVATE <SourceID> <SectionName>] Les lignes à l’intérieur ne doivent pas commencer par '[' afin qu’un lecteur puisse trouver la section suivante.
Bower : Les sections privées sont sautées et ne sont jamais écrites. Aucun Source ID privé n’est défini.
8. Catalogue des sections
Cette section liste chaque section nommée du WIF 1.1 et l’état d’implémentation Bower correspondant. L’échange avec Bower repose sur la structure, la couleur, et le profil d’export de la section 10.
8.1 [WIF] — obligatoire
Section d’identité obligatoire. Un fichier sans [WIF] n’est pas un document WIF 1.1 valide.
Clé Officiel Description ---- -------- ----------- Version obligatoire p. ex. 1.1 Date obligatoire chaîne de date libre Developers obligatoire contact / auteurs Source Program obligatoire nom du programme créateur Source Version optionnel version du programme créateur
Bower : La section est obligatoire à l’import. L’export écrit Version=1.1, Date=April 20, 1997, [email protected], Source Program=Bower et Source Version=1.0. L’absence de clés individuelles dans [WIF] ne fait pas échouer l’import.
8.2 [CONTENTS] — obligatoire en 1.1
Table des matières : nom de section comme clé, true ou false comme valeur. Seules les sections qui existent ont besoin d’être listées comme true. Lister toutes les sections définies avec true ou false est permis, non obligatoire.
Un lecteur peut sélectionner les sections à partir de CONTENTS seul.
Indicateurs d’information : COLOR PALETTE, WARP SYMBOL PALETTE, WEFT SYMBOL PALETTE, TEXT, WEAVING, WARP, WEFT Indicateurs de données : 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> Suspendu / réservé : TRANSLATIONS BITMAP IMAGE, BITMAP FILE, BITMAP IMAGE DATA
Bower : CONTENTS n’est pas exigé à l’import et ne sert pas à choisir quoi analyser. L’export écrit true pour chaque section effectivement émise.
8.3 [COLOR PALETTE]
Déclare la taille de la palette et la plage numérique des valeurs RVB. Les fichiers plus anciens peuvent utiliser 0–999 plutôt que 0–255 ; les lecteurs doivent mettre à l’échelle.
Clé Officiel Description ---- -------- ----------- Entries obligatoire entier > 0, taille de palette Range obligatoire min,max avec max > min Form=RGB obsolète ne pas écrire ; ignorer si présent
Range=0,999 avec l’entrée de table 1=999,0,0 mappe le canal rouge à 255 en 8 bits. Range=0,255 avec 1=255,0,0 ne nécessite aucune mise à l’échelle.
Bower : Range est lu (défaut 0,255 s’il manque). Chaque canal est converti par round((c − min) / (max − min) * 255), puis borné à 0–255. Si max−min est nul ou négatif, l’import échoue. Entries n’est pas contrôlé. L’export utilise toujours Range=0,255.
8.4 [WARP SYMBOL PALETTE] / [WEFT SYMBOL PALETTE]
Clé Officiel Description ---- -------- ----------- Entries obligatoire entier > 0
Bower : Ignoré. Non écrit.
8.5 [TEXT]
Métadonnées optionnelles sur la pièce et l’auteur : titre, auteur, coordonnées. Aucune de ces clés n’affecte la grille du dessin d’armure.
Clé Officiel ---- -------- Title optionnel Author optionnel Address optionnel EMail optionnel Telephone optionnel FAX optionnel
Bower : Ignoré. Non écrit.
8.6 [WEAVING]
Taille du métier et convention de foule. Les nombres de lames et de marches peuvent augmenter si les sections de structure nomment des indices plus élevés que ceux déclarés ici.
Clé Officiel Description ---- -------- ----------- Shafts obligatoire entier > 0 Treadles obligatoire entier > 0 Rising Shed optionnel true = les lames listées montent Profile obsolète ignorer ; ne pas écrire
La foule montante signifie que les lames listées dans le plan de levée (ou levées par le chemin marche/attachage) se lèvent. La foule descendante est la convention physique inverse. Lorsqu’un fichier spécifie une foule descendante, les cases du plan de levée — ou celles de l’attachage — sont inversées après chargement afin que les grilles internes restent en foule montante et que le tissu corresponde au fichier.
Bower : Shafts et Treadles sont lus (défaut 4 s’ils manquent) et agrandis à partir de la structure au besoin. Un Rising Shed manquant est traité comme true. False déclenche l’inversion décrite ci-dessus. L’export écrit toujours Rising Shed=true, et Treadles=0 en mode plan de levée. Profile est ignoré.
8.7 [WARP] et [WEFT]
Ces sections décrivent la chaîne ou la trame dans son ensemble et le défaut de chaque fil. Une fois Threads connu, autant de fils ou de duites sont alloués, les défauts sont appliqués, et les sections éparses surchargent les individus (section 6).
Clé Officiel Description
---- -------- -----------
Threads obligatoire nombre de fils ou de duites
Color optionnel index de palette, ou index + R,V,B
Symbol optionnel type symbole
Symbol Number optionnel index dans la table de symboles
Units obligatoire si esp. Decipoints | Inches | Centimeters
/épaisseur utilisés
Spacing optionnel réel ≥ 0
Thickness optionnel réel ≥ 0
Spacing Zoom optionnel entier ≥ 0
Thickness Zoom optionnel entier ≥ 0
Obsolète en 1.1 (ignorer / ne pas écrire) :
Colors, Palette, ColorMix
Pour Color, un simple index de palette est la forme d’échange préférée. Certains fichiers joignent aussi un triplet RVB après l’index.
Color=2 ; chaque fil/duite prend par défaut l’entrée 2 de COLOR TABLE Color=2,255,0,0 ; index plus RVB optionnel — seul l’index est conservé
Si une implémentation ne prend en charge que l’un de l’espacement et de l’épaisseur, Spacing est préféré lorsque les deux sont présents. Une implémentation qui ne modélise que l’épaisseur devrait écrire Spacing, ou écrire les deux avec les mêmes nombres.
Bower : Threads est lu (défauts 32 pour la chaîne et 48 pour la trame s’il manque). Color est lu comme un index de palette lorsqu’il est supérieur à zéro. Symboles, espacement, épaisseur, zooms et RVB supplémentaire sur Color sont ignorés. L’export écrit Threads, Color et Units=Centimeters.
8.8 [NOTES]
Texte libre, une chaîne par ligne numérotée. Ne fait pas partie des grilles du dessin d’armure.
1=Première ligne de notes 2=Deuxième ligne
Bower : Ignoré. Non écrit.
8.9 [TIEUP]
Chaque marche liste les lames qu’elle lève (sens foule montante, avant toute inversion). Utilisé avec le rentrage et le pédalage lorsque le fichier n’est pas un plan de levée pur.
Clé = marche (1..n)
Valeur = lames, séparées par des virgules
0 seul signifie inutilisé
Les lignes absentes restent inutilisées
Exemple : 1=1,2 → la marche 1 lève les lames 1 et 2
Bower : Pris en charge en mode attachage. Les valeurs multi-lames sont acceptées. L’export écrit une ligne par marche.
8.10 [COLOR TABLE]
Entrées de palette. Les clés Color de chaîne et de trame renvoient à des indices de cette table. Les nombres R,V,B utilisent le Range de [COLOR PALETTE].
Clé = index de palette Valeur = R,V,B dans le Range de la palette
Palette, défaut de chaîne, et deux surcharges par fil :
[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
Les fils 1 et 3 prennent par défaut l’entrée de palette 1 ; les fils 2 et 4 utilisent l’entrée de palette 2.
Bower : Pris en charge, avec la mise à l’échelle Range décrite plus haut. L’export écrit une entrée de table par couleur de fil unique et utilise toujours Range=0,255.
8.11 [WARP SYMBOL TABLE] / [WEFT SYMBOL TABLE]
Clé = index de symbole Valeur = type symbole WIF (voir section 4)
Bower : Ignoré. Non écrit.
8.12 [THREADING]
Lames de chaque fil de chaîne. Plusieurs lames sur un même fil sont permises.
Clé = fil de chaîne (1..n)
Valeur = lame, ou lame,lame,...
1=1,5 signifie que le fil 1 est sur les lames 1 et 5
0 signifie inutilisé
Les lignes absentes restent inutilisées
Bower : Pris en charge, y compris les fils multi-lames. L’export écrit une ligne par fil.
8.13 Sections par fil et par duite
Ces sections attachent des valeurs à des fils ou des duites individuels. Trois groupes existent : structure (pédalage / plan de levée), couleur, et apparence (épaisseur, espacement, symboles).
Section Valeur Défaut si absent
------- ------ ----------------
[WARP THICKNESS] réel ≥ 0 [WARP].Thickness
[WARP THICKNESS ZOOM] entier ≥ 0 [WARP].Thickness Zoom
[WARP SPACING] réel ≥ 0 [WARP].Spacing
[WARP SPACING ZOOM] entier ≥ 0 [WARP].Spacing Zoom
[WARP COLORS] idx palette [WARP].Color
(un entier ; ignorer l’ancienne queue R,V,B)
[WARP SYMBOLS] idx symbole [WARP].Symbol Number
[TREADLING] marches inutilisé (zéro)
[LIFTPLAN] lames inutilisé (zéro)
[WEFT THICKNESS] réel ≥ 0 [WEFT].Thickness
[WEFT THICKNESS ZOOM] entier ≥ 0 [WEFT].Thickness Zoom
[WEFT SPACING] réel ≥ 0 [WEFT].Spacing
[WEFT SPACING ZOOM] entier ≥ 0 [WEFT].Spacing Zoom
[WEFT COLORS] idx palette [WEFT].Color
[WEFT SYMBOLS] idx symbole [WEFT].Symbol Number
Le pédalage est le chemin de commande par attachage : la clé est la duite, la valeur est les marches enfoncées, par exemple 5=1,2. Le plan de levée est direct : la clé est la duite, la valeur est les lames qui se lèvent, par exemple 5=1,3. Un fichier typique utilise un seul chemin de commande, pas les deux (section 8.14).
Bower : Le pédalage, le plan de levée et les couleurs de chaîne/trame sont pris en charge. Les sections d’épaisseur, d’espacement, de zoom et de symboles sont ignorées et ne sont jamais écrites.
8.14 Mode métier, foule montante et dessin d’armure
Il n’y a pas de clé mode=. Le mode métier est déduit des sections de structure présentes.
Bower et la visionneuse WIF gratuite emploient la règle suivante :
Si [LIFTPLAN] est présent
et ([TREADLING] est absent ou Treadles vaut 0)
alors traiter le fichier comme plan de levée
(THREADING + LIFTPLAN)
sinon le traiter comme attachage
(THREADING + TIEUP + TREADLING)
Le plan de levée est le modèle de ratière : chaque duite liste des lames. L’attachage est le modèle de métier à lames : les marches sélectionnent une colonne de l’attachage, et le pédalage est la séquence de marches.
Lorsque Rising Shed est false, chaque case du plan de levée (mode plan de levée) ou chaque case d’attachage (mode attachage) est inversée après le chargement des grilles. Le rentrage et le pédalage restent tels qu’écrits.
Rising Shed=true, duite 1=1,2 → lames 1 et 2 en haut
Rising Shed=false, même ligne → ces lames stockées en bas,
les autres lames basculées en haut
Le dessin d’armure n’est pas stocké dans le fichier. Après chargement de la structure et application éventuelle de l’inversion de foule, une case de tissu est chaîne dessus si une lame du rentrage de ce fil est aussi levée sur cette duite — depuis le plan de levée, ou depuis une marche active et son attachage. Sinon la case est trame dessus. Les programmes recalculent le dessin d’armure pour l’affichage ; il n’y a pas de section de dessin d’armure à exporter.
Bower : Le chargement et l’affichage suivent cette procédure. La visionneuse WIF gratuite applique les mêmes règles de structure et de couleur. En mode plan de levée, la visionneuse omet le bloc d’attachage vide et affiche les marches comme « - » dans le panneau latéral.
8.15 Éléments suspendus et obsolètes
Suspendu en 1.1 : [TRANSLATIONS] [BITMAP FILE], [BITMAP IMAGE], [BITMAP IMAGE DATA] Abandonné / obsolète dans le récit 1.1 : section Design, ColorMix, clé Colors, clé Palette, queue RVB sur WARP/WEFT COLORS
Bower : Tout ce qui précède est ignoré et n’est pas écrit. Les sections inconnues ne font pas échouer l’import à elles seules.
9. Limites de taille d’implémentation
Ces limites ne font pas partie du WIF 1.1. À l’import, les dimensions sont bornées afin qu’un fichier ne puisse pas allouer une grille non bornée. Les valeurs hors plage sont ramenées dans la plage plutôt que rejetées comme non-WIF.
Chaîne, trame 1 .. 4096 Lames, marches 1 .. 64
10. Profil d’export
L’export Bower est un fichier WIF 1.1 complet en foule montante, destiné aux lecteurs qui comprennent les sections centrales ci-dessous. Notes, symboles, espacement et données privées d’un import précédent ne sont pas conservés lors d’un aller-retour.
- [WIF], [CONTENTS], [COLOR PALETTE] avec Range=0,255, [WEAVING] avec Rising Shed=true
- [WARP] et [WEFT] avec Threads, index Color, Units=Centimeters
- [COLOR TABLE], [THREADING], [WARP COLORS], [WEFT COLORS]
- Soit [LIFTPLAN] et Treadles=0, soit [TIEUP] et [TREADLING] ensemble
- Pas de sections TEXT, NOTES, symboles, espacement, épaisseur, privées ou bitmap
11. Exemples
Les exemples suivants sont des fichiers WIF 1.1 complets. Ils ne contiennent que la structure ; ils omettent une table de couleurs.
11.1 Mode attachage
Huit fils, huit duites, quatre lames, quatre marches. Rentrage droit, attachage de type sergé, et pédalage qui répète la séquence des quatre marches.
[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 Mode plan de levée
Quatre fils, quatre duites. Treadles vaut 0 et [LIFTPLAN] est présent, donc le fichier est lu comme plan de levée. Chaque duite liste des lames directement. Il n’y a ni attachage ni pédalage.
[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. Logiciels associés
Un fichier .wif peut être ouvert dans la visionneuse WIF gratuite pour inspecter le dessin d’armure dans un navigateur, ou importé dans Bower pour l’édition. La visionneuse propose une action Ouvrir dans Bower.
13. Références
Sources du texte de format. Les notes étiquetées Bower sur cette page décrivent le comportement d’import et d’export de Bower ; elles ne font pas partie de la spécification de 1997.
- Nielsen, Ravi, et al. Weaving Information File (WIF) Specification, Version 1.1. 20 avril 1997. Contributeurs : Ravi Nielsen (Patternland / Maple Hill Software), Bob Keates (Fiberworks), Rob Sinkler (SwiftWeave), et des membres de la liste de diffusion WIF de 1997. Texte : 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. Remplacé par 1.1 pour l’échange actuel.
- Asunder — Bower et la visionneuse WIF gratuite.