From b33afc636c7e7a2564b7daf6aa9a18cbc9f5dfa6 Mon Sep 17 00:00:00 2001 From: Sergey Svinolobov Date: Tue, 17 Feb 2026 01:02:34 -0500 Subject: [PATCH] Add margin size, text justification and hyphenation to Theme settings - Add margin slider (0-10) to Theme dialog for controlling content width by overriding PCS max-width constraints via CSS injection - Add Justify and Hyphenation toggle switches - Block horizontal WebView scrolling when custom margins are active - Add translations for 18 languages Bug: T417607 --- .../bridge/JavaScriptActionHandler.kt | 37 ++++++ .../wikipedia/events/ChangeMarginSizeEvent.kt | 3 + .../java/org/wikipedia/page/PageActivity.kt | 4 + .../java/org/wikipedia/page/PageFragment.kt | 5 + .../main/java/org/wikipedia/settings/Prefs.kt | 12 ++ .../org/wikipedia/theme/ThemeChooserDialog.kt | 39 ++++++ .../org/wikipedia/views/ObservableWebView.kt | 13 ++ .../main/res/layout/dialog_theme_chooser.xml | 112 ++++++++++++++++++ app/src/main/res/values-bg/strings.xml | 5 + app/src/main/res/values-cs/strings.xml | 5 + app/src/main/res/values-de/strings.xml | 5 + app/src/main/res/values-es/strings.xml | 5 + app/src/main/res/values-fr/strings.xml | 7 +- app/src/main/res/values-it/strings.xml | 5 + app/src/main/res/values-ja/strings.xml | 5 + app/src/main/res/values-ko/strings.xml | 5 + app/src/main/res/values-pl/strings.xml | 5 + app/src/main/res/values-pt/strings.xml | 5 + app/src/main/res/values-ru/strings.xml | 5 + app/src/main/res/values-sh/strings.xml | 5 + app/src/main/res/values-sk/strings.xml | 5 + app/src/main/res/values-sl/strings.xml | 5 + app/src/main/res/values-sr/strings.xml | 5 + app/src/main/res/values-uk/strings.xml | 5 + app/src/main/res/values-zh-rTW/strings.xml | 5 + app/src/main/res/values-zh/strings.xml | 5 + app/src/main/res/values/dimens.xml | 3 + app/src/main/res/values/preference_keys.xml | 3 + app/src/main/res/values/strings.xml | 5 + 29 files changed, 327 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/org/wikipedia/events/ChangeMarginSizeEvent.kt diff --git a/app/src/main/java/org/wikipedia/bridge/JavaScriptActionHandler.kt b/app/src/main/java/org/wikipedia/bridge/JavaScriptActionHandler.kt index bca144b0592..970f2dd8f34 100644 --- a/app/src/main/java/org/wikipedia/bridge/JavaScriptActionHandler.kt +++ b/app/src/main/java/org/wikipedia/bridge/JavaScriptActionHandler.kt @@ -28,6 +28,43 @@ object JavaScriptActionHandler { return "pcs.c1.Page.setMargins({ top:'${top}px', bottom:'${bottom}px' })" } + private fun buildTextFormattingCss(): String { + val sb = StringBuilder() + val selectors = "body, .pcs-body, .mw-parser-output, .mw-parser-output p, .mw-parser-output li," + + " .mw-parser-output dd, .mw-parser-output td" + val rules = mutableListOf() + if (Prefs.isTextJustifyEnabled) { + rules.add("text-align: justify !important") + } + if (Prefs.isTextHyphenationEnabled) { + rules.add("-webkit-hyphens: auto !important") + rules.add("hyphens: auto !important") + rules.add("word-wrap: break-word !important") + rules.add("overflow-wrap: break-word !important") + } + if (rules.isNotEmpty()) { + sb.append("$selectors { ${rules.joinToString("; ")}; }") + } + return sb.toString() + } + + fun setHorizontalMargins(multiplier: Int): String { + // multiplier 10 = default PCS behavior (no margin override) + // multiplier 9..0 = progressively wider content + return "(function() {" + + "var s = document.getElementById('app-margin-style');" + + "if (!s) { s = document.createElement('style'); s.id = 'app-margin-style'; document.head.appendChild(s); }" + + "if ($multiplier >= 10) { s.innerHTML = '${buildTextFormattingCss()}'; return; }" + + "s.innerHTML = '" + + "html, body { overflow-x: hidden !important; }" + + " body, .pcs-body, .content, .mw-body, #content, #bodyContent, .mw-parser-output, section" + + " { max-width: 100% !important; box-sizing: border-box !important; }" + + " body { padding-left: ${multiplier + 1}vw !important; padding-right: ${multiplier + 1}vw !important;" + + " margin-left: auto !important; margin-right: auto !important; }" + + " ${buildTextFormattingCss()}';" + + "})();" + } + fun getTextSelection(): String { return "pcs.c1.InteractionHandling.getSelectionInfo()" } diff --git a/app/src/main/java/org/wikipedia/events/ChangeMarginSizeEvent.kt b/app/src/main/java/org/wikipedia/events/ChangeMarginSizeEvent.kt new file mode 100644 index 00000000000..9eb11109c59 --- /dev/null +++ b/app/src/main/java/org/wikipedia/events/ChangeMarginSizeEvent.kt @@ -0,0 +1,3 @@ +package org.wikipedia.events + +class ChangeMarginSizeEvent diff --git a/app/src/main/java/org/wikipedia/page/PageActivity.kt b/app/src/main/java/org/wikipedia/page/PageActivity.kt index 7ee0ab4fdfe..4e03bf7078a 100644 --- a/app/src/main/java/org/wikipedia/page/PageActivity.kt +++ b/app/src/main/java/org/wikipedia/page/PageActivity.kt @@ -54,6 +54,7 @@ import org.wikipedia.descriptions.DescriptionEditSuccessActivity import org.wikipedia.edit.EditHandler import org.wikipedia.edit.EditSectionActivity import org.wikipedia.events.ArticleSavedOrDeletedEvent +import org.wikipedia.events.ChangeMarginSizeEvent import org.wikipedia.events.ChangeTextSizeEvent import org.wikipedia.extensions.parcelableExtra import org.wikipedia.gallery.GalleryActivity @@ -209,6 +210,9 @@ class PageActivity : BaseActivity(), PageFragment.Callback, LinkPreviewDialog.Lo is ChangeTextSizeEvent -> { pageFragment.updateFontSize() } + is ChangeMarginSizeEvent -> { + pageFragment.updateMargins() + } is ArticleSavedOrDeletedEvent -> { pageFragment.title?.run { if (event.pages.any { it.apiTitle == prefixedText && it.lang == wikiSite.languageCode }) { diff --git a/app/src/main/java/org/wikipedia/page/PageFragment.kt b/app/src/main/java/org/wikipedia/page/PageFragment.kt index 50f47aa7bcb..95ce2f193e2 100644 --- a/app/src/main/java/org/wikipedia/page/PageFragment.kt +++ b/app/src/main/java/org/wikipedia/page/PageFragment.kt @@ -964,6 +964,7 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi // Explicitly set the top margin (even though it might have already been set in the setup // handler), since the page metadata might have altered the lead image display state. bridge.execute(JavaScriptActionHandler.setTopMargin(leadImagesHandler.topMargin)) + bridge.execute(JavaScriptActionHandler.setHorizontalMargins(Prefs.marginSizeMultiplier)) bridge.execute(JavaScriptActionHandler.setFooter(model)) } @@ -1053,6 +1054,10 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi webView.settings.defaultFontSize = app.getFontSize().toInt() } + fun updateMargins() { + bridge.execute(JavaScriptActionHandler.setHorizontalMargins(Prefs.marginSizeMultiplier)) + } + fun updateQuickActionsAndMenuOptions() { if (!isAdded) { return diff --git a/app/src/main/java/org/wikipedia/settings/Prefs.kt b/app/src/main/java/org/wikipedia/settings/Prefs.kt index 4e5703487bb..7f5c33bef35 100644 --- a/app/src/main/java/org/wikipedia/settings/Prefs.kt +++ b/app/src/main/java/org/wikipedia/settings/Prefs.kt @@ -128,6 +128,18 @@ object Prefs { get() = PrefsIoUtil.getInt(R.string.preference_key_text_size_multiplier, 0) set(multiplier) = PrefsIoUtil.setInt(R.string.preference_key_text_size_multiplier, multiplier) + var marginSizeMultiplier + get() = PrefsIoUtil.getInt(R.string.preference_key_margin_size_multiplier, 10) + set(multiplier) = PrefsIoUtil.setInt(R.string.preference_key_margin_size_multiplier, multiplier) + + var isTextJustifyEnabled + get() = PrefsIoUtil.getBoolean(R.string.preference_key_text_justify, true) + set(value) = PrefsIoUtil.setBoolean(R.string.preference_key_text_justify, value) + + var isTextHyphenationEnabled + get() = PrefsIoUtil.getBoolean(R.string.preference_key_text_hyphenation, true) + set(value) = PrefsIoUtil.setBoolean(R.string.preference_key_text_hyphenation, value) + var editingTextSizeMultiplier get() = PrefsIoUtil.getInt(R.string.preference_key_editing_text_size_multiplier, 0) set(multiplier) = PrefsIoUtil.setInt(R.string.preference_key_editing_text_size_multiplier, multiplier) diff --git a/app/src/main/java/org/wikipedia/theme/ThemeChooserDialog.kt b/app/src/main/java/org/wikipedia/theme/ThemeChooserDialog.kt index 60a791929bb..6807f80e912 100644 --- a/app/src/main/java/org/wikipedia/theme/ThemeChooserDialog.kt +++ b/app/src/main/java/org/wikipedia/theme/ThemeChooserDialog.kt @@ -27,6 +27,7 @@ import org.wikipedia.activity.FragmentUtil import org.wikipedia.analytics.eventplatform.AppearanceSettingInteractionEvent import org.wikipedia.concurrency.FlowEventBus import org.wikipedia.databinding.DialogThemeChooserBinding +import org.wikipedia.events.ChangeMarginSizeEvent import org.wikipedia.events.WebViewInvalidateEvent import org.wikipedia.page.ExtendedBottomSheetDialogFragment import org.wikipedia.settings.Prefs @@ -101,6 +102,40 @@ class ThemeChooserDialog : ExtendedBottomSheetDialogFragment() { override fun onStopTrackingTouch(seekBar: SeekBar) {} }) + binding.marginSizeSeekBar.value = Prefs.marginSizeMultiplier + binding.buttonDecreaseMarginSize.setOnClickListener { + val newValue = (Prefs.marginSizeMultiplier - 1).coerceAtLeast(resources.getInteger(R.integer.minMarginSizeMultiplier)) + Prefs.marginSizeMultiplier = newValue + binding.marginSizeSeekBar.value = newValue + FlowEventBus.post(ChangeMarginSizeEvent()) + } + binding.buttonIncreaseMarginSize.setOnClickListener { + val newValue = (Prefs.marginSizeMultiplier + 1).coerceAtMost(resources.getInteger(R.integer.maxMarginSizeMultiplier)) + Prefs.marginSizeMultiplier = newValue + binding.marginSizeSeekBar.value = newValue + FlowEventBus.post(ChangeMarginSizeEvent()) + } + binding.marginSizeSeekBar.setOnSeekBarChangeListener(object : OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { + if (!fromUser) return + Prefs.marginSizeMultiplier = binding.marginSizeSeekBar.value + FlowEventBus.post(ChangeMarginSizeEvent()) + } + override fun onStartTrackingTouch(seekBar: SeekBar) {} + override fun onStopTrackingTouch(seekBar: SeekBar) {} + }) + + binding.textJustifySwitch.isChecked = Prefs.isTextJustifyEnabled + binding.textJustifySwitch.setOnCheckedChangeListener { _, isChecked -> + Prefs.isTextJustifyEnabled = isChecked + FlowEventBus.post(ChangeMarginSizeEvent()) + } + binding.textHyphenationSwitch.isChecked = Prefs.isTextHyphenationEnabled + binding.textHyphenationSwitch.setOnCheckedChangeListener { _, isChecked -> + Prefs.isTextHyphenationEnabled = isChecked + FlowEventBus.post(ChangeMarginSizeEvent()) + } + binding.syntaxHighlightSwitch.setOnCheckedChangeListener { _, isChecked -> Prefs.editSyntaxHighlightEnabled = isChecked callback()?.onEditingPrefsChanged() @@ -157,6 +192,10 @@ class ThemeChooserDialog : ExtendedBottomSheetDialogFragment() { private fun updateForEditing() { binding.themeChooserDarkModeDimImagesSwitch.isVisible = !isEditing + binding.marginSizeContainer.isVisible = !isEditing + binding.textFormattingDividerTop.isVisible = !isEditing + binding.textFormattingContainer.isVisible = !isEditing + binding.textFormattingDividerBottom.isVisible = !isEditing binding.readingFocusModeContainer.isVisible = !isEditing binding.themeChooserReadingFocusModeDescription.isVisible = !isEditing binding.fontFamilyContainer.isVisible = !isEditing diff --git a/app/src/main/java/org/wikipedia/views/ObservableWebView.kt b/app/src/main/java/org/wikipedia/views/ObservableWebView.kt index 791a6b447fc..df1ebc6b0f5 100644 --- a/app/src/main/java/org/wikipedia/views/ObservableWebView.kt +++ b/app/src/main/java/org/wikipedia/views/ObservableWebView.kt @@ -192,6 +192,19 @@ class ObservableWebView : WebView { FlowEventBus.post(INVALIDATE_EVENT) } + override fun overScrollBy(deltaX: Int, deltaY: Int, scrollX: Int, scrollY: Int, + scrollRangeX: Int, scrollRangeY: Int, maxOverScrollX: Int, + maxOverScrollY: Int, isTouchEvent: Boolean): Boolean { + // Block horizontal scrolling entirely + return super.overScrollBy(0, deltaY, 0, scrollY, 0, scrollRangeY, 0, + maxOverScrollY, isTouchEvent) + } + + override fun scrollTo(x: Int, y: Int) { + // Only allow vertical scrolling + super.scrollTo(0, y) + } + companion object { private val INVALIDATE_EVENT = WebViewInvalidateEvent() private val FAST_SCROLL_THRESHOLD = (1000 * densityScalar).toInt() diff --git a/app/src/main/res/layout/dialog_theme_chooser.xml b/app/src/main/res/layout/dialog_theme_chooser.xml index ff79643ab8f..f2b4f6b8c90 100644 --- a/app/src/main/res/layout/dialog_theme_chooser.xml +++ b/app/src/main/res/layout/dialog_theme_chooser.xml @@ -180,6 +180,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Редактиране Режим на фокусиране при четене Скрива функциите за редактиране и долната лента с инструменти при превъртане + Увеличаване на полетата + Намаляване на полетата + Полета + Подравняване + Сричкопренасяне Оцветяване на синтаксиса Показване номерата на редовете Използване на моноширинен шрифт diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 794b58423c2..c102fc6d760 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -522,6 +522,11 @@ Editace Soustředěné čtení Skryje funkce editace a spodní panel nástrojů při posouvání + Zvětšit okraje + Zmenšit okraje + Okraje + Zarovnat + Dělení Zvýraznění syntaxe Zobrazit čísla řádků Použít monospace font diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 85d7ff34fb4..cdb89e5e9b4 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -538,6 +538,11 @@ Bearbeiten Modus Lesefokus Blendet Bearbeitungsfunktionen und untere Symbolleiste beim Scrollen aus + Ränder vergrößern + Ränder verkleinern + Ränder + Blocksatz + Silbentrennung Syntaxhervorhebung Zeilennummern anzeigen Monospace-Schriftarten verwenden diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index f88687aafa1..c4c53c3ef09 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -583,6 +583,11 @@ Edición Modo de lectura con concentración Oculta las funciones de edición y la barra de herramientas inferior al desplazarse + Aumentar márgenes + Reducir márgenes + Márgenes + Justificar + Separación Resaltado de sintaxis Mostrar números de línea Usar fuente monoespaciada diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 4483e7fa5a3..3220b51ad98 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -558,7 +558,12 @@ Lecture Modification Mode de focalisation sur la lecture - Masque les fonctionnalités de modification et la barre d’outil en bas lors du défilement + Masque les fonctionnalités de modification et la barre d\'outil en bas lors du défilement + Augmenter les marges + Réduire les marges + Marges + Justifier + Coupure Mise en évidence de la syntaxe Afficher les numéros de ligne Utiliser une police à chasse fixe diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index dc34b120f70..f0315c9547e 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -543,6 +543,11 @@ Modifica Modalità di messa a fuoco della lettura Nasconde le funzioni di modifica e la barra degli strumenti in basso durante lo scorrimento + Aumenta margini + Riduci margini + Margini + Giustifica + Sillabazione Evidenziazione della sintassi Mostra i numeri di riga Usa carattere a monospazio diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index d1591e9a5f0..99c2cef86d2 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -542,6 +542,11 @@ 編集 閲覧集中モード 編集機能とスクロール時の下部のツールバーを隠します + 余白を広げる + 余白を狭める + 余白 + 両端揃え + ハイフネーション 構文の強調 行番号を表示 等幅フォントを使用 diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index edfbd312ffa..58451ca9b74 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -510,6 +510,11 @@ 편집 읽기 집중 모드 스크롤할 때 편집 기능과 아래 도구 모음을 숨깁니다 + 여백 늘리기 + 여백 줄이기 + 여백 + 양쪽 맞춤 + 하이픈 문법 강조 줄 번호 보이기 고정폭 글꼴 사용 diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index e96089fb253..7719f346d6d 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -532,6 +532,11 @@ Edycja Tryb skupienia na czytaniu Ukrywa funkcje edycji i dolny pasek narzędzi podczas przewijania + Zwiększ marginesy + Zmniejsz marginesy + Marginesy + Justowanie + Dzielenie Podświetlanie składni Pokaż numery linii Użyj czcionki o stałej szerokości diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index cc37aa93c68..044ae5ed267 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -508,6 +508,11 @@ Edição Modo de foco de leitura Oculta as funcionalidades de edição e a barra de ferramentas do fundo quando desliza uma página + Aumentar margens + Reduzir margens + Margens + Justificar + Hifenização Destaque de sintaxe Mostrar números de linha Usar tipo de letra monoespaçada diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 785908a538a..9e8403ac601 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -579,6 +579,11 @@ Редактирование Режим чтения Скрывает функциональность редактирования и инструменты при скроллинге + Увеличить поля + Уменьшить поля + Поля + По ширине + Переносы Подсветка синтаксиса Показывать номера строк Использовать моноширинный шрифт diff --git a/app/src/main/res/values-sh/strings.xml b/app/src/main/res/values-sh/strings.xml index 0c00f7033f7..64783e95405 100644 --- a/app/src/main/res/values-sh/strings.xml +++ b/app/src/main/res/values-sh/strings.xml @@ -407,6 +407,11 @@ Smanji veličinu teksta Font Čitanje + Povećaj margine + Smanji margine + Margine + Poravnanje + Rastavljanje Uređivanje Isticanje sintakse Prikaži brojeve redova diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 50c822d6c12..5e363d673d1 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -473,6 +473,11 @@ Upraviť Mód sústredeného čítania Skryje funkcie úprav a spodný panel nástrojov pri skrolovaní + Zväčšiť okraje + Zmenšiť okraje + Okraje + Zarovnať + Delenie Zvýraznenie syntaxe Zobraziť čísla riadkov Používať písmo monospace diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 6c2d45636d6..1f7550551a3 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -501,6 +501,11 @@ Urejanje Način za branje Ob pomikanju skrije možnosti urejanja in orodno vrstico na dnu + Povečaj robove + Zmanjšaj robove + Robovi + Poravnaj + Deljenje Označevanje skladnje Prikaži številke vrstic Uporabi pisavo monospace diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 3d1bb77ec65..36c0f50ebd3 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -485,6 +485,11 @@ Повећај величину текста Смањи величину текста %s (подразумевано) + Повећај маргине + Смањи маргине + Маргине + Поравнање + Преламање Фонт Читање Уређивање diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index bc33834c3de..37c8f775cb3 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -522,6 +522,11 @@ Редагування Режим фокусування читання Приховує функції редагування та нижню панель інструментів під час прокручування + Збільшити поля + Зменшити поля + Поля + По ширині + Перенесення Виділення синтаксису Показати номери рядків Використати моноширинний шрифт diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index da171c41cf0..538ecc69515 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -519,6 +519,11 @@ 編輯 專注閱讀模式 隱藏編輯功能與在滾軸的底端工具列 + 增大邊距 + 減小邊距 + 邊距 + 兩端對齊 + 斷詞 語法醒目標示 顯示行號 使用等寬字體 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 997b19c8383..613b9f8bd54 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -547,6 +547,11 @@ 编辑 专注阅读模式 滚动时隐藏编辑功能和底部工具栏 + 增大边距 + 减小边距 + 边距 + 两端对齐 + 断词 语法高亮 显示行号 使用等宽字体 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 9bb9b6c162f..72f35097365 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -29,6 +29,9 @@ 8 0.1 + 0 + 10 + 56dp 240dp diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index 71ce9bfa03a..44b0f2864be 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -5,6 +5,9 @@ remote_config readingAppInstallID textSizeMultiplier + marginSizeMultiplier + textJustify + textHyphenation editingTextSizeMultiplier colorTheme previousColorTheme diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b99406ef2e3..7f3949fc29a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -506,6 +506,11 @@ Font Reading Editing + Increase margin size + Decrease margin size + Margin + Justify + Hyphenation Reading focus mode Hides edit features and bottom toolbar on scroll Syntax highlighting