From 28ca2f4e9846c23692b1a88f3bb941a5b84ce95f Mon Sep 17 00:00:00 2001 From: Marius Date: Wed, 18 Sep 2013 02:20:26 +0300 Subject: beta 2013.09.18 01:14 --- doc/context/scripts/mkiv/mtx-tools.html | 1 + doc/context/scripts/mkiv/mtx-tools.man | 3 + doc/context/scripts/mkiv/mtx-tools.xml | 1 + scripts/context/lua/mtx-tools.lua | 1 + scripts/context/ruby/base/pdf.rb | 10 +- tex/context/base/cont-new.mkiv | 2 +- tex/context/base/context-version.pdf | Bin 4113 -> 4106 bytes tex/context/base/context.mkiv | 2 +- tex/context/base/font-sty.mkvi | 1 - tex/context/base/math-fbk.lua | 40 ++-- tex/context/base/page-one.mkiv | 2 +- tex/context/base/s-abr-04.tex | 24 +++ tex/context/base/status-files.pdf | Bin 24708 -> 24733 bytes tex/context/base/status-lua.log | 2 +- tex/context/base/strc-flt.mkvi | 3 + tex/context/base/typo-cap.lua | 237 +++++++++++++-------- tex/context/base/typo-cap.mkiv | 14 +- tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 18 files changed, 229 insertions(+), 116 deletions(-) create mode 100644 tex/context/base/s-abr-04.tex diff --git a/doc/context/scripts/mkiv/mtx-tools.html b/doc/context/scripts/mkiv/mtx-tools.html index cbb5dcd94..ae3933f24 100644 --- a/doc/context/scripts/mkiv/mtx-tools.html +++ b/doc/context/scripts/mkiv/mtx-tools.html @@ -50,6 +50,7 @@ --recurserecurse into subdirecories --stripnametake pathpart of given pattern --longnameset name attributes to full path name + --downcaselowercase names --patternglob pattern (default: *) --recurserecurse into subdirecories diff --git a/doc/context/scripts/mkiv/mtx-tools.man b/doc/context/scripts/mkiv/mtx-tools.man index f56b27bde..2276ad648 100644 --- a/doc/context/scripts/mkiv/mtx-tools.man +++ b/doc/context/scripts/mkiv/mtx-tools.man @@ -41,6 +41,9 @@ take pathpart of given pattern .B --longname set name attributes to full path name .TP +.B --downcase +lowercase names +.TP .B --pattern glob pattern (default: *) .TP diff --git a/doc/context/scripts/mkiv/mtx-tools.xml b/doc/context/scripts/mkiv/mtx-tools.xml index a2ce84d5b..ec699a6b2 100644 --- a/doc/context/scripts/mkiv/mtx-tools.xml +++ b/doc/context/scripts/mkiv/mtx-tools.xml @@ -20,6 +20,7 @@ recurse into subdirecories take pathpart of given pattern set name attributes to full path name + lowercase names glob pattern (default: *) diff --git a/scripts/context/lua/mtx-tools.lua b/scripts/context/lua/mtx-tools.lua index 19b7458a1..a38e9d7e6 100644 --- a/scripts/context/lua/mtx-tools.lua +++ b/scripts/context/lua/mtx-tools.lua @@ -31,6 +31,7 @@ local helpinfo = [[ recurse into subdirecories take pathpart of given pattern set name attributes to full path name + lowercase names glob pattern (default: *) diff --git a/scripts/context/ruby/base/pdf.rb b/scripts/context/ruby/base/pdf.rb index 5aec06fc5..6be0d3f98 100644 --- a/scripts/context/ruby/base/pdf.rb +++ b/scripts/context/ruby/base/pdf.rb @@ -5,16 +5,24 @@ module PDFview @closecalls = Hash.new @allcalls = Hash.new - @method = 'default' # 'xpdf' + # acrobat no longer is a valid default as (1) it keeps crashing with pdfopen due to a dual acrobat/reader install (a side effect + # of the api changing every version, and (2) because there are all these anyoing popups with respect to signed, review, online + # this and that stuff ... hardly useable as fast previewer, and (3) sumatra is faster and nicer and doesn't block (okay, we have to + # get rid of this horrible yellow bg-coloring buts that is doable + + @method = 'sumatra' # 'default' # 'xpdf' @opencalls['default'] = "pdfopen --file" # "pdfopen --back --file" @opencalls['xpdf'] = "xpdfopen" + @opencalls['sumatra'] = 'start "test" sumatrapdf.exe -reuse-instance -bg-color 0xCCCCCC' @closecalls['default'] = "pdfclose --file" @closecalls['xpdf'] = nil + @closecalls['sumatra'] = nil @allcalls['default'] = "pdfclose --all" @allcalls['xpdf'] = nil + @allcalls['sumatra'] = nil def PDFview.setmethod(method) @method = method diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index 2aad1ba19..fbba84639 100644 --- a/tex/context/base/cont-new.mkiv +++ b/tex/context/base/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2013.09.17 16:03} +\newcontextversion{2013.09.18 01:14} %D This file is loaded at runtime, thereby providing an excellent place for %D hacks, patches, extensions and new features. diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf index d39af02ee..9dd6a9c43 100644 Binary files a/tex/context/base/context-version.pdf and b/tex/context/base/context-version.pdf differ diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index d8caaaf72..c998bbebc 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -25,7 +25,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2013.09.17 16:03} +\edef\contextversion{2013.09.18 01:14} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/font-sty.mkvi b/tex/context/base/font-sty.mkvi index 3caa94488..d9781f407 100644 --- a/tex/context/base/font-sty.mkvi +++ b/tex/context/base/font-sty.mkvi @@ -404,5 +404,4 @@ \let\dostopattributes\endgroup - \protect \endinput diff --git a/tex/context/base/math-fbk.lua b/tex/context/base/math-fbk.lua index ce31a9982..b364d1208 100644 --- a/tex/context/base/math-fbk.lua +++ b/tex/context/base/math-fbk.lua @@ -467,33 +467,39 @@ virtualcharacters[0xFE303] = function(data) return smashed(data,0x0303,0xFE303) -- another crazy hack .. doesn't work as we define scrscr first .. we now have smaller -- primes so we have smaller primes for the moment, big ones will become an option -local function smashed(data,unicode) +local function smashed(data,unicode,optional) local oldchar = data.characters[unicode] - local height = 1.2 * data.target.parameters.xheight - local newchar = { - commands = { - { "down", oldchar.height - height }, - { "char", unicode }, - }, - height = height, - width = oldchar.width, - } - return newchar + if oldchar then + local height = 1.2 * data.target.parameters.xheight + local newchar = { + commands = { + { "down", oldchar.height - height }, + { "char", unicode }, + }, + height = height, + width = oldchar.width, + } + return newchar + elseif not optional then + report_fallbacks("missing %U prime in font %a",unicode,data.target.properties.fullname) + end end addextra(0xFE932, { description="SMASHED PRIME 0x02032", unicodeslot=0xFE932 } ) addextra(0xFE933, { description="SMASHED PRIME 0x02033", unicodeslot=0xFE933 } ) addextra(0xFE934, { description="SMASHED PRIME 0x02034", unicodeslot=0xFE934 } ) -addextra(0xFE935, { description="SMASHED PRIME 0x02035", unicodeslot=0xFE935 } ) -addextra(0xFE936, { description="SMASHED PRIME 0x02036", unicodeslot=0xFE936 } ) -addextra(0xFE937, { description="SMASHED PRIME 0x02037", unicodeslot=0xFE937 } ) addextra(0xFE957, { description="SMASHED PRIME 0x02057", unicodeslot=0xFE957 } ) +addextra(0xFE935, { description="SMASHED BACKWARD PRIME 0x02035", unicodeslot=0xFE935 } ) +addextra(0xFE936, { description="SMASHED BACKWARD PRIME 0x02036", unicodeslot=0xFE936 } ) +addextra(0xFE937, { description="SMASHED BACKWARD PRIME 0x02037", unicodeslot=0xFE937 } ) + virtualcharacters[0xFE932] = function(data) return smashed(data,0x02032) end virtualcharacters[0xFE933] = function(data) return smashed(data,0x02033) end virtualcharacters[0xFE934] = function(data) return smashed(data,0x02034) end -virtualcharacters[0xFE935] = function(data) return smashed(data,0x02035) end -virtualcharacters[0xFE936] = function(data) return smashed(data,0x02036) end -virtualcharacters[0xFE937] = function(data) return smashed(data,0x02037) end virtualcharacters[0xFE957] = function(data) return smashed(data,0x02057) end +virtualcharacters[0xFE935] = function(data) return smashed(data,0x02035,true) end +virtualcharacters[0xFE936] = function(data) return smashed(data,0x02036,true) end +virtualcharacters[0xFE937] = function(data) return smashed(data,0x02037,true) end + diff --git a/tex/context/base/page-one.mkiv b/tex/context/base/page-one.mkiv index 6261938b6..941828688 100644 --- a/tex/context/base/page-one.mkiv +++ b/tex/context/base/page-one.mkiv @@ -1,4 +1,4 @@ -%D \module + %D \module %D [ file=page-one, %D version=2000.10.20, %D title=\CONTEXT\ Page Macros, diff --git a/tex/context/base/s-abr-04.tex b/tex/context/base/s-abr-04.tex new file mode 100644 index 000000000..23940b526 --- /dev/null +++ b/tex/context/base/s-abr-04.tex @@ -0,0 +1,24 @@ +%D \module +%D [ file=s-abr-04, +%D version=1996.01.01, +%D title=\CONTEXT\ Style File, +%D subtitle=General Abbreviations 2, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\usemodule[abr-01] + +\unprotect + +% \definealternativestyle [\v!mixed] [\font_style_pseudoMixedCapped] [\font_style_pseudoMixedCapped] + +\setupsorting[logo][\c!style=\font_style_pseudoMixedCapped] + +% \setupcapitals[\c!title=\v!no] + +\protect \endinput diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf index c08e4d130..30c35288f 100644 Binary files a/tex/context/base/status-files.pdf and b/tex/context/base/status-files.pdf differ diff --git a/tex/context/base/status-lua.log b/tex/context/base/status-lua.log index d7a106300..6790a5988 100644 --- a/tex/context/base/status-lua.log +++ b/tex/context/base/status-lua.log @@ -1,6 +1,6 @@ (cont-yes.mkiv -ConTeXt ver: 2013.09.17 16:03 MKIV beta fmt: 2013.9.17 int: english/english +ConTeXt ver: 2013.09.18 01:14 MKIV beta fmt: 2013.9.18 int: english/english system > 'cont-new.mkiv' loaded (cont-new.mkiv) diff --git a/tex/context/base/strc-flt.mkvi b/tex/context/base/strc-flt.mkvi index 8122b953e..065513db8 100644 --- a/tex/context/base/strc-flt.mkvi +++ b/tex/context/base/strc-flt.mkvi @@ -983,6 +983,8 @@ {\let\extrafloatlocation#rightpagelocation}% {\let\extrafloatlocation#leftpagelocation}} +\let\extrafloatlocation\empty + \installcorenamespace{extrafloataction} \setvalue{\??extrafloataction \v!inner}#1{\strc_floats_set_extra_action\v!left \v!right} @@ -1007,6 +1009,7 @@ \processcommacommand[\floatlocation]\strc_floats_check_extra_actions_step \ifx\extrafloatlocation\empty \else \edef\floatlocation{\extrafloatlocation,\floatlocation}% + \setfloatmethodvariables\floatlocation \fi}} \def\strc_floats_check_extra_actions_step#step% diff --git a/tex/context/base/typo-cap.lua b/tex/context/base/typo-cap.lua index 70a0e08e9..2988d5474 100644 --- a/tex/context/base/typo-cap.lua +++ b/tex/context/base/typo-cap.lua @@ -16,11 +16,9 @@ local report_casing = logs.reporter("typesetting","casing") local nodes, node = nodes, node -local traverse_id = nodes.traverse_id local copy_node = nodes.copy local end_of_math = nodes.end_of_math -local free_node = nodes.free -local remove_node = nodes.remove + local nodecodes = nodes.nodecodes local skipcodes = nodes.skipcodes @@ -28,6 +26,7 @@ local kerncodes = nodes.kerncodes local glyph_code = nodecodes.glyph local kern_code = nodecodes.kern +local disc_code = nodecodes.disc local math_code = nodecodes.math local kerning_code = kerncodes.kerning @@ -56,13 +55,38 @@ cases.actions = { } local actions = cases.actions local a_cases = attributes.private("case") --- we use char(0) as placeholder for the larger font, so we need to remove it --- before it can do further harm +local extract = bit32.extract +local run = 0 -- a trick to make neighbouring ranges work + +local function set(tag,font) + if run == 2^6 then + run = 1 + else + run = run + 1 + end + return font * 0x10000 + tag * 0x100 + run +end + +local function get(a) + local font = extract(a,16,12) -- 4000 + local tag = extract(a, 8, 8) -- 250 + local run = extract(a, 0, 8) -- 50 + return tag, font, run +end + +-- print(get(set( 1, 0))) +-- print(get(set( 1, 99))) +-- print(get(set( 2, 96))) +-- print(get(set( 30, 922))) +-- print(get(set(250,4000))) + +-- a previous implementation used char(0) as placeholder for the larger font, so we needed +-- to remove it before it can do further harm ... that was too tricky as we use char 0 for +-- other cases too -- --- we could do the whole glyph run here (till no more attributes match) but --- then we end up with more code .. maybe i will clean this up anyway as the --- lastfont hack is somewhat ugly .. on the other hand, we need to deal with --- cases like: +-- we could do the whole glyph run here (till no more attributes match) but then we end up +-- with more code .. maybe i will clean this up anyway as the lastfont hack is somewhat ugly +-- ... on the other hand, we need to deal with cases like: -- -- \WORD {far too \Word{many \WORD{more \word{pushed} in between} useless} words} @@ -71,34 +95,30 @@ local lccodes = characters.lccodes -- true false true == mixed -local function helper(head,start,attr,lastfont,codes,special,once,keepother) +local function helper(start,attr,lastfont,n,codes,special,once,keepother) local char = start.char - local dc = codes[char] + local dc = codes[char] if dc then local fnt = start.font - if special then - -- will become function - if char == 0 then - lastfont[attr] = fnt - head, start = remove_node(head,start,true) - return head, start and start.prev or head, true - elseif lastfont[attr] and start.prev.id ~= glyph_code then - fnt = lastfont[attr] - start.font = fnt - end - elseif char == 0 then - -- print("removing",char) - -- head, start = remove_node(head,start,true) - -- return head, start and getprev(start) or head, true - end if keepother and dc == char then - if lastfont[attr] then - start.font = lastfont[attr] - return head, start, true + local lfa = lastfont[n] + if lfa then + start.font = lfa + return start, true else - return head, start, false + return start, false end else + if special then + local lfa = lastfont[n] + if lfa then + local previd = start.prev.id + if previd ~= glyph_code and previd ~= disc_code then + fnt = lfa + setfield(start,"font",lfa) + end + end + end local ifc = fontchar[fnt] if type(dc) == "table" then local ok = true @@ -111,7 +131,8 @@ local function helper(head,start,attr,lastfont,codes,special,once,keepother) end if ok then -- todo: use generic injector - local prev, original = start, start + local prev = start + local original = start for i=1,#dc do local chr = dc[i] prev = start @@ -131,27 +152,27 @@ local function helper(head,start,attr,lastfont,codes,special,once,keepother) end end if once then - lastfont[attr] = nil + lastfont[n] = false end - return head, prev, true + return prev, true end if once then - lastfont[attr] = nil + lastfont[n] = false end - return head, start, false + return start, false elseif ifc[dc] then start.char = dc if once then - lastfont[attr] = nil + lastfont[n] = false end - return head, start, true + return start, true end end end if once then - lastfont[attr] = nil + lastfont[n] = false end - return head, start, false + return start, false end local registered, n = { }, 0 @@ -171,70 +192,86 @@ end cases.register = register -local function WORD(head,start,attr,lastfont) - lastfont[attr] = nil - return helper(head,start,attr,lastfont,uccodes) +local function WORD(start,attr,lastfont,n) + lastfont[n] = false + return helper(start,attr,lastfont,n,uccodes) +end + +local function word(start,attr,lastfont,n) + lastfont[n] = false + return helper(start,attr,lastfont,n,lccodes) end -local function word(head,start,attr,lastfont) - lastfont[attr] = nil - return helper(head,start,attr,lastfont,lccodes) +local function blockrest(start) + local n = start.next + while n do + local id = n.id + if id == glyph_code or id == disc_node and n[a_cases] == attr then + n[a_cases] = unsetvalue + else + -- break -- we can have nested mess + end + n = n.next + end end -local function Word(head,start,attr,lastfont) - lastfont[attr] = nil +local function Word(start,attr,lastfont,n) -- looks quite complex + lastfont[n] = false local prev = start.prev if prev and prev.id == kern_code and prev.subtype == kerning_code then prev = prev.prev end - if not prev or prev.id ~= glyph_code then + if not prev then + blockrest(start) + return helper(start,attr,lastfont,n,uccodes) + end + local previd = prev.id + if previd ~= glyph_code and previd ~= disc_code then -- only the first character is treated - for n in traverse_id(glyph_code,start.next) do - if n[a_cases] == attr then - n[a_cases] = unsetvalue - else - -- break -- we can have nested mess - end - end + blockrest(start) -- we could return the last in the range and save some scanning -- but why bother - return helper(head,start,attr,lastfont,uccodes) + return helper(start,attr,lastfont,n,uccodes) else - return head, start, false + return start, false end end -local function Words(head,start,attr,lastfont) - lastfont[attr] = nil +local function Words(start,attr,lastfont,n) + lastfont[n] = false local prev = start.prev if prev and prev.id == kern_code and prev.subtype == kerning_code then prev = prev.prev end - if not prev or prev.id ~= glyph_code then - return helper(head,start,attr,lastfont,uccodes) + if not prev then + return helper(start,attr,lastfont,n,uccodes) + end + local previd = prev.id + if previd ~= glyph_code and previd ~= disc_code then + return helper(start,attr,lastfont,n,uccodes) else - return head, start, false + return start, false end end -local function capital(head,start,attr,lastfont) -- 3 - return helper(head,start,attr,lastfont,uccodes,true,true) +local function capital(start,attr,lastfont,n) -- 3 + return helper(start,attr,lastfont,n,uccodes,true,true) end -local function Capital(head,start,attr,lastfont) -- 4 - return helper(head,start,attr,lastfont,uccodes,true,false) +local function Capital(start,attr,lastfont,n) -- 4 + return helper(start,attr,lastfont,n,uccodes,true,false) end -local function mixed(head,start,attr,lastfont) - return helper(head,start,attr,lastfont,uccodes,true,false,true) +local function mixed(start,attr,lastfont,n) + return helper(start,attr,lastfont,n,uccodes,false,false,true) end -local function none(head,start,attr,lastfont) - return head, start, false +local function none(start,attr,lastfont,n) + return start, false end -local function random(head,start,attr,lastfont) - lastfont[attr] = nil +local function random(start,attr,lastfont,n) + lastfont[n] = false local ch = start.char local tfm = fontchar[start.font] if lccodes[ch] then @@ -244,7 +281,7 @@ local function random(head,start,attr,lastfont) local uc = uccodes[d] if uc and tfm[uc] then -- this also intercepts tables start.char = uc - return head, start, true + return start, true end end end @@ -255,12 +292,12 @@ local function random(head,start,attr,lastfont) local lc = lccodes[d] if lc and tfm[lc] then -- this also intercepts tables start.char = lc - return head, start, true + return start, true end end end end - return head, start, false + return start, false end register(variables.WORD, WORD) -- 1 @@ -290,17 +327,48 @@ function cases.handler(head) -- not real fast but also not used on much data lastattr = attr end start[a_cases] = unsetvalue - local action = actions[attr%100] -- map back to low number + local n, id, m = get(attr) + if lastfont[n] == nil then + lastfont[n] = id + end + local action = actions[n] -- map back to low number if action then - head, start, ok = action(head,start,attr,lastfont) + start, ok = action(start,attr,lastfont,n) if ok then done = true end if trace_casing then - report_casing("case trigger %a, instance %a, result %a",attr%100,div(attr,100),ok) + report_casing("case trigger %a, instance %a, fontid %a, result %a",n,m,id,ok) end elseif trace_casing then - report_casing("unknown case trigger %a",attr) + report_casing("unknown case trigger %a",n) + end + end + elseif id == disc_code then + local attr = start[a_cases] + if attr and attr > 0 then + if attr ~= lastattr then + lastattr = attr + end + start[a_cases] = unsetvalue + local n, id, m = get(attr) + if lastfont[n] == nil then + lastfont[n] = id + end + local action = actions[n] -- map back to low number + if action then + local replace = start.replace + if replace then + action(replace,attr,lastfont,n) + end + local pre = start.pre + if pre then + action(pre,attr,lastfont,n) + end + local post = start.post + if post then + action(post,attr,lastfont,n) + end end end elseif id == math_code then @@ -313,9 +381,9 @@ function cases.handler(head) -- not real fast but also not used on much data return head, done end -local m, enabled = 0, false -- a trick to make neighbouring ranges work +local enabled = false -function cases.set(n) +function cases.set(n,id) if n == v_reset then n = unsetvalue else @@ -328,12 +396,7 @@ function cases.set(n) end enabled = true end - if m == 100 then - m = 1 - else - m = m + 1 - end - n = m * 100 + n + n = set(n,id) else n = unsetvalue end diff --git a/tex/context/base/typo-cap.mkiv b/tex/context/base/typo-cap.mkiv index 8f859a4e6..0910d78c1 100644 --- a/tex/context/base/typo-cap.mkiv +++ b/tex/context/base/typo-cap.mkiv @@ -75,7 +75,7 @@ % test \Word{test TEST \TeX} test \unexpanded\def\setcharactercasing[#1]% - {\ctxcommand{setcharactercasing("#1")}} + {\ctxcommand{setcharactercasing("#1",\number\fontid\font)}} % todo: names casings @@ -166,7 +166,7 @@ \def\typo_capitals_set_fake#1% {\edef\currentcapitals{#1}% %\setcharactercasing[\currentcapitals]% - \ctxcommand{setcharactercasing("\currentcapitals")}% + \ctxcommand{setcharactercasing("\currentcapitals",\number\fontid\font)}% \signalcharacter % retain current style \usecapitalsstyleparameter\c!style} @@ -174,7 +174,7 @@ {\edef\currentcapitals{#1}% \sc %\setcharactercasing[\currentcapitals]} - \ctxcommand{setcharactercasing("\currentcapitals")}} + \ctxcommand{setcharactercasing("\currentcapitals",\number\fontid\font)}} \unexpanded\def\pseudosmallcapped{\groupedcommand{\typo_capitals_set_fake\v!WORD }\donothing} % all upper \unexpanded\def\pseudoSmallcapped{\groupedcommand{\typo_capitals_set_fake\v!capital}\donothing} % one upper + font @@ -266,15 +266,19 @@ % [MixedCaps] % [MixedCaps*default cp \the\exheight] +\definefontfeature + [mixeddefault] + [default] + [extend=1.2] + \definefont [MixedCaps] - [CurrentFont*default cp \the\exheight] + [CurrentFont*default,mixeddefault cp \the\exheight] \setupcapitals [\v!mixed] [\c!style=MixedCaps] - % \definestartstop is not yet in available at core-spa time % % \startrandomized \input tufte \stoprandomized diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 1c69e8b65..fbdd27929 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : luatex-fonts-merged.lua -- parent file : luatex-fonts.lua --- merge date : 09/17/13 16:03:54 +-- merge date : 09/18/13 01:14:45 do -- begin closure to overcome local limits and interference -- cgit v1.2.3