summaryrefslogtreecommitdiff
path: root/projects/libcss/index.html
blob: da2871038568a49f8e769c672fec059206910f73 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>LibCSS | CSS Library</title>
<link rel="stylesheet" type="text/css" href="/projects/projects.css">
<link rel="icon" type="image/png" href="/webimages/favicon.png">
</head>
<body>

<div class="projects">
<ul>
<li><a href="/">NetSurf</a></li>
<li><a href="/projects/hubbub/">Hubbub</a></li>
<li><strong>LibCSS</strong></li>
<li><a href="/projects/libdom/">LibDOM</a></li>
<li><a href="/projects/libparserutils/">LibParserUtils</a></li>
<li><a href="/projects/libwapcaplet/">LibWapcaplet</a></li>
<li><a href="/projects/libsvgtiny/">Libsvgtiny</a></li>
<li><a href="/projects/libnsfb/">LibNSFB</a></li>
<li><a href="/projects/libnsbmp/">Libnsbmp</a></li>
<li><a href="/projects/libnsgif/">Libnsgif</a></li>
<li><a href="/projects/librosprite/">LibROSprite</a></li>
<li><a href="/projects/iconv/">Iconv</a></li>
<li><a href="/projects/rufl/">RUfl</a></li>
<li><a href="/projects/ttf2f/">TTF2f</a></li>
<li><a href="/projects/tinct/">Tinct</a></li>
<li><a href="/projects/libpencil/">Libpencil</a></li>
</ul>
</div>

<h1>LibCSS</h1>

<h2>What is LibCSS?</h2>

<p>LibCSS is a CSS (Cascading Style Sheet) parser and selection engine, written in C. It was developed as part of the <a href="/">NetSurf</a> project and is available for use by other software under the MIT licence. For further details, see the <a href="http://source.netsurf-browser.org/libcss.git/plain/README">readme</a>.</p>

<h2>Features</h2>

<ul>
<li>Parses CSS, good and bad</li>
<li>Simple C API</li>
<li>Low memory usage</li>
<li>Fast selection engine</li>
<li>Portable</li>
<li>Shared library</li>
</ul>

<p>Future:</p>

<ul>
<li>Available and packaged in major Linux distributions</li>
</ul>

<h2>Source code</h2>

<p>You can <a href="http://source.netsurf-browser.org/libcss.git/">browse the source code</a> via the online interface. Alternatively, you can check it out with Git:</p>

<p class="svncommand">$ git clone git://git.netsurf-browser.org/libcss.git</p>

<p>LibCSS is licensed under the <a href="http://opensource.org/licenses/mit-license.php">MIT Licence</a>.</p>

<h2>Releases</h2>

<p>Most recent first:</p>

<dl class="releases">
<dt>LibCSS 0.7.0</dt>
<dd><a href="http://download.netsurf-browser.org/libs/releases/libcss-0.7.0-src.tar.gz">Tarball</a> &ndash; <a href="#changes-0.7.0">Changes</a></dd>
<dt>LibCSS 0.6.1</dt>
<dd><a href="http://download.netsurf-browser.org/libs/releases/libcss-0.6.1-src.tar.gz">Tarball</a> &ndash; <a href="#changes-0.6.1">Changes</a></dd>
<dt>LibCSS 0.6.0</dt>
<dd><a href="http://download.netsurf-browser.org/libs/releases/libcss-0.6.0-src.tar.gz">Tarball</a> &ndash; <a href="#changes-0.6.0">Changes</a></dd>
<dt>LibCSS 0.5.1</dt>
<dd><a href="http://download.netsurf-browser.org/libs/releases/libcss-0.5.1-src.tar.gz">Tarball</a> &ndash; <a href="#changes-0.5.1">Changes</a></dd>
<dt>LibCSS 0.5.0</dt>
<dd><a href="http://download.netsurf-browser.org/libs/releases/libcss-0.5.0-src.tar.gz">Tarball</a> &ndash; <a href="#changes-0.5.0">Changes</a></dd>
<dt>LibCSS 0.4.0</dt>
<dd><a href="http://download.netsurf-browser.org/libs/releases/libcss-0.4.0-src.tar.gz">Tarball</a> &ndash; <a href="#changes-0.4.0">Changes</a></dd>
<dt>LibCSS 0.3.0</dt>
<dd><a href="http://download.netsurf-browser.org/libs/releases/libcss-0.3.0-src.tar.gz">Tarball</a> &ndash; <a href="#changes-0.3.0">Changes</a></dd>
<dt>LibCSS 0.2.0</dt>
<dd><a href="http://download.netsurf-browser.org/libs/releases/libcss-0.2.0-src.tar.gz">Tarball</a> &ndash; <a href="#changes-0.2.0">Changes</a></dd>
<dt>LibCSS 0.1.2</dt>
<dd><a href="http://download.netsurf-browser.org/libs/releases/libcss-0.1.2-src.tar.gz">Tarball</a> &ndash; <a href="#changes-0.1.2">Changes</a></dd>
<dt>LibCSS 0.1.1</dt>
<dd><a href="http://download.netsurf-browser.org/libs/releases/libcss-0.1.1-src.tar.gz">Tarball</a> &ndash; <a href="#changes-0.1.1">Changes</a></dd>
<dt>LibCSS 0.1.0</dt>
<dd><a href="http://download.netsurf-browser.org/libs/releases/libcss-0.1.0-src.tar.gz">Tarball</a> &ndash; <a href="#changes-0.1.0">Changes</a></dd>
<dt>LibCSS 0.0.2</dt>
<dd><a href="http://download.netsurf-browser.org/libs/releases/libcss-0.0.2-src.tar.gz">Tarball</a> &ndash; <a href="#changes-0.0.2">Changes</a></dd>
<dt>LibCSS 0.0.1</dt>
<dd><a href="http://download.netsurf-browser.org/libs/releases/libcss-0.0.1-src.tar.gz">Tarball</a> &ndash; First release</dd>
</dl>

<h2>Changes</h2>

<dl class="changes">
<dt id="changes-0.7.0">LibCSS 0.7.0</dt>
<dd><ul>
<li>Computed styles can now be shared between elements.
<ul>
<li>Computed styles interned, so only unique computed styles reside in memory.  This means multiple pages/tabs/windows can share computed style data.</li>
<li>Where possible, we now bypass CSS selection, and simply take a reference to another element in the DOM's style, if we're sure it will be the same.</li>
</ul>
</li>
<li>Added support for the CSS3 box-sizing property.</li>
<li>Fixed invalid read when removing sheet from selection context.</li>
<li>Fixed example / demo app build.</li>
</ul></dd>
<dt id="changes-0.6.1">LibCSS 0.6.1</dt>
<dd><ul>
<li>Minor fixes.</li>
</ul></dd>
<dt id="changes-0.6.0">LibCSS 0.6.0</dt>
<dd><ul>
<li>Changed how presentational hints are handled to be more optimal.</li>
</ul></dd>
<dt id="changes-0.5.1">LibCSS 0.5.1</dt>
<dd><ul>
<li>Fixed paths for Haiku.</li>
<li>Minor buildsystem changes.</li>
<li>Added doxygen code documentation generation support.</li>
<li>Minor improvements to tests.</li>
<li>Added "96" to useful fixed point values in fpmath header.</li>
<li>Slight simplification of initial computed style setup.</li>
</ul></dd>
<dt id="changes-0.5.0">LibCSS 0.5.0</dt>
<dd><ul>
<li>Added selection support for CSS3 column-count property.</li>
<li>Added selection support for CSS3 column-fill property.</li>
<li>Added selection support for CSS3 column-gap property.</li>
<li>Added selection support for CSS3 column-rule-color property.</li>
<li>Added selection support for CSS3 column-rule-style property.</li>
<li>Added selection support for CSS3 column-rule-width property.</li>
<li>Added selection support for CSS3 column-span property.</li>
<li>Added selection support for CSS3 column-width property.</li>
<li>Added selection support for CSS3 break-after property.</li>
<li>Added selection support for CSS3 break-before property.</li>
<li>Added selection support for CSS3 break-inside property.</li>
<li>Improved and fixed absolute value conversion of computed styles.</li>
<li>Minor optimisations.</li>
<li>Updated buildsystem.</li>
<li>Improved selection tests.</li>
<li>Code tidying.</li>
<li>Many minor improvements and fixes.</li>
</ul></dd>
<dt id="changes-0.4.0">LibCSS 0.4.0</dt>
<dd><ul>
<li>Added support for CSS3 overflow-x and overflow-y properties.</li>
<li>Fix to !important handling with play-during property.</li>
<li>Improved test coverage.</li>
<li>API <a href="http://git.netsurf-browser.org/libcss.git/plain/docs/API-ABI-Changes">changes made</a>.</li>
</ul></dd>
<dt id="changes-0.3.0">LibCSS 0.3.0</dt>
<dd><ul>
<li>Added support for the writing-mode property.</li>
<li>Significantly optimised selection performance.</li>
<li>Made many fixes and internal clean-ups.</li>
<li>Added support for multilib.</li>
<li>API and ABI <a href="http://git.netsurf-browser.org/libcss.git/plain/docs/API-ABI-Changes">changes made</a>.</li>
</ul></dd>
<dt id="changes-0.2.0">LibCSS 0.2.0</dt>
<dd><ul>
<li>Updated example code.</li>
<li>Added support for CSS widows and orphans properties.</li>
<li>Minor selection optimisations.</li>
<li>Several minor fixes.</li>
<li>Updated to use new core buildsystem.</li>
</ul></dd>
<dt id="changes-0.1.2">LibCSS 0.1.2</dt>
<dd><ul>
<li>Avoided interning standard strings for every stylesheet, style tag and style attribute.</li>
<li>Made significant optimisations to style selection.</li>
<li>Fixed case where font-family is unspecified in input CSS.</li>
<li>Added some support for @font-face.</li>
<li>Fixed !important on opacity property.</li>
<li>Added support for parsing CSS3 Multi-column layout properties.</li>
</ul></dd>
<dt id="changes-0.1.1">LibCSS 0.1.1</dt>
<dd><ul>
<li>Improved build tree cleaning.</li>
<li>Fixed build with GCC 4.6.</li>
<li>Added support for selection of page-break properties.</li>
<li>Optimised style selection.</li>
</ul></dd>
<dt id="changes-0.1.0">LibCSS 0.1.0</dt>
<dd><ul>
<li>Fixed destruction of bytecode for clip property.</li>
<li>Added scoping for use from C++ programs.</li>
<li>Removed need for library initialisation and finalisation.</li>
<li>Added support for CSS2 system colours.</li>
<li>Added support for CSS2 system fonts.</li>
<li>Altered external representation of colours to aarrggbb.</li>
<li>Added support for CSS3 rgba() colour specifier.</li>
<li>Added support for CSS3 'transparent' colour keyword.</li>
<li>Added support for CSS3 hsl() and hsla() colour specifiers.</li>
<li>Added support for CSS3 'currentColor' colour keyword.</li>
<li>Added support for CSS3 'opacity' property.</li>
<li>Added support for CSS3 selectors.</li>
<li>Added support for CSS3 namespaces.</li>
<li>Enabled clients to fetch imported stylesheets in parallel.</li>
<li>Made internal bytecode 64-bit safe.</li>
<li>Fixed leaking of strings.</li>
<li>Rewritten property parsers.</li>
<li>Certain property parsers auto-generated at build time.</li>
<li>Added clang build support.</li>
<li>Various portability enhancements.</li>
<li>Fixed selection for pseudo elements.</li>
<li>Added simultaneous selection for base and pseudo elements.</li>
<li>Namespaced all global symbols.</li>
<li>Updated test suite.</li>
<li>Future-proofed ABI.</li>
<li>Ensured fixed point maths saturates instead of overflowing.</li>
<li>Fixed clip property handling.</li>
<li>Fixed selection and cascade of &quot;uncommon&quot; CSS properties.</li>
<li>Added structure versioning for client input.</li>
</ul></dd>
<dt id="changes-0.0.2">LibCSS 0.0.2</dt>
<dd><ul>
<li>Allow stylesheets to be used in multiple contexts simultaneously.</li>
<li>Fix possible stylesheet reuse crash.</li>
</ul></dd>
<dt id="changes-0.0.1">LibCSS 0.0.1</dt>
<dd>First release.</dd>
</dl>

<h2>Contact</h2>

<p>If you would like to help develop LibCSS, or have questions about the library, please join the NetSurf <a href="http://www.netsurf-browser.org/lists/netsurf-dev">developer mailing list</a>.</p>

</body>
</html>