allow overriding theme fonts

This commit is contained in:
zadam
2021-09-27 21:01:56 +02:00
parent d5bd9875f9
commit e6bc8ed3b5
13 changed files with 259 additions and 96 deletions

33
src/routes/api/fonts.js Normal file
View File

@@ -0,0 +1,33 @@
const optionService = require('../../services/options');
function getFontCss(req, res) {
res.setHeader('Content-Type', 'text/css');
if (!optionService.getOptionBool('overrideThemeFonts')) {
res.send('');
return;
}
const optionsMap = optionService.getOptionsMap();
// using body to be more specific than themes' :root
res.send(`
body {
--main-font-family: ${optionsMap.mainFontFamily};
--main-font-size: ${optionsMap.mainFontSize}%;
--tree-font-family: ${optionsMap.treeFontFamily};
--tree-font-size: ${optionsMap.treeFontSize}%;
--detail-font-family: ${optionsMap.detailFontFamily};
--detail-font-size: ${optionsMap.detailFontSize}%;
--monospace-font-family: ${optionsMap.monospaceFontFamily};
--monospace-font-size: ${optionsMap.monospaceFontSize};
}`);
}
module.exports = {
getFontCss
};

View File

@@ -17,8 +17,13 @@ const ALLOWED_OPTIONS = new Set([
'syncProxy',
'hoistedNoteId',
'mainFontSize',
'mainFontFamily',
'treeFontSize',
'treeFontFamily',
'detailFontSize',
'detailFontFamily',
'monospaceFontSize',
'monospaceFontFamily',
'openTabs',
'noteInfoWidget',
'attributesWidget',
@@ -44,7 +49,8 @@ const ALLOWED_OPTIONS = new Set([
'headingStyle',
'autoCollapseNoteTree',
'autoReadonlySizeText',
'autoReadonlySizeCode'
'autoReadonlySizeCode',
'overrideThemeFonts'
]);
function getOptions() {

View File

@@ -38,6 +38,7 @@ const similarNotesRoute = require('./api/similar_notes');
const keysRoute = require('./api/keys');
const backendLogRoute = require('./api/backend_log');
const statsRoute = require('./api/stats');
const fontsRoute = require('./api/fonts');
const log = require('../services/log');
const express = require('express');
@@ -326,6 +327,8 @@ function register(app) {
apiRoute(POST, '/api/delete-notes-preview', notesApiRoute.getDeleteNotesPreview);
route(GET, '/api/fonts', [auth.checkApiAuthOrElectron], fontsRoute.getFontCss);
app.use('', router);
}