diff --git a/apps/accessibility/css/fontdyslexic.scss b/apps/accessibility/css/fontdyslexic.scss index 5df9bfb566..45638271f9 100644 --- a/apps/accessibility/css/fontdyslexic.scss +++ b/apps/accessibility/css/fontdyslexic.scss @@ -19,4 +19,4 @@ src: url('../fonts/OpenDyslexic-Bold.woff') format('woff'); } -$font-face: OpenDyslexic, 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; +$font-face: OpenDyslexic, 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; diff --git a/apps/accessibility/css/themehighcontrast.scss b/apps/accessibility/css/themehighcontrast.scss index 3d371365d5..ad6f9a5642 100644 --- a/apps/accessibility/css/themehighcontrast.scss +++ b/apps/accessibility/css/themehighcontrast.scss @@ -1,29 +1,3 @@ -// Fonts -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: normal; - src: local('Open Sans'), local('OpenSans'), - url('../../../core/fonts/OpenSans-Regular.woff') format('woff'); -} - -/* overriding default light */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 300; - src: local('Open Sans'), local('OpenSans'), - url('../../../core/fonts/OpenSans-Regular.woff') format('woff'); -} - -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 500 700; - src: local('Open Sans Bold'), local('OpenSans-Bold'), - url('../../../core/fonts/OpenSans-Bold.woff') format('woff'); -} - // SCSS variables $color-main-text: #000; $color-main-background: #fff; @@ -43,14 +17,6 @@ $color-box-shadow: $color-main-text; $color-border: darken($color-main-background, 50%); $color-border-dark: darken($color-main-background, 50%); -$font-face: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; - - -// Font weight reset -body { - font-weight: 400; -} - [class^='icon-'], [class*=' icon-'], .action { opacity: 1 !important; diff --git a/apps/user_ldap/css/renewPassword.css b/apps/user_ldap/css/renewPassword.css index 7493789eab..9f49dc23ca 100644 --- a/apps/user_ldap/css/renewPassword.css +++ b/apps/user_ldap/css/renewPassword.css @@ -22,7 +22,7 @@ .tooltip { position:absolute; display:block; - font-family:'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; + font-family: 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; font-style:normal; font-weight:400; letter-spacing:normal; diff --git a/core/css/apps.scss b/core/css/apps.scss index cce21aa26f..dc05d2b3fb 100644 --- a/core/css/apps.scss +++ b/core/css/apps.scss @@ -21,7 +21,7 @@ h2, h3, h4 { - font-weight: 600; + font-weight: bold; } h2 { @@ -727,7 +727,7 @@ kbd { border-radius: 0; text-align: left; padding-left: 42px; - font-weight: 400; + font-weight: normal; /* like app-navigation a */ color: var(--color-main-text); @@ -746,7 +746,6 @@ kbd { .section { display: block; padding: 30px; - color: var(--color-text-lighter); margin-bottom: 24px; &.hidden { display: none !important; @@ -804,7 +803,7 @@ kbd { margin-bottom: 1px; } &.selected { - font-weight: 600; + font-weight: bold; } &.selected, &:hover, @@ -921,7 +920,7 @@ $popovericon-size: 16px; align-items: flex-start; height: auto; margin: 0; - font-weight: 300; + font-weight: normal; box-shadow: none; width: 100%; color: var(--color-main-text); diff --git a/core/css/fonts.scss b/core/css/fonts.scss index 441b48f385..1e0b14af22 100644 --- a/core/css/fonts.scss +++ b/core/css/fonts.scss @@ -1,26 +1,43 @@ -/* for low-res screens, use Regular font-weight instead of Light */ -@media (-webkit-max-device-pixel-ratio: 1.3), (max-resolution: 124.8dpi) { - @font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: normal; - src: local('Open Sans'), local('OpenSans'), - url('../fonts/OpenSans-Regular.woff') format('woff'); - } +/* latin-ext */ +@font-face { + font-family: 'Nunito'; + font-style: normal; + font-weight: 400; /* normal */ + src: local('Nunito Regular'), local('Nunito-Regular'), + url('../fonts/Nunito-Regular-latin-ext.woff2') format('woff2'), + url('../fonts/Nunito-Regular.ttf') format('truetype'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; } +/* latin */ @font-face { - font-family: 'Open Sans'; + font-family: 'Nunito'; font-style: normal; - font-weight: 300; - src: local('Open Sans Light'), local('OpenSans-Light'), - url('../fonts/OpenSans-Light.woff') format('woff'); + font-weight: 400; /* normal */ + src: local('Nunito Regular'), local('Nunito-Regular'), + url('../fonts/Nunito-Regular.woff2') format('woff2'), + url('../fonts/Nunito-Regular.ttf') format('truetype'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } +/* latin-ext */ @font-face { - font-family: 'Open Sans'; + font-family: 'Nunito'; font-style: normal; - font-weight: 600; - src: local('Open Sans Semibold'), local('OpenSans-Semibold'), - url('../fonts/OpenSans-Semibold.woff') format('woff'); + font-weight: 700; /* bold */ + src: local('Nunito Bold'), local('Nunito-Bold'), + url('../fonts/Nunito-Bold-latin-ext.woff2') format('woff2'), + url('../fonts/Nunito-Bold.ttf') format('truetype'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +/* latin */ +@font-face { + font-family: 'Nunito'; + font-style: normal; + font-weight: 700; /* bold */ + src: local('Nunito Bold'), local('Nunito-Bold'), + url('../fonts/Nunito-Bold.woff2') format('woff2'), + url('../fonts/Nunito-Bold.ttf') format('truetype'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } diff --git a/core/css/guest.css b/core/css/guest.css index ca15fee189..70fd8706f3 100644 --- a/core/css/guest.css +++ b/core/css/guest.css @@ -16,10 +16,10 @@ ul { list-style:none; } body { background-color: #ffffff; - font-weight: 400; + font-weight: normal; font-size: .8em; line-height: 1.6em; - font-family: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; + font-family: 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; color: #000; text-align: center; background-color: #0082c9; @@ -56,7 +56,7 @@ em { h2, h3, h4 { - font-weight: 600; + font-weight: bold; } h2 { @@ -175,7 +175,7 @@ form #datadirField legend { } input, textarea, select, button, div[contenteditable=true] { - font-family: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; + font-family: 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; } input, input:not([type='range']), @@ -198,7 +198,7 @@ select { min-width: 25px; padding: 12px; background-color: white; - font-weight: 600; + font-weight: bold; color: #555; border: none; cursor: pointer; @@ -216,7 +216,7 @@ input[type='email'] { -moz-appearance: textfield; box-sizing: content-box; border: none; - font-weight: 300; + font-weight: normal; } input.login { width: 269px; @@ -421,7 +421,7 @@ form .warning input[type='checkbox']+label { margin: 0; } .two-factor-provider p { - font-weight: 300; + font-weight: normal; } .two-factor-icon { width: 100px; @@ -456,12 +456,12 @@ form .warning input[type='checkbox']+label { margin: 10px 0; text-align: center; width: 100%; - text-shadow: 0 0 2px rgba(0, 0, 0, .4); // better readability on bright background + text-shadow: 0 0 2px rgba(0, 0, 0, .4); /* better readability on bright background */ } .lost-password-container #lost-password, .lost-password-container #lost-password-back { display: inline-block; - font-weight: 300; + font-weight: normal; padding: 12px; margin-top: -6px; color: #fff; @@ -607,7 +607,7 @@ form #selectDbType label.ui-state-active { .warning a, .error a { color: #fff !important; - font-weight: 600 !important; + font-weight: bold !important; opacity: 1; } .error a.button { @@ -652,7 +652,7 @@ fieldset.update legend + p { } p.info { margin: 20px auto; - text-shadow: 0 0 2px rgba(0, 0, 0, .4); // better readability on bright background + text-shadow: 0 0 2px rgba(0, 0, 0, .4); /* better readability on bright background */ -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; @@ -803,7 +803,7 @@ footer { } footer .info .entity-name { - font-weight: 600; + font-weight: bold; } .hidden { @@ -823,26 +823,47 @@ a.legal { font-size: smaller; } -/* for low-res screens, use Regular font-weight instead of Light */ -@media (-webkit-max-device-pixel-ratio: 1.3), (max-resolution: 124.8dpi) { - @font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: normal; - src: local('Open Sans'), local('OpenSans'), url('../fonts/OpenSans-Regular.woff') format('woff'); - } + +/* latin-ext */ +@font-face { + font-family: 'Nunito'; + font-style: normal; + font-weight: 400; /* normal */ + src: local('Nunito Regular'), local('Nunito-Regular'), + url('../fonts/Nunito-Regular-latin-ext.woff2') format('woff2'), + url('../fonts/Nunito-Regular.ttf') format('truetype'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; } +/* latin */ @font-face { - font-family: 'Open Sans'; + font-family: 'Nunito'; font-style: normal; - font-weight: 300; - src: local('Open Sans Light'), local('OpenSans-Light'), url('../fonts/OpenSans-Light.woff') format('woff'); + font-weight: 400; /* normal */ + src: local('Nunito Regular'), local('Nunito-Regular'), + url('../fonts/Nunito-Regular.woff2') format('woff2'), + url('../fonts/Nunito-Regular.ttf') format('truetype'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } +/* latin-ext */ @font-face { - font-family: 'Open Sans'; + font-family: 'Nunito'; font-style: normal; - font-weight: 600; - src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url('../fonts/OpenSans-Semibold.woff') format('woff'); + font-weight: 700; /* bold */ + src: local('Nunito Bold'), local('Nunito-Bold'), + url('../fonts/Nunito-Bold-latin-ext.woff2') format('woff2'), + url('../fonts/Nunito-Bold.ttf') format('truetype'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +/* latin */ +@font-face { + font-family: 'Nunito'; + font-style: normal; + font-weight: 700; /* bold */ + src: local('Nunito Bold'), local('Nunito-Bold'), + url('../fonts/Nunito-Bold.woff2') format('woff2'), + url('../fonts/Nunito-Bold.ttf') format('truetype'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } diff --git a/core/css/header.scss b/core/css/header.scss index af98e20a9d..a80dbcc6cf 100644 --- a/core/css/header.scss +++ b/core/css/header.scss @@ -212,7 +212,7 @@ .header-appname { color: var(--color-primary-text); font-size: 16px; - font-weight: 600; + font-weight: bold; margin: 0; padding: 0; padding-right: 5px; diff --git a/core/css/inputs.scss b/core/css/inputs.scss index d28884d0c5..78857b322d 100644 --- a/core/css/inputs.scss +++ b/core/css/inputs.scss @@ -286,7 +286,7 @@ button img, } select, .button.multiselect { - font-weight: 400; + font-weight: normal; } /* Radio & Checkboxes */ diff --git a/core/css/public.scss b/core/css/public.scss index 0edf391fa4..20048870e2 100644 --- a/core/css/public.scss +++ b/core/css/public.scss @@ -70,7 +70,7 @@ $footer-height: 65px; color: var(--color-text-lighter); a { color: var(--color-text-lighter); - font-weight: 600; + font-weight: bold; white-space: nowrap; /* increasing clickability to more than the text height */ padding: 13px; diff --git a/core/css/styles.scss b/core/css/styles.scss index dc217fb8f2..6f65f00df1 100644 --- a/core/css/styles.scss +++ b/core/css/styles.scss @@ -84,7 +84,7 @@ ul { body { background-color: var(--color-main-background); - font-weight: 300; + font-weight: normal; font-size: .8em; line-height: 1.6em; font-family: var(--font-face); @@ -327,14 +327,14 @@ label.infield { .warning { legend, a { color: var(--color-primary-text) !important; - font-weight: 600 !important; + font-weight: bold !important; } } .error { a { color: var(--color-primary-text) !important; - font-weight: 600 !important; + font-weight: bold !important; &.button { color: var(--color-text-lighter) !important; display: inline-block; @@ -541,7 +541,7 @@ code { .ui-datepicker-title { line-height: 1; - font-weight: 300; + font-weight: normal; } .ui-icon { opacity: .5; @@ -622,7 +622,7 @@ code { .ui-timepicker-title { line-height: 1; - font-weight: 300; + font-weight: normal; } } /* AM/PM fix */ @@ -1025,7 +1025,7 @@ div.crumb { &:not(:first-child) a { } &:last-child { - font-weight: 600; + font-weight: bold; margin-right: 10px; // Allow multiple span next to the main 'a' a ~ span { diff --git a/core/css/tooltip.scss b/core/css/tooltip.scss index ad433185f1..a23f5d3c34 100644 --- a/core/css/tooltip.scss +++ b/core/css/tooltip.scss @@ -13,9 +13,9 @@ .tooltip { position: absolute; display: block; - font-family: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; + font-family: 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; font-style: normal; - font-weight: 400; + font-weight: normal; letter-spacing: normal; line-break: auto; line-height: 1.6; @@ -135,4 +135,4 @@ height: 0; border-color: transparent; border-style: solid; -} \ No newline at end of file +} diff --git a/core/css/variables.scss b/core/css/variables.scss index 8617c6e27d..f105118ada 100644 --- a/core/css/variables.scss +++ b/core/css/variables.scss @@ -31,7 +31,7 @@ // SCSS variables // DEPRECATED, please use CSS4 vars -$color-main-text: #000 !default; +$color-main-text: #222 !default; // Not #000 for better readability $color-main-background: #fff !default; // used for different active/disabled states @@ -75,7 +75,7 @@ $color-border-dark: nc-darken($color-main-background, 14%) !default; $border-radius: 3px !default; $border-radius-large: 10px; -$font-face: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif !default; +$font-face: 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif !default; // various structure data diff --git a/core/fonts/LICENSE.txt b/core/fonts/LICENSE.txt deleted file mode 100644 index 75b52484ea..0000000000 --- a/core/fonts/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/core/fonts/Nunito-Bold-latin-ext.woff2 b/core/fonts/Nunito-Bold-latin-ext.woff2 new file mode 100644 index 0000000000..d69ce0d32e Binary files /dev/null and b/core/fonts/Nunito-Bold-latin-ext.woff2 differ diff --git a/core/fonts/Nunito-Bold.ttf b/core/fonts/Nunito-Bold.ttf new file mode 100644 index 0000000000..d203733482 Binary files /dev/null and b/core/fonts/Nunito-Bold.ttf differ diff --git a/core/fonts/Nunito-Bold.woff2 b/core/fonts/Nunito-Bold.woff2 new file mode 100644 index 0000000000..fef6db672d Binary files /dev/null and b/core/fonts/Nunito-Bold.woff2 differ diff --git a/core/fonts/Nunito-Regular-latin-ext.woff2 b/core/fonts/Nunito-Regular-latin-ext.woff2 new file mode 100644 index 0000000000..8c7dd0f989 Binary files /dev/null and b/core/fonts/Nunito-Regular-latin-ext.woff2 differ diff --git a/core/fonts/Nunito-Regular.ttf b/core/fonts/Nunito-Regular.ttf new file mode 100644 index 0000000000..93a3f3e78e Binary files /dev/null and b/core/fonts/Nunito-Regular.ttf differ diff --git a/core/fonts/Nunito-Regular.woff2 b/core/fonts/Nunito-Regular.woff2 new file mode 100644 index 0000000000..28b65a12e6 Binary files /dev/null and b/core/fonts/Nunito-Regular.woff2 differ diff --git a/core/fonts/OFL.txt b/core/fonts/OFL.txt new file mode 100644 index 0000000000..601d961cd9 --- /dev/null +++ b/core/fonts/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2014 The Nunito Project Authors (contact@sansoxygen.com) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/core/fonts/OpenSans-Bold.ttf b/core/fonts/OpenSans-Bold.ttf deleted file mode 100644 index 80281ee0fc..0000000000 Binary files a/core/fonts/OpenSans-Bold.ttf and /dev/null differ diff --git a/core/fonts/OpenSans-Bold.woff b/core/fonts/OpenSans-Bold.woff deleted file mode 100644 index 138089c2ba..0000000000 Binary files a/core/fonts/OpenSans-Bold.woff and /dev/null differ diff --git a/core/fonts/OpenSans-Light.ttf b/core/fonts/OpenSans-Light.ttf deleted file mode 100644 index ecdea2de23..0000000000 Binary files a/core/fonts/OpenSans-Light.ttf and /dev/null differ diff --git a/core/fonts/OpenSans-Light.woff b/core/fonts/OpenSans-Light.woff deleted file mode 100644 index 085eb478ef..0000000000 Binary files a/core/fonts/OpenSans-Light.woff and /dev/null differ diff --git a/core/fonts/OpenSans-Regular.ttf b/core/fonts/OpenSans-Regular.ttf deleted file mode 100644 index 29b9057ec4..0000000000 Binary files a/core/fonts/OpenSans-Regular.ttf and /dev/null differ diff --git a/core/fonts/OpenSans-Regular.woff b/core/fonts/OpenSans-Regular.woff deleted file mode 100644 index a3f58d41a4..0000000000 Binary files a/core/fonts/OpenSans-Regular.woff and /dev/null differ diff --git a/core/fonts/OpenSans-Semibold.ttf b/core/fonts/OpenSans-Semibold.ttf deleted file mode 100644 index 9c90d4ce83..0000000000 Binary files a/core/fonts/OpenSans-Semibold.ttf and /dev/null differ diff --git a/core/fonts/OpenSans-Semibold.woff b/core/fonts/OpenSans-Semibold.woff deleted file mode 100644 index 66428f67eb..0000000000 Binary files a/core/fonts/OpenSans-Semibold.woff and /dev/null differ diff --git a/lib/private/Avatar.php b/lib/private/Avatar.php index d107bb47c5..97e1c0535a 100644 --- a/lib/private/Avatar.php +++ b/lib/private/Avatar.php @@ -62,15 +62,18 @@ class Avatar implements IAvatar { /** * https://github.com/sebdesign/cap-height -- for 500px height - * Open Sans cap-height is 0.72 and we want a 200px caps height size (0.4 letter-to-total-height ratio, 500*0.4=200). 200/0.72 = 278px. - * Since we start from the baseline (text-anchor) we need to shift the y axis by 100px (half the caps height): 500/2+100=350 - * - * @var string + * Automated check: https://codepen.io/skjnldsv/pen/PydLBK/ + * Nunito cap-height is 0.716 and we want a 200px caps height size + * (0.4 letter-to-total-height ratio, 500*0.4=200), so: 200/0.716 = 279px. + * Since we start from the baseline (text-anchor) we need to + * shift the y axis by 100px (half the caps height): 500/2+100=350 + * + * @var string */ private $svgTemplate = ' - {letter} + {letter} '; /** @@ -189,7 +192,7 @@ class Avatar implements IAvatar { // } $this->user->triggerChange('avatar', $file); - } + } /** * remove the users avatar @@ -285,15 +288,15 @@ class Avatar implements IAvatar { } throw new NotFoundException; } - + /** * {size} = 500 * {fill} = hex color to fill * {letter} = Letter to display - * + * * Generate SVG avatar * @return string - * + * */ private function getAvatarVector(int $size): string { $userDisplayName = $this->user->getDisplayName(); @@ -301,14 +304,14 @@ class Avatar implements IAvatar { $bgRGB = $this->avatarBackgroundColor($userDisplayName); $bgHEX = sprintf("%02x%02x%02x", $bgRGB->r, $bgRGB->g, $bgRGB->b); $letter = mb_strtoupper(mb_substr($userDisplayName, 0, 1), 'UTF-8'); - + $toReplace = ['{size}', '{fill}', '{letter}']; return str_replace($toReplace, [$size, $bgHEX, $letter], $this->svgTemplate); } /** * Generate png avatar from svg with Imagick - * + * * @param int $size * @return string|boolean */ @@ -317,7 +320,7 @@ class Avatar implements IAvatar { return false; } try { - $font = __DIR__ . '/../../core/fonts/OpenSans-Semibold.ttf'; + $font = __DIR__ . '/../../core/fonts/Nunito-Regular.ttf'; $svg = $this->getAvatarVector($size); $avatar = new Imagick(); $avatar->setFont($font); @@ -333,7 +336,7 @@ class Avatar implements IAvatar { /** * Generate png avatar with GD - * + * * @param string $userDisplayName * @param int $size * @return string @@ -347,7 +350,7 @@ class Avatar implements IAvatar { $white = imagecolorallocate($im, 255, 255, 255); imagefilledrectangle($im, 0, 0, $size, $size, $background); - $font = __DIR__ . '/../../core/fonts/OpenSans-Semibold.ttf'; + $font = __DIR__ . '/../../core/fonts/Nunito-Regular.ttf'; $fontSize = $size * 0.4; @@ -455,7 +458,7 @@ class Avatar implements IAvatar { public function avatarBackgroundColor(string $hash) { // Normalize hash $hash = strtolower($hash); - + // Already a md5 hash? if( preg_match('/^([0-9a-f]{4}-?){8}$/', $hash, $matches) !== 1 ) { $hash = md5($hash); diff --git a/lib/private/Preview/TXT.php b/lib/private/Preview/TXT.php index 2925e5bd53..a5efb73010 100644 --- a/lib/private/Preview/TXT.php +++ b/lib/private/Preview/TXT.php @@ -69,7 +69,7 @@ class TXT extends Provider { $fontFile = __DIR__; $fontFile .= '/../../../core'; - $fontFile .= '/fonts/OpenSans-Regular.ttf'; + $fontFile .= '/fonts/Nunito-Regular.ttf'; $canUseTTF = function_exists('imagettftext'); diff --git a/settings/css/settings.scss b/settings/css/settings.scss index 66361922d0..8500d6a835 100644 --- a/settings/css/settings.scss +++ b/settings/css/settings.scss @@ -328,7 +328,7 @@ select { &.active { box-shadow: inset 2px 0 var(--color-primary); .menuitem-text { - font-weight: 600; + font-weight: bold; } } } @@ -566,7 +566,7 @@ li.active { width: 150px; } label { - font-weight: 700; + font-weight: bold; } } diff --git a/tests/lib/AvatarTest.php b/tests/lib/AvatarTest.php index 759dd38556..c8c9d3b831 100644 --- a/tests/lib/AvatarTest.php +++ b/tests/lib/AvatarTest.php @@ -48,7 +48,7 @@ class AvatarTest extends \Test\TestCase { $this->createMock(ILogger::class), $this->config ); - + // abcdefghi is a convenient name that our algorithm convert to our nextcloud blue 0082c9 $this->user->method('getDisplayName')->willReturn('abcdefghi'); } @@ -231,11 +231,11 @@ class AvatarTest extends \Test\TestCase { public function testGenerateSvgAvatar() { $avatar = $this->invokePrivate($this->avatar, 'getAvatarVector', [64]); - + $svg = ' - A + A '; $this->assertEquals($avatar, $svg); }