StyleScript reads a HTML / SGML file, local or from an URL, and writes a Postscript file. I use the sp library, so only files that names a dtd and conforms to it is supported. If your document passes the W3C validator without errors, it should be printable.
Rare features
So why not simply use the 'print' facility in the browser (e.g. Netscape navigator)? It lacks some things that I think are essential to print documents well. Here are some rare features of StyleScript:
In StyleScript, the section about page breaks in the CSS2 proposed recommendation is implemented.
The attribute
LANGis usually ignored. I use it to set the language of auto-generated text (e.g. date) and in future versions I will use it for automatic hyphenation.The entity
­is typically rendered identical to the character '-', but it should be rendered as a hyphenation point. StyleScript (and lynx) does the right thing™.
Get the source
Actually, StyleScript is not quite open-source yet, but it soon will be. I have the source in CVS, but it is not yet possible to access it anonymously. I hope that this will change soon ... Later, when it is more functional, there will be distributions as well, but probably not before the summer.
If you are interested in taking part of the development, mail me at
Required packages
For translating bitmap images of miscellaneous formats to postscript.
For creating font metrics (afm files) from fonts
For parsing the sgml input files.
Since it's written in C++. StyleScript requires some
standard features such as dynamic_cast,
exceptions, and templates. gcc 2.95.2 is ok, gcc 2.8.x or
earlier is not ok.
Things left to do
This page is not complete yet, but on the other hand, StyleScript itself isn't nearly complete ... Here are a few things remaining to do in the program.
Required for CSS1 core
Ok, this is a rather long list. But I think that the fact that I actually have this list makes StyleScript better than most of the alternatives ...
Anchor pseudo-classes (link, visited,
active) is not supported. They should probably be handled
as identical anyway, but A:link should be
different from just A.
The !important tag on rules is
not supported.
Stylistic HTML
elements
should have lower weight than 'style'. Those I support is
treated as same weight as 'style' attributes. On the other
hand, support for them is optional in the first place, so I
might just drop it.
Space should be reserved for border widths. I take half of it from the margin and half from the padding (i.e. I just draw the border, at specified width, without reserving space for it).
Margins should collapse in a more complicated manner than what I use. I'll check what CSS2 says before I do anything about this.
If both margins are 'auto', they should get half the available space each. I don't do this yet.
Float is not supported at all.
The 'line-height' property is not supported.
I don't do font matching per glyph yet.
Whitespace / quotes in 'font-family' is probably not handled correctly. Also, there seem to be a bug in handling a 'font-family' list with more than one generic name.
The 'font-variant' property is not supported yet.
Only 'medium' and 'bold' is supported for 'font-weight'.
The 'font' shorthand is not supported.
The 'vertical-align' property is not completely supported in all cases.
The 'list-style', 'list-style-type', 'list-style-image', and 'list-style-position' properties is not supported (I just use plain discs).
Advanced CSS support
:first-line, :first-letter pseudo-classes.
'background-attachment' not implemented.
Actually, this breaks core support as well, since the rule
background: url(foo.png) fixed will be
completely ignored.
'word-spacing' not supported.
'text-transform' not supported.
'border-style' only 'none' / 'solid' supported.
Misc
I use footnotes for link URIs. Make this styleable, just like the :before and :after generated content.
Making the footnotes styleable would also make it
possible to do more advanced stuff (like see
foo on page 17
), provided there
was some way of getting the page numbers, heading contents,
etc from the link target ...
It should also be possible to disable the footnote and use a
:after (or nothing) instead.
There is a bug in local links, the filename is dropped (#foo becomes site/dir/#foo rather than site/dir/file#foo).
I don't handle transparency in gifs yet, and only fake transparency for pngs (I find a background color and use that for transparent areas).
StyleScript currently uses a hard-coded font map. It would probably be best if it could read the same Fontmap files as ghostscript.
I do support some generated content for
:before and :after, but no counters, so I handle
<Q> fine (which most browsers don't) but
I don't handle a <OL> different from a
<UL> (which most browsers
do).
Currently, <TD> is
treated as inline and <TR>
as block.
A lot of other minor—and not so minor—stuff needs to be fixed.
Sort by
specificity
before matching.class/id selectors cannot begin with digits
Borders on inline elements.
Negative 'font-size' should be ignored.
Repeated bg imgs should tile in all directions
See also ...
If you want something that already works, although with limited CSS support, take a look at html2ps by Jan Kärrman.
Skriv en kommentar
Din epostadress kommer inte att visas. Du kan inte använda markup i kommentaren, men en dubbel radmating blir en styckesbrytning.