Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
@financial-times/o-fonts
Advanced tools
Loads CSS declarations for FT web fonts. Does not include font assets.
Use o-fonts
to include Origami provided fonts, or register supported custom fonts.
Check out how to include Origami components in your project to get started with o-fonts
.
Origami components use a limited set of recommended font faces which vary per brand. We recommend Sass users include only these recommended fonts and carefully consider performance implications before including another font. However a wider selection of fonts are included by default so they are available to Build Service users. Sass users may choose to include only recommended fonts, or any of the available fonts.
Weight | FinancierDisplayWeb | MetricWeb |
---|---|---|
thin | ||
light | ||
regular | ✓ | |
medium | ✓ | |
semibold | ✓ | |
bold | ✓ | |
black |
Weight | MetricWeb |
---|---|
thin | |
light | |
regular | ✓ |
medium | |
semibold | ✓ |
bold | |
black |
(None). Origami components make no font assumptions for whitelabel brands and default to a system font.
A selection wider than recommended fonts are included by default so they are available to Build Service users. Font faces included by default, if using the Origami Build Service or including default fonts with SASS, depend on your products chosen brand:
Brand | Fonts included by default (all weights and styles available) |
---|---|
core | FinancierDisplayWeb, MetricWeb |
internal | MetricWeb |
whitelabel | (none) |
Any of the below fonts may be included with o-fonts
using SASS, this is useful for brands such as specialist titles who may use additional fonts. Build Service users are limited to fonts included by default.
Weight | FinancierDisplayWeb | FinancierTextWeb | MetricWeb |
---|---|---|---|
thin | ✓ | ||
light | ✓ i | ✓ i | |
regular | ✓ i | ✓ i | ✓ i |
medium | ✓ i | ✓ | ✓ |
semibold | ✓ i | ✓ | |
bold | ✓ | ✓ | ✓ i |
black | ✓ | ✓ | ✓ |
To include all fonts for your brand, call oFonts
.
@import '@financial-times/o-fonts/main';
@include oFonts();
To improve site performance, Origami components use a more limited set of font faces. To included only the recommended set of font faces, set recommended: true
in the options $opts
map.
@import '@financial-times/o-fonts/main';
@include oFonts($opts: ('recommended': true));
You may also include specific fonts granularly using an options $opts
map. The map has a key for each font metric
, financier-display
, or financier-text
, which accepts a list of weight and styles to include.
For example to include recommended fonts used by Origami components and an extra font, MetricWeb
in a medium weight, and regular FinancierDisplayWeb
:
@include oFonts($opts: (
'recommended': true,
'metric': (
('weight': 'medium', 'style': 'normal')
),
'financier-display': (
('weight': 'regular', 'style': 'normal')
)
));
Note: If your project has multiple Sass entry points call oFontsVariantsIncluded
with the same options as oFonts
, to tell o-fonts
which font faces have been output.
By default font-display is set to swap
. In supporting browsers a system font is shown until fonts are loaded. To update your font loading method set $o-fonts-display
at the top of your Sass, before including any other component.
// Customise font loading.
$o-fonts-display: 'optional';
@import '@financial-times/o-fonts/main';
@include oFonts();
To register a custom font and supported variants, use the mixin oFontsDefineCustomFont
.
In this example we register a custom font "MyFont" with sans fallback MyFont, sans
. We configure this font to allow two variants (a normal style of either bold or regular weight). In the mixin content we include the @font-face
declaration to load these fonts from our own source.
@include oFontsDefineCustomFont('MyFont, sans', (
(weight: regular, style: normal),
(weight: bold, style: normal)
)) {
@font-face {
src: url('MyFont-Thin.woff2') format('woff2'), url('MyFont-Thin.woff') format('woff');
font-family: MyFont;
font-weight: 100;
font-style: normal;
}
@font-face {
src: url('MyFont-Bold.woff2') format('woff2'), url('MyFont-Bold.woff') format('woff');
font-family: MyFont;
font-weight: 700;
font-style: normal;
}
}
To get a font-family
with web safe fallbacks for a font, use the oFontsGetFontFamilyWithFallbacks
function.
$family: oFontsGetFontFamilyWithFallbacks(FinancierDisplayWeb); // FinancierDisplayWeb, sans-serif
To get a font without fallbacks, use oFontsGetFontFamilyWithoutFallbacks
:
$font: oFontsGetFontFamilyWithoutFallbacks('FinancierDisplayWeb, sans-serif'); // FinancierDisplayWeb
To check if a font supports a weight/style use oFontsVariantExists
.
$allowed: oFontsVariantExists('MetricWeb', 'bold', 'normal'); // true
$allowed: oFontsVariantExists('MetricWeb', 'black', 'italic'); // false
To check if a font weight/style has been output in your project use oFontsVariantIncluded
.
// including fonts in project
@include oFonts($opts: (
'metric': (
('weight': 'medium', 'style': 'normal')
),
));
$included: oFontsVariantIncluded('MetricWeb', 'medium', 'normal'); // true
$included: oFontsVariantIncluded('MetricWeb', 'bold', 'normal'); // false
Note: If your project has multiple Sass entry points call oFontsVariantsIncluded
with the same options as oFonts
, to tell o-fonts
which font faces have been output.
Note: font files are contained in a separate, private repository (o-fonts-assets).
Open src/scss/_variables.scss
and update the $o-fonts-build-service-path
variable to the release of o-fonts-assets which includes your new font.
Add the font family name (if it's an entirely new family) and the variant styles to the private $_o-fonts-families
map.
If adding an entirely new font, add a new option to the oFonts
mixin. To include the new font by default or with recommended fonts (see $_o-fonts-default
and $_o-fonts-recommended
).
Finally, update the demos (see origami.json
).
State | Major Version | Last Minor Release | Migration guide |
---|---|---|---|
✨ active | 5 | N/A | migrate to v5 |
⚠ maintained | 4 | 4.5 | migrate to v4 |
╳ deprecated | 3 | 3.3 | migrate to v3 |
╳ deprecated | 2 | 2.3 | - |
╳ deprecated | 1 | 1.5 | - |
If you have any questions or comments about this component, or need help using it, please either raise an issue, visit #origami-support or email Origami Support.
This software is published by the Financial Times under the MIT licence.
FAQs
Loads CSS declarations for FT web fonts. Does not include font assets.
We found that @financial-times/o-fonts demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 10 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.