diff --git a/build/build-modules-js/compilecss.es6.js b/build/build-modules-js/compilecss.es6.js
index 9d824e6053..7050c9269d 100644
--- a/build/build-modules-js/compilecss.es6.js
+++ b/build/build-modules-js/compilecss.es6.js
@@ -44,6 +44,9 @@ module.exports.compile = (options, path) => {
`${RootPath}/templates/cassiopeia/scss/offline.scss`,
`${RootPath}/templates/cassiopeia/scss/template.scss`,
`${RootPath}/templates/cassiopeia/scss/template-rtl.scss`,
+ `${RootPath}/templates/cassiopeia/scss/global/fonts-local_roboto.scss`,
+ `${RootPath}/templates/cassiopeia/scss/global/fonts-web_poppins+roboto.scss`,
+ `${RootPath}/templates/cassiopeia/scss/global/fonts-web_roboto+noto-sans.scss`,
`${RootPath}/templates/cassiopeia/scss/global/colors_autumn.scss`,
`${RootPath}/templates/cassiopeia/scss/global/colors_spring.scss`,
`${RootPath}/templates/cassiopeia/scss/global/colors_summer.scss`,
@@ -71,7 +74,7 @@ module.exports.compile = (options, path) => {
// Loop to get the files that should be compiled via parameter
folders.forEach((folder) => {
- Recurs(folder, ['*.js', '*.map', '*.svg', '*.png', '*.gif', '*.swf', '*.html', '*.json', '*.woff', '*.woff2']).then(
+ Recurs(folder, ['*.js', '*.map', '*.svg', '*.png', '*.gif', '*.swf', '*.html', '*.json']).then(
(filesRc) => {
filesRc.forEach(
(file) => {
diff --git a/build/media_source/fonts/fira-sans-v10-latin-700.woff b/build/media_source/fonts/fira-sans-v10-latin-700.woff
deleted file mode 100644
index 757cb9cc27..0000000000
Binary files a/build/media_source/fonts/fira-sans-v10-latin-700.woff and /dev/null differ
diff --git a/build/media_source/fonts/fira-sans-v10-latin-700.woff2 b/build/media_source/fonts/fira-sans-v10-latin-700.woff2
deleted file mode 100644
index 4414bfd3b1..0000000000
Binary files a/build/media_source/fonts/fira-sans-v10-latin-700.woff2 and /dev/null differ
diff --git a/build/media_source/fonts/fira-sans-v10-latin-700italic.woff b/build/media_source/fonts/fira-sans-v10-latin-700italic.woff
deleted file mode 100644
index ba16b12ec0..0000000000
Binary files a/build/media_source/fonts/fira-sans-v10-latin-700italic.woff and /dev/null differ
diff --git a/build/media_source/fonts/fira-sans-v10-latin-700italic.woff2 b/build/media_source/fonts/fira-sans-v10-latin-700italic.woff2
deleted file mode 100644
index aae611ffe1..0000000000
Binary files a/build/media_source/fonts/fira-sans-v10-latin-700italic.woff2 and /dev/null differ
diff --git a/build/media_source/fonts/fira-sans-v10-latin-italic.woff b/build/media_source/fonts/fira-sans-v10-latin-italic.woff
deleted file mode 100644
index 5e82e183f3..0000000000
Binary files a/build/media_source/fonts/fira-sans-v10-latin-italic.woff and /dev/null differ
diff --git a/build/media_source/fonts/fira-sans-v10-latin-italic.woff2 b/build/media_source/fonts/fira-sans-v10-latin-italic.woff2
deleted file mode 100644
index 7f191fd8ea..0000000000
Binary files a/build/media_source/fonts/fira-sans-v10-latin-italic.woff2 and /dev/null differ
diff --git a/build/media_source/fonts/fira-sans-v10-latin-regular.woff b/build/media_source/fonts/fira-sans-v10-latin-regular.woff
deleted file mode 100644
index d99ba57a35..0000000000
Binary files a/build/media_source/fonts/fira-sans-v10-latin-regular.woff and /dev/null differ
diff --git a/build/media_source/fonts/fira-sans-v10-latin-regular.woff2 b/build/media_source/fonts/fira-sans-v10-latin-regular.woff2
deleted file mode 100644
index 9bb576032e..0000000000
Binary files a/build/media_source/fonts/fira-sans-v10-latin-regular.woff2 and /dev/null differ
diff --git a/build/media_source/fonts/fira-sans.scss b/build/media_source/fonts/fira-sans.scss
deleted file mode 100644
index c47244ffb4..0000000000
--- a/build/media_source/fonts/fira-sans.scss
+++ /dev/null
@@ -1,52 +0,0 @@
-/* fira-sans-regular - latin */
-@font-face {
- font-family: 'Fira Sans';
- font-style: normal;
- font-weight: 400;
- font-display:swap;
- src: local('Fira Sans Regular'), local('FiraSans-Regular'),
- url('./fira-sans-v10-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
- url('./fira-sans-v10-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-
-/* fira-sans-italic - latin */
-@font-face {
- font-family: 'Fira Sans';
- font-style: italic;
- font-weight: 400;
- font-display:swap;
- src: local('Fira Sans Italic'), local('FiraSans-Italic'),
- url('./fira-sans-v10-latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
- url('./fira-sans-v10-latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-
-/* fira-sans-700 - latin */
-@font-face {
- font-family: 'Fira Sans';
- font-style: normal;
- font-weight: 700;
- font-display:swap;
- src: local('Fira Sans Bold'), local('FiraSans-Bold'),
- url('./fira-sans-v10-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
- url('./fira-sans-v10-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-
-/* fira-sans-700italic - latin */
-@font-face {
- font-family: 'Fira Sans';
- font-style: italic;
- font-weight: 700;
- font-display:swap;
- src: local('Fira Sans Bold Italic'), local('FiraSans-BoldItalic'),
- url('./fira-sans-v10-latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
- url('./fira-sans-v10-latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-
-:root {
- --font-family-base: 'Fira Sans', Arial, sans-serif;
-}
-
-body {
- font-family: var(--font-family-base);
- font-weight: 400;
-}
diff --git a/build/media_source/fonts/josefin-sans-v16-latin-600.woff b/build/media_source/fonts/josefin-sans-v16-latin-600.woff
deleted file mode 100644
index c077491477..0000000000
Binary files a/build/media_source/fonts/josefin-sans-v16-latin-600.woff and /dev/null differ
diff --git a/build/media_source/fonts/josefin-sans-v16-latin-600.woff2 b/build/media_source/fonts/josefin-sans-v16-latin-600.woff2
deleted file mode 100644
index aaa2eab4fa..0000000000
Binary files a/build/media_source/fonts/josefin-sans-v16-latin-600.woff2 and /dev/null differ
diff --git a/build/media_source/fonts/josefin-sans-v16-latin-600italic.woff b/build/media_source/fonts/josefin-sans-v16-latin-600italic.woff
deleted file mode 100644
index 871bd87929..0000000000
Binary files a/build/media_source/fonts/josefin-sans-v16-latin-600italic.woff and /dev/null differ
diff --git a/build/media_source/fonts/josefin-sans-v16-latin-600italic.woff2 b/build/media_source/fonts/josefin-sans-v16-latin-600italic.woff2
deleted file mode 100644
index d5833b9048..0000000000
Binary files a/build/media_source/fonts/josefin-sans-v16-latin-600italic.woff2 and /dev/null differ
diff --git a/build/media_source/fonts/josefin-sans-v16-latin-700.woff b/build/media_source/fonts/josefin-sans-v16-latin-700.woff
deleted file mode 100644
index 1c2cc2de12..0000000000
Binary files a/build/media_source/fonts/josefin-sans-v16-latin-700.woff and /dev/null differ
diff --git a/build/media_source/fonts/josefin-sans-v16-latin-700.woff2 b/build/media_source/fonts/josefin-sans-v16-latin-700.woff2
deleted file mode 100644
index bea0f56b71..0000000000
Binary files a/build/media_source/fonts/josefin-sans-v16-latin-700.woff2 and /dev/null differ
diff --git a/build/media_source/fonts/josefin-sans-v16-latin-700italic.woff b/build/media_source/fonts/josefin-sans-v16-latin-700italic.woff
deleted file mode 100644
index 95c95f41db..0000000000
Binary files a/build/media_source/fonts/josefin-sans-v16-latin-700italic.woff and /dev/null differ
diff --git a/build/media_source/fonts/josefin-sans-v16-latin-700italic.woff2 b/build/media_source/fonts/josefin-sans-v16-latin-700italic.woff2
deleted file mode 100644
index 918ce92b8a..0000000000
Binary files a/build/media_source/fonts/josefin-sans-v16-latin-700italic.woff2 and /dev/null differ
diff --git a/build/media_source/fonts/josefin-sans-v16-latin-italic.woff b/build/media_source/fonts/josefin-sans-v16-latin-italic.woff
deleted file mode 100644
index e23283abca..0000000000
Binary files a/build/media_source/fonts/josefin-sans-v16-latin-italic.woff and /dev/null differ
diff --git a/build/media_source/fonts/josefin-sans-v16-latin-italic.woff2 b/build/media_source/fonts/josefin-sans-v16-latin-italic.woff2
deleted file mode 100644
index faeab84929..0000000000
Binary files a/build/media_source/fonts/josefin-sans-v16-latin-italic.woff2 and /dev/null differ
diff --git a/build/media_source/fonts/josefin-sans-v16-latin-regular.woff b/build/media_source/fonts/josefin-sans-v16-latin-regular.woff
deleted file mode 100644
index b84ae72d8e..0000000000
Binary files a/build/media_source/fonts/josefin-sans-v16-latin-regular.woff and /dev/null differ
diff --git a/build/media_source/fonts/josefin-sans-v16-latin-regular.woff2 b/build/media_source/fonts/josefin-sans-v16-latin-regular.woff2
deleted file mode 100644
index 870b4b1314..0000000000
Binary files a/build/media_source/fonts/josefin-sans-v16-latin-regular.woff2 and /dev/null differ
diff --git a/build/media_source/fonts/josefin-sans.scss b/build/media_source/fonts/josefin-sans.scss
deleted file mode 100644
index 3612f5dc92..0000000000
--- a/build/media_source/fonts/josefin-sans.scss
+++ /dev/null
@@ -1,79 +0,0 @@
-/* josefin-sans-regular - latin */
-@font-face {
- font-family: 'Josefin Sans';
- font-style: normal;
- font-weight: 400;
- font-display: swap;
- src: local(''),
- url('./josefin-sans-v16-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
- url('./josefin-sans-v16-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-
-/* josefin-sans-600 - latin */
-@font-face {
- font-family: 'Josefin Sans';
- font-style: normal;
- font-weight: 600;
- font-display:swap;
- src: local(''),
- url('./josefin-sans-v16-latin-600.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
- url('./josefin-sans-v16-latin-600.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-
-/* josefin-sans-700 - latin */
-@font-face {
- font-family: 'Josefin Sans';
- font-style: normal;
- font-weight: 700;
- font-display:swap;
- src: local(''),
- url('./josefin-sans-v16-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
- url('./josefin-sans-v16-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-
-/* josefin-sans-italic - latin */
-@font-face {
- font-family: 'Josefin Sans';
- font-style: italic;
- font-weight: 400;
- font-display:swap;
- src: local(''),
- url('./josefin-sans-v16-latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
- url('./josefin-sans-v16-latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-
-/* josefin-sans-600italic - latin */
-@font-face {
- font-family: 'Josefin Sans';
- font-style: italic;
- font-weight: 600;
- font-display:swap;
- src: local(''),
- url('./josefin-sans-v16-latin-600italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
- url('./josefin-sans-v16-latin-600italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-
-/* josefin-sans-700italic - latin */
-@font-face {
- font-family: 'Josefin Sans';
- font-style: italic;
- font-weight: 700;
- font-display:swap;
- src: local(''),
- url('./josefin-sans-v16-latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
- url('./josefin-sans-v16-latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-
-:root {
- --font-family-base: 'Josefin Sans', Arial, sans-serif;
-}
-
-body {
- font-family: var(--font-family-base);
- font-weight: 400;
-}
-
-h1, h2, h3, h4, h5, h6 {
- font-family: var(--font-family-base);
- font-weight: 600;
-}
diff --git a/installation/sql/mysql/base.sql b/installation/sql/mysql/base.sql
index f5942f3ddd..ef29483c5c 100644
--- a/installation/sql/mysql/base.sql
+++ b/installation/sql/mysql/base.sql
@@ -797,7 +797,7 @@ CREATE TABLE IF NOT EXISTS `#__template_styles` (
INSERT INTO `#__template_styles` (`id`, `template`, `client_id`, `home`, `title`, `inheritable`, `parent`, `params`) VALUES
(10, 'atum', 1, '1', 'atum - Default', 0, '', ''),
-(11, 'cassiopeia', 0, '1', 'cassiopeia - Default', 0, '', '{"logoFile":"","fluidContainer":"0","sidebarLeftWidth":"3","sidebarRightWidth":"3","googleFont":"1","googleFontName":"fira-sans"}');
+(11, 'cassiopeia', 0, '1', 'cassiopeia - Default', 0, '', '{"logoFile":"","fluidContainer":"0","sidebarLeftWidth":"3","sidebarRightWidth":"3"}');
-- --------------------------------------------------------
diff --git a/installation/sql/postgresql/base.sql b/installation/sql/postgresql/base.sql
index 0006eacc5f..c9d032931b 100644
--- a/installation/sql/postgresql/base.sql
+++ b/installation/sql/postgresql/base.sql
@@ -812,7 +812,7 @@ CREATE INDEX "#__template_styles_idx_client_id_home" ON "#__template_styles" ("c
--
INSERT INTO "#__template_styles" ("id", "template", "client_id", "home", "title", "inheritable", "parent", "params") VALUES
(10, 'atum', 1, '1', 'atum - Default', 0, '', ''),
-(11, 'cassiopeia', 0, '1', 'cassiopeia - Default', 0, '', '{"logoFile":"","fluidContainer":"0","sidebarLeftWidth":"3","sidebarRightWidth":"3","googleFont":"1","googleFontName":"fira-sans"}');
+(11, 'cassiopeia', 0, '1', 'cassiopeia - Default', 0, '', '{"logoFile":"","fluidContainer":"0","sidebarLeftWidth":"3","sidebarRightWidth":"3"}');
SELECT setval('#__template_styles_id_seq', 12, false);
diff --git a/language/en-GB/tpl_cassiopeia.ini b/language/en-GB/tpl_cassiopeia.ini
index 6be05fc61e..2d53a97605 100644
--- a/language/en-GB/tpl_cassiopeia.ini
+++ b/language/en-GB/tpl_cassiopeia.ini
@@ -12,13 +12,12 @@ TPL_CASSIOPEIA_COLOR_NAME_SUMMER="Summer"
TPL_CASSIOPEIA_COLOR_NAME_WINTER="Winter"
TPL_CASSIOPEIA_FLUID="Fluid"
TPL_CASSIOPEIA_FLUID_LABEL="Fluid Layout"
+TPL_CASSIOPEIA_FONT_GROUP_LOCAL="Fonts from Folder"
+TPL_CASSIOPEIA_FONT_GROUP_WEB="Fonts from Web"
+TPL_CASSIOPEIA_FONT_LABEL="Fonts Scheme"
+TPL_CASSIOPEIA_FONT_NOTE_TEXT="Loading fonts from external sources might be against privacy regulations in some countries.
Loading fonts from a local folder might have a performance impact on your site."
TPL_CASSIOPEIA_LOGO_LABEL="Logo"
TPL_CASSIOPEIA_STATIC="Static"
TPL_CASSIOPEIA_STICKY_LABEL="Sticky Header"
TPL_CASSIOPEIA_TOGGLE="Toggle Navigation"
TPL_CASSIOPEIA_XML_DESCRIPTION="Continuing the space theme (Solarflare from 1.0, Milkyway from 1.5 and Protostar from 3.0), Cassiopeia is the Joomla 4 site template based on Bootstrap 4."
-TPL_CASSIOPEIA_FONT_LABEL="Google font for text and headings"
-TPL_CASSIOPEIA_FONT_DESC="Load Google font for text and headings (H1, H2, H3, etc)."
-TPL_CASSIOPEIA_FONT_NAME_LABEL="Google Font Name"
-TPL_CASSIOPEIA_FONT_NAME_DESC="Example: only one font Josefin Sans or a font combination Montserrat + Work Sans."
-
diff --git a/templates/cassiopeia/index.php b/templates/cassiopeia/index.php
index a5cf7928c8..ca2adbebb6 100644
--- a/templates/cassiopeia/index.php
+++ b/templates/cassiopeia/index.php
@@ -37,6 +37,17 @@
$wa->registerAndUseStyle($assetColorName, $templatePath . '/css/global/' . $paramsColorName . '.css');
$this->getPreloadManager()->preload($wa->getAsset('style', $assetColorName)->getUri(), ['as' => 'style']);
+// Use a font scheme if not "None" is set in the template style options
+$paramsFontScheme = $this->params->get('useFontScheme', 'fonts-local_roboto');
+
+if ($paramsFontScheme)
+{
+ // Preload the stylesheet for the font scheme, actually we need to preload the font(s)
+ $assetFontScheme = 'fontscheme.' . $paramsFontScheme;
+ $wa->registerAndUseStyle($assetFontScheme, $templatePath . '/css/global/' . $paramsFontScheme . '.css');
+ $this->getPreloadManager()->preload($wa->getAsset('style', $assetFontScheme)->getUri(), ['as' => 'style']);
+}
+
// Enable assets
$wa->usePreset('template.cassiopeia.' . ($this->direction === 'rtl' ? 'rtl' : 'ltr'))
->useStyle('template.active.language')
@@ -46,21 +57,6 @@
// Override 'template.active' asset to set correct ltr/rtl dependency
$wa->registerStyle('template.active', '', [], [], ['template.cassiopeia.' . ($this->direction === 'rtl' ? 'rtl' : 'ltr')]);
-// Use of Google Font
-if ($this->params->get('googleFont'))
-{
- // Preload the stylesheet for the font, actually we need to preload the font
- $paramsFontName = $this->params->get('googleFontName');
-
- if ($paramsFontName)
- {
- $assetFontName = 'font.' . $paramsFontName;
-
- $wa->registerAndUseStyle($assetFontName, 'media/fonts/' . $paramsFontName . '.css');
- $this->getPreloadManager()->preload($wa->getAsset('style', $assetFontName)->getUri(), ['as' => 'style']);
- }
-}
-
// Logo file or site title param
if ($this->params->get('logoFile'))
{
diff --git a/templates/cassiopeia/scss/blocks/_global.scss b/templates/cassiopeia/scss/blocks/_global.scss
index 79e872d861..881626113b 100644
--- a/templates/cassiopeia/scss/blocks/_global.scss
+++ b/templates/cassiopeia/scss/blocks/_global.scss
@@ -13,6 +13,7 @@ html {
}
body {
+ font-family: var(--cassiopeia-font-family-body);
padding: 0;
margin: 0;
line-height: 1.6;
@@ -29,7 +30,8 @@ h3,
h4,
h5,
h6 {
- font-weight: bold;
+ font-family: var(--cassiopeia-font-family-headings);
+ font-weight: var(--cassiopeia-font-weight-headings);
}
a {
diff --git a/templates/cassiopeia/scss/global/fonts-local_roboto.scss b/templates/cassiopeia/scss/global/fonts-local_roboto.scss
new file mode 100644
index 0000000000..42c8ee396c
--- /dev/null
+++ b/templates/cassiopeia/scss/global/fonts-local_roboto.scss
@@ -0,0 +1,8 @@
+// Fonts
+@import "../../../media/vendor/roboto-fontface/scss/roboto/roboto-fontface.css";
+
+:root {
+ --cassiopeia-font-family-body: "Roboto", sans-serif;
+ --cassiopeia-font-family-headings: "Roboto", sans-serif;
+ --cassiopeia-font-weight-headings: bold;
+}
diff --git a/templates/cassiopeia/scss/global/fonts-web_poppins+roboto.scss b/templates/cassiopeia/scss/global/fonts-web_poppins+roboto.scss
new file mode 100644
index 0000000000..64f2dfe57c
--- /dev/null
+++ b/templates/cassiopeia/scss/global/fonts-web_poppins+roboto.scss
@@ -0,0 +1,8 @@
+// Fonts
+@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@100;300;400;700&family=Roboto:wght@400;700&display=swap');
+
+:root {
+ --cassiopeia-font-family-body: "Roboto", sans-serif;
+ --cassiopeia-font-family-headings: "Poppins", sans-serif;
+ --cassiopeia-font-weight-headings: normal;
+}
diff --git a/templates/cassiopeia/scss/global/fonts-web_roboto+noto-sans.scss b/templates/cassiopeia/scss/global/fonts-web_roboto+noto-sans.scss
new file mode 100644
index 0000000000..d495853f80
--- /dev/null
+++ b/templates/cassiopeia/scss/global/fonts-web_roboto+noto-sans.scss
@@ -0,0 +1,8 @@
+// Fonts
+@import url('https://fonts.googleapis.com/css2?family=Noto+Sans:wght@100;300;400;700&family=Roboto:wght@100;300;400;700&display=swap');
+
+:root {
+ --cassiopeia-font-family-body: "Noto Sans", sans-serif;
+ --cassiopeia-font-family-headings: "Roboto", sans-serif;
+ --cassiopeia-font-weight-headings: normal;
+}
diff --git a/templates/cassiopeia/templateDetails.xml b/templates/cassiopeia/templateDetails.xml
index 4709927a3c..3df11bf8bc 100644
--- a/templates/cassiopeia/templateDetails.xml
+++ b/templates/cassiopeia/templateDetails.xml
@@ -70,16 +70,29 @@
/>
-
-
+
+
+
+
+
+
+
+
+
+
TPL_CASSIOPEIA_COLOR_NAME_WINTER
+
+
+
+
+
JNO
-
-
-
-
-
-
-