- From: fantasai <fantasai.lists@inkedblade.net>
- Date: Mon, 19 Nov 2007 22:59:22 -0500
- To: "Grant, Melinda" <melinda.grant@hp.com>
- CC: public-css-testsuite@w3.org
- Message-ID: <47425B9A.7010404@inkedblade.net>
Grant, Melinda wrote:
>
> Fantasai said:
>> Grant, Melinda wrote:
>>> I think we should add an explicit margin declaration to the rules
>>> establishing test header and footer.
>>> a) for consistent test output
>>> b) some UA's may default to 0 margins.
>> What would you recommend as the default margin?
>
> 7% should work pretty well across sizes...
Proposed patch attached: it should
* use start/end <p> paragraphs with test ID if there are margin box rules
* use the @page headers and footers with test ID if there are no margin box rules
- use a 7% margin if the test contains no @page rule
- not specify any margin declaration if the test does contain an @page rule
Let me know if this is ok.
~fantasai
Index: lib/format/xhtml1print.pm
===================================================================
RCS file: /sources/public/CSS/CSS2.1-test-suite/lib/format/xhtml1print.pm,v
retrieving revision 1.3
diff -u -r1.3 xhtml1print.pm
--- lib/format/xhtml1print.pm 19 Apr 2007 22:42:36 -0000 1.3
+++ lib/format/xhtml1print.pm 20 Nov 2007 03:55:26 -0000
@@ -8,11 +8,15 @@
@page { counter-increment: page;
font: italic 8pt sans-serif;
color: gray;
+ %%MARGIN%%
@top-left { content: "CSS 2.1 Conformance Test Suite"; }
@top-right { content: "Test %%TESTID%%"; }
@bottom-right { content: counter(page); }
}
^;
+my $printMargin = 'margin: 7%;';
+my $printHTMLstart = '<p style="font: italic 8pt sans-serif; color: gray;">Start of CSS2.1 Conformance Test %%TESTID%%.</p>';
+my $printHTMLend = '<p style="font: italic 8pt sans-serif; color: gray;">End of CSS2.1 Conformance Test %%TESTID%%.</p>';
sub output {
my($tree,$id) = @_;
@@ -20,8 +24,29 @@
$output .= "\n";
$output .= xml::treeAsXML($tree);
- $_ = $printCSS;
- s/%%TESTID%%/$id/g;
- $output =~ s/<\/title>/<\/title>\n <style type="text\/css">$_ <\/style>/;
+ if ($output =~ /\@page\s*{[^}]*\@/) {
+ # Don't use headers and footers when page tests margin boxes
+ my $start = $printHTMLstart;
+ $start =~ s/%%TESTID%%/$id/g;
+ my $end = $printHTMLend;
+ $end =~ s/%%TESTID%%/$id/g;
+
+ $output =~ s/(<body[^>]*>)/$1\n$start/;
+ $output =~ s/(<\/body[^>]*>)/$end\n$1/;
+ }
+ else {
+ $_ = $printCSS;
+ s/%%TESTID%%/$id/g;
+
+ if ($output =~ /\@page/) {
+ s/%%MARGIN%%//; # skip margin rule when @page statement exists
+ }
+ else {
+ s/%%MARGIN%%/$printMargin/;
+ }
+
+ $output =~ s/<\/title>/<\/title>\n <style type="text\/css">$_ <\/style>/;
+ }
+
return $output;
}
Received on Tuesday, 20 November 2007 03:59:33 UTC