From f6dd78734f86f8daed7c5d472e7a199301095ff8 Mon Sep 17 00:00:00 2001 From: Jonas Kohl Date: Tue, 17 Sep 2024 13:39:12 +0200 Subject: More theme and i18n stuff --- src/.htaccess | 5 + src/application/i18n.php | 6 + src/application/messages/de.msg | 10 + src/application/views/template_end.php | 41 ++- src/application/views/view_logintoreply.php | 7 + src/index.php | 82 ++++- src/themes/.htaccess | 1 + src/themes/yeti/theme.json | 1 + src/ui/fonts/opensans.css | 83 +++++ src/ui/fonts/opensans/open-sans-v40-latin-300.eot | Bin 0 -> 19829 bytes src/ui/fonts/opensans/open-sans-v40-latin-300.svg | 348 +++++++++++++++++++ src/ui/fonts/opensans/open-sans-v40-latin-300.ttf | Bin 0 -> 35356 bytes src/ui/fonts/opensans/open-sans-v40-latin-300.woff | Bin 0 -> 22940 bytes .../fonts/opensans/open-sans-v40-latin-300.woff2 | Bin 0 -> 18704 bytes .../opensans/open-sans-v40-latin-300italic.eot | Bin 0 -> 20588 bytes .../opensans/open-sans-v40-latin-300italic.svg | 377 ++++++++++++++++++++ .../opensans/open-sans-v40-latin-300italic.ttf | Bin 0 -> 36564 bytes .../opensans/open-sans-v40-latin-300italic.woff | Bin 0 -> 23620 bytes .../opensans/open-sans-v40-latin-300italic.woff2 | Bin 0 -> 19332 bytes src/ui/fonts/opensans/open-sans-v40-latin-700.eot | Bin 0 -> 19337 bytes src/ui/fonts/opensans/open-sans-v40-latin-700.svg | 349 +++++++++++++++++++ src/ui/fonts/opensans/open-sans-v40-latin-700.ttf | Bin 0 -> 35300 bytes src/ui/fonts/opensans/open-sans-v40-latin-700.woff | Bin 0 -> 22332 bytes .../fonts/opensans/open-sans-v40-latin-700.woff2 | Bin 0 -> 18260 bytes .../opensans/open-sans-v40-latin-700italic.eot | Bin 0 -> 20089 bytes .../opensans/open-sans-v40-latin-700italic.svg | 379 +++++++++++++++++++++ .../opensans/open-sans-v40-latin-700italic.ttf | Bin 0 -> 36376 bytes .../opensans/open-sans-v40-latin-700italic.woff | Bin 0 -> 22952 bytes .../opensans/open-sans-v40-latin-700italic.woff2 | Bin 0 -> 18860 bytes .../fonts/opensans/open-sans-v40-latin-italic.eot | Bin 0 -> 20563 bytes .../fonts/opensans/open-sans-v40-latin-italic.svg | 379 +++++++++++++++++++++ .../fonts/opensans/open-sans-v40-latin-italic.ttf | Bin 0 -> 36384 bytes .../fonts/opensans/open-sans-v40-latin-italic.woff | Bin 0 -> 23564 bytes .../opensans/open-sans-v40-latin-italic.woff2 | Bin 0 -> 19280 bytes .../fonts/opensans/open-sans-v40-latin-regular.eot | Bin 0 -> 19820 bytes .../fonts/opensans/open-sans-v40-latin-regular.svg | 349 +++++++++++++++++++ .../fonts/opensans/open-sans-v40-latin-regular.ttf | Bin 0 -> 35324 bytes .../opensans/open-sans-v40-latin-regular.woff | Bin 0 -> 22908 bytes .../opensans/open-sans-v40-latin-regular.woff2 | Bin 0 -> 18668 bytes 39 files changed, 2398 insertions(+), 19 deletions(-) create mode 100644 src/application/views/view_logintoreply.php create mode 100644 src/themes/.htaccess create mode 100644 src/ui/fonts/opensans.css create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-300.eot create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-300.svg create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-300.ttf create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-300.woff create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-300.woff2 create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-300italic.eot create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-300italic.svg create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-300italic.ttf create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-300italic.woff create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-300italic.woff2 create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-700.eot create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-700.svg create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-700.ttf create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-700.woff create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-700.woff2 create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-700italic.eot create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-700italic.svg create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-700italic.ttf create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-700italic.woff create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-700italic.woff2 create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-italic.eot create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-italic.svg create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-italic.ttf create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-italic.woff create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-italic.woff2 create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-regular.eot create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-regular.svg create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-regular.ttf create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-regular.woff create mode 100644 src/ui/fonts/opensans/open-sans-v40-latin-regular.woff2 (limited to 'src') diff --git a/src/.htaccess b/src/.htaccess index f4a5e0d..d167d15 100644 --- a/src/.htaccess +++ b/src/.htaccess @@ -1,3 +1,8 @@ +DirectorySlash Off + RewriteEngine On RewriteRule ^/?@([a-z0-9]([._](?![._])|[a-z0-9]){2,30}[a-z0-9])$ /index.php?_action=lookupuser&handle=$1 [L] + +RewriteRule ^/?vendor/ - [F,L] +RewriteRule ^/?composer\. - [F,L] diff --git a/src/application/i18n.php b/src/application/i18n.php index cdc61e1..a1f2f24 100644 --- a/src/application/i18n.php +++ b/src/application/i18n.php @@ -183,6 +183,12 @@ function i18n_get(string $msgid, array $params = [], ?string $context = null): s ); } +function i18n_metadata(string $lang): array { + global $__i18n_msg_metadata; + + return $__i18n_msg_metadata[$lang] ?? []; +} + function i18n_get_plural(string $msgid_singular, string $msgid_plural, int $count, array $params = [], ?string $context = null): string { global $__i18n_current_locale, $__i18n_msg_metadata, $__i18n_msg_store_plural; diff --git a/src/application/messages/de.msg b/src/application/messages/de.msg index c77a569..ed8178e 100644 --- a/src/application/messages/de.msg +++ b/src/application/messages/de.msg @@ -1,4 +1,5 @@ metadata({ + "langName": "Deutsch", "plural": { "indexMapping": "ifelse(n = 0, 2, ifelse(n = 1, 0, 1))" } @@ -308,3 +309,12 @@ metadata({ : "Keep post" = "Beitrag beibehalten" + +: "Log in to reply to this topic" += "Melden Sie sich an, um auf dieses Thema zu antworten" + +: "Theme:" += "Aussehen:" + +: "Language:" += "Sprache:" diff --git a/src/application/views/template_end.php b/src/application/views/template_end.php index d12e2ff..f322b36 100644 --- a/src/application/views/template_end.php +++ b/src/application/views/template_end.php @@ -3,8 +3,41 @@
- © . - Powered by Mystic Forum + + + + + + + +
+ © . + Powered by mysticBB. + +
+ "> +
+ + +
+
+     +
+ "> +
+ + +
+
+
@@ -24,6 +57,10 @@ $(function() { ], ]) ?> + $(".auto-submit").on("change", function() { + $(this)[0].form.submit(); + }); + $("._time").each(function(i, e) { var date = new Date($(e).text()); $(e).text(date.toLocaleString()); diff --git a/src/application/views/view_logintoreply.php b/src/application/views/view_logintoreply.php new file mode 100644 index 0000000..11e0e1e --- /dev/null +++ b/src/application/views/view_logintoreply.php @@ -0,0 +1,7 @@ +
+
+ " class="btn btn-success"> + + + +
\ No newline at end of file diff --git a/src/index.php b/src/index.php index 1807608..1b13e97 100644 --- a/src/index.php +++ b/src/index.php @@ -49,7 +49,7 @@ function msg_error(string $err, bool $skipLoginCheck = false): void { _view("template_navigation", ["user" => RequestUtils::getAuthorizedUser($GLOBALS["db"])]); _view("template_navigation_end"); _view("alert_error", ["message" => $err]); - _view("template_end"); + _view("template_end", [...getThemeAndLangInfo()]); } function msg_info(string $msg, bool $skipLoginCheck = false): void { @@ -59,7 +59,7 @@ function msg_info(string $msg, bool $skipLoginCheck = false): void { _view("template_navigation", ["user" => RequestUtils::getAuthorizedUser($GLOBALS["db"])]); _view("template_navigation_end"); _view("alert_info", ["message" => $msg]); - _view("template_end"); + _view("template_end", [...getThemeAndLangInfo()]); } function generateCaptchaText(): string { @@ -69,13 +69,47 @@ function generateCaptchaText(): string { return $phrase; } -function _view(string $name, array $params = []): void { - $___NAME = $name; - $___PARAMS = &$params; - extract($params); - echo "\n"; - include __DIR__ . "/application/views/" . $___NAME . ".php"; - echo "\n"; +function getThemeAndLangInfo(): array { + $availableThemes = []; + $currentTheme = $_GET["theme"] ?? $_COOKIE["theme"] ?? env("MYSTIC_FORUM_THEME") ?? "default"; + foreach (scandir($dir = __DIR__ . '/themes/') as $ent) { + if ($ent[0] === "." || !is_dir($dir . "/" . $ent) || !is_file($theme_file = $dir . "/" . $ent . "/theme.json")) + continue; + $theme_info = json_decode(file_get_contents($theme_file)); + $availableThemes[$ent] = $theme_info; + } + + $availableLangs = [ + "en" => "English", + ]; + foreach (i18n_get_available_locales() as $loc) { + if (isset($availableLangs[$loc])) + continue; + $metadata = i18n_metadata($loc); + $availableLangs[$loc] = $metadata["langName"] ?? $loc; + } + + return [ + "availableThemes" => $availableThemes, + "currentTheme" => $currentTheme, + + "availableLangs" => $availableLangs, + "currentLang" => i18n_get_current_locale(), + ]; +} + +function _view(string $___NAME, array $___PARAMS = []): void { + $___PATH = __DIR__ . "/application/views/" . $___NAME . ".php"; + if (!is_file($___PATH)) { + echo "\n"; + echo "

Failed to include " . htmlentities($___NAME) . "


\n"; + echo "\n"; + } else { + extract($___PARAMS); + echo "\n"; + include $___PATH; + echo "\n"; + } } function isTrue(string $str): bool { @@ -242,7 +276,7 @@ if ($_action === "auth") { _view("template_navigation", ["user" => RequestUtils::getAuthorizedUser($db)]); _view("template_navigation_end"); _view("form_login"); - _view("template_end"); + _view("template_end", [...getThemeAndLangInfo()]); } } elseif ($_action === "register") { if ($currentUser) { @@ -350,7 +384,7 @@ if ($_action === "auth") { _view("template_navigation", ["user" => RequestUtils::getAuthorizedUser($db)]); _view("template_navigation_end"); _view("form_register"); - _view("template_end"); + _view("template_end", [...getThemeAndLangInfo()]); } } elseif ($_action === "verifyemail") { RequestUtils::ensureRequestMethod("GET"); @@ -503,9 +537,11 @@ if ($_action === "auth") { if ($currentUser) { _view("form_addpost"); + } else { + _view("view_logintoreply"); } - _view("template_end"); + _view("template_end", [...getThemeAndLangInfo()]); } } elseif ($_action === "newtopic") { @@ -581,7 +617,7 @@ if ($_action === "auth") { _view("template_navigation", ["user" => RequestUtils::getAuthorizedUser($db)]); _view("template_navigation_end"); _view("form_newtopic"); - _view("template_end"); + _view("template_end", [...getThemeAndLangInfo()]); } } elseif ($_action === "lookupuser") { RequestUtils::ensureRequestMethod("GET"); @@ -700,7 +736,7 @@ if ($_action === "auth") { "attachments" => $attachments, "lastNameChangeTooRecent" => $lastNameChangeTooRecent, ]); - _view("template_end"); + _view("template_end", [...getThemeAndLangInfo()]); } } elseif ($_action === "attachment") { if (!$currentUser) { @@ -946,7 +982,7 @@ if ($_action === "auth") { "topicAuthor" => null, "attachments" => $attachments, ]); - _view("template_end"); + _view("template_end", [...getThemeAndLangInfo()]); } } elseif ($_action === "updatepost") { RequestUtils::ensureRequestMethod("POST"); @@ -1056,7 +1092,7 @@ if ($_action === "auth") { "topic" => $topic, "topicAuthor" => $topicAuthor, ]); - _view("template_end"); + _view("template_end", [...getThemeAndLangInfo()]); } } elseif ($_action === "updatetopic") { RequestUtils::ensureRequestMethod("POST"); @@ -1123,6 +1159,18 @@ if ($_action === "auth") { $theme_info = json_decode(file_get_contents($theme_file)); echo $ent . "\t" . $theme_info->name . "\n"; } +} elseif ($_action === "settheme") { + RequestUtils::ensureRequestMethod("POST"); + $theme = $_POST["theme"] ?? exit(msg_error("Missing required field 'theme'") ?? 1); + $next = $_POST["next"] ?? "."; + setcookie("theme", $theme, time()+60*60*24*30); + header("Location: $next"); +} elseif ($_action === "setlang") { + RequestUtils::ensureRequestMethod("POST"); + $lang = $_POST["lang"] ?? exit(msg_error("Missing required field 'lang'") ?? 1); + $next = $_POST["next"] ?? "."; + setcookie("lang", $lang, time()+60*60*24*30); + header("Location: $next"); } elseif ($_action === "ctheme") { // options $enableLogging = true; @@ -1204,7 +1252,7 @@ if ($_action === "auth") { _view("template_navigation", ["user" => RequestUtils::getAuthorizedUser($db)]); _view("template_navigation_end"); _view("view_topics", ["topics" => $db->fetchCustom(Topic::class, "ORDER BY creation_date DESC")]); - _view("template_end"); + _view("template_end", [...getThemeAndLangInfo()]); } else { http_response_code(404); msg_error(__("Invalid or unknown action $_action")); diff --git a/src/themes/.htaccess b/src/themes/.htaccess new file mode 100644 index 0000000..b66e808 --- /dev/null +++ b/src/themes/.htaccess @@ -0,0 +1 @@ +Require all denied diff --git a/src/themes/yeti/theme.json b/src/themes/yeti/theme.json index 2652e19..37786c7 100644 --- a/src/themes/yeti/theme.json +++ b/src/themes/yeti/theme.json @@ -7,6 +7,7 @@ "files": [ "../../ui/yeti.min.css", "../../ui/site.css", + "../../ui/fonts/opensans.css", [ ".image-attachment-image {", "box-shadow: 0 0 0 1px #ccc;", diff --git a/src/ui/fonts/opensans.css b/src/ui/fonts/opensans.css new file mode 100644 index 0000000..09fd403 --- /dev/null +++ b/src/ui/fonts/opensans.css @@ -0,0 +1,83 @@ +/* open-sans-300 - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: url('/ui/fonts/opensans/open-sans-v40-latin-300.eot'); /* IE9 Compat Modes */ + src: url('/ui/fonts/opensans/open-sans-v40-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/ui/fonts/opensans/open-sans-v40-latin-300.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-300.woff') format('woff'), /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+, iOS 5+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-300.ttf') format('truetype'), /* Chrome 4+, Firefox 3.5+, IE 9+, Safari 3.1+, iOS 4.2+, Android Browser 2.2+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-300.svg#OpenSans') format('svg'); /* Legacy iOS */ +} + +/* open-sans-300italic - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: url('/ui/fonts/opensans/open-sans-v40-latin-300italic.eot'); /* IE9 Compat Modes */ + src: url('/ui/fonts/opensans/open-sans-v40-latin-300italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/ui/fonts/opensans/open-sans-v40-latin-300italic.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-300italic.woff') format('woff'), /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+, iOS 5+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-300italic.ttf') format('truetype'), /* Chrome 4+, Firefox 3.5+, IE 9+, Safari 3.1+, iOS 4.2+, Android Browser 2.2+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-300italic.svg#OpenSans') format('svg'); /* Legacy iOS */ +} + +/* open-sans-regular - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: url('/ui/fonts/opensans/open-sans-v40-latin-regular.eot'); /* IE9 Compat Modes */ + src: url('/ui/fonts/opensans/open-sans-v40-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/ui/fonts/opensans/open-sans-v40-latin-regular.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-regular.woff') format('woff'), /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+, iOS 5+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-regular.ttf') format('truetype'), /* Chrome 4+, Firefox 3.5+, IE 9+, Safari 3.1+, iOS 4.2+, Android Browser 2.2+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-regular.svg#OpenSans') format('svg'); /* Legacy iOS */ +} + +/* open-sans-italic - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: url('/ui/fonts/opensans/open-sans-v40-latin-italic.eot'); /* IE9 Compat Modes */ + src: url('/ui/fonts/opensans/open-sans-v40-latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/ui/fonts/opensans/open-sans-v40-latin-italic.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-italic.woff') format('woff'), /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+, iOS 5+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-italic.ttf') format('truetype'), /* Chrome 4+, Firefox 3.5+, IE 9+, Safari 3.1+, iOS 4.2+, Android Browser 2.2+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-italic.svg#OpenSans') format('svg'); /* Legacy iOS */ +} + +/* open-sans-700 - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: url('/ui/fonts/opensans/open-sans-v40-latin-700.eot'); /* IE9 Compat Modes */ + src: url('/ui/fonts/opensans/open-sans-v40-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/ui/fonts/opensans/open-sans-v40-latin-700.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-700.woff') format('woff'), /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+, iOS 5+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-700.ttf') format('truetype'), /* Chrome 4+, Firefox 3.5+, IE 9+, Safari 3.1+, iOS 4.2+, Android Browser 2.2+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-700.svg#OpenSans') format('svg'); /* Legacy iOS */ +} + +/* open-sans-700italic - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + src: url('/ui/fonts/opensans/open-sans-v40-latin-700italic.eot'); /* IE9 Compat Modes */ + src: url('/ui/fonts/opensans/open-sans-v40-latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/ui/fonts/opensans/open-sans-v40-latin-700italic.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-700italic.woff') format('woff'), /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+, iOS 5+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-700italic.ttf') format('truetype'), /* Chrome 4+, Firefox 3.5+, IE 9+, Safari 3.1+, iOS 4.2+, Android Browser 2.2+ */ + url('/ui/fonts/opensans/open-sans-v40-latin-700italic.svg#OpenSans') format('svg'); /* Legacy iOS */ +} diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-300.eot b/src/ui/fonts/opensans/open-sans-v40-latin-300.eot new file mode 100644 index 0000000..e21595c Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-300.eot differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-300.svg b/src/ui/fonts/opensans/open-sans-v40-latin-300.svg new file mode 100644 index 0000000..acb0bbb --- /dev/null +++ b/src/ui/fonts/opensans/open-sans-v40-latin-300.svg @@ -0,0 +1,348 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-300.ttf b/src/ui/fonts/opensans/open-sans-v40-latin-300.ttf new file mode 100644 index 0000000..65a9714 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-300.ttf differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-300.woff b/src/ui/fonts/opensans/open-sans-v40-latin-300.woff new file mode 100644 index 0000000..4d55675 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-300.woff differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-300.woff2 b/src/ui/fonts/opensans/open-sans-v40-latin-300.woff2 new file mode 100644 index 0000000..e000fcb Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-300.woff2 differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-300italic.eot b/src/ui/fonts/opensans/open-sans-v40-latin-300italic.eot new file mode 100644 index 0000000..8dc8349 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-300italic.eot differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-300italic.svg b/src/ui/fonts/opensans/open-sans-v40-latin-300italic.svg new file mode 100644 index 0000000..d2034b9 --- /dev/null +++ b/src/ui/fonts/opensans/open-sans-v40-latin-300italic.svg @@ -0,0 +1,377 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-300italic.ttf b/src/ui/fonts/opensans/open-sans-v40-latin-300italic.ttf new file mode 100644 index 0000000..ea96075 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-300italic.ttf differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-300italic.woff b/src/ui/fonts/opensans/open-sans-v40-latin-300italic.woff new file mode 100644 index 0000000..d94b1b9 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-300italic.woff differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-300italic.woff2 b/src/ui/fonts/opensans/open-sans-v40-latin-300italic.woff2 new file mode 100644 index 0000000..5167821 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-300italic.woff2 differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-700.eot b/src/ui/fonts/opensans/open-sans-v40-latin-700.eot new file mode 100644 index 0000000..25f63b7 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-700.eot differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-700.svg b/src/ui/fonts/opensans/open-sans-v40-latin-700.svg new file mode 100644 index 0000000..8e12729 --- /dev/null +++ b/src/ui/fonts/opensans/open-sans-v40-latin-700.svg @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-700.ttf b/src/ui/fonts/opensans/open-sans-v40-latin-700.ttf new file mode 100644 index 0000000..4c14c29 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-700.ttf differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-700.woff b/src/ui/fonts/opensans/open-sans-v40-latin-700.woff new file mode 100644 index 0000000..cefbac0 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-700.woff differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-700.woff2 b/src/ui/fonts/opensans/open-sans-v40-latin-700.woff2 new file mode 100644 index 0000000..7e3b8b0 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-700.woff2 differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-700italic.eot b/src/ui/fonts/opensans/open-sans-v40-latin-700italic.eot new file mode 100644 index 0000000..7cc26a4 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-700italic.eot differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-700italic.svg b/src/ui/fonts/opensans/open-sans-v40-latin-700italic.svg new file mode 100644 index 0000000..ea675ea --- /dev/null +++ b/src/ui/fonts/opensans/open-sans-v40-latin-700italic.svg @@ -0,0 +1,379 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-700italic.ttf b/src/ui/fonts/opensans/open-sans-v40-latin-700italic.ttf new file mode 100644 index 0000000..629d074 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-700italic.ttf differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-700italic.woff b/src/ui/fonts/opensans/open-sans-v40-latin-700italic.woff new file mode 100644 index 0000000..74310ca Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-700italic.woff differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-700italic.woff2 b/src/ui/fonts/opensans/open-sans-v40-latin-700italic.woff2 new file mode 100644 index 0000000..2c96334 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-700italic.woff2 differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-italic.eot b/src/ui/fonts/opensans/open-sans-v40-latin-italic.eot new file mode 100644 index 0000000..abf1d65 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-italic.eot differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-italic.svg b/src/ui/fonts/opensans/open-sans-v40-latin-italic.svg new file mode 100644 index 0000000..9bcd7c2 --- /dev/null +++ b/src/ui/fonts/opensans/open-sans-v40-latin-italic.svg @@ -0,0 +1,379 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-italic.ttf b/src/ui/fonts/opensans/open-sans-v40-latin-italic.ttf new file mode 100644 index 0000000..2475663 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-italic.ttf differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-italic.woff b/src/ui/fonts/opensans/open-sans-v40-latin-italic.woff new file mode 100644 index 0000000..dc3013a Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-italic.woff differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-italic.woff2 b/src/ui/fonts/opensans/open-sans-v40-latin-italic.woff2 new file mode 100644 index 0000000..84ee197 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-italic.woff2 differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-regular.eot b/src/ui/fonts/opensans/open-sans-v40-latin-regular.eot new file mode 100644 index 0000000..2e2c567 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-regular.eot differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-regular.svg b/src/ui/fonts/opensans/open-sans-v40-latin-regular.svg new file mode 100644 index 0000000..12bc366 --- /dev/null +++ b/src/ui/fonts/opensans/open-sans-v40-latin-regular.svg @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-regular.ttf b/src/ui/fonts/opensans/open-sans-v40-latin-regular.ttf new file mode 100644 index 0000000..ddd69dc Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-regular.ttf differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-regular.woff b/src/ui/fonts/opensans/open-sans-v40-latin-regular.woff new file mode 100644 index 0000000..9df0918 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-regular.woff differ diff --git a/src/ui/fonts/opensans/open-sans-v40-latin-regular.woff2 b/src/ui/fonts/opensans/open-sans-v40-latin-regular.woff2 new file mode 100644 index 0000000..eaae942 Binary files /dev/null and b/src/ui/fonts/opensans/open-sans-v40-latin-regular.woff2 differ -- cgit v1.2.3