diff --git a/assets/fonts/Inter-Black.ttf b/assets/fonts/Inter-Black.ttf new file mode 100644 index 00000000..e284fa00 Binary files /dev/null and b/assets/fonts/Inter-Black.ttf differ diff --git a/assets/fonts/Inter-Bold.ttf b/assets/fonts/Inter-Bold.ttf new file mode 100644 index 00000000..f13d511d Binary files /dev/null and b/assets/fonts/Inter-Bold.ttf differ diff --git a/assets/fonts/Inter-ExtraBold.ttf b/assets/fonts/Inter-ExtraBold.ttf new file mode 100644 index 00000000..2b55fc13 Binary files /dev/null and b/assets/fonts/Inter-ExtraBold.ttf differ diff --git a/assets/fonts/Inter-ExtraLight.ttf b/assets/fonts/Inter-ExtraLight.ttf new file mode 100644 index 00000000..af2bfbb3 Binary files /dev/null and b/assets/fonts/Inter-ExtraLight.ttf differ diff --git a/assets/fonts/Inter-Light.ttf b/assets/fonts/Inter-Light.ttf new file mode 100644 index 00000000..34546cfd Binary files /dev/null and b/assets/fonts/Inter-Light.ttf differ diff --git a/assets/fonts/Inter-Medium.ttf b/assets/fonts/Inter-Medium.ttf new file mode 100644 index 00000000..9a3396fc Binary files /dev/null and b/assets/fonts/Inter-Medium.ttf differ diff --git a/assets/fonts/Inter-Regular.ttf b/assets/fonts/Inter-Regular.ttf new file mode 100644 index 00000000..2c164bb2 Binary files /dev/null and b/assets/fonts/Inter-Regular.ttf differ diff --git a/assets/fonts/Inter-SemiBold.ttf b/assets/fonts/Inter-SemiBold.ttf new file mode 100644 index 00000000..b9743712 Binary files /dev/null and b/assets/fonts/Inter-SemiBold.ttf differ diff --git a/assets/fonts/Inter-Thin.ttf b/assets/fonts/Inter-Thin.ttf new file mode 100644 index 00000000..7f5b005a Binary files /dev/null and b/assets/fonts/Inter-Thin.ttf differ diff --git a/assets/fonts/LICENSE.txt b/assets/fonts/LICENSE.txt new file mode 100644 index 00000000..75b52484 --- /dev/null +++ b/assets/fonts/LICENSE.txt @@ -0,0 +1,202 @@ + + 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/assets/fonts/OFL.txt b/assets/fonts/OFL.txt new file mode 100644 index 00000000..ad214842 --- /dev/null +++ b/assets/fonts/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) + +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/lib/licenses.dart b/lib/licenses.dart index 14520467..c9f6a018 100644 --- a/lib/licenses.dart +++ b/lib/licenses.dart @@ -549,6 +549,103 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0.'''); + yield LicenseEntryWithLineBreaks(["Inter Fonts"], ''' + Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) + +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. + + '''); + yield LicenseEntryWithLineBreaks(["Roboto fonts"], ''' Apache License diff --git a/lib/main.dart b/lib/main.dart index 8b73312c..356937e6 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -58,7 +58,6 @@ class Flwtch extends StatefulWidget { enum ConnectivityState { assumed_online, confirmed_offline, confirmed_online } class FlwtchState extends State with WindowListener { - final TextStyle biggerFont = const TextStyle(fontSize: 18); late Cwtch cwtch; late ProfileListState profs; final MethodChannel notificationClickChannel = MethodChannel('im.cwtch.flwtch/notificationClickHandler'); diff --git a/lib/models/messages/quotedmessage.dart b/lib/models/messages/quotedmessage.dart index cfe82714..fc00b20f 100644 --- a/lib/models/messages/quotedmessage.dart +++ b/lib/models/messages/quotedmessage.dart @@ -45,8 +45,8 @@ class QuotedMessage extends Message { linkifiers: [UrlLinkifier()], onOpen: null, textAlign: TextAlign.left, - style: TextStyle(overflow: TextOverflow.ellipsis), - codeStyle: TextStyle(overflow: TextOverflow.ellipsis), + style: TextStyle(fontSize: 12.0 * Provider.of(context).fontScaling, fontWeight: FontWeight.normal, fontFamily: "Inter", overflow: TextOverflow.ellipsis), + codeStyle: TextStyle(fontSize: 12.0 * Provider.of(context).fontScaling, fontWeight: FontWeight.normal, fontFamily: "Inter", overflow: TextOverflow.ellipsis), textWidthBasis: TextWidthBasis.longestLine); } catch (e) { return MalformedBubble(); diff --git a/lib/models/messages/textmessage.dart b/lib/models/messages/textmessage.dart index d832d685..1833dfff 100644 --- a/lib/models/messages/textmessage.dart +++ b/lib/models/messages/textmessage.dart @@ -31,8 +31,12 @@ class TextMessage extends Message { linkifiers: [UrlLinkifier()], onOpen: null, textAlign: TextAlign.left, - style: TextStyle(overflow: TextOverflow.fade), - codeStyle: TextStyle(overflow: TextOverflow.ellipsis), + style: TextStyle(overflow: TextOverflow.fade, fontFamily: "Inter", fontSize: 12.0 * Provider.of(context).fontScaling), + linkStyle: TextStyle(overflow: TextOverflow.fade, fontFamily: "Inter", fontSize: 12.0 * Provider.of(context).fontScaling), + codeStyle: TextStyle( + overflow: TextOverflow.ellipsis, + fontFamily: "RobotoMono", + ), textWidthBasis: TextWidthBasis.parent, ); }); diff --git a/lib/themes/opaque.dart b/lib/themes/opaque.dart index 4178a192..730cff48 100644 --- a/lib/themes/opaque.dart +++ b/lib/themes/opaque.dart @@ -153,7 +153,7 @@ ThemeData mkThemeData(Settings opaque) { iconTheme: IconThemeData( color: opaque.current().mainTextColor, ), - titleTextStyle: TextStyle(color: opaque.current().mainTextColor, fontSize: opaque.fontScaling * 18.0), + titleTextStyle: TextStyle(fontWeight: FontWeight.bold, fontFamily: "Inter", color: opaque.current().mainTextColor, fontSize: opaque.fontScaling * 18.0), actionsIconTheme: IconThemeData( color: opaque.current().mainTextColor, )), @@ -191,26 +191,29 @@ ThemeData mkThemeData(Settings opaque) { indicator: UnderlineTabIndicator(borderSide: BorderSide(color: opaque.current().defaultButtonActiveColor))), dialogTheme: DialogTheme( backgroundColor: opaque.current().backgroundPaneColor, - titleTextStyle: TextStyle(color: opaque.current().mainTextColor), + titleTextStyle: TextStyle(fontFamily: "Inter", fontWeight: FontWeight.bold, color: opaque.current().mainTextColor), contentTextStyle: TextStyle( + fontFamily: "Inter", color: opaque.current().mainTextColor, )), textTheme: TextTheme( - displayMedium: TextStyle(fontSize: opaque.fontScaling * 16.0, color: opaque.current().mainTextColor), - displaySmall: TextStyle(fontSize: opaque.fontScaling * 14.0, color: opaque.current().mainTextColor), - displayLarge: TextStyle(fontSize: opaque.fontScaling * 18.0, color: opaque.current().mainTextColor), - titleSmall: TextStyle(fontSize: opaque.fontScaling * 16.0, color: opaque.current().mainTextColor), - titleLarge: TextStyle(fontSize: opaque.fontScaling * 18.0, color: opaque.current().mainTextColor), - titleMedium: TextStyle(fontSize: opaque.fontScaling * 20.0, color: opaque.current().mainTextColor), - bodySmall: TextStyle(fontSize: opaque.fontScaling * 12.0, color: opaque.current().mainTextColor), - bodyMedium: TextStyle(fontSize: opaque.fontScaling * 14.0, color: opaque.current().mainTextColor), - bodyLarge: TextStyle(fontSize: opaque.fontScaling * 16.0, color: opaque.current().mainTextColor), - headlineSmall: TextStyle(fontSize: opaque.fontScaling * 24.0, color: opaque.current().mainTextColor), - headlineMedium: TextStyle(fontSize: opaque.fontScaling * 26.0, color: opaque.current().mainTextColor), - headlineLarge: TextStyle(fontSize: opaque.fontScaling * 28.0, color: opaque.current().mainTextColor), - labelSmall: TextStyle(fontSize: opaque.fontScaling * 14.0, color: opaque.current().mainTextColor), - labelLarge: TextStyle(fontSize: opaque.fontScaling * 16.0, color: opaque.current().mainTextColor), - labelMedium: TextStyle(fontSize: opaque.fontScaling * 18.0, color: opaque.current().mainTextColor), + // NOTE: The following font scales were arrived at after consulting the material text scale + // docs: https://m3.material.io/styles/typography/type-scale-tokens and some trial and error + displayMedium: TextStyle(fontFamily: "Inter", fontSize: opaque.fontScaling * 16.0, color: opaque.current().mainTextColor), + displaySmall: TextStyle(fontFamily: "Inter", fontSize: opaque.fontScaling * 14.0, color: opaque.current().mainTextColor), + displayLarge: TextStyle(fontFamily: "Inter", fontSize: opaque.fontScaling * 18.0, color: opaque.current().mainTextColor), + titleSmall: TextStyle(fontFamily: "Inter", fontWeight: FontWeight.bold, fontSize: opaque.fontScaling * 16.0, color: opaque.current().mainTextColor), + titleLarge: TextStyle(fontFamily: "Inter", fontWeight: FontWeight.bold, fontSize: opaque.fontScaling * 18.0, color: opaque.current().mainTextColor), + titleMedium: TextStyle(fontFamily: "Inter", fontWeight: FontWeight.bold, fontSize: opaque.fontScaling * 20.0, color: opaque.current().mainTextColor), + bodySmall: TextStyle(fontFamily: "Inter", fontSize: opaque.fontScaling * 12.0, color: opaque.current().mainTextColor), + bodyMedium: TextStyle(fontFamily: "Inter", fontSize: opaque.fontScaling * 14.0, color: opaque.current().mainTextColor), + bodyLarge: TextStyle(fontFamily: "Inter", fontSize: opaque.fontScaling * 16.0, color: opaque.current().mainTextColor), + headlineSmall: TextStyle(fontFamily: "Inter", fontWeight: FontWeight.bold, fontSize: opaque.fontScaling * 24.0, color: opaque.current().mainTextColor), + headlineMedium: TextStyle(fontFamily: "Inter", fontWeight: FontWeight.bold, fontSize: opaque.fontScaling * 26.0, color: opaque.current().mainTextColor), + headlineLarge: TextStyle(fontFamily: "Inter", fontWeight: FontWeight.bold, fontSize: opaque.fontScaling * 28.0, color: opaque.current().mainTextColor), + labelSmall: TextStyle(fontFamily: "Inter", fontWeight: FontWeight.w100, fontSize: opaque.fontScaling * 14.0, color: opaque.current().mainTextColor), + labelLarge: TextStyle(fontFamily: "Inter", fontWeight: FontWeight.w200, fontSize: opaque.fontScaling * 16.0, color: opaque.current().mainTextColor), + labelMedium: TextStyle(fontFamily: "Inter", fontWeight: FontWeight.w300, fontSize: opaque.fontScaling * 18.0, color: opaque.current().mainTextColor), ), switchTheme: SwitchThemeData( overlayColor: MaterialStateProperty.all(opaque.current().defaultButtonActiveColor), diff --git a/lib/views/addeditservers.dart b/lib/views/addeditservers.dart index 978c8573..cba4fffd 100644 --- a/lib/views/addeditservers.dart +++ b/lib/views/addeditservers.dart @@ -159,7 +159,9 @@ class _AddEditServerViewState extends State { SizedBox( height: 20, ), - Text(AppLocalizations.of(context)!.serverMetricsLabel, style: Provider.of(context).biggerFont), + Text( + AppLocalizations.of(context)!.serverMetricsLabel, + ), Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row(crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(AppLocalizations.of(context)!.serverTotalMessagesLabel), diff --git a/lib/views/contactsview.dart b/lib/views/contactsview.dart index 3bb9cc30..9f189cca 100644 --- a/lib/views/contactsview.dart +++ b/lib/views/contactsview.dart @@ -187,7 +187,12 @@ class _ContactsViewState extends State { ), Expanded( child: Text("%1 ยป %2".replaceAll("%1", Provider.of(context).nickname).replaceAll("%2", AppLocalizations.of(context)!.titleManageContacts), - overflow: TextOverflow.ellipsis, style: TextStyle(color: Provider.of(context).current().mainTextColor))), + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: Provider.of(context).current().mainTextColor, + fontFamily: "Inter", + fontWeight: FontWeight.bold, + fontSize: 14.0 * Provider.of(context).fontScaling))), ]), actions: getActions(context), ), @@ -397,7 +402,7 @@ class _ContactsViewState extends State { AppLocalizations.of(context)!.addContact, semanticsLabel: AppLocalizations.of(context)!.addContact, textAlign: TextAlign.center, - style: TextStyle(fontWeight: FontWeight.bold), + style: TextStyle(fontFamily: "Inter", fontSize: 10.0 * Provider.of(context).fontScaling, fontWeight: FontWeight.bold), ), onPressed: () { _pushAddContact(false); @@ -419,7 +424,7 @@ class _ContactsViewState extends State { AppLocalizations.of(context)!.addServerTitle, semanticsLabel: AppLocalizations.of(context)!.addServerTitle, textAlign: TextAlign.center, - style: TextStyle(fontWeight: FontWeight.bold), + style: TextStyle(fontFamily: "Inter", fontSize: 10.0 * Provider.of(context).fontScaling, fontWeight: FontWeight.bold), ), onPressed: groupsEnabled ? () { @@ -444,7 +449,7 @@ class _ContactsViewState extends State { AppLocalizations.of(context)!.createGroupTitle, semanticsLabel: AppLocalizations.of(context)!.createGroupTitle, textAlign: TextAlign.center, - style: TextStyle(fontWeight: FontWeight.bold), + style: TextStyle(fontFamily: "Inter", fontSize: 10.0 * Provider.of(context).fontScaling, fontWeight: FontWeight.bold), ), onPressed: groupsEnabled ? () { diff --git a/lib/views/globalsettingsview.dart b/lib/views/globalsettingsview.dart index 55f00a72..80b68926 100644 --- a/lib/views/globalsettingsview.dart +++ b/lib/views/globalsettingsview.dart @@ -110,7 +110,7 @@ class _GlobalSettingsViewState extends State { child: Column(children: [ Row(mainAxisAlignment: MainAxisAlignment.center, children: [Text(AppLocalizations.of(context)!.settingsGroupAppearance, style: TextStyle(fontWeight: FontWeight.bold))]), ListTile( - title: Text(AppLocalizations.of(context)!.settingLanguage, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.settingLanguage), leading: Icon(CwtchIcons.change_language, color: settings.current().mainTextColor), trailing: Container( width: MediaQuery.of(context).size.width / 4, @@ -132,7 +132,7 @@ class _GlobalSettingsViewState extends State { ); }).toList()))), SwitchListTile( - title: Text(AppLocalizations.of(context)!.settingTheme, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.settingTheme), value: settings.current().mode == mode_light, onChanged: (bool value) { if (value) { @@ -171,7 +171,7 @@ class _GlobalSettingsViewState extends State { leading: Icon(Icons.palette, color: settings.current().mainTextColor), ), ListTile( - title: Text(AppLocalizations.of(context)!.settingUIColumnPortrait, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.settingUIColumnPortrait), leading: Icon(Icons.table_chart, color: settings.current().mainTextColor), trailing: Container( width: MediaQuery.of(context).size.width / 4, @@ -217,7 +217,7 @@ class _GlobalSettingsViewState extends State { ); }).toList())))), ListTile( - title: Text(AppLocalizations.of(context)!.defaultScalingText, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.defaultScalingText), subtitle: Text(AppLocalizations.of(context)!.defaultScalingText), trailing: Container( width: MediaQuery.of(context).size.width / 4, @@ -239,7 +239,7 @@ class _GlobalSettingsViewState extends State { leading: Icon(Icons.format_size, color: settings.current().mainTextColor), ), SwitchListTile( - title: Text(AppLocalizations.of(context)!.streamerModeLabel, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.streamerModeLabel), subtitle: Text(AppLocalizations.of(context)!.descriptionStreamerMode), value: settings.streamerMode, onChanged: (bool value) { @@ -252,7 +252,7 @@ class _GlobalSettingsViewState extends State { secondary: Icon(CwtchIcons.streamer_bunnymask, color: settings.current().mainTextColor), ), SwitchListTile( - title: Text(AppLocalizations.of(context)!.formattingExperiment, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.formattingExperiment), subtitle: Text(AppLocalizations.of(context)!.messageFormattingDescription), value: settings.isExperimentEnabled(FormattingExperiment), onChanged: (bool value) { @@ -274,7 +274,7 @@ class _GlobalSettingsViewState extends State { Visibility( visible: Platform.isAndroid, child: SwitchListTile( - title: Text(AppLocalizations.of(context)!.settingAndroidPowerExemption, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.settingAndroidPowerExemption), subtitle: Text(AppLocalizations.of(context)!.settingAndroidPowerExemptionDescription), value: powerExempt, onChanged: (bool value) { @@ -337,7 +337,7 @@ class _GlobalSettingsViewState extends State { leading: Icon(CwtchIcons.chat_bubble_empty_24px, color: settings.current().mainTextColor), ), SwitchListTile( - title: Text(AppLocalizations.of(context)!.blockUnknownLabel, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.blockUnknownLabel), subtitle: Text(AppLocalizations.of(context)!.descriptionBlockUnknownConnections), value: settings.blockUnknownConnections, onChanged: (bool value) { @@ -359,7 +359,7 @@ class _GlobalSettingsViewState extends State { ), Row(mainAxisAlignment: MainAxisAlignment.center, children: [Text(AppLocalizations.of(context)!.settingsGroupExperiments, style: TextStyle(fontWeight: FontWeight.bold))]), SwitchListTile( - title: Text(AppLocalizations.of(context)!.experimentsEnabled, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.experimentsEnabled), subtitle: Text(AppLocalizations.of(context)!.descriptionExperiments), value: settings.experimentsEnabled, onChanged: (bool value) { @@ -380,7 +380,7 @@ class _GlobalSettingsViewState extends State { child: Column( children: [ SwitchListTile( - title: Text(AppLocalizations.of(context)!.enableGroups, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.enableGroups), subtitle: Text(AppLocalizations.of(context)!.descriptionExperimentsGroups), value: settings.isExperimentEnabled(TapirGroupsExperiment), onChanged: (bool value) { @@ -422,7 +422,7 @@ class _GlobalSettingsViewState extends State { secondary: Icon(CwtchIcons.dns_24px), )), SwitchListTile( - title: Text(AppLocalizations.of(context)!.settingFileSharing, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.settingFileSharing), subtitle: Text(AppLocalizations.of(context)!.descriptionFileSharing), value: settings.isExperimentEnabled(FileSharingExperiment), onChanged: (bool value) { @@ -447,7 +447,7 @@ class _GlobalSettingsViewState extends State { visible: settings.isExperimentEnabled(FileSharingExperiment), child: Column(children: [ SwitchListTile( - title: Text(AppLocalizations.of(context)!.settingImagePreviews, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.settingImagePreviews), subtitle: Text(AppLocalizations.of(context)!.settingImagePreviewsDescription), value: settings.isExperimentEnabled(ImagePreviewsExperiment), onChanged: (bool value) { @@ -483,7 +483,7 @@ class _GlobalSettingsViewState extends State { ]), ), SwitchListTile( - title: Text(AppLocalizations.of(context)!.blodeuweddExperimentEnable, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.blodeuweddExperimentEnable), subtitle: Provider.of(context, listen: false).cwtch.IsBlodeuweddSupported() ? Text(AppLocalizations.of(context)!.blodeuweddDescription) : Text(AppLocalizations.of(context)!.blodeuweddNotSupported), @@ -522,7 +522,7 @@ class _GlobalSettingsViewState extends State { Visibility( visible: settings.experimentsEnabled, child: SwitchListTile( - title: Text(AppLocalizations.of(context)!.enableExperimentClickableLinks, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.enableExperimentClickableLinks), subtitle: Text(AppLocalizations.of(context)!.experimentClickableLinksDescription), value: settings.isExperimentEnabled(ClickableLinksExperiment), onChanged: (bool value) { @@ -540,7 +540,7 @@ class _GlobalSettingsViewState extends State { Visibility( visible: settings.experimentsEnabled, child: SwitchListTile( - title: Text(AppLocalizations.of(context)!.enableExperimentQRCode, style: TextStyle(color: settings.current().mainTextColor)), + title: Text(AppLocalizations.of(context)!.enableExperimentQRCode), subtitle: Text(AppLocalizations.of(context)!.experimentQRCodeDescription), value: settings.isExperimentEnabled(QRCodeExperiment), onChanged: (bool value) { @@ -569,7 +569,7 @@ class _GlobalSettingsViewState extends State { ]), SwitchListTile( // TODO: Translate, Remove, OR Hide Prior to Release - title: Text("Show Performance Overlay", style: TextStyle(color: settings.current().mainTextColor)), + title: Text("Show Performance Overlay"), subtitle: Text("Display an overlay graph of render time."), value: settings.profileMode, onChanged: (bool value) { @@ -588,7 +588,7 @@ class _GlobalSettingsViewState extends State { Visibility( visible: EnvironmentConfig.BUILD_VER == dev_version && !Platform.isAndroid, child: SwitchListTile( - title: Text("Show Semantic Debugger", style: TextStyle(color: settings.current().mainTextColor)), + title: Text("Show Semantic Debugger"), subtitle: Text("Show Accessibility Debugging View"), value: settings.useSemanticDebugger, onChanged: (bool value) { diff --git a/lib/views/messageview.dart b/lib/views/messageview.dart index 96791583..ac0afa7b 100644 --- a/lib/views/messageview.dart +++ b/lib/views/messageview.dart @@ -235,6 +235,7 @@ class _MessageViewState extends State { alignment: Alignment.centerLeft, child: Text( Provider.of(context).augmentedNickname(context), + style: TextStyle(fontFamily: "Inter", fontWeight: FontWeight.bold, fontSize: 14.0 * Provider.of(context).fontScaling), overflow: TextOverflow.clip, maxLines: 1, )))) @@ -429,15 +430,20 @@ class _MessageViewState extends State { onOpen: showClickableLinks ? null : null, style: TextStyle( color: Provider.of(context).theme.messageFromMeTextColor, - fontSize: 16, + fontFamily: "Inter", + fontWeight: FontWeight.normal, + fontSize: 16.0 * Provider.of(context).fontScaling, ), linkStyle: TextStyle( color: Provider.of(context).theme.messageFromMeTextColor, - fontSize: 16, + fontFamily: "Inter", + fontWeight: FontWeight.normal, + fontSize: 16.0 * Provider.of(context).fontScaling, ), codeStyle: TextStyle( // note: these colors are flipped - fontSize: 16, + fontWeight: FontWeight.normal, + fontSize: 16.0 * Provider.of(context).fontScaling, color: Provider.of(context).theme.messageFromOtherTextColor, backgroundColor: Provider.of(context).theme.messageFromOtherBackgroundColor), textAlign: TextAlign.left, @@ -606,6 +612,11 @@ class _MessageViewState extends State { maxLengthEnforcement: MaxLengthEnforcement.enforced, maxLines: 3, onFieldSubmitted: _sendMessage, + style: TextStyle( + fontFamily: "Inter", + fontSize: 12.0 * Provider.of(context).fontScaling, + fontWeight: FontWeight.w500, + ), enabled: true, // always allow editing... onChanged: (String x) { @@ -616,7 +627,7 @@ class _MessageViewState extends State { }, decoration: InputDecoration( hintText: isOffline ? "" : AppLocalizations.of(context)!.placeholderEnterMessage, - hintStyle: TextStyle(color: Provider.of(context).theme.sendHintTextColor), + hintStyle: TextStyle(fontFamily: "Inter", fontSize: 10.0 * Provider.of(context).fontScaling, color: Provider.of(context).theme.sendHintTextColor), enabledBorder: InputBorder.none, focusedBorder: InputBorder.none, enabled: true, diff --git a/lib/views/remoteserverview.dart b/lib/views/remoteserverview.dart index 9afbe13d..b9f70f91 100644 --- a/lib/views/remoteserverview.dart +++ b/lib/views/remoteserverview.dart @@ -131,7 +131,7 @@ class _RemoteServerViewState extends State { child: Column(children: [ Text( group.nickname, - style: Provider.of(context).biggerFont.apply(color: Provider.of(context).theme.portraitOnlineBorderColor), + style: TextStyle(fontWeight: FontWeight.bold, color: Provider.of(context).theme.portraitOnlineBorderColor), softWrap: true, overflow: TextOverflow.ellipsis, ), diff --git a/lib/widgets/contactrow.dart b/lib/widgets/contactrow.dart index 01eba222..bdcc203d 100644 --- a/lib/widgets/contactrow.dart +++ b/lib/widgets/contactrow.dart @@ -68,7 +68,9 @@ class _ContactRowState extends State { contact.augmentedNickname(context) + (contact.messageDraft.isEmpty() ? "" : "*"), style: TextStyle( - fontSize: Provider.of(context).theme.contactOnionTextSize(), + fontSize: Provider.of(context).fontScaling * 14.0, + fontFamily: "Inter", + fontWeight: FontWeight.bold, color: contact.isBlocked ? Provider.of(context).theme.portraitBlockedTextColor : Provider.of(context).theme.mainTextColor), //Provider.of(context).biggerFont, diff --git a/lib/widgets/filebubble.dart b/lib/widgets/filebubble.dart index 7ab8282e..f88237d8 100644 --- a/lib/widgets/filebubble.dart +++ b/lib/widgets/filebubble.dart @@ -138,7 +138,7 @@ class FileBubbleState extends State { return Row( children: [ Icon(CwtchIcons.attached_file_2, size: 32, color: Provider.of(context).theme.messageFromMeTextColor), - Flexible(child: Text(widget.nameSuggestion, style: TextStyle(color: Provider.of(context).theme.messageFromMeTextColor))) + Flexible(child: Text(widget.nameSuggestion, style: TextStyle(fontWeight: FontWeight.bold, fontFamily: "Inter", color: Provider.of(context).theme.messageFromMeTextColor))) ], ); } @@ -147,11 +147,15 @@ class FileBubbleState extends State { var wdgSender = Visibility( visible: widget.interactive, child: Container( - height: 11, + height: 14 * Provider.of(context).fontScaling, clipBehavior: Clip.hardEdge, decoration: BoxDecoration(), child: SelectableText(senderDisplayStr + '\u202F', - style: TextStyle(fontSize: 9.0, color: fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor)))); + style: TextStyle( + fontSize: 9.0 * Provider.of(context).fontScaling, + fontWeight: FontWeight.bold, + fontFamily: "Inter", + color: fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor)))); var isPreview = false; var wdgMessage = !showFileSharing ? Text(AppLocalizations.of(context)!.messageEnableFileSharing) @@ -310,6 +314,9 @@ class FileBubbleState extends State { chrome + '\u202F', style: TextStyle( color: Provider.of(context).theme.messageFromMeTextColor, + fontWeight: FontWeight.normal, + fontFamily: "Inter", + fontSize: 12 * Provider.of(context).fontScaling, ), textAlign: TextAlign.left, maxLines: 2, @@ -321,6 +328,8 @@ class FileBubbleState extends State { color: Provider.of(context).theme.messageFromMeTextColor, fontWeight: FontWeight.bold, overflow: TextOverflow.ellipsis, + fontFamily: "Inter", + fontSize: 12 * Provider.of(context).fontScaling, ), textAlign: TextAlign.left, textWidthBasis: TextWidthBasis.parent, @@ -330,6 +339,8 @@ class FileBubbleState extends State { prettyBytes(fileSize) + '\u202F' + '\n', style: TextStyle( color: Provider.of(context).theme.messageFromMeTextColor, + fontSize: 10 * Provider.of(context).fontScaling, + fontFamily: "Inter", ), textAlign: TextAlign.left, maxLines: 2, @@ -339,8 +350,8 @@ class FileBubbleState extends State { 'sha512: ' + rootHash + '\u202F', style: TextStyle( color: Provider.of(context).theme.messageFromMeTextColor, - fontSize: 10, - fontFamily: "monospace", + fontSize: 10 * Provider.of(context).fontScaling, + fontFamily: "RobotoMono", ), textAlign: TextAlign.left, maxLines: 4, @@ -358,6 +369,8 @@ class FileBubbleState extends State { chrome + '\u202F', style: TextStyle( color: Provider.of(context).theme.messageFromOtherTextColor, + fontSize: 12 * Provider.of(context).fontScaling, + fontFamily: "Inter", ), textAlign: TextAlign.left, maxLines: 2, @@ -369,6 +382,7 @@ class FileBubbleState extends State { color: Provider.of(context).theme.messageFromOtherTextColor, fontWeight: FontWeight.bold, overflow: TextOverflow.ellipsis, + fontFamily: "Inter", ), textAlign: TextAlign.left, textWidthBasis: TextWidthBasis.parent, @@ -378,6 +392,8 @@ class FileBubbleState extends State { AppLocalizations.of(context)!.labelFilesize + ': ' + prettyBytes(fileSize) + '\u202F' + '\n', style: TextStyle( color: Provider.of(context).theme.messageFromOtherTextColor, + fontFamily: "Inter", + fontSize: 10 * Provider.of(context).fontScaling, ), textAlign: TextAlign.left, maxLines: 2, @@ -387,8 +403,8 @@ class FileBubbleState extends State { 'sha512: ' + rootHash + '\u202F', style: TextStyle( color: Provider.of(context).theme.messageFromMeTextColor, - fontSize: 10, - fontFamily: "monospace", + fontSize: 10 * Provider.of(context).fontScaling, + fontFamily: "RobotoMono", ), textAlign: TextAlign.left, maxLines: 4, @@ -401,6 +417,8 @@ class FileBubbleState extends State { speed + '\u202F', style: TextStyle( color: Provider.of(context).theme.messageFromMeTextColor, + fontFamily: "Inter", + fontSize: 10 * Provider.of(context).fontScaling, ), textAlign: TextAlign.left, maxLines: 1, diff --git a/lib/widgets/invitationbubble.dart b/lib/widgets/invitationbubble.dart index ba1026fc..9d361893 100644 --- a/lib/widgets/invitationbubble.dart +++ b/lib/widgets/invitationbubble.dart @@ -57,7 +57,11 @@ class InvitationBubbleState extends State { var wdgSender = Center( widthFactor: 1, child: SelectableText(senderDisplayStr + '\u202F', - style: TextStyle(fontSize: 9.0, color: fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor))); + style: TextStyle( + fontSize: 9.0 * Provider.of(context).fontScaling, + fontWeight: FontWeight.bold, + fontFamily: "Inter", + color: fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor))); // If we receive an invite for ourselves, treat it as a bug. The UI no longer allows this so it could have only come from // some kind of malfeasance. diff --git a/lib/widgets/messagebubble.dart b/lib/widgets/messagebubble.dart index 531f1a5a..6fb7179d 100644 --- a/lib/widgets/messagebubble.dart +++ b/lib/widgets/messagebubble.dart @@ -43,13 +43,15 @@ class MessageBubbleState extends State { } } var wdgSender = Container( - height: 11, + height: 14 * Provider.of(context).fontScaling, clipBehavior: Clip.hardEdge, decoration: BoxDecoration(), child: SelectableText(senderDisplayStr, maxLines: 1, style: TextStyle( - fontSize: 9.0, + fontSize: 9.0 * Provider.of(context).fontScaling, + fontWeight: FontWeight.bold, + fontFamily: "Inter", overflow: TextOverflow.clip, color: fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor, ))); @@ -67,10 +69,20 @@ class MessageBubbleState extends State { //key: Key(myKey), focusNode: _focus, style: TextStyle( + fontSize: 12.0 * Provider.of(context).fontScaling, + fontWeight: FontWeight.normal, + fontFamily: "Inter", color: fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor, ), - linkStyle: TextStyle(color: fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor), + linkStyle: TextStyle( + fontSize: 12.0 * Provider.of(context).fontScaling, + fontWeight: FontWeight.normal, + fontFamily: "Inter", + color: fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor), codeStyle: TextStyle( + fontSize: 12.0 * Provider.of(context).fontScaling, + fontWeight: FontWeight.normal, + fontFamily: "Inter", // note: these colors are flipped color: fromMe ? Provider.of(context).theme.messageFromOtherTextColor : Provider.of(context).theme.messageFromMeTextColor, backgroundColor: fromMe ? Provider.of(context).theme.messageFromOtherBackgroundColor : Provider.of(context).theme.messageFromMeBackgroundColor), diff --git a/lib/widgets/messagebubbledecorations.dart b/lib/widgets/messagebubbledecorations.dart index 6de1a29a..e05b8e96 100644 --- a/lib/widgets/messagebubbledecorations.dart +++ b/lib/widgets/messagebubbledecorations.dart @@ -28,7 +28,11 @@ class _MessageBubbleDecoration extends State { mainAxisSize: MainAxisSize.min, children: [ Text(prettyDate, - style: TextStyle(fontSize: 9.0, color: widget.fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor), + style: TextStyle( + fontSize: 9.0 * Provider.of(context).fontScaling, + fontWeight: FontWeight.w200, + fontFamily: "Inter", + color: widget.fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor), textAlign: widget.fromMe ? TextAlign.right : TextAlign.left), !widget.fromMe ? SizedBox(width: 1, height: 1) diff --git a/lib/widgets/profilerow.dart b/lib/widgets/profilerow.dart index f08ac334..4e53a773 100644 --- a/lib/widgets/profilerow.dart +++ b/lib/widgets/profilerow.dart @@ -51,7 +51,7 @@ class _ProfileRowState extends State { child: Text( profile.nickname, semanticsLabel: profile.nickname, - style: Provider.of(context).biggerFont, + style: TextStyle(fontFamily: "Inter", fontSize: 18.0 * Provider.of(context).fontScaling, fontWeight: FontWeight.bold), softWrap: true, overflow: TextOverflow.ellipsis, )), diff --git a/lib/widgets/quotedmessage.dart b/lib/widgets/quotedmessage.dart index 810342bb..70567c45 100644 --- a/lib/widgets/quotedmessage.dart +++ b/lib/widgets/quotedmessage.dart @@ -44,11 +44,15 @@ class QuotedMessageBubbleState extends State { } var wdgSender = Container( - height: 11, + height: 14 * Provider.of(context).fontScaling, clipBehavior: Clip.hardEdge, decoration: BoxDecoration(), child: SelectableText(senderDisplayStr, - style: TextStyle(fontSize: 9.0, color: fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor))); + style: TextStyle( + fontSize: 9.0 * Provider.of(context).fontScaling, + fontWeight: FontWeight.bold, + fontFamily: "Inter", + color: fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor))); var showClickableLinks = Provider.of(context).isExperimentEnabled(ClickableLinksExperiment); var formatMessages = Provider.of(context).isExperimentEnabled(FormattingExperiment); @@ -66,10 +70,20 @@ class QuotedMessageBubbleState extends State { //key: Key(myKey), focusNode: _focus, style: TextStyle( + fontSize: 12.0 * Provider.of(context).fontScaling, + fontWeight: FontWeight.normal, + fontFamily: "Inter", color: fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor, ), - linkStyle: TextStyle(color: fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor), + linkStyle: TextStyle( + fontSize: 12.0 * Provider.of(context).fontScaling, + fontWeight: FontWeight.normal, + fontFamily: "Inter", + color: fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor), codeStyle: TextStyle( + fontSize: 12.0 * Provider.of(context).fontScaling, + fontWeight: FontWeight.normal, + fontFamily: "RobotoMono", // note: these colors are flipped color: fromMe ? Provider.of(context).theme.messageFromOtherTextColor : Provider.of(context).theme.messageFromMeTextColor, backgroundColor: fromMe ? Provider.of(context).theme.messageFromOtherBackgroundColor : Provider.of(context).theme.messageFromMeBackgroundColor), diff --git a/lib/widgets/remoteserverrow.dart b/lib/widgets/remoteserverrow.dart index ae77dae9..b19b837d 100644 --- a/lib/widgets/remoteserverrow.dart +++ b/lib/widgets/remoteserverrow.dart @@ -50,8 +50,7 @@ class _RemoteServerRowState extends State { Text( description, semanticsLabel: description, - style: Provider.of(context) - .biggerFont + style: TextStyle(fontFamily: "Inter", fontSize: 10.0 * Provider.of(context).fontScaling, fontWeight: FontWeight.bold) .apply(color: running ? Provider.of(context).theme.portraitOnlineBorderColor : Provider.of(context).theme.portraitOfflineBorderColor), softWrap: true, overflow: TextOverflow.ellipsis, diff --git a/lib/widgets/serverrow.dart b/lib/widgets/serverrow.dart index 30574535..49ad3af0 100644 --- a/lib/widgets/serverrow.dart +++ b/lib/widgets/serverrow.dart @@ -43,8 +43,7 @@ class _ServerRowState extends State { Text( server.description, semanticsLabel: server.description, - style: Provider.of(context) - .biggerFont + style: TextStyle(fontFamily: "Inter", fontSize: 10.0 * Provider.of(context).fontScaling) .apply(color: server.running ? Provider.of(context).theme.portraitOnlineBorderColor : Provider.of(context).theme.portraitOfflineBorderColor), softWrap: true, overflow: TextOverflow.ellipsis, diff --git a/lib/widgets/staticmessagebubble.dart b/lib/widgets/staticmessagebubble.dart index 3f27489c..bd8e6187 100644 --- a/lib/widgets/staticmessagebubble.dart +++ b/lib/widgets/staticmessagebubble.dart @@ -3,6 +3,7 @@ import 'package:cwtch/models/message.dart'; import 'package:cwtch/models/profile.dart'; import 'package:cwtch/widgets/malformedbubble.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import '../settings.dart'; import 'messagebubbledecorations.dart'; @@ -39,7 +40,12 @@ class StaticMessageBubbleState extends State { senderDisplayStr = widget.profile.nickname; } - var wdgSender = SelectableText(senderDisplayStr, style: TextStyle(fontSize: 9.0, color: fromMe ? widget.settings.theme.messageFromMeTextColor : widget.settings.theme.messageFromOtherTextColor)); + var wdgSender = SelectableText(senderDisplayStr, + style: TextStyle( + fontSize: 9.0 * Provider.of(context).fontScaling, + fontWeight: FontWeight.bold, + fontFamily: "Inter", + color: fromMe ? widget.settings.theme.messageFromMeTextColor : widget.settings.theme.messageFromOtherTextColor)); var wdgDecorations = MessageBubbleDecoration(ackd: widget.metadata.ackd, errored: widget.metadata.error, fromMe: fromMe, messageDate: messageDate); diff --git a/pubspec.yaml b/pubspec.yaml index bdcf7027..c62360bb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -114,7 +114,14 @@ flutter: - asset: assets/fonts/RobotoMono-Regular.ttf - asset: assets/fonts/RobotoMono-Bold.ttf weight: 700 - + - family: Inter + fonts: + - asset: assets/fonts/Inter-Regular.ttf + - asset: assets/fonts/Inter-Light.ttf + - asset: assets/fonts/Inter-Medium.ttf + - asset: assets/fonts/Inter-SemiBold.ttf + - asset: assets/fonts/Inter-Bold.ttf + weight: 700 # To add custom fonts to your application, add a fonts section here, # in this "flutter" section. Each entry in this list should have a # "family" key with the font family name, and a "fonts" key with a