From 774d2345e035a64bc7f03737ea24ecc561c2c8c4 Mon Sep 17 00:00:00 2001 From: poire-z Date: Wed, 30 Aug 2017 09:04:04 +0200 Subject: [PATCH] Added Embedded Fonts config toggle Just under the existing "Embedded Styles". Support for this was already there in crengine, and interfacing is similar to what is done with Embedded Styles. --- .../apps/reader/modules/readertypeset.lua | 35 ++++++++++++++++++- frontend/document/credocument.lua | 5 +++ frontend/ui/data/creoptions.lua | 17 +++++++++ frontend/ui/data/strings.lua | 1 + 4 files changed, 57 insertions(+), 1 deletion(-) diff --git a/frontend/apps/reader/modules/readertypeset.lua b/frontend/apps/reader/modules/readertypeset.lua index e6d47d0f3..a8c08e8cb 100644 --- a/frontend/apps/reader/modules/readertypeset.lua +++ b/frontend/apps/reader/modules/readertypeset.lua @@ -26,6 +26,21 @@ function ReaderTypeset:onReadSettings(config) self.css = self.ui.document.default_css end + self.embedded_fonts = config:readSetting("embedded_fonts") + if self.embedded_fonts == nil then + -- default to enable embedded fonts + -- note that it's a bit confusing here: + -- global settins store 0/1, while document settings store false/true + -- we leave it that way for now to maintain backwards compatibility + local global = G_reader_settings:readSetting("copt_embedded_fonts") + self.embedded_fonts = (global == nil or global == 1) and true or false + end + -- As this is new, call it only when embedded_fonts are explicitely disabled + -- self.ui.document:setEmbeddedFonts(self.embedded_fonts and 1 or 0) + if not self.embedded_fonts then + self.ui.document:setEmbeddedFonts(0) + end + self.embedded_css = config:readSetting("embedded_css") if self.embedded_css == nil then -- default to enable embedded css @@ -61,6 +76,7 @@ function ReaderTypeset:onSaveSettings() self.ui.doc_settings:saveSetting("css", self.css) self.ui.doc_settings:saveSetting("embedded_css", self.embedded_css) self.ui.doc_settings:saveSetting("floating_punctuation", self.floating_punctuation) + self.ui.doc_settings:saveSetting("embedded_fonts", self.embedded_fonts) end function ReaderTypeset:onToggleEmbeddedStyleSheet(toggle) @@ -68,6 +84,11 @@ function ReaderTypeset:onToggleEmbeddedStyleSheet(toggle) return true end +function ReaderTypeset:onToggleEmbeddedFonts(toggle) + self:toggleEmbeddedFonts(toggle) + return true +end + function ReaderTypeset:genStyleSheetMenu() local style_table = {} local file_list = { @@ -88,6 +109,7 @@ function ReaderTypeset:genStyleSheetMenu() }) end end + table.sort(file_list, function(v1,v2) return v1.text < v2.text end) -- sort by name for i,file in ipairs(file_list) do table.insert(style_table, { text = file["text"], @@ -136,6 +158,17 @@ function ReaderTypeset:toggleEmbeddedStyleSheet(toggle) self.ui:handleEvent(Event:new("UpdatePos")) end +function ReaderTypeset:toggleEmbeddedFonts(toggle) + if not toggle then + self.embedded_fonts = false + self.ui.document:setEmbeddedFonts(0) + else + self.embedded_fonts = true + self.ui.document:setEmbeddedFonts(1) + end + self.ui:handleEvent(Event:new("UpdatePos")) +end + function ReaderTypeset:toggleFloatingPunctuation(toggle) -- for some reason the toggle value read from history files may stay boolean -- and there seems no more elegant way to convert boolean values to numbers @@ -165,7 +198,7 @@ function ReaderTypeset:addToMainMenu(menu_items) callback = function() self.floating_punctuation = self.floating_punctuation == 1 and 0 or 1 self:toggleFloatingPunctuation(self.floating_punctuation) - end, + end, hold_callback = function() self:makeDefaultFloatingPunctuation() end, } end diff --git a/frontend/document/credocument.lua b/frontend/document/credocument.lua index 443e0ba02..0efe9598a 100644 --- a/frontend/document/credocument.lua +++ b/frontend/document/credocument.lua @@ -415,6 +415,11 @@ function CreDocument:setEmbeddedStyleSheet(toggle) self._document:setIntProperty("crengine.doc.embedded.styles.enabled", toggle) end +function CreDocument:setEmbeddedFonts(toggle) + logger.dbg("CreDocument: set embedded fonts", toggle) + self._document:setIntProperty("crengine.doc.embedded.fonts.enabled", toggle) +end + function CreDocument:setPageMargins(left, top, right, bottom) logger.dbg("CreDocument: set page margins", left, top, right, bottom) self._document:setIntProperty("crengine.page.margin.left", left) diff --git a/frontend/ui/data/creoptions.lua b/frontend/ui/data/creoptions.lua index 05f1addbc..8f70b6166 100644 --- a/frontend/ui/data/creoptions.lua +++ b/frontend/ui/data/creoptions.lua @@ -14,6 +14,10 @@ local Aa = setmetatable({"Aa"}, { end }) +local function enable_if_equals(configurable, option, value) + return configurable[option] == value +end + local CreOptions = { prefix = 'copt', { @@ -158,6 +162,19 @@ local CreOptions = { default_arg = nil, event = "ToggleEmbeddedStyleSheet", }, + { + name = "embedded_fonts", + name_text = S.EMBEDDED_FONTS, + toggle = {S.ON, S.OFF}, + values = {1, 0}, + default_value = 1, + args = {true, false}, + default_arg = nil, + event = "ToggleEmbeddedFonts", + enabled_func = function(configurable) + return enable_if_equals(configurable, "embedded_css", 1) + end, + }, }, }, } diff --git a/frontend/ui/data/strings.lua b/frontend/ui/data/strings.lua index 4d040b8de..378a48b18 100644 --- a/frontend/ui/data/strings.lua +++ b/frontend/ui/data/strings.lua @@ -25,6 +25,7 @@ S.FONT_WEIGHT = _("Font Weight") S.GAMMA = _("Gamma") S.VIEW_MODE = _("View Mode") S.EMBEDDED_STYLE = _("Embedded Style") +S.EMBEDDED_FONTS = _("Embedded Fonts") S.WRITING_DIR = _("Writing Direction") S.PROGRESS_BAR = _("Progress Bar") S.FORCED_OCR = _("Forced OCR")