summaryrefslogtreecommitdiff
path: root/tex/context/base/s-fonts-tables.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/s-fonts-tables.lua')
-rw-r--r--tex/context/base/s-fonts-tables.lua624
1 files changed, 312 insertions, 312 deletions
diff --git a/tex/context/base/s-fonts-tables.lua b/tex/context/base/s-fonts-tables.lua
index 5c91d5ee7..4f147f3e0 100644
--- a/tex/context/base/s-fonts-tables.lua
+++ b/tex/context/base/s-fonts-tables.lua
@@ -1,312 +1,312 @@
-if not modules then modules = { } end modules ['s-fonts-tables'] = {
- version = 1.001,
- comment = "companion to s-fonts-tables.mkiv",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files"
-}
-
-moduledata.fonts = moduledata.fonts or { }
-moduledata.fonts.tables = moduledata.fonts.tables or { }
-
-local setmetatableindex = table.setmetatableindex
-local sortedhash = table.sortedhash
-local sortedkeys = table.sortedkeys
-local format = string.format
-local concat = table.concat
-
-local tabletracers = moduledata.fonts.tables
-
-local digits = {
- dflt = {
- dflt = "1234567890 1/2",
- },
-}
-
-local punctuation = {
- dflt = {
- dflt = ". , : ; ? ! ‹ › « »",
- },
-}
-
-local symbols = {
- dflt = {
- dflt = "@ # $ % & * () [] {} <> + - = / |",
- },
-}
-
-local LATN = "abcdefghijklmnopqrstuvwxyz"
-
-local uppercase = {
- latn = {
- dflt = LATN,
- fra = LATN .. " ÀÁÂÈÉÊÒÓÔÙÚÛÆÇ",
- },
- grek = {
- dftl = "ΑΒΓΔΕΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ",
- },
- cyrl= {
- dflt = "АБВГДЕЖЗИІЙКЛМНОПРСТУФХЦЧШЩЪЫЬѢЭЮЯѲ"
- },
-}
-
-local latn = "abcdefghijklmnopqrstuvwxyz"
-
-local lowercase = {
- latn = {
- dftl = latn,
- nld = latn .. " ïèéë",
- deu = latn .. " äöüß",
- fra = latn .. " àáâèéêòóôùúûæç",
- },
- grek = {
- dftl = "αβγδεηθικλμνξοπρστυφχψω",
- },
- cyrl= {
- dflt = "абвгдежзиійклмнопрстуфхцчшщъыьѣэюяѳ"
- },
-}
-
-local samples = {
- digits = digits,
- punctuation = punctuation,
- symbols = symbols,
- uppercase = uppercase,
- lowercase = lowercase,
-}
-
-tabletracers.samples = samples
-
-setmetatableindex(uppercase, function(t,k) return rawget(t,"latn") end)
-setmetatableindex(lowercase, function(t,k) return rawget(t,"latn") end)
-setmetatableindex(digits, function(t,k) return rawget(t,"dflt") end)
-setmetatableindex(symbols, function(t,k) return rawget(t,"dflt") end)
-setmetatableindex(punctuation, function(t,k) return rawget(t,"dflt") end)
-
-setmetatableindex(uppercase.latn, function(t,k) return rawget(t,"dflt") end)
-setmetatableindex(uppercase.grek, function(t,k) return rawget(t,"dflt") end)
-setmetatableindex(uppercase.cyrl, function(t,k) return rawget(t,"dflt") end)
-
-setmetatableindex(lowercase.latn, function(t,k) return rawget(t,"dflt") end)
-setmetatableindex(lowercase.grek, function(t,k) return rawget(t,"dflt") end)
-setmetatableindex(lowercase.cyrl, function(t,k) return rawget(t,"dflt") end)
-
-setmetatableindex(digits.dflt, function(t,k) return rawget(t,"dflt") end)
-setmetatableindex(symbols.dflt, function(t,k) return rawget(t,"dflt") end)
-setmetatableindex(punctuation.dflt, function(t,k) return rawget(t,"dflt") end)
-
-local function typesettable(t,keys,synonyms,nesting,prefix)
- if t then
- if not prefix then
- context.starttabulate { "|Tl|Tl|Tl|" }
- end
- for k, v in sortedhash(keys) do
- if k == "synonyms" then
- elseif type(v) ~= "table" then
- context.NC()
- if prefix then
- context("%s.%s",prefix,k)
- else
- context(k)
- end
- context.NC()
- local tk = t[k]
- if v == "boolean" then
- context(tostring(tk or false))
- elseif not tk then
- context("<unset>")
- elseif v == "filename" then
- context(file.basename(tk))
- elseif v == "basepoints" then
- context("%sbp",tk)
- elseif v == "scaledpoints" then
- context("%p",tk)
- elseif v == "table" then
- context("<table>")
- else -- if v == "integerscale" then
- context(tostring(tk))
- end
- context.NC()
- local synonym = (not prefix and synonyms[k]) or (prefix and synonyms[format("%s.%s",prefix,k)])
- if synonym then
- context(format("(%s)",concat(synonym," ")))
- end
- context.NC()
- context.NR()
- elseif nesting == false then
- context("<table>")
- else -- true or nil
- typesettable(t[k],v,synonyms,nesting,k)
- end
- end
- if not prefix then
- context.stoptabulate()
- end
- end
-end
-
-local function typeset(t,keys,nesting,prefix)
- local synonyms = keys.synonyms or { }
- local collected = { }
- for k, v in next, synonyms do
- local c = collected[v]
- if not c then
- c = { }
- collected[v] = c
- end
- c[#c+1] = k
- end
- for k, v in next, collected do
- table.sort(v)
- end
- typesettable(t,keys,collected,nesting,prefix)
-end
-
-tabletracers.typeset = typeset
-
-function tabletracers.showproperties(nesting)
- local tfmdata = fonts.hashes.identifiers[font.current()]
- typeset(tfmdata.properties,fonts.constructors.keys.properties,nesting)
-end
-
-function tabletracers.showparameters(nesting)
- local tfmdata = fonts.hashes.identifiers[font.current()]
- typeset(tfmdata.parameters,fonts.constructors.keys.parameters,nesting)
-end
-
-function tabletracers.showpositionings()
- local tfmdata = fonts.hashes.identifiers[font.current()]
- local resources = tfmdata.resources
- if resources then
- local features = resources.features
- if features then
- local gpos = features.gpos
- if gpos and next(gpos) then
- context.starttabulate { "|Tl|Tl|Tlp|" }
- for feature, scripts in sortedhash(gpos) do
- for script, languages in sortedhash(scripts) do
- context.NC()
- context(feature)
- context.NC()
- context(script)
- context.NC()
- context(concat(sortedkeys(languages)," "))
- context.NC()
- context.NR()
- end
- end
- context.stoptabulate()
- else
- context("no entries")
- context.par()
- end
- end
- end
-end
-
-local dynamics = true
-
-function tabletracers.showsubstitutions()
- local tfmdata = fonts.hashes.identifiers[font.current()]
- local resources = tfmdata.resources
- if resources then
- local features = resources.features
- if features then
- local gsub = features.gsub
- if gsub then
- local makes_sense = { }
- for feature, scripts in sortedhash(gsub) do
- for script, languages in sortedhash(scripts) do
- for language in sortedhash(languages) do
- local tag = format("dummy-%s-%s-%s",feature,script,language)
- local fnt = format("file:%s*%s",file.basename(tfmdata.properties.filename),tag)
- context.definefontfeature (
- { tag },
- {
- mode = "node",
- script = script,
- language = language,
- [feature] = "yes"
- }
- )
- if not dynamics then
- context.definefont( { fnt }, { fnt } )
- end
- makes_sense[#makes_sense+1] = {
- feature = feature,
- tag = tag,
- script = script,
- language = language,
- fontname = fnt,
- }
- end
- end
- end
- if #makes_sense > 0 then
- context.starttabulate { "|Tl|Tl|Tl|p|" }
- for i=1,#makes_sense do
- local data = makes_sense[i]
- local script = data.script
- local language = data.language
- context.NC()
- context(data.feature)
- context.NC()
- context(script)
- context.NC()
- context(language)
- context.NC()
- if not dynamics then
- context.startfont { data.fontname }
- else
- context.addff(data.tag)
- end
- context.verbatim(samples.lowercase [script][language]) context.par()
- context.verbatim(samples.uppercase [script][language]) context.par()
- context.verbatim(samples.digits [script][language]) context.par()
- context.verbatim(samples.punctuation[script][language]) context.quad()
- context.verbatim(samples.symbols [script][language])
- if not dynamics then
- context.stopfont()
- end
- context.NC()
- context.NR()
- end
- context.stoptabulate()
- else
- context("no entries")
- context.par()
- end
- end
- end
- end
-end
-
-function tabletracers.showall(specification) -- not interfaced
-
- specification = interfaces.checkedspecification(specification)
-
- if specification.title then
- context.starttitle { title = specification.title }
- end
-
- context.startsubject { title = "Properties" }
- tabletracers.showproperties()
- context.stopsubject()
-
- context.startsubject { title = "Parameters" }
- tabletracers.showparameters()
- context.stopsubject()
-
- context.startsubject { title = "Positioning features" }
- tabletracers.showpositionings()
- context.stopsubject()
-
- context.startsubject { title = "Substitution features" }
- tabletracers.showsubstitutions()
- context.stopsubject()
-
- if title then
- context.stoptitle()
- end
-
-end
+if not modules then modules = { } end modules ['s-fonts-tables'] = {
+ version = 1.001,
+ comment = "companion to s-fonts-tables.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+moduledata.fonts = moduledata.fonts or { }
+moduledata.fonts.tables = moduledata.fonts.tables or { }
+
+local setmetatableindex = table.setmetatableindex
+local sortedhash = table.sortedhash
+local sortedkeys = table.sortedkeys
+local format = string.format
+local concat = table.concat
+
+local tabletracers = moduledata.fonts.tables
+
+local digits = {
+ dflt = {
+ dflt = "1234567890 1/2",
+ },
+}
+
+local punctuation = {
+ dflt = {
+ dflt = ". , : ; ? ! ‹ › « »",
+ },
+}
+
+local symbols = {
+ dflt = {
+ dflt = "@ # $ % & * () [] {} <> + - = / |",
+ },
+}
+
+local LATN = "abcdefghijklmnopqrstuvwxyz"
+
+local uppercase = {
+ latn = {
+ dflt = LATN,
+ fra = LATN .. " ÀÁÂÈÉÊÒÓÔÙÚÛÆÇ",
+ },
+ grek = {
+ dftl = "ΑΒΓΔΕΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ",
+ },
+ cyrl= {
+ dflt = "АБВГДЕЖЗИІЙКЛМНОПРСТУФХЦЧШЩЪЫЬѢЭЮЯѲ"
+ },
+}
+
+local latn = "abcdefghijklmnopqrstuvwxyz"
+
+local lowercase = {
+ latn = {
+ dftl = latn,
+ nld = latn .. " ïèéë",
+ deu = latn .. " äöüß",
+ fra = latn .. " àáâèéêòóôùúûæç",
+ },
+ grek = {
+ dftl = "αβγδεηθικλμνξοπρστυφχψω",
+ },
+ cyrl= {
+ dflt = "абвгдежзиійклмнопрстуфхцчшщъыьѣэюяѳ"
+ },
+}
+
+local samples = {
+ digits = digits,
+ punctuation = punctuation,
+ symbols = symbols,
+ uppercase = uppercase,
+ lowercase = lowercase,
+}
+
+tabletracers.samples = samples
+
+setmetatableindex(uppercase, function(t,k) return rawget(t,"latn") end)
+setmetatableindex(lowercase, function(t,k) return rawget(t,"latn") end)
+setmetatableindex(digits, function(t,k) return rawget(t,"dflt") end)
+setmetatableindex(symbols, function(t,k) return rawget(t,"dflt") end)
+setmetatableindex(punctuation, function(t,k) return rawget(t,"dflt") end)
+
+setmetatableindex(uppercase.latn, function(t,k) return rawget(t,"dflt") end)
+setmetatableindex(uppercase.grek, function(t,k) return rawget(t,"dflt") end)
+setmetatableindex(uppercase.cyrl, function(t,k) return rawget(t,"dflt") end)
+
+setmetatableindex(lowercase.latn, function(t,k) return rawget(t,"dflt") end)
+setmetatableindex(lowercase.grek, function(t,k) return rawget(t,"dflt") end)
+setmetatableindex(lowercase.cyrl, function(t,k) return rawget(t,"dflt") end)
+
+setmetatableindex(digits.dflt, function(t,k) return rawget(t,"dflt") end)
+setmetatableindex(symbols.dflt, function(t,k) return rawget(t,"dflt") end)
+setmetatableindex(punctuation.dflt, function(t,k) return rawget(t,"dflt") end)
+
+local function typesettable(t,keys,synonyms,nesting,prefix)
+ if t then
+ if not prefix then
+ context.starttabulate { "|Tl|Tl|Tl|" }
+ end
+ for k, v in sortedhash(keys) do
+ if k == "synonyms" then
+ elseif type(v) ~= "table" then
+ context.NC()
+ if prefix then
+ context("%s.%s",prefix,k)
+ else
+ context(k)
+ end
+ context.NC()
+ local tk = t[k]
+ if v == "boolean" then
+ context(tostring(tk or false))
+ elseif not tk then
+ context("<unset>")
+ elseif v == "filename" then
+ context(file.basename(tk))
+ elseif v == "basepoints" then
+ context("%sbp",tk)
+ elseif v == "scaledpoints" then
+ context("%p",tk)
+ elseif v == "table" then
+ context("<table>")
+ else -- if v == "integerscale" then
+ context(tostring(tk))
+ end
+ context.NC()
+ local synonym = (not prefix and synonyms[k]) or (prefix and synonyms[format("%s.%s",prefix,k)])
+ if synonym then
+ context(format("(%s)",concat(synonym," ")))
+ end
+ context.NC()
+ context.NR()
+ elseif nesting == false then
+ context("<table>")
+ else -- true or nil
+ typesettable(t[k],v,synonyms,nesting,k)
+ end
+ end
+ if not prefix then
+ context.stoptabulate()
+ end
+ end
+end
+
+local function typeset(t,keys,nesting,prefix)
+ local synonyms = keys.synonyms or { }
+ local collected = { }
+ for k, v in next, synonyms do
+ local c = collected[v]
+ if not c then
+ c = { }
+ collected[v] = c
+ end
+ c[#c+1] = k
+ end
+ for k, v in next, collected do
+ table.sort(v)
+ end
+ typesettable(t,keys,collected,nesting,prefix)
+end
+
+tabletracers.typeset = typeset
+
+function tabletracers.showproperties(nesting)
+ local tfmdata = fonts.hashes.identifiers[font.current()]
+ typeset(tfmdata.properties,fonts.constructors.keys.properties,nesting)
+end
+
+function tabletracers.showparameters(nesting)
+ local tfmdata = fonts.hashes.identifiers[font.current()]
+ typeset(tfmdata.parameters,fonts.constructors.keys.parameters,nesting)
+end
+
+function tabletracers.showpositionings()
+ local tfmdata = fonts.hashes.identifiers[font.current()]
+ local resources = tfmdata.resources
+ if resources then
+ local features = resources.features
+ if features then
+ local gpos = features.gpos
+ if gpos and next(gpos) then
+ context.starttabulate { "|Tl|Tl|Tlp|" }
+ for feature, scripts in sortedhash(gpos) do
+ for script, languages in sortedhash(scripts) do
+ context.NC()
+ context(feature)
+ context.NC()
+ context(script)
+ context.NC()
+ context(concat(sortedkeys(languages)," "))
+ context.NC()
+ context.NR()
+ end
+ end
+ context.stoptabulate()
+ else
+ context("no entries")
+ context.par()
+ end
+ end
+ end
+end
+
+local dynamics = true
+
+function tabletracers.showsubstitutions()
+ local tfmdata = fonts.hashes.identifiers[font.current()]
+ local resources = tfmdata.resources
+ if resources then
+ local features = resources.features
+ if features then
+ local gsub = features.gsub
+ if gsub then
+ local makes_sense = { }
+ for feature, scripts in sortedhash(gsub) do
+ for script, languages in sortedhash(scripts) do
+ for language in sortedhash(languages) do
+ local tag = format("dummy-%s-%s-%s",feature,script,language)
+ local fnt = format("file:%s*%s",file.basename(tfmdata.properties.filename),tag)
+ context.definefontfeature (
+ { tag },
+ {
+ mode = "node",
+ script = script,
+ language = language,
+ [feature] = "yes"
+ }
+ )
+ if not dynamics then
+ context.definefont( { fnt }, { fnt } )
+ end
+ makes_sense[#makes_sense+1] = {
+ feature = feature,
+ tag = tag,
+ script = script,
+ language = language,
+ fontname = fnt,
+ }
+ end
+ end
+ end
+ if #makes_sense > 0 then
+ context.starttabulate { "|Tl|Tl|Tl|p|" }
+ for i=1,#makes_sense do
+ local data = makes_sense[i]
+ local script = data.script
+ local language = data.language
+ context.NC()
+ context(data.feature)
+ context.NC()
+ context(script)
+ context.NC()
+ context(language)
+ context.NC()
+ if not dynamics then
+ context.startfont { data.fontname }
+ else
+ context.addff(data.tag)
+ end
+ context.verbatim(samples.lowercase [script][language]) context.par()
+ context.verbatim(samples.uppercase [script][language]) context.par()
+ context.verbatim(samples.digits [script][language]) context.par()
+ context.verbatim(samples.punctuation[script][language]) context.quad()
+ context.verbatim(samples.symbols [script][language])
+ if not dynamics then
+ context.stopfont()
+ end
+ context.NC()
+ context.NR()
+ end
+ context.stoptabulate()
+ else
+ context("no entries")
+ context.par()
+ end
+ end
+ end
+ end
+end
+
+function tabletracers.showall(specification) -- not interfaced
+
+ specification = interfaces.checkedspecification(specification)
+
+ if specification.title then
+ context.starttitle { title = specification.title }
+ end
+
+ context.startsubject { title = "Properties" }
+ tabletracers.showproperties()
+ context.stopsubject()
+
+ context.startsubject { title = "Parameters" }
+ tabletracers.showparameters()
+ context.stopsubject()
+
+ context.startsubject { title = "Positioning features" }
+ tabletracers.showpositionings()
+ context.stopsubject()
+
+ context.startsubject { title = "Substitution features" }
+ tabletracers.showsubstitutions()
+ context.stopsubject()
+
+ if title then
+ context.stoptitle()
+ end
+
+end