On 1 Dec 2011, at 13:29, James Montgomerie wrote:
> As I've posted before, I'm using libCSS in an ebook/ePub rendering
project ('libEucalyptus'). I've recently come across the need to parse
@font-face rules.
>
> Attached is a patch that does this, following (or attempting to :-)
the CSS 3 spec. It extends the parser to parse font-face rules (which
use a slightly different grammar to the regular CSS, of course...),
and adds support to the selection engine to query font-faces by family
name. The support is limited - at the moment it supports 'src:',
'font-family:', 'font-style', and 'font-weight:' rules. It
should be
fairly easily extensible to the other font-face directives in the
future (unicode-range etc.).
Excellent!
> When parsing, it 'correctly' handles other unsupported
directives by
ignoring them. I've tried to keep the font-face handling well
compartmentalised into its own files, although I have extended a
couple of the parsing util routines where I thought that made sense.
Sounds fine to me.
> On the selection side, for the client, the new
css_select_font_faces
function will take a font family name and media and provide a list of
font-face results that specify the font-faces that match. I've
deliberately not tried to filter this list further than by family name
and doing some sorting by specificity, so that the user agent can
apply its own logic to the font selection and fallback This logic is
- mostly - specified in the CSS spec, of course, but it's rather vague
places, but more importantly also depends so much on installed fonts
and OS capabilities in rendering that I thought it best to leave it to
the client.
Yeah; that matches what we did with font-families, so I've no objection
to this approach. After all, the client is the only place that is
capable of making a fully informed decision here :)
> I hope the patch meets with approval. Criticism and changes
are
appreciated, and I'm very happy to receive constructive feedback (or
bug fixes :-). While I am using this in its current state in a
product now, I would very much like to keep my libCSS unforked - and I
hope this will also be useful to others in the future.
I've had a relatively quick look through it. It appears mostly fine, but
it's been a while since I last looked at the CSS3 Fonts module. I'll
endeavour to give it a proper look at the weekend.
Cheers,
J.