View on GitHub


CSS `@font-face` driven Font Selection and Loading

[Raku CSS Project] / [CSS-Font-Resources] / CSS::Font :: Resources :: Source

class CSS::Font::Resources::Source

Abstract base class for font source references


This is an abstract base class for font descriptor source references. See also instance classes:


use CSS::Font::Descriptor;
use CSS::Font::Resources;
use CSS::Font::Resources::Source;
my CSS::Font::Descriptor @font-face;
@font-face.push: :font-family("DejaVu Sans"), :src<url("fonts/DejaVuSans.ttf")>;
@font-face.push: :font-family<serif>, :font-weight<bold>, :src<local(DejaVuSans-Bold)>;
my $font = "bold 12pt times roman, serif";
my CSS::Font::Resources $fonts .= new: :$font, :@font-face;
my CSS::Font::Resources::Source @sources = $fonts.sources;
with @sources.head -> $src {
    say ($src.type, $src.format, $src.IO.path).join: ', ';
    # has matched the second descriptor.
    # results may be system dependant, e.g.:
    # local, truetype, /usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf



use CSS::Font::Descriptor;
method font-descriptor returns CSS::Font::Descriptor;

Returns the CSS::Font::Descriptor associated with the source.


use CSS::Font::Resource::Source :FontFormat;
method format returns FontFormat;

Returns the font-format, one of: ‘woff’, ‘woff2’, ‘truetype’, ‘opentype’, ‘embedded-opentype’, ‘svg’.

The format may be set by a format(...) declaration in the CSS src property. If this is absent, the format is guessed from the extension on the url (url sources), or matching file (local sources).

type Returns the source type ‘local’ (CSS::Font::Resources::Source::Local), or ‘url’ (CSS::Font::Resources::Source::Url)


method IO returns IO::Path;

Returns an IO::Path to a font file


method format returns FontFormat;

Returns an Blob of the font file’s