Subversion Repositories Kolibri OS

Rev

Rev 3584 | Blame | Last modification | View Log | RSS feed

  1. CSS style declaration bytecode
  2. ==============================
  3.  
  4. Format
  5. ------
  6.  
  7. <opcode+flags+value> [<parameters>]
  8.  
  9. <opcode+flags+value> is 32 bits wide:
  10.         bits 18-31: value
  11.         bits 10-17 : flags
  12.         bits 0-9  : opcode
  13.  
  14. The 8 bits of flag data are defined as follows:
  15.         bits 2-7: MBZ
  16.         bit 1   : value is inherit
  17.         bit 0   : value is important
  18.  
  19. The 14 bits of value are opcode-specific.
  20.  
  21. Parameters are opcode-specific. Each parameter must begin on a 4 byte boundary.
  22.  
  23. Datatype storage
  24. ----------------
  25.  
  26. All numeric values are stored in a 32bit wide field. This field contains
  27. a fixed point value with 22 bits assigned to the integer part and 10 bits
  28. assigned to the fractional part.
  29.  
  30. Strings are stored as a 32bit index into a table of interned string pointers.
  31. The table is found in the stylesheet object.
  32.  
  33. CSS dimensions are stored as two 32bit values: <length, units>.
  34. Length is a 32bit numeric value (as described above) and unit is as follows:
  35.  
  36.         bit 8 clear => length unit
  37.                 bits 9-31: MBZ
  38.                 bits 0-7 :
  39.                         00000000 => px
  40.                         00000001 => ex
  41.                         00000010 => em
  42.                         00000011 => in
  43.                         00000100 => cm
  44.                         00000101 => mm
  45.                         00000110 => pt
  46.                         00000111 => pc
  47.  
  48.         bit 8 set => percentage unit
  49.                 bits 9-31: MBZ
  50.                 bits 0-7 : MBZ
  51.  
  52.         bit 9 set => angle unit
  53.                 bits 10-31: MBZ
  54.                 bit 8     : MBZ
  55.                 bits 0-7  :
  56.                         00000000 => deg
  57.                         00000001 => grad
  58.                         00000010 => rad
  59.  
  60.         bit 10 set => time unit
  61.                 bits 11-31: MBZ
  62.                 bits 8-9  : MBZ
  63.                 bits 0-7  :
  64.                         00000000 => ms
  65.                         00000001 => s
  66.  
  67.         bit 11 set => frequency unit
  68.                 bits 12-31: MBZ
  69.                 bits 8-10 : MBZ
  70.                 bits 0-7  :
  71.                         00000000 => Hz
  72.                         00000001 => kHz
  73.  
  74. CSS colours are stored as one 32bit value. See "Colour" for their format.
  75.  
  76. Shorthand properties
  77. --------------------
  78.  
  79. The CSS shorthand properties are handled by decomposing them to their
  80. component parts, and then creating bytecode for these.
  81.  
  82. For example, "background: red none no-repeat scroll left top !important;" would
  83. be decomposed to:
  84.  
  85.   background-color: red !important;
  86.   background-image: none !important;
  87.   background-repeat: no-repeat !important;
  88.   background-attachment: scroll !important;
  89.   background-position: left top !important;
  90.  
  91. and bytecode generated for each of these properties.
  92.  
  93. The full list of CSS 2.1 shorthand properties is:
  94.  
  95.   background
  96.   border-color
  97.   border-style
  98.   border-{top,right,bottom,left}
  99.   border-width
  100.   border
  101.   cue
  102.   font
  103.   list-style
  104.   margin
  105.   outline
  106.   padding
  107.   pause
  108.  
  109. Opcodes
  110. -------
  111.  
  112. 00 - azimuth
  113.         <value> (14bits) :
  114.                 bits 8-13: MBZ
  115.                 bit 7 set => angle follows.
  116.                         bits 0-6: MBZ
  117.                 bit 6 set => relative movement:
  118.                         bit 7   : MBZ
  119.                         bits 1-5: MBZ
  120.                         bit 0   : set => rightwards, clear => leftwards
  121.                 bits 6 & 7 clear => keyword position:
  122.                         bit 5   : set => behind, clear => in front
  123.                         bits 0-4:
  124.                                 00000  => left-side
  125.                                 00001  => far-left
  126.                                 00010  => left
  127.                                 00011  => center-left
  128.                                 00100  => center
  129.                                 00101  => center-right
  130.                                 00110  => right
  131.                                 00111  => far-right
  132.                                 01000  => right-side
  133.                                 other => Reserved for future expansion.
  134.  
  135. 01 - background-attachment
  136.         <value> (14bits) :
  137.                 0     => fixed
  138.                 1     => scroll
  139.                 other => Reserved for future expansion.
  140.  
  141. 02 - background-color
  142.         <value> (14bits) :
  143.                 bit 8-13: MBZ
  144.                 bit 7 set => colour follows.
  145.                         bits 0-6: MBZ
  146.                 bit 7 clear => keyword colour:
  147.                         bits 0-6: 0000000 => transparent,
  148.                                   0000001 => currentColor,
  149.                                   other   => rffe.
  150.  
  151. 03 - background-image
  152.         <value> (14bits) :
  153.                 bits 8-13: MBZ
  154.                 bit 7 set => uri string follows.
  155.                         bits 0-6: MBZ
  156.                 bit 7 clear => keyword:
  157.                         bits 1-6: MBZ
  158.                         bit 0   : clear => none, set => rffe.
  159.  
  160. 04 - background-position
  161.         <value> (14bits) :
  162.                 bits 8-13: MBZ
  163.                 bits 0-7 :
  164.                         bit 7: set => percentage or length unit follows
  165.                                         bits 4-6: MBZ
  166.                                clear => keywords:
  167.                                         bits 4-6:
  168.                                                 000   => center
  169.                                                 001   => right
  170.                                                 010   => left
  171.                                                 other => rffe
  172.                         bit 3: set => percentage or length unit follows
  173.                                         bits 0-2: MBZ
  174.                                clear => keywords:
  175.                                         bits 0-2:
  176.                                                 000   => center
  177.                                                 001   => bottom
  178.                                                 010   => top
  179.                                                 other => rffe
  180.  
  181. 05 - background-repeat
  182.         <value> (14bits) :
  183.                 0     => no-repeat
  184.                 1     => repeat-x
  185.                 2     => repeat-y
  186.                 3     => repeat
  187.                 other => Reserved for future expansion.
  188.  
  189. 06 - border-collapse
  190.         <value> (14bits) :
  191.                 0     => separate
  192.                 1     => collapse
  193.                 other => Reserved for future expansion.
  194.  
  195. 07 - border-spacing
  196.         <value> (14bits) :
  197.                 bits 8-13: MBZ
  198.                 bits 0-7 :
  199.                         bit 7: set => two lengths follow
  200.                                         bits 0-6: MBZ
  201.                                clear => Reserved for future expansion.
  202.                                         bits 0-6: MBZ
  203.  
  204. 08 - border-top-color
  205. 09 - border-right-color
  206. 0a - border-bottom-color
  207. 0b - border-left-color
  208.         <value> (14bits) :
  209.                 bits 8-13: MBZ
  210.                 bit 7 set => colour follows.
  211.                         bits 0-6: MBZ
  212.                 bit 7 clear => keyword colour:
  213.                         bits 0-6: 0000000 => transparent,
  214.                                   0000001 => currentColor,
  215.                                   other   => rffe.
  216.  
  217. 0c - border-top-style
  218. 0d - border-right-style
  219. 0e - border-bottom-style
  220. 0f - border-left-style
  221.         <value> (14bits) :
  222.                 bits 8-13: MBZ
  223.                 bits 0-7 :
  224.                         00000000 => none,
  225.                         00000001 => hidden,
  226.                         00000010 => dotted,
  227.                         00000011 => dashed,
  228.                         00000100 => solid,
  229.                         00000101 => double,
  230.                         00000110 => groove,
  231.                         00000111 => ridge,
  232.                         00001000 => inset,
  233.                         00001001 => outset,
  234.                         other    => Reserved for future expansion.
  235.  
  236. 10 - border-top-width
  237. 11 - border-right-width
  238. 12 - border-bottom-width
  239. 13 - border-left-width
  240.         <value> (14bits) :
  241.                 bits 8-13: MBZ
  242.                 bits 0-7 :
  243.                         bit 7 set => length follows
  244.                                 bits 0-6: MBZ
  245.                         bit 7 clear => keywords:
  246.                                 bits 0-6: 0000000 => thin,
  247.                                           0000001 => medium,
  248.                                           0000010 => thick,
  249.                                           other   => rffe.
  250.  
  251. 14 - bottom
  252.         <value> (14bits) :
  253.                 bits 8-13: MBZ
  254.                 bits 0-7:
  255.                         bit 7 set => length/percentage follows
  256.                                 bits 0-6: MBZ
  257.                         bit 7 clear => keywords:
  258.                                 bits 0-6: 0000000 => auto,
  259.                                           other   => rffe.
  260.  
  261. 15 - caption-side
  262.         <value> (14bits) :
  263.                 0     => top
  264.                 1     => bottom
  265.                 other => Reserved for future expansion.
  266.  
  267. 16 - clear
  268.         <value> (14bits) :
  269.                 0     => none
  270.                 1     => left
  271.                 2     => right
  272.                 3     => both
  273.                 other => Reserved for future expansion.
  274.  
  275. 17 - clip
  276.         <value> (14bits) :
  277.                 bits 8-13: MBZ
  278.                 bits 0-7:
  279.                         bit 7 set => shape follows
  280.                                 bits 0-2: 000   => rect,
  281.                                                    bit 3 => top auto
  282.                                                    bit 4 => right auto
  283.                                                    bit 5 => bottom auto
  284.                                                    bit 6 => left auto
  285.                                           other => rffe.
  286.                                                    bits 3-6: MBZ.
  287.                                
  288.                         bit 7 clear => keywords:
  289.                                 bits 0-6: 0000000 => auto,
  290.                                           other   => rffe.
  291.  
  292.         If the value is rect(top, right, bottom, left), then bits 3-6 encode
  293.         which of <top>, <right>, <bottom>, <left> is set to auto. The
  294.         subsequent parameter list is then 4 - <auto_side> entries long.
  295.         Each entry is a dimension. Entries are always ordered top, right,
  296.         bottom, left.
  297.  
  298.         For example,
  299.                 clip: rect(10px, auto, auto, 10px)
  300.         would produce the following bytecode:
  301.  
  302.         <02c00017> <00002800> <00000000> <00002800> <00000000>
  303.  
  304. 18 - color
  305.         <value> (14bits) :
  306.                 bits 8-13: MBZ
  307.                 bits 0-7:
  308.                         bit 7: set => colour follows.
  309.                                         bits 0-6: MBZ.
  310.                                clear => keywords:
  311.                                         bits 0-6: 0000000 => transparent,
  312.                                                   0000001 => currentColor,
  313.                                                   other   => rffe.
  314.  
  315. 19 - content
  316.         <value> (14bits) :
  317.                 bits 8-13: MBZ (except counter & counters, see below)
  318.                 bits 0-7 :
  319.                         bit 7 set => string follows
  320.                                 bits 0-6: 0000000 => string,
  321.                                           0000001 => uri,
  322.                                           0000010 => counter,
  323.                                                      bits 12-13: MBZ
  324.                                                      bits 8-11 : list-style-type
  325.                                           0000011 => counters,
  326.                                                      bits 12-13: MBZ
  327.                                                      bits 8-11 : list-style-type
  328.                                           0000100 => attr,
  329.                                           other   => rffe.
  330.                         bit 7 clear => keywords:
  331.                                 bits 0-6: 0000000 => normal,
  332.                                           0000001 => none,
  333.                                           0000010 => open-quote,
  334.                                           0000011 => close-quote,
  335.                                           0000100 => no-open-quote,
  336.                                           0000101 => no-close-quote,
  337.                                           other   => rffe.
  338.  
  339.         If the value is not "normal", "none", or "inherit", then there is
  340.         a parameter list. Each item is preceded by a <value> word which
  341.         declares the type of the next item. The list is terminated by a
  342.         word with all bits set to zero (the encoding for "normal").
  343.  
  344.         For example,
  345.                 content: open-quote url('http://example.com/')
  346.                          " : " attr(name) " " counter(x) "." counters(y, ".")
  347.                          close-quote;"
  348.         would result in the following bytecode:
  349.  
  350.         <00080019>
  351.         <00000081> <ptr to "http://example.com">
  352.         <00000080> <ptr to " : ">
  353.         <00000084> <ptr to "name">
  354.         <00000080> <ptr to " ">
  355.         <00000382> <ptr to "x">
  356.         <00000080> <ptr to ".">
  357.         <00000383> <ptr to "y"> <ptr to ".">
  358.         <00000003> <00000000>
  359.  
  360. 1a - counter-increment
  361.         <value> (14bits) :
  362.                 bits 8-13: MBZ
  363.                 bits 0-7 :
  364.                         bit 7 set => <string, integer> pair follows
  365.                                 bits 0-6: 0000000 => <string, integer> pair
  366.                                           other   => rffe.
  367.                         bit 7 clear => keywords:
  368.                                 bits 0-6: 0000000 => none,
  369.                                           other   => rffe.
  370.  
  371.         If the value is not "none", or "inherit", then there is a parameter
  372.         list. Each item is preceded by a <value> word which declares the type
  373.         of the next item. The list is terminated by a word with all bits set to
  374.         zero (the encoding for "none").
  375.  
  376. 1b - counter-reset
  377.         <value> (14bits) :
  378.                 bits 8-13: MBZ
  379.                 bits 0-7 :
  380.                         bit 7 set => <string, integer> pair follows
  381.                                 bits 0-6: 0000000 => <string, integer> pair,
  382.                                           other   => rffe.
  383.                         bit 7 clear => keywords:
  384.                                 bits 0-6: 0000000 => none,
  385.                                           other   => rffe.
  386.  
  387.         If the value is not "none", or "inherit", then there is a parameter
  388.         list. Each item is preceded by a <value> word which declares the type
  389.         of the next item. The list is terminated by a word with all bits set to
  390.         zero (the encoding for "none").
  391.  
  392. 1c - cue-after
  393.         <value> (14bits) :
  394.                 bits 8-13: MBZ
  395.                 bits 0-7 :
  396.                         bit 7 set => uri follows
  397.                                 bits 0-6: MBZ
  398.                         bit 7 clear => keywords:
  399.                                 bits 0-6: 0000000 => none,
  400.                                           other   => rffe.
  401.  
  402. 1d - cue-before
  403.         <value> (14bits) :
  404.                 bits 8-13: MBZ
  405.                 bits 0-7 :
  406.                         bit 7 set => uri follows
  407.                                 bits 0-6: MBZ
  408.                         bit 7 clear => keywords:
  409.                                 bits 0-6: 0000000 => none,
  410.                                           other   => rffe.
  411.  
  412. 1e - cursor
  413.         <value> (14bits) :
  414.                 bits 8-13: MBZ
  415.                 bits 0-7 :
  416.                         bit 7 set => uri follows
  417.                                 bits 0-6: MBZ
  418.                         bit 7 clear => keywords:
  419.                                 bits 0-6: 0000000 => auto,
  420.                                           0000001 => crosshair,
  421.                                           0000010 => default,
  422.                                           0000011 => pointer,
  423.                                           0000100 => move,
  424.                                           0000101 => e-resize,
  425.                                           0000110 => ne-resize,
  426.                                           0000111 => nw-resize,
  427.                                           0001000 => n-resize,
  428.                                           0001001 => se-resize,
  429.                                           0001010 => sw-resize,
  430.                                           0001011 => s-resize,
  431.                                           0001100 => w-resize,
  432.                                           0001101 => text,
  433.                                           0001110 => wait,
  434.                                           0001111 => help,
  435.                                           0010000 => progress,
  436.                                           other   => rffe.
  437.  
  438.         If the value indicates that a uri is present, then there is a
  439.         parameter list. Each item is preceded by a <value> word which declares
  440.         the type of the next item. The list is terminated by a word with
  441.         bit 7 clear.
  442.  
  443. 1f - direction
  444.         <value> (14bits) :
  445.                 0     => ltr,
  446.                 1     => rtl,
  447.                 other => Reserved for future expansion.
  448.  
  449. 20 - display
  450.         <value> (14bits) :
  451.                 0     => inline,
  452.                 1     => block,
  453.                 2     => list-item,
  454.                 3     => run-in,
  455.                 4     => inline-block,
  456.                 5     => table,
  457.                 6     => inline-table,
  458.                 7     => table-row-group,
  459.                 8     => table-header-group,
  460.                 9     => table-footer-group,
  461.                 a     => table-row,
  462.                 b     => table-column-group,
  463.                 c     => table-column,
  464.                 d     => table-cell,
  465.                 e     => table-caption,
  466.                 f     => none,
  467.                 other => Reserved for future expansion.
  468.  
  469. 21 - elevation
  470.         <value> (14bits) :
  471.                 bits 8-13: MBZ
  472.                 bits 0-7 :
  473.                         bit 7 set => angle follows
  474.                                 bits 0-6: MBZ
  475.                         bit 7 clear => keywords:
  476.                                 bits 0-6: 0000000 => below,
  477.                                           0000001 => level,
  478.                                           0000010 => above,
  479.                                           0000011 => higher,
  480.                                           0000100 => lower,
  481.                                           other   => rffe.
  482.  
  483. 22 - empty-cells
  484.         <value> (14bits) :
  485.                 0     => show,
  486.                 1     => hide,
  487.                 other => Reserved for future expansion.
  488.  
  489. 23 - float
  490.         <value> (14bits) :
  491.                 0     => left,
  492.                 1     => right,
  493.                 2     => none,
  494.                 other => Reserved for future expansion.
  495.  
  496. 24 - font-family
  497.         <value> (14bits) :
  498.                 bits 8-13: MBZ
  499.                 bits 0-7 :
  500.                         bit 7 set => data follows
  501.                                 bits 1-6: MBZ
  502.                                 bit  0  : clear => string,
  503.                                           set => ident list (as string)
  504.                         bit 7 clear => keywords:
  505.                                 bits 0-6: 0000000 => Reserved.
  506.                                           0000001 => serif,
  507.                                           0000010 => sans-serif,
  508.                                           0000011 => cursive,
  509.                                           0000100 => fantasy,
  510.                                           0000101 => monospace,
  511.                                           other   => rffe.
  512.  
  513.         In all cases, there is a parameter list. Each item is preceded by a
  514.         <value> word which declares the type of the next item. The list is
  515.         terminated by a word with all bits clear.
  516.  
  517. 25 - font-size
  518.         <value> (14bits) :
  519.                 bits 8-13: MBZ
  520.                 bits 0-7:
  521.                         bit 7 set => dimension follows
  522.                                 bits 0-6: MBZ
  523.                         bit 7 clear => keywords:
  524.                                 bits 0-6: 0000000 => xx-small,
  525.                                           0000001 => x-small,
  526.                                           0000010 => small,
  527.                                           0000011 => medium,
  528.                                           0000100 => large,
  529.                                           0000101 => x-large,
  530.                                           0000110 => xx-large,
  531.                                           0000111 => larger,
  532.                                           0001000 => smaller,
  533.                                           other   => rffe.
  534.  
  535. 26 - font-style
  536.         <value> (14bits) :
  537.                 0     => normal,
  538.                 1     => italic,
  539.                 2     => oblique,
  540.                 other => Reserved for future expansion.
  541.  
  542. 27 - font-variant
  543.         <value> (14bits) :
  544.                 0     => normal,
  545.                 1     => small-caps,
  546.                 other => Reserved for future expansion.
  547.  
  548. 28 - font-weight
  549.         <value> (14bits) :
  550.                 0     => normal,
  551.                 1     => bold,
  552.                 2     => bolder,
  553.                 3     => lighter,
  554.                 4     => 100,
  555.                 5     => 200,
  556.                 6     => 300,
  557.                 7     => 400,
  558.                 8     => 500,
  559.                 9     => 600,
  560.                 a     => 700,
  561.                 b     => 800,
  562.                 c     => 900,
  563.                 other => Reserved for future expansion.
  564.  
  565. 29 - height
  566.         <value> (14bits) :
  567.                 bits 8-13: MBZ
  568.                 bits 0-7 :
  569.                         bit 7 set => length or percentage follows
  570.                                 bits 0-6: MBZ
  571.                         bit 7 clear => keywords:
  572.                                 bits 0-6: 0000000 => auto,
  573.                                           other   => rffe.
  574.  
  575. 2a - left
  576.         <value> (14bits) :
  577.                 bits 8-13: MBZ
  578.                 bits 0-7 :
  579.                         bit 7 set => length or percentage follows
  580.                                 bits 0-6: MBZ
  581.                         bit 7 clear => keywords:
  582.                                 bits 0-6: 0000000 => auto,
  583.                                           other   => rffe.
  584.  
  585. 2b - letter-spacing
  586.         <value> (14bits) :
  587.                 bits 8-13: MBZ
  588.                 bits 0-7 :
  589.                         bit 7 set => length follows
  590.                                 bits 0-6: MBZ
  591.                         bit 7 clear => keywords:
  592.                                 bits 0-6: 0000000 => normal,
  593.                                           other   => rffe.
  594.  
  595. 2c - line-height
  596.         <value> (14bits) :
  597.                 bits 8-13: MBZ
  598.                 bits 0-7 :
  599.                         bit 7 set => length/number/percentage follows
  600.                                 bits 0-6: 0000000 => number,
  601.                                           0000001 => dimension,
  602.                                           other   => rffe.
  603.                         bit 7 clear => keywords:
  604.                                 bits 0-6: 0000000 => normal,
  605.                                           other   => rffe.
  606.  
  607. 2d - list-style-image
  608.         <value> (14bits) :
  609.                 bits 8-13: MBZ
  610.                 bits 0-7 :
  611.                         bit 7 set => string follows
  612.                                 bits 0-6: MBZ
  613.                         bit 7 clear => keywords:
  614.                                 bits 0-6: 0000000 => none,
  615.                                           other   => rffe.
  616.  
  617. 2e - list-style-position
  618.         <value> (14bits) :
  619.                 0     => inside,
  620.                 1     => outside,
  621.                 other => Reserved for future expansion.
  622.  
  623. 2f - list-style-type
  624.         <value> (14bits) :
  625.                 0     => disc,
  626.                 1     => circle,
  627.                 2     => square,
  628.                 3     => decimal,
  629.                 4     => decimal-leading-zero,
  630.                 5     => lower-roman,
  631.                 6     => upper-roman,
  632.                 7     => lower-greek,
  633.                 8     => lower-latin,
  634.                 9     => upper-latin,
  635.                 a     => armenian,
  636.                 b     => georgian,
  637.                 c     => lower-alpha,
  638.                 d     => upper-alpha,
  639.                 e     => none,
  640.                 other => Reserved for future expansion.
  641.  
  642. 30 - margin-top
  643. 31 - margin-right
  644. 32 - margin-bottom
  645. 33 - margin-left
  646.         <value> (14bits) :
  647.                 bits 8-13: MBZ
  648.                 bits 0-7 :
  649.                         bit 7 set => length or percentage follows
  650.                                 bits 0-6: MBZ
  651.                         bit 7 clear => keywords:
  652.                                 bits 0-6: 0000000 => auto,
  653.                                           other   => rffe.
  654.  
  655. 34 - max-height
  656.         <value> (14bits) :
  657.                 bits 8-13: MBZ
  658.                 bits 0-7 :
  659.                         bit 7 set => length or percentage follows
  660.                                 bits 0-6: MBZ
  661.                         bit 7 clear => keywords:
  662.                                 bits 0-6: 0000000 => none,
  663.                                           other   => rffe.
  664.  
  665. 35 - max-width
  666.         <value> (14bits) :
  667.                 bits 8-13: MBZ
  668.                 bits 0-7 :
  669.                         bit 7 set => length or percentage follows
  670.                                 bits 0-6: MBZ
  671.                         bit 7 clear => keywords:
  672.                                 bits 0-6: 0000000 => none,
  673.                                           other   => rffe.
  674.  
  675. 36 - min-height
  676.         <value> (14bits) :
  677.                 bits 8-13: MBZ
  678.                 bits 0-7 :
  679.                         bit 7: set => length or percentage follows
  680.                                         bits 0-6: MBZ
  681.                                clear => Reserved for future expansion
  682.                                         bits 0-6: MBZ
  683.  
  684. 37 - min-width
  685.         <value> (14bits) :
  686.                 bits 8-13: MBZ
  687.                 bits 0-7 :
  688.                         bit 7: set => length or percentage follows
  689.                                         bits 0-6: MBZ
  690.                                clear => Reserved for future expansion
  691.                                         bits 0-6: MBZ
  692.  
  693. 38 - orphans
  694.         <value> (14bits) :
  695.                 bits 8-13: MBZ
  696.                 bits 0-7 :
  697.                         bit 7: set => integer follows
  698.                                         bits 0-6: MBZ
  699.                                clear => Reserved for future expansion
  700.                                         bits 0-6: MBZ
  701.  
  702. 39 - outline-color
  703.         <value> (14bits) :
  704.                 bits 8-13: MBZ
  705.                 bits 0-7 :
  706.                         bit 7 set => colour follows
  707.                                 bits 0-6: MBZ
  708.                         bit 7 clear => keywords:
  709.                                 bits 0-6: 0000000 => transparent,
  710.                                           0000001 => currentColor,
  711.                                           0000010 => invert,
  712.                                           other   => rffe.
  713.  
  714. 3a - outline-style
  715.         <value> (14bits) :
  716.                 bits 8-13: MBZ
  717.                 bits 0-7 :
  718.                         00000000 => none,
  719.                         00000001 => hidden,
  720.                         00000010 => dotted,
  721.                         00000011 => dashed,
  722.                         00000100 => solid,
  723.                         00000101 => double,
  724.                         00000110 => groove,
  725.                         00000111 => ridge,
  726.                         00001000 => inset,
  727.                         00001001 => outset,
  728.                         other    => Reserved for future expansion.
  729.  
  730. 3b - outline-width
  731.         <value> (14bits) :
  732.                 bits 8-13: MBZ
  733.                 bits 0-7 :
  734.                         bit 7 set => length follows
  735.                                 bits 0-6: MBZ
  736.                         bit 7 clear => keywords:
  737.                                 bits 0-6: 0000000 => thin,
  738.                                           0000001 => medium,
  739.                                           0000010 => thick,
  740.                                           other   => rffe.
  741.  
  742. 3c - overflow
  743.         <value> (14bits) :
  744.                 0     => visible,
  745.                 1     => hidden,
  746.                 2     => scroll,
  747.                 3     => auto,
  748.                 other => Reserved for future expansion.
  749.  
  750. 3d - padding-top
  751. 3e - padding-right
  752. 3f - padding-bottom
  753. 40 - padding-left
  754.         <value> (14bits) :
  755.                 bits 8-13: MBZ
  756.                 bits 0-7 :
  757.                         bit 7: set => length or percentage follows
  758.                                         bits 0-6: MBZ
  759.                                clear => Reserved for future expansion
  760.                                         bits 0-6: MBZ
  761.  
  762. 41 - page-break-after
  763.         <value> (14bits) :
  764.                 0     => auto,
  765.                 1     => always,
  766.                 2     => avoid,
  767.                 3     => left,
  768.                 4     => right,
  769.                 other => Reserved for future expansion.
  770.  
  771. 42 - page-break-before
  772.         <value> (14bits) :
  773.                 0     => auto,
  774.                 1     => always,
  775.                 2     => avoid,
  776.                 3     => left,
  777.                 4     => right,
  778.                 other => Reserved for future expansion.
  779.  
  780. 43 - page-break-inside
  781.         <value> (14bits) :
  782.                 0     => auto,
  783.                 1     => avoid,
  784.                 other => Reserved for future expansion.
  785.  
  786. 44 - pause-after
  787.         <value> (14bits) :
  788.                 bits 8-13: MBZ
  789.                 bits 0-7 :
  790.                         bit 7: set => time or percentage follows
  791.                                         bits 0-6: MBZ
  792.                                clear => Reserved for future expansion
  793.                                         bits 0-6: MBZ
  794.  
  795. 45 - pause-before
  796.         <value> (14bits) :
  797.                 bits 8-13: MBZ
  798.                 bits 0-7 :
  799.                         bit 7: set => time or percentage follows
  800.                                         bits 0-6: MBZ
  801.                                clear => Reserved for future expansion
  802.                                         bits 0-6: MBZ
  803.  
  804. 46 - pitch-range
  805.         <value> (14bits) :
  806.                 bits 8-13: MBZ
  807.                 bits 0-7 :
  808.                         bit 7: set => number follows
  809.                                         bits 0-6: MBZ
  810.                                clear => Reserved for future expansion
  811.                                         bits 0-6: MBZ
  812.  
  813. 47 - pitch
  814.         <value> (14bits) :
  815.                 bits 8-13: MBZ
  816.                 bits 0-7 :
  817.                         bit 7 set => frequency follows
  818.                                 bits 0-6: MBZ
  819.                         bit 7 clear => keywords:
  820.                                 bits 0-6: 0000000 => x-low,
  821.                                           0000001 => low,
  822.                                           0000010 => medium,
  823.                                           0000011 => high,
  824.                                           0000100 => x-high,
  825.                                           other   => rffe.
  826.  
  827. 48 - play-during
  828.         <value> (14bits) :
  829.                 bits 8-13: MBZ
  830.                 bits 0-7 :
  831.                         bit 7 set => string follows
  832.                                 bit 6: set => mix, clear => don't mix
  833.                                 bit 5: set => repeat, clear => no repeat
  834.                                 bits 0-4: MBZ
  835.                         bit 7 clear => keywords:
  836.                                 bits 0-6: 0000000 => auto,
  837.                                           0000001 => none,
  838.                                           other   => rffe.
  839.  
  840. 49 - position
  841.         <value> (14bits) :
  842.                 0     => static,
  843.                 1     => relative,
  844.                 2     => absolute,
  845.                 3     => fixed,
  846.                 other => Reserved for future expansion.
  847.  
  848. 4a - quotes
  849.         <value> (14bits) :
  850.                 bits 8-13: MBZ
  851.                 bits 0-7 :
  852.                         bit 7 set => two strings follow
  853.                                 bits 0-6: MBZ
  854.                         bit 7 clear => keywords:
  855.                                 bits 0-6: 0000000 => none,
  856.                                           other   => rffe.
  857.  
  858.         If the value indicates that strings are present, then there is a
  859.         parameter list. Each item is preceded by a <value> word which declares
  860.         the type of the next item. The list is terminated by a word with
  861.         all bits clear (the encoding for "none").
  862.  
  863. 4b - richness
  864.         <value> (14bits) :
  865.                 bits 8-13: MBZ
  866.                 bits 0-7 :
  867.                         bit 7: set => number follows
  868.                                         bits 0-6: MBZ
  869.                                clear => Reserved for future expansion
  870.                                         bits 0-6: MBZ
  871.  
  872. 4c - right
  873.         <value> (14bits) :
  874.                 bits 8-13: MBZ
  875.                 bits 0-7 :
  876.                         bit 7 set => length or percentage follows
  877.                                 bits 0-6: MBZ
  878.                         bit 7 clear => keywords:
  879.                                 bits 0-6: 0000000 => auto,
  880.                                           other   => rffe.
  881.  
  882. 4d - speak-header
  883.         <value> (14bits) :
  884.                 0     => once,
  885.                 1     => always,
  886.                 other => Reserved for future expansion.
  887.  
  888. 4e - speak-numeral
  889.         <value> (14bits) :
  890.                 0     => digits,
  891.                 1     => continuous,
  892.                 other => Reserved for future expansion.
  893.  
  894. 4f - speak-punctuation
  895.         <value> (14bits) :
  896.                 0     => code,
  897.                 1     => none,
  898.                 other => Reserved for future expansion.
  899.  
  900. 50 - speak
  901.         <value> (14bits) :
  902.                 0     => normal,
  903.                 1     => none,
  904.                 2     => spell-out,
  905.                 other => Reserved for future expansion.
  906.  
  907. 51 - speech-rate
  908.         <value> (14bits) :
  909.                 bits 8-13: MBZ
  910.                 bits 0-7 :
  911.                         bit 7 set => number follows
  912.                                 bits 0-6: MBZ
  913.                         bit 7 clear => keywords:
  914.                                 bits 0-6: 0000000 => x-slow,
  915.                                           0000001 => slow,
  916.                                           0000010 => medium,
  917.                                           0000011 => fast,
  918.                                           0000100 => x-fast,
  919.                                           0000101 => faster,
  920.                                           0000110 => slower,
  921.                                           other   => rffe.
  922.  
  923. 52 - stress
  924.         <value> (14bits) :
  925.                 bits 8-13: MBZ
  926.                 bits 0-7 :
  927.                         bit 7: set => number follows
  928.                                         bits 0-6: MBZ
  929.                                clear => Reserved for future expansion
  930.                                         bits 0-6: MBZ
  931.  
  932. 53 - table-layout
  933.         <value> (14bits) :
  934.                 0     => auto,
  935.                 1     => fixed,
  936.                 other => Reserved for future expansion.
  937.  
  938. 54 - text-align
  939.         <value> (14bits) :
  940.                 0     => left,
  941.                 1     => right,
  942.                 2     => center,
  943.                 3     => justify,
  944.                 4     => -libcss-left,
  945.                 5     => -libcss-center,
  946.                 6     => -libcss-right,
  947.                 other => Reserved for future expansion.
  948.  
  949. 55 - text-decoration
  950.         <value> (14bits) :
  951.                 bits 8-13: MBZ
  952.                 bits 0-7 :
  953.                         00000000 => none
  954.                         otherwise:
  955.                                 bits 4-7: MBZ
  956.                                 bit 3: set => blink, clear => no blink
  957.                                 bit 2: set => line-through,
  958.                                        clear => no line-through
  959.                                 bit 1: set => overline, clear => no overline
  960.                                 bit 0: set => underline, clear => no underline
  961.  
  962. 56 - text-indent
  963.         <value> (14bits) :
  964.                 bits 8-13: MBZ
  965.                 bits 0-7 :
  966.                         bit 7: set => length or percentage follows
  967.                                         bits 0-6: MBZ
  968.                                clear => Reserved for future expansion
  969.                                         bits 0-6: MBZ
  970.  
  971. 57 - text-transform
  972.         <value> (14bits) :
  973.                 0     => capitalize,
  974.                 1     => uppercase,
  975.                 2     => lowercase,
  976.                 3     => none,
  977.                 other => Reserved for future expansion.
  978.  
  979. 58 - top
  980.         <value> (14bits) :
  981.                 bits 8-13: MBZ
  982.                 bits 0-7 :
  983.                         bit 7 set => length or percentage follows
  984.                                 bits 0-6: MBZ
  985.                         bit 7 clear => keywords:
  986.                                 bits 0-6: 0000000 => auto,
  987.                                           other   => rffe.
  988.  
  989. 59 - unicode-bidi
  990.         <value> (14bits) :
  991.                 0     => normal,
  992.                 1     => embed,
  993.                 2     => bidi-override,
  994.                 other => Reserved for future expansion.
  995.  
  996. 5a - vertical-align
  997.         <value> (14bits) :
  998.                 bits 8-13: MBZ
  999.                 bits 0-7 :
  1000.                         bit 7 set => length or percentage follows
  1001.                                 bits 0-6: MBZ
  1002.                         bit 7 clear => keywords:
  1003.                                 bits 0-6: 0000000 => baseline,
  1004.                                           0000001 => sub,
  1005.                                           0000010 => super,
  1006.                                           0000011 => top,
  1007.                                           0000100 => text-top,
  1008.                                           0000101 => middle,
  1009.                                           0000110 => bottom,
  1010.                                           0000111 => text-bottom,
  1011.                                           other   => rffe.
  1012.  
  1013. 5b - visibility
  1014.         <value> (14bits) :
  1015.                 0     => visible,
  1016.                 1     => hidden,
  1017.                 2     => collapse,
  1018.                 other => Reserved for future expansion.
  1019.  
  1020. 5c - voice-family
  1021.         <value> (14bits) :
  1022.                 bits 8-13: MBZ
  1023.                 bits 0-7 :
  1024.                         bit 7 set => data follows
  1025.                                 bits 1-6: MBZ
  1026.                                 bit  0  : clear => string,
  1027.                                           set => ident list (as string)
  1028.                         bit 7 clear => keywords:
  1029.                                 bits 0-6: 0000000 => Reserved.
  1030.                                           0000001 => male,
  1031.                                           0000010 => female,
  1032.                                           0000011 => child,
  1033.                                           other   => rffe.
  1034.  
  1035.         In all cases, there is a parameter list. Each item is preceded by a
  1036.         <value> word which declares the type of the next item. The list is
  1037.         terminated by a word with all bits clear.
  1038.        
  1039. 5d - volume
  1040.         <value> (14bits) :
  1041.                 bits 8-13: MBZ
  1042.                 bits 0-7 :
  1043.                         bit 7 set => number/percentage follows
  1044.                                 bits 0-6: 0000000 => number,
  1045.                                           0000001 => dimension,
  1046.                                           other   => rffe.
  1047.                         bit 7 clear => keywords:
  1048.                                 bits 0-6: 0000000 => silent,
  1049.                                           0000001 => x-soft,
  1050.                                           0000010 => soft,
  1051.                                           0000011 => medium,
  1052.                                           0000100 => loud,
  1053.                                           0000101 => x-loud,
  1054.                                           other   => rffe.
  1055.  
  1056. 5e - white-space
  1057.         <value> (14bits) :
  1058.                 0     => normal,
  1059.                 1     => pre,
  1060.                 2     => nowrap,
  1061.                 3     => pre-wrap,
  1062.                 4     => pre-line,
  1063.                 other => Reserved for future expansion.
  1064.  
  1065. 5f - widows
  1066.         <value> (14bits) :
  1067.                 bits 8-13: MBZ
  1068.                 bits 0-7 :
  1069.                         bit 7: set => integer follows
  1070.                                         bits 0-6: MBZ
  1071.                                clear => Reserved for future expansion
  1072.                                         bits 0-6: MBZ
  1073.  
  1074. 60 - width
  1075.         <value> (14bits) :
  1076.                 bits 8-13: MBZ
  1077.                 bits 0-7 :
  1078.                         bit 7 set => length or percentage follows
  1079.                                 bits 0-6: MBZ
  1080.                         bit 7 clear => keywords:
  1081.                                 bits 0-6: 0000000 => auto,
  1082.                                           other   => rffe.
  1083.  
  1084. 61 - word-spacing
  1085.         <value> (14bits) :
  1086.                 bits 8-13: MBZ
  1087.                 bits 0-7 :
  1088.                         bit 7 set => length follows
  1089.                                 bits 0-6: MBZ
  1090.                         bit 7 clear => keywords:
  1091.                                 bits 0-6: 0000000 => normal,
  1092.                                           other   => rffe.
  1093.  
  1094. 62 - z-index
  1095.         <value> (14bits) :
  1096.                 bits 8-13: MBZ
  1097.                 bits 0-7 :
  1098.                         bit 7 set => integer follows
  1099.                                 bits 0-6: MBZ
  1100.                         bit 7 clear => keywords:
  1101.                                 bits 0-6: 0000000 => auto,
  1102.                                           other   => rffe.
  1103.  
  1104. 63 - opacity
  1105.         <value> (14bits) :
  1106.                 bits 8-13: MBZ
  1107.                 bits 0-7 :
  1108.                         bit 7 set => number follows
  1109.                                 bits 0-6: MBZ
  1110.                         bit 7 clear => Reserved for future expansion
  1111.                                 bits 0-6: MBZ
  1112.  
  1113. 64 - break-after
  1114.         <value> (14bits) :
  1115.                 bits 8-13: MBZ
  1116.                 bits 0-7 :
  1117.                         00000000 => auto,
  1118.                         00000001 => always,
  1119.                         00000010 => avoid,
  1120.                         00000011 => left,
  1121.                         00000100 => right,
  1122.                         00000101 => page,
  1123.                         00000110 => column,
  1124.                         00000111 => avoid-page,
  1125.                         00001000 => avoid-column,
  1126.                         other    => Reserved for future expansion.
  1127.  
  1128. 65 - break-before
  1129.         <value> (14bits) :
  1130.                 bits 8-13: MBZ
  1131.                 bits 0-7 :
  1132.                         00000000 => auto,
  1133.                         00000001 => always,
  1134.                         00000010 => avoid,
  1135.                         00000011 => left,
  1136.                         00000100 => right,
  1137.                         00000101 => page,
  1138.                         00000110 => column,
  1139.                         00000111 => avoid-page,
  1140.                         00001000 => avoid-column,
  1141.                         other    => Reserved for future expansion.
  1142.  
  1143. 66 - break-inside
  1144.         <value> (14bits) :
  1145.                 bits 8-13: MBZ
  1146.                 bits 0-7 :
  1147.                         00000000 => auto,
  1148.                         00000001 => avoid,
  1149.                         00000010 => avoid-page,
  1150.                         00000011 => avoid-column,
  1151.                         other    => Reserved for future expansion.
  1152.  
  1153. 67 - column-count
  1154.         <value> (14bits) :
  1155.                 bits 8-13: MBZ
  1156.                 bits 0-7 :
  1157.                         bit 7 set => integer follows
  1158.                                 bits 0-6: MBZ
  1159.                         bit 7 clear => keywords:
  1160.                                 bits 0-6: 0000000 => auto,
  1161.                                           other   => rffe.
  1162.  
  1163. 68 - column-fill
  1164.         <value> (14bits) :
  1165.                 bits 8-13: MBZ
  1166.                 bits 0-7 :
  1167.                         00000000 => balance,
  1168.                         00000001 => auto,
  1169.                         other    => Reserved for future expansion.
  1170.  
  1171. 69 - column-gap
  1172.         <value> (14bits) :
  1173.                 bits 8-13: MBZ
  1174.                 bits 0-7 :
  1175.                         bit 7 set => length follows
  1176.                                 bits 0-6: MBZ
  1177.                         bit 7 clear => keywords:
  1178.                                 bits 0-6: 0000000 => normal,
  1179.                                           other   => rffe.
  1180.  
  1181. 6a - column-rule-color
  1182.         <value> (14bits) :
  1183.                 bits 8-13: MBZ
  1184.                 bit 7 set => colour follows.
  1185.                         bits 0-6: MBZ
  1186.                 bit 7 clear => Reserved for future expansion
  1187.                         bits 0-6: MBZ
  1188.  
  1189. 6b - column-rule-style
  1190.         <value> (14bits) :
  1191.                 bits 8-13: MBZ
  1192.                 bits 0-7 :
  1193.                         00000000 => none,
  1194.                         00000001 => hidden,
  1195.                         00000010 => dotted,
  1196.                         00000011 => dashed,
  1197.                         00000100 => solid,
  1198.                         00000101 => double,
  1199.                         00000110 => groove,
  1200.                         00000111 => ridge,
  1201.                         00001000 => inset,
  1202.                         00001001 => outset,
  1203.                         other    => Reserved for future expansion.
  1204.  
  1205. 6c - column-rule-width
  1206.         <value> (14bits) :
  1207.                 bits 8-13: MBZ
  1208.                 bits 0-7 :
  1209.                         bit 7 set => length follows
  1210.                                 bits 0-6: MBZ
  1211.                         bit 7 clear => keywords:
  1212.                                 bits 0-6: 0000000 => thin,
  1213.                                           0000001 => medium,
  1214.                                           0000010 => thick,
  1215.                                           other   => rffe.
  1216.  
  1217. 6d - column-span
  1218.         <value> (14bits) :
  1219.                 bits 8-13: MBZ
  1220.                 bits 0-7 :
  1221.                         00000000 => none,
  1222.                         00000001 => all,
  1223.                         other    => Reserved for future expansion.
  1224.  
  1225. 6e - column-width
  1226.         <value> (14bits) :
  1227.                 bits 8-13: MBZ
  1228.                 bits 0-7 :
  1229.                         bit 7 set => length follows
  1230.                                 bits 0-6: MBZ
  1231.                         bit 7 clear => keywords:
  1232.                                 bits 0-6: 0000000 => auto,
  1233.                                           other   => rffe.
  1234.  
  1235.  
  1236. 6f-3ff - Reserved for future expansion.
  1237.  
  1238.