[Raku CSS Project] / [CSS-Properties] / CSS::Font
class CSS::Font
Abstract CSS font object
Synopsis
use CSS::Font;
my $font-props = 'italic bold 10pt/12pt times-roman';
my CSS::Font $font .= new: :$font-props;
say $font.em; # 10
say $font.ex; # 7.5
say $font.style.fmt; # italic
say $font.weight.fmt; # 700
say $font.family.fmt; # times-roman
say $font.line-height; # 12pt
say $font.measure(:font-size); # 10pt
say $font.fontconfig-pattern.raku;
# {:family($("times-roman",)), :slant("italic"), :weight("bold")}
# requires FontConfig module to be installed
say $font.find-font;
# /usr/share/fonts/truetype/liberation/LiberationSerif-BoldItalic.ttf
Description
CSS::Font is utility class for managing font related properties and computing fontconfig patterns.
method fontconfig-pattern
method fontconfig-pattern(
@faces = Code.new
) returns Hash
compute a fontconfig pattern for the font
method font-props
method font-props() returns Mu
sets/gets the css font properties as a whole
e.g. $font.font-css = 'italic bold 10pt/12pt sans-serif';
method find-font
method find-font(
%patt = Code.new,
Int :$all is copy where { ... },
Int :$best is copy where { ... }
) returns Str
Return a path to a matching system font
Requires installation of the Raku FontConfig module`
method pattern
method pattern(CSS::Font::Descriptor @font-face) returns CSS::Font::Pattern
This method returns a pattern based on the font and a list of @font-face
font descriptor properties. Example:
use CSS::Font;
use CSS::Font::Descriptor;
use CSS::Font::Pattern;
use CSS::Stylesheet;
my CSS::Font $font .= new: :font-props("italic bold 10pt/12pt Georgia,serif");
my $stylesheet = q:to<END>;
@font-face {
font-family:'Sans-serif'; src:url('/myfonts/sans-serif.otf');
}
@font-face {
font-family:'Serif'; src:url('/myfonts/serif.otf');
}
@font-face {
font-family:'Serif'; src:url('/myfonts/serif-bold.otf'); font-weight:bold;
}
END
my CSS::Stylesheet:D $css .= parse($stylesheet);
my CSS::Font::Descriptor @font-face = $css.font-face;
my CSS::Font::Pattern $pattern = $font.pattern;
say $pattern.match(@font-face).first.Str; # font-family:'serif'; src:url('/myfonts/serif.otf');
See also the CSS::Font::Resources module, which is able to handle fetching of local and remote objects.