diff options
Diffstat (limited to 'scripts/context/lua/mtx-fonts.lua')
-rw-r--r-- | scripts/context/lua/mtx-fonts.lua | 93 |
1 files changed, 18 insertions, 75 deletions
diff --git a/scripts/context/lua/mtx-fonts.lua b/scripts/context/lua/mtx-fonts.lua index 068d38a84..9b23f55c4 100644 --- a/scripts/context/lua/mtx-fonts.lua +++ b/scripts/context/lua/mtx-fonts.lua @@ -16,8 +16,7 @@ local lower = string.lower local concat = table.concat local write_nl = texio.write_nl -local otfversion = 2.826 -local otlversion = 3.029 +local otlversion = 3.103 local helpinfo = [[ <?xml version="1.0"?> @@ -25,13 +24,12 @@ local helpinfo = [[ <metadata> <entry name="name">mtx-fonts</entry> <entry name="detail">ConTeXt Font Database Management</entry> - <entry name="version">0.21</entry> + <entry name="version">1.00</entry> </metadata> <flags> <category name="basic"> <subcategory> - <flag name="save"><short>save open type font in raw table (ff format)</short></flag> - <flag name="convert"><short>save open type font in raw table (ctx format)</short></flag> + <flag name="convert"><short>save open type font in raw table</short></flag> <flag name="unpack"><short>save a tma file in a more readable format</short></flag> </subcategory> <subcategory> @@ -80,7 +78,6 @@ local helpinfo = [[ <example><command>mtxrun --script font --list --file --pattern=*somename*</command></example> </subcategory> <subcategory> - <example><command>mtxrun --script font --save texgyrepagella-regular.otf</command></example> <example><command>mtxrun --script font --convert texgyrepagella-regular.otf</command></example> <example><command>mtxrun --script font --convert --names texgyrepagella-regular.otf</command></example> </subcategory> @@ -108,14 +105,20 @@ local function loadmodule(filename) end end --- old loader code - -loadmodule("font-otp.lua") -- we need to unpack the font for analysis - --- new loader code +-- loader code loadmodule("char-def.lua") +loadmodule("font-ini.lua") +loadmodule("font-log.lua") +loadmodule("font-con.lua") +loadmodule("font-cft.lua") +loadmodule("font-enc.lua") +loadmodule("font-agl.lua") +loadmodule("font-cid.lua") +loadmodule("font-map.lua") +loadmodule("font-oti.lua") + loadmodule("font-otr.lua") loadmodule("font-cff.lua") loadmodule("font-ttf.lua") @@ -123,6 +126,7 @@ loadmodule("font-tmp.lua") loadmodule("font-dsp.lua") loadmodule("font-oup.lua") +loadmodule("font-otl.lua") loadmodule("font-onr.lua") -- extra code @@ -293,6 +297,7 @@ local function showfeatures(tag,specification) report("no features") end report() + collectgarbage("collect") end local function reloadbase(reload) @@ -345,6 +350,7 @@ local function list_matches(t,info) for k=1,#s do local v = s[k] showfeatures(v,t[v]) + collectgarbage("collect") -- in case we load a lot end else for k=1,#s do @@ -419,7 +425,7 @@ function scripts.fonts.list() end elseif pattern then --~ mtxrun --script font --list --pattern=*somename* - list_matches(fonts.names.list(string.topattern(pattern,true),reload,all),info) + list_matches(fonts.names.list(string.topattern(pattern,true),reload,all),info) elseif given then --~ mtxrun --script font --list somename list_matches(fonts.names.list(given,reload,all),info) @@ -432,18 +438,6 @@ function scripts.fonts.list() end -function scripts.fonts.justload() - local fullname = environment.files[1] - if fullname then - local result = fontloader.open(fullname) - if type(result) == "table" then - report("loading %s: %s","succeeded",fullname) - fontloader.close(result) - end - end - report("loading %s: %s","failed",fullname) -end - function scripts.fonts.unpack() local name = removesuffix(basename(givenfiles[1] or "")) if name and name ~= "" then @@ -456,8 +450,6 @@ function scripts.fonts.unpack() report("fontsave, saving data in %s",savename) if data.creator == "context mkiv" then fonts.handlers.otf.readers.unpack(data) - else - fonts.handlers.otf.unpackdata(data) end io.savedata(savename,table.serialize(data,true)) else @@ -466,51 +458,6 @@ function scripts.fonts.unpack() end end -function scripts.fonts.save() - local name = givenfiles[1] or "" - local sub = givenfiles[2] or "" - local function save(savename,fontblob) - if fontblob then - if fontblob.validation_state and table.contains(fontblob.validation_state,"bad_ps_fontname") then - report("ignoring bad fontname for %a",name) - savename = nameonly(name) .. "-bad-ps-name" - end - savename = addsuffix(lower(savename),"lua") - report("fontsave, saving data in %a",savename) - table.tofile(savename,fontloader.to_table(fontblob),"return") - fontloader.close(fontblob) - end - end - if name and name ~= "" then - local filename = resolvers.findfile(name) -- maybe also search for opentype - if filename and filename ~= "" then - local suffix = lower(suffix(filename)) - if suffix == 'ttf' or suffix == 'otf' or suffix == 'ttc' or suffix == "dfont" then - local fontinfo = fontloader.info(filename) - if fontinfo then - report("font: %a located as %a",name,filename) - if #fontinfo > 0 then - for k=1,#fontinfo do - local v = fontinfo[k] - save(v.fontname,fontloader.open(filename,v.fullname)) - end - else - save(fontinfo.fullname,fontloader.open(filename)) - end - else - report("font: %a cannot be read",filename) - end - else - report("font: %a not saved",filename) - end - else - report("font: %a not found",name) - end - else - report("font: no name given") - end -end - function scripts.fonts.convert() -- new save local name = givenfiles[1] or "" local sub = givenfiles[2] or "" @@ -550,12 +497,8 @@ if getargument("list") then scripts.fonts.list() elseif getargument("reload") then scripts.fonts.reload() -elseif getargument("save") then - scripts.fonts.save() elseif getargument("convert") then scripts.fonts.convert() -elseif getargument("justload") then - scripts.fonts.justload() elseif getargument("unpack") then scripts.fonts.unpack() elseif getargument("statistics") then |