diff options
author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2015-07-07 22:15:04 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2015-07-07 22:15:04 +0200 |
commit | dc7195d9c40c947f61bd001635de6e8b2cb99167 (patch) | |
tree | ee8b6a7478c141429ad106b7d4283f89e8f00178 /scripts/context/lua/mtx-fonts.lua | |
parent | 865735f6a380cd9a5b5eb1b64d4c82b78e7c0ed1 (diff) | |
download | context-dc7195d9c40c947f61bd001635de6e8b2cb99167.tar.gz |
2015-07-07 21:45:00
Diffstat (limited to 'scripts/context/lua/mtx-fonts.lua')
-rw-r--r-- | scripts/context/lua/mtx-fonts.lua | 83 |
1 files changed, 70 insertions, 13 deletions
diff --git a/scripts/context/lua/mtx-fonts.lua b/scripts/context/lua/mtx-fonts.lua index dde145e50..db2f06120 100644 --- a/scripts/context/lua/mtx-fonts.lua +++ b/scripts/context/lua/mtx-fonts.lua @@ -23,7 +23,8 @@ local helpinfo = [[ <flags> <category name="basic"> <subcategory> - <flag name="save"><short>save open type font in raw table</short></flag> + <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="unpack"><short>save a tma file in a more readable format</short></flag> </subcategory> <subcategory> @@ -42,6 +43,7 @@ local helpinfo = [[ <flag name="info"><short>give more details</short></flag> <flag name="trackers" value="list"><short>enable trackers</short></flag> <flag name="statistics"><short>some info about the database</short></flag> + <flag name="names"><short>uise name instead of unicodes</short></flag> </subcategory> </category> </flags> @@ -69,6 +71,11 @@ local helpinfo = [[ <example><command>mtxrun --script font --list --file --all somename</command></example> <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> </category> </examples> </application> @@ -86,17 +93,31 @@ local report = application.report if not fontloader then fontloader = fontforge end -dofile(resolvers.findfile("font-otr.lua","tex")) -dofile(resolvers.findfile("font-cff.lua","tex")) -dofile(resolvers.findfile("font-ttf.lua","tex")) -dofile(resolvers.findfile("font-tmp.lua","tex")) -------(resolvers.findfile("font-dsp.lua","tex")) -------(resolvers.findfile("font-off.lua","tex")) +local function loadmodule(filename) + local fullname = resolvers.findfile(filename,"tex") + if fullname and fullname ~= "" then + dofile(fullname) + end +end + +-- old loader code + +loadmodule("font-otp.lua") -- we need to unpack the font for analysis + +-- new loader code + +loadmodule("font-otr.lua") +loadmodule("font-cff.lua") +loadmodule("font-ttf.lua") +loadmodule("font-tmp.lua") +loadmodule("font-dsp.lua") -- not yet in distribution +loadmodule("font-oup.lua") -- not yet in distribution -dofile(resolvers.findfile("font-otp.lua","tex")) -- we need to unpack the font for analysis -dofile(resolvers.findfile("font-syn.lua","tex")) -dofile(resolvers.findfile("font-trt.lua","tex")) -dofile(resolvers.findfile("font-mis.lua","tex")) +-- extra code + +loadmodule("font-syn.lua") +loadmodule("font-trt.lua") +loadmodule("font-mis.lua") scripts = scripts or { } scripts.fonts = scripts.fonts or { } @@ -403,13 +424,17 @@ end function scripts.fonts.unpack() local name = file.removesuffix(file.basename(givenfiles[1] or "")) if name and name ~= "" then - local cache = containers.define("fonts", "otf", otfversion, true) + local cache = containers.define("fonts", getargument("cache") or "otf", otfversion, true) -- cache is temp local cleanname = containers.cleanname(name) local data = containers.read(cache,cleanname) if data then local savename = file.addsuffix(cleanname .. "-unpacked","tma") report("fontsave, saving data in %s",savename) - fonts.handlers.otf.enhancers.unpack(data) + if data.creator == "context mkiv" then + fonts.handlers.otf.readers.unpack(data) + else + fonts.handlers.otf.enhancers.unpack(data) + end io.savedata(savename,table.serialize(data,true)) else report("unknown file %a",name) @@ -462,6 +487,36 @@ function scripts.fonts.save() end end +function scripts.fonts.convert() -- new save + local name = givenfiles[1] or "" + local sub = givenfiles[2] or "" + if name and name ~= "" then + local filename = resolvers.findfile(name) -- maybe also search for opentype + if filename and filename ~= "" then + local suffix = string.lower(file.suffix(filename)) + if suffix == 'ttf' or suffix == 'otf' or suffix == 'ttc' then + local data = fonts.handlers.otf.readers.loadfont(filename,sub) + if data then + fonts.handlers.otf.readers.compact(data) + fonts.handlers.otf.readers.rehash(data,getargument("names") and "names" or "unicodes") + local savename = file.replacesuffix(string.lower(data.metadata.fullname or filename),"lua") + table.save(savename,data) + report("font: %a saved as %a",filename,savename) + else + report("font: %a not loaded",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 + + if getargument("names") then setargument("reload",true) setargument("simple",true) @@ -473,6 +528,8 @@ 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 |