From 82aed3e7e8af29f359ebef4f93684d20e98107e6 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Thu, 25 May 2017 13:21:58 +0200 Subject: 2017-05-25 12:56:00 --- tex/generic/context/luatex/luatex-basics-chr.lua | 1420 +++++++++++++- tex/generic/context/luatex/luatex-basics-nod.lua | 38 +- .../context/luatex/luatex-basics-prepare.tex | 2 + tex/generic/context/luatex/luatex-fonts-merged.lua | 1943 +++++++++++++++++--- tex/generic/context/luatex/luatex-math.tex | 405 +++- 5 files changed, 3562 insertions(+), 246 deletions(-) (limited to 'tex/generic') diff --git a/tex/generic/context/luatex/luatex-basics-chr.lua b/tex/generic/context/luatex/luatex-basics-chr.lua index 4329256f2..75dffd192 100644 --- a/tex/generic/context/luatex/luatex-basics-chr.lua +++ b/tex/generic/context/luatex/luatex-basics-chr.lua @@ -9,6 +9,174 @@ characters.blockrange = { } -- classifiers needed for analysis characters.classifiers={ + [768]=5, + [769]=5, + [770]=5, + [771]=5, + [772]=5, + [773]=5, + [774]=5, + [775]=5, + [776]=5, + [777]=5, + [778]=5, + [779]=5, + [780]=5, + [781]=5, + [782]=5, + [783]=5, + [784]=5, + [785]=5, + [786]=5, + [787]=5, + [788]=5, + [789]=5, + [790]=5, + [791]=5, + [792]=5, + [793]=5, + [794]=5, + [795]=5, + [796]=5, + [797]=5, + [798]=5, + [799]=5, + [800]=5, + [801]=5, + [802]=5, + [803]=5, + [804]=5, + [805]=5, + [806]=5, + [807]=5, + [808]=5, + [809]=5, + [810]=5, + [811]=5, + [812]=5, + [813]=5, + [814]=5, + [815]=5, + [816]=5, + [817]=5, + [818]=5, + [819]=5, + [820]=5, + [821]=5, + [822]=5, + [823]=5, + [824]=5, + [825]=5, + [826]=5, + [827]=5, + [828]=5, + [829]=5, + [830]=5, + [831]=5, + [832]=5, + [833]=5, + [834]=5, + [835]=5, + [836]=5, + [837]=5, + [838]=5, + [839]=5, + [840]=5, + [841]=5, + [842]=5, + [843]=5, + [844]=5, + [845]=5, + [846]=5, + [847]=5, + [848]=5, + [849]=5, + [850]=5, + [851]=5, + [852]=5, + [853]=5, + [854]=5, + [855]=5, + [856]=5, + [857]=5, + [858]=5, + [859]=5, + [860]=5, + [861]=5, + [862]=5, + [863]=5, + [864]=5, + [865]=5, + [866]=5, + [867]=5, + [868]=5, + [869]=5, + [870]=5, + [871]=5, + [872]=5, + [873]=5, + [874]=5, + [875]=5, + [876]=5, + [877]=5, + [878]=5, + [879]=5, + [1155]=5, + [1156]=5, + [1157]=5, + [1158]=5, + [1159]=5, + [1425]=5, + [1426]=5, + [1427]=5, + [1428]=5, + [1429]=5, + [1430]=5, + [1431]=5, + [1432]=5, + [1433]=5, + [1434]=5, + [1435]=5, + [1436]=5, + [1437]=5, + [1438]=5, + [1439]=5, + [1440]=5, + [1441]=5, + [1442]=5, + [1443]=5, + [1444]=5, + [1445]=5, + [1446]=5, + [1447]=5, + [1448]=5, + [1449]=5, + [1450]=5, + [1451]=5, + [1452]=5, + [1453]=5, + [1454]=5, + [1455]=5, + [1456]=5, + [1457]=5, + [1458]=5, + [1459]=5, + [1460]=5, + [1461]=5, + [1462]=5, + [1463]=5, + [1464]=5, + [1465]=5, + [1466]=5, + [1467]=5, + [1468]=5, + [1469]=5, + [1471]=5, + [1473]=5, + [1474]=5, + [1476]=5, + [1477]=5, + [1479]=5, [1536]=4, [1537]=4, [1538]=4, @@ -389,6 +557,17 @@ characters.classifiers={ [1917]=2, [1918]=2, [1919]=2, + [1958]=5, + [1959]=5, + [1960]=5, + [1961]=5, + [1962]=5, + [1963]=5, + [1964]=5, + [1965]=5, + [1966]=5, + [1967]=5, + [1968]=5, [1984]=6, [1985]=6, [1986]=6, @@ -448,6 +627,27 @@ characters.classifiers={ [2040]=6, [2041]=6, [2042]=2, + [2070]=5, + [2071]=5, + [2072]=5, + [2073]=5, + [2075]=5, + [2076]=5, + [2077]=5, + [2078]=5, + [2079]=5, + [2080]=5, + [2081]=5, + [2082]=5, + [2083]=5, + [2085]=5, + [2086]=5, + [2087]=5, + [2089]=5, + [2090]=5, + [2091]=5, + [2092]=5, + [2093]=5, [2112]=3, [2113]=2, [2114]=2, @@ -473,6 +673,9 @@ characters.classifiers={ [2134]=4, [2135]=4, [2136]=4, + [2137]=5, + [2138]=5, + [2139]=5, [2208]=2, [2209]=2, [2210]=2, @@ -494,9 +697,339 @@ characters.classifiers={ [2226]=3, [2227]=2, [2228]=2, + [2230]=2, + [2231]=2, + [2232]=2, + [2233]=3, + [2234]=2, + [2235]=2, + [2236]=2, + [2237]=2, + [2260]=5, + [2261]=5, + [2262]=5, + [2263]=5, + [2264]=5, + [2265]=5, + [2266]=5, + [2267]=5, + [2268]=5, + [2269]=5, + [2270]=5, + [2271]=5, + [2272]=5, + [2273]=5, + [2274]=4, + [2275]=5, + [2276]=5, + [2277]=5, + [2278]=5, + [2279]=5, + [2280]=5, + [2281]=5, + [2282]=5, + [2283]=5, + [2284]=5, + [2285]=5, + [2286]=5, + [2287]=5, + [2288]=5, + [2289]=5, + [2290]=5, + [2291]=5, + [2292]=5, + [2293]=5, + [2294]=5, + [2295]=5, + [2296]=5, + [2297]=5, + [2298]=5, + [2299]=5, + [2300]=5, + [2301]=5, + [2302]=5, + [2303]=5, + [2304]=5, + [2305]=5, + [2306]=5, + [2362]=5, + [2364]=5, + [2369]=5, + [2370]=5, + [2371]=5, + [2372]=5, + [2373]=5, + [2374]=5, + [2375]=5, + [2376]=5, + [2381]=5, + [2385]=5, + [2386]=5, + [2387]=5, + [2388]=5, + [2389]=5, + [2390]=5, + [2391]=5, + [2402]=5, + [2403]=5, + [2433]=5, + [2492]=5, + [2497]=5, + [2498]=5, + [2499]=5, + [2500]=5, + [2509]=5, + [2530]=5, + [2531]=5, + [2561]=5, + [2562]=5, + [2620]=5, + [2625]=5, + [2626]=5, + [2631]=5, + [2632]=5, + [2635]=5, + [2636]=5, + [2637]=5, + [2641]=5, + [2672]=5, + [2673]=5, + [2677]=5, + [2689]=5, + [2690]=5, + [2748]=5, + [2753]=5, + [2754]=5, + [2755]=5, + [2756]=5, + [2757]=5, + [2759]=5, + [2760]=5, + [2765]=5, + [2786]=5, + [2787]=5, + [2817]=5, + [2876]=5, + [2879]=5, + [2881]=5, + [2882]=5, + [2883]=5, + [2884]=5, + [2893]=5, + [2902]=5, + [2914]=5, + [2915]=5, + [2946]=5, + [3008]=5, + [3021]=5, + [3072]=5, + [3134]=5, + [3135]=5, + [3136]=5, + [3142]=5, + [3143]=5, + [3144]=5, + [3146]=5, + [3147]=5, + [3148]=5, + [3149]=5, + [3157]=5, + [3158]=5, + [3170]=5, + [3171]=5, + [3201]=5, + [3260]=5, + [3263]=5, + [3270]=5, + [3276]=5, + [3277]=5, + [3298]=5, + [3299]=5, + [3329]=5, + [3393]=5, + [3394]=5, + [3395]=5, + [3396]=5, + [3405]=5, + [3426]=5, + [3427]=5, + [3530]=5, + [3538]=5, + [3539]=5, + [3540]=5, + [3542]=5, + [3633]=5, + [3636]=5, + [3637]=5, + [3638]=5, + [3639]=5, + [3640]=5, + [3641]=5, + [3642]=5, + [3655]=5, + [3656]=5, + [3657]=5, + [3658]=5, + [3659]=5, + [3660]=5, + [3661]=5, + [3662]=5, + [3761]=5, + [3764]=5, + [3765]=5, + [3766]=5, + [3767]=5, + [3768]=5, + [3769]=5, + [3771]=5, + [3772]=5, + [3784]=5, + [3785]=5, + [3786]=5, + [3787]=5, + [3788]=5, + [3789]=5, + [3864]=5, + [3865]=5, + [3893]=5, + [3895]=5, + [3897]=5, + [3953]=5, + [3954]=5, + [3955]=5, + [3956]=5, + [3957]=5, + [3958]=5, + [3959]=5, + [3960]=5, + [3961]=5, + [3962]=5, + [3963]=5, + [3964]=5, + [3965]=5, + [3966]=5, + [3968]=5, + [3969]=5, + [3970]=5, + [3971]=5, + [3972]=5, + [3974]=5, + [3975]=5, + [3981]=5, + [3982]=5, + [3983]=5, + [3984]=5, + [3985]=5, + [3986]=5, + [3987]=5, + [3988]=5, + [3989]=5, + [3990]=5, + [3991]=5, + [3993]=5, + [3994]=5, + [3995]=5, + [3996]=5, + [3997]=5, + [3998]=5, + [3999]=5, + [4000]=5, + [4001]=5, + [4002]=5, + [4003]=5, + [4004]=5, + [4005]=5, + [4006]=5, + [4007]=5, + [4008]=5, + [4009]=5, + [4010]=5, + [4011]=5, + [4012]=5, + [4013]=5, + [4014]=5, + [4015]=5, + [4016]=5, + [4017]=5, + [4018]=5, + [4019]=5, + [4020]=5, + [4021]=5, + [4022]=5, + [4023]=5, + [4024]=5, + [4025]=5, + [4026]=5, + [4027]=5, + [4028]=5, + [4038]=5, + [4141]=5, + [4142]=5, + [4143]=5, + [4144]=5, + [4146]=5, + [4147]=5, + [4148]=5, + [4149]=5, + [4150]=5, + [4151]=5, + [4153]=5, + [4154]=5, + [4157]=5, + [4158]=5, + [4184]=5, + [4185]=5, + [4190]=5, + [4191]=5, + [4192]=5, + [4209]=5, + [4210]=5, + [4211]=5, + [4212]=5, + [4226]=5, + [4229]=5, + [4230]=5, + [4237]=5, + [4253]=5, + [4957]=5, + [4958]=5, + [4959]=5, + [5906]=5, + [5907]=5, + [5908]=5, + [5938]=5, + [5939]=5, + [5940]=5, + [5970]=5, + [5971]=5, + [6002]=5, + [6003]=5, + [6071]=5, + [6072]=5, + [6073]=5, + [6074]=5, + [6075]=5, + [6076]=5, + [6077]=5, + [6086]=5, + [6089]=5, + [6090]=5, + [6091]=5, + [6092]=5, + [6093]=5, + [6094]=5, + [6095]=5, + [6096]=5, + [6097]=5, + [6098]=5, + [6099]=5, + [6109]=5, [6150]=4, [6151]=2, [6154]=2, + [6155]=5, + [6156]=5, + [6157]=5, [6158]=4, [6176]=2, [6177]=2, @@ -591,8 +1124,6 @@ characters.classifiers={ [6274]=4, [6275]=4, [6276]=4, - [6277]=4, - [6278]=4, [6279]=2, [6280]=2, [6281]=2, @@ -627,13 +1158,291 @@ characters.classifiers={ [6310]=2, [6311]=2, [6312]=2, + [6313]=5, [6314]=2, + [6432]=5, + [6433]=5, + [6434]=5, + [6439]=5, + [6440]=5, + [6450]=5, + [6457]=5, + [6458]=5, + [6459]=5, + [6679]=5, + [6680]=5, + [6742]=5, + [6744]=5, + [6745]=5, + [6746]=5, + [6747]=5, + [6748]=5, + [6749]=5, + [6750]=5, + [6752]=5, + [6754]=5, + [6757]=5, + [6758]=5, + [6759]=5, + [6760]=5, + [6761]=5, + [6762]=5, + [6763]=5, + [6764]=5, + [6771]=5, + [6772]=5, + [6773]=5, + [6774]=5, + [6775]=5, + [6776]=5, + [6777]=5, + [6778]=5, + [6779]=5, + [6780]=5, + [6783]=5, + [6832]=5, + [6833]=5, + [6834]=5, + [6835]=5, + [6836]=5, + [6837]=5, + [6838]=5, + [6839]=5, + [6840]=5, + [6841]=5, + [6842]=5, + [6843]=5, + [6844]=5, + [6845]=5, + [6912]=5, + [6913]=5, + [6914]=5, + [6915]=5, + [6964]=5, + [6966]=5, + [6967]=5, + [6968]=5, + [6969]=5, + [6970]=5, + [6972]=5, + [6978]=5, + [7019]=5, + [7020]=5, + [7021]=5, + [7022]=5, + [7023]=5, + [7024]=5, + [7025]=5, + [7026]=5, + [7027]=5, + [7040]=5, + [7041]=5, + [7074]=5, + [7075]=5, + [7076]=5, + [7077]=5, + [7080]=5, + [7081]=5, + [7083]=5, + [7142]=5, + [7144]=5, + [7145]=5, + [7149]=5, + [7151]=5, + [7152]=5, + [7153]=5, + [7212]=5, + [7213]=5, + [7214]=5, + [7215]=5, + [7216]=5, + [7217]=5, + [7218]=5, + [7219]=5, + [7222]=5, + [7223]=5, + [7376]=5, + [7377]=5, + [7378]=5, + [7380]=5, + [7381]=5, + [7382]=5, + [7383]=5, + [7384]=5, + [7385]=5, + [7386]=5, + [7387]=5, + [7388]=5, + [7389]=5, + [7390]=5, + [7391]=5, + [7392]=5, + [7394]=5, + [7395]=5, + [7396]=5, + [7397]=5, + [7398]=5, + [7399]=5, + [7400]=5, + [7405]=5, + [7412]=5, + [7416]=5, + [7417]=5, + [7616]=5, + [7617]=5, + [7618]=5, + [7619]=5, + [7620]=5, + [7621]=5, + [7622]=5, + [7623]=5, + [7624]=5, + [7625]=5, + [7626]=5, + [7627]=5, + [7628]=5, + [7629]=5, + [7630]=5, + [7631]=5, + [7632]=5, + [7633]=5, + [7634]=5, + [7635]=5, + [7636]=5, + [7637]=5, + [7638]=5, + [7639]=5, + [7640]=5, + [7641]=5, + [7642]=5, + [7643]=5, + [7644]=5, + [7645]=5, + [7646]=5, + [7647]=5, + [7648]=5, + [7649]=5, + [7650]=5, + [7651]=5, + [7652]=5, + [7653]=5, + [7654]=5, + [7655]=5, + [7656]=5, + [7657]=5, + [7658]=5, + [7659]=5, + [7660]=5, + [7661]=5, + [7662]=5, + [7663]=5, + [7664]=5, + [7665]=5, + [7666]=5, + [7667]=5, + [7668]=5, + [7669]=5, + [7675]=5, + [7676]=5, + [7677]=5, + [7678]=5, + [7679]=5, [8204]=4, [8205]=2, + [8239]=4, [8294]=4, [8295]=4, [8296]=4, [8297]=4, + [8400]=5, + [8401]=5, + [8402]=5, + [8403]=5, + [8404]=5, + [8405]=5, + [8406]=5, + [8407]=5, + [8408]=5, + [8409]=5, + [8410]=5, + [8411]=5, + [8412]=5, + [8417]=5, + [8421]=5, + [8422]=5, + [8423]=5, + [8424]=5, + [8425]=5, + [8426]=5, + [8427]=5, + [8428]=5, + [8429]=5, + [8430]=5, + [8431]=5, + [8432]=5, + [11503]=5, + [11504]=5, + [11505]=5, + [11647]=5, + [11744]=5, + [11745]=5, + [11746]=5, + [11747]=5, + [11748]=5, + [11749]=5, + [11750]=5, + [11751]=5, + [11752]=5, + [11753]=5, + [11754]=5, + [11755]=5, + [11756]=5, + [11757]=5, + [11758]=5, + [11759]=5, + [11760]=5, + [11761]=5, + [11762]=5, + [11763]=5, + [11764]=5, + [11765]=5, + [11766]=5, + [11767]=5, + [11768]=5, + [11769]=5, + [11770]=5, + [11771]=5, + [11772]=5, + [11773]=5, + [11774]=5, + [11775]=5, + [12330]=5, + [12331]=5, + [12332]=5, + [12333]=5, + [12334]=5, + [12335]=5, + [12441]=5, + [12442]=5, + [42607]=5, + [42612]=5, + [42613]=5, + [42614]=5, + [42615]=5, + [42616]=5, + [42617]=5, + [42618]=5, + [42619]=5, + [42620]=5, + [42621]=5, + [42654]=5, + [42655]=5, + [42736]=5, + [42737]=5, + [43014]=5, + [43019]=5, + [43045]=5, + [43046]=5, [43072]=2, [43073]=2, [43074]=2, @@ -686,6 +1495,120 @@ characters.classifiers={ [43121]=2, [43122]=1, [43123]=4, + [43204]=5, + [43205]=5, + [43232]=5, + [43233]=5, + [43234]=5, + [43235]=5, + [43236]=5, + [43237]=5, + [43238]=5, + [43239]=5, + [43240]=5, + [43241]=5, + [43242]=5, + [43243]=5, + [43244]=5, + [43245]=5, + [43246]=5, + [43247]=5, + [43248]=5, + [43249]=5, + [43302]=5, + [43303]=5, + [43304]=5, + [43305]=5, + [43306]=5, + [43307]=5, + [43308]=5, + [43309]=5, + [43335]=5, + [43336]=5, + [43337]=5, + [43338]=5, + [43339]=5, + [43340]=5, + [43341]=5, + [43342]=5, + [43343]=5, + [43344]=5, + [43345]=5, + [43392]=5, + [43393]=5, + [43394]=5, + [43443]=5, + [43446]=5, + [43447]=5, + [43448]=5, + [43449]=5, + [43452]=5, + [43493]=5, + [43561]=5, + [43562]=5, + [43563]=5, + [43564]=5, + [43565]=5, + [43566]=5, + [43569]=5, + [43570]=5, + [43573]=5, + [43574]=5, + [43587]=5, + [43596]=5, + [43644]=5, + [43696]=5, + [43698]=5, + [43699]=5, + [43700]=5, + [43703]=5, + [43704]=5, + [43710]=5, + [43711]=5, + [43713]=5, + [43756]=5, + [43757]=5, + [43766]=5, + [44005]=5, + [44008]=5, + [44013]=5, + [64286]=5, + [65056]=5, + [65057]=5, + [65058]=5, + [65059]=5, + [65060]=5, + [65061]=5, + [65062]=5, + [65063]=5, + [65064]=5, + [65065]=5, + [65066]=5, + [65067]=5, + [65068]=5, + [65069]=5, + [65070]=5, + [65071]=5, + [66045]=5, + [66272]=5, + [66422]=5, + [66423]=5, + [66424]=5, + [66425]=5, + [66426]=5, + [68097]=5, + [68098]=5, + [68099]=5, + [68101]=5, + [68102]=5, + [68108]=5, + [68109]=5, + [68110]=5, + [68111]=5, + [68152]=5, + [68153]=5, + [68154]=5, + [68159]=5, [68288]=2, [68289]=2, [68290]=2, @@ -723,6 +1646,8 @@ characters.classifiers={ [68322]=4, [68323]=4, [68324]=3, + [68325]=5, + [68326]=5, [68331]=2, [68332]=2, [68333]=2, @@ -753,6 +1678,497 @@ characters.classifiers={ [68525]=2, [68526]=2, [68527]=4, + [69633]=5, + [69688]=5, + [69689]=5, + [69690]=5, + [69691]=5, + [69692]=5, + [69693]=5, + [69694]=5, + [69695]=5, + [69696]=5, + [69697]=5, + [69698]=5, + [69699]=5, + [69700]=5, + [69701]=5, + [69702]=5, + [69759]=5, + [69760]=5, + [69761]=5, + [69811]=5, + [69812]=5, + [69813]=5, + [69814]=5, + [69817]=5, + [69818]=5, + [69888]=5, + [69889]=5, + [69890]=5, + [69927]=5, + [69928]=5, + [69929]=5, + [69930]=5, + [69931]=5, + [69933]=5, + [69934]=5, + [69935]=5, + [69936]=5, + [69937]=5, + [69938]=5, + [69939]=5, + [69940]=5, + [70003]=5, + [70016]=5, + [70017]=5, + [70070]=5, + [70071]=5, + [70072]=5, + [70073]=5, + [70074]=5, + [70075]=5, + [70076]=5, + [70077]=5, + [70078]=5, + [70090]=5, + [70091]=5, + [70092]=5, + [70191]=5, + [70192]=5, + [70193]=5, + [70196]=5, + [70198]=5, + [70199]=5, + [70206]=5, + [70367]=5, + [70371]=5, + [70372]=5, + [70373]=5, + [70374]=5, + [70375]=5, + [70376]=5, + [70377]=5, + [70378]=5, + [70400]=5, + [70401]=5, + [70460]=5, + [70464]=5, + [70502]=5, + [70503]=5, + [70504]=5, + [70505]=5, + [70506]=5, + [70507]=5, + [70508]=5, + [70512]=5, + [70513]=5, + [70514]=5, + [70515]=5, + [70516]=5, + [70712]=5, + [70713]=5, + [70714]=5, + [70715]=5, + [70716]=5, + [70717]=5, + [70718]=5, + [70719]=5, + [70722]=5, + [70723]=5, + [70724]=5, + [70726]=5, + [70835]=5, + [70836]=5, + [70837]=5, + [70838]=5, + [70839]=5, + [70840]=5, + [70842]=5, + [70847]=5, + [70848]=5, + [70850]=5, + [70851]=5, + [71090]=5, + [71091]=5, + [71092]=5, + [71093]=5, + [71100]=5, + [71101]=5, + [71103]=5, + [71104]=5, + [71132]=5, + [71133]=5, + [71219]=5, + [71220]=5, + [71221]=5, + [71222]=5, + [71223]=5, + [71224]=5, + [71225]=5, + [71226]=5, + [71229]=5, + [71231]=5, + [71232]=5, + [71339]=5, + [71341]=5, + [71344]=5, + [71345]=5, + [71346]=5, + [71347]=5, + [71348]=5, + [71349]=5, + [71351]=5, + [71453]=5, + [71454]=5, + [71455]=5, + [71458]=5, + [71459]=5, + [71460]=5, + [71461]=5, + [71463]=5, + [71464]=5, + [71465]=5, + [71466]=5, + [71467]=5, + [72752]=5, + [72753]=5, + [72754]=5, + [72755]=5, + [72756]=5, + [72757]=5, + [72758]=5, + [72760]=5, + [72761]=5, + [72762]=5, + [72763]=5, + [72764]=5, + [72765]=5, + [72767]=5, + [72850]=5, + [72851]=5, + [72852]=5, + [72853]=5, + [72854]=5, + [72855]=5, + [72856]=5, + [72857]=5, + [72858]=5, + [72859]=5, + [72860]=5, + [72861]=5, + [72862]=5, + [72863]=5, + [72864]=5, + [72865]=5, + [72866]=5, + [72867]=5, + [72868]=5, + [72869]=5, + [72870]=5, + [72871]=5, + [72874]=5, + [72875]=5, + [72876]=5, + [72877]=5, + [72878]=5, + [72879]=5, + [72880]=5, + [72882]=5, + [72883]=5, + [72885]=5, + [72886]=5, + [92912]=5, + [92913]=5, + [92914]=5, + [92915]=5, + [92916]=5, + [92976]=5, + [92977]=5, + [92978]=5, + [92979]=5, + [92980]=5, + [92981]=5, + [92982]=5, + [94095]=5, + [94096]=5, + [94097]=5, + [94098]=5, + [113821]=5, + [113822]=5, + [119143]=5, + [119144]=5, + [119145]=5, + [119163]=5, + [119164]=5, + [119165]=5, + [119166]=5, + [119167]=5, + [119168]=5, + [119169]=5, + [119170]=5, + [119173]=5, + [119174]=5, + [119175]=5, + [119176]=5, + [119177]=5, + [119178]=5, + [119179]=5, + [119210]=5, + [119211]=5, + [119212]=5, + [119213]=5, + [119362]=5, + [119363]=5, + [119364]=5, + [121344]=5, + [121345]=5, + [121346]=5, + [121347]=5, + [121348]=5, + [121349]=5, + [121350]=5, + [121351]=5, + [121352]=5, + [121353]=5, + [121354]=5, + [121355]=5, + [121356]=5, + [121357]=5, + [121358]=5, + [121359]=5, + [121360]=5, + [121361]=5, + [121362]=5, + [121363]=5, + [121364]=5, + [121365]=5, + [121366]=5, + [121367]=5, + [121368]=5, + [121369]=5, + [121370]=5, + [121371]=5, + [121372]=5, + [121373]=5, + [121374]=5, + [121375]=5, + [121376]=5, + [121377]=5, + [121378]=5, + [121379]=5, + [121380]=5, + [121381]=5, + [121382]=5, + [121383]=5, + [121384]=5, + [121385]=5, + [121386]=5, + [121387]=5, + [121388]=5, + [121389]=5, + [121390]=5, + [121391]=5, + [121392]=5, + [121393]=5, + [121394]=5, + [121395]=5, + [121396]=5, + [121397]=5, + [121398]=5, + [121403]=5, + [121404]=5, + [121405]=5, + [121406]=5, + [121407]=5, + [121408]=5, + [121409]=5, + [121410]=5, + [121411]=5, + [121412]=5, + [121413]=5, + [121414]=5, + [121415]=5, + [121416]=5, + [121417]=5, + [121418]=5, + [121419]=5, + [121420]=5, + [121421]=5, + [121422]=5, + [121423]=5, + [121424]=5, + [121425]=5, + [121426]=5, + [121427]=5, + [121428]=5, + [121429]=5, + [121430]=5, + [121431]=5, + [121432]=5, + [121433]=5, + [121434]=5, + [121435]=5, + [121436]=5, + [121437]=5, + [121438]=5, + [121439]=5, + [121440]=5, + [121441]=5, + [121442]=5, + [121443]=5, + [121444]=5, + [121445]=5, + [121446]=5, + [121447]=5, + [121448]=5, + [121449]=5, + [121450]=5, + [121451]=5, + [121452]=5, + [121461]=5, + [121476]=5, + [121499]=5, + [121500]=5, + [121501]=5, + [121502]=5, + [121503]=5, + [121505]=5, + [121506]=5, + [121507]=5, + [121508]=5, + [121509]=5, + [121510]=5, + [121511]=5, + [121512]=5, + [121513]=5, + [121514]=5, + [121515]=5, + [121516]=5, + [121517]=5, + [121518]=5, + [121519]=5, + [122880]=5, + [122881]=5, + [122882]=5, + [122883]=5, + [122884]=5, + [122885]=5, + [122886]=5, + [122888]=5, + [122889]=5, + [122890]=5, + [122891]=5, + [122892]=5, + [122893]=5, + [122894]=5, + [122895]=5, + [122896]=5, + [122897]=5, + [122898]=5, + [122899]=5, + [122900]=5, + [122901]=5, + [122902]=5, + [122903]=5, + [122904]=5, + [122907]=5, + [122908]=5, + [122909]=5, + [122910]=5, + [122911]=5, + [122912]=5, + [122913]=5, + [122915]=5, + [122916]=5, + [122918]=5, + [122919]=5, + [122920]=5, + [122921]=5, + [122922]=5, + [125136]=5, + [125137]=5, + [125138]=5, + [125139]=5, + [125140]=5, + [125141]=5, + [125142]=5, + [125184]=2, + [125185]=2, + [125186]=2, + [125187]=2, + [125188]=2, + [125189]=2, + [125190]=2, + [125191]=2, + [125192]=2, + [125193]=2, + [125194]=2, + [125195]=2, + [125196]=2, + [125197]=2, + [125198]=2, + [125199]=2, + [125200]=2, + [125201]=2, + [125202]=2, + [125203]=2, + [125204]=2, + [125205]=2, + [125206]=2, + [125207]=2, + [125208]=2, + [125209]=2, + [125210]=2, + [125211]=2, + [125212]=2, + [125213]=2, + [125214]=2, + [125215]=2, + [125216]=2, + [125217]=2, + [125218]=2, + [125219]=2, + [125220]=2, + [125221]=2, + [125222]=2, + [125223]=2, + [125224]=2, + [125225]=2, + [125226]=2, + [125227]=2, + [125228]=2, + [125229]=2, + [125230]=2, + [125231]=2, + [125232]=2, + [125233]=2, + [125234]=2, + [125235]=2, + [125236]=2, + [125237]=2, + [125238]=2, + [125239]=2, + [125240]=2, + [125241]=2, + [125242]=2, + [125243]=2, + [125244]=2, + [125245]=2, + [125246]=2, + [125247]=2, + [125248]=2, + [125249]=2, + [125250]=2, + [125251]=2, + [125252]=5, + [125253]=5, + [125254]=5, + [125255]=5, + [125256]=5, + [125257]=5, + [125258]=5, + [1042752]=5, } -- done diff --git a/tex/generic/context/luatex/luatex-basics-nod.lua b/tex/generic/context/luatex/luatex-basics-nod.lua index 5571a82ba..c51473a4b 100644 --- a/tex/generic/context/luatex/luatex-basics-nod.lua +++ b/tex/generic/context/luatex/luatex-basics-nod.lua @@ -228,8 +228,8 @@ nuts.getcomponents = direct.getcomponents or function(n) return getfield(n,"co nuts.setcomponents = direct.setcomponents or function(n,c) setfield(n,"components",c) end nuts.getkern = direct.getkern or function(n) return getfield(n,"kern") end nuts.setkern = direct.setkern or function(n,k) setfield(n,"kern",k) end -nuts.getdir = direct.getkern or function(n) return getfield(n,"dir") end -nuts.setdir = direct.setkern or function(n,d) setfield(n,"dir",d) end +nuts.getdir = direct.getdir or function(n) return getfield(n,"dir") end +nuts.setdir = direct.setdir or function(n,d) setfield(n,"dir",d) end nuts.getwidth = direct.getwidth or function(n) return getfield(n,"width") end nuts.setwidth = direct.setwidth or function(n,w) return setfield(n,"width",w) end nuts.getheight = direct.getheight or function(n) return getfield(n,"height") end @@ -462,3 +462,37 @@ function nuts.copy_only_glyphs(current) end return head end + +nuts.uses_font = direct.uses_font + +if not nuts.uses_font then + local getdisc = nuts.getdisc + local getfont = nuts.getfont + function nuts.uses_font(n,font) + local pre, post, replace = getdisc(n) + if pre then + -- traverse_char + for n in traverse_id(glyph_code,pre) do + if getfont(n) == font then + return true + end + end + end + if post then + for n in traverse_id(glyph_code,post) do + if getfont(n) == font then + return true + end + end + end + if replace then + for n in traverse_id(glyph_code,replace) do + if getfont(n) == font then + return true + end + end + end + return false + end +end + diff --git a/tex/generic/context/luatex/luatex-basics-prepare.tex b/tex/generic/context/luatex/luatex-basics-prepare.tex index 105226440..76a35cc94 100644 --- a/tex/generic/context/luatex/luatex-basics-prepare.tex +++ b/tex/generic/context/luatex/luatex-basics-prepare.tex @@ -58,6 +58,8 @@ for k, c in next, chardata do else classifiers[k] = s_rest end + elseif c.category == "mn" then + classifiers[k] = s_mark end end end diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index cc8c27bcf..a94ba85af 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 : 05/12/17 22:40:43 +-- merge date : 05/25/17 12:50:49 do -- begin closure to overcome local limits and interference @@ -5105,8 +5105,8 @@ nuts.getcomponents=direct.getcomponents or function(n) return getfield(n,"compo nuts.setcomponents=direct.setcomponents or function(n,c) setfield(n,"components",c) end nuts.getkern=direct.getkern or function(n) return getfield(n,"kern") end nuts.setkern=direct.setkern or function(n,k) setfield(n,"kern",k) end -nuts.getdir=direct.getkern or function(n) return getfield(n,"dir") end -nuts.setdir=direct.setkern or function(n,d) setfield(n,"dir",d) end +nuts.getdir=direct.getdir or function(n) return getfield(n,"dir") end +nuts.setdir=direct.setdir or function(n,d) setfield(n,"dir",d) end nuts.getwidth=direct.getwidth or function(n) return getfield(n,"width") end nuts.setwidth=direct.setwidth or function(n,w) return setfield(n,"width",w) end nuts.getheight=direct.getheight or function(n) return getfield(n,"height") end @@ -5310,6 +5310,36 @@ function nuts.copy_only_glyphs(current) end return head end +nuts.uses_font=direct.uses_font +if not nuts.uses_font then + local getdisc=nuts.getdisc + local getfont=nuts.getfont + function nuts.uses_font(n,font) + local pre,post,replace=getdisc(n) + if pre then + for n in traverse_id(glyph_code,pre) do + if getfont(n)==font then + return true + end + end + end + if post then + for n in traverse_id(glyph_code,post) do + if getfont(n)==font then + return true + end + end + end + if replace then + for n in traverse_id(glyph_code,replace) do + if getfont(n)==font then + return true + end + end + end + return false + end +end end -- closure @@ -5319,6 +5349,174 @@ do -- begin closure to overcome local limits and interference characters=characters or {} characters.blockrange={} characters.classifiers={ + [768]=5, + [769]=5, + [770]=5, + [771]=5, + [772]=5, + [773]=5, + [774]=5, + [775]=5, + [776]=5, + [777]=5, + [778]=5, + [779]=5, + [780]=5, + [781]=5, + [782]=5, + [783]=5, + [784]=5, + [785]=5, + [786]=5, + [787]=5, + [788]=5, + [789]=5, + [790]=5, + [791]=5, + [792]=5, + [793]=5, + [794]=5, + [795]=5, + [796]=5, + [797]=5, + [798]=5, + [799]=5, + [800]=5, + [801]=5, + [802]=5, + [803]=5, + [804]=5, + [805]=5, + [806]=5, + [807]=5, + [808]=5, + [809]=5, + [810]=5, + [811]=5, + [812]=5, + [813]=5, + [814]=5, + [815]=5, + [816]=5, + [817]=5, + [818]=5, + [819]=5, + [820]=5, + [821]=5, + [822]=5, + [823]=5, + [824]=5, + [825]=5, + [826]=5, + [827]=5, + [828]=5, + [829]=5, + [830]=5, + [831]=5, + [832]=5, + [833]=5, + [834]=5, + [835]=5, + [836]=5, + [837]=5, + [838]=5, + [839]=5, + [840]=5, + [841]=5, + [842]=5, + [843]=5, + [844]=5, + [845]=5, + [846]=5, + [847]=5, + [848]=5, + [849]=5, + [850]=5, + [851]=5, + [852]=5, + [853]=5, + [854]=5, + [855]=5, + [856]=5, + [857]=5, + [858]=5, + [859]=5, + [860]=5, + [861]=5, + [862]=5, + [863]=5, + [864]=5, + [865]=5, + [866]=5, + [867]=5, + [868]=5, + [869]=5, + [870]=5, + [871]=5, + [872]=5, + [873]=5, + [874]=5, + [875]=5, + [876]=5, + [877]=5, + [878]=5, + [879]=5, + [1155]=5, + [1156]=5, + [1157]=5, + [1158]=5, + [1159]=5, + [1425]=5, + [1426]=5, + [1427]=5, + [1428]=5, + [1429]=5, + [1430]=5, + [1431]=5, + [1432]=5, + [1433]=5, + [1434]=5, + [1435]=5, + [1436]=5, + [1437]=5, + [1438]=5, + [1439]=5, + [1440]=5, + [1441]=5, + [1442]=5, + [1443]=5, + [1444]=5, + [1445]=5, + [1446]=5, + [1447]=5, + [1448]=5, + [1449]=5, + [1450]=5, + [1451]=5, + [1452]=5, + [1453]=5, + [1454]=5, + [1455]=5, + [1456]=5, + [1457]=5, + [1458]=5, + [1459]=5, + [1460]=5, + [1461]=5, + [1462]=5, + [1463]=5, + [1464]=5, + [1465]=5, + [1466]=5, + [1467]=5, + [1468]=5, + [1469]=5, + [1471]=5, + [1473]=5, + [1474]=5, + [1476]=5, + [1477]=5, + [1479]=5, [1536]=4, [1537]=4, [1538]=4, @@ -5699,6 +5897,17 @@ characters.classifiers={ [1917]=2, [1918]=2, [1919]=2, + [1958]=5, + [1959]=5, + [1960]=5, + [1961]=5, + [1962]=5, + [1963]=5, + [1964]=5, + [1965]=5, + [1966]=5, + [1967]=5, + [1968]=5, [1984]=6, [1985]=6, [1986]=6, @@ -5758,6 +5967,27 @@ characters.classifiers={ [2040]=6, [2041]=6, [2042]=2, + [2070]=5, + [2071]=5, + [2072]=5, + [2073]=5, + [2075]=5, + [2076]=5, + [2077]=5, + [2078]=5, + [2079]=5, + [2080]=5, + [2081]=5, + [2082]=5, + [2083]=5, + [2085]=5, + [2086]=5, + [2087]=5, + [2089]=5, + [2090]=5, + [2091]=5, + [2092]=5, + [2093]=5, [2112]=3, [2113]=2, [2114]=2, @@ -5783,6 +6013,9 @@ characters.classifiers={ [2134]=4, [2135]=4, [2136]=4, + [2137]=5, + [2138]=5, + [2139]=5, [2208]=2, [2209]=2, [2210]=2, @@ -5804,9 +6037,339 @@ characters.classifiers={ [2226]=3, [2227]=2, [2228]=2, + [2230]=2, + [2231]=2, + [2232]=2, + [2233]=3, + [2234]=2, + [2235]=2, + [2236]=2, + [2237]=2, + [2260]=5, + [2261]=5, + [2262]=5, + [2263]=5, + [2264]=5, + [2265]=5, + [2266]=5, + [2267]=5, + [2268]=5, + [2269]=5, + [2270]=5, + [2271]=5, + [2272]=5, + [2273]=5, + [2274]=4, + [2275]=5, + [2276]=5, + [2277]=5, + [2278]=5, + [2279]=5, + [2280]=5, + [2281]=5, + [2282]=5, + [2283]=5, + [2284]=5, + [2285]=5, + [2286]=5, + [2287]=5, + [2288]=5, + [2289]=5, + [2290]=5, + [2291]=5, + [2292]=5, + [2293]=5, + [2294]=5, + [2295]=5, + [2296]=5, + [2297]=5, + [2298]=5, + [2299]=5, + [2300]=5, + [2301]=5, + [2302]=5, + [2303]=5, + [2304]=5, + [2305]=5, + [2306]=5, + [2362]=5, + [2364]=5, + [2369]=5, + [2370]=5, + [2371]=5, + [2372]=5, + [2373]=5, + [2374]=5, + [2375]=5, + [2376]=5, + [2381]=5, + [2385]=5, + [2386]=5, + [2387]=5, + [2388]=5, + [2389]=5, + [2390]=5, + [2391]=5, + [2402]=5, + [2403]=5, + [2433]=5, + [2492]=5, + [2497]=5, + [2498]=5, + [2499]=5, + [2500]=5, + [2509]=5, + [2530]=5, + [2531]=5, + [2561]=5, + [2562]=5, + [2620]=5, + [2625]=5, + [2626]=5, + [2631]=5, + [2632]=5, + [2635]=5, + [2636]=5, + [2637]=5, + [2641]=5, + [2672]=5, + [2673]=5, + [2677]=5, + [2689]=5, + [2690]=5, + [2748]=5, + [2753]=5, + [2754]=5, + [2755]=5, + [2756]=5, + [2757]=5, + [2759]=5, + [2760]=5, + [2765]=5, + [2786]=5, + [2787]=5, + [2817]=5, + [2876]=5, + [2879]=5, + [2881]=5, + [2882]=5, + [2883]=5, + [2884]=5, + [2893]=5, + [2902]=5, + [2914]=5, + [2915]=5, + [2946]=5, + [3008]=5, + [3021]=5, + [3072]=5, + [3134]=5, + [3135]=5, + [3136]=5, + [3142]=5, + [3143]=5, + [3144]=5, + [3146]=5, + [3147]=5, + [3148]=5, + [3149]=5, + [3157]=5, + [3158]=5, + [3170]=5, + [3171]=5, + [3201]=5, + [3260]=5, + [3263]=5, + [3270]=5, + [3276]=5, + [3277]=5, + [3298]=5, + [3299]=5, + [3329]=5, + [3393]=5, + [3394]=5, + [3395]=5, + [3396]=5, + [3405]=5, + [3426]=5, + [3427]=5, + [3530]=5, + [3538]=5, + [3539]=5, + [3540]=5, + [3542]=5, + [3633]=5, + [3636]=5, + [3637]=5, + [3638]=5, + [3639]=5, + [3640]=5, + [3641]=5, + [3642]=5, + [3655]=5, + [3656]=5, + [3657]=5, + [3658]=5, + [3659]=5, + [3660]=5, + [3661]=5, + [3662]=5, + [3761]=5, + [3764]=5, + [3765]=5, + [3766]=5, + [3767]=5, + [3768]=5, + [3769]=5, + [3771]=5, + [3772]=5, + [3784]=5, + [3785]=5, + [3786]=5, + [3787]=5, + [3788]=5, + [3789]=5, + [3864]=5, + [3865]=5, + [3893]=5, + [3895]=5, + [3897]=5, + [3953]=5, + [3954]=5, + [3955]=5, + [3956]=5, + [3957]=5, + [3958]=5, + [3959]=5, + [3960]=5, + [3961]=5, + [3962]=5, + [3963]=5, + [3964]=5, + [3965]=5, + [3966]=5, + [3968]=5, + [3969]=5, + [3970]=5, + [3971]=5, + [3972]=5, + [3974]=5, + [3975]=5, + [3981]=5, + [3982]=5, + [3983]=5, + [3984]=5, + [3985]=5, + [3986]=5, + [3987]=5, + [3988]=5, + [3989]=5, + [3990]=5, + [3991]=5, + [3993]=5, + [3994]=5, + [3995]=5, + [3996]=5, + [3997]=5, + [3998]=5, + [3999]=5, + [4000]=5, + [4001]=5, + [4002]=5, + [4003]=5, + [4004]=5, + [4005]=5, + [4006]=5, + [4007]=5, + [4008]=5, + [4009]=5, + [4010]=5, + [4011]=5, + [4012]=5, + [4013]=5, + [4014]=5, + [4015]=5, + [4016]=5, + [4017]=5, + [4018]=5, + [4019]=5, + [4020]=5, + [4021]=5, + [4022]=5, + [4023]=5, + [4024]=5, + [4025]=5, + [4026]=5, + [4027]=5, + [4028]=5, + [4038]=5, + [4141]=5, + [4142]=5, + [4143]=5, + [4144]=5, + [4146]=5, + [4147]=5, + [4148]=5, + [4149]=5, + [4150]=5, + [4151]=5, + [4153]=5, + [4154]=5, + [4157]=5, + [4158]=5, + [4184]=5, + [4185]=5, + [4190]=5, + [4191]=5, + [4192]=5, + [4209]=5, + [4210]=5, + [4211]=5, + [4212]=5, + [4226]=5, + [4229]=5, + [4230]=5, + [4237]=5, + [4253]=5, + [4957]=5, + [4958]=5, + [4959]=5, + [5906]=5, + [5907]=5, + [5908]=5, + [5938]=5, + [5939]=5, + [5940]=5, + [5970]=5, + [5971]=5, + [6002]=5, + [6003]=5, + [6071]=5, + [6072]=5, + [6073]=5, + [6074]=5, + [6075]=5, + [6076]=5, + [6077]=5, + [6086]=5, + [6089]=5, + [6090]=5, + [6091]=5, + [6092]=5, + [6093]=5, + [6094]=5, + [6095]=5, + [6096]=5, + [6097]=5, + [6098]=5, + [6099]=5, + [6109]=5, [6150]=4, [6151]=2, [6154]=2, + [6155]=5, + [6156]=5, + [6157]=5, [6158]=4, [6176]=2, [6177]=2, @@ -5901,8 +6464,6 @@ characters.classifiers={ [6274]=4, [6275]=4, [6276]=4, - [6277]=4, - [6278]=4, [6279]=2, [6280]=2, [6281]=2, @@ -5937,13 +6498,291 @@ characters.classifiers={ [6310]=2, [6311]=2, [6312]=2, + [6313]=5, [6314]=2, + [6432]=5, + [6433]=5, + [6434]=5, + [6439]=5, + [6440]=5, + [6450]=5, + [6457]=5, + [6458]=5, + [6459]=5, + [6679]=5, + [6680]=5, + [6742]=5, + [6744]=5, + [6745]=5, + [6746]=5, + [6747]=5, + [6748]=5, + [6749]=5, + [6750]=5, + [6752]=5, + [6754]=5, + [6757]=5, + [6758]=5, + [6759]=5, + [6760]=5, + [6761]=5, + [6762]=5, + [6763]=5, + [6764]=5, + [6771]=5, + [6772]=5, + [6773]=5, + [6774]=5, + [6775]=5, + [6776]=5, + [6777]=5, + [6778]=5, + [6779]=5, + [6780]=5, + [6783]=5, + [6832]=5, + [6833]=5, + [6834]=5, + [6835]=5, + [6836]=5, + [6837]=5, + [6838]=5, + [6839]=5, + [6840]=5, + [6841]=5, + [6842]=5, + [6843]=5, + [6844]=5, + [6845]=5, + [6912]=5, + [6913]=5, + [6914]=5, + [6915]=5, + [6964]=5, + [6966]=5, + [6967]=5, + [6968]=5, + [6969]=5, + [6970]=5, + [6972]=5, + [6978]=5, + [7019]=5, + [7020]=5, + [7021]=5, + [7022]=5, + [7023]=5, + [7024]=5, + [7025]=5, + [7026]=5, + [7027]=5, + [7040]=5, + [7041]=5, + [7074]=5, + [7075]=5, + [7076]=5, + [7077]=5, + [7080]=5, + [7081]=5, + [7083]=5, + [7142]=5, + [7144]=5, + [7145]=5, + [7149]=5, + [7151]=5, + [7152]=5, + [7153]=5, + [7212]=5, + [7213]=5, + [7214]=5, + [7215]=5, + [7216]=5, + [7217]=5, + [7218]=5, + [7219]=5, + [7222]=5, + [7223]=5, + [7376]=5, + [7377]=5, + [7378]=5, + [7380]=5, + [7381]=5, + [7382]=5, + [7383]=5, + [7384]=5, + [7385]=5, + [7386]=5, + [7387]=5, + [7388]=5, + [7389]=5, + [7390]=5, + [7391]=5, + [7392]=5, + [7394]=5, + [7395]=5, + [7396]=5, + [7397]=5, + [7398]=5, + [7399]=5, + [7400]=5, + [7405]=5, + [7412]=5, + [7416]=5, + [7417]=5, + [7616]=5, + [7617]=5, + [7618]=5, + [7619]=5, + [7620]=5, + [7621]=5, + [7622]=5, + [7623]=5, + [7624]=5, + [7625]=5, + [7626]=5, + [7627]=5, + [7628]=5, + [7629]=5, + [7630]=5, + [7631]=5, + [7632]=5, + [7633]=5, + [7634]=5, + [7635]=5, + [7636]=5, + [7637]=5, + [7638]=5, + [7639]=5, + [7640]=5, + [7641]=5, + [7642]=5, + [7643]=5, + [7644]=5, + [7645]=5, + [7646]=5, + [7647]=5, + [7648]=5, + [7649]=5, + [7650]=5, + [7651]=5, + [7652]=5, + [7653]=5, + [7654]=5, + [7655]=5, + [7656]=5, + [7657]=5, + [7658]=5, + [7659]=5, + [7660]=5, + [7661]=5, + [7662]=5, + [7663]=5, + [7664]=5, + [7665]=5, + [7666]=5, + [7667]=5, + [7668]=5, + [7669]=5, + [7675]=5, + [7676]=5, + [7677]=5, + [7678]=5, + [7679]=5, [8204]=4, [8205]=2, + [8239]=4, [8294]=4, [8295]=4, [8296]=4, [8297]=4, + [8400]=5, + [8401]=5, + [8402]=5, + [8403]=5, + [8404]=5, + [8405]=5, + [8406]=5, + [8407]=5, + [8408]=5, + [8409]=5, + [8410]=5, + [8411]=5, + [8412]=5, + [8417]=5, + [8421]=5, + [8422]=5, + [8423]=5, + [8424]=5, + [8425]=5, + [8426]=5, + [8427]=5, + [8428]=5, + [8429]=5, + [8430]=5, + [8431]=5, + [8432]=5, + [11503]=5, + [11504]=5, + [11505]=5, + [11647]=5, + [11744]=5, + [11745]=5, + [11746]=5, + [11747]=5, + [11748]=5, + [11749]=5, + [11750]=5, + [11751]=5, + [11752]=5, + [11753]=5, + [11754]=5, + [11755]=5, + [11756]=5, + [11757]=5, + [11758]=5, + [11759]=5, + [11760]=5, + [11761]=5, + [11762]=5, + [11763]=5, + [11764]=5, + [11765]=5, + [11766]=5, + [11767]=5, + [11768]=5, + [11769]=5, + [11770]=5, + [11771]=5, + [11772]=5, + [11773]=5, + [11774]=5, + [11775]=5, + [12330]=5, + [12331]=5, + [12332]=5, + [12333]=5, + [12334]=5, + [12335]=5, + [12441]=5, + [12442]=5, + [42607]=5, + [42612]=5, + [42613]=5, + [42614]=5, + [42615]=5, + [42616]=5, + [42617]=5, + [42618]=5, + [42619]=5, + [42620]=5, + [42621]=5, + [42654]=5, + [42655]=5, + [42736]=5, + [42737]=5, + [43014]=5, + [43019]=5, + [43045]=5, + [43046]=5, [43072]=2, [43073]=2, [43074]=2, @@ -5996,6 +6835,120 @@ characters.classifiers={ [43121]=2, [43122]=1, [43123]=4, + [43204]=5, + [43205]=5, + [43232]=5, + [43233]=5, + [43234]=5, + [43235]=5, + [43236]=5, + [43237]=5, + [43238]=5, + [43239]=5, + [43240]=5, + [43241]=5, + [43242]=5, + [43243]=5, + [43244]=5, + [43245]=5, + [43246]=5, + [43247]=5, + [43248]=5, + [43249]=5, + [43302]=5, + [43303]=5, + [43304]=5, + [43305]=5, + [43306]=5, + [43307]=5, + [43308]=5, + [43309]=5, + [43335]=5, + [43336]=5, + [43337]=5, + [43338]=5, + [43339]=5, + [43340]=5, + [43341]=5, + [43342]=5, + [43343]=5, + [43344]=5, + [43345]=5, + [43392]=5, + [43393]=5, + [43394]=5, + [43443]=5, + [43446]=5, + [43447]=5, + [43448]=5, + [43449]=5, + [43452]=5, + [43493]=5, + [43561]=5, + [43562]=5, + [43563]=5, + [43564]=5, + [43565]=5, + [43566]=5, + [43569]=5, + [43570]=5, + [43573]=5, + [43574]=5, + [43587]=5, + [43596]=5, + [43644]=5, + [43696]=5, + [43698]=5, + [43699]=5, + [43700]=5, + [43703]=5, + [43704]=5, + [43710]=5, + [43711]=5, + [43713]=5, + [43756]=5, + [43757]=5, + [43766]=5, + [44005]=5, + [44008]=5, + [44013]=5, + [64286]=5, + [65056]=5, + [65057]=5, + [65058]=5, + [65059]=5, + [65060]=5, + [65061]=5, + [65062]=5, + [65063]=5, + [65064]=5, + [65065]=5, + [65066]=5, + [65067]=5, + [65068]=5, + [65069]=5, + [65070]=5, + [65071]=5, + [66045]=5, + [66272]=5, + [66422]=5, + [66423]=5, + [66424]=5, + [66425]=5, + [66426]=5, + [68097]=5, + [68098]=5, + [68099]=5, + [68101]=5, + [68102]=5, + [68108]=5, + [68109]=5, + [68110]=5, + [68111]=5, + [68152]=5, + [68153]=5, + [68154]=5, + [68159]=5, [68288]=2, [68289]=2, [68290]=2, @@ -6033,6 +6986,8 @@ characters.classifiers={ [68322]=4, [68323]=4, [68324]=3, + [68325]=5, + [68326]=5, [68331]=2, [68332]=2, [68333]=2, @@ -6063,6 +7018,497 @@ characters.classifiers={ [68525]=2, [68526]=2, [68527]=4, + [69633]=5, + [69688]=5, + [69689]=5, + [69690]=5, + [69691]=5, + [69692]=5, + [69693]=5, + [69694]=5, + [69695]=5, + [69696]=5, + [69697]=5, + [69698]=5, + [69699]=5, + [69700]=5, + [69701]=5, + [69702]=5, + [69759]=5, + [69760]=5, + [69761]=5, + [69811]=5, + [69812]=5, + [69813]=5, + [69814]=5, + [69817]=5, + [69818]=5, + [69888]=5, + [69889]=5, + [69890]=5, + [69927]=5, + [69928]=5, + [69929]=5, + [69930]=5, + [69931]=5, + [69933]=5, + [69934]=5, + [69935]=5, + [69936]=5, + [69937]=5, + [69938]=5, + [69939]=5, + [69940]=5, + [70003]=5, + [70016]=5, + [70017]=5, + [70070]=5, + [70071]=5, + [70072]=5, + [70073]=5, + [70074]=5, + [70075]=5, + [70076]=5, + [70077]=5, + [70078]=5, + [70090]=5, + [70091]=5, + [70092]=5, + [70191]=5, + [70192]=5, + [70193]=5, + [70196]=5, + [70198]=5, + [70199]=5, + [70206]=5, + [70367]=5, + [70371]=5, + [70372]=5, + [70373]=5, + [70374]=5, + [70375]=5, + [70376]=5, + [70377]=5, + [70378]=5, + [70400]=5, + [70401]=5, + [70460]=5, + [70464]=5, + [70502]=5, + [70503]=5, + [70504]=5, + [70505]=5, + [70506]=5, + [70507]=5, + [70508]=5, + [70512]=5, + [70513]=5, + [70514]=5, + [70515]=5, + [70516]=5, + [70712]=5, + [70713]=5, + [70714]=5, + [70715]=5, + [70716]=5, + [70717]=5, + [70718]=5, + [70719]=5, + [70722]=5, + [70723]=5, + [70724]=5, + [70726]=5, + [70835]=5, + [70836]=5, + [70837]=5, + [70838]=5, + [70839]=5, + [70840]=5, + [70842]=5, + [70847]=5, + [70848]=5, + [70850]=5, + [70851]=5, + [71090]=5, + [71091]=5, + [71092]=5, + [71093]=5, + [71100]=5, + [71101]=5, + [71103]=5, + [71104]=5, + [71132]=5, + [71133]=5, + [71219]=5, + [71220]=5, + [71221]=5, + [71222]=5, + [71223]=5, + [71224]=5, + [71225]=5, + [71226]=5, + [71229]=5, + [71231]=5, + [71232]=5, + [71339]=5, + [71341]=5, + [71344]=5, + [71345]=5, + [71346]=5, + [71347]=5, + [71348]=5, + [71349]=5, + [71351]=5, + [71453]=5, + [71454]=5, + [71455]=5, + [71458]=5, + [71459]=5, + [71460]=5, + [71461]=5, + [71463]=5, + [71464]=5, + [71465]=5, + [71466]=5, + [71467]=5, + [72752]=5, + [72753]=5, + [72754]=5, + [72755]=5, + [72756]=5, + [72757]=5, + [72758]=5, + [72760]=5, + [72761]=5, + [72762]=5, + [72763]=5, + [72764]=5, + [72765]=5, + [72767]=5, + [72850]=5, + [72851]=5, + [72852]=5, + [72853]=5, + [72854]=5, + [72855]=5, + [72856]=5, + [72857]=5, + [72858]=5, + [72859]=5, + [72860]=5, + [72861]=5, + [72862]=5, + [72863]=5, + [72864]=5, + [72865]=5, + [72866]=5, + [72867]=5, + [72868]=5, + [72869]=5, + [72870]=5, + [72871]=5, + [72874]=5, + [72875]=5, + [72876]=5, + [72877]=5, + [72878]=5, + [72879]=5, + [72880]=5, + [72882]=5, + [72883]=5, + [72885]=5, + [72886]=5, + [92912]=5, + [92913]=5, + [92914]=5, + [92915]=5, + [92916]=5, + [92976]=5, + [92977]=5, + [92978]=5, + [92979]=5, + [92980]=5, + [92981]=5, + [92982]=5, + [94095]=5, + [94096]=5, + [94097]=5, + [94098]=5, + [113821]=5, + [113822]=5, + [119143]=5, + [119144]=5, + [119145]=5, + [119163]=5, + [119164]=5, + [119165]=5, + [119166]=5, + [119167]=5, + [119168]=5, + [119169]=5, + [119170]=5, + [119173]=5, + [119174]=5, + [119175]=5, + [119176]=5, + [119177]=5, + [119178]=5, + [119179]=5, + [119210]=5, + [119211]=5, + [119212]=5, + [119213]=5, + [119362]=5, + [119363]=5, + [119364]=5, + [121344]=5, + [121345]=5, + [121346]=5, + [121347]=5, + [121348]=5, + [121349]=5, + [121350]=5, + [121351]=5, + [121352]=5, + [121353]=5, + [121354]=5, + [121355]=5, + [121356]=5, + [121357]=5, + [121358]=5, + [121359]=5, + [121360]=5, + [121361]=5, + [121362]=5, + [121363]=5, + [121364]=5, + [121365]=5, + [121366]=5, + [121367]=5, + [121368]=5, + [121369]=5, + [121370]=5, + [121371]=5, + [121372]=5, + [121373]=5, + [121374]=5, + [121375]=5, + [121376]=5, + [121377]=5, + [121378]=5, + [121379]=5, + [121380]=5, + [121381]=5, + [121382]=5, + [121383]=5, + [121384]=5, + [121385]=5, + [121386]=5, + [121387]=5, + [121388]=5, + [121389]=5, + [121390]=5, + [121391]=5, + [121392]=5, + [121393]=5, + [121394]=5, + [121395]=5, + [121396]=5, + [121397]=5, + [121398]=5, + [121403]=5, + [121404]=5, + [121405]=5, + [121406]=5, + [121407]=5, + [121408]=5, + [121409]=5, + [121410]=5, + [121411]=5, + [121412]=5, + [121413]=5, + [121414]=5, + [121415]=5, + [121416]=5, + [121417]=5, + [121418]=5, + [121419]=5, + [121420]=5, + [121421]=5, + [121422]=5, + [121423]=5, + [121424]=5, + [121425]=5, + [121426]=5, + [121427]=5, + [121428]=5, + [121429]=5, + [121430]=5, + [121431]=5, + [121432]=5, + [121433]=5, + [121434]=5, + [121435]=5, + [121436]=5, + [121437]=5, + [121438]=5, + [121439]=5, + [121440]=5, + [121441]=5, + [121442]=5, + [121443]=5, + [121444]=5, + [121445]=5, + [121446]=5, + [121447]=5, + [121448]=5, + [121449]=5, + [121450]=5, + [121451]=5, + [121452]=5, + [121461]=5, + [121476]=5, + [121499]=5, + [121500]=5, + [121501]=5, + [121502]=5, + [121503]=5, + [121505]=5, + [121506]=5, + [121507]=5, + [121508]=5, + [121509]=5, + [121510]=5, + [121511]=5, + [121512]=5, + [121513]=5, + [121514]=5, + [121515]=5, + [121516]=5, + [121517]=5, + [121518]=5, + [121519]=5, + [122880]=5, + [122881]=5, + [122882]=5, + [122883]=5, + [122884]=5, + [122885]=5, + [122886]=5, + [122888]=5, + [122889]=5, + [122890]=5, + [122891]=5, + [122892]=5, + [122893]=5, + [122894]=5, + [122895]=5, + [122896]=5, + [122897]=5, + [122898]=5, + [122899]=5, + [122900]=5, + [122901]=5, + [122902]=5, + [122903]=5, + [122904]=5, + [122907]=5, + [122908]=5, + [122909]=5, + [122910]=5, + [122911]=5, + [122912]=5, + [122913]=5, + [122915]=5, + [122916]=5, + [122918]=5, + [122919]=5, + [122920]=5, + [122921]=5, + [122922]=5, + [125136]=5, + [125137]=5, + [125138]=5, + [125139]=5, + [125140]=5, + [125141]=5, + [125142]=5, + [125184]=2, + [125185]=2, + [125186]=2, + [125187]=2, + [125188]=2, + [125189]=2, + [125190]=2, + [125191]=2, + [125192]=2, + [125193]=2, + [125194]=2, + [125195]=2, + [125196]=2, + [125197]=2, + [125198]=2, + [125199]=2, + [125200]=2, + [125201]=2, + [125202]=2, + [125203]=2, + [125204]=2, + [125205]=2, + [125206]=2, + [125207]=2, + [125208]=2, + [125209]=2, + [125210]=2, + [125211]=2, + [125212]=2, + [125213]=2, + [125214]=2, + [125215]=2, + [125216]=2, + [125217]=2, + [125218]=2, + [125219]=2, + [125220]=2, + [125221]=2, + [125222]=2, + [125223]=2, + [125224]=2, + [125225]=2, + [125226]=2, + [125227]=2, + [125228]=2, + [125229]=2, + [125230]=2, + [125231]=2, + [125232]=2, + [125233]=2, + [125234]=2, + [125235]=2, + [125236]=2, + [125237]=2, + [125238]=2, + [125239]=2, + [125240]=2, + [125241]=2, + [125242]=2, + [125243]=2, + [125244]=2, + [125245]=2, + [125246]=2, + [125247]=2, + [125248]=2, + [125249]=2, + [125250]=2, + [125251]=2, + [125252]=5, + [125253]=5, + [125254]=5, + [125255]=5, + [125256]=5, + [125257]=5, + [125258]=5, + [1042752]=5, } end -- closure @@ -7548,7 +8994,7 @@ local sortedhash,sortedkeys=table.sortedhash,table.sortedkeys local trace_loading=false trackers.register("fonts.loading",function(v) trace_loading=v end) local trace_mapping=false trackers.register("fonts.mapping",function(v) trace_mapping=v end) local report_fonts=logs.reporter("fonts","loading") -local force_ligatures=true directives.register("fonts.mapping.forceligatures",function(v) force_ligatures=v end) +local force_ligatures=false directives.register("fonts.mapping.forceligatures",function(v) force_ligatures=v end) local fonts=fonts or {} local mappings=fonts.mappings or {} fonts.mappings=mappings @@ -7662,7 +9108,7 @@ do end mappings.overloads=o end -function mappings.addtounicode(data,filename,checklookups) +function mappings.addtounicode(data,filename,checklookups,forceligatures) local resources=data.resources local unicodes=resources.unicodes if not unicodes then @@ -7851,22 +9297,26 @@ function mappings.addtounicode(data,filename,checklookups) end end if not collected then - elseif force_ligatures then + elseif forceligatures or force_ligatures then for i=1,#dlist do local du=dlist[i] - local u=collected[du] - if u then - resolve(descriptions[du],u) + if du>=private or (du>=0xE000 and du<=0xF8FF) then + local u=collected[du] + if u then + resolve(descriptions[du],u) + end end end else for i=1,#dlist do local du=dlist[i] - local glyph=descriptions[du] - if glyph.class=="ligature" and not glyph.unicode then - local u=collected[du] - if u then - resolve(glyph,u) + if du>=private or (du>=0xE000 and du<=0xF8FF) then + local glyph=descriptions[du] + if glyph.class=="ligature" and not glyph.unicode then + local u=collected[du] + if u then + resolve(glyph,u) + end end end end @@ -11857,8 +13307,10 @@ local function applyaxis(glyph,shape,deltas,dowidth) local points=shape.points if points then local nofpoints=#points - local h=nofpoints+1 - local width=dowidth and glyph.width + local h=nofpoints+2 + local l=nofpoints+1 + local dw=0 + local dl=0 for i=1,#deltas do local deltaset=deltas[i] local xvalues=deltaset.xvalues @@ -11883,10 +13335,17 @@ local function applyaxis(glyph,shape,deltas,dowidth) p[2]=p[2]+factor*y end end - elseif width then - local x=xvalues[d+1] - if x then - width=width+factor*x + elseif dowidth then + if d==h then + local x=xvalues[i] + if x then + dw=dw+factor*x + end + elseif d==l then + local x=xvalues[i] + if x then + dl=dl+factor*x + end end end end @@ -11906,16 +13365,21 @@ local function applyaxis(glyph,shape,deltas,dowidth) end end end - if width then + if dowidth then local x=xvalues[h] if x then - width=width+factor*x + dw=dw+factor*x + end + local x=xvalues[l] + if x then + dl=dl+factor*x end end end end - if width then - glyph.width=width + if dowidth then + local width=glyph.width or 0 + glyph.width=width+dw-dl end else report("no points for glyph %a",glyph.name) @@ -12668,7 +14132,7 @@ function readers.gvar(f,fontdata,specification,glyphdata,shapedata) local data={} local tuples={} local glyphdata=fontdata.glyphs - local dowidth=fontdata.variabledata.hvarwidths + local dowidth=not fontdata.variabledata.hvarwidths if bittest(flags,0x0001) then for i=1,nofglyphs+1 do data[i]=dataoffset+readulong(f) @@ -18568,6 +20032,7 @@ otf.coverup={ multiple=justset, kern=justset, pair=justset, + single=justset, ligature=function(coverage,unicode,ligature) local first=ligature[1] local tree=coverage[first] @@ -20191,6 +21656,10 @@ function injections.isspace(n,threshold,id) end end end +local getspaceboth=getboth +function injections.installgetspaceboth(gb) + getspaceboth=gb or getboth +end local function injectspaces(head) if not triggers then return head,false @@ -20211,9 +21680,9 @@ local function injectspaces(head) factor=getthreshold(font) end for n in traverse_id(glue_code,tonut(head)) do - local prev,next=getboth(n) - local prevchar=ischar(prev) - local nextchar=ischar(next) + local prev,next=getspaceboth(n) + local prevchar=prev and ischar(prev) + local nextchar=next and ischar(next) if nextchar then local font=getfont(next) local trig=triggers[font] @@ -20726,11 +22195,10 @@ local report_chain=logs.reporter("fonts","otf chain") local report_process=logs.reporter("fonts","otf process") local report_warning=logs.reporter("fonts","otf warning") local report_run=logs.reporter("fonts","otf run") -registertracker("otf.replacements","otf.singles,otf.multiples,otf.alternatives,otf.ligatures") -registertracker("otf.positions","otf.marks,otf.kerns,otf.cursive") -registertracker("otf.actions","otf.replacements,otf.positions") -registertracker("otf.injections","nodes.injections") -registertracker("otf.sample","otf.steps,otf.actions,otf.analyzing") +registertracker("otf.substitutions","otf.singles","otf.multiples","otf.alternatives","otf.ligatures") +registertracker("otf.positions","otf.marks","otf.kerns","otf.cursive") +registertracker("otf.actions","otf.substitutions","otf.positions") +registertracker("otf.sample","otf.steps","otf.substitutions","otf.positions","otf.analyzing") local nuts=nodes.nuts local tonode=nuts.tonode local tonut=nuts.tonut @@ -20760,6 +22228,7 @@ local setcomponents=nuts.setcomponents local getdir=nuts.getdir local getwidth=nuts.getwidth local ischar=nuts.is_char +local usesfont=nuts.uses_font local insert_node_after=nuts.insert_after local copy_node=nuts.copy local copy_node_list=nuts.copy_list @@ -21288,7 +22757,7 @@ function handlers.gsub_ligature(head,start,dataset,sequence,ligature) end function handlers.gpos_single(head,start,dataset,sequence,kerns,rlmode,step,i,injection) local startchar=getchar(start) - if step.format=="pair" then + if step.format=="pair" or type(kerns)=="table" then local dx,dy,w,h=setpair(start,factor,rlmode,sequence.flags[4],kerns,injection) if trace_kerns then logprocess("%s: shifting single %s by (%p,%p) and correction (%p,%p)",pref(dataset,sequence),gref(startchar),dx,dy,w,h) @@ -23644,102 +25113,167 @@ end otf.helpers=otf.helpers or {} otf.helpers.txtdirstate=txtdirstate otf.helpers.pardirstate=pardirstate -local function featuresprocessor(head,font,attr,direction) - local sequences=sequencelists[font] - if not sequencelists then - return head,false - end - nesting=nesting+1 - if nesting==1 then - currentfont=font - tfmdata=fontdata[font] - descriptions=tfmdata.descriptions - characters=tfmdata.characters - local resources=tfmdata.resources - marks=resources.marks - classes=resources.classes - threshold, - factor=getthreshold(font) - checkmarks=tfmdata.properties.checkmarks - elseif currentfont~=font then - report_warning("nested call with a different font, level %s, quitting",nesting) - nesting=nesting-1 - return head,false - end - head=tonut(head) - if trace_steps then - checkstep(head) - end - local initialrl=direction=="TRT" and -1 or 0 - local done=false - local datasets=otf.dataset(tfmdata,font,attr) - local dirstack={} - sweephead={} - for s=1,#datasets do - local dataset=datasets[s] - local attribute=dataset[2] - local sequence=dataset[3] - local rlparmode=initialrl - local topstack=0 - local typ=sequence.type - local gpossing=typ=="gpos_single" or typ=="gpos_pair" - local handler=handlers[typ] - local steps=sequence.steps - local nofsteps=sequence.nofsteps - if not steps then - local h,d,ok=handler(head,head,dataset,sequence,nil,nil,nil,0,font,attr) - if ok then - done=true - if h then - head=h - end - end - elseif typ=="gsub_reversecontextchain" then - local start=find_node_tail(head) - local rlmode=0 - while start do - local char=ischar(start,font) - if char then - local a - if attr then - a=getattr(start,0) +do + local fastdisc=false directives.register("otf.fastdisc",function(v) fastdisc=v end) + function otf.featuresprocessor(head,font,attr,direction,n) + local sequences=sequencelists[font] + if not sequencelists then + return head,false + end + nesting=nesting+1 + if nesting==1 then + currentfont=font + tfmdata=fontdata[font] + descriptions=tfmdata.descriptions + characters=tfmdata.characters + local resources=tfmdata.resources + marks=resources.marks + classes=resources.classes + threshold, + factor=getthreshold(font) + checkmarks=tfmdata.properties.checkmarks + elseif currentfont~=font then + report_warning("nested call with a different font, level %s, quitting",nesting) + nesting=nesting-1 + return head,false + end + head=tonut(head) + if trace_steps then + checkstep(head) + end + local initialrl=direction=="TRT" and -1 or 0 + local done=false + local datasets=otf.dataset(tfmdata,font,attr) + local dirstack={} + sweephead={} + local discs=fastdisc and n and n>1 and setmetatableindex(function(t,k) + local v=usesfont(k,font) + t[k]=v + return v + end) + for s=1,#datasets do + local dataset=datasets[s] + local attribute=dataset[2] + local sequence=dataset[3] + local rlparmode=initialrl + local topstack=0 + local typ=sequence.type + local gpossing=typ=="gpos_single" or typ=="gpos_pair" + local handler=handlers[typ] + local steps=sequence.steps + local nofsteps=sequence.nofsteps + if not steps then + local h,d,ok=handler(head,head,dataset,sequence,nil,nil,nil,0,font,attr) + if ok then + done=true + if h then + head=h end - if not a or (a==attr) then - for i=1,nofsteps do - local step=steps[i] - local lookupcache=step.coverage - if lookupcache then - local lookupmatch=lookupcache[char] - if lookupmatch then - local ok - head,start,ok=handler(head,start,dataset,sequence,lookupmatch,rlmode,step,i) - if ok then - done=true - break + end + elseif typ=="gsub_reversecontextchain" then + local start=find_node_tail(head) + local rlmode=0 + while start do + local char=ischar(start,font) + if char then + local a + if attr then + a=getattr(start,0) + end + if not a or (a==attr) then + for i=1,nofsteps do + local step=steps[i] + local lookupcache=step.coverage + if lookupcache then + local lookupmatch=lookupcache[char] + if lookupmatch then + local ok + head,start,ok=handler(head,start,dataset,sequence,lookupmatch,rlmode,step,i) + if ok then + done=true + break + end end + else + report_missing_coverage(dataset,sequence) end - else - report_missing_coverage(dataset,sequence) end - end - if start then + if start then + start=getprev(start) + end + else start=getprev(start) end else start=getprev(start) end - else - start=getprev(start) end - end - else - local start=head - local rlmode=initialrl - if nofsteps==1 then - local step=steps[1] - local lookupcache=step.coverage - if not lookupcache then - report_missing_coverage(dataset,sequence) + else + local start=head + local rlmode=initialrl + if nofsteps==1 then + local step=steps[1] + local lookupcache=step.coverage + if not lookupcache then + report_missing_coverage(dataset,sequence) + else + while start do + local char,id=ischar(start,font) + if char then + local a + if attr then + if getattr(start,0)==attr and (not attribute or getprop(start,a_state)==attribute) then + a=true + end + elseif not attribute or getprop(start,a_state)==attribute then + a=true + end + if a then + local lookupmatch=lookupcache[char] + if lookupmatch then + local ok + head,start,ok=handler(head,start,dataset,sequence,lookupmatch,rlmode,step,1) + if ok then + done=true + end + end + if start then + start=getnext(start) + end + else + start=getnext(start) + end + elseif char==false then + start=getnext(start) + elseif id==glue_code then + start=getnext(start) + elseif id==disc_code then + if not discs or discs[start]==true then + local ok + if gpossing then + start,ok=kernrun(start,k_run_single,font,attr,lookupcache,step,dataset,sequence,rlmode,handler) + elseif typ=="gsub_ligature" then + start,ok=testrun(start,t_run_single,c_run_single,font,attr,lookupcache,step,dataset,sequence,rlmode,handler) + else + start,ok=comprun(start,c_run_single,font,attr,lookupcache,step,dataset,sequence,rlmode,handler) + end + if ok then + done=true + end + else + start=getnext(start) + end + elseif id==math_code then + start=getnext(end_of_math(start)) + elseif id==dir_code then + start,topstack,rlmode=txtdirstate(start,dirstack,topstack,rlparmode) + elseif id==localpar_code then + start,rlparmode,rlmode=pardirstate(start) + else + start=getnext(start) + end + end + end else while start do local char,id=ischar(start,font) @@ -23753,12 +25287,23 @@ local function featuresprocessor(head,font,attr,direction) a=true end if a then - local lookupmatch=lookupcache[char] - if lookupmatch then - local ok - head,start,ok=handler(head,start,dataset,sequence,lookupmatch,rlmode,step,1) - if ok then - done=true + for i=1,nofsteps do + local step=steps[i] + local lookupcache=step.coverage + if lookupcache then + local lookupmatch=lookupcache[char] + if lookupmatch then + local ok + head,start,ok=handler(head,start,dataset,sequence,lookupmatch,rlmode,step,i) + if ok then + done=true + break + elseif not start then + break + end + end + else + report_missing_coverage(dataset,sequence) end end if start then @@ -23772,16 +25317,20 @@ local function featuresprocessor(head,font,attr,direction) elseif id==glue_code then start=getnext(start) elseif id==disc_code then - local ok - if gpossing then - start,ok=kernrun(start,k_run_single,font,attr,lookupcache,step,dataset,sequence,rlmode,handler) - elseif typ=="gsub_ligature" then - start,ok=testrun(start,t_run_single,c_run_single,font,attr,lookupcache,step,dataset,sequence,rlmode,handler) + if not discs or discs[start]==true then + local ok + if gpossing then + start,ok=kernrun(start,k_run_multiple,font,attr,steps,nofsteps,dataset,sequence,rlmode,handler) + elseif typ=="gsub_ligature" then + start,ok=testrun(start,t_run_multiple,c_run_multiple,font,attr,steps,nofsteps,dataset,sequence,rlmode,handler) + else + start,ok=comprun(start,c_run_multiple,font,attr,steps,nofsteps,dataset,sequence,rlmode,handler) + end + if ok then + done=true + end else - start,ok=comprun(start,c_run_single,font,attr,lookupcache,step,dataset,sequence,rlmode,handler) - end - if ok then - done=true + start=getnext(start) end elseif id==math_code then start=getnext(end_of_math(start)) @@ -23794,79 +25343,15 @@ local function featuresprocessor(head,font,attr,direction) end end end - else - while start do - local char,id=ischar(start,font) - if char then - local a - if attr then - if getattr(start,0)==attr and (not attribute or getprop(start,a_state)==attribute) then - a=true - end - elseif not attribute or getprop(start,a_state)==attribute then - a=true - end - if a then - for i=1,nofsteps do - local step=steps[i] - local lookupcache=step.coverage - if lookupcache then - local lookupmatch=lookupcache[char] - if lookupmatch then - local ok - head,start,ok=handler(head,start,dataset,sequence,lookupmatch,rlmode,step,i) - if ok then - done=true - break - elseif not start then - break - end - end - else - report_missing_coverage(dataset,sequence) - end - end - if start then - start=getnext(start) - end - else - start=getnext(start) - end - elseif char==false then - start=getnext(start) - elseif id==glue_code then - start=getnext(start) - elseif id==disc_code then - local ok - if gpossing then - start,ok=kernrun(start,k_run_multiple,font,attr,steps,nofsteps,dataset,sequence,rlmode,handler) - elseif typ=="gsub_ligature" then - start,ok=testrun(start,t_run_multiple,c_run_multiple,font,attr,steps,nofsteps,dataset,sequence,rlmode,handler) - else - start,ok=comprun(start,c_run_multiple,font,attr,steps,nofsteps,dataset,sequence,rlmode,handler) - end - if ok then - done=true - end - elseif id==math_code then - start=getnext(end_of_math(start)) - elseif id==dir_code then - start,topstack,rlmode=txtdirstate(start,dirstack,topstack,rlparmode) - elseif id==localpar_code then - start,rlparmode,rlmode=pardirstate(start) - else - start=getnext(start) - end - end + end + if trace_steps then + registerstep(head) end end - if trace_steps then - registerstep(head) - end + nesting=nesting-1 + head=tonode(head) + return head,done end - nesting=nesting-1 - head=tonode(head) - return head,done end local plugins={} otf.plugins=plugins @@ -23875,12 +25360,12 @@ function otf.registerplugin(name,f) plugins[name]={ name,f } end end -local function plugininitializer(tfmdata,value) +function otf.plugininitializer(tfmdata,value) if type(value)=="string" then tfmdata.shared.plugin=plugins[value] end end -local function pluginprocessor(head,font) +function otf.pluginprocessor(head,font) local s=fontdata[font].shared local p=s and s.plugin if p then @@ -23892,7 +25377,7 @@ local function pluginprocessor(head,font) return head,false end end -local function featuresinitializer(tfmdata,value) +function otf.featuresinitializer(tfmdata,value) end registerotffeature { name="features", @@ -23900,16 +25385,14 @@ registerotffeature { default=true, initializers={ position=1, - node=featuresinitializer, - plug=plugininitializer, + node=otf.featuresinitializer, + plug=otf.plugininitializer, }, processors={ - node=featuresprocessor, - plug=pluginprocessor, + node=otf.featuresprocessor, + plug=otf.pluginprocessor, } } -otf.nodemodeinitializer=featuresinitializer -otf.featuresprocessor=featuresprocessor otf.handlers=handlers local setspacekerns=nodes.injections.setspacekerns if not setspacekerns then os.exit() end if fontfeatures then @@ -24021,9 +25504,9 @@ local function spaceinitializer(tfmdata,value) if type(kern)~="table" then left[k]=kern elseif single then - left[k]=v[3] + left[k]=kern[3] else - local one=v[1] + local one=kern[1] if one then left[k]=one[3] end @@ -26079,7 +27562,7 @@ else local tounicode=fonts.mappings.tounicode16 function otf.getactualtext(s) return - "/Span << /ActualText >> BDC", + "/Span << /ActualText >> BDC", "EMC" end end @@ -26522,6 +28005,7 @@ local normalized={ multiple="multiple", kern="kern", pair="pair", + single="single", chainsubstitution="chainsubstitution", chainposition="chainposition", } @@ -26532,6 +28016,7 @@ local types={ multiple="gsub_multiple", kern="gpos_pair", pair="gpos_pair", + single="gpos_single", chainsubstitution="gsub_contextchain", chainposition="gpos_contextchain", } @@ -26861,6 +28346,7 @@ local function addfeature(data,feature,specifications) end return coverage end + local prepare_single=prepare_pair local function prepare_chain(list,featuretype,sublookups) local rules=list.rules local coverage={} @@ -27076,6 +28562,9 @@ local function addfeature(data,feature,specifications) elseif featuretype=="pair" then format="pair" coverage=prepare_pair(list,featuretype) + elseif featuretype=="single" then + format="single" + coverage=prepare_single(list,featuretype) end if coverage and next(coverage) then nofsteps=nofsteps+1 @@ -27115,6 +28604,10 @@ local function addfeature(data,feature,specifications) category="gpos" format="pair" coverage=prepare_pair(list,featuretype) + elseif featuretype=="single" then + category="gpos" + format="single" + coverage=prepare_single(list,featuretype) elseif featuretype=="chainsubstitution" then category="gsub" coverage=prepare_chain(list,featuretype,sublookups) @@ -29163,7 +30656,6 @@ local allocate=utilities.storage.allocate local trace_defining=false trackers .register("fonts.defining",function(v) trace_defining=v end) local directive_embedall=false directives.register("fonts.embedall",function(v) directive_embedall=v end) trackers.register("fonts.loading","fonts.defining","otf.loading","afm.loading","tfm.loading") -trackers.register("fonts.all","fonts.*","otf.*","afm.*","tfm.*") local report_defining=logs.reporter("fonts","defining") local fonts=fonts local fontdata=fonts.hashes.identifiers @@ -32026,7 +33518,7 @@ end function nodes.handlers.setbasemodepass(v) basemodepass=v end -function nodes.handlers.nodepass(head) +function nodes.handlers.nodepass(head,groupcode,size,packtype,direction) local fontdata=fonts.hashes.identifiers if fontdata then local nuthead=tonut(head) @@ -32036,6 +33528,7 @@ function nodes.handlers.nodepass(head) local basefont=nil local variants=nil local redundant=nil + local nofused=0 for n in traverse_id(glyph_code,nuthead) do local font=getfont(n) if font~=prevfont then @@ -32052,6 +33545,7 @@ function nodes.handlers.nodepass(head) local processors=shared.processes if processors and #processors>0 then usedfonts[font]=processors + nofused=nofused+1 elseif basemodepass then basefont={ n,nil } basefonts[#basefonts+1]=basefont @@ -32132,6 +33626,7 @@ function nodes.handlers.nodepass(head) local processors=shared.processes if processors and #processors>0 then usedfonts[font]=processors + nofused=nofused+1 end end end @@ -32143,7 +33638,7 @@ function nodes.handlers.nodepass(head) if next(usedfonts) then for font,processors in next,usedfonts do for i=1,#processors do - head=processors[i](head,font,0) or head + head=processors[i](head,font,0,direction,nofused) or head end end end @@ -32192,9 +33687,9 @@ local nodepass=nodes.handlers.nodepass local basepass=nodes.handlers.basepass local injectpass=nodes.injections.handler local protectpass=nodes.handlers.protectglyphs -function nodes.simple_font_handler(head) +function nodes.simple_font_handler(head,groupcode,size,packtype,direction) if head then - head=nodepass(head) + head=nodepass(head,groupcode,size,packtype,direction) head=injectpass(head) if not basemodepass then head=basepass(head) diff --git a/tex/generic/context/luatex/luatex-math.tex b/tex/generic/context/luatex/luatex-math.tex index a66aa7d7d..6edc6f74b 100644 --- a/tex/generic/context/luatex/luatex-math.tex +++ b/tex/generic/context/luatex/luatex-math.tex @@ -13,6 +13,9 @@ %D approach (and thereby far from the \CONTEXT\ way). This file is mainly meant for %D Boguslaw Jackowski. +%D In the perspective of the TUG Lucida Opentype project Bruno Voisin checked the code +%D and definitions below and suggested some improvements. + % we provide a remap feature \ifdefined\directlua @@ -42,6 +45,10 @@ \font\tenbf = file:lmroman10-bold.otf:+liga;+kern;+tlig;+trep at 10pt \font\tenbi = file:lmroman10-bolditalic.otf:+liga;+kern;+tlig;+trep at 10pt % + \font\tenos = file:lmroman10-regular.otf:+onum;+liga;+kern;+tlig;+trep at 10pt + \font\sevenos = file:lmroman7-regular.otf:+onum;+liga;+kern;+tlig;+trep at 7pt + \font\fiveos = file:lmroman5-regular.otf:+onum;+liga;+kern;+tlig;+trep at 5pt + % \font\mathfonttextupright = file:latinmodern-math.otf:script=math;ssty=0;mathsize=yes at 10pt \font\mathfontscriptupright = file:latinmodern-math.otf:script=math;ssty=1;mathsize=yes at 7pt \font\mathfontscriptscriptupright = file:latinmodern-math.otf:script=math;ssty=2;mathsize=yes at 5pt @@ -50,6 +57,10 @@ \scriptfont 0 = \mathfontscriptupright \scriptscriptfont 0 = \mathfontscriptscriptupright % + \textfont 1 = \tenos + \scriptfont 1 = \sevenos + \scriptscriptfont 1 = \fiveos + % \tenrm} \def\lucidabright @@ -57,11 +68,15 @@ \font\sevenrm = file:lucidabrightot.otf:+liga;+kern;+tlig;+trep at 7pt \font\fiverm = file:lucidabrightot.otf:+liga;+kern;+tlig;+trep at 5pt % - \font\tentt = file:lucidasanstypewriterot.otf at 10pt - \font\tensl = file:lucidabrightot.otf:slant=0.2;+liga;+kern;+tlig;+trep at 10pt - \font\tenit = file:lucidabrightot-italic.otf:+liga;+kern;+tlig;+trep at 10pt - \font\tenbf = file:lucidabrightot-demi.otf:+liga;+kern;+tlig;+trep at 10pt - \font\tenbi = file:lucidabrightot-demiitalic.otf:+liga;+kern;+tlig;+trep at 10pt + \font\tentt = file:lucidasanstypewriterot.otf at 10pt + \font\tensl = file:lucidabrightot.otf:slant=0.167;+liga;+kern;+tlig;+trep at 10pt + \font\tenit = file:lucidabrightot-italic.otf:+liga;+kern;+tlig;+trep at 10pt + \font\tenbf = file:lucidabrightot-demi.otf:+liga;+kern;+tlig;+trep at 10pt + \font\tenbi = file:lucidabrightot-demiitalic.otf:+liga;+kern;+tlig;+trep at 10pt + % + \font\tenos = file:lucidabrightot.otf:+onum;+liga;+kern;+tlig;+trep at 10pt + \font\sevenos = file:lucidabrightot.otf:+onum;+liga;+kern;+tlig;+trep at 7pt + \font\fiveos = file:lucidabrightot.otf:+onum;+liga;+kern;+tlig;+trep at 5pt % \font\mathfonttextupright = file:lucidabrightmathot.otf:script=math;ssty=0;mathsize=yes at 10pt \font\mathfontscriptupright = file:lucidabrightmathot.otf:script=math;ssty=1;mathsize=yes at 7pt @@ -71,6 +86,10 @@ \scriptfont 0 = \mathfontscriptupright \scriptscriptfont 0 = \mathfontscriptscriptupright % + \textfont 1 = \tenos + \scriptfont 1 = \sevenos + \scriptscriptfont 1 = \fiveos + % \tenrm} \ifdefined\directlua @@ -84,7 +103,6 @@ \fi \newtoks\everymathrm -\newtoks\everymathmit \newtoks\everymathcal \newtoks\everymathit \newtoks\everymathsl @@ -92,6 +110,8 @@ \newtoks\everymathbi \newtoks\everymathtt +% the following commands switch text as well as math + \def\rm{\fam0\relax\the\everymathrm\relax\tenrm\relax} \def\it{\fam0\relax\the\everymathit\relax\tenit\relax} \def\sl{\fam0\relax\the\everymathsl\relax\tensl\relax} @@ -99,13 +119,10 @@ \def\bi{\fam0\relax\the\everymathbi\relax\tenbi\relax} \def\tt{\fam0\relax\the\everymathtt\relax\tentt\relax} -\let\mit \relax % use names or \Uchar or define a vector -\let\cal \relax % idem, i'm not in the mood for this now -\let\oldstyle\relax % no longer misuse of math mode - % tex is fast enough for this kind of assignments: \everymathrm {% + % codes \Umathcode"0041="0"0"0041% \Umathcode"0042="0"0"0042% \Umathcode"0043="0"0"0043% @@ -216,18 +233,69 @@ \Umathcode"03F5="0"0"03F5% \Umathcode"2202="0"0"2202% \Umathcode"2207="0"0"2207% + % commands + \Umathchardef\Alpha "0"0"000391% + \Umathchardef\Beta "0"0"000392% + \Umathchardef\Gamma "0"0"000393% + \Umathchardef\Delta "0"0"000394% + \Umathchardef\Epsilon "0"0"000395% + \Umathchardef\Zeta "0"0"000396% + \Umathchardef\Eta "0"0"000397% + \Umathchardef\Theta "0"0"000398% + \Umathchardef\Iota "0"0"000399% + \Umathchardef\Kappa "0"0"00039A% + \Umathchardef\Lambda "0"0"00039B% + \Umathchardef\Mu "0"0"00039C% + \Umathchardef\Nu "0"0"00039D% + \Umathchardef\Xi "0"0"00039E% + \Umathchardef\Omicron "0"0"00039F% + \Umathchardef\Pi "0"0"0003A0% + \Umathchardef\Rho "0"0"0003A1% + \Umathchardef\Sigma "0"0"0003A3% + \Umathchardef\Tau "0"0"0003A4% + \Umathchardef\Upsilon "0"0"0003A5% + \Umathchardef\Phi "0"0"0003A6% + \Umathchardef\Chi "0"0"0003A7% + \Umathchardef\Psi "0"0"0003A8% + \Umathchardef\Omega "0"0"0003A9% + \Umathchardef\alpha "0"0"0003B1% + \Umathchardef\beta "0"0"0003B2% + \Umathchardef\gamma "0"0"0003B3% + \Umathchardef\delta "0"0"0003B4% + \Umathchardef\varepsilon"0"0"0003B5% + \Umathchardef\zeta "0"0"0003B6% + \Umathchardef\eta "0"0"0003B7% + \Umathchardef\theta "0"0"0003B8% + \Umathchardef\iota "0"0"0003B9% + \Umathchardef\kappa "0"0"0003BA% + \Umathchardef\lambda "0"0"0003BB% + \Umathchardef\mu "0"0"0003BC% + \Umathchardef\nu "0"0"0003BD% + \Umathchardef\xi "0"0"0003BE% + \Umathchardef\omicron "0"0"0003BF% + \Umathchardef\pi "0"0"0003C0% + \Umathchardef\rho "0"0"0003C1% + \Umathchardef\varsigma "0"0"0003C2% + \Umathchardef\sigma "0"0"0003C3% + \Umathchardef\tau "0"0"0003C4% + \Umathchardef\upsilon "0"0"0003C5% + \Umathchardef\varphi "0"0"0003C6% + \Umathchardef\chi "0"0"0003C7% + \Umathchardef\psi "0"0"0003C8% + \Umathchardef\omega "0"0"0003C9% + \Umathchardef\vartheta "0"0"0003D1% + \Umathchardef\phi "0"0"0003D5% + \Umathchardef\varpi "0"0"0003D6% + \Umathchardef\varkappa "0"0"0003F0% + \Umathchardef\varrho "0"0"0003F1% + \Umathchardef\epsilon "0"0"0003F5% + \Umathchardef\varTheta "0"0"0003F4% + \Umathchardef\digamma "0"0"0003DC% \relax } -\everymathmit {% - % not done -} - -\everymathcal {% - % not done -} - \everymathit {% + % codes \Umathcode"0041="0"0"1D434% \Umathcode"0042="0"0"1D435% \Umathcode"0043="0"0"1D436% @@ -338,6 +406,64 @@ \Umathcode"03F5="0"0"1D716% \Umathcode"2202="0"0"1D715% \Umathcode"2207="0"0"1D6FB% + % commands + \Umathchardef\Alpha "0"0"01D6E2% + \Umathchardef\Beta "0"0"01D6E3% + \Umathchardef\Gamma "0"0"01D6E4% + \Umathchardef\Delta "0"0"01D6E5% + \Umathchardef\Epsilon "0"0"01D6E6% + \Umathchardef\Zeta "0"0"01D6E7% + \Umathchardef\Eta "0"0"01D6E8% + \Umathchardef\Theta "0"0"01D6E9% + \Umathchardef\Iota "0"0"01D6EA% + \Umathchardef\Kappa "0"0"01D6EB% + \Umathchardef\Lambda "0"0"01D6EC% + \Umathchardef\Mu "0"0"01D6ED% + \Umathchardef\Nu "0"0"01D6EE% + \Umathchardef\Xi "0"0"01D6EF% + \Umathchardef\Omicron "0"0"01D6F0% + \Umathchardef\Pi "0"0"01D6F1% + \Umathchardef\Rho "0"0"01D6F2% + \Umathchardef\Sigma "0"0"01D6F4% + \Umathchardef\Tau "0"0"01D6F5% + \Umathchardef\Upsilon "0"0"01D6F6% + \Umathchardef\Phi "0"0"01D6F7% + \Umathchardef\Chi "0"0"01D6F8% + \Umathchardef\Psi "0"0"01D6F9% + \Umathchardef\Omega "0"0"01D6FA% + \Umathchardef\alpha "0"0"01D6FC% + \Umathchardef\beta "0"0"01D6FD% + \Umathchardef\gamma "0"0"01D6FE% + \Umathchardef\delta "0"0"01D6FF% + \Umathchardef\varepsilon"0"0"01D700% + \Umathchardef\zeta "0"0"01D701% + \Umathchardef\eta "0"0"01D702% + \Umathchardef\theta "0"0"01D703% + \Umathchardef\iota "0"0"01D704% + \Umathchardef\kappa "0"0"01D705% + \Umathchardef\lambda "0"0"01D706% + \Umathchardef\mu "0"0"01D707% + \Umathchardef\nu "0"0"01D708% + \Umathchardef\xi "0"0"01D709% + \Umathchardef\omicron "0"0"01D70A% + \Umathchardef\pi "0"0"01D70B% + \Umathchardef\rho "0"0"01D70C% + \Umathchardef\varsigma "0"0"01D70D% + \Umathchardef\sigma "0"0"01D70E% + \Umathchardef\tau "0"0"01D70F% + \Umathchardef\upsilon "0"0"01D710% + \Umathchardef\varphi "0"0"01D711% + \Umathchardef\chi "0"0"01D712% + \Umathchardef\psi "0"0"01D713% + \Umathchardef\omega "0"0"01D714% + \Umathchardef\epsilon "0"0"01D716% + \Umathchardef\vartheta "0"0"01D717% + \Umathchardef\varkappa "0"0"01D718% + \Umathchardef\phi "0"0"01D719% + \Umathchardef\varrho "0"0"01D71A% + \Umathchardef\varpi "0"0"01D71B% + \Umathchardef\varTheta "0"0"01D6F3% + \Umathchardef\digamma "0"0"0003DC% \relax } @@ -346,6 +472,7 @@ } \everymathbf {% + % codes \Umathcode"0030="0"0"1D7CE% \Umathcode"0031="0"0"1D7CF% \Umathcode"0032="0"0"1D7D0% @@ -466,10 +593,69 @@ \Umathcode"03F5="0"0"1D6DC% \Umathcode"2202="0"0"1D6DB% \Umathcode"2207="0"0"1D6C1% + % commands + \Umathchardef\Alpha "0"0"01D6A8% + \Umathchardef\Beta "0"0"01D6A9% + \Umathchardef\Gamma "0"0"01D6AA% + \Umathchardef\Delta "0"0"01D6AB% + \Umathchardef\Epsilon "0"0"01D6AC% + \Umathchardef\Zeta "0"0"01D6AD% + \Umathchardef\Eta "0"0"01D6AE% + \Umathchardef\Theta "0"0"01D6AF% + \Umathchardef\Iota "0"0"01D6B0% + \Umathchardef\Kappa "0"0"01D6B1% + \Umathchardef\Lambda "0"0"01D6B2% + \Umathchardef\Mu "0"0"01D6B3% + \Umathchardef\Nu "0"0"01D6B4% + \Umathchardef\Xi "0"0"01D6B5% + \Umathchardef\Omicron "0"0"01D6B6% + \Umathchardef\Pi "0"0"01D6B7% + \Umathchardef\Rho "0"0"01D6B8% + \Umathchardef\Sigma "0"0"01D6BA% + \Umathchardef\Tau "0"0"01D6BB% + \Umathchardef\Upsilon "0"0"01D6BC% + \Umathchardef\Phi "0"0"01D6BD% + \Umathchardef\Chi "0"0"01D6BE% + \Umathchardef\Psi "0"0"01D6BF% + \Umathchardef\Omega "0"0"01D6C0% + \Umathchardef\alpha "0"0"01D6C2% + \Umathchardef\beta "0"0"01D6C3% + \Umathchardef\gamma "0"0"01D6C4% + \Umathchardef\delta "0"0"01D6C5% + \Umathchardef\varepsilon"0"0"01D6C6% + \Umathchardef\zeta "0"0"01D6C7% + \Umathchardef\eta "0"0"01D6C8% + \Umathchardef\theta "0"0"01D6C9% + \Umathchardef\iota "0"0"01D6CA% + \Umathchardef\kappa "0"0"01D6CB% + \Umathchardef\lambda "0"0"01D6CC% + \Umathchardef\mu "0"0"01D6CD% + \Umathchardef\nu "0"0"01D6CE% + \Umathchardef\xi "0"0"01D6CF% + \Umathchardef\omicron "0"0"01D6D0% + \Umathchardef\pi "0"0"01D6D1% + \Umathchardef\rho "0"0"01D6D2% + \Umathchardef\varsigma "0"0"01D6D3% + \Umathchardef\sigma "0"0"01D6D4% + \Umathchardef\tau "0"0"01D6D5% + \Umathchardef\upsilon "0"0"01D6D6% + \Umathchardef\varphi "0"0"01D6D7% + \Umathchardef\chi "0"0"01D6D8% + \Umathchardef\psi "0"0"01D6D9% + \Umathchardef\omega "0"0"01D6DA% + \Umathchardef\epsilon "0"0"01D6DC% + \Umathchardef\vartheta "0"0"01D6DD% + \Umathchardef\varkappa "0"0"01D6DE% + \Umathchardef\phi "0"0"01D6DF% + \Umathchardef\varrho "0"0"01D6E0% + \Umathchardef\varpi "0"0"01D6E1% + \Umathchardef\varTheta "0"0"01D6B9% + \Umathchardef\digamma "0"0"01D7CA% \relax } \everymathbi {% + % codes \Umathcode"0030="0"0"1D7CE% \Umathcode"0031="0"0"1D7CF% \Umathcode"0032="0"0"1D7D0% @@ -590,6 +776,64 @@ \Umathcode"03F5="0"0"1D750% \Umathcode"2202="0"0"1D74F% \Umathcode"2207="0"0"1D735% + % commands + \Umathchardef\Alpha "0"0"01D71C% + \Umathchardef\Beta "0"0"01D71D% + \Umathchardef\Gamma "0"0"01D71E% + \Umathchardef\Delta "0"0"01D71F% + \Umathchardef\Epsilon "0"0"01D720% + \Umathchardef\Zeta "0"0"01D721% + \Umathchardef\Eta "0"0"01D722% + \Umathchardef\Theta "0"0"01D723% + \Umathchardef\Iota "0"0"01D724% + \Umathchardef\Kappa "0"0"01D725% + \Umathchardef\Lambda "0"0"01D726% + \Umathchardef\Mu "0"0"01D727% + \Umathchardef\Nu "0"0"01D728% + \Umathchardef\Xi "0"0"01D729% + \Umathchardef\Omicron "0"0"01D72A% + \Umathchardef\Pi "0"0"01D72B% + \Umathchardef\Rho "0"0"01D72C% + \Umathchardef\Sigma "0"0"01D72E% + \Umathchardef\Tau "0"0"01D72F% + \Umathchardef\Upsilon "0"0"01D730% + \Umathchardef\Phi "0"0"01D731% + \Umathchardef\Chi "0"0"01D732% + \Umathchardef\Psi "0"0"01D733% + \Umathchardef\Omega "0"0"01D734% + \Umathchardef\alpha "0"0"01D736% + \Umathchardef\beta "0"0"01D737% + \Umathchardef\gamma "0"0"01D738% + \Umathchardef\delta "0"0"01D739% + \Umathchardef\varepsilon"0"0"01D73A% + \Umathchardef\zeta "0"0"01D73B% + \Umathchardef\eta "0"0"01D73C% + \Umathchardef\theta "0"0"01D73D% + \Umathchardef\iota "0"0"01D73E% + \Umathchardef\kappa "0"0"01D73F% + \Umathchardef\lambda "0"0"01D740% + \Umathchardef\mu "0"0"01D741% + \Umathchardef\nu "0"0"01D742% + \Umathchardef\xi "0"0"01D743% + \Umathchardef\omicron "0"0"01D744% + \Umathchardef\pi "0"0"01D745% + \Umathchardef\rho "0"0"01D746% + \Umathchardef\varsigma "0"0"01D747% + \Umathchardef\sigma "0"0"01D748% + \Umathchardef\tau "0"0"01D749% + \Umathchardef\upsilon "0"0"01D74A% + \Umathchardef\varphi "0"0"01D74B% + \Umathchardef\chi "0"0"01D74C% + \Umathchardef\psi "0"0"01D74D% + \Umathchardef\omega "0"0"01D74E% + \Umathchardef\epsilon "0"0"01D750% + \Umathchardef\vartheta "0"0"01D751% + \Umathchardef\varkappa "0"0"01D752% + \Umathchardef\phi "0"0"01D753% + \Umathchardef\varrho "0"0"01D754% + \Umathchardef\varpi "0"0"01D755% + \Umathchardef\varTheta "0"0"01D72D% + \Umathchardef\digamma "0"0"01D7CA% \relax } @@ -597,6 +841,75 @@ % not done } +% Nothing special here: + +\let\mit\it + +% We use a special family for this, not that oldstyle in math makes +% much sense, it's more that in good old tex oldstyle was taken from +% math fonts. So, just something compatible: + +\def\oldstyle{\fam1\relax\tenos\relax} + +% Again a text and math one and it had better be used grouped. + +\def\cal{\fam0\relax\the\everymathcal\relax\tenit\relax} + +\everymathcal {% + \Umathcode"0041="0"0"1D49C% A + \Umathcode"0042="0"0"0212C% B + \Umathcode"0043="0"0"1D49E% C + \Umathcode"0044="0"0"1D49F% D + \Umathcode"0045="0"0"02130% E + \Umathcode"0046="0"0"02131% F + \Umathcode"0047="0"0"1D4A2% G + \Umathcode"0048="0"0"0210B% H + \Umathcode"0049="0"0"02110% I + \Umathcode"004A="0"0"1D4A5% J + \Umathcode"004B="0"0"1D4A6% K + \Umathcode"004C="0"0"02112% L + \Umathcode"004D="0"0"02133% M + \Umathcode"004E="0"0"1D4A9% N + \Umathcode"004F="0"0"1D4AA% O + \Umathcode"0050="0"0"1D4AB% P + \Umathcode"0051="0"0"1D4AC% Q + \Umathcode"0052="0"0"0211B% R + \Umathcode"0053="0"0"1D4AE% S + \Umathcode"0054="0"0"1D4AF% T + \Umathcode"0055="0"0"1D4B0% U + \Umathcode"0056="0"0"1D4B1% V + \Umathcode"0057="0"0"1D4B2% W + \Umathcode"0058="0"0"1D4B3% X + \Umathcode"0059="0"0"1D4B4% Y + \Umathcode"005A="0"0"1D4B5% Z + \Umathcode"0061="0"0"1D4B6% a + \Umathcode"0062="0"0"1D4B7% b + \Umathcode"0063="0"0"1D4B8% c + \Umathcode"0064="0"0"1D4B9% d + \Umathcode"0065="0"0"0212F% e + \Umathcode"0066="0"0"1D4BB% f + \Umathcode"0067="0"0"0210A% g + \Umathcode"0068="0"0"1D4BD% h + \Umathcode"0069="0"0"1D4BE% i + \Umathcode"006A="0"0"1D4BF% j + \Umathcode"006B="0"0"1D4C0% k + \Umathcode"006C="0"0"1D4C1% l + \Umathcode"006D="0"0"1D4C2% m + \Umathcode"006E="0"0"1D4C3% n + \Umathcode"006F="0"0"02134% o + \Umathcode"0070="0"0"1D4C5% p + \Umathcode"0071="0"0"1D4C6% q + \Umathcode"0072="0"0"1D4C7% r + \Umathcode"0073="0"0"1D4C8% s + \Umathcode"0074="0"0"1D4C9% t + \Umathcode"0075="0"0"1D4CA% u + \Umathcode"0076="0"0"1D4CB% v + \Umathcode"0077="0"0"1D4CC% w + \Umathcode"0078="0"0"1D4CD% x + \Umathcode"0079="0"0"1D4CE% y + \Umathcode"007A="0"0"1D4CF% z +} + \Udelcode "00021 = "0 "00021 \Udelcode "00028 = "0 "00028 \Udelcode "00028 = "0 "00028 @@ -1831,6 +2144,44 @@ \def\Zeta {\Umathchar "0"0"000396 } \def\zeta {\Umathchar "0"0"0003B6 } +%D The following are suggested by Bruno. As I don't use plain and as the above are +%D taken from text unicode greek I suppose his list is better: + +\def\alpha {\Umathchar "0"0"01D6FC } +\def\beta {\Umathchar "0"0"01D6FD } +\def\chi {\Umathchar "0"0"01D712 } +\def\delta {\Umathchar "0"0"01D6FF } +\def\digamma {\Umathchar "0"0"0003DC } +\def\epsilon {\Umathchar "0"0"01D716 } +\def\eta {\Umathchar "0"0"01D702 } +\def\gamma {\Umathchar "0"0"01D6FE } +\def\iota {\Umathchar "0"0"01D704 } +\def\kappa {\Umathchar "0"0"01D705 } +\def\lambda {\Umathchar "0"0"01D706 } +\def\mu {\Umathchar "0"0"01D707 } +\def\nu {\Umathchar "0"0"01D708 } +\def\omega {\Umathchar "0"0"01D714 } +\def\omicron {\Umathchar "0"0"01D70A } +\def\phi {\Umathchar "0"0"01D719 } +\def\pi {\Umathchar "0"0"01D70B } +\def\psi {\Umathchar "0"0"01D713 } +\def\rho {\Umathchar "0"0"01D70C } +\def\sigma {\Umathchar "0"0"01D70E } +\def\tau {\Umathchar "0"0"01D70F } +\def\theta {\Umathchar "0"0"01D703 } +\def\upsilon {\Umathchar "0"0"01D710 } +\def\varepsilon {\Umathchar "0"0"01D700 } +\def\varkappa {\Umathchar "0"0"01D718 } +\def\varphi {\Umathchar "0"0"01D711 } +\def\varpi {\Umathchar "0"0"01D71B } +\def\varrho {\Umathchar "0"0"01D71A } +\def\varsigma {\Umathchar "0"0"01D70D } +\def\vartheta {\Umathchar "0"0"01D717 } +\def\xi {\Umathchar "0"0"01D709 } +\def\zeta {\Umathchar "0"0"01D701 } + +\def\varTheta {\Umathchar "0"0"0003F4 } + % a few definitions: \def\sqrt {\Uroot "0 "221A{}} @@ -1883,4 +2234,22 @@ \def\k#1{#1^^^^0328} % not in plain \def\b#1{#1^^^^0331} +% for Bruno, when he tests this file with xetex: + +\ifdefined\directlua \else + + \catcode`@=11 + + \def\sqrt{\Uradical "0 "221A } + + \def\root#1\of + {\setbox\rootbox\hbox\bgroup + $\m@th\scriptscriptstyle{#1}$% + \egroup + \mathpalette\r@@t} + + \catcode`@=12 + +\fi + \endinput -- cgit v1.2.3