diff --git a/src/main/java/creator/loki/App.java b/src/main/java/creator/loki/App.java index faff130..b12d44a 100644 --- a/src/main/java/creator/loki/App.java +++ b/src/main/java/creator/loki/App.java @@ -10,10 +10,24 @@ import org.slf4j.LoggerFactory; public class App { private static final Logger logger = LoggerFactory.getLogger(App.class); + private static volatile boolean shutdownRequested = false; public static void main(String[] args) { + // Регистрируем shutdown hook ДО создания бота + Thread shutdownHook = new Thread(() -> { + if (!shutdownRequested) { + shutdownRequested = true; + logger.info("========================================"); + logger.info("Получен сигнал завершения"); + logger.info("Выполняется graceful shutdown..."); + logger.info("========================================"); + } + }, "ShutdownHook"); + + Runtime.getRuntime().addShutdownHook(shutdownHook); + try { - logger.info("Запуск Discord бота с Dependency Injection..."); + logger.info("Запуск Discord бота"); // Создаём Guice Injector с модулем конфигурации Injector injector = Guice.createInjector(new BotModule()); diff --git a/src/main/java/creator/loki/command/impl/utility/HelpCommand.java b/src/main/java/creator/loki/command/impl/utility/HelpCommand.java index 5439a5b..2660e94 100644 --- a/src/main/java/creator/loki/command/impl/utility/HelpCommand.java +++ b/src/main/java/creator/loki/command/impl/utility/HelpCommand.java @@ -3,7 +3,7 @@ package creator.loki.command.impl.utility; import creator.loki.command.Command; import creator.loki.command.CommandContext; import creator.loki.config.BotConfig; -import creator.loki.core.CommandRegistry; +import creator.loki.core.registry.CommandRegistry; import creator.loki.embed.EmbedFactory; import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.interactions.components.selections.StringSelectMenu; diff --git a/src/main/java/creator/loki/command/impl/utility/StopCommand.java b/src/main/java/creator/loki/command/impl/utility/StopCommand.java deleted file mode 100644 index 27f205e..0000000 --- a/src/main/java/creator/loki/command/impl/utility/StopCommand.java +++ /dev/null @@ -1,63 +0,0 @@ -package creator.loki.command.impl.utility; - -import creator.loki.command.Command; -import creator.loki.command.CommandContext; -import net.dv8tion.jda.api.Permission; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Команда для безопасной остановки бота - */ -public class StopCommand implements Command { - private static final Logger logger = LoggerFactory.getLogger(StopCommand.class); - - @Override - public String getName() { - return "stop"; - } - - @Override - public String getDescription() { - return "Безопасно остановить бота (только для администраторов)"; - } - - @Override - public String getUsage() { - return "stop"; - } - - @Override - public String getCategory() { - return "Система"; - } - - @Override - public void execute(CommandContext context) { - // Проверка прав администратора - if (!context.getAuthor().hasPermission(Permission.ADMINISTRATOR)) { - context.getChannel().sendMessage("❌ У вас нет прав для выполнения этой команды!").queue(); - return; - } - - logger.info("========================================"); - logger.info("Получена команда остановки от {}", context.getAuthor().getEffectiveName()); - logger.info("========================================"); - - context.getChannel().sendMessage("🛑 **Начинаю безопасное завершение работы...**").queue(msg -> { - try { - // Даем время на отправку сообщения - Thread.sleep(1000); - - logger.info("Инициирую shutdown hook..."); - - // Вызываем системный shutdown - System.exit(0); - - } catch (InterruptedException e) { - logger.error("Ошибка при остановке", e); - Thread.currentThread().interrupt(); - } - }); - } -} diff --git a/src/main/java/creator/loki/command/impl/utility/AvatarCommand.java b/src/main/java/creator/loki/command/impl/utility/info/AvatarCommand.java similarity index 97% rename from src/main/java/creator/loki/command/impl/utility/AvatarCommand.java rename to src/main/java/creator/loki/command/impl/utility/info/AvatarCommand.java index af7eed4..f59b4dc 100644 --- a/src/main/java/creator/loki/command/impl/utility/AvatarCommand.java +++ b/src/main/java/creator/loki/command/impl/utility/info/AvatarCommand.java @@ -1,4 +1,4 @@ -package creator.loki.command.impl.utility; +package creator.loki.command.impl.utility.info; import creator.loki.command.Command; import creator.loki.command.CommandContext; diff --git a/src/main/java/creator/loki/command/impl/utility/InfoCommand.java b/src/main/java/creator/loki/command/impl/utility/info/InfoCommand.java similarity index 98% rename from src/main/java/creator/loki/command/impl/utility/InfoCommand.java rename to src/main/java/creator/loki/command/impl/utility/info/InfoCommand.java index b04f987..f299b2b 100644 --- a/src/main/java/creator/loki/command/impl/utility/InfoCommand.java +++ b/src/main/java/creator/loki/command/impl/utility/info/InfoCommand.java @@ -1,4 +1,4 @@ -package creator.loki.command.impl.utility; +package creator.loki.command.impl.utility.info; import creator.loki.command.Command; import creator.loki.command.CommandContext; diff --git a/src/main/java/creator/loki/command/impl/utility/PingCommand.java b/src/main/java/creator/loki/command/impl/utility/info/PingCommand.java similarity index 96% rename from src/main/java/creator/loki/command/impl/utility/PingCommand.java rename to src/main/java/creator/loki/command/impl/utility/info/PingCommand.java index 035885b..6f2f01e 100644 --- a/src/main/java/creator/loki/command/impl/utility/PingCommand.java +++ b/src/main/java/creator/loki/command/impl/utility/info/PingCommand.java @@ -1,4 +1,4 @@ -package creator.loki.command.impl.utility; +package creator.loki.command.impl.utility.info; import creator.loki.command.Command; import creator.loki.command.CommandContext; diff --git a/src/main/java/creator/loki/command/impl/utility/MetricsCommand.java b/src/main/java/creator/loki/command/impl/utility/system/MetricsCommand.java similarity index 96% rename from src/main/java/creator/loki/command/impl/utility/MetricsCommand.java rename to src/main/java/creator/loki/command/impl/utility/system/MetricsCommand.java index c9c992c..e57687e 100644 --- a/src/main/java/creator/loki/command/impl/utility/MetricsCommand.java +++ b/src/main/java/creator/loki/command/impl/utility/system/MetricsCommand.java @@ -1,4 +1,4 @@ -package creator.loki.command.impl.utility; +package creator.loki.command.impl.utility.system; import creator.loki.command.Command; import creator.loki.command.CommandContext; @@ -53,7 +53,7 @@ public class MetricsCommand implements Command { @Override public String getUsage() { - return "!metrics"; + return "metrics"; } @Override diff --git a/src/main/java/creator/loki/core/BotInitializer.java b/src/main/java/creator/loki/core/BotInitializer.java index f5b8833..60e6c1d 100644 --- a/src/main/java/creator/loki/core/BotInitializer.java +++ b/src/main/java/creator/loki/core/BotInitializer.java @@ -6,6 +6,11 @@ import creator.loki.command.impl.setup.LogSetupCommand; import creator.loki.command.impl.setup.VoiceSetupCommand; import creator.loki.command.impl.stats.leaderboard.LeaderboardButtonListener; import creator.loki.config.BotConfig; +import creator.loki.core.EventDispatcher; +import creator.loki.core.registry.CommandRegistry; +import creator.loki.core.registry.PrefixCommandRegistrar; +import creator.loki.core.registry.SlashCommandRegistrar; +import creator.loki.core.registry.SlashCommandRegistry; import creator.loki.counter.CounterManager; import creator.loki.data.JsonDataStore; import creator.loki.database.ConfigRepository; @@ -15,6 +20,8 @@ import creator.loki.feature.level.service.LevelService; import creator.loki.feature.level.VoiceTracker; import creator.loki.level.LevelSystem; import creator.loki.listener.*; +import creator.loki.listener.interaction.SlashCommandListener; +import creator.loki.listener.voice.VoiceChannelListener; import creator.loki.metrics.MetricsCollector; import creator.loki.profile.ProfileService; import creator.loki.role.CustomRoleManager; diff --git a/src/main/java/creator/loki/core/EventDispatcher.java b/src/main/java/creator/loki/core/EventDispatcher.java index e6f5b35..42e103f 100644 --- a/src/main/java/creator/loki/core/EventDispatcher.java +++ b/src/main/java/creator/loki/core/EventDispatcher.java @@ -3,6 +3,7 @@ package creator.loki.core; import creator.loki.command.Command; import creator.loki.command.CommandContext; import creator.loki.config.BotConfig; +import creator.loki.core.registry.CommandRegistry; import creator.loki.embed.EmbedTemplates; import creator.loki.exception.CommandExceptionHandler; import creator.loki.metrics.MetricsCollector; diff --git a/src/main/java/creator/loki/core/CommandRegistry.java b/src/main/java/creator/loki/core/registry/CommandRegistry.java similarity index 96% rename from src/main/java/creator/loki/core/CommandRegistry.java rename to src/main/java/creator/loki/core/registry/CommandRegistry.java index 8eeba05..86f68ef 100644 --- a/src/main/java/creator/loki/core/CommandRegistry.java +++ b/src/main/java/creator/loki/core/registry/CommandRegistry.java @@ -1,4 +1,4 @@ -package creator.loki.core; +package creator.loki.core.registry; import creator.loki.command.Command; import org.slf4j.Logger; diff --git a/src/main/java/creator/loki/core/PrefixCommandRegistrar.java b/src/main/java/creator/loki/core/registry/PrefixCommandRegistrar.java similarity index 97% rename from src/main/java/creator/loki/core/PrefixCommandRegistrar.java rename to src/main/java/creator/loki/core/registry/PrefixCommandRegistrar.java index 2f2e42f..57b0c36 100644 --- a/src/main/java/creator/loki/core/PrefixCommandRegistrar.java +++ b/src/main/java/creator/loki/core/registry/PrefixCommandRegistrar.java @@ -1,4 +1,4 @@ -package creator.loki.core; +package creator.loki.core.registry; import creator.loki.command.impl.entertainment.games.*; import creator.loki.command.impl.entertainment.interaction.*; @@ -6,6 +6,8 @@ import creator.loki.command.impl.moderation.*; import creator.loki.command.impl.roles.*; import creator.loki.command.impl.stats.*; import creator.loki.command.impl.utility.*; +import creator.loki.command.impl.utility.info.*; +import creator.loki.command.impl.utility.system.*; import creator.loki.config.BotConfig; import creator.loki.data.JsonDataStore; import creator.loki.feature.level.service.LevelService; @@ -77,7 +79,6 @@ public class PrefixCommandRegistrar { registry.register(new AvatarCommand()); registry.register(new PollCommand()); registry.register(new SwapCommand()); - registry.register(new StopCommand()); } private void registerRoleCommands() { diff --git a/src/main/java/creator/loki/core/SlashCommandRegistrar.java b/src/main/java/creator/loki/core/registry/SlashCommandRegistrar.java similarity index 86% rename from src/main/java/creator/loki/core/SlashCommandRegistrar.java rename to src/main/java/creator/loki/core/registry/SlashCommandRegistrar.java index ba1da0f..92f092c 100644 --- a/src/main/java/creator/loki/core/SlashCommandRegistrar.java +++ b/src/main/java/creator/loki/core/registry/SlashCommandRegistrar.java @@ -1,4 +1,4 @@ -package creator.loki.core; +package creator.loki.core.registry; import creator.loki.data.JsonDataStore; import creator.loki.metrics.MetricsCollector; @@ -11,12 +11,12 @@ import org.slf4j.LoggerFactory; public class SlashCommandRegistrar { private static final Logger logger = LoggerFactory.getLogger(SlashCommandRegistrar.class); - private final creator.loki.core.SlashCommandRegistry registry; + private final SlashCommandRegistry registry; private final JsonDataStore dataStore; private final MetricsCollector metrics; public SlashCommandRegistrar( - creator.loki.core.SlashCommandRegistry registry, + SlashCommandRegistry registry, JsonDataStore dataStore, MetricsCollector metrics ) { diff --git a/src/main/java/creator/loki/core/SlashCommandRegistry.java b/src/main/java/creator/loki/core/registry/SlashCommandRegistry.java similarity index 98% rename from src/main/java/creator/loki/core/SlashCommandRegistry.java rename to src/main/java/creator/loki/core/registry/SlashCommandRegistry.java index 7fc6c02..ee834ac 100644 --- a/src/main/java/creator/loki/core/SlashCommandRegistry.java +++ b/src/main/java/creator/loki/core/registry/SlashCommandRegistry.java @@ -1,4 +1,4 @@ -package creator.loki.core; +package creator.loki.core.registry; import creator.loki.command.SlashCommand; import net.dv8tion.jda.api.JDA; diff --git a/src/main/java/creator/loki/di/BotModule.java b/src/main/java/creator/loki/di/BotModule.java index 06deec2..ef4779a 100644 --- a/src/main/java/creator/loki/di/BotModule.java +++ b/src/main/java/creator/loki/di/BotModule.java @@ -5,9 +5,9 @@ import com.google.inject.Provides; import com.google.inject.Singleton; import creator.loki.config.BotConfig; import creator.loki.config.ConfigLoader; -import creator.loki.core.CommandRegistry; import creator.loki.core.EventDispatcher; -import creator.loki.core.SlashCommandRegistry; +import creator.loki.core.registry.CommandRegistry; +import creator.loki.core.registry.SlashCommandRegistry; import creator.loki.core.security.CooldownManager; import creator.loki.core.security.RateLimiter; import creator.loki.counter.CounterManager; diff --git a/src/main/java/creator/loki/listener/LevelUpNotifier.java b/src/main/java/creator/loki/listener/LevelUpNotifier.java deleted file mode 100644 index b64aa87..0000000 --- a/src/main/java/creator/loki/listener/LevelUpNotifier.java +++ /dev/null @@ -1,99 +0,0 @@ -package creator.loki.listener; - -import creator.loki.database.ConfigRepository; -import creator.loki.feature.level.domain.LevelProgress; -import creator.loki.level.LevelSystem; -import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.Member; -import net.dv8tion.jda.api.entities.channel.concrete.TextChannel; -import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.awt.Color; - -/** - * Уведомления о повышении уровня - */ -public class LevelUpNotifier { - private static final Logger logger = LoggerFactory.getLogger(LevelUpNotifier.class); - private final ConfigRepository configRepo; - private final LevelSystem levelSystem; - - public LevelUpNotifier(ConfigRepository configRepo, LevelSystem levelSystem) { - this.configRepo = configRepo; - this.levelSystem = levelSystem; - } - - /** - * Отправить уведомление о повышении уровня - */ - public void sendLevelUpNotification(Member member, int oldLevel, int newLevel, MessageChannel channel) { - LevelProgress progress = levelSystem.getProgress(member.getId()); - - EmbedBuilder embed = new EmbedBuilder() - .setTitle("🎉 Повышение уровня!") - .setDescription(member.getAsMention() + " достиг **уровня " + newLevel + "**!") - .addField("Предыдущий уровень", String.valueOf(oldLevel), true) - .addField("Новый уровень", String.valueOf(newLevel), true) - .addField("Всего XP", String.valueOf(progress.getTotalXP()), true) - .addField("До следующего уровня", - progress.getCurrentLevelXP() + " / " + progress.getXpForNextLevel() + " XP", false) - .setColor(getColorForLevel(newLevel)) - .setThumbnail(member.getEffectiveAvatarUrl()) - .setFooter("Продолжай в том же духе!"); - - // Добавляем награды за уровень - String reward = getRewardForLevel(newLevel); - if (reward != null) { - embed.addField("🎁 Награда", reward, false); - } - - channel.sendMessageEmbeds(embed.build()).queue( - success -> logger.info("Отправлено уведомление о level up для {}: {} -> {}", - member.getEffectiveName(), oldLevel, newLevel), - error -> logger.error("Ошибка отправки уведомления о level up", error) - ); - } - - /** - * Отправить уведомление о level up в войсе - */ - public void sendVoiceLevelUpNotification(Member member, int oldLevel, int newLevel) { - String channelId = configRepo.get("levelup.notification_channel_id"); - if (channelId == null) { - // Если канал не настроен, пропускаем - return; - } - - TextChannel channel = member.getGuild().getTextChannelById(channelId); - if (channel != null) { - sendLevelUpNotification(member, oldLevel, newLevel, channel); - } - } - - /** - * Получить цвет для уровня - */ - private Color getColorForLevel(int level) { - if (level >= 50) return Color.decode("#FFD700"); // Золотой - if (level >= 30) return Color.decode("#E74C3C"); // Красный - if (level >= 20) return Color.decode("#9B59B6"); // Фиолетовый - if (level >= 10) return Color.decode("#3498DB"); // Синий - return Color.decode("#2ECC71"); // Зеленый - } - - /** - * Получить награду за уровень - */ - private String getRewardForLevel(int level) { - return switch (level) { - case 5 -> "🎖️ Роль **Активный**"; - case 10 -> "⭐ Роль **Постоянный**"; - case 20 -> "💎 Роль **Ветеран**"; - case 30 -> "👑 Роль **Легенда**"; - case 50 -> "🏆 Роль **Мастер** + особый цвет ника"; - default -> null; - }; - } -} diff --git a/src/main/java/creator/loki/listener/HelpMenuHandler.java b/src/main/java/creator/loki/listener/interaction/HelpMenuHandler.java similarity index 99% rename from src/main/java/creator/loki/listener/HelpMenuHandler.java rename to src/main/java/creator/loki/listener/interaction/HelpMenuHandler.java index d099254..969d535 100644 --- a/src/main/java/creator/loki/listener/HelpMenuHandler.java +++ b/src/main/java/creator/loki/listener/interaction/HelpMenuHandler.java @@ -2,7 +2,7 @@ package creator.loki.listener; import creator.loki.command.Command; import creator.loki.config.BotConfig; -import creator.loki.core.CommandRegistry; +import creator.loki.core.registry.CommandRegistry; import creator.loki.embed.EmbedFactory; import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.events.interaction.component.StringSelectInteractionEvent; diff --git a/src/main/java/creator/loki/listener/SlashCommandListener.java b/src/main/java/creator/loki/listener/interaction/SlashCommandListener.java similarity index 96% rename from src/main/java/creator/loki/listener/SlashCommandListener.java rename to src/main/java/creator/loki/listener/interaction/SlashCommandListener.java index 0d8448c..1c52789 100644 --- a/src/main/java/creator/loki/listener/SlashCommandListener.java +++ b/src/main/java/creator/loki/listener/interaction/SlashCommandListener.java @@ -1,6 +1,6 @@ -package creator.loki.listener; +package creator.loki.listener.interaction; -import creator.loki.core.SlashCommandRegistry; +import creator.loki.core.registry.SlashCommandRegistry; import creator.loki.exception.CommandExceptionHandler; import creator.loki.metrics.MetricsCollector; import creator.loki.core.security.RateLimiter; diff --git a/src/main/java/creator/loki/listener/VoiceButtonHandler.java b/src/main/java/creator/loki/listener/voice/VoiceButtonHandler.java similarity index 100% rename from src/main/java/creator/loki/listener/VoiceButtonHandler.java rename to src/main/java/creator/loki/listener/voice/VoiceButtonHandler.java diff --git a/src/main/java/creator/loki/listener/VoiceChannelListener.java b/src/main/java/creator/loki/listener/voice/VoiceChannelListener.java similarity index 98% rename from src/main/java/creator/loki/listener/VoiceChannelListener.java rename to src/main/java/creator/loki/listener/voice/VoiceChannelListener.java index 920d7c2..302ce69 100644 --- a/src/main/java/creator/loki/listener/VoiceChannelListener.java +++ b/src/main/java/creator/loki/listener/voice/VoiceChannelListener.java @@ -1,4 +1,4 @@ -package creator.loki.listener; +package creator.loki.listener.voice; import creator.loki.voice.VoiceChannelManager; import net.dv8tion.jda.api.entities.Guild; diff --git a/src/main/java/creator/loki/listener/VoiceTracker.java b/src/main/java/creator/loki/listener/voice/VoiceTracker.java similarity index 99% rename from src/main/java/creator/loki/listener/VoiceTracker.java rename to src/main/java/creator/loki/listener/voice/VoiceTracker.java index 4bec45b..9d83d8e 100644 --- a/src/main/java/creator/loki/listener/VoiceTracker.java +++ b/src/main/java/creator/loki/listener/voice/VoiceTracker.java @@ -1,4 +1,4 @@ -package creator.loki.listener; +package creator.loki.listener.voice; import creator.loki.level.LevelSystem; import net.dv8tion.jda.api.entities.Member; diff --git a/src/main/resources/assets/fonts/Inter/Inter-Italic-VariableFont_opsz,wght.ttf b/src/main/resources/assets/fonts/Inter/Inter-Italic-VariableFont_opsz,wght.ttf new file mode 100644 index 0000000..43ed4f5 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/Inter-Italic-VariableFont_opsz,wght.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/Inter-VariableFont_opsz,wght.ttf b/src/main/resources/assets/fonts/Inter/Inter-VariableFont_opsz,wght.ttf new file mode 100644 index 0000000..e31b51e Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/Inter-VariableFont_opsz,wght.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/OFL.txt b/src/main/resources/assets/fonts/Inter/OFL.txt new file mode 100644 index 0000000..63db4fa --- /dev/null +++ b/src/main/resources/assets/fonts/Inter/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: +https://openfontlicense.org + + +----------------------------------------------------------- +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/src/main/resources/assets/fonts/Inter/README.txt b/src/main/resources/assets/fonts/Inter/README.txt new file mode 100644 index 0000000..b92a417 --- /dev/null +++ b/src/main/resources/assets/fonts/Inter/README.txt @@ -0,0 +1,118 @@ +Inter Variable Font +=================== + +This download contains Inter as both variable fonts and static fonts. + +Inter is a variable font with these axes: + opsz + wght + +This means all the styles are contained in these files: + Inter/Inter-VariableFont_opsz,wght.ttf + Inter/Inter-Italic-VariableFont_opsz,wght.ttf + +If your app fully supports variable fonts, you can now pick intermediate styles +that aren’t available as static fonts. Not all apps support variable fonts, and +in those cases you can use the static font files for Inter: + Inter/static/Inter_18pt-Thin.ttf + Inter/static/Inter_18pt-ExtraLight.ttf + Inter/static/Inter_18pt-Light.ttf + Inter/static/Inter_18pt-Regular.ttf + Inter/static/Inter_18pt-Medium.ttf + Inter/static/Inter_18pt-SemiBold.ttf + Inter/static/Inter_18pt-Bold.ttf + Inter/static/Inter_18pt-ExtraBold.ttf + Inter/static/Inter_18pt-Black.ttf + Inter/static/Inter_24pt-Thin.ttf + Inter/static/Inter_24pt-ExtraLight.ttf + Inter/static/Inter_24pt-Light.ttf + Inter/static/Inter_24pt-Regular.ttf + Inter/static/Inter_24pt-Medium.ttf + Inter/static/Inter_24pt-SemiBold.ttf + Inter/static/Inter_24pt-Bold.ttf + Inter/static/Inter_24pt-ExtraBold.ttf + Inter/static/Inter_24pt-Black.ttf + Inter/static/Inter_28pt-Thin.ttf + Inter/static/Inter_28pt-ExtraLight.ttf + Inter/static/Inter_28pt-Light.ttf + Inter/static/Inter_28pt-Regular.ttf + Inter/static/Inter_28pt-Medium.ttf + Inter/static/Inter_28pt-SemiBold.ttf + Inter/static/Inter_28pt-Bold.ttf + Inter/static/Inter_28pt-ExtraBold.ttf + Inter/static/Inter_28pt-Black.ttf + Inter/static/Inter_18pt-ThinItalic.ttf + Inter/static/Inter_18pt-ExtraLightItalic.ttf + Inter/static/Inter_18pt-LightItalic.ttf + Inter/static/Inter_18pt-Italic.ttf + Inter/static/Inter_18pt-MediumItalic.ttf + Inter/static/Inter_18pt-SemiBoldItalic.ttf + Inter/static/Inter_18pt-BoldItalic.ttf + Inter/static/Inter_18pt-ExtraBoldItalic.ttf + Inter/static/Inter_18pt-BlackItalic.ttf + Inter/static/Inter_24pt-ThinItalic.ttf + Inter/static/Inter_24pt-ExtraLightItalic.ttf + Inter/static/Inter_24pt-LightItalic.ttf + Inter/static/Inter_24pt-Italic.ttf + Inter/static/Inter_24pt-MediumItalic.ttf + Inter/static/Inter_24pt-SemiBoldItalic.ttf + Inter/static/Inter_24pt-BoldItalic.ttf + Inter/static/Inter_24pt-ExtraBoldItalic.ttf + Inter/static/Inter_24pt-BlackItalic.ttf + Inter/static/Inter_28pt-ThinItalic.ttf + Inter/static/Inter_28pt-ExtraLightItalic.ttf + Inter/static/Inter_28pt-LightItalic.ttf + Inter/static/Inter_28pt-Italic.ttf + Inter/static/Inter_28pt-MediumItalic.ttf + Inter/static/Inter_28pt-SemiBoldItalic.ttf + Inter/static/Inter_28pt-BoldItalic.ttf + Inter/static/Inter_28pt-ExtraBoldItalic.ttf + Inter/static/Inter_28pt-BlackItalic.ttf + +Get started +----------- + +1. Install the font files you want to use + +2. Use your app's font picker to view the font family and all the +available styles + +Learn more about variable fonts +------------------------------- + + https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts + https://variablefonts.typenetwork.com + https://medium.com/variable-fonts + +In desktop apps + + https://theblog.adobe.com/can-variable-fonts-illustrator-cc + https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts + +Online + + https://developers.google.com/fonts/docs/getting_started + https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide + https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts + +Installing fonts + + MacOS: https://support.apple.com/en-us/HT201749 + Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux + Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows + +Android Apps + + https://developers.google.com/fonts/docs/android + https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts + +License +------- +Please read the full license text (OFL.txt) to understand the permissions, +restrictions and requirements for usage, redistribution, and modification. + +You can use them in your products & projects – print or digital, +commercial or otherwise. + +This isn't legal advice, please consider consulting a lawyer and see the full +license for all details. diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Black.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Black.ttf new file mode 100644 index 0000000..89673de Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Black.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-BlackItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-BlackItalic.ttf new file mode 100644 index 0000000..b33602f Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-BlackItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Bold.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Bold.ttf new file mode 100644 index 0000000..57704d1 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Bold.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-BoldItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-BoldItalic.ttf new file mode 100644 index 0000000..d53a199 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-BoldItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ExtraBold.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ExtraBold.ttf new file mode 100644 index 0000000..e71c601 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ExtraBold.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ExtraBoldItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ExtraBoldItalic.ttf new file mode 100644 index 0000000..df45062 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ExtraBoldItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ExtraLight.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ExtraLight.ttf new file mode 100644 index 0000000..f9c6cfc Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ExtraLight.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ExtraLightItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ExtraLightItalic.ttf new file mode 100644 index 0000000..275f305 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ExtraLightItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Italic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Italic.ttf new file mode 100644 index 0000000..14d3595 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Italic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Light.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Light.ttf new file mode 100644 index 0000000..acae361 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Light.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-LightItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-LightItalic.ttf new file mode 100644 index 0000000..f69e18b Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-LightItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Medium.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Medium.ttf new file mode 100644 index 0000000..71d9017 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Medium.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-MediumItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-MediumItalic.ttf new file mode 100644 index 0000000..5c8c8b1 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-MediumItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Regular.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Regular.ttf new file mode 100644 index 0000000..ce097c8 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Regular.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-SemiBold.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-SemiBold.ttf new file mode 100644 index 0000000..053185e Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-SemiBold.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-SemiBoldItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-SemiBoldItalic.ttf new file mode 100644 index 0000000..d9c9896 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-SemiBoldItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Thin.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Thin.ttf new file mode 100644 index 0000000..e68ec47 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-Thin.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ThinItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ThinItalic.ttf new file mode 100644 index 0000000..134e837 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_18pt-ThinItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Black.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Black.ttf new file mode 100644 index 0000000..dbb1b3b Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Black.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-BlackItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-BlackItalic.ttf new file mode 100644 index 0000000..b89d61c Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-BlackItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Bold.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Bold.ttf new file mode 100644 index 0000000..e974d96 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Bold.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-BoldItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-BoldItalic.ttf new file mode 100644 index 0000000..1c3d251 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-BoldItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ExtraBold.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ExtraBold.ttf new file mode 100644 index 0000000..b775c08 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ExtraBold.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ExtraBoldItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ExtraBoldItalic.ttf new file mode 100644 index 0000000..3461a92 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ExtraBoldItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ExtraLight.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ExtraLight.ttf new file mode 100644 index 0000000..2ec6ca3 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ExtraLight.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ExtraLightItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ExtraLightItalic.ttf new file mode 100644 index 0000000..c634a5d Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ExtraLightItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Italic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Italic.ttf new file mode 100644 index 0000000..1048b07 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Italic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Light.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Light.ttf new file mode 100644 index 0000000..1a2a6f2 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Light.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-LightItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-LightItalic.ttf new file mode 100644 index 0000000..ded5a75 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-LightItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Medium.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Medium.ttf new file mode 100644 index 0000000..5c88739 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Medium.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-MediumItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-MediumItalic.ttf new file mode 100644 index 0000000..be091b1 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-MediumItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Regular.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Regular.ttf new file mode 100644 index 0000000..6b088a7 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Regular.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-SemiBold.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-SemiBold.ttf new file mode 100644 index 0000000..ceb8576 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-SemiBold.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-SemiBoldItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-SemiBoldItalic.ttf new file mode 100644 index 0000000..6921df2 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-SemiBoldItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Thin.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Thin.ttf new file mode 100644 index 0000000..3505b35 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-Thin.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ThinItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ThinItalic.ttf new file mode 100644 index 0000000..a3e6feb Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_24pt-ThinItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Black.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Black.ttf new file mode 100644 index 0000000..66a252f Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Black.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-BlackItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-BlackItalic.ttf new file mode 100644 index 0000000..3c8fdf9 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-BlackItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Bold.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Bold.ttf new file mode 100644 index 0000000..14db994 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Bold.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-BoldItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-BoldItalic.ttf new file mode 100644 index 0000000..704b12b Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-BoldItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ExtraBold.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ExtraBold.ttf new file mode 100644 index 0000000..6d87cae Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ExtraBold.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ExtraBoldItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ExtraBoldItalic.ttf new file mode 100644 index 0000000..1a56735 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ExtraBoldItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ExtraLight.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ExtraLight.ttf new file mode 100644 index 0000000..d42b3f5 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ExtraLight.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ExtraLightItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ExtraLightItalic.ttf new file mode 100644 index 0000000..90e2f20 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ExtraLightItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Italic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Italic.ttf new file mode 100644 index 0000000..c2a143a Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Italic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Light.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Light.ttf new file mode 100644 index 0000000..5eeff3a Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Light.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-LightItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-LightItalic.ttf new file mode 100644 index 0000000..6b90b76 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-LightItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Medium.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Medium.ttf new file mode 100644 index 0000000..00120fe Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Medium.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-MediumItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-MediumItalic.ttf new file mode 100644 index 0000000..7481e7b Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-MediumItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Regular.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Regular.ttf new file mode 100644 index 0000000..855b6f4 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Regular.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-SemiBold.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-SemiBold.ttf new file mode 100644 index 0000000..8b84efc Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-SemiBold.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-SemiBoldItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-SemiBoldItalic.ttf new file mode 100644 index 0000000..2e22c5a Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-SemiBoldItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Thin.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Thin.ttf new file mode 100644 index 0000000..94e6108 Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-Thin.ttf differ diff --git a/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ThinItalic.ttf b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ThinItalic.ttf new file mode 100644 index 0000000..d3d44cd Binary files /dev/null and b/src/main/resources/assets/fonts/Inter/static/Inter_28pt-ThinItalic.ttf differ diff --git a/src/main/resources/assets/fonts/Noto_Sans_Symbols/NotoSansSymbols-VariableFont_wght.ttf b/src/main/resources/assets/fonts/Noto_Sans_Symbols/NotoSansSymbols-VariableFont_wght.ttf new file mode 100644 index 0000000..41fd4e3 Binary files /dev/null and b/src/main/resources/assets/fonts/Noto_Sans_Symbols/NotoSansSymbols-VariableFont_wght.ttf differ diff --git a/src/main/resources/assets/fonts/Noto_Sans_Symbols/OFL.txt b/src/main/resources/assets/fonts/Noto_Sans_Symbols/OFL.txt new file mode 100644 index 0000000..ce2c42c --- /dev/null +++ b/src/main/resources/assets/fonts/Noto_Sans_Symbols/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2022 The Noto Project Authors (https://github.com/notofonts/symbols) + +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: +https://openfontlicense.org + + +----------------------------------------------------------- +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/src/main/resources/assets/fonts/Noto_Sans_Symbols/README.txt b/src/main/resources/assets/fonts/Noto_Sans_Symbols/README.txt new file mode 100644 index 0000000..9b43ae4 --- /dev/null +++ b/src/main/resources/assets/fonts/Noto_Sans_Symbols/README.txt @@ -0,0 +1,71 @@ +Noto Sans Symbols Variable Font +=============================== + +This download contains Noto Sans Symbols as both a variable font and static fonts. + +Noto Sans Symbols is a variable font with this axis: + wght + +This means all the styles are contained in a single file: + Noto_Sans_Symbols/NotoSansSymbols-VariableFont_wght.ttf + +If your app fully supports variable fonts, you can now pick intermediate styles +that aren’t available as static fonts. Not all apps support variable fonts, and +in those cases you can use the static font files for Noto Sans Symbols: + Noto_Sans_Symbols/static/NotoSansSymbols-Thin.ttf + Noto_Sans_Symbols/static/NotoSansSymbols-ExtraLight.ttf + Noto_Sans_Symbols/static/NotoSansSymbols-Light.ttf + Noto_Sans_Symbols/static/NotoSansSymbols-Regular.ttf + Noto_Sans_Symbols/static/NotoSansSymbols-Medium.ttf + Noto_Sans_Symbols/static/NotoSansSymbols-SemiBold.ttf + Noto_Sans_Symbols/static/NotoSansSymbols-Bold.ttf + Noto_Sans_Symbols/static/NotoSansSymbols-ExtraBold.ttf + Noto_Sans_Symbols/static/NotoSansSymbols-Black.ttf + +Get started +----------- + +1. Install the font files you want to use + +2. Use your app's font picker to view the font family and all the +available styles + +Learn more about variable fonts +------------------------------- + + https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts + https://variablefonts.typenetwork.com + https://medium.com/variable-fonts + +In desktop apps + + https://theblog.adobe.com/can-variable-fonts-illustrator-cc + https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts + +Online + + https://developers.google.com/fonts/docs/getting_started + https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide + https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts + +Installing fonts + + MacOS: https://support.apple.com/en-us/HT201749 + Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux + Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows + +Android Apps + + https://developers.google.com/fonts/docs/android + https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts + +License +------- +Please read the full license text (OFL.txt) to understand the permissions, +restrictions and requirements for usage, redistribution, and modification. + +You can use them in your products & projects – print or digital, +commercial or otherwise. + +This isn't legal advice, please consider consulting a lawyer and see the full +license for all details. diff --git a/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Black.ttf b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Black.ttf new file mode 100644 index 0000000..84e3056 Binary files /dev/null and b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Black.ttf differ diff --git a/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Bold.ttf b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Bold.ttf new file mode 100644 index 0000000..5f8661d Binary files /dev/null and b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Bold.ttf differ diff --git a/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-ExtraBold.ttf b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-ExtraBold.ttf new file mode 100644 index 0000000..24f83dc Binary files /dev/null and b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-ExtraBold.ttf differ diff --git a/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-ExtraLight.ttf b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-ExtraLight.ttf new file mode 100644 index 0000000..4ef7591 Binary files /dev/null and b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-ExtraLight.ttf differ diff --git a/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Light.ttf b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Light.ttf new file mode 100644 index 0000000..a5ae40b Binary files /dev/null and b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Light.ttf differ diff --git a/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Medium.ttf b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Medium.ttf new file mode 100644 index 0000000..b463272 Binary files /dev/null and b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Medium.ttf differ diff --git a/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Regular.ttf b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Regular.ttf new file mode 100644 index 0000000..6ab0ca0 Binary files /dev/null and b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Regular.ttf differ diff --git a/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-SemiBold.ttf b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-SemiBold.ttf new file mode 100644 index 0000000..c2a7838 Binary files /dev/null and b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-SemiBold.ttf differ diff --git a/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Thin.ttf b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Thin.ttf new file mode 100644 index 0000000..1d2d610 Binary files /dev/null and b/src/main/resources/assets/fonts/Noto_Sans_Symbols/static/NotoSansSymbols-Thin.ttf differ