WIF (Weaving Information File, archivo de información de tejido) es un formato de texto orientado a líneas para intercambiar esquemas de tejido entre programas. La versión 1.1, fechada el 20 de abril de 1997, es la que se usa para el intercambio actual.
Este documento es una referencia anotada del WIF 1.1. Las reglas de formato siguen la especificación de 1997. Las notas etiquetadas Bower registran cómo Bower y el visor WIF gratuito implementan esas reglas. Las notas Bower son documentación de implementación; no forman parte de la especificación de 1997. Para una visión no normativa, véase ¿Qué es un archivo WIF?.
Las notas Bower usan los siguientes términos de estado:
- Admitido — el campo o la sección se lee, se escribe, o ambas cosas.
- Ignorado — el campo o la sección puede aparecer en un archivo; se omite y no hace fallar la importación por sí solo.
- No escrito — la exportación nunca lo emite.
- Suspendido en 1.1 — listado en el texto de 1997, pero fuera del intercambio actual.
1. Objetivos de diseño
WIF está diseñado para seguir siendo extensible, legible en un editor de texto y procesable por cualquier sistema que pueda leer texto plano.
Los datos de estructura se almacenan como números de lizos y pedales separados por comas, no como campos binarios empaquetados. El diseño físico se parece a un archivo .INI de Windows: encabezados de sección entre corchetes y líneas Key=value. A diferencia de los archivos private-profile clásicos de Windows 3.1, WIF no está limitado a 64K, y las API private-profile de Windows no sirven para analizarlo. Se requiere un analizador dedicado.
2. Tipo de archivo
Un archivo WIF es texto plano. No hay contenedor binario. La extensión convencional es .wif. El formato se identifica a partir de la sección [WIF].
Extensión .wif Codificación ASCII (UTF-8 sin BOM se acepta en la práctica) Fines de línea LF o CRLF Orden El orden de secciones y claves no es significativo
Bower. La importación y la exportación tratan el .wif como texto ordinario.
3. Reglas léxicas
La gramática es por líneas. Cada línea está en blanco, es un comentario, un encabezado de sección o un par clave/valor.
- Las líneas en blanco se ignoran.
- Si el primer carácter que no es espacio es
;, toda la línea es un comentario. Un comentario final puede seguir a un número o un booleano, a menudo después de un segundo;. Los valores de texto libre no deben llevar un comentario al final de la misma línea. - Los encabezados de sección tienen la forma
[Section Name]. La comparación no distingue mayúsculas. Por convención, los nombres se escriben en mayúsculas. - Las asignaciones tienen la forma
Key=value. La comparación de clave no distingue mayúsculas. El valor es el resto de la línea después del primer=. - Las claves duplicadas en una sección no son conformes. Un lector no debe hacer fallar el archivo solo por un duplicado; puede conservar el primer valor o el último.
- El orden de las secciones y el orden de las claves dentro de una sección no son significativos.
El siguiente fragmento ilustra las formas léxicas. No es un esquema completo:
; esta línea se ignora [WEAVING] Shafts=4 Treadles=4
Bower. Se omiten las líneas en blanco y los comentarios ; de línea completa. Los nombres se comparan sin distinguir mayúsculas. En las claves ordinarias, gana el último valor. Las filas de estructura se indexan por número. Los valores se recortan. Los comentarios finales en la misma línea no se eliminan.
4. Booleanos y símbolos
Los valores booleanos aceptados como verdadero son true, on, yes y 1. Los aceptados como falso son false, off, no y 0. Un booleano opcional omitido es falso, salvo que una sección concreta indique otra cosa.
Bower. true, yes y 1 se tratan como verdadero. Cualquier otro valor no vacío se trata como falso. on y off no son casos especiales.
Un tipo símbolo codifica un solo carácter de visualización usado en lugar de una celda rellena:
=1 dígito =X un carácter ='X' carácter entre comillas =#219 código de carácter 0..255 Escribir un espacio como ' ' o #32. Escribir una almohadilla como '#' o #35.
Bower. Los símbolos no están implementados. La apariencia es solo color. Las secciones de símbolos se ignoran al importar y nunca se escriben al exportar.
5. Requisitos mínimos
Un archivo 1.1 conforme contiene [WIF] y [CONTENTS]. Toda otra sección que aparezca en el archivo debe listarse bajo [CONTENTS] con el valor true. Las secciones no usadas pueden omitirse, o listarse como false. Si una sección está presente, sus claves obligatorias también deben estarlo.
Un archivo que contiene datos de remetido pero no un bloque [WIF] no es un documento WIF 1.1 válido, aunque algunos programas intenten leerlo.
Bower. La importación falla sin [WIF]. [CONTENTS] no se exige ni se valida al importar. La exportación siempre escribe ambas secciones y marca true para cada sección emitida.
6. Clases de sección y datos dispersos
Las secciones informativas registran valores de fondo (título, tamaño de paleta, conteos del telar). Las secciones de datos registran filas por hilo y por pasada (remetido, colores y tablas asociadas). [CONTENTS] lista las secciones incluidas. No lista [WIF].
Los datos son dispersos. Los hilos de urdimbre y las pasadas se asignan a partir de Threads. Los valores por defecto vienen de [WARP] y [WEFT]. Las celdas de estructura valen cero por defecto (sin uso). Solo hace falta escribir las claves que difieren de esos valores. Los lectores invierten ese proceso.
Si ocho hilos de urdimbre comparten un color y solo el hilo 3 difiere, el valor por defecto de la urdimbre aporta el color común y una sola sobrescritura registra la excepción:
[WARP] Threads=8 Color=1 [WARP COLORS] 3=2
Los hilos 1, 2 y 4–8 usan el color de paleta 1; el hilo 3 usa el color de paleta 2. La misma regla vale para la estructura: una línea de remetido ausente significa ningún lizo en ese hilo, no una copia del hilo anterior.
Bower. Se usan los conteos de hilos y las tablas de estructura y color. Los valores por defecto de espaciado y grosor, y las tablas dispersas de grosor y espaciado, no están implementados. La estructura queda vacía por defecto; las claves de estructura ausentes siguen vacías. Cuando hay una tabla de color, se aplican los Color por defecto de [WARP] / [WEFT] si el índice es mayor que cero, y después las sobrescrituras por hilo y por pasada.
7. Secciones privadas
Las implementaciones pueden guardar datos privados sin romper el intercambio. El nombre de la sección debe incluir un identificador de origen único para que los proveedores no colisionen:
[PRIVATE <SourceID> <SectionName>] Las líneas interiores no deben empezar por '[' para que un lector pueda hallar la sección siguiente.
Bower. Las secciones privadas se omiten y nunca se escriben. No se define un Source ID privado.
8. Catálogo de secciones
Esta sección lista cada sección con nombre del WIF 1.1 y el estado de implementación de Bower. El intercambio con Bower depende de la estructura, el color y el perfil de exportación de la sección 10.
8.1 [WIF] — obligatorio
Sección de identidad obligatoria. Un archivo sin [WIF] no es un documento WIF 1.1 válido.
Clave Oficial Descripción ---- -------- ----------- Version obligatorio p. ej. 1.1 Date obligatorio cadena de fecha libre Developers obligatorio contacto / autores Source Program obligatorio nombre del programa creador Source Version opcional versión del programa creador
Bower. La sección es obligatoria al importar. La exportación escribe Version=1.1, Date=April 20, 1997, [email protected], Source Program=Bower y Source Version=1.0. Las claves individuales ausentes dentro de [WIF] no hacen fallar la importación.
8.2 [CONTENTS] — obligatorio en 1.1
Tabla de contenido: nombre de sección como clave, true o false como valor. Solo las secciones que existen necesitan listarse como true. Listar todas las secciones definidas con true o false está permitido, no es obligatorio.
Un lector puede seleccionar secciones solo a partir de CONTENTS.
Indicadores informativos: COLOR PALETTE, WARP SYMBOL PALETTE, WEFT SYMBOL PALETTE, TEXT, WEAVING, WARP, WEFT Indicadores de datos: 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> Suspendido / reservado: TRANSLATIONS BITMAP IMAGE, BITMAP FILE, BITMAP IMAGE DATA
Bower. CONTENTS no se exige al importar y no se usa para elegir qué analizar. La exportación escribe true para cada sección realmente emitida.
8.3 [COLOR PALETTE]
Declara el tamaño de la paleta y el rango numérico de los valores RGB. Los archivos antiguos pueden usar 0–999 en lugar de 0–255; los lectores deben escalar.
Clave Oficial Descripción ---- -------- ----------- Entries obligatorio entero > 0, tamaño de paleta Range obligatorio min,max con max > min Form=RGB obsoleto no escribir; ignorar si está presente
Range=0,999 con la entrada de tabla 1=999,0,0 asigna el canal rojo a 255 en 8 bits. Range=0,255 con 1=255,0,0 no requiere escalado.
Bower. Se lee Range (valor por defecto 0,255 si falta). Cada canal se convierte con round((c − min) / (max − min) * 255) y se recorta a 0–255. Si max−min es cero o negativo, la importación falla. Entries no se exige. La exportación usa siempre Range=0,255.
8.4 [WARP SYMBOL PALETTE] / [WEFT SYMBOL PALETTE]
Clave Oficial Descripción ---- -------- ----------- Entries obligatorio entero > 0
Bower. Ignorado. No escrito.
8.5 [TEXT]
Metadatos opcionales sobre la pieza y quien la hizo: título, autor, datos de contacto. Ninguna de estas claves afecta la cuadrícula del esquema.
Clave Oficial ---- -------- Title opcional Author opcional Address opcional EMail opcional Telephone opcional FAX opcional
Bower. Ignorado. No escrito.
8.6 [WEAVING]
Tamaño del telar y convención de calada. Los conteos de lizos y pedales pueden aumentar si las secciones de estructura nombran índices más altos que los declarados aquí.
Clave Oficial Descripción ---- -------- ----------- Shafts obligatorio entero > 0 Treadles obligatorio entero > 0 Rising Shed opcional true = los lizos listados suben Profile obsoleto ignorar; no escribir
Calada ascendente significa que los lizos listados en el plan de elevación (o levantados por el camino pedal/amarre) suben. La calada descendente es la convención física opuesta. Cuando un archivo especifica calada descendente, las celdas del plan de elevación — o las del amarre — se invierten tras la carga para que las cuadrículas internas queden en calada ascendente y el tejido coincida con el archivo.
Bower. Se leen Shafts y Treadles (valor por defecto 4 si faltan) y se amplían desde la estructura cuando hace falta. Un Rising Shed ausente se trata como true. False dispara la inversión descrita arriba. La exportación siempre escribe Rising Shed=true, y Treadles=0 en modo plan de elevación. Profile se ignora.
8.7 [WARP] y [WEFT]
Estas secciones describen la urdimbre o la trama en conjunto y el valor por defecto de cada hilo. Tras conocer Threads, se asignan ese número de hilos o pasadas, se aplican los valores por defecto y las secciones dispersas sobrescriben individuos (sección 6).
Clave Oficial Descripción
---- -------- -----------
Threads obligatorio número de hilos o pasadas
Color opcional índice de paleta, o índice + R,G,B
Symbol opcional tipo símbolo
Symbol Number opcional índice en la tabla de símbolos
Units obligatorio si hay Decipoints | Inches | Centimeters
espaciado/grosor
Spacing opcional real ≥ 0
Thickness opcional real ≥ 0
Spacing Zoom opcional entero ≥ 0
Thickness Zoom opcional entero ≥ 0
Obsoleto en 1.1 (ignorar / no escribir):
Colors, Palette, ColorMix
Para Color, un índice de paleta simple es la forma de intercambio preferida. Algunos archivos también adjuntan un triplete RGB después del índice.
Color=2 ; cada hilo/pasada toma por defecto la entrada 2 de COLOR TABLE Color=2,255,0,0 ; índice más RGB opcional — solo se conserva el índice
Si una implementación solo admite uno de espaciado y grosor, se prefiere Spacing cuando ambos están presentes. Una implementación que solo modela grosor debería escribir Spacing, o escribir ambos con los mismos números.
Bower. Se lee Threads (valores por defecto 32 para urdimbre y 48 para trama si falta). Color se lee como un índice de paleta cuando es mayor que cero. Se ignoran símbolos, espaciado, grosor, zooms y el RGB extra en Color. La exportación escribe Threads, Color y Units=Centimeters.
8.8 [NOTES]
Texto libre, una cadena por línea numerada. No forma parte de las cuadrículas del esquema.
1=Primera línea de notas 2=Segunda línea
Bower. Ignorado. No escrito.
8.9 [TIEUP]
Cada pedal lista los lizos que levanta (sentido de calada ascendente, antes de cualquier inversión). Se usa con remetido y pedaleo cuando el archivo no es un plan de elevación puro.
Clave = pedal (1..n)
Valor = lizos, separados por comas
0 solo significa sin uso
Las líneas ausentes quedan sin uso
Ejemplo: 1=1,2 → el pedal 1 levanta los lizos 1 y 2
Bower. Admitido en modo amarre. Se aceptan valores de varios lizos. La exportación escribe una línea por pedal.
8.10 [COLOR TABLE]
Entradas de paleta. Las claves Color de urdimbre y trama apuntan a índices de esta tabla. Los números R,G,B usan el Range de [COLOR PALETTE].
Clave = índice de paleta Valor = R,G,B en el Range de la paleta
Paleta, valor por defecto de urdimbre y dos sobrescrituras por hilo:
[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
Los hilos 1 y 3 toman por defecto la entrada de paleta 1; los hilos 2 y 4 usan la entrada de paleta 2.
Bower. Admitido, con el mapeo de Range descrito arriba. La exportación escribe una entrada de tabla por color de hilo único y siempre usa Range=0,255.
8.11 [WARP SYMBOL TABLE] / [WEFT SYMBOL TABLE]
Clave = índice de símbolo Valor = tipo símbolo WIF (véase la sección 4)
Bower. Ignorado. No escrito.
8.12 [THREADING]
Lizos de cada hilo de urdimbre. Se permiten varios lizos en un mismo hilo.
Clave = hilo de urdimbre (1..n)
Valor = lizo, o lizo,lizo,...
1=1,5 significa que el hilo 1 está en los lizos 1 y 5
0 significa sin uso
Las líneas ausentes quedan sin uso
Bower. Admitido, incluidos los hilos de varios lizos. La exportación escribe una línea por hilo.
8.13 Secciones por hilo y por pasada
Estas secciones asignan valores a hilos o pasadas individuales. Hay tres grupos: estructura (pedaleo / plan de elevación), color y apariencia (grosor, espaciado, símbolos).
Sección Valor Defecto si falta
------- ----- ----------------
[WARP THICKNESS] real ≥ 0 [WARP].Thickness
[WARP THICKNESS ZOOM] entero ≥ 0 [WARP].Thickness Zoom
[WARP SPACING] real ≥ 0 [WARP].Spacing
[WARP SPACING ZOOM] entero ≥ 0 [WARP].Spacing Zoom
[WARP COLORS] idx paleta [WARP].Color
(un entero; ignorar la cola R,G,B antigua)
[WARP SYMBOLS] idx símbolo [WARP].Symbol Number
[TREADLING] pedales sin uso (cero)
[LIFTPLAN] lizos sin uso (cero)
[WEFT THICKNESS] real ≥ 0 [WEFT].Thickness
[WEFT THICKNESS ZOOM] entero ≥ 0 [WEFT].Thickness Zoom
[WEFT SPACING] real ≥ 0 [WEFT].Spacing
[WEFT SPACING ZOOM] entero ≥ 0 [WEFT].Spacing Zoom
[WEFT COLORS] idx paleta [WEFT].Color
[WEFT SYMBOLS] idx símbolo [WEFT].Symbol Number
El pedaleo es el camino de control por amarre: la clave es la pasada, el valor son los pedales pisados, por ejemplo 5=1,2. El plan de elevación es directo: la clave es la pasada, el valor son los lizos que suben, por ejemplo 5=1,3. Un archivo típico usa un solo camino de control, no ambos (sección 8.14).
Bower. Se admiten pedaleo, plan de elevación y colores de urdimbre/trama. Las secciones de grosor, espaciado, zoom y símbolos se ignoran y nunca se escriben.
8.14 Tipo de telar, calada ascendente y patrón del tejido
No hay una clave mode=. El tipo de telar se infiere de las secciones de estructura presentes.
Bower y el visor WIF gratuito usan la siguiente regla:
Si [LIFTPLAN] está presente
y ([TREADLING] falta o Treadles es 0)
entonces tratar el archivo como plan de elevación
(THREADING + LIFTPLAN)
si no, tratarlo como amarre
(THREADING + TIEUP + TREADLING)
El plan de elevación es el modelo de ratiera: cada pasada lista lizos. El amarre es el modelo de telar de lizos: los pedales eligen una columna del amarre, y el pedaleo es la secuencia de pedales.
Cuando Rising Shed es false, cada celda del plan de elevación (modo plan de elevación) o cada celda de amarre (modo amarre) se invierte después de cargar las cuadrículas. El remetido y el pedaleo se dejan como están escritos.
Rising Shed=true, pasada 1=1,2 → lizos 1 y 2 arriba
Rising Shed=false, la misma línea → esos lizos se guardan abajo,
los demás lizos se invierten arriba
El patrón del tejido no se guarda en el archivo. Tras cargar la estructura y aplicar cualquier inversión de calada, una celda del paño es urdimbre arriba si algún lizo remetido en ese hilo también está levantado en esa pasada — desde el plan de elevación, o desde un pedal activo y su amarre. Si no, la celda es trama arriba. Los programas recalculan el patrón del tejido para mostrarlo; no hay una sección de patrón del tejido que exportar.
Bower. La carga y la visualización siguen este procedimiento. El visor WIF gratuito usa las mismas reglas de estructura y color. En modo plan de elevación, el visor omite el bloque de amarre vacío y muestra los pedales como “-” en el panel lateral.
8.15 Elementos suspendidos y obsoletos
Suspendido en 1.1: [TRANSLATIONS] [BITMAP FILE], [BITMAP IMAGE], [BITMAP IMAGE DATA] Descartado / obsoleto en el relato 1.1: sección Design, ColorMix, clave Colors, clave Palette, cola RGB en WARP/WEFT COLORS
Bower. Todo lo anterior se ignora y no se escribe. Las secciones desconocidas no hacen fallar la importación por sí solas.
9. Límites de tamaño de la implementación
Estos límites no forman parte del WIF 1.1. Al importar, las dimensiones se recortan para que un archivo no pueda asignar una cuadrícula sin tope. Los valores fuera de rango se traen al rango en lugar de rechazarse como no-WIF.
Urdimbre, trama 1 .. 4096 Lizos, pedales 1 .. 64
10. Perfil de exportación
La exportación de Bower es un archivo WIF 1.1 completo de calada ascendente, pensado para lectores que entienden las secciones centrales siguientes. Notas, símbolos, espaciado y datos privados de una importación previa no se conservan en un viaje de ida y vuelta.
- [WIF], [CONTENTS], [COLOR PALETTE] con Range=0,255, [WEAVING] con Rising Shed=true
- [WARP] y [WEFT] con Threads, índice Color, Units=Centimeters
- [COLOR TABLE], [THREADING], [WARP COLORS], [WEFT COLORS]
- O bien [LIFTPLAN] y Treadles=0, o bien [TIEUP] y [TREADLING] juntos
- Sin secciones TEXT, NOTES, símbolos, espaciado, grosor, privadas ni bitmap
11. Ejemplos
Los siguientes ejemplos son archivos WIF 1.1 completos. Solo contienen estructura; omiten una tabla de color.
11.1 Modo amarre
Ocho hilos, ocho pasadas, cuatro lizos, cuatro pedales. Remetido recto, amarre de tipo sarga y pedaleo que repite la secuencia de los cuatro pedales.
[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 Modo plan de elevación
Cuatro hilos, cuatro pasadas. Treadles es 0 y [LIFTPLAN] está presente, así que el archivo se lee como plan de elevación. Cada pasada lista lizos de forma directa. No hay amarre ni pedaleo.
[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. Software relacionado
Un archivo .wif puede abrirse en el visor WIF gratuito para inspeccionar el esquema en un navegador, o importarse en Bower para editarlo. El visor ofrece la acción Abrir en Bower.
13. Referencias
Fuentes del texto de formato. Las notas etiquetadas Bower en esta página describen el comportamiento de importación y exportación de Bower; no forman parte de la especificación de 1997.
- Nielsen, Ravi, et al. Weaving Information File (WIF) Specification, Version 1.1. 20 de abril de 1997. Contribuyeron Ravi Nielsen (Patternland / Maple Hill Software), Bob Keates (Fiberworks), Rob Sinkler (SwiftWeave) y miembros de la lista de correo WIF de 1997. Texto: http://www.tantradharma.com/maplehill/wif/wif1-1.txt.
- Nielsen, Ravi; Keates, Bob; Sinkler, Rob. Weaving Information File (WIF) Specification, Version 1.0. 3 de marzo de 1996. Sustituida por 1.1 para el intercambio actual.
- Asunder — Bower y el visor WIF gratuito.