WIF(Weaving Information File、織物情報ファイル)は、プログラム間で組織図を交換するための行指向プレーンテキスト形式です。現行の交換に使われる版は、1997年4月20日付の1.1です。
本ドキュメントは WIF 1.1 の注釈付き参照です。形式規則は 1997 年の仕様に従います。Bower と付した注記は、Bower および無料の WIFビューア がそれらの規則をどう実装するかを記録します。Bower 注記は実装の文書であり、1997 年仕様の一部ではありません。規範的でない概要は WIF ファイルとは? を参照してください。
Bower 注記は次の状態用語を使います。
- 対応 — そのフィールドまたはセクションを読み取る、書き出す、またはその両方。
- 無視 — ファイルに含まれてよいが読み飛ばし、それだけではインポートを失敗させない。
- 非出力 — エクスポートは決して出力しない。
- 1.1 で保留 — 1997 年の本文には載るが、現行の交換には含まれない。
1. 設計目標
WIF は拡張可能であり、テキストエディタで読め、プレーンテキストを読める任意の系で処理できるように設計されています。
構造データは、パックしたバイナリビットフィールドではなく、カンマ区切りの綜絖番号と踏み木番号として格納されます。物理レイアウトは Windows の .INI ファイルに似ています。角括弧のセクション見出しと Key=value 行です。クラシックな Windows 3.1 の private-profile ファイルと異なり、WIF に 64K 制限はなく、Windows の private-profile API では解析できません。専用のパーサが必要です。
2. ファイル種別
WIF ファイルはプレーンテキストです。バイナリコンテナはありません。慣例の拡張子は .wif です。形式は [WIF] セクションから識別します。
拡張子 .wif 文字符号化 ASCII(BOM なし UTF-8 は実務上受け入れる) 改行 LF または CRLF 順序 セクション順・キー順に意味はない
Bower. インポートとエクスポートは .wif を通常のテキストとして扱います。
3. 字句規則
文法は行単位です。各行は空行、コメント、セクション見出し、またはキー/値の対です。
- 空行は無視します。
- 最初の空白以外の文字が
;なら、その行全体がコメントです。数値または真偽値の後に末尾コメントを置いてよく、多くは二つ目の;の後です。自由テキストの値は同一行に末尾コメントを付けてはなりません。 - セクション見出しは
[Section Name]の形です。照合は大文字小文字を区別しません。慣例として名前は大文字で書きます。 - 代入は
Key=valueの形です。キー照合は大文字小文字を区別しません。値は最初の=より後の行の残りです。 - 同一セクション内の重複キーは非適合です。読み取り側は重複だけを理由にファイルを失敗させてはならず、最初または最後の値を保持してよい。
- セクションの順序と、セクション内のキー順に意味はありません。
次の断片は字句形式を示します。完全な組織図ではありません。
; この行は無視される [WEAVING] Shafts=4 Treadles=4
Bower. 空行と行全体の ; コメントは飛ばします。名前は大文字小文字を区別せず照合します。通常のキーでは最後の値が勝ちます。構造行は番号でキー付けします。値はトリムします。行内の末尾コメントは取り除きません。
4. 真偽値とシンボル
真として受け入れる真偽値は true、on、yes、1 です。偽として受け入れるのは false、off、no、0 です。省略された任意の真偽値は、特定のセクションが別に定めない限り偽です。
Bower. true、yes、1 を真とします。それ以外の空でない値は偽とします。on と off は特別扱いしません。
シンボル型は、塗りつぶしたマスの代わりに使う表示用の一文字を符号化します。
=1 数字 =X 一文字 ='X' 引用符付き文字 =#219 文字コード 0..255 空白は ' ' または #32 と書く。 ハッシュは '#' または #35 と書く。
Bower. シンボルは実装していません。外観は色のみです。シンボルセクションはインポート時に無視し、エクスポートでは書きません。
5. 最小要件
適合する 1.1 ファイルは [WIF] と [CONTENTS] を含みます。ファイルに現れるその他のセクションはすべて、[CONTENTS] の下で true として列挙しなければなりません。使わないセクションは省略してよく、false として列挙しても構いません。セクションがあるなら、その必須キーもなければなりません。
綜絖通しのデータがあっても [WIF] ブロックが無いファイルは、一部のツールが読もうとしても、妥当な WIF 1.1 文書ではありません。
Bower. [WIF] が無いとインポートは失敗します。[CONTENTS] はインポート時に必須でも検証対象でもありません。エクスポートは常に両方のセクションを書き、出力した各セクションを true にします。
6. セクション種別と疎データ
情報セクションは背景値(題名、パレットサイズ、織機の本数)を記録します。データセクションは経糸ごと・緯ごとの行(綜絖通し、色、関連表)を記録します。[CONTENTS] は含まれるセクションを列挙します。[WIF] 自身は列挙しません。
データは疎です。経糸と緯打ちは Threads から確保します。既定値は [WARP] と [WEFT] から取ります。構造セルの既定はゼロ(未使用)です。それらの既定と異なるキーだけ書けば足ります。読み取り側はその過程を逆にします。
8 本の経糸が同じ色で、3 本目だけ違う場合、経の既定がその共有色を供給し、1 行の上書きが例外を記録します。
[WARP] Threads=8 Color=1 [WARP COLORS] 3=2
1、2、4–8 本目はパレット色 1、3 本目はパレット色 2 です。構造にも同じ規則が当てはまります。綜絖通しの行が無いことは、その経に綜絖が無いことを意味し、直前の経のコピーではありません。
Bower. 本数と、構造表および色表を使います。間隔・太さの既定と、疎な太さ・間隔の表は実装していません。構造の既定は空で、欠けた構造キーは空のままです。色表があるとき、インデックスが 0 より大きければ [WARP] / [WEFT] の Color 既定を適用し、その後に経ごと・緯ごとの上書きを適用します。
7. プライベートセクション
実装は、交換を壊さずに私有データを格納してよい。衝突を避けるため、セクション名には一意のソース識別子を含めなければなりません。
[PRIVATE <SourceID> <SectionName>] 内部の行は '[' で始めてはならない。読み取り側が次セクションを見つけられるようにする。
Bower. プライベートセクションは飛ばし、書きません。私有の Source ID は定義していません。
8. セクション一覧
この節は WIF 1.1 の名前付きセクションすべてと、それぞれに対する Bower の実装状態を列挙します。Bower との交換は構造、色、および第 10 節のエクスポートプロファイルに依存します。
8.1 [WIF] — 必須
必須の識別セクションです。[WIF] の無いファイルは妥当な WIF 1.1 文書ではありません。
キー 公式 説明 ---- -------- ----------- Version 必須 例 1.1 Date 必須 自由形式の日付文字列 Developers 必須 連絡先 / 著者 Source Program 必須 作成プログラム名 Source Version 任意 作成プログラムの版
Bower. このセクションはインポート時に必須です。エクスポートは Version=1.1、Date=April 20, 1997、[email protected]、Source Program=Bower、Source Version=1.0 を書きます。[WIF] 内の個別キーが欠けてもインポートは失敗しません。
8.2 [CONTENTS] — 1.1 では必須
目次です。セクション名がキー、true または false が値です。存在するセクションだけを true として列挙すれば足ります。定義済みセクションすべてを true/false で列挙することは許されますが、必須ではありません。
読み取り側は CONTENTS だけからセクションを選んでよい。
情報フラグ: COLOR PALETTE, WARP SYMBOL PALETTE, WEFT SYMBOL PALETTE, TEXT, WEAVING, WARP, WEFT データフラグ: 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> 保留 / 予約: TRANSLATIONS BITMAP IMAGE, BITMAP FILE, BITMAP IMAGE DATA
Bower. CONTENTS はインポート時に必須ではなく、何を解析するかの選択にも使いません。エクスポートは実際に出した各セクションを true で書きます。
8.3 [COLOR PALETTE]
パレットサイズと RGB 値の数値範囲を宣言します。古いファイルは 0–255 ではなく 0–999 を使うことがあり、読み取り側はスケールしなければなりません。
キー 公式 説明 ---- -------- ----------- Entries 必須 整数 > 0、パレットサイズ Range 必須 min,max(max > min) Form=RGB 廃止 書いてはならない。あれば無視
Range=0,999 で表の項目 1=999,0,0 は、赤チャネルを 8 ビットの 255 に写します。Range=0,255 で 1=255,0,0 ならスケールは不要です。
Bower. Range を読みます(欠けていれば既定 0,255)。各チャネルは round((c − min) / (max − min) * 255) で変換し、0–255 にクランプします。max−min が 0 以下ならインポートは失敗します。Entries は強制しません。エクスポートは常に Range=0,255 を使います。
8.4 [WARP SYMBOL PALETTE] / [WEFT SYMBOL PALETTE]
キー 公式 説明 ---- -------- ----------- Entries 必須 整数 > 0
Bower. 無視。非出力。
8.5 [TEXT]
作品と作者に関する任意のメタデータ。題名、著者、連絡先です。これらのキーは組織図の格子に影響しません。
キー 公式 ---- -------- Title 任意 Author 任意 Address 任意 EMail 任意 Telephone 任意 FAX 任意
Bower. 無視。非出力。
8.6 [WEAVING]
織機の大きさと開口の慣例です。ここで宣言したより高い番号を構造セクションが指せば、綜絖数と踏み木数は増え得ます。
キー 公式 説明 ---- -------- ----------- Shafts 必須 整数 > 0 Treadles 必須 整数 > 0 Rising Shed 任意 true = 列挙した綜絖が上がる Profile 廃止 無視。書いてはならない
ライジングシェッド(上昇開口)は、リフトプランに列挙された綜絖(または踏み木/タイアップ経路で上げられた綜絖)が上がることを意味します。シンキングシェッド(下降開口)は反対の物理的慣例です。ファイルがシンキングシェッドを指定すると、読み込み後にリフトプランのセル、またはタイアップのセルを反転し、内部格子はライジングシェッドのまま布がファイルと一致するようにします。
Bower. Shafts と Treadles を読み(欠けていれば既定 4)、必要なら構造から伸ばします。Rising Shed が無ければ true とします。False は上記の反転を起こします。エクスポートは常に Rising Shed=true を書き、リフトプランモードでは Treadles=0 です。Profile は無視します。
8.7 [WARP] と [WEFT]
これらのセクションは経または緯の全体と、各糸の既定を記述します。Threads が分かったあと、その本数の経または緯を確保し、既定を適用し、疎セクションが個体を上書きします(第 6 節)。
キー 公式 説明 ---- -------- ----------- Threads 必須 経本数または緯打ち数 Color 任意 パレット索引、または索引 + R,G,B Symbol 任意 シンボル型 Symbol Number 任意 シンボル表の索引 Units 間隔/太さ使用時は必須 Decipoints | Inches | Centimeters Spacing 任意 実数 ≥ 0 Thickness 任意 実数 ≥ 0 Spacing Zoom 任意 整数 ≥ 0 Thickness Zoom 任意 整数 ≥ 0 1.1 で廃止(無視 / 書いてはならない): Colors, Palette, ColorMix
Color では、単純なパレット索引が好ましい交換形です。一部のファイルは索引の後に RGB 三つ組も付けます。
Color=2 ; 各経/緯の既定は COLOR TABLE の項目 2 Color=2,255,0,0 ; 索引と任意の RGB — 索引だけ残す
実装が間隔と太さの一方しか扱わない場合、両方があれば Spacing を優先します。太さだけをモデルする実装は Spacing を書くか、同じ数値で両方を書くべきです。
Bower. Threads を読みます(欠けていれば経 32、緯 48)。Color は 0 より大きいとき一つのパレット索引として読みます。シンボル、間隔、太さ、ズーム、Color の余分な RGB は無視します。エクスポートは Threads、Color、Units=Centimeters を書きます。
8.8 [NOTES]
自由テキスト。番号付き行ごとに一つの文字列です。組織図の格子には入りません。
1=注の一行目 2=二行目
Bower. 無視。非出力。
8.9 [TIEUP]
各踏み木は上げる綜絖を列挙します(ライジングシェッドの意味、反転前)。純リフトプランでないファイルでは綜絖通しと踏み順とともに使います。
キー = 踏み木 (1..n)
値 = 綜絖、カンマ区切り
0 だけは未使用
欠けた行は未使用のまま
例: 1=1,2 → 踏み木 1 が綜絖 1 と 2 を上げる
Bower. タイアップモードで対応。複数綜絖の値を受け付けます。エクスポートは踏み木ごとに一行書きます。
8.10 [COLOR TABLE]
パレット項目です。経・緯の Color キーはこの表の索引を指します。R,G,B の数は [COLOR PALETTE] の Range を使います。
キー = パレット索引 値 = パレット Range 内の R,G,B
パレット、経の既定、経 2 本の上書き:
[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
1 本目と 3 本目はパレット項目 1 が既定、2 本目と 4 本目はパレット項目 2 です。
Bower. 対応。上記の Range 写像を使います。エクスポートは一意な糸色ごとに表項目を一つ書き、常に Range=0,255 を使います。
8.11 [WARP SYMBOL TABLE] / [WEFT SYMBOL TABLE]
キー = シンボル索引 値 = WIF シンボル型(第 4 節)
Bower. 無視。非出力。
8.12 [THREADING]
各経糸の綜絖です。一本に複数綜絖を許します。
キー = 経糸 (1..n)
値 = 綜絖、または 綜絖,綜絖,...
1=1,5 は 1 本目が綜絖 1 と 5
0 は未使用
欠けた行は未使用のまま
Bower. 対応。複数綜絖の経も含みます。エクスポートは経ごとに一行書きます。
8.13 経ごと・緯ごとのセクション
これらのセクションは個々の経または緯に値を付けます。三群あります。構造(踏み順/リフトプラン)、色、外観(太さ、間隔、シンボル)です。
セクション 値 欠けたときの既定
------- ----- ------------------
[WARP THICKNESS] 実数 ≥ 0 [WARP].Thickness
[WARP THICKNESS ZOOM] 整数 ≥ 0 [WARP].Thickness Zoom
[WARP SPACING] 実数 ≥ 0 [WARP].Spacing
[WARP SPACING ZOOM] 整数 ≥ 0 [WARP].Spacing Zoom
[WARP COLORS] パレット索引 [WARP].Color
(整数一つ。古い R,G,B 末尾は無視)
[WARP SYMBOLS] シンボル索引 [WARP].Symbol Number
[TREADLING] 踏み木 未使用(ゼロ)
[LIFTPLAN] 綜絖 未使用(ゼロ)
[WEFT THICKNESS] 実数 ≥ 0 [WEFT].Thickness
[WEFT THICKNESS ZOOM] 整数 ≥ 0 [WEFT].Thickness Zoom
[WEFT SPACING] 実数 ≥ 0 [WEFT].Spacing
[WEFT SPACING ZOOM] 整数 ≥ 0 [WEFT].Spacing Zoom
[WEFT COLORS] パレット索引 [WEFT].Color
[WEFT SYMBOLS] シンボル索引 [WEFT].Symbol Number
踏み順はタイアップ制御経路です。キーは緯、値は踏む踏み木で、例は 5=1,2。リフトプランは直接です。キーは緯、値は上がる綜絖で、例は 5=1,3。典型的なファイルは一方の制御経路だけを使い、両方は使いません(第 8.14 節)。
Bower. 踏み順、リフトプラン、経/緯の色に対応します。太さ、間隔、ズーム、シンボルのセクションは無視し、書きません。
8.14 織機モード、ライジングシェッド、組織図
mode= キーはありません。織機モードは、どの構造セクションがあるかから推論します。
Bower と無料 WIFビューアは次の規則を使います。
[LIFTPLAN] があり
かつ([TREADLING] が無いか Treadles が 0)
ならリフトプランとして扱う
(THREADING + LIFTPLAN)
さもなくばタイアップとして扱う
(THREADING + TIEUP + TREADLING)
リフトプランはドビー型です。各緯が綜絖を列挙します。タイアップは綜絖織機型です。踏み木がタイアップの列を選び、踏み順が踏み木の列です。
Rising Shed が false のとき、格子の読み込み後に、リフトプランの全セル(リフトプランモード)またはタイアップの全セル(タイアップモード)を反転します。綜絖通しと踏み順はそのままです。
Rising Shed=true, 緯 1=1,2 → 綜絖 1 と 2 が上
Rising Shed=false, 同じ行 → それらの綜絖は下として格納、
他の綜絖を上に反転
組織図はファイルに格納されません。構造を読み、開口の反転があれば適用したあと、その経に通した綜絖がその緯でも上がっていれば布のマスは経上です。リフトプランからか、有効な踏み木とそのタイアップからです。そうでなければ緯上です。プログラムは表示用に組織図を再計算します。エクスポートする組織図セクションはありません。
Bower. 読み込みと表示はこの手順に従います。無料 WIFビューアは同じ構造規則と色規則を使います。リフトプランモードでは、ビューアは空のタイアップ区画を省き、側パネルの踏み木を「-」と表示します。
8.15 保留および廃止の項目
1.1 で保留: [TRANSLATIONS] [BITMAP FILE], [BITMAP IMAGE], [BITMAP IMAGE DATA] 1.1 の本文で削除 / 廃止: Design セクション、ColorMix、Colors キー、Palette キー、 WARP/WEFT COLORS の RGB 末尾
Bower. 上記はすべて無視し、書きません。未知のセクションだけではインポートは失敗しません。
9. 実装上のサイズ制限
これらの制限は WIF 1.1 の一部ではありません。インポート時、ファイルが無制限の格子を確保できないよう寸法をクランプします。範囲外の値は非 WIF として拒否せず、範囲内に収めます。
経、緯 1 .. 4096 綜絖、踏み木 1 .. 64
10. エクスポートプロファイル
Bower のエクスポートは、下記の中核セクションを理解する読み取り側向けの、完全なライジングシェッド WIF 1.1 ファイルです。以前のインポート由来の注、シンボル、間隔、私有ベンダーデータは往復では保存されません。
- [WIF]、[CONTENTS]、Range=0,255 の [COLOR PALETTE]、Rising Shed=true の [WEAVING]
- Threads、Color 索引、Units=Centimeters の [WARP] と [WEFT]
- [COLOR TABLE]、[THREADING]、[WARP COLORS]、[WEFT COLORS]
- [LIFTPLAN] と Treadles=0、または [TIEUP] と [TREADLING] の両方
- TEXT、NOTES、シンボル、間隔、太さ、プライベート、ビットマップのセクションは無し
11. 例
以下は完全な WIF 1.1 ファイルです。構造のみで、色表は省略しています。
11.1 タイアップモード
経 8、緯 8、綜絖 4、踏み木 4。順通し、綾織風のタイアップ、四本の踏み木列を繰り返す踏み順です。
[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 リフトプランモード
経 4、緯 4。Treadles が 0 で [LIFTPLAN] があるため、ファイルはリフトプランとして読まれます。各緯は綜絖を直接列挙します。タイアップも踏み順もありません。
[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. 関連ソフトウェア
.wif ファイルは、無料の WIFビューア で開いてブラウザ上で組織図を確認でき、Bower にインポートして編集できます。ビューアには「Bowerで開く」操作があります。
13. 参考文献
形式本文の出典です。このページの Bower 注記は Bower のインポート/エクスポート動作を述べるものであり、1997 年仕様の一部ではありません。
- Nielsen, Ravi, et al. Weaving Information File (WIF) Specification, Version 1.1. 1997年4月20日。寄稿者は Ravi Nielsen(Patternland / Maple Hill Software)、Bob Keates(Fiberworks)、Rob Sinkler(SwiftWeave)、および 1997 年 WIF メーリングリストの会員。本文: http://www.tantradharma.com/maplehill/wif/wif1-1.txt。
- Nielsen, Ravi; Keates, Bob; Sinkler, Rob. Weaving Information File (WIF) Specification, Version 1.0. 1996年3月3日。現行の交換では 1.1 に置き換え。
- Asunder — Bower および無料 WIFビューア。