Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
Convert a document with inline braille CSS to OBFL (Open Braille Formatting Language).
px:error
px:assert
px:css-cascade
css:adjust-boxes
css:eval-counter
css:eval-string-set
css:eval-target-content
css:eval-target-text
css:flow-from
css:flow-into
css:label-targets
css:make-anonymous-block-boxes
css:make-anonymous-inline-boxes
css:make-boxes
css:make-pseudo-elements
css:make-table-grid
css:new-definition
css:parse-content
css:parse-properties
css:parse-stylesheet
css:preserve-white-space
css:render-table-by
css:shift-id
css:shift-string-set
css:split
pxi:propagate-page-break
pxi:shift-obfl-marker
pxi:make-obfl-pseudo-elements
pxi:extract-obfl-pseudo-elements
pxi:deep-parse-page-and-volume-stylesheets
css:parse-counter-styles
Make css:page, css:volume, css:text-transform, css:counter-style, css:after,
css:before, css:footnote-call, css:duplicate, css:alternate, css:top-of-page,
css:_obfl-alternate-scenario*, css:_obfl-on-toc-start,
css:_obfl-on-collection-start, css:_obfl-on-volume-start, css:_obfl-on-volume-end,
css:_obfl-on-collection-end, css:_obfl-on-toc-end, css:_obfl-volume-transition and
css:_obfl-on-resumed attributes.
Make css:flow attributes.
::-obfl-alternate-scenario pseudo-elements must participate in the normal flow.
Make css:before, css:after, css:duplicate, css:alternate and
css:footnote-call pseudo-elements from css:before, css:after, css:duplicate,
css:alternate and css:footnote-call attributes.
Make css:_obfl-on-toc-start, css:_obfl-on-collection-start,
css:_obfl-on-volume-start, css:_obfl-on-volume-end,
css:_obfl-on-collection-end, css:_obfl-on-toc-end, css:_obfl-on-resumed and
*[@css:_obfl-scenario] pseudo-elements.
Apply possible relative rules.
Make css:page, css:volume, css:text-transform, css:counter-style, css:top-of-page and
css:_obfl-volume-transition attributes, css:after, css:before, css:duplicate,
css:alternate, css:footnote-call, css:_obfl-on-toc-start, css:_obfl-on-volume-start,
css:_obfl-on-volume-end, css:_obfl-on-toc-end, css:_obfl-on-resumed and
css:_obfl-alternate-scenario pseudo-elements.
Delete @css:text-transform, @css:counter-style and @css:_obfl-volume-transition
attributes.
Make css:display, css:render-table-by and css:table-header-policy attributes.
Layout tables as lists.
Need another pass because css:render-table-by inserts new styles.
Extract css:_obfl-on-toc-start, css:_obfl-on-collection-start,
css:_obfl-on-volume-start, css:_obfl-on-volume-end, css:_obfl-on-collection-end and
css:_obfl-on-toc-end pseudo-elements into their own documents.
Make css:content, css:string-set, css:counter-reset, css:counter-set,
css:counter-increment and css:_obfl-marker attributes.
Evaluate css:string-set attributes.
Make css:string, css:text, css:content, css:counter and css:custom-func elements and
text nodes from css:content attributes.
Split into a sequence of flows.
Make css:flow attributes.
Extract named flows based on css:flow attributes and place anchors (css:id
attributes) in the normal flow.
Make css:id attributes.
Evaluate css:content elements.
Make css:white-space, css:display and css:list-style-type attributes.
Make css:white-space elements from css:white-space attributes.
Force "obfl-scenario" elements to be blocks.
Mark display:-obfl-toc elements.
Mark display:-obfl-list-of-references elements.
Treat display:-obfl-toc and display:-obfl-list-of-references as block.
Create table grid structures from HTML/DTBook tables.
Make css:box elements based on css:display and css:list-style-type attributes.
Move css:render-table-by, css:_obfl-table-col-spacing, css:_obfl-table-row-spacing
and css:_obfl-preferred-empty-space attributes to 'table' css:box elements.
Evaluate css:counter elements. All css:counter-set, css:counter-increment and
css:counter-reset attributes in the output will be manipulating page counters.
Rename -obfl-collection() to flow() so that css:flow-from will process them.
Change scope 'document' to '-obfl-document' when ::-obfl-on-volume-start or
::-obfl-on-volume-end pseudo-elements are present.
Check that elements with "display: -obfl-list-of-references" contain exactly one
-obfl-collection() or flow().
Evaluate css:flow elements.
Wrap unevaluated css:flow in block box so that we can be sure that when evaluated
later inline boxes have no descendant block boxes (see also
css:make-anonymous-inline-boxes).
Note that this is currently a pointless step because unless they are a descendant of
a "list-of-references" element, unevaluated css:flow elements will be ignored (and
result in a warning) later.
Evaluate css:text elements.
Wrap/unwrap with inline css:box elements.
Don't support 'volume' within named flows. Don't support 'volume', 'page' and
'counter-set' within tables.
Move css:counter-set attribute to css:box elements.
Move css:page attributes to css:box elements.
Move css:volume attributes to css:box elements.
:top-of-page is only supported on block elements.
Move css:string-set attributes to inline css:box elements.
Move css:_obfl-marker attributes to inline css:box elements.
Move css:id attributes to inline css:box elements.
All css:_ elements except for root elements, top-level elements in named flows (with
css:anchor attribute), and empty elements with a css:id, css:string-set or
css:_obfl-marker attribute within a css:box element should be gone now.
FIXME: We ignore that css:_ elements with a css:_obfl-on-resumed attribute may exist
if an inline `::-obfl-on-resumed` pseudo-element contains a block
pseudo-element.
Wrap inline css:box elements in block css:box elements where necessary.
Make css:margin-left, css:margin-right, css:margin-top, css:margin-bottom,
css:padding-left, css:padding-right, css:padding-top, css:padding-bottom,
css:border-left-pattern, css:border-right-pattern, css:border-top-pattern,
css:border-bottom-pattern, css:border-left-style, css:border-right-style,
css:border-top-style, css:border-bottom-style and css:text-indent attributes.
Convert CSS properties to corresponding OBFL attributes.
Remove text nodes from block boxes with no line boxes.
Don't support 'page-break-before' and 'page-break-after' within tables or
'-obfl-toc' elements.
Split flows into sections.
Insert forced page breaks to satisfy the 'page' and 'volume' properties.
Convert css:page-break-after="auto-right" to a css:page-break-before on the
following sibling, and css:volume-break-after="always" to a
css:volume-break-before on the following sibling.
Split before css:counter-set attributes, and before css:volume-break-before
attributes with value 'always'.
Move css:page, css:counter-set and css:volume attributes to css:_ root element.
Delete properties connected to the top of a box if it is not the first part of a
split up box. Delete properties connected to the bottom of a box if it is not
the last part of a split up box.
Move around and change page breaking related properties so that they can be mapped
one-to-one on OBFL properties.
Propagate css:page-break-before, css:page-break-after,
css:page-break-inside, css:volume-break-before and css:volume-break-after
attributes. (Needs to be done a second time because the box tree has been
broken up by css:split. css:page-break-before='right' will now be propagated
all the way to the root box.)
Rename 'auto-right' (the special forced page break value to satisfy the
'page' property) to 'right'.
Convert css:page-break-before="avoid" to a css:page-break-after on the
preceding sibling and css:page-break-after="always|right|left" to a
css:page-break-before on the following sibling.
Move css:page-break-after="avoid" to last descendant block.
Move css:margin-top of blocks that have a preceding (non-empty) block to
css:margin-bottom of their preceding block, and rename other css:margin-top to
css:margin-top-skip-if-top-of-page.