2
0
mirror of https://github.com/koreader/koreader synced 2024-11-11 19:11:14 +00:00

CreOptions: Display weight classes names, in addition to their raw value.

This commit is contained in:
NiLuJe 2021-04-29 20:16:30 +02:00
parent 56d7a2d86b
commit b24ecf35d4

View File

@ -15,6 +15,36 @@ local tableOfNumbersToTableOfStrings = function(numbers)
return t
end
-- OS/2 weight classes map
-- c.f., https://docs.microsoft.com/en-us/typography/opentype/spec/os2#usweightclass
local usWeightClass = {
[100] = C_("Font weight class", "Thin"),
[200] = C_("Font weight class", "Extra-light"),
[300] = C_("Font weight class", "Light"),
[400] = C_("Font weight class", "Regular"),
[500] = C_("Font weight class", "Medium"),
[600] = C_("Font weight class", "Semi-bold"),
[700] = C_("Font weight class", "Bold"),
[800] = C_("Font weight class", "Extra-bold"),
[900] = C_("Font weight class", "Black"),
}
local function weightClassToString(weight)
if usWeightClass[weight] then
return T(_("%1 (%2)"), usWeightClass[weight], weight)
else
return tostring(weight)
end
end
local function prettifyCreWeights(t)
local p = {}
for __, v in ipairs(t) do
table.insert(p, weightClassToString(v))
end
return p
end
local CreOptions = {
prefix = 'copt',
{
@ -537,19 +567,19 @@ Note that your selected font size is not affected by this setting.]]),
},
help_text = _([[Set the font weight delta from "regular" to apply to all fonts.
- 0 will use the "regular (400)" variation of a font.
- +1 will use the "medium (500)" variation of a font if available.
- +3 will use the "bold (700)" variation of a font if available.
- 0 will use the "Regular (400)" variation of a font.
- +1 will use the "Medium (500)" variation of a font if available.
- +3 will use the "Bold (700)" variation of a font if available.
If a font variation is not available, as well as for fractional adjustments, it will be synthesized from the nearest available weight.]]),
help_text_func = function(configurable, document)
local font_face = document:getFontFace()
local available_weights = cre.getFontFaceAvailableWeights(font_face)
return T(_("The default font '%1' provides the following weight classes: %2."), font_face, table.concat(available_weights, ", "))
local available_weights = prettifyCreWeights(cre.getFontFaceAvailableWeights(font_face))
return T(_("The default font '%1' provides the following weight classes: %2."), font_face, table.concat(available_weights, C_("List separator", ", ")))
end,
name_text_hold_callback = optionsutil.showValues,
name_text_true_values = true,
show_true_value_func = function(val)
return string.format("%d", 400+val*100)
return weightClassToString(400+val*100)
end,
},
{