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時代のプライベートプロファイルファイルと違って64KBの上限はなく、Windowsのプライベートプロファイル用のAPIでは読み取れません。専用のパーサーが必要です。
2. ファイル種別
WIFファイルはテキストファイルそのもので、バイナリ形式で包んだものではありません。拡張子は通常、.wifです。形式は[WIF]セクションで判別します。
拡張子 .wif 文字コード ASCII(実際にはBOMなしのUTF-8も受け付けられます) 改行コード LFまたはCRLF 順序 セクションとキーの順序に意味はありません
Bower:読み込みでも書き出しでも、.wifを普通のテキストとして扱います。
3. 字句規則
文法は行単位です。各行は、空行、コメント、セクションの見出し、キーと値の組のどれかです。
- 空行は無視します。
- 空白以外の最初の文字が
;なら、その行全体がコメントです。数値や真偽値のあとには、行末コメントを続けてもかまいません。その場合、多くは2つ目の;のあとに書きます。自由記述の値では、同じ行に行末コメントを書いてはいけません。 - セクションの見出しは
[Section Name]の形です。照合では大文字と小文字を区別しません。慣例として、名前は大文字で書きます。 - キーと値の組は
Key=valueの形です。キーの照合でも大文字と小文字を区別しません。値は、その行の最初の=よりあとの部分すべてです。 - 1つのセクションでキーが重複するのは仕様違反です。ただし、読み込む側は、重複があるというだけでそのファイルを読み込めないものとして扱ってはいけません。最初の値と最後の値のどちらを残してもかまいません。
- セクションの順序にも、セクション内のキーの順序にも意味はありません。
次の例は字句の形を示すための断片で、完全な織り方図ではありません。
; この行は無視される [WEAVING] Shafts=4 Treadles=4
Bower. 空行と、行全体が ; のコメント行は読み飛ばします。名前は大文字と小文字を区別せずに照合します。通常のキーが重複した場合は、最後の値を採ります。構造の行は番号で区別します。値の前後の空白は取り除きます。行末のコメントは取り除きません。
4. 真偽値と記号
真として受け付ける値はtrue、on、yes、1です。偽として受け付ける値はfalse、off、no、0です。省略可能な真偽値が書かれていない場合は、そのセクションで別に定めていない限り偽とします。
Bower:true、yes、1を真として扱います。それ以外の空でない値は、すべて偽として扱います。onとoffを特別には扱いません。
記号の指定は、塗りつぶしたマスの代わりに表示する1文字を表します。
=1 数字1文字 =X 1文字 ='X' 引用符で囲んだ1文字 =#219 文字コード(0~255) 空白は' 'または#32と書きます。 #は'#'または#35と書きます。
Bower:記号は実装していません。見た目は色だけで表します。記号のセクションは、読み込みでは無視し、書き出しでは出力しません。
5. 最小要件
仕様に沿った1.1のファイルには、[WIF]と[CONTENTS]があります。ファイルにあるほかのセクションは、すべて[CONTENTS]に値をtrueにして記載しなければなりません。使わないセクションは、省略しても、falseとして記載してもかまいません。セクションがある場合は、その必須のキーも書かなければなりません。
綜絖通しのデータを含んでいても、[WIF]セクションのないファイルはWIF 1.1の文書として有効ではありません。そうしたファイルを読み込もうとするソフトがあっても同じです。
Bower:[WIF]がないと、読み込みに失敗します。[CONTENTS]は、読み込みでは必須ではなく、内容の検証もしません。書き出しでは常に両方のセクションを書き、出力したすべてのセクションをtrueにします。
6. セクションの分類とデータの省略
情報セクションには、全体にかかわる値(タイトル、パレットの色数、織機の綜絖と踏み木の数)を記録します。データセクションには、経糸1本ごと、1段ごとの行(綜絖通し、色、それに関連する表)を記録します。[CONTENTS]には、ファイルに含まれるセクションを記載します。[WIF]は記載しません。
データは省略した形で書きます。経糸の本数と緯糸の段数はThreadsの値で決め、既定値は[WARP]と[WEFT]から取ります。組織のマスの既定値は0(未使用)です。書く必要があるのは、既定値と違うキーだけです。読み込む側は、その手順を逆にたどります。
8本の経糸のうち3本めだけ色が違う場合は、経糸の既定値で共通の色を指定し、違う1本だけを個別の指定で上書きします。
[WARP] Threads=8 Color=1 [WARP COLORS] 3=2
1、2、4~8本めの経糸はパレットの1番の色、3本めの経糸はパレットの2番の色を使います。組織にも同じ規則が当てはまります。綜絖通しの行がない経糸は、どの綜絖にも通していないという意味で、前の経糸の通し方を引き継ぐわけではありません。
Bower:経糸の本数と緯糸の段数、組織と色の表を使います。間隔と太さの既定値、間隔と太さを1本ずつ指定する表は実装していません。組織の既定値は空で、組織のキーがない部分は空のままです。色の表があるときは、番号が0より大きければ[WARP]と[WEFT]のColorの既定値を当てはめ、そのあと経糸1本ごと、1段ごとの上書きを当てはめます。
7. 独自のセクション
各ソフトは、やり取りを妨げない形で独自のデータを保存してかまいません。開発元どうしで重ならないよう、セクション名には開発元を一意に示す識別子を入れなければなりません。
[PRIVATE <SourceID> <SectionName>] 読み込む側が次のセクションを見つけられるよう、中の行を「[」で始めてはいけません。
Bower:独自のセクションは読み飛ばし、書き出しもしません。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 廃止 無視すること。書かないこと
綜絖が上がる方式(Rising Shed)では、リフトプランに記した綜絖(または踏み木とタイアップで上げる綜絖)が上がります。綜絖が下がる方式は、物理的にはその逆です。綜絖が下がる方式を指定したファイルでは、読み込んだあとでリフトプランのマス、またはタイアップのマスを反転します。こうすることで、ソフトが内部で持つ図は綜絖が上がる方式のまま、布はファイルのとおりになります。
Bower:ShaftsとTreadlesを読み込み(ない場合は4)、必要なら組織のデータに合わせて増やします。Rising Shedがない場合はtrueとして扱います。falseなら、上で説明した反転を行います。書き出しでは常にRising Shed=trueを書き、リフトプラン方式ではTreadles=0を書きます。Profileは無視します。
8.7 [WARP]と[WEFT]
経糸または緯糸全体の情報と、糸1本ごとの既定値を記録するセクションです。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の3つの値を付けるファイルもあります。
Color=2 ; 各経糸・各段の既定値はCOLOR TABLEの2番 Color=2,255,0,0 ; 番号と任意のRGB。使われるのは番号だけ
間隔と太さの片方にしか対応していないソフトでは、両方がある場合はSpacingを優先します。太さだけを扱うソフトは、Spacingを書くか、同じ数値で両方を書いてください。
Bower:Threadsを読み込みます(ない場合は経糸32本、緯糸48段)。Colorは、0より大きい場合に1つのパレット番号として読み込みます。記号、間隔、太さ、拡大率(Zoom)、Colorに付いたRGBは無視します。書き出しでは、Threads、Color、Units=Centimetersを書きます。
8.8 [NOTES]
自由記述のテキストで、番号付きの1行に1つの文字列を書きます。織り方図のマス目には含まれません。
1=メモの1行目 2=2行目
Bower:無視します。書き出しません。
8.9 [TIEUP]
踏み木ごとに、その踏み木が上げる綜絖を記します(綜絖が上がる方式での意味で、反転する前の値です)。リフトプランだけのファイルでない場合に、綜絖通し・踏み順とあわせて使います。
キー 踏み木の番号(1~n)
値 綜絖の番号(カンマ区切り)
0だけなら未使用
行がない踏み木は未使用のまま
例:1=1,2 → 1番の踏み木は1番と2番の綜絖を上げる
Bower:[織機の方式]が[タイアップと踏み順]のときに対応しています。1本の踏み木で複数の綜絖を上げる値も受け付けます。書き出しでは、踏み木1本につき1行を書きます。
8.10 [COLOR TABLE]
パレットの色の一覧です。経糸と緯糸のColorキーは、この表の番号を指します。R,G,Bの数値は、[COLOR PALETTE]のRangeで決めた範囲の値です。
キー パレットの番号 値 R,G,B(パレットのRangeの範囲内)
パレットと経糸の既定値を定め、経糸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の換算は上で説明したとおりです。書き出しでは、糸の色1色につき表の項目を1つ書き、常にRange=0,255を使います。
8.11 [WARP SYMBOL TABLE] / [WEFT SYMBOL TABLE]
キー 記号の番号 値 WIFの記号の指定(4章を参照)
Bower:無視します。書き出しません。
8.12 [THREADING]
経糸1本ごとに、通す綜絖を記します。1本の経糸を複数の綜絖に通すこともできます。
キー 経糸の番号(1~n)
値 綜絖の番号(複数ならカンマ区切り)
1=1,5は、1本めの経糸を1番と5番の綜絖に通すという意味
0は未使用
行がない経糸は未使用のまま
Bower:対応しています。複数の綜絖に通した経糸も扱えます。書き出しでは、経糸1本につき1行を書きます。
8.13 経糸ごと・緯糸ごとのセクション
経糸1本ごと、または1段ごとに値を付けるセクションです。組織(踏み順/リフトプラン)、色、見た目(太さ、間隔、記号)の3つのグループがあります。
セクション 値 ないときの既定値
---------- -- ----------------
[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
(整数1つ。古い形式の末尾のR,G,Bは無視)
[WARP SYMBOLS] 記号の番号 [WARP].Symbol Number
[TREADLING] 踏み木 未使用(0)
[LIFTPLAN] 綜絖 未使用(0)
[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)
リフトプランはドビー織機での表し方で、段ごとに上げる綜絖を記します。タイアップは綜絖を使う織機での表し方で、踏み木を踏むとタイアップの1列分の綜絖が上がります。踏み順は、踏み木を踏む順番です。
Rising Shedがfalseのときは、図を読み込んだあとで、リフトプランのマスをすべて(リフトプラン方式)、またはタイアップのマスをすべて(タイアップと踏み順の方式)反転します。綜絖通しと踏み順は、書かれたとおりのままです。
Rising Shed=true、1段めが1=1,2 → 1番と2番の綜絖が上がる
Rising Shed=false、同じ行 → 1番と2番の綜絖を下がる側として記録し、
ほかの綜絖を上がる側に反転する
組織図はファイルに保存されません。組織のデータを読み込み、必要なら上げ下げを反転します。そのうえで、組織図の各マスは、そのマスの経糸を通した綜絖のどれかがそのマスの段で上がっていれば、経糸が上になります。上がる綜絖は、リフトプラン、または踏んだ踏み木とそのタイアップから決まります。それ以外のマスは緯糸が上になります。各ソフトは表示のために組織図を計算し直します。組織図を書き出すセクションはありません。
Bower:読み込みと表示は、この手順に従います。無料のWIFビューアーも、組織と色について同じ規則に従います。リフトプラン方式では、ビューアーは空のタイアップを表示せず、横のパネルでは踏み木を「-」と表示します。
8.15 保留および廃止の項目
1.1で保留: [TRANSLATIONS] [BITMAP FILE], [BITMAP IMAGE], [BITMAP IMAGE DATA] 1.1の仕様書で削除・廃止されたもの: Designセクション、ColorMix、Colorsキー、Paletteキー、 WARP COLORSと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本の例です。綜絖通しは順通し、タイアップは綾織の形で、踏み順は、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ビューアー