@@ -6,7 +6,10 @@ import {
66 isValidCustomServices ,
77} from '../../../shared/translation/custom-services.mjs' ;
88import { validShortcutOverrides } from '../../../shared/commands/shortcuts.mjs' ;
9- import { isValidTranslationFont } from '../../../shared/reader/translation-font.mjs' ;
9+ import {
10+ isValidTranslationFont ,
11+ MAX_RECENT_DOCUMENT_FONTS ,
12+ } from '../../../shared/reader/translation-font.mjs' ;
1013import {
1114 cloneTranslationServiceHistory ,
1215 isValidTranslationServiceHistory ,
@@ -43,6 +46,19 @@ const DEFAULT_PREFERENCES = Object.freeze({
4346 epubEnabled : true ,
4447 ultraFastSerif : false ,
4548 ultraFastFont : '' ,
49+ originalSansFont : '' ,
50+ originalSerifFont : '' ,
51+ originalMonoFont : '' ,
52+ translatedSansFont : '' ,
53+ translatedSerifFont : '' ,
54+ translatedMonoFont : '' ,
55+ originalCjkSansFont : '' ,
56+ originalCjkSerifFont : '' ,
57+ originalCjkMonoFont : '' ,
58+ translatedCjkSansFont : '' ,
59+ translatedCjkSerifFont : '' ,
60+ translatedCjkMonoFont : '' ,
61+ recentDocumentFonts : [ ] ,
4662 translationErrorDismissals : [ ] ,
4763 reduceResourceUsage : true ,
4864 reduceBackgroundFrameRate : true ,
@@ -272,6 +288,22 @@ const VALIDATORS = {
272288 epubEnabled : ( value ) => typeof value === 'boolean' ,
273289 ultraFastSerif : ( value ) => typeof value === 'boolean' ,
274290 ultraFastFont : isValidTranslationFont ,
291+ originalSansFont : isValidTranslationFont ,
292+ originalSerifFont : isValidTranslationFont ,
293+ originalMonoFont : isValidTranslationFont ,
294+ translatedSansFont : isValidTranslationFont ,
295+ translatedSerifFont : isValidTranslationFont ,
296+ translatedMonoFont : isValidTranslationFont ,
297+ originalCjkSansFont : isValidTranslationFont ,
298+ originalCjkSerifFont : isValidTranslationFont ,
299+ originalCjkMonoFont : isValidTranslationFont ,
300+ translatedCjkSansFont : isValidTranslationFont ,
301+ translatedCjkSerifFont : isValidTranslationFont ,
302+ translatedCjkMonoFont : isValidTranslationFont ,
303+ recentDocumentFonts : ( value ) =>
304+ Array . isArray ( value ) &&
305+ value . length <= MAX_RECENT_DOCUMENT_FONTS &&
306+ value . every ( ( name ) => name && isValidTranslationFont ( name ) ) ,
275307 translationErrorDismissals : ( value ) =>
276308 Array . isArray ( value ) && value . every ( ( id ) => typeof id === 'string' && id . length <= 1024 ) ,
277309 emphasizeTopicSentences : ( value ) => typeof value === 'boolean' ,
@@ -338,6 +370,19 @@ const VALIDATION_MESSAGES = {
338370 epubEnabled : 'Invalid EPUB support preference' ,
339371 ultraFastSerif : 'Invalid Ultra fast serif font preference' ,
340372 ultraFastFont : 'Invalid Ultra fast font preference' ,
373+ originalSansFont : 'Invalid original sans-serif document font preference' ,
374+ originalSerifFont : 'Invalid original serif document font preference' ,
375+ originalMonoFont : 'Invalid original monospace document font preference' ,
376+ translatedSansFont : 'Invalid translated sans-serif document font preference' ,
377+ translatedSerifFont : 'Invalid translated serif document font preference' ,
378+ translatedMonoFont : 'Invalid translated monospace document font preference' ,
379+ originalCjkSansFont : 'Invalid original CJK sans-serif document font preference' ,
380+ originalCjkSerifFont : 'Invalid original CJK serif document font preference' ,
381+ originalCjkMonoFont : 'Invalid original CJK monospace document font preference' ,
382+ translatedCjkSansFont : 'Invalid translated CJK sans-serif document font preference' ,
383+ translatedCjkSerifFont : 'Invalid translated CJK serif document font preference' ,
384+ translatedCjkMonoFont : 'Invalid translated CJK monospace document font preference' ,
385+ recentDocumentFonts : 'Invalid recent document fonts' ,
341386 translationMode : 'Invalid translation mode' ,
342387 interactionMode : 'Invalid interaction mode' ,
343388 direction : 'Invalid layout direction' ,
0 commit comments