diff --git a/PortabilityLayer/AntiAliasTable.cpp b/PortabilityLayer/AntiAliasTable.cpp index 62aa0dd..bfe09f0 100644 --- a/PortabilityLayer/AntiAliasTable.cpp +++ b/PortabilityLayer/AntiAliasTable.cpp @@ -1,9 +1,10 @@ #include "AntiAliasTable.h" #include "RGBAColor.h" -// TODO: This is not gamma correct... do we care? +// TODO: This is not gamma correct... namespace PortabilityLayer { +#if 0 void AntiAliasTable::GenerateForPalette(const RGBAColor &baseColorRef, const RGBAColor *colors, size_t numColors) { const RGBAColor baseColor = baseColorRef; @@ -53,4 +54,67 @@ namespace PortabilityLayer } } } +#else + void AntiAliasTable::GenerateForPalette(const RGBAColor &baseColorRef, const RGBAColor *colors, size_t numColors) + { + const RGBAColor baseColor = baseColorRef; + + if (numColors > 256) + numColors = 256; + + unsigned int baseCh[3] = { baseColor.r, baseColor.g, baseColor.b }; + unsigned int baseChLinear[3]; + + for (int i = 0; i < 3; i++) + baseChLinear[i] = baseCh[i] * baseCh[i]; + + for (size_t i = 0; i < numColors; i++) + { + const RGBAColor existingColor = colors[i]; + + unsigned int existingCh[3] = { existingColor.r, existingColor.g, existingColor.b }; + unsigned int existingChLinear[3]; + + for (int i = 0; i < 3; i++) + existingChLinear[i] = existingCh[i] * existingCh[i]; + + // 0 alpha is always the same color + m_aaTranslate[i][0] = static_cast(i); + + for (unsigned int b = 1; b < 16; b++) + { + uint32_t newChLinear[3]; + + for (unsigned int ch = 0; ch < 3; ch++) + newChLinear[ch] = (15 - b) * existingChLinear[ch] + b * baseChLinear[ch]; + + uint64_t bestError = UINT64_MAX; + size_t bestColor = 0; + for (size_t cmp = 0; cmp < numColors; cmp++) + { + int32_t compareColor[3] = { colors[cmp].r, colors[cmp].g, colors[cmp].b }; + for (unsigned int ch = 0; ch < 3; ch++) + { + compareColor[ch] = compareColor[ch] * compareColor[ch] * 15; + } + + uint64_t error = 0; + for (unsigned int ch = 0; ch < 3; ch++) + { + int64_t delta = static_cast(newChLinear[ch]) - compareColor[ch]; + error += static_cast(delta * delta); + } + + if (error < bestError) + { + bestError = error; + bestColor = cmp; + } + } + + m_aaTranslate[i][b] = static_cast(bestColor); + } + } + } +#endif } diff --git a/PortabilityLayer/FontManager.cpp b/PortabilityLayer/FontManager.cpp index ac2b3c9..e9f79eb 100644 --- a/PortabilityLayer/FontManager.cpp +++ b/PortabilityLayer/FontManager.cpp @@ -61,12 +61,12 @@ namespace PortabilityLayer m_applicationFont = FontFamily::Create(); if (m_systemFont) - m_systemFont->AddFont(FontFamilyFlag_None, "Fonts/Virtue/virtue.ttf", FontHacks_None); + m_systemFont->AddFont(FontFamilyFlag_None, "Fonts/OpenSans/OpenSans-ExtraBold.ttf", FontHacks_None); if (m_applicationFont) { - m_applicationFont->AddFont(FontFamilyFlag_None, "Fonts/Roboto/Roboto-Regular.ttf", FontHacks_Roboto); - m_applicationFont->AddFont(FontFamilyFlag_Bold, "Fonts/Roboto/Roboto-Bold.ttf", FontHacks_Roboto); + m_applicationFont->AddFont(FontFamilyFlag_None, "Fonts/OpenSans/OpenSans-SemiBold.ttf", FontHacks_None); + m_applicationFont->AddFont(FontFamilyFlag_Bold, "Fonts/OpenSans/OpenSans-Bold.ttf", FontHacks_None); } memset(m_cachedRenderedFonts, 0, sizeof(m_cachedRenderedFonts)); diff --git a/PortabilityLayer/PLControlDefinitions.cpp b/PortabilityLayer/PLControlDefinitions.cpp index 9b200d7..84a33c3 100644 --- a/PortabilityLayer/PLControlDefinitions.cpp +++ b/PortabilityLayer/PLControlDefinitions.cpp @@ -85,5 +85,5 @@ void HiliteControl(ControlHandle control, int unknown) void HiliteControl(PortabilityLayer::Widget *widget, int unknown) { - PL_NotYetImplemented(); + PL_NotYetImplemented(); } diff --git a/PortabilityLayer/QDStandardPalette.cpp b/PortabilityLayer/QDStandardPalette.cpp index 92c8bbb..8e721b1 100644 --- a/PortabilityLayer/QDStandardPalette.cpp +++ b/PortabilityLayer/QDStandardPalette.cpp @@ -1,88 +1,89 @@ -#include "QDStandardPalette.h" - -#include - +#include "QDStandardPalette.h" + +#include + // Standard palette mapping is 6x6x6, with the last element omitted for an RGB table // which ranges from 0..214 // 10 elements of red scale from 215..224 // 10 elements of green scale from 225..234 // 10 elements of blue scale from 235..244 // 10 elements of gray scale from 245..254 -// black at 255 - -namespace -{ +// black at 255 + +namespace +{ static void DivMod15By5RoundDown(unsigned int value, unsigned int &valueDiv3Out, unsigned int &valueMod3Out) { const unsigned int valueDiv3 = (value * 11) >> 5; const unsigned int valueMod3 = value - valueDiv3 * 3; valueDiv3Out = valueDiv3; valueMod3Out = valueMod3; - } -} - -namespace PortabilityLayer -{ - StandardPalette::StandardPalette() - { - for (unsigned int rs = 0; rs < 6; rs++) - { - for (unsigned int gs = 0; gs < 6; gs++) - { - for (unsigned int bs = 0; bs < 6; bs++) - { - RGBAColor &entry = m_colors[215 - bs - gs * 6 - rs * 36]; - entry.r = rs * 51; - entry.g = gs * 51; - entry.b = bs * 51; - entry.a = 255; - } - } - } - - for (unsigned int scale = 0; scale < 5; scale++) - { - for (unsigned int tickUp = 0; tickUp < 2; tickUp++) - { - const unsigned int scaleValue = (scale * 3 + tickUp + 1) * 17; - const unsigned int scaleIndex = scale * 2 + tickUp; - - RGBAColor &rScaleEntry = m_colors[224 - scaleIndex]; - RGBAColor &gScaleEntry = m_colors[234 - scaleIndex]; - RGBAColor &bScaleEntry = m_colors[244 - scaleIndex]; - RGBAColor &grayScaleEntry = m_colors[254 - scaleIndex]; - - rScaleEntry.r = scaleValue; - rScaleEntry.g = 0; - rScaleEntry.b = 0; - rScaleEntry.a = 255; - - gScaleEntry.r = 0; - gScaleEntry.g = scaleValue; - gScaleEntry.b = 0; - gScaleEntry.a = 255; - - bScaleEntry.r = 0; - bScaleEntry.g = 0; - bScaleEntry.b = scaleValue; - bScaleEntry.a = 255; - - grayScaleEntry.r = scaleValue; - grayScaleEntry.g = scaleValue; - grayScaleEntry.b = scaleValue; - grayScaleEntry.a = 255; - } - } - - RGBAColor &blackEntry = m_colors[255]; - blackEntry.r = blackEntry.g = blackEntry.b = 0; - blackEntry.a = 255; - - for (unsigned int rs = 0; rs < 16; rs++) - for (unsigned int gs = 0; gs < 16; gs++) - for (unsigned int bs = 0; bs < 16; bs++) + } +} + +namespace PortabilityLayer +{ + StandardPalette::StandardPalette() + { + for (unsigned int rs = 0; rs < 6; rs++) + { + for (unsigned int gs = 0; gs < 6; gs++) + { + for (unsigned int bs = 0; bs < 6; bs++) + { + RGBAColor &entry = m_colors[215 - bs - gs * 6 - rs * 36]; + entry.r = rs * 51; + entry.g = gs * 51; + entry.b = bs * 51; + entry.a = 255; + } + } + } + + for (unsigned int scale = 0; scale < 5; scale++) + { + for (unsigned int tickUp = 0; tickUp < 2; tickUp++) + { + const unsigned int scaleValue = (scale * 3 + tickUp + 1) * 17; + const unsigned int scaleIndex = scale * 2 + tickUp; + + RGBAColor &rScaleEntry = m_colors[224 - scaleIndex]; + RGBAColor &gScaleEntry = m_colors[234 - scaleIndex]; + RGBAColor &bScaleEntry = m_colors[244 - scaleIndex]; + RGBAColor &grayScaleEntry = m_colors[254 - scaleIndex]; + + rScaleEntry.r = scaleValue; + rScaleEntry.g = 0; + rScaleEntry.b = 0; + rScaleEntry.a = 255; + + gScaleEntry.r = 0; + gScaleEntry.g = scaleValue; + gScaleEntry.b = 0; + gScaleEntry.a = 255; + + bScaleEntry.r = 0; + bScaleEntry.g = 0; + bScaleEntry.b = scaleValue; + bScaleEntry.a = 255; + + grayScaleEntry.r = scaleValue; + grayScaleEntry.g = scaleValue; + grayScaleEntry.b = scaleValue; + grayScaleEntry.a = 255; + } + } + + RGBAColor &blackEntry = m_colors[255]; + blackEntry.r = blackEntry.g = blackEntry.b = 0; + blackEntry.a = 255; + + for (unsigned int rs = 0; rs < 16; rs++) + for (unsigned int gs = 0; gs < 16; gs++) + for (unsigned int bs = 0; bs < 16; bs++) m_lut[rs + (gs << 4) + (bs << 8)] = MapColorAnalyticTruncated(rs, gs, bs); +#if 0 for (unsigned int i = 0; i < 256; i++) { unsigned int shortChannels[3] = @@ -109,15 +110,19 @@ namespace PortabilityLayer m_blackAATable.m_aaTranslate[i][b] = MapColorAnalyticTruncated(blackScale[0], blackScale[1], blackScale[2]); m_whiteAATable.m_aaTranslate[i][b] = MapColorAnalyticTruncated(whiteScale[0], whiteScale[1], whiteScale[2]); } - } - } - - const RGBAColor *StandardPalette::GetColors() const - { - return m_colors; - } - - uint8_t StandardPalette::MapColorAnalyticTruncated(unsigned int r, unsigned int g, unsigned int b) + } +#else + m_blackAATable.GenerateForPalette(RGBAColor::Create(0, 0, 0, 255), m_colors, 256); + m_whiteAATable.GenerateForPalette(RGBAColor::Create(255, 255, 255, 255), m_colors, 256); +#endif + } + + const RGBAColor *StandardPalette::GetColors() const + { + return m_colors; + } + + uint8_t StandardPalette::MapColorAnalyticTruncated(unsigned int r, unsigned int g, unsigned int b) { if (g <= 1 && b <= 1) { @@ -215,58 +220,58 @@ namespace PortabilityLayer if ((rSmallNearest6 | gSmallNearest6 | bSmallNearest6) == 0) return 255; else - return 215 - bSmallNearest6 - gSmallNearest6 * 6 - rSmallNearest6 * 36; - } - - uint8_t StandardPalette::MapColorAnalytic(uint8_t r, uint8_t g, uint8_t b) - { + return 215 - bSmallNearest6 - gSmallNearest6 * 6 - rSmallNearest6 * 36; + } + + uint8_t StandardPalette::MapColorAnalytic(uint8_t r, uint8_t g, uint8_t b) + { // Round to 0..15 range const unsigned int rSmall = (r * 241 + 2048) >> 12; const unsigned int gSmall = (g * 241 + 2048) >> 12; - const unsigned int bSmall = (b * 241 + 2048) >> 12; - - return MapColorAnalyticTruncated(rSmall, gSmall, bSmall); - } - - uint8_t StandardPalette::MapColorAnalytic(const RGBAColor &color) - { + const unsigned int bSmall = (b * 241 + 2048) >> 12; + + return MapColorAnalyticTruncated(rSmall, gSmall, bSmall); + } + + uint8_t StandardPalette::MapColorAnalytic(const RGBAColor &color) + { // Round to 0..15 range const unsigned int rSmall = (color.r * 241 + 2048) >> 12; const unsigned int gSmall = (color.g * 241 + 2048) >> 12; - const unsigned int bSmall = (color.b * 241 + 2048) >> 12; - - return MapColorAnalyticTruncated(rSmall, gSmall, bSmall); - } - - uint8_t StandardPalette::MapColorLUT(uint8_t r, uint8_t g, uint8_t b) const - { + const unsigned int bSmall = (color.b * 241 + 2048) >> 12; + + return MapColorAnalyticTruncated(rSmall, gSmall, bSmall); + } + + uint8_t StandardPalette::MapColorLUT(uint8_t r, uint8_t g, uint8_t b) const + { // Round to 0..15 range const unsigned int rSmall = (r * 241 + 2048) >> 12; const unsigned int gSmall = (g * 241 + 2048) >> 12; - const unsigned int bSmall = (b * 241 + 2048) >> 12; - - return m_lut[rSmall + (gSmall << 4) + (bSmall << 8)]; - } - - uint8_t StandardPalette::MapColorLUT(const RGBAColor &color) const - { - return MapColorLUT(color.r, color.g, color.b); - } - - const StandardPalette *StandardPalette::GetInstance() - { - return &ms_instance; + const unsigned int bSmall = (b * 241 + 2048) >> 12; + + return m_lut[rSmall + (gSmall << 4) + (bSmall << 8)]; + } + + uint8_t StandardPalette::MapColorLUT(const RGBAColor &color) const + { + return MapColorLUT(color.r, color.g, color.b); + } + + const StandardPalette *StandardPalette::GetInstance() + { + return &ms_instance; } const AntiAliasTable &StandardPalette::GetWhiteAATable() const - { - return m_whiteAATable; + { + return m_whiteAATable; } - + const AntiAliasTable &StandardPalette::GetBlackAATable() const - { - return m_blackAATable; - } - - StandardPalette StandardPalette::ms_instance; -} + { + return m_blackAATable; + } + + StandardPalette StandardPalette::ms_instance; +} diff --git a/PortabilityLayer/QDStandardPalette.h b/PortabilityLayer/QDStandardPalette.h index 83b5f88..e081cf2 100644 --- a/PortabilityLayer/QDStandardPalette.h +++ b/PortabilityLayer/QDStandardPalette.h @@ -1,36 +1,36 @@ -#pragma once +#pragma once -#include "AntiAliasTable.h" -#include "RGBAColor.h" - -namespace PortabilityLayer +#include "AntiAliasTable.h" +#include "RGBAColor.h" + +namespace PortabilityLayer { struct AntiAliasTable; - - class StandardPalette - { - public: - static const unsigned int kSize = 256; - - StandardPalette(); - - const RGBAColor *GetColors() const; - static uint8_t MapColorAnalyticTruncated(unsigned int r, unsigned int g, unsigned int b); - static uint8_t MapColorAnalytic(uint8_t r, uint8_t g, uint8_t b); - static uint8_t MapColorAnalytic(const RGBAColor &color); - uint8_t MapColorLUT(uint8_t r, uint8_t g, uint8_t b) const; + + class StandardPalette + { + public: + static const unsigned int kSize = 256; + + StandardPalette(); + + const RGBAColor *GetColors() const; + static uint8_t MapColorAnalyticTruncated(unsigned int r, unsigned int g, unsigned int b); + static uint8_t MapColorAnalytic(uint8_t r, uint8_t g, uint8_t b); + static uint8_t MapColorAnalytic(const RGBAColor &color); + uint8_t MapColorLUT(uint8_t r, uint8_t g, uint8_t b) const; uint8_t MapColorLUT(const RGBAColor &color) const; - const AntiAliasTable &GetWhiteAATable() const; - const AntiAliasTable &GetBlackAATable() const; - - static const StandardPalette *GetInstance(); - - private: - static StandardPalette ms_instance; - + const AntiAliasTable &GetWhiteAATable() const; + const AntiAliasTable &GetBlackAATable() const; + + static const StandardPalette *GetInstance(); + + private: + static StandardPalette ms_instance; + RGBAColor m_colors[kSize]; - AntiAliasTable m_whiteAATable; - AntiAliasTable m_blackAATable; - uint8_t m_lut[16 * 16 * 16]; - }; -} + AntiAliasTable m_whiteAATable; + AntiAliasTable m_blackAATable; + uint8_t m_lut[16 * 16 * 16]; + }; +} diff --git a/Resources/Fonts/OpenSans/LICENSE.txt b/Resources/Fonts/OpenSans/LICENSE.txt new file mode 100644 index 0000000..75b5248 --- /dev/null +++ b/Resources/Fonts/OpenSans/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/Resources/Fonts/OpenSans/OpenSans-Bold.ttf b/Resources/Fonts/OpenSans/OpenSans-Bold.ttf new file mode 100644 index 0000000..efdd5e8 Binary files /dev/null and b/Resources/Fonts/OpenSans/OpenSans-Bold.ttf differ diff --git a/Resources/Fonts/OpenSans/OpenSans-BoldItalic.ttf b/Resources/Fonts/OpenSans/OpenSans-BoldItalic.ttf new file mode 100644 index 0000000..9bf9b4e Binary files /dev/null and b/Resources/Fonts/OpenSans/OpenSans-BoldItalic.ttf differ diff --git a/Resources/Fonts/OpenSans/OpenSans-ExtraBold.ttf b/Resources/Fonts/OpenSans/OpenSans-ExtraBold.ttf new file mode 100644 index 0000000..67fcf0f Binary files /dev/null and b/Resources/Fonts/OpenSans/OpenSans-ExtraBold.ttf differ diff --git a/Resources/Fonts/OpenSans/OpenSans-ExtraBoldItalic.ttf b/Resources/Fonts/OpenSans/OpenSans-ExtraBoldItalic.ttf new file mode 100644 index 0000000..0867228 Binary files /dev/null and b/Resources/Fonts/OpenSans/OpenSans-ExtraBoldItalic.ttf differ diff --git a/Resources/Fonts/OpenSans/OpenSans-Italic.ttf b/Resources/Fonts/OpenSans/OpenSans-Italic.ttf new file mode 100644 index 0000000..1178567 Binary files /dev/null and b/Resources/Fonts/OpenSans/OpenSans-Italic.ttf differ diff --git a/Resources/Fonts/OpenSans/OpenSans-Light.ttf b/Resources/Fonts/OpenSans/OpenSans-Light.ttf new file mode 100644 index 0000000..6580d3a Binary files /dev/null and b/Resources/Fonts/OpenSans/OpenSans-Light.ttf differ diff --git a/Resources/Fonts/OpenSans/OpenSans-LightItalic.ttf b/Resources/Fonts/OpenSans/OpenSans-LightItalic.ttf new file mode 100644 index 0000000..1e0c331 Binary files /dev/null and b/Resources/Fonts/OpenSans/OpenSans-LightItalic.ttf differ diff --git a/Resources/Fonts/OpenSans/OpenSans-Regular.ttf b/Resources/Fonts/OpenSans/OpenSans-Regular.ttf new file mode 100644 index 0000000..29bfd35 Binary files /dev/null and b/Resources/Fonts/OpenSans/OpenSans-Regular.ttf differ diff --git a/Resources/Fonts/OpenSans/OpenSans-SemiBold.ttf b/Resources/Fonts/OpenSans/OpenSans-SemiBold.ttf new file mode 100644 index 0000000..54e7059 Binary files /dev/null and b/Resources/Fonts/OpenSans/OpenSans-SemiBold.ttf differ diff --git a/Resources/Fonts/OpenSans/OpenSans-SemiBoldItalic.ttf b/Resources/Fonts/OpenSans/OpenSans-SemiBoldItalic.ttf new file mode 100644 index 0000000..aebcf14 Binary files /dev/null and b/Resources/Fonts/OpenSans/OpenSans-SemiBoldItalic.ttf differ diff --git a/Resources/Fonts/Virtue/virtue.ttf b/Resources/Fonts/Virtue/virtue.ttf deleted file mode 100644 index 1557ca7..0000000 Binary files a/Resources/Fonts/Virtue/virtue.ttf and /dev/null differ