Projects/Liberty/File Formats/Janome Embroidery Format

From KDE Community Wiki

Janome Embroidery Format JEF

The JEF and JEF+ files consists of a number of sections. Multi-byte numbers appear to be stored little endian. For the JEF (and not JEF+ ) files, there is no simple signature, except to see if the Stitch-offset is after the Thread-type-list. The JEF pattern can easily be extracted from JEF+ files; by using the Stitch-offset to the Stitch-list, to skip over the JEF+ header; and then to ignore the JEF+ details, after the Stitch-list, at the end of the file.

File = File-header Thread-colour-list Thread-type-list [Plus-header] Stitch-list {Plus-detail}

Thread-colour-list = {Thread-colour}

Thread-type-list = {Thread-type}

Stitch-list = {Stitch}

Stitch = Escaped-command | Displacement

File-header

Offset Length Type Description
0 4 Offset Stitch-offset location of first stitch
4 4 Flags unknown = 1, 10 or 20
8 8 ASCII Date YYYYMMDD
16 8 ASCII Time HHMMSSxx
24 4 Count Thread-count number of thread changes
28 4 Count Stitch-count
32 4 Code Hoop-code = 0 to 4
36 4 Measure Extent-1-left stitch extent left of centre in 0.1 mm units
40 4 Measure Extent-1-top
44 4 Measure Extent-1-right
48 4 Measure Extent-1-bottom
52 4 Measure Extent-2-left; -1 implies not used
56 4 Measure Extent-2-top
60 4 Measure Extent-2-right
64 4 Measure Extent-2-bottom
68 4 Measure Extent-3-left; -1 implies not used
72 4 Measure Extent-3-top
76 4 Measure Extent-3-right
80 4 Measure Extent-3-bottom
84 4 Measure Extent-4-left; -1 implies not used
88 4 Measure Extent-4-top
92 4 Measure Extent-4-right
96 4 Measure Extent-4-bottom
100 4 Measure Extent-5-left; -1 implies not used
104 4 Measure Extent-5-top
108 4 Measure Extent-5-right
112 4 Measure Extent-5-bottom

Hoop-code

Hoop-code Hoop-name Hoop-size
0 A Standard 126 x 110 mm
1 C Free Arm 50 x 50 mm
2 B Large 140 x 200 mm
3 F Spring Loaded 126 x 110 mm
4 D Giga 230 x 200 mm

Thread-colour

Offset Length Type Description
0 4 Code Thread-code = 1 to 78


Thread-code Colour-RGB Colour-number Colour-name
1 "#000000" 002 "Black"
2 "#F0F0F0" 001 "White"
3 "#FFCC00" 239 "Sunflower"
4 "#E6651E" 254 "Hazel"
5 "#C4E39D" 264 "Green Dust"
6 "#237336" 226 "Green"
7 "#071650" 232 "Navy Blue"
8 "#4CB58F" 250 "Emerald Green"
9 "#F669A0" 201 "Pink"
10 "#FF4720" 202 "Vermilion"
11 "#E2A188" 236 "Cinnamon"
12 "#595B61" 252 "Dark Gray"
13 "#E4C35D" 003 "Gold"
14 "#6231BD" 261 "Violet Blue"
15 "#2F5933" 219 "Olive Green"
16 "#FAB381" 212 "Peach"
17 "#F999B7" 211 "Pale Pink"
18 "#F09C96" 256 "Salmon"
19 "#A39166" 268 "Olive Drab"
20 "#970533" 215 "Wine Red"
21 "#AC9CC7" 209 "Pale Violet"
22 "#65C2C8" 217 "Sky"
23 "#E5E5E5" 220 "Silver Gray"
24 "#A0B8CC" 216 "Pale Sky"
25 "#98D6BD" 227 "Pale Aqua"
26 "#0B2F84" 207 "Blue"
27 "#98F3FE" 229 "Powder Blue"
28 "#B2E1E3" 228 "Baby Blue"
29 "#FF0927" 244 "Cardinal Red"
30 "#14329C" 262 "Blue Ink"
31 "#A80043" 242 "Burgundy"
32 "#FF6600" 203 "Orange"
33 "#FF6048" 234 "Coral"
34 "#B59474" 237 "Umber"
35 "#FDF5B5" 210 "Pale Yellow"
36 "#F5DB8B" 238 "Blond"
37 "#C79732" 272 "Old Gold"
38 "#889B9B" 221 "Gray"
39 "#AB5A96" 208 "Purple"
40 "#FFBDE3" 240 "Orchid Pink"
41 "#C3007E" 241 "Peony Purple"
42 "#FF0000" 225 "Red"
43 "#EE71AF" 266 "Floral Pink"
44 "#608541" 246 "Moss Green"
45 "#609418" 247 "Meadow Green"
46 "#C6EECB" 245 "Opal Green"
47 "#5BD2B5" 249 "Aquamarine"
48 "#FFFF17" 204 "Yellow"
49 "#04917B" 251 "Peacock Green"
50 "#5C2625" 260 "Dark Sepia"
51 "#FFFFDC" 253 "Ivory White"
52 "#FF5A27" 235 "Burnt Orange"
53 "#A76C3D" 257 "Cocoa Brown"
54 "#9C6445" 214 "Brown"
55 "#B45A30" 258 "Sienna"
56 "#481A05" 205 "Dark Brown"
57 "#0C8918" 269 "Meadow"
58 "#70A9E2" 230 "Bright Blue"
59 "#1D5478" 231 "Slate Blue"
60 "#165FA7" 263 "Solar Blue"
61 "#7FC21C" 218 "Yellow Green"
62 "#06480D" 248 "Dark Green"
63 "#843154" 267 "Wine"
64 "#FD33A3" 265 "Crimson"
65 "#FFBBBB" 233 "Salmon Pink"
66 "#F7F297" 270 "Mustard"
67 "#00B552" 206 "Bright Green"
68 "#FCF121" 275 "Canary Yellow"
69 "#E6965A" 255 "Toast"
70 "#D7BDA4" 213 "Beige"
71 "#FF9D00" 273 "Honey Dew"
72 "#FFBA5E" 274 "Tangerine"
73 "#0257B5" 222 "Ocean Blue"
74 "#6E3937" 259 "Sepia"
75 "#540571" 243 "Royal Purple"
76 "#CC9900" 271 "Yellow Ocher"
77 "#D0BAB0" 223 "Beige Gray"
78 "#E3BE81" 224 "Bamboo"

Thread-type

Offset Length Type Description
0 4 int unknown = 13

Plus-header

Only in JEF+ files.

Offset Length Type Description
0 4 int Signature-1 = 0
4 4 int Signature-2 = 0
8 8 ASCII Signature-3 = "JANOME\0\0"
16 4 Count Plus-detail-count = 1
20 4 Offset Plus-detail-offset from file-start to JEF+ extra details

Escaped-command

Offset Length Type Description
0 1 Byte Escape = -128 or 0x80
1 1 Byte Command-code = 1, 2 or 16


Command-code Description
1 Change to next thread in list
2 Move followed by 8 bit displacement-X and 8 bit displacement-Y
16 Last-stitch

Displacement

Offset Length Type Description
0 1 Byte Displacement-X -127 to 127 in 0.1 mm
1 1 Byte Displacement-Y -127 to 127 in 0.1 mm


Plus-detail

Unknown, many 32 bit numbers, then many 16 bit numbers.


SEW Format

This appears to be an earlier format, it is fairly simple (from the examples seen), it includes bitmap previews, but sometimes they do not match the pattern described in stitches. The format seems to use the same thread colour codes and the same stitch-list as JEF.

Format appears to be little endian, except for the bitmaps.

SEW-file = SEW-header {Bitmap} {stitch}

SEW-header

Only SEW files

Offset Length Type Description
0 2 Count Colour count; maximum of 12 colours
2 12x2 Table Colour index table padded with 0; JEF colour code
0x1A 12x2 Table Colour unknown; all entries appear to have the same value: 8 or 0 or 255
0x32 12x2 Table Stitches per colour (minus a few)
0x4A


Bitmap

The bitmaps and sets of bitmaps appear to start at several fixed file offsets:
0x004A 1 x 48 pixel by 32 lines monochrome
0x010C 1 to 12 x 24 by 16, one for each colour
0x043C 1 x 64 by 48 monochrome
0x05BE 1 to 12 x 64 by 48, one for each colour
0x17D6 1 x w x h, variously sized monochrome outline and centre mark.
There are about 1440 bytes before the stitch-list.

This last bitmap may give an indication of the size in millimetres, the width will be a multiple of 8 mm. The available bits (for pixels or mm) 1440 x 8 = 11,520 gives a maximum size around 120 mm x 96 mm, so may be not.


Offset Length Type Description
0 1 Count Width of bitmap in (8 bit) bytes
1 1 Count Height of bitmap in lines/rows
2 Width x Height Byte Bits from top to bottom, left to right, MSB to LSB
2 + Width x Height


The bitmap is similar to PBM P4 format, a PBM file can be created by writing:

 "P4\n"
 "%d %d\n", Width * 8, Height

then copy Width x Height chars

Stitch

The SEW stitches appear to start at the fixed file offset 0x1D78, and use the same Escaped-command and (8 bit, 8 bit) Displacement as JEF above.