From 9ae07284d81dd08130d36ed6cd5b5c157d00cc07 Mon Sep 17 00:00:00 2001 From: Lyu Zong-Hong Date: Fri, 5 Mar 2021 20:25:07 +0900 Subject: [PATCH] Add CJK font setting and dowloader for mobile port --- .../src/forge/assets/FSkinFont.java | 32 ++++++++++- .../src/forge/screens/settings/FilesPage.java | 54 ++++++++++++++++++- .../forge/screens/settings/SettingsPage.java | 43 ++++++++++++++- forge-gui/res/languages/de-DE.properties | 5 ++ forge-gui/res/languages/en-US.properties | 5 ++ forge-gui/res/languages/es-ES.properties | 5 ++ forge-gui/res/languages/it-IT.properties | 5 ++ forge-gui/res/languages/ja-JP.properties | 5 ++ forge-gui/res/languages/zh-CN.properties | 6 +++ forge-gui/res/lists/font-list.txt | 1 + .../java/forge/properties/ForgeConstants.java | 1 + .../forge/properties/ForgePreferences.java | 1 + 12 files changed, 160 insertions(+), 3 deletions(-) create mode 100644 forge-gui/res/lists/font-list.txt diff --git a/forge-gui-mobile/src/forge/assets/FSkinFont.java b/forge-gui-mobile/src/forge/assets/FSkinFont.java index b565dcaeed6..e650259b37f 100644 --- a/forge-gui-mobile/src/forge/assets/FSkinFont.java +++ b/forge-gui-mobile/src/forge/assets/FSkinFont.java @@ -18,7 +18,9 @@ import com.badlogic.gdx.utils.Array; import forge.FThreads; import forge.Forge; +import forge.model.FModel; import forge.properties.ForgeConstants; +import forge.properties.ForgePreferences.FPref; import forge.util.FileUtil; import forge.util.LineReader; import forge.util.TextBounds; @@ -28,8 +30,10 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -376,7 +380,11 @@ public class FSkinFont { return; } + String locale = FModel.getPreferences().getPref(FPref.UI_LANGUAGE); String fontName = "f" + fontSize; + if (locale.equals("zh-CN") || locale.equals("ja-JP")) { + fontName += locale; + } FileHandle fontFile = Gdx.files.absolute(ForgeConstants.FONTS_DIR + fontName + ".fnt"); if (fontFile != null && fontFile.exists()) { final BitmapFontData data = new BitmapFontData(fontFile, false); @@ -387,7 +395,15 @@ public class FSkinFont { } }); } else { - generateFont(FSkin.getSkinFile(TTF_FILE), fontName, fontSize); + if (locale.equals("zh-CN") || locale.equals("ja-JP")) { + String ttfName = FModel.getPreferences().getPref(FPref.UI_CJK_FONT); + FileHandle ttfFile = Gdx.files.absolute(ForgeConstants.FONTS_DIR + ttfName + ".ttf"); + if (ttfFile != null && ttfFile.exists()) { + generateFont(ttfFile, fontName, fontSize); + } + } else { + generateFont(FSkin.getSkinFile(TTF_FILE), fontName, fontSize); + } } } @@ -448,4 +464,18 @@ public class FSkinFont { } }); } + + public static Iterable getAllCJKFonts() { + final List allCJKFonts = new ArrayList<>(); + + allCJKFonts.add("None"); + final FileHandle dir = Gdx.files.absolute(ForgeConstants.FONTS_DIR); + for (FileHandle fontFile : dir.list()) { + String fontName = fontFile.name(); + if (!fontName.endsWith(".ttf")) { continue; } + allCJKFonts.add(fontName.replace(".ttf", "")); + } + + return allCJKFonts; + } } diff --git a/forge-gui-mobile/src/forge/screens/settings/FilesPage.java b/forge-gui-mobile/src/forge/screens/settings/FilesPage.java index 99f91e5986d..045e78f0aed 100644 --- a/forge-gui-mobile/src/forge/screens/settings/FilesPage.java +++ b/forge-gui-mobile/src/forge/screens/settings/FilesPage.java @@ -1,5 +1,10 @@ package forge.screens.settings; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + import forge.Forge; import forge.download.GuiDownloadAchievementImages; import forge.download.GuiDownloadPicturesLQ; @@ -7,8 +12,10 @@ import forge.download.GuiDownloadPrices; import forge.download.GuiDownloadQuestImages; import forge.download.GuiDownloadSetPicturesLQ; import forge.download.GuiDownloadService; - import forge.download.GuiDownloadSkins; +import forge.download.GuiDownloadZipService; +import forge.properties.ForgeConstants; +import forge.util.FileUtil; import forge.util.Localizer; import org.apache.commons.lang3.StringUtils; @@ -26,6 +33,7 @@ import forge.toolbox.FFileChooser.ChoiceType; import forge.toolbox.FGroupList; import forge.toolbox.FList; import forge.toolbox.FOptionPane; +import forge.toolbox.GuiChoose; import forge.util.Callback; public class FilesPage extends TabPage { @@ -84,6 +92,27 @@ public class FilesPage extends TabPage { return new GuiDownloadSkins(); } }, 0); + lstItems.addItem(new OptionContentDownloader(localizer.getMessage("btnDownloadCJKFonts"), + localizer.getMessage("lblDownloadCJKFonts"), + localizer.getMessage("lblDownloadCJKFontPrompt")) { + @Override + protected Map getCategories() { + // read CJK font list + Map categories = new TreeMap<>(); + List lines = FileUtil.readFile(ForgeConstants.CJK_FONTS_LIST_FILE); + List options = new ArrayList<>(); + for (String line : lines) { + int idx = line.indexOf('|'); + if (idx != -1) { + String name = line.substring(0, idx).trim(); + String url = line.substring(idx + 1).trim(); + categories.put(name, url); + options.add(name); + } + } + return categories; + } + }, 0); //storage locations final StorageOption cardPicsOption = new StorageOption(localizer.getMessage("lblCardPicsLocation"), ForgeProfileProperties.getCardPicsDir()) { @Override @@ -177,6 +206,29 @@ public class FilesPage extends TabPage { protected abstract GuiDownloadService createService(); } + private abstract class OptionContentDownloader extends FilesItem { + private final String prompt; + + OptionContentDownloader(String label0, String description0, String propmt0) { + super(label0, description0); + prompt = propmt0; + } + + @Override + public void select() { + final Map categories = getCategories(); + GuiChoose.one(prompt, categories.keySet(), new Callback() { + @Override + public void run(String result) { + final String url = categories.get(result); + final String name = url.substring(url.lastIndexOf("/") + 1); + new GuiDownloader(new GuiDownloadZipService(name, name, url, ForgeConstants.FONTS_DIR, null, null)).show(); + } + }); + } + protected abstract Map getCategories(); + } + private abstract class StorageOption extends FilesItem { StorageOption(String name0, String dir0) { super(name0, dir0); diff --git a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java index 795994261c1..a5fc1e2b419 100644 --- a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java +++ b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java @@ -60,7 +60,28 @@ public class SettingsPage extends TabPage { FLanguage.getAllLanguages()) { @Override public void valueChanged(String newValue) { + // if the new locale needs to use CJK font, disallow change if UI_CJK_FONT is not set yet + ForgePreferences prefs = FModel.getPreferences(); + if (prefs.getPref(FPref.UI_CJK_FONT).equals("") && + (newValue.equals("zh-CN") || newValue.equals("ja-JP"))) { + String message = "Please download CJK font (from \"Files\"), and set it before change language."; + if (newValue.equals("ja-JP")) { + message += "\nJapanese please use \"ipaexg\"."; + } + FOptionPane.showMessageDialog(message, "Please set CJK Font"); + return; + } + FLanguage.changeLanguage(newValue); + + FOptionPane.showConfirmDialog(localizer.getMessage("lblRestartForgeDescription"), localizer.getMessage("lblRestartForge"), localizer.getMessage("lblRestart"), localizer.getMessage("lblLater"), new Callback() { + @Override + public void run(Boolean result) { + if (result) { + Forge.restart(true); + } + } + }); } }, 0); lstSettings.addItem(new CustomSelectSetting(FPref.UI_SKIN, localizer.getMessage("lblTheme"), @@ -71,6 +92,26 @@ public class SettingsPage extends TabPage { FSkin.changeSkin(newValue); } }, 0); + lstSettings.addItem(new CustomSelectSetting(FPref.UI_CJK_FONT, localizer.getMessage("lblCJKFont"), + localizer.getMessage("nlCJKFont"), + FSkinFont.getAllCJKFonts()) { + @Override + public void valueChanged(String newValue) { + ForgePreferences prefs = FModel.getPreferences(); + if (newValue.equals("None")) { + // If locale needs to use CJK fonts, disallow change to None + String locale = prefs.getPref(FPref.UI_LANGUAGE); + if (locale.equals("zh-CN") || locale.equals("ja-JP")) { + return; + } + newValue = ""; + } + if (newValue.equals(prefs.getPref(FPref.UI_CJK_FONT))) { + return; + } + super.valueChanged(newValue); + } + }, 0); lstSettings.addItem(new BooleanSetting(FPref.UI_LANDSCAPE_MODE, localizer.getMessage("lblLandscapeMode"), localizer.getMessage("nlLandscapeMode")) { @@ -592,10 +633,10 @@ public class SettingsPage extends TabPage { lstOptions.setListItemRenderer(new FList.DefaultListItemRenderer() { @Override public boolean tap(Integer index, String value, float x, float y, int count) { + Forge.back(); if (!value.equals(currentValue)) { valueChanged(value); } - Forge.back(); return true; } diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index 4d125a6cf0e..8eaff48c66a 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -207,6 +207,7 @@ btnImportPictures=Daten importieren btnHowToPlay=Wie man spielt btnDownloadPrices=Kartenpreise herunterladen btnDownloadSkins=Skins herunterladen +btnDownloadCJKFonts=Download CJK Fonts btnLicensing=Lizenzhinweis lblCheckForUpdates=Prüfe Server auf eine aktuellere Version lblDownloadPics=Lädt ein Standardbild pro Karte. @@ -216,6 +217,8 @@ lblDownloadQuestImages=Lädt die Bilder für den Quest-Modus. lblDownloadAchievementImages=Lädt die Bilder zu den möglichen Erfolgen. Verschönert die Trophäensammlung. lblDownloadPrices=Lädt aktuelle Kartenpreise für den Kartenladen im Spiel. lblDownloadSkins=Lade verfügbare Skins herunter, um die Erscheinung von Forge anzupassen. +lblDownloadCJKFonts=Download fonts for locales using CJK glyphs. +lblDownloadCJKFontPrompt=Select a font file to download lblYourVersionOfJavaIsTooOld=Deine Java-Version ist leider zu alt. lblPleaseUpdateToTheLatestVersionOfJava=Bitte aktualisiere auf die neueste Java-Version. lblYoureRunning=Du nutzt @@ -952,6 +955,7 @@ lblBattlefieldTextureFiltering=Texturenfilter Spielfeld lblCompactListItems=Kompakte Liste lblCompactTabs=Kompakte Tabs lblCardOverlays=Karten-Einblendungen +lblCJKFont=CJK Font lblDisableCardEffect=Karten-"Effekt"-Anzeige abschalten lblDynamicBackgroundPlanechase=Weltenjagd dynamischer Hintergrund lblGameplayOptions=Spiel-Optionen @@ -977,6 +981,7 @@ lblVibrateWhenLosingLife=Vibrieren nach Lebenspunktverlust lblVibrationOptions=Vibrationsoptionen nlAutomaticBugReports=Sende automatisch einen Fehlerbericht, ohne Bestätigung. nlBattlefieldTextureFiltering=Nutze den Texturenfilter um Kartenbilder auf großen Anzeigen weniger grob wirken zu lassen (bedingt Neustart). +nlCJKFont=Set the font for CJK glyphs. Will override skin font (restart required). nlCompactListItems=Zeige in allen Listen für jeder Karte und jedes Deck nur eine Zeile. nlCompactTabs=Nutz kompaktere Karteikartenreiter (Tabulatoren/Tabs). nlDisableCardEffect=Schaltet Effekt-Anzeigen für vergrößerte Karten ab. diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index 3cf57d32450..07d243d8e47 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -207,6 +207,7 @@ btnImportPictures=Import Data btnHowToPlay=How To Play btnDownloadPrices=Download Card Prices btnDownloadSkins=Download Skins +btnDownloadCJKFonts=Download CJK Fonts btnLicensing=License Details lblCheckForUpdates=Check Forge server to see if there''s a more recent release lblDownloadPics=Download default card picture for each card. @@ -216,6 +217,8 @@ lblDownloadQuestImages=Download tokens and icons used in Quest mode. lblDownloadAchievementImages=Download achievement images to really make your trophies stand out. lblDownloadPrices=Download up-to-date price list for in-game card shops. lblDownloadSkins=Download available skins used in customizing forge appearance. +lblDownloadCJKFonts=Download fonts for locales using CJK glyphs. +lblDownloadCJKFontPrompt=Select a font file to download lblYourVersionOfJavaIsTooOld=Your version of Java is too old to use the content downloaders. lblPleaseUpdateToTheLatestVersionOfJava=Please update to the latest version of Java lblYoureRunning=You''re running @@ -952,6 +955,7 @@ lblBattlefieldTextureFiltering=Battlefield Texture Filtering lblCompactListItems=Compact List Items lblCompactTabs=Compact Tabs lblCardOverlays=Card Overlays +lblCJKFont=CJK Font lblDisableCardEffect=Disable Card ''Effect'' Images lblDynamicBackgroundPlanechase=Dynamic Background Planechase lblGameplayOptions=Gameplay Options @@ -977,6 +981,7 @@ lblVibrateWhenLosingLife=Vibrate When Losing Life lblVibrationOptions=Vibration Options nlAutomaticBugReports=Automatically send bug reports to the developers, without prompting. nlBattlefieldTextureFiltering=Filter card art on battlefield to make it less pixelated on large screens (restart required, may reduce performance). +nlCJKFont=Set the font for CJK glyphs. Will override skin font (restart required). nlCompactListItems=Show only a single line of text for cards and decks on all list views by default. nlCompactTabs=Show smaller tabs on the top of tab page screens (such as this screen). nlDisableCardEffect=Disable the zoomed image for the ''Effect'' cards. diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties index c299f961b60..bf7fd0f58ef 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -207,6 +207,7 @@ btnImportPictures=Importar datos btnHowToPlay=Cómo jugar (Inglés) btnDownloadPrices=Descargar precios de las cartas btnDownloadSkins=Descargar temas +btnDownloadCJKFonts=Download CJK Fonts btnLicensing=Detalles de la licencia lblCheckForUpdates=Comprueba si en el servidor de Forge existe alguna versión más reciente lblDownloadPics=Descarga una única carta de la última edición donde apareció. @@ -216,6 +217,8 @@ lblDownloadQuestImages=Descarga fichas e íconos utilizados en el modo aventura. lblDownloadAchievementImages=Descarga las imágenes de los trofeos para que destaquen. lblDownloadPrices=Descarga la lista de precios actualizada para la tienda de cartas del juego. lblDownloadSkins=Descarga los temas disponibles para personalizar el aspecto de Forge. +lblDownloadCJKFonts=Download fonts for locales using CJK glyphs. +lblDownloadCJKFontPrompt=Select a font file to download lblYourVersionOfJavaIsTooOld=Tu versión de Java es demasiado antigua para usar los descargadores de contenido. lblPleaseUpdateToTheLatestVersionOfJava=Por favor, actualiza a la última versión de Java lblYoureRunning=Estás ejecutando @@ -952,6 +955,7 @@ lblBattlefieldTextureFiltering=Filtrado de la Textura del Campo de batalla lblCompactListItems=Items de la lista compactos lblCompactTabs=Pestañas compactas lblCardOverlays=Superposiciones de las cartas +lblCJKFont=CJK Font lblDisableCardEffect=Desactivar imágenes de ''Efecto'' de las cartas lblDynamicBackgroundPlanechase=Fondo dinámico Planechase lblGameplayOptions=Opciones de juego @@ -977,6 +981,7 @@ lblVibrateWhenLosingLife=Vibrar al perder vidas lblVibrationOptions=Opciones de vibración nlAutomaticBugReports=Envía automáticamente informes de errores a los desarrolladores, sin preguntar. nlBattlefieldTextureFiltering=Filtra el arte de la carta en el campo de batalla para que sea menos pixelada en pantallas grandes (se requiere reiniciar, puede reducir el rendimiento). +nlCJKFont=Set the font for CJK glyphs. Will override skin font (restart required). nlCompactListItems=Muestra de forma predeterminada solo una línea de texto para las cartas y mazos en todas las vistas de lista. nlCompactTabs=Muestra pestañas más pequeñas en la parte superior de las pantallas de la página de pestañas (como esta pantalla). nlDisableCardEffect=Deshabilita la imagen ampliada para las cartas ''Efecto''. diff --git a/forge-gui/res/languages/it-IT.properties b/forge-gui/res/languages/it-IT.properties index 72537c474be..557620b2e05 100644 --- a/forge-gui/res/languages/it-IT.properties +++ b/forge-gui/res/languages/it-IT.properties @@ -207,6 +207,7 @@ btnImportPictures=Importa dati btnHowToPlay=Come giocare btnDownloadPrices=Scarica i prezzi delle carte btnDownloadSkins=Download Skins +btnDownloadCJKFonts=Download CJK Fonts btnLicensing=Dettagli della licenza lblCheckForUpdates=Check Forge server to see if there''s a more recent release lblDownloadPics=Scarica l''immagine della carta predefinita per ogni carta. @@ -216,6 +217,8 @@ lblDownloadQuestImages=Scarica i token e le icone utilizzati nella modalità Que lblDownloadAchievementImages=Scarica le immagini degli obiettivi per far risaltare davvero i tuoi trofei. lblDownloadPrices=Scarica il listino aggiornato per i negozi di carte di gioco. lblDownloadSkins=Download available skins used in customizing forge appearance. +lblDownloadCJKFonts=Download fonts for locales using CJK glyphs. +lblDownloadCJKFontPrompt=Select a font file to download lblYourVersionOfJavaIsTooOld=La tua versione di Java è troppo vecchia per utilizzare i downloader di contenuti. lblPleaseUpdateToTheLatestVersionOfJava=Si prega di aggiornare all''ultima versione di Java lblYoureRunning=Stai correndo @@ -952,6 +955,7 @@ lblBattlefieldTextureFiltering=Filtraggio delle trame del campo di battaglia lblCompactListItems=Elementi dell''elenco compatto lblCompactTabs=Schede compatte lblCardOverlays=Sovrapposizioni di carte +lblCJKFont=CJK Font lblDisableCardEffect=Disable Card ''Effect'' Images lblDynamicBackgroundPlanechase=Planechase di sfondo dinamico lblGameplayOptions=Opzioni di gioco @@ -977,6 +981,7 @@ lblVibrateWhenLosingLife=Vibrazione quando si perde la vita lblVibrationOptions=Opzioni di vibrazione nlAutomaticBugReports=Invia automaticamente segnalazioni di bug agli sviluppatori, senza chiedere conferma. nlBattlefieldTextureFiltering=Filtra la grafica delle carte sul campo di battaglia per renderla meno pixelata su schermi di grandi dimensioni (è necessario riavviare, potrebbe ridurre le prestazioni). +nlCJKFont=Set the font for CJK glyphs. Will override skin font (restart required). nlCompactListItems=Mostra solo una singola riga di testo per carte e mazzi su tutte le visualizzazioni elenco per impostazione predefinita. nlCompactTabs=Mostra schede più piccole nella parte superiore delle schermate della scheda (come questa schermata). nlDisableCardEffect=Disable the zoomed image for the ''Effect'' cards. diff --git a/forge-gui/res/languages/ja-JP.properties b/forge-gui/res/languages/ja-JP.properties index 652b1d301db..f776c102523 100644 --- a/forge-gui/res/languages/ja-JP.properties +++ b/forge-gui/res/languages/ja-JP.properties @@ -207,6 +207,7 @@ btnImportPictures=画像データのインポート btnHowToPlay=遊び方 btnDownloadPrices=カード価格のダウンロード btnDownloadSkins=テーマのダウンロード +btnDownloadCJKFonts=日中韓フォントのダウンロード btnLicensing=ライセンスの詳細 lblCheckForUpdates=Forge サーバにアクセスして、より新しいリリースがありますかどうかを確認する lblDownloadPics=各カードのデフォルトのカード画像をダウンロードします。 @@ -216,6 +217,8 @@ lblDownloadQuestImages=クエストモードで使用されるトークンとア lblDownloadAchievementImages=実績画像をダウンロードして、トロフィーを際立たせましょう。 lblDownloadPrices=ゲーム内のカードショップの最新の価格表をダウンロードします。 lblDownloadSkins=Forge のカスタマイズ用のテーマをダウンロードします。 +lblDownloadCJKFonts=日中韓文字を使う言語用のフォントをダウンロードします。 +lblDownloadCJKFontPrompt=ダウンロードするフォントファイルを選択してください。 lblYourVersionOfJavaIsTooOld=Java のバージョンが古すぎるため、コンテンツダウンローダーを使用できません。 lblPleaseUpdateToTheLatestVersionOfJava=Javaの最新バージョンに更新してください lblYoureRunning= @@ -952,6 +955,7 @@ lblBattlefieldTextureFiltering=戦場の背景画像のテクスチャフィル lblCompactListItems=コンパクトリストアイテム lblCompactTabs=コンパクトタブ lblCardOverlays=カードオーバーレイ +lblCJKFont=日中韓フォント lblDisableCardEffect=カードの「効果」画像を無効にする lblDynamicBackgroundPlanechase=プレインチェイス戦に動的背景 lblGameplayOptions=ゲームプレイオプション @@ -977,6 +981,7 @@ lblVibrateWhenLosingLife=ライフを失ったときに振動する lblVibrationOptions=振動オプション nlAutomaticBugReports=プロンプトを表示せずに、バグレポートを開発者に自動的に送信します。 nlBattlefieldTextureFiltering=カード画像にフィルタを適用して、大きい画面の表示がスムーズになる (再起動が必要、パフォーマンス低下の恐れ)。 +nlCJKFont=日中韓文字で使うフォントを設定します。テーマのフォントよりも優先的に適用します (再起動が必要)。 nlCompactListItems=デフォルトでカードリストやデッキリストに文字一行だけを表示する。 nlCompactTabs=タッブ画面に小さいタッブを使います (例えばこの画面)。 nlDisableCardEffect=「効果」カードのズームインを無効する。 diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties index d83a9bf513d..9815598ec2a 100644 --- a/forge-gui/res/languages/zh-CN.properties +++ b/forge-gui/res/languages/zh-CN.properties @@ -35,6 +35,7 @@ lblQuestDeckEditor=冒险套牌编辑器 lblQuestTournamentDeckEditor=冒险比赛套牌编辑器 lblSpellShop=卡牌商店 lblLeaveShop=离开商店 +lblLeaveDraft=Leave Draft lblBazaar=珍宝集市 lblConcedeGame=这场游戏认输 txerrFailedtodeletelayoutfile=删除布局文件失败。 @@ -206,6 +207,7 @@ btnImportPictures=导入数据 btnHowToPlay=如何玩 btnDownloadPrices=下载卡牌价格 btnDownloadSkins=下载主题文件 +btnDownloadCJKFonts=Download CJK Fonts btnLicensing=许可证详情 lblCheckForUpdates=查看是否有新的版本 lblDownloadPics=下载缺省牌的图片 @@ -215,6 +217,8 @@ lblDownloadQuestImages=下载冒险之旅里使用的衍生物与图标 lblDownloadAchievementImages=下载成就图片,让你的奖杯更引人注目。 lblDownloadPrices=下载卡牌商店最新的价格表 lblDownloadSkins=下载可用于自定义forge外观的主题。 +lblDownloadCJKFonts=Download fonts for locales using CJK glyphs. +lblDownloadCJKFontPrompt=Select a font file to download lblYourVersionOfJavaIsTooOld=你的Java版本太旧无法开始下载内容 lblPleaseUpdateToTheLatestVersionOfJava=请更新到最新版本的JRE lblYoureRunning=你在运行 @@ -951,6 +955,7 @@ lblBattlefieldTextureFiltering=战场纹理过滤 lblCompactListItems=紧凑的项目列表 lblCompactTabs=紧凑标签 lblCardOverlays=卡牌叠加层 +lblCJKFont=CJK Font lblDisableCardEffect=禁用卡牌“效果”图 lblDynamicBackgroundPlanechase=动态时空背景 lblGameplayOptions=游戏选项 @@ -976,6 +981,7 @@ lblVibrateWhenLosingLife=失去生命时震动 lblVibrationOptions=振动选项 nlAutomaticBugReports=在没有提示的情况下自动向开发人员报告错误 nlBattlefieldTextureFiltering=在战场上过滤闪卡特效,使其在大屏幕上不像素化(需要重启,可能会降低性能)。 +nlCJKFont=Set the font for CJK glyphs. Will override skin font (restart required). nlCompactListItems=默认情况下,在所有视图列表中只显示卡牌和套牌的单行文本。 nlCompactTabs=在标签页屏幕顶部显示较小的标签(例如此屏幕)。 nlDisableCardEffect=禁用“效果”卡的缩放图片。 diff --git a/forge-gui/res/lists/font-list.txt b/forge-gui/res/lists/font-list.txt new file mode 100644 index 00000000000..f833fde67ea --- /dev/null +++ b/forge-gui/res/lists/font-list.txt @@ -0,0 +1 @@ +ipaexg | https://downloads.cardforge.org/fonts/ipaexg.zip diff --git a/forge-gui/src/main/java/forge/properties/ForgeConstants.java b/forge-gui/src/main/java/forge/properties/ForgeConstants.java index 61c28161ece..1ab25446425 100644 --- a/forge-gui/src/main/java/forge/properties/ForgeConstants.java +++ b/forge-gui/src/main/java/forge/properties/ForgeConstants.java @@ -50,6 +50,7 @@ public final class ForgeConstants { public static final String NET_DECKS_BRAWL_LIST_FILE = LISTS_DIR + "net-decks-brawl.txt"; public static final String BORDERLESS_CARD_LIST_FILE = LISTS_DIR + "borderlessCardList.txt"; public static final String SKINS_LIST_FILE = LISTS_DIR + "skinsList.txt"; + public static final String CJK_FONTS_LIST_FILE = LISTS_DIR + "font-list.txt"; public static final String NET_ARCHIVE_STANDARD_DECKS_LIST_FILE = LISTS_DIR + "net-decks-archive-standard.txt"; public static final String NET_ARCHIVE_PIONEER_DECKS_LIST_FILE = LISTS_DIR + "net-decks-archive-pioneer.txt"; public static final String NET_ARCHIVE_MODERN_DECKS_LIST_FILE = LISTS_DIR + "net-decks-archive-modern.txt"; diff --git a/forge-gui/src/main/java/forge/properties/ForgePreferences.java b/forge-gui/src/main/java/forge/properties/ForgePreferences.java index d420618110f..a3a75c0cbc5 100644 --- a/forge-gui/src/main/java/forge/properties/ForgePreferences.java +++ b/forge-gui/src/main/java/forge/properties/ForgePreferences.java @@ -107,6 +107,7 @@ public class ForgePreferences extends PreferencesStore { UI_ANTE_MATCH_RARITY ("false"), UI_MANABURN("false"), UI_SKIN ("Default"), + UI_CJK_FONT (""), UI_PREFERRED_AVATARS_ONLY ("false"), UI_TARGETING_OVERLAY ("0"), UI_TIMED_TARGETING_OVERLAY_UPDATES ("true"),