From e8dc7842e52c4509ce38115c521672198beafca3 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Wed, 5 Jun 2019 16:21:48 +0200 Subject: 2019-06-05 15:47:00 --- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkii/mult-fr.mkii | 1 + tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 2 +- tex/context/base/mkiv/driv-shp.lua | 10 +- tex/context/base/mkiv/font-imp-quality.lua | 9 +- tex/context/base/mkiv/font-osd.lua | 110 +++++++++++------ tex/context/base/mkiv/font-ott.lua | 85 +++++++++++-- tex/context/base/mkiv/l-pdfview.lua | 2 - tex/context/base/mkiv/lpdf-lmt.lua | 70 ++++------- tex/context/base/mkiv/status-files.pdf | Bin 26505 -> 26560 bytes tex/context/base/mkiv/status-lua.pdf | Bin 265692 -> 266548 bytes tex/context/base/mkiv/syst-aux.mkiv | 4 +- tex/context/base/mkiv/syst-ini.mkiv | 2 +- tex/context/base/mkiv/trac-log.lua | 2 +- tex/context/base/mkiv/util-sbx.lua | 8 +- tex/context/interface/mkii/keys-fr.xml | 1 + tex/context/interface/mkiv/i-context.pdf | Bin 865472 -> 865619 bytes tex/context/interface/mkiv/i-readme.pdf | Bin 61165 -> 61165 bytes tex/context/modules/mkiv/s-maps.mkiv | 4 +- tex/generic/context/luatex/luatex-fonts-merged.lua | 136 ++++++++++++++++++--- 22 files changed, 319 insertions(+), 133 deletions(-) (limited to 'tex') diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index ce041e206..605229e98 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2019.06.01 19:11} +\newcontextversion{2019.06.05 15:39} %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/mkii/context.mkii b/tex/context/base/mkii/context.mkii index eac363a55..b8d1ff737 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2019.06.01 19:11} +\edef\contextversion{2019.06.05 15:39} %D For those who want to use this: diff --git a/tex/context/base/mkii/mult-fr.mkii b/tex/context/base/mkii/mult-fr.mkii index 4208b1406..ef0bd047c 100644 --- a/tex/context/base/mkii/mult-fr.mkii +++ b/tex/context/base/mkii/mult-fr.mkii @@ -570,6 +570,7 @@ \setinterfacevariable{temporary}{temporaire} \setinterfacevariable{test}{test} \setinterfacevariable{text}{texte} +\setinterfacevariable{textnote}{textnote} \setinterfacevariable{three}{trois} \setinterfacevariable{thursday}{jeudi} \setinterfacevariable{tight}{tight} diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 590dbdf6b..4af95a2c0 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2019.06.01 19:11} +\newcontextversion{2019.06.05 15:39} %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/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index d0cf6ec89..5189d1246 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -45,7 +45,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2019.06.01 19:11} +\edef\contextversion{2019.06.05 15:39} \edef\contextkind {beta} %D Kind of special: diff --git a/tex/context/base/mkiv/driv-shp.lua b/tex/context/base/mkiv/driv-shp.lua index 26bb06b39..b9298176a 100644 --- a/tex/context/base/mkiv/driv-shp.lua +++ b/tex/context/base/mkiv/driv-shp.lua @@ -338,7 +338,9 @@ flush_character = function(current,font,char,factor,vfcommands,pos_h,pos_v,pos_r width, height, depth, factor = getwhd(current,true) naturalwidth = width if factor ~= 0 then - width = (1.0 + factor/1000000.0) * width + -- width = (1.0 + factor/1000000.0) * width + width = width + width * factor/1000000.0 + -- width = width + width * 0.000001 * factor end else width = data.width or 0 @@ -369,10 +371,10 @@ flush_character = function(current,font,char,factor,vfcommands,pos_h,pos_v,pos_r pos_v = pos_v + y end pushorientation(orientation,pos_h,pos_v) - flushcharacter(current,pos_h,pos_v,pos_r,font,char,data,factor,naturalwidth,f,e) + flushcharacter(current,pos_h,pos_v,pos_r,font,char,data,naturalwidth,factor,width,f,e) poporientation(orientation,pos_h,pos_v) else - flushcharacter(current,pos_h,pos_v,pos_r,font,char,data,factor,naturalwidth,f,e) + flushcharacter(current,pos_h,pos_v,pos_r,font,char,data,naturalwidth,factor,width,f,e) end end return width, height, depth @@ -1280,6 +1282,8 @@ function lpdf.convert(box,smode,objnum,specification) -- temp name objectnumber = objnum, } + lastfont = nil -- this forces a sync each page / object + if getid(box) == vlist_code then vlist_out(box) else diff --git a/tex/context/base/mkiv/font-imp-quality.lua b/tex/context/base/mkiv/font-imp-quality.lua index 5152d212f..b3ea73f02 100644 --- a/tex/context/base/mkiv/font-imp-quality.lua +++ b/tex/context/base/mkiv/font-imp-quality.lua @@ -520,13 +520,18 @@ implement { local function initialize(tfmdata,value) local properties = tfmdata.properties + local parameters = tfmdata.parameters if properties then value = tonumber(value) if value then if value < 0 then value = 0 - elseif value > 100 then - value = 100 + elseif value > 10 then + report_expansions("threshold for %a @ %p limited to 10 pct",properties.fontname,parameters.size) + value = 10 + end + if value > 5 then + report_expansions("threshold for %a @ %p exceeds 5 pct",properties.fontname,parameters.size) end end properties.threshold = value or nil -- nil enforces default diff --git a/tex/context/base/mkiv/font-osd.lua b/tex/context/base/mkiv/font-osd.lua index 3c30910ab..8530fc264 100644 --- a/tex/context/base/mkiv/font-osd.lua +++ b/tex/context/base/mkiv/font-osd.lua @@ -418,15 +418,6 @@ local basic_shaping_forms = { } local valid = { - -- akhn = true, -- malayalam - -- rphf = true, - -- pref = true, - -- half = true, - -- blwf = true, - -- pstf = true, - -- pres = true, -- malayalam - -- blws = true, -- malayalam - -- psts = true, -- malayalam abvs = true, akhn = true, blwf = true, @@ -619,43 +610,88 @@ local function initializedevanagi(tfmdata) end end -- - -- needs checking: this might be needed per instance ? + -- The following presets need checking (by Kai). Most of these scripts share a common + -- handling (some need less but that doesn't hurt). The question is: what to enable. -- - if script == "deva" or script == "knda" then - sharedfeatures["dv04"] = true -- dv04_remove_joiners - elseif script == "dev2" or script == "knd2" then - sharedfeatures["dv01"] = true -- dv01_reorder_matras - sharedfeatures["dv02"] = true -- dv02_reorder_reph - sharedfeatures["dv03"] = true -- dv03_reorder_pre_base_reordering_consonants - sharedfeatures["dv04"] = true -- dv04_remove_joiners - -- elseif script == "knda" then -- see deva, needs checking by Kai - -- elseif script == "knd2" then -- see dev2, needs checking by Kai + -- dv01_reorder_matras + -- dv02_reorder_reph + -- dv03_reorder_pre_base_reordering_consonants + -- dv04_remove_joiners + -- + if script == "deva" then + sharedfeatures["dv04"] = true + elseif script == "dev2" then + sharedfeatures["dv01"] = true + sharedfeatures["dv02"] = true + sharedfeatures["dv03"] = true + sharedfeatures["dv04"] = true + + elseif script == "knda" then + -- needs checking + sharedfeatures["dv04"] = true + elseif script == "knd2" then + -- needs checking + sharedfeatures["dv01"] = true + sharedfeatures["dv02"] = true + sharedfeatures["dv03"] = true + sharedfeatures["dv04"] = true + + elseif script == "beng" then + -- needs checking + sharedfeatures["dv04"] = true + elseif script == "bng2" then + -- needs checking + sharedfeatures["dv01"] = true + sharedfeatures["dv02"] = true + sharedfeatures["dv03"] = true + sharedfeatures["dv04"] = true + + elseif script == "gurj" then + -- needs checking + sharedfeatures["dv04"] = true + elseif script == "grj2" then + -- needs checking + sharedfeatures["dv01"] = true + sharedfeatures["dv02"] = true + sharedfeatures["dv03"] = true + sharedfeatures["dv04"] = true + + elseif script == "guru" then + -- needs checking + sharedfeatures["dv04"] = true + elseif script == "gur2" then + -- needs checking + sharedfeatures["dv01"] = true + sharedfeatures["dv02"] = true + sharedfeatures["dv03"] = true + sharedfeatures["dv04"] = true + + elseif script == "telu" then + -- needs checking + sharedfeatures["dv04"] = true + elseif script == "tel2" then + -- needs checking + sharedfeatures["dv01"] = true + sharedfeatures["dv02"] = true + sharedfeatures["dv03"] = true + sharedfeatures["dv04"] = true + elseif script == "mlym" then sharedfeatures["pstf"] = true elseif script == "mlm2" then sharedfeatures["pstf"] = true sharedfeatures["pref"] = true - sharedfeatures["dv03"] = true -- dv03_reorder_pre_base_reordering_consonants - gsubfeatures ["dv03"] = two_defaults -- reorder pre base reordering consonants + sharedfeatures["dv03"] = true + gsubfeatures ["dv03"] = two_defaults insert(sequences,insertindex,sequence_reorder_pre_base_reordering_consonants) - -- elseif script == "beng" then - -- elseif script == "bng2" then - -- elseif script == "gujr" then - -- elseif script == "gjr2" then - -- elseif script == "guru" then - -- elseif script == "gur2" then + elseif script == "taml" then - sharedfeatures["dv04"] = true -- dv04_remove_joiners -sharedfeatures["pstf"] = true + -- needs checking + sharedfeatures["dv04"] = true + sharedfeatures["pstf"] = true elseif script == "tml2" then --- sharedfeatures["pstf"] = true --- sharedfeatures["pref"] = true --- sharedfeatures["dv01"] = true -- dv01_reorder_matras --- sharedfeatures["dv02"] = true -- dv02_reorder_reph --- sharedfeatures["dv03"] = true -- dv03_reorder_pre_base_reordering_consonants --- sharedfeatures["dv04"] = true -- dv04_remove_joiners - -- elseif script == "telu" then - -- elseif script == "tel2" then + -- needs checking + else report("todo: enable the right features for script %a",script) end diff --git a/tex/context/base/mkiv/font-ott.lua b/tex/context/base/mkiv/font-ott.lua index 10420f6ee..c9e467f22 100644 --- a/tex/context/base/mkiv/font-ott.lua +++ b/tex/context/base/mkiv/font-ott.lua @@ -27,14 +27,19 @@ local statistics = otf.statistics or { } otf.statistics = statistics local scripts = allocate { + ["adlm"] = "adlam", + ["aghb"] = "caucasian albanian", + ["ahom"] = "ahom", ["arab"] = "arabic", ["armi"] = "imperial aramaic", ["armn"] = "armenian", ["avst"] = "avestan", ["bali"] = "balinese", ["bamu"] = "bamum", + ["bass"] = "bassa vah", ["batk"] = "batak", ["beng"] = "bengali", + ["bhks"] = "bhaiksuki", ["bng2"] = "bengali variant 2", ["bopo"] = "bopomofo", ["brah"] = "brahmi", @@ -50,23 +55,33 @@ local scripts = allocate { ["copt"] = "coptic", ["cprt"] = "cypriot syllabary", ["cyrl"] = "cyrillic", - ["deva"] = "devanagari", ["dev2"] = "devanagari variant 2", + ["deva"] = "devanagari", + ["dogr"] = "dogra", ["dsrt"] = "deseret", + ["dupl"] = "duployan", ["egyp"] = "egyptian heiroglyphs", + ["elba"] = "elbasan", ["ethi"] = "ethiopic", ["geor"] = "georgian", + ["gjr2"] = "gujarati variant 2", ["glag"] = "glagolitic", + ["gong"] = "gunjala gondi", + ["gonm"] = "masaram gondi", ["goth"] = "gothic", + ["gran"] = "grantha", ["grek"] = "greek", ["gujr"] = "gujarati", - ["gjr2"] = "gujarati variant 2", - ["guru"] = "gurmukhi", ["gur2"] = "gurmukhi variant 2", + ["guru"] = "gurmukhi", ["hang"] = "hangul", ["hani"] = "cjk ideographic", ["hano"] = "hanunoo", + ["hatr"] = "hatran", ["hebr"] = "hebrew", + ["hluw"] = "anatolian hieroglyphs", + ["hmng"] = "pahawh hmong", + ["hung"] = "old hungarian", ["ital"] = "old italic", ["jamo"] = "hangul jamo", ["java"] = "javanese", @@ -74,49 +89,77 @@ local scripts = allocate { ["kana"] = "hiragana and katakana", ["khar"] = "kharosthi", ["khmr"] = "khmer", - ["knda"] = "kannada", + ["khoj"] = "khojki", ["knd2"] = "kannada variant 2", + ["knda"] = "kannada", ["kthi"] = "kaithi", ["lana"] = "tai tham", ["lao" ] = "lao", ["latn"] = "latin", ["lepc"] = "lepcha", ["limb"] = "limbu", + ["lina"] = "linear a", ["linb"] = "linear b", ["lisu"] = "lisu", ["lyci"] = "lycian", ["lydi"] = "lydian", + ["mahj"] = "mahajani", + ["maka"] = "makasar", ["mand"] = "mandaic and mandaean", + ["mani"] = "manichaean", + ["marc"] = "marchen", ["math"] = "mathematical alphanumeric symbols", + ["medf"] = "medefaidrin", + ["mend"] = "mende kikakui", ["merc"] = "meroitic cursive", ["mero"] = "meroitic hieroglyphs", - ["mlym"] = "malayalam", ["mlm2"] = "malayalam variant 2", + ["mlym"] = "malayalam", + ["modi"] = "modi", ["mong"] = "mongolian", + ["mroo"] = "mro", ["mtei"] = "meitei Mayek", + ["mult"] = "multani", ["musc"] = "musical symbols", ["mym2"] = "myanmar variant 2", ["mymr"] = "myanmar", + ["narb"] = "old north arabian", + ["nbat"] = "nabataean", + ["newa"] = "newa", ["nko" ] = 'n"ko', + ["nshu"] = "nüshu", ["ogam"] = "ogham", ["olck"] = "ol chiki", ["orkh"] = "old turkic and orkhon runic", - ["orya"] = "oriya", ["ory2"] = "odia variant 2", + ["orya"] = "oriya", + ["osge"] = "osage", ["osma"] = "osmanya", + ["palm"] = "palmyrene", + ["pauc"] = "pau cin hau", + ["perm"] = "old permic", ["phag"] = "phags-pa", ["phli"] = "inscriptional pahlavi", + ["phlp"] = "psalter pahlavi", ["phnx"] = "phoenician", + ["plrd"] = "miao", ["prti"] = "inscriptional parthian", ["rjng"] = "rejang", + ["rohg"] = "hanifi rohingya", ["runr"] = "runic", ["samr"] = "samaritan", ["sarb"] = "old south arabian", ["saur"] = "saurashtra", + ["sgnw"] = "sign writing", ["shaw"] = "shavian", ["shrd"] = "sharada", + ["sidd"] = "siddham", + ["sind"] = "khudawadi", ["sinh"] = "sinhala", + ["sogd"] = "sogdian", + ["sogo"] = "old sogdian", ["sora"] = "sora sompeng", + ["soyo"] = "soyombo", ["sund"] = "sundanese", ["sylo"] = "syloti nagri", ["syrc"] = "syriac", @@ -125,20 +168,24 @@ local scripts = allocate { ["tale"] = "tai le", ["talu"] = "tai lu", ["taml"] = "tamil", + ["tang"] = "tangut", ["tavt"] = "tai viet", - ["telu"] = "telugu", ["tel2"] = "telugu variant 2", + ["telu"] = "telugu", ["tfng"] = "tifinagh", ["tglg"] = "tagalog", ["thaa"] = "thaana", ["thai"] = "thai", ["tibt"] = "tibetan", + ["tirh"] = "tirhuta", ["tml2"] = "tamil variant 2", ["ugar"] = "ugaritic cuneiform", ["vai" ] = "vai", + ["wara"] = "warang citi", ["xpeo"] = "old persian cuneiform", ["xsux"] = "sumero-akkadian cuneiform", ["yi" ] = "yi", + ["zanb"] = "zanabazar square", } local languages = allocate { @@ -208,12 +255,15 @@ local languages = allocate { ["brm" ] = "burmese", ["brx" ] = "bodo", ["bsh" ] = "bashkir", + ["bsk" ] = "burushaski", ["bti" ] = "beti", ["bts" ] = "batak simalungun", ["bug" ] = "bugis", + ["byv" ] = "medumba", ["cak" ] = "kaqchikel", ["cat" ] = "catalan", ["cbk" ] = "zamboanga chavacano", + ["cchn"] = "chinantec", ["ceb" ] = "cebuano", ["cgg" ] = "chiga", ["cha" ] = "chamorro", @@ -228,6 +278,8 @@ local languages = allocate { ["chr" ] = "cherokee", ["chu" ] = "chuvash", ["chy" ] = "cheyenne", + ["cja" ] = "western cham", + ["cjm" ] = "eastern cham", ["cmr" ] = "comorian", ["cop" ] = "coptic", ["cor" ] = "cornish", @@ -283,6 +335,7 @@ local languages = allocate { ["fin" ] = "finnish", ["fji" ] = "fijian", ["fle" ] = "dutch (flemish)", + ["fmp" ] = "fe’fe’", ["fne" ] = "forest nenets", ["fon" ] = "fon", ["fos" ] = "faroese", @@ -361,6 +414,7 @@ local languages = allocate { ["jan" ] = "japanese", ["jav" ] = "javanese", ["jbo" ] = "lojban", + ["jct" ] = "krymchak", ["jii" ] = "yiddish", ["jud" ] = "ladino", ["jul" ] = "jula", @@ -397,6 +451,7 @@ local languages = allocate { ["kmn" ] = "kumaoni", ["kmo" ] = "komo", ["kms" ] = "komso", + ["kmz" ] = "khorasani turkic", ["knr" ] = "kanuri", ["kod" ] = "kodagu", ["koh" ] = "korean old hangul", @@ -473,6 +528,7 @@ local languages = allocate { ["mar" ] = "marathi", ["maw" ] = "marwari", ["mbn" ] = "mbundu", + ["mbo" ] = "mbo", ["mch" ] = "manchu", ["mcr" ] = "moose cree", ["mde" ] = "mende", @@ -489,6 +545,7 @@ local languages = allocate { ["mle" ] = "male", ["mlg" ] = "malagasy", ["mln" ] = "malinke", + ["mlr" ] = "malayalam reformed", ["mly" ] = "malay", ["mnd" ] = "mandinka", ["mng" ] = "mongolian", @@ -542,6 +599,7 @@ local languages = allocate { ["nto" ] = "esperanto", ["nym" ] = "nyamwezi", ["nyn" ] = "norwegian nynorsk", + ["nza" ] = "mbembe tigon", ["oci" ] = "occitan", ["ocr" ] = "oji-cree", ["ojb" ] = "ojibway", @@ -605,6 +663,7 @@ local languages = allocate { ["say" ] = "sayisi", ["scn" ] = "sicilian", ["sco" ] = "scots", + ["scs" ] = "north slavey", ["sek" ] = "sekota", ["sel" ] = "selkup", ["sga" ] = "old irish", @@ -649,6 +708,9 @@ local languages = allocate { ["sxu" ] = "upper saxon", ["syl" ] = "sylheti", ["syr" ] = "syriac", + ["syre"] = "estrangela syriac", + ["syrj"] = "western syriac", + ["syrn"] = "eastern syriac", ["szl" ] = "silesian", ["tab" ] = "tabasaran", ["taj" ] = "tajiki", @@ -680,6 +742,7 @@ local languages = allocate { ["tsj" ] = "tshangla", ["tua" ] = "turoyo aramaic", ["tul" ] = "tulu", + ["tum" ] = "tulu", ["tuv" ] = "tuvin", ["tvl" ] = "tuvalu", ["twi" ] = "twi", @@ -705,6 +768,7 @@ local languages = allocate { ["wel" ] = "welsh", ["wlf" ] = "wolof", ["wln" ] = "walloon", + ["wtm" ] = "mewati", ["xbd" ] = "lü", ["xhs" ] = "xhosa", ["xjb" ] = "minjangbal", @@ -730,6 +794,7 @@ local languages = allocate { ["zza" ] = "zazaki", } + local features = allocate { ["aalt"] = "access all alternates", ["abvf"] = "above-base forms", @@ -869,6 +934,7 @@ local features = allocate { ["vkna"] = "vertical kana alternates", ["vkrn"] = "vertical kerning", ["vpal"] = "proportional alternate vertical metrics", + ["vrtr"] = "vertical alternates for rotation", ["vrt2"] = "vertical rotation", ["zero"] = "slashed zero", @@ -879,8 +945,9 @@ local features = allocate { ["cv.."] = "character variant ..", ["js.."] = "justification ..", - ["dv.."] = "devanagari ..", - ["ml.."] = "malayalam ..", + ["dv.."] = "devanagari ..", -- for internal use + ["ml.."] = "malayalam ..", -- for internal use + } local baselines = allocate { diff --git a/tex/context/base/mkiv/l-pdfview.lua b/tex/context/base/mkiv/l-pdfview.lua index d2add9188..29dfaf81f 100644 --- a/tex/context/base/mkiv/l-pdfview.lua +++ b/tex/context/base/mkiv/l-pdfview.lua @@ -28,8 +28,6 @@ local allcalls -- a table with templates that close all open pdf documents local runner -- runner function local expander -- filename cleanup function --- maybe spawn/execute spec in calls - if os.type == "windows" then -- os.setenv("path",os.getenv("path") .. ";" .. "c:/data/system/pdf-xchange") diff --git a/tex/context/base/mkiv/lpdf-lmt.lua b/tex/context/base/mkiv/lpdf-lmt.lua index 156d3486f..0c6f1f3e4 100644 --- a/tex/context/base/mkiv/lpdf-lmt.lua +++ b/tex/context/base/mkiv/lpdf-lmt.lua @@ -7,7 +7,7 @@ if not modules then modules = { } end modules ['lpdf-lmt'] = { } -- The code below was originally in back-lpd.lua but it makes more sense in --- this namespace. +-- this namespace. I will rename variables. if CONTEXTLMTXMODE == 0 then return @@ -22,14 +22,15 @@ end -- https://www.youtube.com/watch?v=TYuTE_1jvvE -- https://www.youtube.com/watch?v=nnicGKX3lvM -- --- For the moment we have to support the built in backend as well as the alternative. So the --- next interface is suboptimal and will change at some time. +-- For the moment we have to support the built in backend as well as the alternative. So +-- the next interface is suboptimal and will change at some time. At that moment I will +-- also optimize and extend. local type, next, unpack, tonumber = type, next, unpack, tonumber local char, rep, find = string.char, string.rep, string.find local formatters, splitupstring = string.formatters, string.splitup local band, extract = bit32.band, bit32.extract -local concat, keys, sortedhash = table.concat, table.keys, table.sortedhash +local concat, sortedhash = table.concat, table.sortedhash local setmetatableindex = table.setmetatableindex local bpfactor = number.dimenfactors.bp @@ -38,9 +39,6 @@ local md5HEX = md5.HEX local osuuid = os.uuid local zlibcompress = flate.zip_compress or zlib.compress -local starttiming = statistics.starttiming -local stoptiming = statistics.stoptiming - local nuts = nodes.nuts local tonut = nodes.tonut @@ -128,10 +126,6 @@ local function reset_variables(specification) usedxforms = { } usedximages = { } boundingbox = specification.boundingbox - -- --- if overload then --- overload() --- end end -- buffer @@ -140,18 +134,9 @@ local buffer = { } local b = 0 local function reset_buffer() - -- buffer = { } - b = 0 -end - -local function flush_buffer() b = 0 end -local function show_buffer() - print(concat(buffer,"\n",1,b)) -end - -- fonts local fontcharacters @@ -159,11 +144,11 @@ local fontparameters local fontproperties local usedcharacters = setmetatableindex("table") local pdfcharacters + local horizontalmode = true ----- widefontmode = true local scalefactor = 1 ------ threshold = 655360 / (10 * 5) -- default is 5 -local threshold = 655360 * 50 / 100 +local threshold = 655360 * 5 / 100 local tjfactor = 100 / 65536 lpdf.usedcharacters = usedcharacters @@ -178,8 +163,7 @@ local function updatefontstate(font) horizontalmode = fontparameters.writingmode ~= "vertical" -- widefontmode = fontproperties.encodingbytes == 2 scalefactor = (designsize/size) * tjfactor - -- threshold = designsize / (10 * (fontproperties.threshold or 5)) - threshold = designsize * (fontproperties.threshold or 50) / 100 + threshold = size * (fontproperties.threshold or 5) / 100 end -- helpers @@ -393,6 +377,10 @@ local flushcharacter do local round = math.round + -- across pages ... todo: clean up because we don't need to pass the font + -- as fontparameters already has checked / set it we can also have a variable + -- for it so + local function setup_fontparameters(font,factor,f,e) local slant = (fontparameters.slantfactor or 0) / 1000 local extend = (fontparameters.extendfactor or 1000) / 1000 @@ -472,13 +460,13 @@ local flushcharacter do -- local f_char = formatters["%c"] local f_hex = formatters["%04X"] - local h_hex = setmetatableindex(function(t,k) + local h_hex = setmetatableindex(function(t,k) -- we already have this somewhere local v = f_hex(k) t[k] = v return v end) - flushcharacter = function(current,pos_h,pos_v,pos_r,font,char,data,factor,width,f,e) + flushcharacter = function(current,pos_h,pos_v,pos_r,font,char,data,naturalwidth,factor,width,f,e) if need_tf or font ~= f_cur or f_pdf ~= f_pdf_cur or fs ~= fs_cur or mode == "page" then pdf_goto_textmode() setup_fontparameters(font,factor,f,e) @@ -488,10 +476,15 @@ local flushcharacter do need_tm = true end local move = calc_pdfpos(pos_h,pos_v) + + -- report( + -- "factor %i, width %p, naturalwidth %p, move %l, tm %l, hpos %p, delta %p, threshold %p, cw %p", + -- factor,width,naturalwidth,move,need_tm,pos_h,tj_delta,threshold,cw + -- ) + if move or need_tm then if not need_tm then if horizontalmode then --- print(tj_delta,threshold) if (saved_text_pos_v + tmty) ~= pdf_v then need_tm = true elseif tj_delta >= threshold or tj_delta <= -threshold then @@ -512,23 +505,13 @@ local flushcharacter do move = calc_pdfpos(pos_h,pos_v) end if move then - -- local d = round(tj_delta * scalefactor) - -- if d ~= 0 then local d = tj_delta * scalefactor - if d <= -0.5 or d >= 0.5 then + if d <= -0.5 or d >= 0.5 then -- 0.25 if mode == "char" then end_charmode() end - -- b = b + 1 ; buffer[b] = f_skip(d) - -- b = b + 1 ; buffer[b] = d - b = b + 1 ; buffer[b] = round(d) + b = b + 1 ; buffer[b] = round(d) -- or f_skip(d) end --- if d <= -0.25 or d >= 0.25 then --- if mode == "char" then --- end_charmode() --- end --- b = b + 1 ; buffer[b] = f_skip(d) --- end cw = cw - tj_delta end end @@ -550,9 +533,8 @@ local flushcharacter do -- buffer[b] = f_char(char) -- end - cw = cw + width + cw = cw + naturalwidth - -- pdfcharacters[fontcharacters[char].index or char] = true pdfcharacters[index] = true end @@ -1242,12 +1224,6 @@ local wrapup, registerpage do wrapup = function() - -- local includechar = lpdf.includecharlist - -- - -- for font, list in next, usedcharacters do - -- includechar(font,keys(list)) - -- end - -- hook (to reshuffle pages) local pagetree = { } local parent = nil diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index 16d4d5c9d..1c524b8d1 100644 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index 41badc3d8..f6553771d 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ diff --git a/tex/context/base/mkiv/syst-aux.mkiv b/tex/context/base/mkiv/syst-aux.mkiv index 924043849..8336800fc 100644 --- a/tex/context/base/mkiv/syst-aux.mkiv +++ b/tex/context/base/mkiv/syst-aux.mkiv @@ -8526,12 +8526,12 @@ \let\elapsedseconds \elapsedtime \newcount\c_syst_helpers_test_feature_n -\chardef \c_syst_helpers_test_feature_m\zerocount +\newcount\c_syst_helpers_test_feature_m \def\currentfeaturetest{\number\c_syst_helpers_test_feature_n} \unexpanded\def\testfeature#1#2% - {\chardef\c_syst_helpers_test_feature_m#1\relax + {\c_syst_helpers_test_feature_m#1\relax \def\syst_helpers_test_feature_yes {\advance\c_syst_helpers_test_feature_n\plusone \ifnum\c_syst_helpers_test_feature_n>\c_syst_helpers_test_feature_m\else diff --git a/tex/context/base/mkiv/syst-ini.mkiv b/tex/context/base/mkiv/syst-ini.mkiv index 7664074c5..24397ecbf 100644 --- a/tex/context/base/mkiv/syst-ini.mkiv +++ b/tex/context/base/mkiv/syst-ini.mkiv @@ -412,7 +412,7 @@ \newdimen \zeropoint \zeropoint 0pt \newdimen \onepoint \onepoint 1pt \newdimen \halfapoint \halfapoint 0.5pt -\newdimen \maxdimen \maxdimen 16383.99999pt +\newdimen \maxdimen \maxdimen 16383.99999pt % 1073741823sp \newcount \maxcount \maxcount 2147483647 \newdimen \onebasepoint \onebasepoint 1bp \newdimen \scaledpoint \scaledpoint 1sp diff --git a/tex/context/base/mkiv/trac-log.lua b/tex/context/base/mkiv/trac-log.lua index e76c9f684..fd7b5016a 100644 --- a/tex/context/base/mkiv/trac-log.lua +++ b/tex/context/base/mkiv/trac-log.lua @@ -395,7 +395,7 @@ if runningtex and texio then status_yes = f.status_yes status_nop = f.status_nop if variant == "ansi" then - useluawrites() -- because tex escapes ^^ + useluawrites() -- because tex escapes ^^, not needed in lmtx end settarget(whereto) end diff --git a/tex/context/base/mkiv/util-sbx.lua b/tex/context/base/mkiv/util-sbx.lua index d5cf691ce..196c816d0 100644 --- a/tex/context/base/mkiv/util-sbx.lua +++ b/tex/context/base/mkiv/util-sbx.lua @@ -307,8 +307,8 @@ end -- runners can be strings or tables -- -- os.execute : string --- os.exec : string or table with program in [0|1] --- os.spawn : string or table with program in [0|1] +-- os.exec : string or table with program in [0|1] -- no longer there +-- os.spawn : string or table with program in [0|1] -- no longer there -- -- our execute: registered program with specification @@ -609,8 +609,8 @@ end if os then overload(os.execute, binaryrunner, "os.execute") - overload(os.spawn, dummyrunner, "os.spawn") - overload(os.exec, dummyrunner, "os.exec") + overload(os.spawn, dummyrunner, "os.spawn") -- no longer there + overload(os.exec, dummyrunner, "os.exec") -- no longer there overload(os.resultof, binaryrunner, "os.resultof") overload(os.pipeto, binaryrunner, "os.pipeto") overload(os.rename, filehandlertwo,"os.rename") diff --git a/tex/context/interface/mkii/keys-fr.xml b/tex/context/interface/mkii/keys-fr.xml index ef9dc8ee8..cc820098b 100644 --- a/tex/context/interface/mkii/keys-fr.xml +++ b/tex/context/interface/mkii/keys-fr.xml @@ -573,6 +573,7 @@ + diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf index fd58e5805..746f0fb36 100644 Binary files a/tex/context/interface/mkiv/i-context.pdf and b/tex/context/interface/mkiv/i-context.pdf differ diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf index c13794faa..847353e60 100644 Binary files a/tex/context/interface/mkiv/i-readme.pdf and b/tex/context/interface/mkiv/i-readme.pdf differ diff --git a/tex/context/modules/mkiv/s-maps.mkiv b/tex/context/modules/mkiv/s-maps.mkiv index bc0bcbaa0..af646b2e1 100644 --- a/tex/context/modules/mkiv/s-maps.mkiv +++ b/tex/context/modules/mkiv/s-maps.mkiv @@ -181,7 +181,7 @@ \unexpanded\def\hfonti {\ssbfa} \unexpanded\def\hfontii {\ssbf} \unexpanded\def\hfontiii {\rm\bi} -\unexpanded\def\runin #1{#1} +\unexpanded\def\runin #1{#1.} \setuphead [section,subject] [style=\hfonti, @@ -576,8 +576,6 @@ \continueifinputfile{s-maps.mkiv} -% \enabletrackers[mixedcolumns.*] - % \enablemode[nosubsub] % if you need at most two levels of sectioning % \enablemode[onecolumn] % for symmetric single-column layout % \enablemode[asym] % for asymmetric single-column layout, left aligned diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 81e00d12e..bafaac767 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 : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 06/01/19 19:11:40 +-- merge date : 06/05/19 15:39:40 do -- begin closure to overcome local limits and interference @@ -12426,14 +12426,19 @@ otf.tables=tables local statistics=otf.statistics or {} otf.statistics=statistics local scripts=allocate { + ["adlm"]="adlam", + ["aghb"]="caucasian albanian", + ["ahom"]="ahom", ["arab"]="arabic", ["armi"]="imperial aramaic", ["armn"]="armenian", ["avst"]="avestan", ["bali"]="balinese", ["bamu"]="bamum", + ["bass"]="bassa vah", ["batk"]="batak", ["beng"]="bengali", + ["bhks"]="bhaiksuki", ["bng2"]="bengali variant 2", ["bopo"]="bopomofo", ["brah"]="brahmi", @@ -12449,23 +12454,33 @@ local scripts=allocate { ["copt"]="coptic", ["cprt"]="cypriot syllabary", ["cyrl"]="cyrillic", - ["deva"]="devanagari", ["dev2"]="devanagari variant 2", + ["deva"]="devanagari", + ["dogr"]="dogra", ["dsrt"]="deseret", + ["dupl"]="duployan", ["egyp"]="egyptian heiroglyphs", + ["elba"]="elbasan", ["ethi"]="ethiopic", ["geor"]="georgian", + ["gjr2"]="gujarati variant 2", ["glag"]="glagolitic", + ["gong"]="gunjala gondi", + ["gonm"]="masaram gondi", ["goth"]="gothic", + ["gran"]="grantha", ["grek"]="greek", ["gujr"]="gujarati", - ["gjr2"]="gujarati variant 2", - ["guru"]="gurmukhi", ["gur2"]="gurmukhi variant 2", + ["guru"]="gurmukhi", ["hang"]="hangul", ["hani"]="cjk ideographic", ["hano"]="hanunoo", + ["hatr"]="hatran", ["hebr"]="hebrew", + ["hluw"]="anatolian hieroglyphs", + ["hmng"]="pahawh hmong", + ["hung"]="old hungarian", ["ital"]="old italic", ["jamo"]="hangul jamo", ["java"]="javanese", @@ -12473,49 +12488,77 @@ local scripts=allocate { ["kana"]="hiragana and katakana", ["khar"]="kharosthi", ["khmr"]="khmer", - ["knda"]="kannada", + ["khoj"]="khojki", ["knd2"]="kannada variant 2", + ["knda"]="kannada", ["kthi"]="kaithi", ["lana"]="tai tham", ["lao" ]="lao", ["latn"]="latin", ["lepc"]="lepcha", ["limb"]="limbu", + ["lina"]="linear a", ["linb"]="linear b", ["lisu"]="lisu", ["lyci"]="lycian", ["lydi"]="lydian", + ["mahj"]="mahajani", + ["maka"]="makasar", ["mand"]="mandaic and mandaean", + ["mani"]="manichaean", + ["marc"]="marchen", ["math"]="mathematical alphanumeric symbols", + ["medf"]="medefaidrin", + ["mend"]="mende kikakui", ["merc"]="meroitic cursive", ["mero"]="meroitic hieroglyphs", - ["mlym"]="malayalam", ["mlm2"]="malayalam variant 2", + ["mlym"]="malayalam", + ["modi"]="modi", ["mong"]="mongolian", + ["mroo"]="mro", ["mtei"]="meitei Mayek", + ["mult"]="multani", ["musc"]="musical symbols", ["mym2"]="myanmar variant 2", ["mymr"]="myanmar", + ["narb"]="old north arabian", + ["nbat"]="nabataean", + ["newa"]="newa", ["nko" ]='n"ko', + ["nshu"]="nüshu", ["ogam"]="ogham", ["olck"]="ol chiki", ["orkh"]="old turkic and orkhon runic", - ["orya"]="oriya", ["ory2"]="odia variant 2", + ["orya"]="oriya", + ["osge"]="osage", ["osma"]="osmanya", + ["palm"]="palmyrene", + ["pauc"]="pau cin hau", + ["perm"]="old permic", ["phag"]="phags-pa", ["phli"]="inscriptional pahlavi", + ["phlp"]="psalter pahlavi", ["phnx"]="phoenician", + ["plrd"]="miao", ["prti"]="inscriptional parthian", ["rjng"]="rejang", + ["rohg"]="hanifi rohingya", ["runr"]="runic", ["samr"]="samaritan", ["sarb"]="old south arabian", ["saur"]="saurashtra", + ["sgnw"]="sign writing", ["shaw"]="shavian", ["shrd"]="sharada", + ["sidd"]="siddham", + ["sind"]="khudawadi", ["sinh"]="sinhala", + ["sogd"]="sogdian", + ["sogo"]="old sogdian", ["sora"]="sora sompeng", + ["soyo"]="soyombo", ["sund"]="sundanese", ["sylo"]="syloti nagri", ["syrc"]="syriac", @@ -12524,20 +12567,24 @@ local scripts=allocate { ["tale"]="tai le", ["talu"]="tai lu", ["taml"]="tamil", + ["tang"]="tangut", ["tavt"]="tai viet", - ["telu"]="telugu", ["tel2"]="telugu variant 2", + ["telu"]="telugu", ["tfng"]="tifinagh", ["tglg"]="tagalog", ["thaa"]="thaana", ["thai"]="thai", ["tibt"]="tibetan", + ["tirh"]="tirhuta", ["tml2"]="tamil variant 2", ["ugar"]="ugaritic cuneiform", ["vai" ]="vai", + ["wara"]="warang citi", ["xpeo"]="old persian cuneiform", ["xsux"]="sumero-akkadian cuneiform", ["yi" ]="yi", + ["zanb"]="zanabazar square", } local languages=allocate { ["aba" ]="abaza", @@ -12606,12 +12653,15 @@ local languages=allocate { ["brm" ]="burmese", ["brx" ]="bodo", ["bsh" ]="bashkir", + ["bsk" ]="burushaski", ["bti" ]="beti", ["bts" ]="batak simalungun", ["bug" ]="bugis", + ["byv" ]="medumba", ["cak" ]="kaqchikel", ["cat" ]="catalan", ["cbk" ]="zamboanga chavacano", + ["cchn"]="chinantec", ["ceb" ]="cebuano", ["cgg" ]="chiga", ["cha" ]="chamorro", @@ -12626,6 +12676,8 @@ local languages=allocate { ["chr" ]="cherokee", ["chu" ]="chuvash", ["chy" ]="cheyenne", + ["cja" ]="western cham", + ["cjm" ]="eastern cham", ["cmr" ]="comorian", ["cop" ]="coptic", ["cor" ]="cornish", @@ -12681,6 +12733,7 @@ local languages=allocate { ["fin" ]="finnish", ["fji" ]="fijian", ["fle" ]="dutch (flemish)", + ["fmp" ]="fe’fe’", ["fne" ]="forest nenets", ["fon" ]="fon", ["fos" ]="faroese", @@ -12759,6 +12812,7 @@ local languages=allocate { ["jan" ]="japanese", ["jav" ]="javanese", ["jbo" ]="lojban", + ["jct" ]="krymchak", ["jii" ]="yiddish", ["jud" ]="ladino", ["jul" ]="jula", @@ -12795,6 +12849,7 @@ local languages=allocate { ["kmn" ]="kumaoni", ["kmo" ]="komo", ["kms" ]="komso", + ["kmz" ]="khorasani turkic", ["knr" ]="kanuri", ["kod" ]="kodagu", ["koh" ]="korean old hangul", @@ -12871,6 +12926,7 @@ local languages=allocate { ["mar" ]="marathi", ["maw" ]="marwari", ["mbn" ]="mbundu", + ["mbo" ]="mbo", ["mch" ]="manchu", ["mcr" ]="moose cree", ["mde" ]="mende", @@ -12887,6 +12943,7 @@ local languages=allocate { ["mle" ]="male", ["mlg" ]="malagasy", ["mln" ]="malinke", + ["mlr" ]="malayalam reformed", ["mly" ]="malay", ["mnd" ]="mandinka", ["mng" ]="mongolian", @@ -12940,6 +12997,7 @@ local languages=allocate { ["nto" ]="esperanto", ["nym" ]="nyamwezi", ["nyn" ]="norwegian nynorsk", + ["nza" ]="mbembe tigon", ["oci" ]="occitan", ["ocr" ]="oji-cree", ["ojb" ]="ojibway", @@ -13003,6 +13061,7 @@ local languages=allocate { ["say" ]="sayisi", ["scn" ]="sicilian", ["sco" ]="scots", + ["scs" ]="north slavey", ["sek" ]="sekota", ["sel" ]="selkup", ["sga" ]="old irish", @@ -13047,6 +13106,9 @@ local languages=allocate { ["sxu" ]="upper saxon", ["syl" ]="sylheti", ["syr" ]="syriac", + ["syre"]="estrangela syriac", + ["syrj"]="western syriac", + ["syrn"]="eastern syriac", ["szl" ]="silesian", ["tab" ]="tabasaran", ["taj" ]="tajiki", @@ -13078,6 +13140,7 @@ local languages=allocate { ["tsj" ]="tshangla", ["tua" ]="turoyo aramaic", ["tul" ]="tulu", + ["tum" ]="tulu", ["tuv" ]="tuvin", ["tvl" ]="tuvalu", ["twi" ]="twi", @@ -13103,6 +13166,7 @@ local languages=allocate { ["wel" ]="welsh", ["wlf" ]="wolof", ["wln" ]="walloon", + ["wtm" ]="mewati", ["xbd" ]="lü", ["xhs" ]="xhosa", ["xjb" ]="minjangbal", @@ -13246,6 +13310,7 @@ local features=allocate { ["vkna"]="vertical kana alternates", ["vkrn"]="vertical kerning", ["vpal"]="proportional alternate vertical metrics", + ["vrtr"]="vertical alternates for rotation", ["vrt2"]="vertical rotation", ["zero"]="slashed zero", ["trep"]="traditional tex replacements", @@ -29582,24 +29647,59 @@ local function initializedevanagi(tfmdata) end end end - if script=="deva" or script=="knda" then - sharedfeatures["dv04"]=true - elseif script=="dev2" or script=="knd2" then - sharedfeatures["dv01"]=true - sharedfeatures["dv02"]=true - sharedfeatures["dv03"]=true + if script=="deva" then + sharedfeatures["dv04"]=true + elseif script=="dev2" then + sharedfeatures["dv01"]=true + sharedfeatures["dv02"]=true + sharedfeatures["dv03"]=true + sharedfeatures["dv04"]=true + elseif script=="knda" then + sharedfeatures["dv04"]=true + elseif script=="knd2" then + sharedfeatures["dv01"]=true + sharedfeatures["dv02"]=true + sharedfeatures["dv03"]=true + sharedfeatures["dv04"]=true + elseif script=="beng" then + sharedfeatures["dv04"]=true + elseif script=="bng2" then + sharedfeatures["dv01"]=true + sharedfeatures["dv02"]=true + sharedfeatures["dv03"]=true + sharedfeatures["dv04"]=true + elseif script=="gurj" then + sharedfeatures["dv04"]=true + elseif script=="grj2" then + sharedfeatures["dv01"]=true + sharedfeatures["dv02"]=true + sharedfeatures["dv03"]=true + sharedfeatures["dv04"]=true + elseif script=="guru" then + sharedfeatures["dv04"]=true + elseif script=="gur2" then + sharedfeatures["dv01"]=true + sharedfeatures["dv02"]=true + sharedfeatures["dv03"]=true + sharedfeatures["dv04"]=true + elseif script=="telu" then + sharedfeatures["dv04"]=true + elseif script=="tel2" then + sharedfeatures["dv01"]=true + sharedfeatures["dv02"]=true + sharedfeatures["dv03"]=true sharedfeatures["dv04"]=true elseif script=="mlym" then sharedfeatures["pstf"]=true elseif script=="mlm2" then sharedfeatures["pstf"]=true sharedfeatures["pref"]=true - sharedfeatures["dv03"]=true - gsubfeatures ["dv03"]=two_defaults + sharedfeatures["dv03"]=true + gsubfeatures ["dv03"]=two_defaults insert(sequences,insertindex,sequence_reorder_pre_base_reordering_consonants) elseif script=="taml" then - sharedfeatures["dv04"]=true -sharedfeatures["pstf"]=true + sharedfeatures["dv04"]=true + sharedfeatures["pstf"]=true elseif script=="tml2" then else report("todo: enable the right features for script %a",script) -- cgit v1.2.3