kolibrios/programs/network/netsurf/libcss/docs/Bytecode
Dmitry Pereverzev (SoUrcerer) 370da47fa0 Netsurf initial port (still needs native ui and cURL)
git-svn-id: svn://kolibrios.org@3584 a494cfbc-eb01-0410-851d-a64ba20cac60
2013-06-01 17:14:14 +00:00

1238 lines
27 KiB
Plaintext

CSS style declaration bytecode
==============================
Format
------
<opcode+flags+value> [<parameters>]
<opcode+flags+value> is 32 bits wide:
bits 18-31: value
bits 10-17 : flags
bits 0-9 : opcode
The 8 bits of flag data are defined as follows:
bits 2-7: MBZ
bit 1 : value is inherit
bit 0 : value is important
The 14 bits of value are opcode-specific.
Parameters are opcode-specific. Each parameter must begin on a 4 byte boundary.
Datatype storage
----------------
All numeric values are stored in a 32bit wide field. This field contains
a fixed point value with 22 bits assigned to the integer part and 10 bits
assigned to the fractional part.
Strings are stored as a 32bit index into a table of interned string pointers.
The table is found in the stylesheet object.
CSS dimensions are stored as two 32bit values: <length, units>.
Length is a 32bit numeric value (as described above) and unit is as follows:
bit 8 clear => length unit
bits 9-31: MBZ
bits 0-7 :
00000000 => px
00000001 => ex
00000010 => em
00000011 => in
00000100 => cm
00000101 => mm
00000110 => pt
00000111 => pc
bit 8 set => percentage unit
bits 9-31: MBZ
bits 0-7 : MBZ
bit 9 set => angle unit
bits 10-31: MBZ
bit 8 : MBZ
bits 0-7 :
00000000 => deg
00000001 => grad
00000010 => rad
bit 10 set => time unit
bits 11-31: MBZ
bits 8-9 : MBZ
bits 0-7 :
00000000 => ms
00000001 => s
bit 11 set => frequency unit
bits 12-31: MBZ
bits 8-10 : MBZ
bits 0-7 :
00000000 => Hz
00000001 => kHz
CSS colours are stored as one 32bit value. See "Colour" for their format.
Shorthand properties
--------------------
The CSS shorthand properties are handled by decomposing them to their
component parts, and then creating bytecode for these.
For example, "background: red none no-repeat scroll left top !important;" would
be decomposed to:
background-color: red !important;
background-image: none !important;
background-repeat: no-repeat !important;
background-attachment: scroll !important;
background-position: left top !important;
and bytecode generated for each of these properties.
The full list of CSS 2.1 shorthand properties is:
background
border-color
border-style
border-{top,right,bottom,left}
border-width
border
cue
font
list-style
margin
outline
padding
pause
Opcodes
-------
00 - azimuth
<value> (14bits) :
bits 8-13: MBZ
bit 7 set => angle follows.
bits 0-6: MBZ
bit 6 set => relative movement:
bit 7 : MBZ
bits 1-5: MBZ
bit 0 : set => rightwards, clear => leftwards
bits 6 & 7 clear => keyword position:
bit 5 : set => behind, clear => in front
bits 0-4:
00000 => left-side
00001 => far-left
00010 => left
00011 => center-left
00100 => center
00101 => center-right
00110 => right
00111 => far-right
01000 => right-side
other => Reserved for future expansion.
01 - background-attachment
<value> (14bits) :
0 => fixed
1 => scroll
other => Reserved for future expansion.
02 - background-color
<value> (14bits) :
bit 8-13: MBZ
bit 7 set => colour follows.
bits 0-6: MBZ
bit 7 clear => keyword colour:
bits 0-6: 0000000 => transparent,
0000001 => currentColor,
other => rffe.
03 - background-image
<value> (14bits) :
bits 8-13: MBZ
bit 7 set => uri string follows.
bits 0-6: MBZ
bit 7 clear => keyword:
bits 1-6: MBZ
bit 0 : clear => none, set => rffe.
04 - background-position
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7: set => percentage or length unit follows
bits 4-6: MBZ
clear => keywords:
bits 4-6:
000 => center
001 => right
010 => left
other => rffe
bit 3: set => percentage or length unit follows
bits 0-2: MBZ
clear => keywords:
bits 0-2:
000 => center
001 => bottom
010 => top
other => rffe
05 - background-repeat
<value> (14bits) :
0 => no-repeat
1 => repeat-x
2 => repeat-y
3 => repeat
other => Reserved for future expansion.
06 - border-collapse
<value> (14bits) :
0 => separate
1 => collapse
other => Reserved for future expansion.
07 - border-spacing
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7: set => two lengths follow
bits 0-6: MBZ
clear => Reserved for future expansion.
bits 0-6: MBZ
08 - border-top-color
09 - border-right-color
0a - border-bottom-color
0b - border-left-color
<value> (14bits) :
bits 8-13: MBZ
bit 7 set => colour follows.
bits 0-6: MBZ
bit 7 clear => keyword colour:
bits 0-6: 0000000 => transparent,
0000001 => currentColor,
other => rffe.
0c - border-top-style
0d - border-right-style
0e - border-bottom-style
0f - border-left-style
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
00000000 => none,
00000001 => hidden,
00000010 => dotted,
00000011 => dashed,
00000100 => solid,
00000101 => double,
00000110 => groove,
00000111 => ridge,
00001000 => inset,
00001001 => outset,
other => Reserved for future expansion.
10 - border-top-width
11 - border-right-width
12 - border-bottom-width
13 - border-left-width
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => thin,
0000001 => medium,
0000010 => thick,
other => rffe.
14 - bottom
<value> (14bits) :
bits 8-13: MBZ
bits 0-7:
bit 7 set => length/percentage follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => auto,
other => rffe.
15 - caption-side
<value> (14bits) :
0 => top
1 => bottom
other => Reserved for future expansion.
16 - clear
<value> (14bits) :
0 => none
1 => left
2 => right
3 => both
other => Reserved for future expansion.
17 - clip
<value> (14bits) :
bits 8-13: MBZ
bits 0-7:
bit 7 set => shape follows
bits 0-2: 000 => rect,
bit 3 => top auto
bit 4 => right auto
bit 5 => bottom auto
bit 6 => left auto
other => rffe.
bits 3-6: MBZ.
bit 7 clear => keywords:
bits 0-6: 0000000 => auto,
other => rffe.
If the value is rect(top, right, bottom, left), then bits 3-6 encode
which of <top>, <right>, <bottom>, <left> is set to auto. The
subsequent parameter list is then 4 - <auto_side> entries long.
Each entry is a dimension. Entries are always ordered top, right,
bottom, left.
For example,
clip: rect(10px, auto, auto, 10px)
would produce the following bytecode:
<02c00017> <00002800> <00000000> <00002800> <00000000>
18 - color
<value> (14bits) :
bits 8-13: MBZ
bits 0-7:
bit 7: set => colour follows.
bits 0-6: MBZ.
clear => keywords:
bits 0-6: 0000000 => transparent,
0000001 => currentColor,
other => rffe.
19 - content
<value> (14bits) :
bits 8-13: MBZ (except counter & counters, see below)
bits 0-7 :
bit 7 set => string follows
bits 0-6: 0000000 => string,
0000001 => uri,
0000010 => counter,
bits 12-13: MBZ
bits 8-11 : list-style-type
0000011 => counters,
bits 12-13: MBZ
bits 8-11 : list-style-type
0000100 => attr,
other => rffe.
bit 7 clear => keywords:
bits 0-6: 0000000 => normal,
0000001 => none,
0000010 => open-quote,
0000011 => close-quote,
0000100 => no-open-quote,
0000101 => no-close-quote,
other => rffe.
If the value is not "normal", "none", or "inherit", then there is
a parameter list. Each item is preceded by a <value> word which
declares the type of the next item. The list is terminated by a
word with all bits set to zero (the encoding for "normal").
For example,
content: open-quote url('http://example.com/')
" : " attr(name) " " counter(x) "." counters(y, ".")
close-quote;"
would result in the following bytecode:
<00080019>
<00000081> <ptr to "http://example.com">
<00000080> <ptr to " : ">
<00000084> <ptr to "name">
<00000080> <ptr to " ">
<00000382> <ptr to "x">
<00000080> <ptr to ".">
<00000383> <ptr to "y"> <ptr to ".">
<00000003> <00000000>
1a - counter-increment
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => <string, integer> pair follows
bits 0-6: 0000000 => <string, integer> pair
other => rffe.
bit 7 clear => keywords:
bits 0-6: 0000000 => none,
other => rffe.
If the value is not "none", or "inherit", then there is a parameter
list. Each item is preceded by a <value> word which declares the type
of the next item. The list is terminated by a word with all bits set to
zero (the encoding for "none").
1b - counter-reset
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => <string, integer> pair follows
bits 0-6: 0000000 => <string, integer> pair,
other => rffe.
bit 7 clear => keywords:
bits 0-6: 0000000 => none,
other => rffe.
If the value is not "none", or "inherit", then there is a parameter
list. Each item is preceded by a <value> word which declares the type
of the next item. The list is terminated by a word with all bits set to
zero (the encoding for "none").
1c - cue-after
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => uri follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => none,
other => rffe.
1d - cue-before
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => uri follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => none,
other => rffe.
1e - cursor
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => uri follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => auto,
0000001 => crosshair,
0000010 => default,
0000011 => pointer,
0000100 => move,
0000101 => e-resize,
0000110 => ne-resize,
0000111 => nw-resize,
0001000 => n-resize,
0001001 => se-resize,
0001010 => sw-resize,
0001011 => s-resize,
0001100 => w-resize,
0001101 => text,
0001110 => wait,
0001111 => help,
0010000 => progress,
other => rffe.
If the value indicates that a uri is present, then there is a
parameter list. Each item is preceded by a <value> word which declares
the type of the next item. The list is terminated by a word with
bit 7 clear.
1f - direction
<value> (14bits) :
0 => ltr,
1 => rtl,
other => Reserved for future expansion.
20 - display
<value> (14bits) :
0 => inline,
1 => block,
2 => list-item,
3 => run-in,
4 => inline-block,
5 => table,
6 => inline-table,
7 => table-row-group,
8 => table-header-group,
9 => table-footer-group,
a => table-row,
b => table-column-group,
c => table-column,
d => table-cell,
e => table-caption,
f => none,
other => Reserved for future expansion.
21 - elevation
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => angle follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => below,
0000001 => level,
0000010 => above,
0000011 => higher,
0000100 => lower,
other => rffe.
22 - empty-cells
<value> (14bits) :
0 => show,
1 => hide,
other => Reserved for future expansion.
23 - float
<value> (14bits) :
0 => left,
1 => right,
2 => none,
other => Reserved for future expansion.
24 - font-family
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => data follows
bits 1-6: MBZ
bit 0 : clear => string,
set => ident list (as string)
bit 7 clear => keywords:
bits 0-6: 0000000 => Reserved.
0000001 => serif,
0000010 => sans-serif,
0000011 => cursive,
0000100 => fantasy,
0000101 => monospace,
other => rffe.
In all cases, there is a parameter list. Each item is preceded by a
<value> word which declares the type of the next item. The list is
terminated by a word with all bits clear.
25 - font-size
<value> (14bits) :
bits 8-13: MBZ
bits 0-7:
bit 7 set => dimension follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => xx-small,
0000001 => x-small,
0000010 => small,
0000011 => medium,
0000100 => large,
0000101 => x-large,
0000110 => xx-large,
0000111 => larger,
0001000 => smaller,
other => rffe.
26 - font-style
<value> (14bits) :
0 => normal,
1 => italic,
2 => oblique,
other => Reserved for future expansion.
27 - font-variant
<value> (14bits) :
0 => normal,
1 => small-caps,
other => Reserved for future expansion.
28 - font-weight
<value> (14bits) :
0 => normal,
1 => bold,
2 => bolder,
3 => lighter,
4 => 100,
5 => 200,
6 => 300,
7 => 400,
8 => 500,
9 => 600,
a => 700,
b => 800,
c => 900,
other => Reserved for future expansion.
29 - height
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length or percentage follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => auto,
other => rffe.
2a - left
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length or percentage follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => auto,
other => rffe.
2b - letter-spacing
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => normal,
other => rffe.
2c - line-height
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length/number/percentage follows
bits 0-6: 0000000 => number,
0000001 => dimension,
other => rffe.
bit 7 clear => keywords:
bits 0-6: 0000000 => normal,
other => rffe.
2d - list-style-image
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => string follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => none,
other => rffe.
2e - list-style-position
<value> (14bits) :
0 => inside,
1 => outside,
other => Reserved for future expansion.
2f - list-style-type
<value> (14bits) :
0 => disc,
1 => circle,
2 => square,
3 => decimal,
4 => decimal-leading-zero,
5 => lower-roman,
6 => upper-roman,
7 => lower-greek,
8 => lower-latin,
9 => upper-latin,
a => armenian,
b => georgian,
c => lower-alpha,
d => upper-alpha,
e => none,
other => Reserved for future expansion.
30 - margin-top
31 - margin-right
32 - margin-bottom
33 - margin-left
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length or percentage follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => auto,
other => rffe.
34 - max-height
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length or percentage follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => none,
other => rffe.
35 - max-width
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length or percentage follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => none,
other => rffe.
36 - min-height
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7: set => length or percentage follows
bits 0-6: MBZ
clear => Reserved for future expansion
bits 0-6: MBZ
37 - min-width
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7: set => length or percentage follows
bits 0-6: MBZ
clear => Reserved for future expansion
bits 0-6: MBZ
38 - orphans
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7: set => integer follows
bits 0-6: MBZ
clear => Reserved for future expansion
bits 0-6: MBZ
39 - outline-color
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => colour follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => transparent,
0000001 => currentColor,
0000010 => invert,
other => rffe.
3a - outline-style
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
00000000 => none,
00000001 => hidden,
00000010 => dotted,
00000011 => dashed,
00000100 => solid,
00000101 => double,
00000110 => groove,
00000111 => ridge,
00001000 => inset,
00001001 => outset,
other => Reserved for future expansion.
3b - outline-width
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => thin,
0000001 => medium,
0000010 => thick,
other => rffe.
3c - overflow
<value> (14bits) :
0 => visible,
1 => hidden,
2 => scroll,
3 => auto,
other => Reserved for future expansion.
3d - padding-top
3e - padding-right
3f - padding-bottom
40 - padding-left
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7: set => length or percentage follows
bits 0-6: MBZ
clear => Reserved for future expansion
bits 0-6: MBZ
41 - page-break-after
<value> (14bits) :
0 => auto,
1 => always,
2 => avoid,
3 => left,
4 => right,
other => Reserved for future expansion.
42 - page-break-before
<value> (14bits) :
0 => auto,
1 => always,
2 => avoid,
3 => left,
4 => right,
other => Reserved for future expansion.
43 - page-break-inside
<value> (14bits) :
0 => auto,
1 => avoid,
other => Reserved for future expansion.
44 - pause-after
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7: set => time or percentage follows
bits 0-6: MBZ
clear => Reserved for future expansion
bits 0-6: MBZ
45 - pause-before
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7: set => time or percentage follows
bits 0-6: MBZ
clear => Reserved for future expansion
bits 0-6: MBZ
46 - pitch-range
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7: set => number follows
bits 0-6: MBZ
clear => Reserved for future expansion
bits 0-6: MBZ
47 - pitch
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => frequency follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => x-low,
0000001 => low,
0000010 => medium,
0000011 => high,
0000100 => x-high,
other => rffe.
48 - play-during
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => string follows
bit 6: set => mix, clear => don't mix
bit 5: set => repeat, clear => no repeat
bits 0-4: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => auto,
0000001 => none,
other => rffe.
49 - position
<value> (14bits) :
0 => static,
1 => relative,
2 => absolute,
3 => fixed,
other => Reserved for future expansion.
4a - quotes
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => two strings follow
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => none,
other => rffe.
If the value indicates that strings are present, then there is a
parameter list. Each item is preceded by a <value> word which declares
the type of the next item. The list is terminated by a word with
all bits clear (the encoding for "none").
4b - richness
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7: set => number follows
bits 0-6: MBZ
clear => Reserved for future expansion
bits 0-6: MBZ
4c - right
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length or percentage follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => auto,
other => rffe.
4d - speak-header
<value> (14bits) :
0 => once,
1 => always,
other => Reserved for future expansion.
4e - speak-numeral
<value> (14bits) :
0 => digits,
1 => continuous,
other => Reserved for future expansion.
4f - speak-punctuation
<value> (14bits) :
0 => code,
1 => none,
other => Reserved for future expansion.
50 - speak
<value> (14bits) :
0 => normal,
1 => none,
2 => spell-out,
other => Reserved for future expansion.
51 - speech-rate
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => number follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => x-slow,
0000001 => slow,
0000010 => medium,
0000011 => fast,
0000100 => x-fast,
0000101 => faster,
0000110 => slower,
other => rffe.
52 - stress
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7: set => number follows
bits 0-6: MBZ
clear => Reserved for future expansion
bits 0-6: MBZ
53 - table-layout
<value> (14bits) :
0 => auto,
1 => fixed,
other => Reserved for future expansion.
54 - text-align
<value> (14bits) :
0 => left,
1 => right,
2 => center,
3 => justify,
4 => -libcss-left,
5 => -libcss-center,
6 => -libcss-right,
other => Reserved for future expansion.
55 - text-decoration
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
00000000 => none
otherwise:
bits 4-7: MBZ
bit 3: set => blink, clear => no blink
bit 2: set => line-through,
clear => no line-through
bit 1: set => overline, clear => no overline
bit 0: set => underline, clear => no underline
56 - text-indent
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7: set => length or percentage follows
bits 0-6: MBZ
clear => Reserved for future expansion
bits 0-6: MBZ
57 - text-transform
<value> (14bits) :
0 => capitalize,
1 => uppercase,
2 => lowercase,
3 => none,
other => Reserved for future expansion.
58 - top
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length or percentage follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => auto,
other => rffe.
59 - unicode-bidi
<value> (14bits) :
0 => normal,
1 => embed,
2 => bidi-override,
other => Reserved for future expansion.
5a - vertical-align
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length or percentage follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => baseline,
0000001 => sub,
0000010 => super,
0000011 => top,
0000100 => text-top,
0000101 => middle,
0000110 => bottom,
0000111 => text-bottom,
other => rffe.
5b - visibility
<value> (14bits) :
0 => visible,
1 => hidden,
2 => collapse,
other => Reserved for future expansion.
5c - voice-family
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => data follows
bits 1-6: MBZ
bit 0 : clear => string,
set => ident list (as string)
bit 7 clear => keywords:
bits 0-6: 0000000 => Reserved.
0000001 => male,
0000010 => female,
0000011 => child,
other => rffe.
In all cases, there is a parameter list. Each item is preceded by a
<value> word which declares the type of the next item. The list is
terminated by a word with all bits clear.
5d - volume
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => number/percentage follows
bits 0-6: 0000000 => number,
0000001 => dimension,
other => rffe.
bit 7 clear => keywords:
bits 0-6: 0000000 => silent,
0000001 => x-soft,
0000010 => soft,
0000011 => medium,
0000100 => loud,
0000101 => x-loud,
other => rffe.
5e - white-space
<value> (14bits) :
0 => normal,
1 => pre,
2 => nowrap,
3 => pre-wrap,
4 => pre-line,
other => Reserved for future expansion.
5f - widows
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7: set => integer follows
bits 0-6: MBZ
clear => Reserved for future expansion
bits 0-6: MBZ
60 - width
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length or percentage follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => auto,
other => rffe.
61 - word-spacing
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => normal,
other => rffe.
62 - z-index
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => integer follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => auto,
other => rffe.
63 - opacity
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => number follows
bits 0-6: MBZ
bit 7 clear => Reserved for future expansion
bits 0-6: MBZ
64 - break-after
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
00000000 => auto,
00000001 => always,
00000010 => avoid,
00000011 => left,
00000100 => right,
00000101 => page,
00000110 => column,
00000111 => avoid-page,
00001000 => avoid-column,
other => Reserved for future expansion.
65 - break-before
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
00000000 => auto,
00000001 => always,
00000010 => avoid,
00000011 => left,
00000100 => right,
00000101 => page,
00000110 => column,
00000111 => avoid-page,
00001000 => avoid-column,
other => Reserved for future expansion.
66 - break-inside
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
00000000 => auto,
00000001 => avoid,
00000010 => avoid-page,
00000011 => avoid-column,
other => Reserved for future expansion.
67 - column-count
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => integer follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => auto,
other => rffe.
68 - column-fill
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
00000000 => balance,
00000001 => auto,
other => Reserved for future expansion.
69 - column-gap
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => normal,
other => rffe.
6a - column-rule-color
<value> (14bits) :
bits 8-13: MBZ
bit 7 set => colour follows.
bits 0-6: MBZ
bit 7 clear => Reserved for future expansion
bits 0-6: MBZ
6b - column-rule-style
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
00000000 => none,
00000001 => hidden,
00000010 => dotted,
00000011 => dashed,
00000100 => solid,
00000101 => double,
00000110 => groove,
00000111 => ridge,
00001000 => inset,
00001001 => outset,
other => Reserved for future expansion.
6c - column-rule-width
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => thin,
0000001 => medium,
0000010 => thick,
other => rffe.
6d - column-span
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
00000000 => none,
00000001 => all,
other => Reserved for future expansion.
6e - column-width
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
bit 7 set => length follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => auto,
other => rffe.
6f-3ff - Reserved for future expansion.