summaryrefslogtreecommitdiff
path: root/tex/context/base/font-syn.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/font-syn.lua')
-rw-r--r--tex/context/base/font-syn.lua56
1 files changed, 49 insertions, 7 deletions
diff --git a/tex/context/base/font-syn.lua b/tex/context/base/font-syn.lua
index d99114998..9be307099 100644
--- a/tex/context/base/font-syn.lua
+++ b/tex/context/base/font-syn.lua
@@ -10,7 +10,7 @@ if not modules then modules = { } end modules ['font-syn'] = {
local utf = unicode.utf8
local next, tonumber = next, tonumber
-local gsub, lower, match, find, lower, upper = string.gsub, string.lower, string.match, string.find, string.lower, string.upper
+local sub, gsub, lower, match, find, lower, upper = string.sub, string.gsub, string.lower, string.match, string.find, string.lower, string.upper
local find, gmatch = string.find, string.gmatch
local concat, sort, format = table.concat, table.sort, string.format
local serialize = table.serialize
@@ -120,6 +120,50 @@ local variants = Cs( -- fax casual
local normalized_variants = sparse()
+names.knownweights = {
+ "black",
+ "bold",
+ "demi",
+ "demibold",
+ "extrabold",
+ "heavy",
+ "light",
+ "medium",
+ "mediumbold",
+ "normal",
+ "regular",
+ "semi",
+ "semibold",
+ "ultra",
+ "ultrabold",
+ "ultralight",
+}
+
+names.knownstyles = {
+ "italic",
+ "normal",
+ "oblique",
+ "regular",
+ "reverseitalic",
+ "reverseoblique",
+ "roman",
+ "slanted",
+}
+
+names.knownwidths = {
+ "book",
+ "condensed",
+ "expanded",
+ "normal",
+ "thin",
+}
+
+names.knownvariants = {
+ "normal",
+ "oldstyle",
+ "smallcaps",
+}
+
local any = P(1)
local analyzed_table
@@ -495,22 +539,20 @@ local function collecthashes()
if fontname and not mf[fontname] then
mf[fontname], nofmappings = index, nofmappings + 1
end
- if familyname and weight then
+ if familyname and weight and weight ~= sub(familyname,#familyname-#weight+1,#familyname) then
local madename = familyname .. weight
if not mf[madename] and not ff[madename] then
ff[madename], noffallbacks = index, noffallbacks + 1
end
end
- if familyname and subfamily then
+ if familyname and subfamily and subfamily ~= sub(familyname,#familyname-#subfamily+1,#familyname) then
local extraname = familyname .. subfamily
if not mf[extraname] and not ff[extraname] then
ff[extraname], noffallbacks = index, noffallbacks + 1
end
end
- if familyname then
- if not mf[familyname] and not ff[familyname] then
- ff[familyname], noffallbacks = index, noffallbacks + 1
- end
+ if familyname and not mf[familyname] and not ff[familyname] then
+ ff[familyname], noffallbacks = index, noffallbacks + 1
end
end
end