diff options
Diffstat (limited to 'tex')
25 files changed, 909 insertions, 441 deletions
diff --git a/tex/context/base/char-def.lua b/tex/context/base/char-def.lua index 2ed91eb4b..b7abee0fb 100644 --- a/tex/context/base/char-def.lua +++ b/tex/context/base/char-def.lua @@ -14015,6 +14015,7 @@ characters.data={ category="cf", description="ARABIC NUMBER SIGN", direction="an", + visible="yes", linebreak="al", unicodeslot=0x0600, }, @@ -14022,6 +14023,7 @@ characters.data={ category="cf", description="ARABIC SIGN SANAH", direction="an", + visible="yes", linebreak="al", unicodeslot=0x0601, }, @@ -14029,6 +14031,7 @@ characters.data={ category="cf", description="ARABIC FOOTNOTE MARKER", direction="an", + visible="yes", linebreak="al", unicodeslot=0x0602, }, @@ -14036,6 +14039,7 @@ characters.data={ category="cf", description="ARABIC SIGN SAFHA", direction="an", + visible="yes", linebreak="al", unicodeslot=0x0603, }, @@ -15556,6 +15560,7 @@ characters.data={ category="cf", description="ARABIC END OF AYAH", direction="an", + visible="yes", linebreak="al", unicodeslot=0x06DD, }, @@ -15905,6 +15910,7 @@ characters.data={ category="cf", description="SYRIAC ABBREVIATION MARK", direction="bn", + visible="yes", linebreak="al", unicodeslot=0x070F, }, @@ -48844,6 +48850,7 @@ characters.data={ [0x200C]={ adobename="afii61664", category="cf", + contextname="zwnj", description="ZERO WIDTH NON-JOINER", direction="bn", linebreak="cm", @@ -48852,6 +48859,7 @@ characters.data={ [0x200D]={ adobename="afii301", category="cf", + contextname="zwj", description="ZERO WIDTH JOINER", direction="bn", linebreak="cm", @@ -49552,7 +49560,7 @@ characters.data={ [0x2061]={ category="cf", comment="maybe: nulloperator", - contextcommand="relax", + contextname="relax", description="FUNCTION APPLICATION", direction="bn", linebreak="al", @@ -108530,6 +108538,7 @@ characters.data={ category="cf", description="INTERLINEAR ANNOTATION ANCHOR", direction="on", + visible="yes", linebreak="cm", unicodeslot=0xFFF9, }, @@ -108537,6 +108546,7 @@ characters.data={ category="cf", description="INTERLINEAR ANNOTATION SEPARATOR", direction="on", + visible="yes", linebreak="cm", unicodeslot=0xFFFA, }, @@ -108544,6 +108554,7 @@ characters.data={ category="cf", description="INTERLINEAR ANNOTATION TERMINATOR", direction="on", + visible="yes", linebreak="cm", unicodeslot=0xFFFB, }, diff --git a/tex/context/base/char-ini.lua b/tex/context/base/char-ini.lua index 9393feee7..5c4a40bad 100644 --- a/tex/context/base/char-ini.lua +++ b/tex/context/base/char-ini.lua @@ -422,6 +422,7 @@ function characters.define(tobelettered, tobeactivated) -- catcodetables end end elseif is_command[category] then + -- this might change: contextcommand ipv contextname -- texprint(format("{\\catcode %s=13\\unexpanded\\gdef %s{\\%s}}",u,utfchar(u),contextname)) texsprint("{\\catcode",u,"=13\\unexpanded\\gdef ",utfchar(u),"{\\"..contextname,"}}") -- no texprint activated[#activated+1] = "\\c"..u.."\\a" @@ -650,3 +651,48 @@ function characters.upper(str) end return concat(new) end + +-- -- some day we might go this route, but it does not really save that much +-- -- so not now (we can generate a lot using mtx-unicode that operates on the +-- -- database) +-- +-- -- category cjkwd direction linebreak +-- +-- -- adobename comment contextcommand contextname description fallback lccode +-- -- mathclass mathfiller mathname mathspec mathstretch mathsymbol mirror +-- -- range shcode specials uccode uccodes unicodeslot +-- +-- local data = { +-- ['one']={ +-- common = { +-- category="cc", +-- direction="bn", +-- linebreak="cm", +-- }, +-- vector = { +-- [0x0000] = { +-- description="NULL", +-- group='one', +-- unicodeslot=0x0000, +-- }, +-- { +-- description="START OF HEADING", +-- group='one', +-- unicodeslot=0x0001, +-- }, +-- } +-- } +-- } +-- +-- local chardata, groupdata = { }, { } +-- +-- for group, gdata in next, data do +-- local common, vector = { __index = gdata.common }, gdata.vector +-- for character, cdata in next, vector do +-- chardata[character] = cdata +-- setmetatable(cdata,common) +-- end +-- groupdata[group] = gdata +-- end + +--~ characters.data, characters.groups = chardata, groupdata diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex index 65318a8ce..9c4fdba18 100644 --- a/tex/context/base/cont-new.tex +++ b/tex/context/base/cont-new.tex @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2010.05.23 15:03} +\newcontextversion{2010.05.24 13:05} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index 7b5dfe613..33fa3a901 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -262,6 +262,7 @@ \loadmarkfile{typo-brk} \loadmarkfile{typo-cap} \loadmarkfile{typo-dig} +\loadmarkfile{typo-rep} \loadmarkfile{type-ini} \loadmarkfile{type-set} diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex index 09404ab48..47489658e 100644 --- a/tex/context/base/context.tex +++ b/tex/context/base/context.tex @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2010.05.23 15:03} +\edef\contextversion{2010.05.24 13:05} %D For those who want to use this: diff --git a/tex/context/base/font-afm.lua b/tex/context/base/font-afm.lua index 6aa3ef45a..87dec59c6 100644 --- a/tex/context/base/font-afm.lua +++ b/tex/context/base/font-afm.lua @@ -23,6 +23,7 @@ local trace_loading = false trackers.register("afm.loading", function(v) trac local format, match, gmatch, lower, gsub = string.format, string.match, string.gmatch, string.lower, string.gsub local lpegmatch = lpeg.match +local abs = math.abs fonts = fonts or { } fonts.afm = fonts.afm or { } @@ -466,74 +467,48 @@ function afm.copy_to_tfm(data) local metadata, luatex = data.metadata, data.luatex local unicodes, indices = luatex.unicodes, luatex.indices local characters, parameters, descriptions = { }, { }, { } - local tfm = { - characters = characters, - parameters = parameters, - descriptions = descriptions, - indices = indices, - unicodes = unicodes, - luatex = luatex, - } + -- todo : merge into tfm for u, i in next, indices do local d = glyphs[i] characters[u] = { } descriptions[u] = d end - tfm.encodingbytes = 2 -- was metadata.encodingbytes or 2 - tfm.filename = fonts.tfm.checked_filename(luatex) -- was metadata.filename - tfm.fontname = metadata.fontname or metadata.fullname - tfm.fullname = metadata.fullname or metadata.fontname - tfm.psname = tfm.fullname -- in otf: tfm.fontname or tfm.fullname - tfm.name = tfm.filename or tfm.fullname or tfm.fontname - tfm.format = fonts.fontformat(tfm.filename,"type1") - tfm.type = 'real' - tfm.units = 1000 - tfm.direction = 0 - tfm.boundarychar_label = 0 - tfm.boundarychar = 65536 - --~ tfm.false_boundarychar = 65536 -- produces invalid tfm in luatex - tfm.designsize = (metadata.designsize or 10)*65536 - local spaceunits = 500 - tfm.spacer = "500 units" + local filename = fonts.tfm.checked_filename(luatex) -- was metadata.filename + local fontname = metadata.fontname or metadata.fullname + local fullname = metadata.fullname or metadata.fontname + local endash, emdash, space, spaceunits = unicodes['space'], unicodes['emdash'], "space", 500 -- same as otf - local endash, emdash = unicodes['space'], unicodes['emdash'] if metadata.isfixedpitch then if descriptions[endash] then - spaceunits, tfm.spacer = descriptions[endash].width, "space" + spaceunits, spacer = descriptions[endash].width, "space" end if not spaceunits and descriptions[emdash] then - spaceunits, tfm.spacer = descriptions[emdash].width, "emdash" + spaceunits, spacer = descriptions[emdash].width, "emdash" end if not spaceunits and metadata.charwidth then - spaceunits, tfm.spacer = metadata.charwidth, "charwidth" + spaceunits, spacer = metadata.charwidth, "charwidth" end else if descriptions[endash] then - spaceunits, tfm.spacer = descriptions[endash].width, "space" + spaceunits, spacer = descriptions[endash].width, "space" end - -- if not spaceunits and descriptions[emdash] then - -- spaceunits, tfm.spacer = descriptions[emdash].width/2, "emdash/2" - -- end if not spaceunits and metadata.charwidth then - spaceunits, tfm.spacer = metadata.charwidth, "charwidth" + spaceunits, spacer = metadata.charwidth, "charwidth" end end - -- spaceunits = tonumber(spaceunits) + if spaceunits < 200 then + -- todo: warning + end + -- parameters.slant = 0 parameters.space = spaceunits parameters.space_stretch = 500 parameters.space_shrink = 333 parameters.x_height = 400 parameters.quad = 1000 - if spaceunits < 200 then - -- todo: warning - end - tfm.ascender = math.abs(metadata.ascender or 0) - tfm.descender = math.abs(metadata.descender or 0) local italicangle = data.metadata.italicangle if italicangle then - tfm.italicangle = italicangle parameters.slant = parameters.slant - math.round(math.tan(italicangle*math.pi/180)) end if metadata.isfixedpitch then @@ -563,8 +538,34 @@ function afm.copy_to_tfm(data) parameters[k] = v end end + -- if next(characters) then - return tfm + return { + characters = characters, + parameters = parameters, + descriptions = descriptions, + indices = indices, + unicodes = unicodes, + luatex = luatex, + encodingbytes = 2, + filename = filename, + fontname = fontname, + fullname = fullname, + psname = fullname, -- in otf: tfm.fontname or tfm.fullname + name = filename or fullname or fontname, + format = fonts.fontformat(filename,"type1"), + type = 'real', + units = 1000, + direction = 0, + boundarychar_label = 0, + boundarychar = 65536, + --~ false_boundarychar = 65536, -- produces invalid tfm in luatex + designsize = (metadata.designsize or 10)*65536, + spacer = spacer, + ascender = abs(metadata.ascender or 0), + descender = abs(metadata.descender or 0), + italicangle = italicangle, + } end end end diff --git a/tex/context/base/font-dum.lua b/tex/context/base/font-dum.lua index 99ee45f36..0a9bcd301 100644 --- a/tex/context/base/font-dum.lua +++ b/tex/context/base/font-dum.lua @@ -10,7 +10,7 @@ fonts = fonts or { } -- general -fonts.otf.pack = false +fonts.otf.pack = false -- only makes sense in context fonts.tfm.resolve_vf = false -- no sure about this fonts.tfm.fontname_mode = "specification" -- somehow latex needs this @@ -280,3 +280,22 @@ function fonts.otf.char(n) tex.sprint("\\char" .. n) end end + +-- another one: + +fonts.strippables = table.tohash { + 0x000AD, 0x017B4, 0x017B5, 0x0200B, 0x0200C, 0x0200D, 0x0200E, 0x0200F, 0x0202A, 0x0202B, + 0x0202C, 0x0202D, 0x0202E, 0x02060, 0x02061, 0x02062, 0x02063, 0x0206A, 0x0206B, 0x0206C, + 0x0206D, 0x0206E, 0x0206F, 0x0FEFF, 0x1D173, 0x1D174, 0x1D175, 0x1D176, 0x1D177, 0x1D178, + 0x1D179, 0x1D17A, 0xE0001, 0xE0020, 0xE0021, 0xE0022, 0xE0023, 0xE0024, 0xE0025, 0xE0026, + 0xE0027, 0xE0028, 0xE0029, 0xE002A, 0xE002B, 0xE002C, 0xE002D, 0xE002E, 0xE002F, 0xE0030, + 0xE0031, 0xE0032, 0xE0033, 0xE0034, 0xE0035, 0xE0036, 0xE0037, 0xE0038, 0xE0039, 0xE003A, + 0xE003B, 0xE003C, 0xE003D, 0xE003E, 0xE003F, 0xE0040, 0xE0041, 0xE0042, 0xE0043, 0xE0044, + 0xE0045, 0xE0046, 0xE0047, 0xE0048, 0xE0049, 0xE004A, 0xE004B, 0xE004C, 0xE004D, 0xE004E, + 0xE004F, 0xE0050, 0xE0051, 0xE0052, 0xE0053, 0xE0054, 0xE0055, 0xE0056, 0xE0057, 0xE0058, + 0xE0059, 0xE005A, 0xE005B, 0xE005C, 0xE005D, 0xE005E, 0xE005F, 0xE0060, 0xE0061, 0xE0062, + 0xE0063, 0xE0064, 0xE0065, 0xE0066, 0xE0067, 0xE0068, 0xE0069, 0xE006A, 0xE006B, 0xE006C, + 0xE006D, 0xE006E, 0xE006F, 0xE0070, 0xE0071, 0xE0072, 0xE0073, 0xE0074, 0xE0075, 0xE0076, + 0xE0077, 0xE0078, 0xE0079, 0xE007A, 0xE007B, 0xE007C, 0xE007D, 0xE007E, 0xE007F, +} + diff --git a/tex/context/base/font-ext.lua b/tex/context/base/font-ext.lua index 88de5f8b5..05bdaf2fc 100644 --- a/tex/context/base/font-ext.lua +++ b/tex/context/base/font-ext.lua @@ -13,7 +13,6 @@ local utfchar = utf.char local trace_protrusion = false trackers.register("fonts.protrusion", function(v) trace_protrusion = v end) local trace_expansion = false trackers.register("fonts.expansion", function(v) trace_expansion = v end) -local trace_goodies = false trackers.register("fonts.goodies", function(v) trace_goodies = v end) commands = commands or { } @@ -25,9 +24,11 @@ of neutral.</p> fonts.triggers = fonts.triggers or { } fonts.initializers = fonts.initializers or { } +fonts.methods = fonts.methods or { } fonts.initializers.common = fonts.initializers.common or { } local initializers = fonts.initializers +local methods = fonts.methods --[[ldx-- <p>This feature will remove inter-digit kerns.</p> @@ -575,3 +576,48 @@ initializers.node.otf.extend = initializers.common.extend initializers.base.afm.extend = initializers.common.extend initializers.node.afm.extend = initializers.common.extend + +-- historic stuff, move from font-ota + +local delete_node = nodes.delete +local glyph = node.id("glyph") +local fontdata = fonts.ids + +fonts.strippables = fonts.strippables or { -- just a placeholder + [0x200C] = true, -- zwnj + [0x200D] = true, -- zwj +} + +local strippables = fonts.strippables + +local function processformatters(head,font) + local how = fontdata[font].shared.features.formatters + if how == nil or how == "strip" then -- nil when forced + local current, done = head, false + while current do + if current.id == glyph and current.subtype<256 and current.font == font then + local char = current.char + if strippables[char] then + head, current = delete_node(head,current) + done = true + else + current = current.next + end + else + current = current.next + end + end + return head, done + else + return head, false + end +end + +methods.node.otf.formatters = processformatters +methods.base.otf.formatters = processformatters + +fonts.otf.tables.features['formatters'] = 'Hide Formatting Characters' + +fonts.otf.features.register("formatters") + +table.insert(fonts.manipulators,"formatters") -- at end diff --git a/tex/context/base/font-gds.lua b/tex/context/base/font-gds.lua index cace12509..e3db8c816 100644 --- a/tex/context/base/font-gds.lua +++ b/tex/context/base/font-gds.lua @@ -24,7 +24,6 @@ fonts.goodies.list = fonts.goodies.list or { } local data = fonts.goodies.data local list = fonts.goodies.list - function fonts.goodies.report(what,trace,goodies) if trace_goodies or trace then local whatever = goodies[what] @@ -291,144 +290,5 @@ fonts.goodies.register("mathematics", initialize) -- tex/context/fonts/goodies -- tex/fonts/goodies/context -- tex/fonts/data/foundry/collection - ---~ local yes = "yes", "node" - ---~ local basics = { ---~ analyze = yes, ---~ mode = "node", ---~ language = "dflt", ---~ script = "arab", ---~ } - ---~ local analysis = { ---~ ccmp = yes, ---~ init = yes, medi = yes, fina = yes, ---~ } - ---~ local regular = { ---~ rlig = yes, calt = yes, salt = yes, anum = yes, ---~ ss01 = yes, ss03 = yes, ss07 = yes, ss10 = yes, ss12 = yes, ss15 = yes, ss16 = yes, ---~ ss19 = yes, ss24 = yes, ss25 = yes, ss26 = yes, ss27 = yes, ss31 = yes, ss34 = yes, ---~ ss35 = yes, ss36 = yes, ss37 = yes, ss38 = yes, ss41 = yes, ss42 = yes, ss43 = yes, ---~ js16 = yes, ---~ } - ---~ local positioning = { ---~ kern = yes, curs = yes, mark = yes, mkmk = yes, ---~ } - ---~ return { ---~ name = "husayni", ---~ version = "1.00", ---~ comment = "Goodies that complement the Husayni font by Idris Samawi Hamid.", ---~ author = "Idris Samawi Hamid and Hans Hagen", ---~ featuresets = { ---~ default = { ---~ basics, analysis, regular, positioning, -- xxxx = yes, yyyy = 2, ---~ }, ---~ }, ---~ stylistics = { ---~ ss01 = "Allah, Muhammad", ---~ ss02 = "ss01 + Allah_final", ---~ ss03 = "level-1 stack over Jiim, initial entry only", ---~ ss04 = "level-1 stack over Jiim, initial/medial entry", ---~ ss05 = "multi-level Jiim stacking, initial/medial entry", ---~ ss06 = "aesthetic Faa/Qaaf for FJ_mm, FJ_mf connection", ---~ ss07 = "initial-entry stacking over Haa", ---~ ss08 = "initial/medial stacking over Haa, minus HM_mf strings", ---~ ss09 = "initial/medial Haa stacking plus HM_mf strings", ---~ ss10 = "basic dipped Miim, initial-entry B_S-stack over Miim", ---~ ss11 = "full dipped Miim, initial-entry B_S-stack over Miim", ---~ ss12 = "XBM_im initial-medial entry B_S-stack over Miim", ---~ ss13 = "full initial-medial entry B_S-stacked Miim", ---~ ss14 = "initial entry, stacked Laam on Miim", ---~ ss15 = "full stacked Laam-on-Miim", ---~ ss16 = "initial entry, stacked Ayn-on-Miim", ---~ ss17 = "full stacked Ayn-on-Miim", ---~ ss18 = "LMJ_im already contained in ss03--05, may remove", ---~ ss19 = "LM_im", ---~ ss20 = "KLM_m, sloped Miim", ---~ ss21 = "KLM_i_mm/LM_mm, sloped Miim", ---~ ss22 = "filled sloped Miim", ---~ ss23 = "LM_mm, non-sloped Miim", ---~ ss24 = "BR_i_mf, BN_i_mf", ---~ ss25 = "basic LH_im might merge with ss24", ---~ ss26 = "full Yaa.final special strings: BY_if, BY_mf, LY_mf", ---~ ss27 = "basic thin Miim.final", ---~ ss28 = "full thin Miim.final to be moved to jsnn", ---~ ss29 = "basic short Miim.final", ---~ ss30 = "full short Miim.final to be moved to jsnn", ---~ ss31 = "basic Raa.final strings: JR and SR", ---~ ss32 = "basic Raa.final strings: JR, SR, and BR", ---~ ss33 = "TtR to be moved to jsnn", ---~ ss34 = "AyR style also available in jsnn", ---~ ss35 = "full Kaaf contexts", ---~ ss36 = "full Laam contexts", ---~ ss37 = "Miim-Miim contexts", ---~ ss38 = "basic dipped Haa, B_SH_mm", ---~ ss39 = "full dipped Haa, B_S_LH_i_mm_Mf", ---~ ss40 = "aesthetic dipped medial Haa", ---~ ss41 = "high and low Baa strings", ---~ ss42 = "diagonal entry", ---~ ss43 = "initial alternates", ---~ ss44 = "hooked final alif", ---~ ss45 = "BMA_f", ---~ ss46 = "BM_mm_alt, for JBM combinations", ---~ ss47 = "Shaddah-<kasrah> combo", ---~ ss48 = "Auto-sukuun", ---~ ss49 = "No vowels", ---~ ss50 = "Shaddah/MaaddahHamzah only", ---~ ss51 = "No Skuun", ---~ ss52 = "No Waslah", ---~ ss53 = "No Waslah", ---~ ss54 = "chopped finals", ---~ ss55 = "idgham-tanwin", ---~ js01 = "Raawide", ---~ js02 = "Yaawide", ---~ js03 = "Kaafwide", ---~ js04 = "Nuunwide", ---~ js05 = "Kaafwide Nuunwide Siinwide Baawide", ---~ js06 = "final Haa wide", ---~ js07 = "thin Miim", ---~ js08 = "short Miim", ---~ js09 = "wide Siin", ---~ js10 = "thuluth-style initial Haa, final Miim, MRw_mf", ---~ js11 = "level-1 stretching", ---~ js12 = "level-2 stretching", ---~ js13 = "level-3 stretching", ---~ js14 = "final Alif", ---~ js15 = "hooked final Alif", ---~ js16 = "aesthetic medial Faa/Qaaf", ---~ js17 = "fancy isol Haa after Daal, Raa, and Waaw", ---~ js18 = "Laamwide, alternate substitution", ---~ js19 = "level-4 stretching, only siin and Hhaa for basmalah", ---~ js20 = "level-5 stretching, only siin and Hhaa for basmalah", ---~ js21 = "Haa.final_alt2", ---~ }, ---~ colorschemes = { ---~ default = { ---~ [1] = { ---~ "Onedotabove", "Onedotbelow", "Twodotsabove", "Twodotsbelow", "Threedotsabove", "Twodotsabove.vrt", "Twodotsbelow.vrt", "Twodotsabove.KBA", "Threedotsabove.KBA", "Threedotsbelowinv", ---~ }, ---~ [2] = { ---~ "Fathah", "Dammah", "Kasrah", "FathahVertical", "DammahInverted", "KasrahVertical", "FathahVertical.alt1", "KasrahVertical.alt1", "FathahTanwiin", "DammahTanwiin", "KasrahTanwiin", "Shaddah", "Sukuun", "MaaddahHamzah", "Jazm", "Maaddah", "DammahTanwiin_alt2", "DammahTanwiin_alt1", "FathahTanwiin_alt1", "KasrahTanwiin_alt1", "Fathah.mkmk", "Dammah.mkmk", "Kasrah.mkmk", "FathahVertical.mkmk", "DammahInverted.mkmk", "KasrahVertical.mkmk", "FathahTanwiin.mkmk", "DammahTanwiin.mkmk", "KasrahTanwiin.mkmk", "DammahTanwiin_alt1.mkmk", ---~ }, ---~ [3] = { ---~ "Ttaa.waqf", "SsLY.waqf", "QLY.waqf", "Miim.waqf", "LA.waqf", "Jiim.waqf", "Threedotsabove.waqf", "Siin.waqf", "Ssaad.waqf", "Qaaf.waqf", "SsL.waqf", "QF.waqf", "SKTH.waqf", "WQFH.waqf", "Kaaf.waqf", "Ayn.ruku", ---~ }, ---~ [4] = { ---~ "Hamzah","Hamzahabove", "Hamzahbelow", "MaaddahHamzah.identity", "Waslah", ---~ }, ---~ [5] = { ---~ "Waawsmall", "Yaasmall", "FathahVertical.alt2", "Waawsmall.isol", "Yaasmall.isol", "FathahVertical.isol", ---~ }, ---~ [6] = { ---~ "Miim.nuun_high", "Siin.Ssaad", "Nuunsmall", "emptydot_low", "emptydot_high", "Sifr.fill", "Miim.nuun_low", "Nuun.tanwiin", ---~ }, ---~ [7] = { ---~ "Ayah", "Yaasmall", "Ayah.alt1", "Ayah.alt2", "Ayah.alt3", "Ayah2", ---~ } ---~ } ---~ } ---~ } +-- +-- see lfg files in distribution diff --git a/tex/context/base/font-ini.mkiv b/tex/context/base/font-ini.mkiv index 2eb790d5e..c7d515cca 100644 --- a/tex/context/base/font-ini.mkiv +++ b/tex/context/base/font-ini.mkiv @@ -1320,7 +1320,11 @@ %D have a similar meaning, and therefore can lead to an %D unwanted loop, we temporary redefine \type{\c!text}. For %D the moment this in only place that some trickery is needed -%D to fool the multilingual interface. +%D to fool the multilingual interface. However, long ago +%D we decided to stick to \s!text in definitions as it closely +%D relates to the math model where text, script and scriptscript +%D are used untranslated. Also, we are now english at the low +%D level so it cannot go wrong anymore. %D %D When instead of a size the keyword \type{unknown} is %D passed, fractions (relations) are used instead of fixed @@ -2079,15 +2083,38 @@ \settrue\autotypescripts +% \def\trycurrentfontclass#1% +% {\ifconditional\autotypescripts +% \usetypescript[#1]% +% \ifcsname\@fontclass@#1\endcsname +% \edef\fontclass{#1}% +% \else +% \letvalue{\@no@fontclass@#1}\empty +% \fi +% \else +% \letvalue{\@no@fontclass@#1}\empty +% \fi} + \def\trycurrentfontclass#1% {\ifconditional\autotypescripts + % try to load typescript #1 \usetypescript[#1]% \ifcsname\@fontclass@#1\endcsname \edef\fontclass{#1}% \else - \letvalue{\@no@fontclass@#1}\empty + % try to load type-#1.mkiv + \usetypescriptfile[\f!typeprefix#1]% + % try to load typescript #1 + \usetypescript[#1]% + \ifcsname\@fontclass@#1\endcsname + \edef\fontclass{#1}% + \else + % todo: message + \letvalue{\@no@fontclass@#1}\empty + \fi \fi \else + % todo: message \letvalue{\@no@fontclass@#1}\empty \fi} diff --git a/tex/context/base/font-ota.lua b/tex/context/base/font-ota.lua index 558e2fc80..0b61e17d1 100644 --- a/tex/context/base/font-ota.lua +++ b/tex/context/base/font-ota.lua @@ -35,14 +35,8 @@ local penalty = node.id('penalty') local set_attribute = node.set_attribute local has_attribute = node.has_attribute local traverse_id = node.traverse_id -local delete_node = nodes.delete -local replace_node = nodes.replace -local insert_node_after = node.insert_after -local insert_node_before = node.insert_before local traverse_node_list = node.traverse -local new_glue_node = nodes.glue - local fontdata = fonts.ids local state = attributes.private('state') @@ -56,7 +50,6 @@ local a_to_language = otf.a_to_language -- font related value, but then we also need dynamic features which is -- somewhat slower; and .. we need a chain of them - function fonts.initializers.node.otf.analyze(tfmdata,value,attr) if attr and attr > 0 then script, language = a_to_script[attr], a_to_language[attr] @@ -195,8 +188,6 @@ function fonts.analyzers.methods.nocolor(head,font,attr) return head, true end -otf.remove_joiners = false -- true -- for idris who want it as option - local function finish(first,last) if last then if first == last then @@ -242,22 +233,10 @@ function fonts.analyzers.methods.arab(head,font,attr) -- maybe make a special ve local tfmdata = fontdata[font] local marks = tfmdata.marks local first, last, current, done = nil, nil, head, false - local joiners, nonjoiners - local removejoiners = tfmdata.remove_joiners -- or otf.remove_joiners - if removejoiners then - joiners, nonjoiners = { }, { } - end while current do if current.id == glyph and current.subtype<256 and current.font == font and not has_attribute(current,state) then done = true local char = current.char - if removejoiners then - if char == zwj then - joiners[#joiners+1] = current - elseif char == zwnj then - nonjoiners[#nonjoiners+1] = current - end - end if marks[char] then set_attribute(current,state,5) -- mark if trace_analyzing then fcs(current,"font:mark") end @@ -303,22 +282,5 @@ function fonts.analyzers.methods.arab(head,font,attr) -- maybe make a special ve current = current.next end first, last = finish(first,last) - if removejoiners then - -- is never head - for i=1,#joiners do - delete_node(head,joiners[i]) - end - for i=1,#nonjoiners do - replace_node(head,nonjoiners[i],new_glue_node(0)) -- or maybe a kern - end - end return head, done end - -table.insert(fonts.manipulators,"joiners") - -function fonts.initializers.node.otf.joiners(tfmdata,value) - if value == "strip" then - tfmdata.remove_joiners = true - end -end diff --git a/tex/context/base/font-otf.lua b/tex/context/base/font-otf.lua index d68137c96..9cecf21f0 100644 --- a/tex/context/base/font-otf.lua +++ b/tex/context/base/font-otf.lua @@ -11,6 +11,7 @@ local utf = unicode.utf8 local concat, getn, utfbyte = table.concat, table.getn, utf.byte local format, gmatch, gsub, find, match, lower, strip = string.format, string.gmatch, string.gsub, string.find, string.match, string.lower, string.strip local type, next, tonumber, tostring = type, next, tonumber, tostring +local abs = math.abs local lpegmatch = lpeg.match local trace_private = false trackers.register("otf.private", function(v) trace_private = v end) @@ -1356,10 +1357,12 @@ function otf.features.register(name,default) otf.features.default[name] = default end +-- for context this will become a task handler + function otf.set_features(tfmdata,features) local processes = { } if features and next(features) then - local lists = { + local lists = { -- why local fonts.triggers, fonts.processors, fonts.manipulators, @@ -1396,7 +1399,7 @@ function otf.set_features(tfmdata,features) end end end - local fm = fonts.methods[mode] + local fm = fonts.methods[mode] -- todo: zonder node/mode otf/... if fm then local fmotf = fm.otf if fmotf then @@ -1505,14 +1508,11 @@ function otf.copy_to_tfm(data,cache_id) -- we can save a copy when we reorder th local unicodes = luatex.unicodes -- names to unicodes local indices = luatex.indices local characters, parameters, math_parameters, descriptions = { }, { }, { }, { } - local tfm = { - characters = characters, - parameters = parameters, - math_parameters = math_parameters, - descriptions = descriptions, - indices = indices, - unicodes = unicodes, - } + local designsize = metadata.designsize or metadata.design_size or 100 + if designsize == 0 then + designsize = 100 + end + local spaceunits = 500 -- indices maps from unicodes to indices for u, i in next, indices do characters[u] = { } -- we need this because for instance we add protruding info and loop over characters @@ -1565,65 +1565,49 @@ function otf.copy_to_tfm(data,cache_id) -- we can save a copy when we reorder th end end -- end math - local designsize = metadata.designsize or metadata.design_size or 100 - if designsize == 0 then - designsize = 100 - end - local spaceunits = 500 - -- we need a runtime lookup because of running from cdrom or zip, brrr (shouldn't we use the basename then?) - tfm.filename = fonts.tfm.checked_filename(luatex) - tfm.fontname = metadata.fontname - tfm.fullname = metadata.fullname or tfm.fontname - tfm.psname = tfm.fontname or tfm.fullname - tfm.name = tfm.filename or tfm.fullname or tfm.fontname - tfm.units = metadata.units_per_em or 1000 - tfm.encodingbytes = 2 - tfm.format = fonts.fontformat(tfm.filename,"opentype") - tfm.cidinfo = data.cidinfo - tfm.cidinfo.registry = tfm.cidinfo.registry or "" - tfm.type = "real" - tfm.direction = 0 - tfm.boundarychar_label = 0 - tfm.boundarychar = 65536 - tfm.designsize = (designsize/10)*65536 - tfm.spacer = "500 units" - local endash, emdash = 0x20, 0x2014 -- unicodes['space'], unicodes['emdash'] + local endash, emdash, space = 0x20, 0x2014, "space" -- unicodes['space'], unicodes['emdash'] if metadata.isfixedpitch then if descriptions[endash] then - spaceunits, tfm.spacer = descriptions[endash].width, "space" + spaceunits, spacer = descriptions[endash].width, "space" end if not spaceunits and descriptions[emdash] then - spaceunits, tfm.spacer = descriptions[emdash].width, "emdash" + spaceunits, spacer = descriptions[emdash].width, "emdash" end if not spaceunits and metadata.charwidth then - spaceunits, tfm.spacer = metadata.charwidth, "charwidth" + spaceunits, spacer = metadata.charwidth, "charwidth" end else if descriptions[endash] then - spaceunits, tfm.spacer = descriptions[endash].width, "space" + spaceunits, spacer = descriptions[endash].width, "space" end if not spaceunits and descriptions[emdash] then - spaceunits, tfm.spacer = descriptions[emdash].width/2, "emdash/2" + spaceunits, spacer = descriptions[emdash].width/2, "emdash/2" end if not spaceunits and metadata.charwidth then - spaceunits, tfm.spacer = metadata.charwidth, "charwidth" + spaceunits, spacer = metadata.charwidth, "charwidth" end end spaceunits = tonumber(spaceunits) or tfm.units/2 -- 500 -- brrr + -- we need a runtime lookup because of running from cdrom or zip, brrr (shouldn't we use the basename then?) + local filename = fonts.tfm.checked_filename(luatex) + local fontname = metadata.fontname + local fullname = metadata.fullname or fontname + local cidinfo = data.cidinfo + local units = metadata.units_per_em or 1000 + -- + cidinfo.registry = cidinfo and cidinfo.registry or "" -- weird here, fix upstream + -- parameters.slant = 0 - parameters.space = spaceunits -- 3.333 (cmr10) - parameters.space_stretch = tfm.units/2 -- 500 -- 1.666 (cmr10) - parameters.space_shrink = 1*tfm.units/3 -- 333 -- 1.111 (cmr10) - parameters.x_height = 2*tfm.units/5 -- 400 - parameters.quad = tfm.units -- 1000 - if spaceunits < 2*tfm.units/5 then + parameters.space = spaceunits -- 3.333 (cmr10) + parameters.space_stretch = units/2 -- 500 -- 1.666 (cmr10) + parameters.space_shrink = 1*units/3 -- 333 -- 1.111 (cmr10) + parameters.x_height = 2*units/5 -- 400 + parameters.quad = units -- 1000 + if spaceunits < 2*units/5 then -- todo: warning end local italicangle = metadata.italicangle - tfm.ascender = math.abs(metadata.ascent or 0) - tfm.descender = math.abs(metadata.descent or 0) if italicangle then -- maybe also in afm _ - tfm.italicangle = italicangle parameters.slant = parameters.slant - math.round(math.tan(italicangle*math.pi/180)) end if metadata.isfixedpitch then @@ -1645,8 +1629,34 @@ function otf.copy_to_tfm(data,cache_id) -- we can save a copy when we reorder th end end end - -- [6] - return tfm + -- + return { + characters = characters, + parameters = parameters, + math_parameters = math_parameters, + descriptions = descriptions, + indices = indices, + unicodes = unicodes, + type = "real", + direction = 0, + boundarychar_label = 0, + boundarychar = 65536, + designsize = (designsize/10)*65536, + spacer = "500 units", + encodingbytes = 2, + filename = filename, + fontname = fontname, + fullname = fullname, + psname = fontname or fullname, + name = filename or fullname, + units = units, + format = fonts.fontformat(filename,"opentype"), + cidinfo = cidinfo, + ascender = abs(metadata.ascent or 0), + descender = abs(metadata.descent or 0), + spacer = spacer, + italicangle = italicangle, + } else return nil end diff --git a/tex/context/base/lxml-tab.lua b/tex/context/base/lxml-tab.lua index 921030272..23cd1cf04 100644 --- a/tex/context/base/lxml-tab.lua +++ b/tex/context/base/lxml-tab.lua @@ -30,7 +30,7 @@ xml = xml or { } local concat, remove, insert = table.concat, table.remove, table.insert local type, next, setmetatable, getmetatable, tonumber = type, next, setmetatable, getmetatable, tonumber -local format, lower, find, match = string.format, string.lower, string.find, string.match +local format, lower, find, match, gsub = string.format, string.lower, string.find, string.match, string.gsub local utfchar = unicode.utf8.char local lpegmatch = lpeg.match local P, S, R, C, V, C, Cs = lpeg.P, lpeg.S, lpeg.R, lpeg.C, lpeg.V, lpeg.C, lpeg.Cs diff --git a/tex/context/base/mult-ini.mkiv b/tex/context/base/mult-ini.mkiv index c6a1ed2ae..e20548f9b 100644 --- a/tex/context/base/mult-ini.mkiv +++ b/tex/context/base/mult-ini.mkiv @@ -424,6 +424,12 @@ %D We already defined these auxiliary macros in the system %D modules. Starting with this module however, we have to take %D multi||linguality a bit more serious. +%D +%D The additional \type {\c!internal!n} prefixing is no longer +%D needed as we now have separate interface files when dealing +%D with setups (quick ref docs) and no longer reload the whole +%D interface. (We no longer need the link back to the main +%D internal interface.) \def\doresetvalue#1#2% {\dosetvalue{#1}{#2}{}} @@ -690,7 +696,7 @@ %D depending on the actual language. In dutch we just say: %D %D \starttyping -%D \setupblock [width=3cm, height=1cm] +%D \stelblokin [breedte=3cm,hoogte=1cm] %D \stoptyping %D %D and get ourselves \type{\@@bxwidth} and \type{\@@bxheight} @@ -739,7 +745,10 @@ %D \stopnarrower %D Anno 2003 I've forgotten why the \type {\c!internal} is -%D still in there; it's probably a left over from an experiment. +%D still in there; it's probably a left over from the time that +%D the user interface documents were not using a specification +%D alongside a keyword specification but used a shared file in +%D which case we need to go in both directions. \let\c!internal!y \string \def\c!internal!n {-} diff --git a/tex/context/base/node-fnt.lua b/tex/context/base/node-fnt.lua index f2d8e1d77..b0d073425 100644 --- a/tex/context/base/node-fnt.lua +++ b/tex/context/base/node-fnt.lua @@ -45,6 +45,8 @@ if tex.attribute[0] < 0 then end +-- this will be redone and split in a generic one and a context one + function nodes.process_characters(head) -- either next or not, but definitely no already processed list starttiming(nodes) diff --git a/tex/context/base/page-ini.mkiv b/tex/context/base/page-ini.mkiv index 9f80fdcc5..07d342282 100644 --- a/tex/context/base/page-ini.mkiv +++ b/tex/context/base/page-ini.mkiv @@ -1065,9 +1065,13 @@ \executepagebreakhandler\v!yes \fi \ifnum\prevrealpageno<\realpageno -\ifcase\pageornamentstate\or - \global\chardef\pageornamentstate\zerocount -\fi + % there must have been a reason why i added the ifcase + % but it fails on tests/mkiv/pages/ornaments-001.tex + % as WS found out so we have to wait till the next side + % effect shows up + % \ifcase\pageornamentstate\or + \global\chardef\pageornamentstate\zerocount + % \fi \fi \egroup} diff --git a/tex/context/base/spac-hor.mkiv b/tex/context/base/spac-hor.mkiv index c1dc7a60d..9f902678a 100644 --- a/tex/context/base/spac-hor.mkiv +++ b/tex/context/base/spac-hor.mkiv @@ -935,4 +935,12 @@ \def\outdented#1% {\hskip-\hangindent#1\relax} +%D Beware: due to char-def this becomes an active character but that +%D might change sometime when we will replace all these specials to +%D node insertions. We might even expand it to utf then as it then +%D can be used in string comparison (not that much needed anyway). + +\chardef\zwnj="200C +\chardef\zwj ="200D + \protect \endinput diff --git a/tex/context/base/strc-reg.lua b/tex/context/base/strc-reg.lua index 519396276..c5b2c9374 100644 --- a/tex/context/base/strc-reg.lua +++ b/tex/context/base/strc-reg.lua @@ -461,7 +461,7 @@ function jobregisters.flush(data,options,prefixspec,pagespec) local function pagerange(f_entry,t_entry,is_last) local er = f_entry.references texsprint(ctxcatcodes,format("\\registerpagerange{%s}{%s}{",er.internal or 0,er.realpage or 0)) - local proc = entry.processors and entry.processors[2] + local proc = f_entry.processors and f_entry.processors[2] if proc then texsprint(ctxcatcodes,"\\applyprocessor{",proc,"}{") helpers.prefixpage(f_entry,prefixspec,pagespec) diff --git a/tex/context/base/task-ini.lua b/tex/context/base/task-ini.lua index 5db86ee8d..aaa97ec49 100644 --- a/tex/context/base/task-ini.lua +++ b/tex/context/base/task-ini.lua @@ -28,6 +28,7 @@ tasks.appendaction("processors", "fonts", "nodes.inject_kerns") tasks.appendaction("processors", "fonts", "nodes.protect_glyphs", nil, "nohead") -- maybe todo tasks.appendaction("processors", "fonts", "kernel.ligaturing") -- always on tasks.appendaction("processors", "fonts", "kernel.kerning") -- always on +tasks.appendaction("processors", "fonts", "nodes.stripping.process") -- disabled (might move) tasks.appendaction("processors", "lists", "lists.handle_spacing") -- disabled tasks.appendaction("processors", "lists", "lists.handle_kerning") -- disabled @@ -72,6 +73,7 @@ tasks.disableaction("processors", "chars.handle_mirroring") tasks.disableaction("processors", "languages.words.check") tasks.disableaction("processors", "lists.handle_spacing") tasks.disableaction("processors", "lists.handle_kerning") +tasks.disableaction("processors", "nodes.stripping.process") tasks.disableaction("shipouts", "nodes.rules.process") tasks.disableaction("shipouts", "nodes.shifts.process") diff --git a/tex/context/base/type-one.mkii b/tex/context/base/type-one.mkii index d7fa839f6..efe31ed21 100644 --- a/tex/context/base/type-one.mkii +++ b/tex/context/base/type-one.mkii @@ -1381,14 +1381,109 @@ \definefontsynonym [MathExtension] [AntykwaTorunska-Math-Extension-CondLight] \stoptypescript + \starttypescript [antykwa-torunska] [texnansi,ec,8r,uc,t5,t2a] + \definetypeface[antykwa][rm][serif][antykwa-torunska] [default][encoding=\typescripttwo] + \definetypeface[antykwa][ss][sans] [modern] [default][encoding=\typescripttwo,rscale=1.05] + \definetypeface[antykwa][tt][mono] [modern] [default][encoding=\typescripttwo,rscale=1.1] + \definetypeface[antykwa][mm][math] [antykwa-torunska] [default][encoding=\typescripttwo] + \quittypescriptscanning + \stoptypescript + % Antykwa Poltawskiego (GUST) - \starttypescript [serif] [antykwa-poltawskiego] [texnansi,ec,8r] - \definefontsynonym [AntykwaPoltawskiego-Regular] [\typescriptthree-antpr] [encoding=\typescriptthree] - \definefontsynonym [AntykwaPoltawskiego-Bold] [\typescriptthree-antpb] [encoding=\typescriptthree] - \definefontsynonym [AntykwaPoltawskiego-Italic] [\typescriptthree-antpri] [encoding=\typescriptthree] - \definefontsynonym [AntykwaPoltawskiego-BoldItalic] [\typescriptthree-antpbi] [encoding=\typescriptthree] - \loadmapfile[\typescriptthree-public-antp.map] + \starttypescript [serif] [antykwa-poltawskiego,antykwa-poltawskiego-light] [ec,texnansi,qx,t5] + + \definefontsynonym [AntykwaPoltawskiego-Condensed-Light] [\typescriptthree-antpl17] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Condensed-LightItalic] [\typescriptthree-antpli17] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Condensed-Regular] [\typescriptthree-antpr17] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Condensed-Italic] [\typescriptthree-antpri17] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Condensed-Medium] [\typescriptthree-antpm17] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Condensed-MediumItalic] [\typescriptthree-antpmi17] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Condensed-Bold] [\typescriptthree-antpb17] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Condensed-BoldItalic] [\typescriptthree-antpbi17] [encoding=\typescriptthree] + + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsLight] [\typescriptthree-antpl17-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsLightItalic] [\typescriptthree-antpli17-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsRegular] [\typescriptthree-antpr17-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsItalic] [\typescriptthree-antpri17-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsMedium] [\typescriptthree-antpm17-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsMediumItalic] [\typescriptthree-antpmi17-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsBold] [\typescriptthree-antpb17-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsBoldItalic] [\typescriptthree-antpbi17-sc] [encoding=\typescriptthree] + + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Regular] [\typescriptthree-antpl12] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Italic] [\typescriptthree-antpli12] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Regular] [\typescriptthree-antpr12] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Italic] [\typescriptthree-antpri12] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Medium] [\typescriptthree-antpm12] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-MediumItalic] [\typescriptthree-antpmi12] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Bold] [\typescriptthree-antpb12] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-BoldItalic] [\typescriptthree-antpbi12] [encoding=\typescriptthree] + + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsRegular] [\typescriptthree-antpl12-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsItalic] [\typescriptthree-antpli12-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsRegular] [\typescriptthree-antpr12-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsItalic] [\typescriptthree-antpri12-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsMedium] [\typescriptthree-antpm12-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsMediumItalic] [\typescriptthree-antpmi12-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsBold] [\typescriptthree-antpb12-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsBoldItalic] [\typescriptthree-antpbi12-sc] [encoding=\typescriptthree] + + \definefontsynonym [AntykwaPoltawskiego-Light] [\typescriptthree-antpl10] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-LightItalic] [\typescriptthree-antpli10] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Regular] [\typescriptthree-antpr10] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Italic] [\typescriptthree-antpri10] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Medium] [\typescriptthree-antpm10] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-MediumItalic] [\typescriptthree-antpmi10] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Bold] [\typescriptthree-antpb10] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-BoldItalic] [\typescriptthree-antpbi10] [encoding=\typescriptthree] + + \definefontsynonym [AntykwaPoltawskiego-CapsLight] [\typescriptthree-antpl10-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-CapsLightItalic] [\typescriptthree-antpli10-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-CapsRegular] [\typescriptthree-antpr10-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-CapsItalic] [\typescriptthree-antpri10-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-CapsMedium] [\typescriptthree-antpm10-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-CapsMediumItalic] [\typescriptthree-antpmi10-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-CapsBold] [\typescriptthree-antpb10-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-CapsBoldItalic] [\typescriptthree-antpbi10-sc] [encoding=\typescriptthree] + + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Light] [\typescriptthree-antpl8] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-LightItalic] [\typescriptthree-antpli8] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Regular] [\typescriptthree-antpr8] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Italic] [\typescriptthree-antpri8] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Medium] [\typescriptthree-antpm8] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-MediumItalic] [\typescriptthree-antpmi8] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Bold] [\typescriptthree-antpb8] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-BoldItalic] [\typescriptthree-antpbi8] [encoding=\typescriptthree] + + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsLight] [\typescriptthree-antpl8-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsLightItalic] [\typescriptthree-antpli8-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsRegular] [\typescriptthree-antpr8-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsItalic] [\typescriptthree-antpri8-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsMedium] [\typescriptthree-antpm8-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsMediumItalic] [\typescriptthree-antpmi8-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsBold] [\typescriptthree-antpb8-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsBoldItalic] [\typescriptthree-antpbi8-sc] [encoding=\typescriptthree] + + \definefontsynonym [AntykwaPoltawskiego-Extended-Light] [\typescriptthree-antpl6] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Extended-LightItalic] [\typescriptthree-antpli6] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Extended-Regular] [\typescriptthree-antpr6] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Extended-Italic] [\typescriptthree-antpri6] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Extended-Medium] [\typescriptthree-antpm6] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Extended-MediumItalic] [\typescriptthree-antpmi6] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Extended-Bold] [\typescriptthree-antpb6] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Extended-BoldItalic] [\typescriptthree-antpbi6] [encoding=\typescriptthree] + + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsLight] [\typescriptthree-antpl6-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsLightItalic] [\typescriptthree-antpli6-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsRegular] [\typescriptthree-antpr6-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsItalic] [\typescriptthree-antpri6-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsMedium] [\typescriptthree-antpm6-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsMediumItalic] [\typescriptthree-antpmi6-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsBold] [\typescriptthree-antpb6-sc] [encoding=\typescriptthree] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsBoldItalic] [\typescriptthree-antpbi6-sc] [encoding=\typescriptthree] + + \loadmapfile[poltawski-\typescriptthree.map] \stoptypescript \starttypescript [serif] [antykwa-poltawskiego] [name] @@ -1396,16 +1491,28 @@ \definefontsynonym [SerifBold] [AntykwaPoltawskiego-Bold] \definefontsynonym [SerifItalic] [AntykwaPoltawskiego-Italic] \definefontsynonym [SerifSlanted] [AntykwaPoltawskiego-Italic] - \definefontsynonym [SerifBoldItalic] [AntykwaPoltawskiego-Bold] - \definefontsynonym [SerifBoldSlanted] [AntykwaPoltawskiego-Bold] - \definefontsynonym [SerifCaps] [AntykwaPoltawskiego-Regular] + \definefontsynonym [SerifBoldItalic] [AntykwaPoltawskiego-BoldItalic] + \definefontsynonym [SerifBoldSlanted] [AntykwaPoltawskiego-BoldItalic] + \definefontsynonym [SerifCaps] [AntykwaPoltawskiego-CapsRegular] \stoptypescript - \starttypescript [antykwa-torunska] [texnansi,ec,8r,uc,t5,t2a] - \definetypeface[antykwa][rm][serif][antykwa-torunska] [default][encoding=\typescripttwo] - \definetypeface[antykwa][ss][sans] [modern] [default][encoding=\typescripttwo,rscale=1.05] - \definetypeface[antykwa][tt][mono] [modern] [default][encoding=\typescripttwo,rscale=1.1] - \definetypeface[antykwa][mm][math] [antykwa-torunska] [default][encoding=\typescripttwo] + \starttypescript [serif] [antykwa-poltawskiego-light] [name] + \definefontsynonym [Serif] [AntykwaPoltawskiego-Light] + \definefontsynonym [SerifBold] [AntykwaPoltawskiego-Medium] + \definefontsynonym [SerifItalic] [AntykwaPoltawskiego-LightItalic] + \definefontsynonym [SerifSlanted] [AntykwaPoltawskiego-LightItalic] + \definefontsynonym [SerifBoldItalic] [AntykwaPoltawskiego-MediumItalic] + \definefontsynonym [SerifBoldSlanted] [AntykwaPoltawskiego-MediumItalic] + \definefontsynonym [SerifCaps] [AntykwaPoltawskiego-CapsLight] + \stoptypescript + + % condensed and extended variants are still missing + + \starttypescript [antykwa-poltawskiego,antykwa-poltawskiego-light] [ec,texnansi,qx,t5] + \definetypeface [\typescriptone] [rm] [serif] [\typescriptone] [default] [encoding=\typescripttwo] + \definetypeface [\typescriptone] [ss] [sans] [modern] [default] [encoding=\typescripttwo,rscale=1.05] % scaling? + \definetypeface [\typescriptone] [tt] [mono] [modern] [default] [encoding=\typescripttwo,rscale=1.05] % scaling? + \definetypeface [\typescriptone] [mm] [math] [modern] [default] [encoding=\typescripttwo,rscale=1.05] % scaling? \quittypescriptscanning \stoptypescript diff --git a/tex/context/base/type-otf.mkii b/tex/context/base/type-otf.mkii index 014ec59dc..1e22a9df2 100644 --- a/tex/context/base/type-otf.mkii +++ b/tex/context/base/type-otf.mkii @@ -1158,11 +1158,113 @@ % Antykwa Poltawskiego (GUST) - \starttypescript [serif] [antykwa-poltawskiego] - \definefontsynonym [AntykwaPoltawskiego-Regular] [antpr] - \definefontsynonym [AntykwaPoltawskiego-Bold] [antpb] - \definefontsynonym [AntykwaPoltawskiego-Italic] [antpri] - \definefontsynonym [AntykwaPoltawskiego-BoldItalic] [antpbi] + % \starttypescript [serif] [antykwa-poltawskiego] + % \definefontsynonym [AntykwaPoltawskiego-Regular] [antpr] + % \definefontsynonym [AntykwaPoltawskiego-Bold] [antpb] + % \definefontsynonym [AntykwaPoltawskiego-Italic] [antpri] + % \definefontsynonym [AntykwaPoltawskiego-BoldItalic] [antpbi] + % \stoptypescript + + % \starttypescript [serif] [antykwa-poltawskiego] [name] + % \definefontsynonym [Serif] [AntykwaPoltawskiego-Regular] + % \definefontsynonym [SerifBold] [AntykwaPoltawskiego-Bold] + % \definefontsynonym [SerifItalic] [AntykwaPoltawskiego-Italic] + % \definefontsynonym [SerifSlanted] [AntykwaPoltawskiego-Italic] + % \definefontsynonym [SerifBoldItalic] [AntykwaPoltawskiego-Bold] + % \definefontsynonym [SerifBoldSlanted] [AntykwaPoltawskiego-Bold] + % \definefontsynonym [SerifCaps] [AntykwaPoltawskiego-Regular] + % \stoptypescript + + \starttypescript [serif] [antykwa-poltawskiego,antykwa-poltawskiego-light] + \definefontsynonym [AntykwaPoltawskiego-Condensed-Light] [\s!file:AntPoltLtCond-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-LightItalic] [\s!file:AntPoltLtCond-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-Regular] [\s!file:AntPoltCond-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-Italic] [\s!file:AntPoltCond-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-Medium] [\s!file:AntPoltMdCond-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-MediumItalic] [\s!file:AntPoltMdCond-BoldItalic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-Bold] [\s!file:AntPoltCond-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-BoldItalic] [\s!file:AntPoltCond-BoldItalic] [\s!features=\s!default] + + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsLight] [\s!file:AntPoltLtCond-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsLightItalic] [\s!file:AntPoltLtCond-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsRegular] [\s!file:AntPoltCond-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsItalic] [\s!file:AntPoltCond-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsMedium] [\s!file:AntPoltMdCond-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsMediumItalic] [\s!file:AntPoltMdCond-BoldItalic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsBold] [\s!file:AntPoltCond-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsBoldItalic] [\s!file:AntPoltCond-BoldItalic] [\s!features=\s!smallcaps] + + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Regular] [\s!file:AntPoltLtSemiCond-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Italic] [\s!file:AntPoltLtSemiCond-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Regular] [\s!file:AntPoltSemiCond-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Italic] [\s!file:AntPoltSemiCond-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Medium] [\s!file:AntPoltMdSemiCond-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-MediumItalic] [\s!file:AntPoltMdSemiCond-BdItalic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Bold] [\s!file:AntPoltSemiCond-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-BoldItalic] [\s!file:AntPoltSemiCond-BoldItalic] [\s!features=\s!default] + + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsRegular] [\s!file:AntPoltLtSemiCond-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsItalic] [\s!file:AntPoltLtSemiCond-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsRegular] [\s!file:AntPoltSemiCond-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsItalic] [\s!file:AntPoltSemiCond-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsMedium] [\s!file:AntPoltMdSemiCond-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsMediumItalic] [\s!file:AntPoltMdSemiCond-BdItalic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsBold] [\s!file:AntPoltSemiCond-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsBoldItalic] [\s!file:AntPoltSemiCond-BoldItalic] [\s!features=\s!smallcaps] + + \definefontsynonym [AntykwaPoltawskiego-Light] [\s!file:AntPoltLt-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-LightItalic] [\s!file:AntPoltLt-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Regular] [\s!file:AntPolt-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Italic] [\s!file:AntPolt-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Medium] [\s!file:AntPoltMd-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-MediumItalic] [\s!file:AntPoltMd-BoldItalic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Bold] [\s!file:AntPolt-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-BoldItalic] [\s!file:AntPolt-BoldItalic] [\s!features=\s!default] + + \definefontsynonym [AntykwaPoltawskiego-CapsLight] [\s!file:AntPoltLt-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-CapsLightItalic] [\s!file:AntPoltLt-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-CapsRegular] [\s!file:AntPolt-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-CapsItalic] [\s!file:AntPolt-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-CapsMedium] [\s!file:AntPoltMd-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-CapsMediumItalic] [\s!file:AntPoltMd-BoldItalic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-CapsBold] [\s!file:AntPolt-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-CapsBoldItalic] [\s!file:AntPolt-BoldItalic] [\s!features=\s!smallcaps] + + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Light] [\s!file:AntPoltLtSemiExtd-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-LightItalic] [\s!file:AntPoltLtSemiExtd-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Regular] [\s!file:AntPoltSemiExtd-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Italic] [\s!file:AntPoltSemiExtd-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Medium] [\s!file:AntPoltMdSemiExtd-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-MediumItalic] [\s!file:AntPoltMdSemiExtd-BdItalic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Bold] [\s!file:AntPoltSemiExtd-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-BoldItalic] [\s!file:AntPoltSemiExtd-BoldItalic] [\s!features=\s!default] + + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsLight] [\s!file:AntPoltLtSemiExtd-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsLightItalic] [\s!file:AntPoltLtSemiExtd-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsRegular] [\s!file:AntPoltSemiExtd-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsItalic] [\s!file:AntPoltSemiExtd-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsMedium] [\s!file:AntPoltMdSemiExtd-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsMediumItalic] [\s!file:AntPoltMdSemiExtd-BdItalic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsBold] [\s!file:AntPoltSemiExtd-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsBoldItalic] [\s!file:AntPoltSemiExtd-BoldItalic] [\s!features=\s!smallcaps] + + \definefontsynonym [AntykwaPoltawskiego-Extended-Light] [\s!file:AntPoltLtExtd-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Extended-LightItalic] [\s!file:AntPoltLtExtd-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Extended-Regular] [\s!file:AntPoltExtd-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Extended-Italic] [\s!file:AntPoltExtd-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Extended-Medium] [\s!file:AntPoltMdExtd-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Extended-MediumItalic] [\s!file:AntPoltMdExtd-BoldItalic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Extended-Bold] [\s!file:AntPoltExtd-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Extended-BoldItalic] [\s!file:AntPoltExtd-BoldItalic] [\s!features=\s!default] + + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsLight] [\s!file:AntPoltLtExtd-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsLightItalic] [\s!file:AntPoltLtExtd-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsRegular] [\s!file:AntPoltExtd-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsItalic] [\s!file:AntPoltExtd-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsMedium] [\s!file:AntPoltMdExtd-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsMediumItalic] [\s!file:AntPoltMdExtd-BoldItalic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsBold] [\s!file:AntPoltExtd-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsBoldItalic] [\s!file:AntPoltExtd-BoldItalic] [\s!features=\s!smallcaps] \stoptypescript \starttypescript [serif] [antykwa-poltawskiego] [name] @@ -1170,9 +1272,29 @@ \definefontsynonym [SerifBold] [AntykwaPoltawskiego-Bold] \definefontsynonym [SerifItalic] [AntykwaPoltawskiego-Italic] \definefontsynonym [SerifSlanted] [AntykwaPoltawskiego-Italic] - \definefontsynonym [SerifBoldItalic] [AntykwaPoltawskiego-Bold] - \definefontsynonym [SerifBoldSlanted] [AntykwaPoltawskiego-Bold] - \definefontsynonym [SerifCaps] [AntykwaPoltawskiego-Regular] + \definefontsynonym [SerifBoldItalic] [AntykwaPoltawskiego-BoldItalic] + \definefontsynonym [SerifBoldSlanted] [AntykwaPoltawskiego-BoldItalic] + \definefontsynonym [SerifCaps] [AntykwaPoltawskiego-CapsRegular] + \stoptypescript + + \starttypescript [serif] [antykwa-poltawskiego-light] [name] + \definefontsynonym [Serif] [AntykwaPoltawskiego-Light] + \definefontsynonym [SerifBold] [AntykwaPoltawskiego-Medium] + \definefontsynonym [SerifItalic] [AntykwaPoltawskiego-LightItalic] + \definefontsynonym [SerifSlanted] [AntykwaPoltawskiego-LightItalic] + \definefontsynonym [SerifBoldItalic] [AntykwaPoltawskiego-MediumItalic] + \definefontsynonym [SerifBoldSlanted] [AntykwaPoltawskiego-MediumItalic] + \definefontsynonym [SerifCaps] [AntykwaPoltawskiego-CapsLight] + \stoptypescript + + % condensed and extended variants are still missing + + \starttypescript [antykwa-poltawskiego,antykwa-poltawskiego-light] + \definetypeface [\typescriptone] [rm] [serif] [\typescriptone] [default] + \definetypeface [\typescriptone] [ss] [sans] [modern] [default] [rscale=1.05] + \definetypeface [\typescriptone] [tt] [mono] [modern] [default] [rscale=1.05] + \definetypeface [\typescriptone] [mm] [math] [modern] [default] [rscale=1.05] + \quittypescriptscanning \stoptypescript \stoptypescriptcollection diff --git a/tex/context/base/type-otf.mkiv b/tex/context/base/type-otf.mkiv index 719512322..486fa1a57 100644 --- a/tex/context/base/type-otf.mkiv +++ b/tex/context/base/type-otf.mkiv @@ -865,51 +865,97 @@ % \definefontsynonym [SerifCaps] [AntykwaPoltawskiego-Regular] % \stoptypescript + % names of "Caps" may still change \starttypescript [serif] [antykwa-poltawskiego,antykwa-poltawskiego-light] - \definefontsynonym [AntykwaPoltawskiego-Condensed-Light] [\s!file:AntPoltLtCond-Regular] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Condensed-LightItalic] [\s!file:AntPoltLtCond-Italic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Condensed-Regular] [\s!file:AntPoltCond-Regular] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Condensed-Italic] [\s!file:AntPoltCond-Italic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Condensed-Medium] [\s!file:AntPoltMdCond-Bold] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Condensed-MediumItalic] [\s!file:AntPoltMdCond-BoldItalic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Condensed-Bold] [\s!file:AntPoltCond-Bold] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Condensed-BoldItalic] [\s!file:AntPoltCond-BoldItalic] [\s!features=\s!default] - - \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Regular] [\s!file:AntPoltLtSemiCond-Regular] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Italic] [\s!file:AntPoltLtSemiCond-Italic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Regular] [\s!file:AntPoltSemiCond-Regular] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Italic] [\s!file:AntPoltSemiCond-Italic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Medium] [\s!file:AntPoltMdSemiCond-Bold] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-MediumItalic] [\s!file:AntPoltMdSemiCond-BdItalic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Bold] [\s!file:AntPoltSemiCond-Bold] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-BoldItalic] [\s!file:AntPoltSemiCond-BoldItalic] [\s!features=\s!default] - - \definefontsynonym [AntykwaPoltawskiego-Light] [\s!file:AntPoltLt-Regular] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-LightItalic] [\s!file:AntPoltLt-Italic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Regular] [\s!file:AntPolt-Regular] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Italic] [\s!file:AntPolt-Italic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Medium] [\s!file:AntPoltMd-Bold] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-MediumItalic] [\s!file:AntPoltMd-BoldItalic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Bold] [\s!file:AntPolt-Bold] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-BoldItalic] [\s!file:AntPolt-BoldItalic] [\s!features=\s!default] - - \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Light] [\s!file:AntPoltLtSemiExtd-Regular] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-SemiExtended-LightItalic] [\s!file:AntPoltLtSemiExtd-Italic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Regular] [\s!file:AntPoltSemiExtd-Regular] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Italic] [\s!file:AntPoltSemiExtd-Italic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Medium] [\s!file:AntPoltMdSemiExtd-Bold] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-SemiExtended-MediumItalic] [\s!file:AntPoltMdSemiExtd-BdItalic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Bold] [\s!file:AntPoltSemiExtd-Bold] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-SemiExtended-BoldItalic] [\s!file:AntPoltSemiExtd-BoldItalic] [\s!features=\s!default] - - \definefontsynonym [AntykwaPoltawskiego-Extended-Light] [\s!file:AntPoltLtExtd-Regular] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Extended-LightItalic] [\s!file:AntPoltLtExtd-Italic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Extended-Regular] [\s!file:AntPoltExtd-Regular] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Extended-Italic] [\s!file:AntPoltExtd-Italic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Extended-Medium] [\s!file:AntPoltMdExtd-Bold] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Extended-MediumItalic] [\s!file:AntPoltMdExtd-BoldItalic] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Extended-Bold] [\s!file:AntPoltExtd-Bold] [\s!features=\s!default] - \definefontsynonym [AntykwaPoltawskiego-Extended-BoldItalic] [\s!file:AntPoltExtd-BoldItalic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-Light] [\s!file:AntPoltLtCond-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-LightItalic] [\s!file:AntPoltLtCond-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-Regular] [\s!file:AntPoltCond-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-Italic] [\s!file:AntPoltCond-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-Medium] [\s!file:AntPoltMdCond-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-MediumItalic] [\s!file:AntPoltMdCond-BoldItalic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-Bold] [\s!file:AntPoltCond-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Condensed-BoldItalic] [\s!file:AntPoltCond-BoldItalic] [\s!features=\s!default] + + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsLight] [\s!file:AntPoltLtCond-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsLightItalic] [\s!file:AntPoltLtCond-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsRegular] [\s!file:AntPoltCond-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsItalic] [\s!file:AntPoltCond-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsMedium] [\s!file:AntPoltMdCond-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsMediumItalic] [\s!file:AntPoltMdCond-BoldItalic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsBold] [\s!file:AntPoltCond-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Condensed-CapsBoldItalic] [\s!file:AntPoltCond-BoldItalic] [\s!features=\s!smallcaps] + + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Regular] [\s!file:AntPoltLtSemiCond-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Italic] [\s!file:AntPoltLtSemiCond-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Regular] [\s!file:AntPoltSemiCond-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Italic] [\s!file:AntPoltSemiCond-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Medium] [\s!file:AntPoltMdSemiCond-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-MediumItalic] [\s!file:AntPoltMdSemiCond-BdItalic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-Bold] [\s!file:AntPoltSemiCond-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-BoldItalic] [\s!file:AntPoltSemiCond-BoldItalic] [\s!features=\s!default] + + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsRegular] [\s!file:AntPoltLtSemiCond-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsItalic] [\s!file:AntPoltLtSemiCond-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsRegular] [\s!file:AntPoltSemiCond-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsItalic] [\s!file:AntPoltSemiCond-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsMedium] [\s!file:AntPoltMdSemiCond-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsMediumItalic] [\s!file:AntPoltMdSemiCond-BdItalic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsBold] [\s!file:AntPoltSemiCond-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiCondensed-CapsBoldItalic] [\s!file:AntPoltSemiCond-BoldItalic] [\s!features=\s!smallcaps] + + \definefontsynonym [AntykwaPoltawskiego-Light] [\s!file:AntPoltLt-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-LightItalic] [\s!file:AntPoltLt-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Regular] [\s!file:AntPolt-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Italic] [\s!file:AntPolt-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Medium] [\s!file:AntPoltMd-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-MediumItalic] [\s!file:AntPoltMd-BoldItalic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Bold] [\s!file:AntPolt-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-BoldItalic] [\s!file:AntPolt-BoldItalic] [\s!features=\s!default] + + \definefontsynonym [AntykwaPoltawskiego-CapsLight] [\s!file:AntPoltLt-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-CapsLightItalic] [\s!file:AntPoltLt-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-CapsRegular] [\s!file:AntPolt-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-CapsItalic] [\s!file:AntPolt-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-CapsMedium] [\s!file:AntPoltMd-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-CapsMediumItalic] [\s!file:AntPoltMd-BoldItalic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-CapsBold] [\s!file:AntPolt-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-CapsBoldItalic] [\s!file:AntPolt-BoldItalic] [\s!features=\s!smallcaps] + + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Light] [\s!file:AntPoltLtSemiExtd-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-LightItalic] [\s!file:AntPoltLtSemiExtd-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Regular] [\s!file:AntPoltSemiExtd-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Italic] [\s!file:AntPoltSemiExtd-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Medium] [\s!file:AntPoltMdSemiExtd-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-MediumItalic] [\s!file:AntPoltMdSemiExtd-BdItalic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-Bold] [\s!file:AntPoltSemiExtd-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-BoldItalic] [\s!file:AntPoltSemiExtd-BoldItalic] [\s!features=\s!default] + + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsLight] [\s!file:AntPoltLtSemiExtd-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsLightItalic] [\s!file:AntPoltLtSemiExtd-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsRegular] [\s!file:AntPoltSemiExtd-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsItalic] [\s!file:AntPoltSemiExtd-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsMedium] [\s!file:AntPoltMdSemiExtd-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsMediumItalic] [\s!file:AntPoltMdSemiExtd-BdItalic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsBold] [\s!file:AntPoltSemiExtd-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-SemiExtended-CapsBoldItalic] [\s!file:AntPoltSemiExtd-BoldItalic] [\s!features=\s!smallcaps] + + \definefontsynonym [AntykwaPoltawskiego-Extended-Light] [\s!file:AntPoltLtExtd-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Extended-LightItalic] [\s!file:AntPoltLtExtd-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Extended-Regular] [\s!file:AntPoltExtd-Regular] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Extended-Italic] [\s!file:AntPoltExtd-Italic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Extended-Medium] [\s!file:AntPoltMdExtd-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Extended-MediumItalic] [\s!file:AntPoltMdExtd-BoldItalic] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Extended-Bold] [\s!file:AntPoltExtd-Bold] [\s!features=\s!default] + \definefontsynonym [AntykwaPoltawskiego-Extended-BoldItalic] [\s!file:AntPoltExtd-BoldItalic] [\s!features=\s!default] + + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsLight] [\s!file:AntPoltLtExtd-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsLightItalic] [\s!file:AntPoltLtExtd-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsRegular] [\s!file:AntPoltExtd-Regular] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsItalic] [\s!file:AntPoltExtd-Italic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsMedium] [\s!file:AntPoltMdExtd-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsMediumItalic] [\s!file:AntPoltMdExtd-BoldItalic] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsBold] [\s!file:AntPoltExtd-Bold] [\s!features=\s!smallcaps] + \definefontsynonym [AntykwaPoltawskiego-Extended-CapsBoldItalic] [\s!file:AntPoltExtd-BoldItalic] [\s!features=\s!smallcaps] \stoptypescript \starttypescript [serif] [antykwa-poltawskiego] [name] @@ -919,6 +965,7 @@ \definefontsynonym [SerifSlanted] [AntykwaPoltawskiego-Italic] \definefontsynonym [SerifBoldItalic] [AntykwaPoltawskiego-BoldItalic] \definefontsynonym [SerifBoldSlanted] [AntykwaPoltawskiego-BoldItalic] + \definefontsynonym [SerifCaps] [AntykwaPoltawskiego-CapsRegular] \stoptypescript \starttypescript [serif] [antykwa-poltawskiego-light] [name] @@ -928,8 +975,11 @@ \definefontsynonym [SerifSlanted] [AntykwaPoltawskiego-LightItalic] \definefontsynonym [SerifBoldItalic] [AntykwaPoltawskiego-MediumItalic] \definefontsynonym [SerifBoldSlanted] [AntykwaPoltawskiego-MediumItalic] + \definefontsynonym [SerifCaps] [AntykwaPoltawskiego-CapsLight] \stoptypescript + % condensed and extended variants are still missing + \starttypescript [antykwa-poltawskiego,antykwa-poltawskiego-light] \definetypeface [\typescriptone] [rm] [serif] [\typescriptone] [default] \definetypeface [\typescriptone] [ss] [sans] [modern] [default] [rscale=1.05] diff --git a/tex/context/base/typo-rep.lua b/tex/context/base/typo-rep.lua new file mode 100644 index 000000000..6fde21482 --- /dev/null +++ b/tex/context/base/typo-rep.lua @@ -0,0 +1,135 @@ +if not modules then modules = { } end modules ['typo-rep'] = { + version = 1.001, + comment = "companion to node-ini.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +-- This was rather boring to program (more of the same) but I could +-- endure it by listening to a couple cd's by The Scene and The Lau +-- on the squeezebox on my desk. + +local trace_stripping = false trackers.register("nodes.stripping", function(v) trace_stripping = v end) + trackers.register("fonts.stripping", function(v) trace_stripping = v end) + +local delete_node = nodes.delete +local replace_node = nodes.replace +local copy_node = node.copy +local has_attribute = node.has_attribute + +local chardata = characters.data +local collected = false +local glyph = node.id("glyph") +local attribute = attributes.private("stripping") +local fontdata = fonts.ids + +nodes.stripping = nodes.stripping or { } +local stripping = nodes.stripping +stripping.glyphs = stripping.glyphs or { } +local glyphs = stripping.glyphs + +local function initialize() + for k,v in next, chardata do + if v.category == "cf" and v.visible ~= "yes" then + if not glyphs[k] then + glyphs[k] = true + end + end + end + initialize = nil +end + +local function process(what,head,current,char) + if what == true then + if trace_stripping then + logs.report("fonts","deleting 0x%05X from text",char) + end + head, current = delete_node(head,current) + elseif type(what) == "function" then + head, current = what(head,current) + current = current.next + if trace_stripping then + logs.report("fonts","processing 0x%05X in text",char) + end + elseif what then -- assume node + head, current = replace_node(head,current,copy_node(what)) + current = current.next + if trace_stripping then + logs.report("fonts","replacing 0x%05X in text",char) + end + end + return head, current +end + +function nodes.stripping.process(head) + local current, done = head, false + while current do + if current.id == glyph then + -- it's more efficient to keep track of what needs to be kept + local todo = has_attribute(current,attribute) + if todo == 1 then + local char = current.char + local what = glyphs[char] + if what then + head, current = process(what,head,current,char) + done = true + else -- handling of spacing etc has to be done elsewhere + current = current.next + end + else + current = current.next + end + else + current = current.next + end + end + return head, done +end + +tasks.appendaction("processors","fonts","nodes.stripping.process",nil,"nodes.process_characters") +tasks.disableaction("processors","nodes.stripping.process") + +function nodes.stripping.enable() + if initialize then initialize() end + tasks.enableaction("processors","nodes.stripping.process") + function nodes.stripping.enable() end +end + +-- bonus: + +local initializers, methods = fonts.initializers, fonts.methods + +local function processformatters(head,font) + local how = fontdata[font].shared.features.formatters -- slow + if how == nil or how == "strip" then -- nil when forced + local current, done = head, false + while current do + if current.id == glyph and current.subtype<256 and current.font == font then + local char = current.char + local what = glyphs[char] + if what then + head, current = process(what,head,current,char) + done = true + else -- handling of spacing etc has to be done elsewhere + current = current.next + end + else + current = current.next + end + end + return head, done + else + return head, false + end +end + +function initializers.common.formatters(tfmdata,value) + if initialize then initialize() end +end + +initializers.base.otf.formatters = initializers.common.formatters +initializers.node.otf.formatters = initializers.common.formatters + +methods.node.otf.formatters = processformatters +methods.base.otf.formatters = processformatters diff --git a/tex/context/base/typo-rep.mkiv b/tex/context/base/typo-rep.mkiv new file mode 100644 index 000000000..2f1d8b4cb --- /dev/null +++ b/tex/context/base/typo-rep.mkiv @@ -0,0 +1,53 @@ +%D \module +%D [ file=typo-rep, +%D version=2010.05.23, +%D title=\CONTEXT\ Typesetting Macros, +%D subtitle=Stripping, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright=\PRAGMA] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\writestatus{loading}{ConTeXt Typesetting Macros / Stripping} + +% experimental stripping + +%D For a while we had stripping built into the analyzer. Khaled +%D suggested to generalize this so I changed the code into a +%D manipulator there. +%D +%D \starttyping +%D \definefontfeature[default][default][mode=node,formatters=strip] +%D \stoptyping +%D +%D However, in \MKIV\ it makes more sense to also provide it as a more +%D general feature. Here we implement this as experiment. I might +%D cook up a few more variants in both variants. +%D +%D \starttyping +%D \setcharacterstripping[1] +%D \stoptyping + +\unprotect + +\registerctxluafile{typo-rep}{1.001} + +\definesystemattribute[stripping] \chardef\strippingattribute \dogetattributeid{stripping} + +\def\setcharacterstripping + {\ctxlua{nodes.stripping.enable()}% + \gdef\setcharacterstripping[##1]{\attribute\strippingattribute##1\relax}% + \setcharacterstripping} + +\def\resetcharacterstripping + {\attribute\strippingattribute\attributeunsetvalue} + +% maybe .. this might disappear, but is handy for testing + +\def\forcecharacterstripping % secret command + {\ctxlua{fonts.otf.features.register("formatters",true)}} + +\protect \endinput diff --git a/tex/generic/context/luatex-fonts-merged.lua b/tex/generic/context/luatex-fonts-merged.lua index c6a88f6b5..da81735ff 100644 --- a/tex/generic/context/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : luatex-fonts-merged.lua -- parent file : luatex-fonts.lua --- merge date : 05/23/10 15:03:42 +-- merge date : 05/24/10 13:05:12 do -- begin closure to overcome local limits and interference @@ -3329,6 +3329,8 @@ if tex.attribute[0] < 0 then end +-- this will be redone and split in a generic one and a context one + function nodes.process_characters(head) -- either next or not, but definitely no already processed list starttiming(nodes) @@ -5858,6 +5860,7 @@ local utf = unicode.utf8 local concat, getn, utfbyte = table.concat, table.getn, utf.byte local format, gmatch, gsub, find, match, lower, strip = string.format, string.gmatch, string.gsub, string.find, string.match, string.lower, string.strip local type, next, tonumber, tostring = type, next, tonumber, tostring +local abs = math.abs local lpegmatch = lpeg.match local trace_private = false trackers.register("otf.private", function(v) trace_private = v end) @@ -7203,10 +7206,12 @@ function otf.features.register(name,default) otf.features.default[name] = default end +-- for context this will become a task handler + function otf.set_features(tfmdata,features) local processes = { } if features and next(features) then - local lists = { + local lists = { -- why local fonts.triggers, fonts.processors, fonts.manipulators, @@ -7243,7 +7248,7 @@ function otf.set_features(tfmdata,features) end end end - local fm = fonts.methods[mode] + local fm = fonts.methods[mode] -- todo: zonder node/mode otf/... if fm then local fmotf = fm.otf if fmotf then @@ -7352,14 +7357,11 @@ function otf.copy_to_tfm(data,cache_id) -- we can save a copy when we reorder th local unicodes = luatex.unicodes -- names to unicodes local indices = luatex.indices local characters, parameters, math_parameters, descriptions = { }, { }, { }, { } - local tfm = { - characters = characters, - parameters = parameters, - math_parameters = math_parameters, - descriptions = descriptions, - indices = indices, - unicodes = unicodes, - } + local designsize = metadata.designsize or metadata.design_size or 100 + if designsize == 0 then + designsize = 100 + end + local spaceunits = 500 -- indices maps from unicodes to indices for u, i in next, indices do characters[u] = { } -- we need this because for instance we add protruding info and loop over characters @@ -7412,65 +7414,49 @@ function otf.copy_to_tfm(data,cache_id) -- we can save a copy when we reorder th end end -- end math - local designsize = metadata.designsize or metadata.design_size or 100 - if designsize == 0 then - designsize = 100 - end - local spaceunits = 500 - -- we need a runtime lookup because of running from cdrom or zip, brrr (shouldn't we use the basename then?) - tfm.filename = fonts.tfm.checked_filename(luatex) - tfm.fontname = metadata.fontname - tfm.fullname = metadata.fullname or tfm.fontname - tfm.psname = tfm.fontname or tfm.fullname - tfm.name = tfm.filename or tfm.fullname or tfm.fontname - tfm.units = metadata.units_per_em or 1000 - tfm.encodingbytes = 2 - tfm.format = fonts.fontformat(tfm.filename,"opentype") - tfm.cidinfo = data.cidinfo - tfm.cidinfo.registry = tfm.cidinfo.registry or "" - tfm.type = "real" - tfm.direction = 0 - tfm.boundarychar_label = 0 - tfm.boundarychar = 65536 - tfm.designsize = (designsize/10)*65536 - tfm.spacer = "500 units" - local endash, emdash = 0x20, 0x2014 -- unicodes['space'], unicodes['emdash'] + local endash, emdash, space = 0x20, 0x2014, "space" -- unicodes['space'], unicodes['emdash'] if metadata.isfixedpitch then if descriptions[endash] then - spaceunits, tfm.spacer = descriptions[endash].width, "space" + spaceunits, spacer = descriptions[endash].width, "space" end if not spaceunits and descriptions[emdash] then - spaceunits, tfm.spacer = descriptions[emdash].width, "emdash" + spaceunits, spacer = descriptions[emdash].width, "emdash" end if not spaceunits and metadata.charwidth then - spaceunits, tfm.spacer = metadata.charwidth, "charwidth" + spaceunits, spacer = metadata.charwidth, "charwidth" end else if descriptions[endash] then - spaceunits, tfm.spacer = descriptions[endash].width, "space" + spaceunits, spacer = descriptions[endash].width, "space" end if not spaceunits and descriptions[emdash] then - spaceunits, tfm.spacer = descriptions[emdash].width/2, "emdash/2" + spaceunits, spacer = descriptions[emdash].width/2, "emdash/2" end if not spaceunits and metadata.charwidth then - spaceunits, tfm.spacer = metadata.charwidth, "charwidth" + spaceunits, spacer = metadata.charwidth, "charwidth" end end spaceunits = tonumber(spaceunits) or tfm.units/2 -- 500 -- brrr + -- we need a runtime lookup because of running from cdrom or zip, brrr (shouldn't we use the basename then?) + local filename = fonts.tfm.checked_filename(luatex) + local fontname = metadata.fontname + local fullname = metadata.fullname or fontname + local cidinfo = data.cidinfo + local units = metadata.units_per_em or 1000 + -- + cidinfo.registry = cidinfo and cidinfo.registry or "" -- weird here, fix upstream + -- parameters.slant = 0 - parameters.space = spaceunits -- 3.333 (cmr10) - parameters.space_stretch = tfm.units/2 -- 500 -- 1.666 (cmr10) - parameters.space_shrink = 1*tfm.units/3 -- 333 -- 1.111 (cmr10) - parameters.x_height = 2*tfm.units/5 -- 400 - parameters.quad = tfm.units -- 1000 - if spaceunits < 2*tfm.units/5 then + parameters.space = spaceunits -- 3.333 (cmr10) + parameters.space_stretch = units/2 -- 500 -- 1.666 (cmr10) + parameters.space_shrink = 1*units/3 -- 333 -- 1.111 (cmr10) + parameters.x_height = 2*units/5 -- 400 + parameters.quad = units -- 1000 + if spaceunits < 2*units/5 then -- todo: warning end local italicangle = metadata.italicangle - tfm.ascender = math.abs(metadata.ascent or 0) - tfm.descender = math.abs(metadata.descent or 0) if italicangle then -- maybe also in afm _ - tfm.italicangle = italicangle parameters.slant = parameters.slant - math.round(math.tan(italicangle*math.pi/180)) end if metadata.isfixedpitch then @@ -7492,8 +7478,34 @@ function otf.copy_to_tfm(data,cache_id) -- we can save a copy when we reorder th end end end - -- [6] - return tfm + -- + return { + characters = characters, + parameters = parameters, + math_parameters = math_parameters, + descriptions = descriptions, + indices = indices, + unicodes = unicodes, + type = "real", + direction = 0, + boundarychar_label = 0, + boundarychar = 65536, + designsize = (designsize/10)*65536, + spacer = "500 units", + encodingbytes = 2, + filename = filename, + fontname = fontname, + fullname = fullname, + psname = fontname or fullname, + name = filename or fullname, + units = units, + format = fonts.fontformat(filename,"opentype"), + cidinfo = cidinfo, + ascender = abs(metadata.ascent or 0), + descender = abs(metadata.descent or 0), + spacer = spacer, + italicangle = italicangle, + } else return nil end @@ -10817,14 +10829,8 @@ local penalty = node.id('penalty') local set_attribute = node.set_attribute local has_attribute = node.has_attribute local traverse_id = node.traverse_id -local delete_node = nodes.delete -local replace_node = nodes.replace -local insert_node_after = node.insert_after -local insert_node_before = node.insert_before local traverse_node_list = node.traverse -local new_glue_node = nodes.glue - local fontdata = fonts.ids local state = attributes.private('state') @@ -10838,7 +10844,6 @@ local a_to_language = otf.a_to_language -- font related value, but then we also need dynamic features which is -- somewhat slower; and .. we need a chain of them - function fonts.initializers.node.otf.analyze(tfmdata,value,attr) if attr and attr > 0 then script, language = a_to_script[attr], a_to_language[attr] @@ -10977,8 +10982,6 @@ function fonts.analyzers.methods.nocolor(head,font,attr) return head, true end -otf.remove_joiners = false -- true -- for idris who want it as option - local function finish(first,last) if last then if first == last then @@ -11024,22 +11027,10 @@ function fonts.analyzers.methods.arab(head,font,attr) -- maybe make a special ve local tfmdata = fontdata[font] local marks = tfmdata.marks local first, last, current, done = nil, nil, head, false - local joiners, nonjoiners - local removejoiners = tfmdata.remove_joiners -- or otf.remove_joiners - if removejoiners then - joiners, nonjoiners = { }, { } - end while current do if current.id == glyph and current.subtype<256 and current.font == font and not has_attribute(current,state) then done = true local char = current.char - if removejoiners then - if char == zwj then - joiners[#joiners+1] = current - elseif char == zwnj then - nonjoiners[#nonjoiners+1] = current - end - end if marks[char] then set_attribute(current,state,5) -- mark if trace_analyzing then fcs(current,"font:mark") end @@ -11085,26 +11076,9 @@ function fonts.analyzers.methods.arab(head,font,attr) -- maybe make a special ve current = current.next end first, last = finish(first,last) - if removejoiners then - -- is never head - for i=1,#joiners do - delete_node(head,joiners[i]) - end - for i=1,#nonjoiners do - replace_node(head,nonjoiners[i],new_glue_node(0)) -- or maybe a kern - end - end return head, done end -table.insert(fonts.manipulators,"joiners") - -function fonts.initializers.node.otf.joiners(tfmdata,value) - if value == "strip" then - tfmdata.remove_joiners = true - end -end - end -- closure do -- begin closure to overcome local limits and interference @@ -12122,7 +12096,7 @@ fonts = fonts or { } -- general -fonts.otf.pack = false +fonts.otf.pack = false -- only makes sense in context fonts.tfm.resolve_vf = false -- no sure about this fonts.tfm.fontname_mode = "specification" -- somehow latex needs this @@ -12393,4 +12367,23 @@ function fonts.otf.char(n) end end +-- another one: + +fonts.strippables = table.tohash { + 0x000AD, 0x017B4, 0x017B5, 0x0200B, 0x0200C, 0x0200D, 0x0200E, 0x0200F, 0x0202A, 0x0202B, + 0x0202C, 0x0202D, 0x0202E, 0x02060, 0x02061, 0x02062, 0x02063, 0x0206A, 0x0206B, 0x0206C, + 0x0206D, 0x0206E, 0x0206F, 0x0FEFF, 0x1D173, 0x1D174, 0x1D175, 0x1D176, 0x1D177, 0x1D178, + 0x1D179, 0x1D17A, 0xE0001, 0xE0020, 0xE0021, 0xE0022, 0xE0023, 0xE0024, 0xE0025, 0xE0026, + 0xE0027, 0xE0028, 0xE0029, 0xE002A, 0xE002B, 0xE002C, 0xE002D, 0xE002E, 0xE002F, 0xE0030, + 0xE0031, 0xE0032, 0xE0033, 0xE0034, 0xE0035, 0xE0036, 0xE0037, 0xE0038, 0xE0039, 0xE003A, + 0xE003B, 0xE003C, 0xE003D, 0xE003E, 0xE003F, 0xE0040, 0xE0041, 0xE0042, 0xE0043, 0xE0044, + 0xE0045, 0xE0046, 0xE0047, 0xE0048, 0xE0049, 0xE004A, 0xE004B, 0xE004C, 0xE004D, 0xE004E, + 0xE004F, 0xE0050, 0xE0051, 0xE0052, 0xE0053, 0xE0054, 0xE0055, 0xE0056, 0xE0057, 0xE0058, + 0xE0059, 0xE005A, 0xE005B, 0xE005C, 0xE005D, 0xE005E, 0xE005F, 0xE0060, 0xE0061, 0xE0062, + 0xE0063, 0xE0064, 0xE0065, 0xE0066, 0xE0067, 0xE0068, 0xE0069, 0xE006A, 0xE006B, 0xE006C, + 0xE006D, 0xE006E, 0xE006F, 0xE0070, 0xE0071, 0xE0072, 0xE0073, 0xE0074, 0xE0075, 0xE0076, + 0xE0077, 0xE0078, 0xE0079, 0xE007A, 0xE007B, 0xE007C, 0xE007D, 0xE007E, 0xE007F, +} + + end -- closure |