diff options
-rw-r--r-- | otfl-fonts-merged.lua | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/otfl-fonts-merged.lua b/otfl-fonts-merged.lua index 926037f..8633b8e 100644 --- a/otfl-fonts-merged.lua +++ b/otfl-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : luatex-fonts-merged.lua -- parent file : luatex-fonts.lua --- merge date : 04/14/13 16:51:15 +-- merge date : 04/16/13 18:49:45 do -- begin closure to overcome local limits and interference @@ -2141,7 +2141,7 @@ elseif not lfs.isfile then end end local insert,concat=table.insert,table.concat -local match=string.match +local match,find=string.match,string.find local lpegmatch=lpeg.match local getcurrentdir,attributes=lfs.currentdir,lfs.attributes local checkedsplit=string.checkedsplit @@ -2355,11 +2355,11 @@ local anchors=fwslash+drivespec local untouched=periods+(1-period)^1*P(-1) local splitstarter=(Cs(drivespec*(bwslash/"/"+fwslash)^0)+Cc(false))*Ct(lpeg.splitat(S("/\\")^1)) local absolute=fwslash -function file.collapsepath(str,anchor) +function file.collapsepath(str,anchor) if not str then return end - if anchor and not lpegmatch(anchors,str) then + if anchor==true and not lpegmatch(anchors,str) then str=getcurrentdir().."/"..str end if str=="" or str=="." then @@ -2399,7 +2399,12 @@ function file.collapsepath(str,anchor) elseif lpegmatch(absolute,str) then return "/"..concat(newelements,'/') else - return concat(newelements,'/') + newelements=concat(newelements,'/') + if anchor=="." and find(str,"^%./") then + return "./"..newelements + else + return newelements + end end end local validchars=R("az","09","AZ","--","..") @@ -3399,10 +3404,10 @@ if tex.attribute[0]~=0 then texio.write_nl("log","!") tex.attribute[0]=0 end -attributes={} +attributes=attributes or {} attributes.unsetvalue=-0x7FFFFFFF local numbers,last={},127 -function attributes.private(name) +attributes.private=attributes.private or function(name) local number=numbers[name] if not number then if last<255 then @@ -6148,19 +6153,7 @@ local function t_hashed(t,cache) return nil end end ---local s_hashed=t_hashed -local function s_hashed(t,cache) - if t then - local ht = { } - local tf = t[1] - for i=1,#tf do - ht[i] = { [tf[i]] = true } - end - return ht - else - return nil - end -end +local s_hashed=t_hashed local function r_uncover(splitter,cache,cover,replacements) if cover=="" then return nil |