diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/math-vfu.lua')
-rw-r--r-- | Master/texmf-dist/tex/context/base/math-vfu.lua | 880 |
1 files changed, 329 insertions, 551 deletions
diff --git a/Master/texmf-dist/tex/context/base/math-vfu.lua b/Master/texmf-dist/tex/context/base/math-vfu.lua index fb5113be45b..5023e6b4d65 100644 --- a/Master/texmf-dist/tex/context/base/math-vfu.lua +++ b/Master/texmf-dist/tex/context/base/math-vfu.lua @@ -1,13 +1,14 @@ if not modules then modules = { } end modules ['math-vfu'] = { version = 1.001, - comment = "companion to math-ini.tex", + comment = "companion to math-ini.mkiv", author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", copyright = "PRAGMA ADE / ConTeXt Development Team", license = "see context related readme files" } -- All these math vectors .. thanks to Aditya and Mojca they become --- better and better. +-- better and better. If you have problems with math fonts or miss +-- characters report it to the ConTeXt mailing list. local type, next = type, next @@ -23,8 +24,7 @@ fonts.vf.math.optional = false local push, pop, back = { "push" }, { "pop" }, { "slot", 1, 0x2215 } -local function negate(main,unicode,basecode) - local characters = main.characters +local function negate(main,characters,id,size,unicode,basecode) if not characters[unicode] then local basechar = characters[basecode] if basechar then @@ -53,8 +53,7 @@ end --~ \Umathchardef\bracelu="0 "1 "FF07C --~ \Umathchardef\braceru="0 "1 "FF07D -local function brace(main,unicode,first,rule,left,right,rule,last) - local characters = main.characters +local function brace(main,characters,id,size,unicode,first,rule,left,right,rule,last) if not characters[unicode] then characters[unicode] = { horiz_variants = { @@ -69,24 +68,25 @@ local function brace(main,unicode,first,rule,left,right,rule,last) end end -local function arrow(main,unicode,arrow,minus,isleft) - if isleft then - t = { - { extender = 0, glyph = arrow }, - { extender = 1, glyph = minus }, - } - else - t = { - { extender = 0, glyph = minus }, - { extender = 1, glyph = arrow }, - } +local function arrow(main,characters,id,size,unicode,arrow,minus,isleft) + if characters[unicode] then + if isleft then + t = { + { extender = 0, glyph = arrow }, + { extender = 1, glyph = minus }, + } + else + t = { + { extender = 0, glyph = minus }, + { extender = 1, glyph = arrow }, + } + end + --~ main.characters[unicode] = { horiz_variants = t } + characters[unicode].horiz_variants = t end ---~ main.characters[unicode] = { horiz_variants = t } - main.characters[unicode].horiz_variants = t end -local function parent(main,unicode,first,rule,last) - local characters = main.characters +local function parent(main,characters,id,size,unicode,first,rule,last) if not characters[unicode] then characters[unicode] = { horiz_variants = { @@ -100,13 +100,13 @@ end local push, pop, step = { "push" }, { "pop" }, 0.2 -- 0.1 is nicer but gives larger files -local function make(main,id,size,n,m) - local characters = main.characters - local xu = main.parameters.x_height + 0.3*size - local xd = 0.3*size - local old, upslot, dnslot, uprule, dnrule = 0xFF000+n, 0xFF100+n, 0xFF200+n, 0xFF300+m, 0xFF400+m +local function make(main,characters,id,size,n,m) + local old = 0xFF000+n local c = characters[old] if c then + local upslot, dnslot, uprule, dnrule = 0xFF100+n, 0xFF200+n, 0xFF300+m, 0xFF400+m + local xu = main.parameters.x_height + 0.3*size + local xd = 0.3*size local w, h, d = c.width, c.height, c.depth local thickness = h - d local rulewidth = step*size -- we could use an overlap @@ -127,120 +127,167 @@ local function make(main,id,size,n,m) end end -local function minus(main,id,size,unicode) - local characters = main.characters - local mu = size/18 +local function minus(main,characters,id,size,unicode) local minus = characters[0x002D] - local width = minus.width - 5*mu - characters[unicode] = { - width = width, height = minus.height, depth = minus.depth, - commands = { push, { "right", -3*mu }, { "slot", id, 0x002D }, pop } - } + if minus then + local mu = size/18 + local width = minus.width - 5*mu + characters[unicode] = { + width = width, height = minus.height, depth = minus.depth, + commands = { push, { "right", -3*mu }, { "slot", id, 0x002D }, pop } + } + end end -local function dots(main,id,size,unicode) - local characters = main.characters +local function dots(main,characters,id,size,unicode) local c = characters[0x002E] - local w, h, d = c.width, c.height, c.depth - local mu = size/18 - local right3mu = { "right", 3*mu } - local right1mu = { "right", 1*mu } - local up1size = { "down", -.1*size } - local up4size = { "down", -.4*size } - local up7size = { "down", -.7*size } - local right2muw = { "right", 2*mu + w } - local slot = { "slot", id, 0x002E } - if unicode == 0x22EF then - local c = characters[0x022C5] - if c then - local w, h, d = c.width, c.height, c.depth - local slot = { "slot", id, 0x022C5 } + if c then + local w, h, d = c.width, c.height, c.depth + local mu = size/18 + local right3mu = { "right", 3*mu } + local right1mu = { "right", 1*mu } + local up1size = { "down", -.1*size } + local up4size = { "down", -.4*size } + local up7size = { "down", -.7*size } + local right2muw = { "right", 2*mu + w } + local slot = { "slot", id, 0x002E } + if unicode == 0x22EF then + local c = characters[0x022C5] + if c then + local w, h, d = c.width, c.height, c.depth + local slot = { "slot", id, 0x022C5 } + characters[unicode] = { + width = 3*w + 2*3*mu, height = h, depth = d, + commands = { push, slot, right3mu, slot, right3mu, slot, pop } + } + end + elseif unicode == 0x22EE then + -- weird height ! + characters[unicode] = { + width = w, height = h+(1.4)*size, depth = 0, + commands = { push, push, slot, pop, up4size, push, slot, pop, up4size, slot, pop } + } + elseif unicode == 0x22F1 then + characters[unicode] = { + width = 3*w + 6*size/18, height = 1.5*size, depth = 0, + commands = { + push, + right1mu, + push, up7size, slot, pop, + right2muw, + push, up4size, slot, pop, + right2muw, + push, up1size, slot, pop, + right1mu, + pop + } + } + elseif unicode == 0x22F0 then + characters[unicode] = { + width = 3*w + 6*size/18, height = 1.5*size, depth = 0, + commands = { + push, + right1mu, + push, up1size, slot, pop, + right2muw, + push, up4size, slot, pop, + right2muw, + push, up7size, slot, pop, + right1mu, + pop + } + } + else characters[unicode] = { width = 3*w + 2*3*mu, height = h, depth = d, commands = { push, slot, right3mu, slot, right3mu, slot, pop } } end - elseif unicode == 0x22EE then - -- weird height ! - characters[unicode] = { - width = w, height = h+(1.4)*size, depth = 0, - commands = { push, push, slot, pop, up4size, push, slot, pop, up4size, slot, pop } - } - elseif unicode == 0x22F1 then - characters[unicode] = { - width = 3*w + 6*size/18, height = 1.5*size, depth = 0, - commands = { - push, - right1mu, - push, up7size, slot, pop, - right2muw, - push, up4size, slot, pop, - right2muw, - push, up1size, slot, pop, - right1mu, - pop - } - } - elseif unicode == 0x22F0 then + end +end + +local function vertbar(main,characters,id,size,parent,scale,unicode) + local cp = characters[parent] + if cp then + local sc = scale * size + local pc = { "slot", id, parent } characters[unicode] = { - width = 3*w + 6*size/18, height = 1.5*size, depth = 0, + width = cp.width, + height = cp.height + sc, + depth = cp.depth + sc, commands = { - push, - right1mu, - push, up1size, slot, pop, - right2muw, - push, up4size, slot, pop, - right2muw, - push, up7size, slot, pop, - right1mu, - pop - } - } - else - characters[unicode] = { - width = 3*w + 2*3*mu, height = h, depth = d, - commands = { push, slot, right3mu, slot, right3mu, slot, pop } + push, { "down", -sc }, pc, pop, + push, { "down", sc }, pc, pop, + pc, + }, + next = cp.next -- can be extensible } + cp.next = unicode end end function fonts.vf.math.alas(main,id,size) + local characters = main.characters for i=0x7A,0x7D do - make(main,id,size,i,1) + make(main,characters,id,size,i,1) end - brace (main,0x23DE,0xFF17A,0xFF301,0xFF17D,0xFF17C,0xFF301,0xFF17B) - brace (main,0x23DF,0xFF27C,0xFF401,0xFF27B,0xFF27A,0xFF401,0xFF27D) - parent(main,0x23DC,0xFF17A,0xFF301,0xFF17B) - parent(main,0x23DD,0xFF27C,0xFF401,0xFF27D) - negate(main,0x2260,0x003D) - dots(main,id,size,0x2026) -- ldots - dots(main,id,size,0x22EE) -- vdots - dots(main,id,size,0x22EF) -- cdots - dots(main,id,size,0x22F1) -- ddots - dots(main,id,size,0x22F0) -- udots - minus(main,id,size,0xFF501) - arrow(main,0x2190,0xFE190,0xFF501,true) -- left - arrow(main,0x2192,0xFE192,0xFF501,false) -- right + brace (main,characters,id,size,0x23DE,0xFF17A,0xFF301,0xFF17D,0xFF17C,0xFF301,0xFF17B) + brace (main,characters,id,size,0x23DF,0xFF27C,0xFF401,0xFF27B,0xFF27A,0xFF401,0xFF27D) + parent (main,characters,id,size,0x23DC,0xFF17A,0xFF301,0xFF17B) + parent (main,characters,id,size,0x23DD,0xFF27C,0xFF401,0xFF27D) + negate (main,characters,id,size,0x2260,0x003D) + dots (main,characters,id,size,0x2026) -- ldots + dots (main,characters,id,size,0x22EE) -- vdots + dots (main,characters,id,size,0x22EF) -- cdots + dots (main,characters,id,size,0x22F1) -- ddots + dots (main,characters,id,size,0x22F0) -- udots + minus (main,characters,id,size,0xFF501) + arrow (main,characters,id,size,0x2190,0xFE190,0xFF501,true) -- left + arrow (main,characters,id,size,0x2192,0xFE192,0xFF501,false) -- right + vertbar(main,characters,id,size,0x0007C,0.10,0xFF601) -- big : 0.85 bodyfontsize + vertbar(main,characters,id,size,0xFF601,0.30,0xFF602) -- Big : 1.15 bodyfontsize + vertbar(main,characters,id,size,0xFF602,0.30,0xFF603) -- bigg : 1.45 bodyfontsize + vertbar(main,characters,id,size,0xFF603,0.30,0xFF604) -- Bigg : 1.75 bodyfontsize + vertbar(main,characters,id,size,0x02225,0.10,0xFF605) + vertbar(main,characters,id,size,0xFF605,0.30,0xFF606) + vertbar(main,characters,id,size,0xFF606,0.30,0xFF607) + vertbar(main,characters,id,size,0xFF607,0.30,0xFF608) end -local reverse -- index -> unicode +local unique = 0 -- testcase: \startTEXpage \math{!\text{-}\text{-}\text{-}} \stopTEXpage -function fonts.basecopy(tfmtable) +function fonts.basecopy(tfmtable,name) + local characters, parameters, fullname = tfmtable.characters, tfmtable.parameters, tfmtable.fullname local t, c, p = { }, { }, { } for k, v in next, tfmtable do t[k] = v end - for k, v in next, tfmtable.characters do - c[k] = v + if characters then + for k, v in next, characters do + c[k] = v + end + t.characters = c + else + logs.report("math virtual","font %s has no characters",name) + end + if parameters then + for k, v in next, parameters do + p[k] = v + end + t.parameters = p + else + logs.report("math virtual","font %s has no parameters",name) end - for k, v in next, tfmtable.parameters do - p[k] = v + -- tricky ... what if fullname does not exist + if fullname then + unique = unique + 1 + t.fullname = fullname .. "-" .. unique end - t.characters, t.parameters = c, p return t end local reported = { } +local reverse -- index -> unicode function fonts.vf.math.define(specification,set) if not reverse then @@ -257,7 +304,6 @@ function fonts.vf.math.define(specification,set) local size = specification.size -- given size local fnt, lst, main = { }, { }, nil local start = (trace_virtual or trace_timings) and os.clock() ---~ texio.write_nl("defining font " .. name .. " " .. size) local okset, n = { }, 0 for s=1,#set do local ss = set[s] @@ -285,10 +331,14 @@ function fonts.vf.math.define(specification,set) end end -- beware, fnt[1] is already passed to tex (we need to make a simple copy then .. todo) - main = fonts.basecopy(fnt[1]) + main = fonts.basecopy(fnt[1],name) main.name, main.fonts, main.virtualized, main.math_parameters = name, lst, true, { } local characters, descriptions = main.characters, main.descriptions - main.parameters.x_height = main.parameters.x_height or 0 + local mp = main.parameters + if mp then + mp.x_height = mp.x_height or 0 + end + local already_reported = false for s=1,n do local ss, fs = okset[s], fnt[s] if not fs then @@ -297,34 +347,38 @@ function fonts.vf.math.define(specification,set) -- skip, redundant else local mm, fp = main.math_parameters, fs.parameters - if ss.extension then - mm.math_x_height = fp.x_height or 0 -- math_x_height height of x - mm.default_rule_thickness = fp[ 8] or 0 -- default_rule_thickness thickness of \over bars - mm.big_op_spacing1 = fp[ 9] or 0 -- big_op_spacing1 minimum clearance above a displayed op - mm.big_op_spacing2 = fp[10] or 0 -- big_op_spacing2 minimum clearance below a displayed op - mm.big_op_spacing3 = fp[11] or 0 -- big_op_spacing3 minimum baselineskip above displayed op - mm.big_op_spacing4 = fp[12] or 0 -- big_op_spacing4 minimum baselineskip below displayed op - mm.big_op_spacing5 = fp[13] or 0 -- big_op_spacing5 padding above and below displayed limits - -- logs.report("math virtual","loading and virtualizing font %s at size %s, setting ex parameters",name,size) - elseif ss.parameters then - main.parameters.x_height = fp.x_height or main.parameters.x_height - mm.x_height = mm.x_height or fp.x_height or 0 -- x_height height of x - mm.num1 = fp[ 8] or 0 -- num1 numerator shift-up in display styles - mm.num2 = fp[ 9] or 0 -- num2 numerator shift-up in non-display, non-\atop - mm.num3 = fp[10] or 0 -- num3 numerator shift-up in non-display \atop - mm.denom1 = fp[11] or 0 -- denom1 denominator shift-down in display styles - mm.denom2 = fp[12] or 0 -- denom2 denominator shift-down in non-display styles - mm.sup1 = fp[13] or 0 -- sup1 superscript shift-up in uncramped display style - mm.sup2 = fp[14] or 0 -- sup2 superscript shift-up in uncramped non-display - mm.sup3 = fp[15] or 0 -- sup3 superscript shift-up in cramped styles - mm.sub1 = fp[16] or 0 -- sub1 subscript shift-down if superscript is absent - mm.sub2 = fp[17] or 0 -- sub2 subscript shift-down if superscript is present - mm.sup_drop = fp[18] or 0 -- sup_drop superscript baseline below top of large box - mm.sub_drop = fp[19] or 0 -- sub_drop subscript baseline below bottom of large box - mm.delim1 = fp[20] or 0 -- delim1 size of \atopwithdelims delimiters in display styles - mm.delim2 = fp[21] or 0 -- delim2 size of \atopwithdelims delimiters in non-displays - mm.axis_height = fp[22] or 0 -- axis_height height of fraction lines above the baseline - -- logs.report("math virtual","loading and virtualizing font %s at size %s, setting sy parameters",name,size) + if mm and fp and mp then + if ss.extension then + mm.math_x_height = fp.x_height or 0 -- math_x_height height of x + mm.default_rule_thickness = fp[ 8] or 0 -- default_rule_thickness thickness of \over bars + mm.big_op_spacing1 = fp[ 9] or 0 -- big_op_spacing1 minimum clearance above a displayed op + mm.big_op_spacing2 = fp[10] or 0 -- big_op_spacing2 minimum clearance below a displayed op + mm.big_op_spacing3 = fp[11] or 0 -- big_op_spacing3 minimum baselineskip above displayed op + mm.big_op_spacing4 = fp[12] or 0 -- big_op_spacing4 minimum baselineskip below displayed op + mm.big_op_spacing5 = fp[13] or 0 -- big_op_spacing5 padding above and below displayed limits + -- logs.report("math virtual","loading and virtualizing font %s at size %s, setting ex parameters",name,size) + elseif ss.parameters then + mp.x_height = fp.x_height or mp.x_height + mm.x_height = mm.x_height or fp.x_height or 0 -- x_height height of x + mm.num1 = fp[ 8] or 0 -- num1 numerator shift-up in display styles + mm.num2 = fp[ 9] or 0 -- num2 numerator shift-up in non-display, non-\atop + mm.num3 = fp[10] or 0 -- num3 numerator shift-up in non-display \atop + mm.denom1 = fp[11] or 0 -- denom1 denominator shift-down in display styles + mm.denom2 = fp[12] or 0 -- denom2 denominator shift-down in non-display styles + mm.sup1 = fp[13] or 0 -- sup1 superscript shift-up in uncramped display style + mm.sup2 = fp[14] or 0 -- sup2 superscript shift-up in uncramped non-display + mm.sup3 = fp[15] or 0 -- sup3 superscript shift-up in cramped styles + mm.sub1 = fp[16] or 0 -- sub1 subscript shift-down if superscript is absent + mm.sub2 = fp[17] or 0 -- sub2 subscript shift-down if superscript is present + mm.sup_drop = fp[18] or 0 -- sup_drop superscript baseline below top of large box + mm.sub_drop = fp[19] or 0 -- sub_drop subscript baseline below bottom of large box + mm.delim1 = fp[20] or 0 -- delim1 size of \atopwithdelims delimiters in display styles + mm.delim2 = fp[21] or 0 -- delim2 size of \atopwithdelims delimiters in non-displays + mm.axis_height = fp[22] or 0 -- axis_height height of fraction lines above the baseline + -- logs.report("math virtual","loading and virtualizing font %s at size %s, setting sy parameters",name,size) + end + else + logs.report("math virtual","font %s, no parameters set",name) end local vectorname = ss.vector if vectorname then @@ -337,14 +391,19 @@ function fonts.vf.math.define(specification,set) for unicode, index in next, vector do local fci = fc[index] if not fci then - local fontname = fs.name + local fontname = fs.name or "unknown" local rf = reported[fontname] if not rf then rf = { } reported[fontname] = rf end local rv = rf[vectorname] if not rv then rv = { } rf[vectorname] = rv end local ru = rv[unicode] if not ru then - logs.report("math virtual", "unicode point U+%05X has no index %04X in vector %s for font %s",unicode,index,vectorname,fontname) + if trace_virtual then + logs.report("math virtual", "unicode point U+%05X has no index %04X in vector %s for font %s",unicode,index,vectorname,fontname) + elseif not already_reported then + logs.report("math virtual", "the mapping is incomplete for '%s' at %s",name,number.topoints(size)) + already_reported = true + end rv[unicode] = true end else @@ -466,35 +525,44 @@ function fonts.vf.math.define(specification,set) --~ end else local fci = fc[index] - local ref = si[index] - if not ref then - ref = { { 'slot', s, index } } - si[index] = ref - end - local kerns = fci.kerns - if kerns then - local krn = { } - for k=1,#kerns do - krn[offset + k] = kerns[k] - end - characters[unicode] = { - width = fci.width, - height = fci.height, - depth = fci.depth, - italic = fci.italic, - commands = ref, - kerns = krn, - next = offset + index, - } + if not fci then +--~ characters[unicode] = { +--~ width = 0, +--~ height = 0, +--~ depth = 0, +--~ index = 0, +--~ } else - characters[unicode] = { - width = fci.width, - height = fci.height, - depth = fci.depth, - italic = fci.italic, - commands = ref, - next = offset + index, - } + local ref = si[index] + if not ref then + ref = { { 'slot', s, index } } + si[index] = ref + end + local kerns = fci.kerns + if kerns then + local krn = { } + for k=1,#kerns do + krn[offset + k] = kerns[k] + end + characters[unicode] = { + width = fci.width, + height = fci.height, + depth = fci.depth, + italic = fci.italic, + commands = ref, + kerns = krn, + next = offset + index, + } + else + characters[unicode] = { + width = fci.width, + height = fci.height, + depth = fci.depth, + italic = fci.italic, + commands = ref, + next = offset + index, + } + end end end end @@ -505,14 +573,18 @@ function fonts.vf.math.define(specification,set) end end lst[#lst+1] = { id = font.nextid(), size = size } - fonts.vf.math.alas(main,#lst,size) + if mp then -- weak catch + fonts.vf.math.alas(main,#lst,size) + end if trace_virtual or trace_timings then logs.report("math virtual","loading and virtualizing font %s at size %s took %0.3f seconds",name,size,os.clock()-start) end main.has_italic = true main.type = "virtual" -- not needed mathematics.scaleparameters(main,main,1) -main.nomath = false + main.nomath = false +--~ print(table.serialize(characters[0x222B])) +--~ print(main.fontname,table.serialize(main.MathConstants)) return main end @@ -643,6 +715,10 @@ fonts.enc.math["tex-mr"] = { -- [0x000A8] = 0x7F, -- [math]ddot } +fonts.enc.math["tex-mr-missing"] = { + [0x02236] = 0x3A, -- colon +} + fonts.enc.math["tex-mi"] = { [0x1D6E4] = 0x00, -- Gamma [0x1D6E5] = 0x01, -- Delta @@ -688,10 +764,10 @@ fonts.enc.math["tex-mi"] = { [0x1D711] = 0x27, -- varphi (the other way around) [0x021BC] = 0x28, -- leftharpoonup [0x021BD] = 0x29, -- leftharpoondown - [0x021C0] = 0x2A, -- righttharpoonup + [0x021C0] = 0x2A, -- rightharpoonup [0x021C1] = 0x2B, -- rightharpoondown - -- 0x2C, -- lhook (hook for combining arrows) - -- 0x2D, -- rhook (hook for combining arrows) + [0xFE322] = 0x2C, -- lhook (hook for combining arrows) + [0xFE323] = 0x2D, -- rhook (hook for combining arrows) [0x022B3] = 0x2E, -- triangleright (TODO: which one is right?) [0x022B2] = 0x2F, -- triangleleft (TODO: which one is right?) -- [0x00041] = 0x30, -- 0 @@ -712,84 +788,90 @@ fonts.enc.math["tex-mi"] = { [0x0003E] = 0x3E, -- > [0x022C6] = 0x3F, -- star [0x02202] = 0x40, -- partial --- [0x00041] = 0x41, -- A +-- + [0x0266D] = 0x5B, -- flat + [0x0266E] = 0x5C, -- natural + [0x0266F] = 0x5D, -- sharp + [0x02323] = 0x5E, -- smile + [0x02322] = 0x5F, -- frown + [0x02113] = 0x60, -- ell +-- + [0x1D6A4] = 0x7B, -- imath (TODO: also 0131) + [0x1D6A5] = 0x7C, -- jmath (TODO: also 0237) + [0x02118] = 0x7D, -- wp + [0x020D7] = 0x7E, -- vec (TODO: not sure) +-- 0x7F, -- (no idea what that could be) +} + + +fonts.enc.math["tex-it"] = { +-- [0x1D434] = 0x41, -- A [0x1D6E2] = 0x41, -- Alpha --- [0x00042] = 0x42, -- B +-- [0x1D435] = 0x42, -- B [0x1D6E3] = 0x42, -- Beta --- [0x00043] = 0x43, -- C --- [0x00044] = 0x44, -- D --- [0x00045] = 0x45, -- E +-- [0x1D436] = 0x43, -- C +-- [0x1D437] = 0x44, -- D +-- [0x1D438] = 0x45, -- E [0x1D6E6] = 0x45, -- Epsilon --- [0x00046] = 0x46, -- F --- [0x00047] = 0x47, -- G --- [0x00048] = 0x48, -- H +-- [0x1D439] = 0x46, -- F +-- [0x1D43A] = 0x47, -- G +-- [0x1D43B] = 0x48, -- H [0x1D6E8] = 0x48, -- Eta --- [0x00049] = 0x49, -- I +-- [0x1D43C] = 0x49, -- I [0x1D6EA] = 0x49, -- Iota --- [0x0004A] = 0x4A, -- J --- [0x0004B] = 0x4B, -- K +-- [0x1D43D] = 0x4A, -- J +-- [0x1D43E] = 0x4B, -- K [0x1D6EB] = 0x4B, -- Kappa --- [0x0004C] = 0x4C, -- L --- [0x0004D] = 0x4D, -- M +-- [0x1D43F] = 0x4C, -- L +-- [0x1D440] = 0x4D, -- M [0x1D6ED] = 0x4D, -- Mu --- [0x0004E] = 0x4E, -- N +-- [0x1D441] = 0x4E, -- N [0x1D6EE] = 0x4E, -- Nu --- [0x0004F] = 0x4F, -- O +-- [0x1D442] = 0x4F, -- O [0x1D6F0] = 0x4F, -- Omicron --- [0x00050] = 0x50, -- P +-- [0x1D443] = 0x50, -- P [0x1D6F2] = 0x50, -- Rho --- [0x00051] = 0x51, -- Q --- [0x00052] = 0x52, -- R --- [0x00053] = 0x53, -- S --- [0x00054] = 0x54, -- T +-- [0x1D444] = 0x51, -- Q +-- [0x1D445] = 0x52, -- R +-- [0x1D446] = 0x53, -- S +-- [0x1D447] = 0x54, -- T [0x1D6F5] = 0x54, -- Tau --- [0x00055] = 0x55, -- U --- [0x00056] = 0x56, -- V --- [0x00057] = 0x57, -- W --- [0x00058] = 0x58, -- X +-- [0x1D448] = 0x55, -- U +-- [0x1D449] = 0x56, -- V +-- [0x1D44A] = 0x57, -- W +-- [0x1D44B] = 0x58, -- X [0x1D6F8] = 0x58, -- Chi --- [0x00059] = 0x59, -- Y --- [0x0005A] = 0x5A, -- Z - [0x1D6E7] = 0x5A, -- Zeta - [0x0266D] = 0x5B, -- flat - [0x0266E] = 0x5C, -- natural - [0x0266F] = 0x5D, -- sharp - [0x02323] = 0x5E, -- smile - [0x02322] = 0x5F, -- frown - [0x02113] = 0x60, -- ell --- [0x00061] = 0x61, -- a --- [0x00062] = 0x62, -- b --- [0x00063] = 0x63, -- c --- [0x00064] = 0x64, -- d --- [0x00065] = 0x65, -- e --- [0x00066] = 0x66, -- f --- [0x00067] = 0x67, -- g --- [0x00068] = 0x68, -- h - [0x0210E] = 0x68, -- plant constant --- [0x00069] = 0x69, -- i --- [0x0006A] = 0x6A, -- j --- [0x0006B] = 0x6B, -- k --- [0x0006C] = 0x6C, -- l --- [0x0006D] = 0x6D, -- m --- [0x0006E] = 0x6E, -- n --- [0x0006F] = 0x6F, -- o +-- [0x1D44C] = 0x59, -- Y +-- [0x1D44D] = 0x5A, -- Z +-- +-- [0x1D44E] = 0x61, -- a +-- [0x1D44F] = 0x62, -- b +-- [0x1D450] = 0x63, -- c +-- [0x1D451] = 0x64, -- d +-- [0x1D452] = 0x65, -- e +-- [0x1D453] = 0x66, -- f +-- [0x1D454] = 0x67, -- g +-- [0x1D455] = 0x68, -- h + [0x0210E] = 0x68, -- Planck constant (h) +-- [0x1D456] = 0x69, -- i +-- [0x1D457] = 0x6A, -- j +-- [0x1D458] = 0x6B, -- k +-- [0x1D459] = 0x6C, -- l +-- [0x1D45A] = 0x6D, -- m +-- [0x1D45B] = 0x6E, -- n +-- [0x1D45C] = 0x6F, -- o [0x1D70A] = 0x6F, -- omicron --- [0x00070] = 0x70, -- p --- [0x00071] = 0x71, -- q --- [0x00072] = 0x72, -- r --- [0x00073] = 0x73, -- s --- [0x00074] = 0x74, -- t --- [0x00075] = 0x75, -- u --- [0x00076] = 0x76, -- v --- [0x00077] = 0x77, -- w --- [0x00078] = 0x78, -- x --- [0x00079] = 0x79, -- y --- [0x0007A] = 0x7A, -- z - [0x1D6A4] = 0x7B, -- imath (TODO: also 0131) - [0x1D6A5] = 0x7C, -- jmath (TODO: also 0237) - [0x02118] = 0x7D, -- wp - [0x020D7] = 0x7E, -- vec (TODO: not sure) --- 0x7F, -- (no idea what that could be) +-- [0x1D45D] = 0x70, -- p +-- [0x1D45E] = 0x71, -- q +-- [0x1D45F] = 0x72, -- r +-- [0x1D460] = 0x73, -- s +-- [0x1D461] = 0x74, -- t +-- [0x1D462] = 0x75, -- u +-- [0x1D463] = 0x76, -- v +-- [0x1D464] = 0x77, -- w +-- [0x1D465] = 0x78, -- x +-- [0x1D466] = 0x79, -- y +-- [0x1D467] = 0x7A, -- z } fonts.enc.math["tex-ss"] = { } @@ -1279,12 +1361,12 @@ fonts.enc.math["tex-fraktur"] = { -- now that all other vectors are defined ... -fonts.vf.math.set_letters(fonts.enc.math, "tex-mi", 0x1D434, 0x1D44E) -fonts.vf.math.set_letters(fonts.enc.math, "tex-ss", 0x1D5A0, 0x1D5BA) -fonts.vf.math.set_letters(fonts.enc.math, "tex-tt", 0x1D670, 0x1D68A) -fonts.vf.math.set_letters(fonts.enc.math, "tex-bf", 0x1D400, 0x1D41A) -fonts.vf.math.set_letters(fonts.enc.math, "tex-bi", 0x1D468, 0x1D482) -fonts.vf.math.set_letters(fonts.enc.math, "tex-fraktur", 0x1D504, 0x1D51E) +fonts.vf.math.set_letters(fonts.enc.math, "tex-it", 0x1D434, 0x1D44E) +fonts.vf.math.set_letters(fonts.enc.math, "tex-ss", 0x1D5A0, 0x1D5BA) +fonts.vf.math.set_letters(fonts.enc.math, "tex-tt", 0x1D670, 0x1D68A) +fonts.vf.math.set_letters(fonts.enc.math, "tex-bf", 0x1D400, 0x1D41A) +fonts.vf.math.set_letters(fonts.enc.math, "tex-bi", 0x1D468, 0x1D482) +fonts.vf.math.set_letters(fonts.enc.math, "tex-fraktur", 0x1D504, 0x1D51E) fonts.vf.math.set_letters(fonts.enc.math, "tex-fraktur-bold", 0x1D56C, 0x1D586) fonts.vf.math.set_digits (fonts.enc.math, "tex-ss", 0x1D7E2) @@ -1294,308 +1376,4 @@ fonts.vf.math.set_digits (fonts.enc.math, "tex-bf", 0x1D7CE) -- fonts.vf.math.set_digits (fonts.enc.math, "tex-bi", 0x1D7CE) -- todo: add ss, tt, bf etc vectors --- we can make ss tt etc an option - --- rm-lmr5 : LMMathRoman5-Regular --- rm-lmbx5 : LMMathRoman5-Bold ] --- lmbsy5 : LMMathSymbols5-BoldItalic --- lmsy5 : LMMathSymbols5-Italic --- lmmi5 : LMMathItalic5-Italic --- lmmib5 : LMMathItalic5-BoldItalic - -mathematics.make_font ( "lmroman5-math", { - { name = "lmroman5-regular.otf", features = "virtualmath", main = true }, - -- { name = "rm-lmr5.tfm", vector = "tex-mr" } , - { name = "lmmi5.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "lmsy5.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "lmex10.tfm", vector = "tex-ex", extension = true } , - { name = "msam5.tfm", vector = "tex-ma" }, - { name = "msbm5.tfm", vector = "tex-mb" }, - -- { name = "rm-lmbx5.tfm", vector = "tex-bf" } , - { name = "lmroman5-bold", vector = "tex-bf" } , - { name = "lmmib5.tfm", vector = "tex-bi", skewchar=0x7F } , - { name = "lmsans8-regular.otf", vector = "tex-ss", optional=true }, - { name = "lmmono8-regular.otf", vector = "tex-tt", optional=true }, - { name = "eufm5.tfm", vector = "tex-fraktur", optional=true }, -} ) - --- rm-lmr6 : LMMathRoman6-Regular --- rm-lmbx6 : LMMathRoman6-Bold --- lmsy6 : LMMathSymbols6-Italic --- lmmi6 : LMMathItalic6-Italic - -mathematics.make_font ( "lmroman6-math", { - { name = "lmroman6-regular.otf", features = "virtualmath", main = true }, - -- { name = "rm-lmr6.tfm", vector = "tex-mr" } , - { name = "lmmi6.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "lmsy6.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "lmex10.tfm", vector = "tex-ex", extension = true } , - { name = "msam5.tfm", vector = "tex-ma" }, - { name = "msbm5.tfm", vector = "tex-mb" }, - -- { name = "rm-lmbx6.tfm", vector = "tex-bf" } , - { name = "lmroman6-bold.otf", vector = "tex-bf" } , - { name = "lmmib5.tfm", vector = "tex-bi", skewchar=0x7F } , - { name = "lmsans8-regular.otf", vector = "tex-ss", optional=true }, - { name = "lmmono8-regular.otf", vector = "tex-tt", optional=true }, - { name = "eufm5.tfm", vector = "tex-fraktur", optional=true }, - { name = "eufb5.tfm", vector = "tex-fraktur-bold", optional=true }, -} ) - --- rm-lmr7 : LMMathRoman7-Regular --- rm-lmbx7 : LMMathRoman7-Bold --- lmbsy7 : LMMathSymbols7-BoldItalic --- lmsy7 : LMMathSymbols7-Italic --- lmmi7 : LMMathItalic7-Italic --- lmmib7 : LMMathItalic7-BoldItalic - -mathematics.make_font ( "lmroman7-math", { - { name = "lmroman7-regular.otf", features = "virtualmath", main = true }, - -- { name = "rm-lmr7.tfm", vector = "tex-mr" } , - { name = "lmmi7.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "lmsy7.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "lmex10.tfm", vector = "tex-ex", extension = true } , - { name = "msam7.tfm", vector = "tex-ma" }, - { name = "msbm7.tfm", vector = "tex-mb" }, - -- { name = "rm-lmbx7.tfm", vector = "tex-bf" } , - { name = "lmroman7-bold.otf", vector = "tex-bf" } , - { name = "lmmib7.tfm", vector = "tex-bi", skewchar=0x7F } , - { name = "lmsans8-regular.otf", vector = "tex-ss", optional=true }, - { name = "lmmono8-regular.otf", vector = "tex-tt", optional=true }, - { name = "eufm7.tfm", vector = "tex-fraktur", optional=true }, - { name = "eufb7.tfm", vector = "tex-fraktur-bold", optional=true }, -} ) - --- rm-lmr8 : LMMathRoman8-Regular --- rm-lmbx8 : LMMathRoman8-Bold --- lmsy8 : LMMathSymbols8-Italic --- lmmi8 : LMMathItalic8-Italic - -mathematics.make_font ( "lmroman8-math", { - { name = "lmroman8-regular.otf", features = "virtualmath", main = true }, - -- { name = "rm-lmr8.tfm", vector = "tex-mr" } , - { name = "lmmi8.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "lmsy8.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "lmex10.tfm", vector = "tex-ex", extension = true } , - { name = "msam7.tfm", vector = "tex-ma" }, - { name = "msbm7.tfm", vector = "tex-mb" }, - -- { name = "rm-lmbx8.tfm", vector = "tex-bf" } , - { name = "lmroman8-bold.otf", vector = "tex-bf" } , - { name = "lmmib7.tfm", vector = "tex-bi", skewchar=0x7F } , - { name = "lmsans8-regular.otf", vector = "tex-ss", optional=true }, - { name = "lmmono8-regular.otf", vector = "tex-tt", optional=true }, - { name = "eufm7.tfm", vector = "tex-fraktur", optional=true }, - { name = "eufb7.tfm", vector = "tex-fraktur-bold", optional=true }, -} ) - --- rm-lmr9 : LMMathRoman9-Regular --- rm-lmbx9 : LMMathRoman9-Bold --- lmsy9 : LMMathSymbols9-Italic --- lmmi9 : LMMathItalic9-Italic - -mathematics.make_font ( "lmroman9-math", { - { name = "lmroman9-regular.otf", features = "virtualmath", main = true }, - -- { name = "rm-lmr9.tfm", vector = "tex-mr" } , - { name = "lmmi9.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "lmsy9.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "lmex10.tfm", vector = "tex-ex", extension = true } , - { name = "msam10.tfm", vector = "tex-ma" }, - { name = "msbm10.tfm", vector = "tex-mb" }, - -- { name = "rm-lmbx9.tfm", vector = "tex-bf" } , - { name = "lmroman9-bold.otf", vector = "tex-bf" } , - { name = "lmmib10.tfm", vector = "tex-bi", skewchar=0x7F } , - { name = "lmsans9-regular.otf", vector = "tex-ss", optional=true }, - { name = "lmmono9-regular.otf", vector = "tex-tt", optional=true }, - { name = "eufm10.tfm", vector = "tex-fraktur", optional=true }, - { name = "eufb10.tfm", vector = "tex-fraktur-bold", optional=true }, -} ) - --- rm-lmr10 : LMMathRoman10-Regular --- rm-lmbx10 : LMMathRoman10-Bold --- lmbsy10 : LMMathSymbols10-BoldItalic --- lmsy10 : LMMathSymbols10-Italic --- lmex10 : LMMathExtension10-Regular --- lmmi10 : LMMathItalic10-Italic --- lmmib10 : LMMathItalic10-BoldItalic - -mathematics.make_font ( "lmroman10-math", { - { name = "lmroman10-regular.otf", features = "virtualmath", main = true }, - -- { name = "rm-lmr10.tfm", vector = "tex-mr" } , - { name = "lmmi10.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "lmsy10.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "lmex10.tfm", vector = "tex-ex", extension = true } , - { name = "msam10.tfm", vector = "tex-ma" }, - { name = "msbm10.tfm", vector = "tex-mb" }, - -- { name = "rm-lmbx10.tfm", vector = "tex-bf" } , - { name = "lmroman10-bold.otf", vector = "tex-bf" } , - { name = "lmmib10.tfm", vector = "tex-bi", skewchar=0x7F } , - { name = "lmsans10-regular.otf", vector = "tex-ss", optional=true }, - { name = "lmmono10-regular.otf", vector = "tex-tt", optional=true }, - { name = "eufm10.tfm", vector = "tex-fraktur", optional=true }, - { name = "eufb10.tfm", vector = "tex-fraktur-bold", optional=true }, -} ) - -mathematics.make_font ( "lmroman10-boldmath", { - { name = "lmroman10-bold.otf", features = "virtualmath", main = true }, - -- { name = "rm-lmr10.tfm", vector = "tex-mr" } , - { name = "lmmib10.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "lmbsy10.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "lmex10.tfm", vector = "tex-ex", extension = true } , --- copied from roman: - { name = "msam10.tfm", vector = "tex-ma" }, - { name = "msbm10.tfm", vector = "tex-mb" }, - -- { name = "rm-lmbx10.tfm", vector = "tex-bf" } , - { name = "lmroman10-bold.otf", vector = "tex-bf" } , - { name = "lmmib10.tfm", vector = "tex-bi", skewchar=0x7F } , - { name = "lmsans10-regular.otf", vector = "tex-ss", optional=true }, - { name = "lmmono10-regular.otf", vector = "tex-tt", optional=true }, - { name = "eufm10.tfm", vector = "tex-fraktur", optional=true }, - { name = "eufb10.tfm", vector = "tex-fraktur-bold", optional=true }, -} ) - --- rm-lmr12 : LMMathRoman12-Regular --- rm-lmbx12 : LMMathRoman12-Bold --- lmmi12 : LMMathItalic12-Italic - -mathematics.make_font ( "lmroman12-math", { - { name = "lmroman12-regular.otf", features = "virtualmath", main = true }, - -- { name = "rm-lmr12.tfm", vector = "tex-mr" } , - { name = "lmmi12.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "lmsy10.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "lmex10.tfm", vector = "tex-ex", extension = true } , - { name = "msam10.tfm", vector = "tex-ma" }, - { name = "msbm10.tfm", vector = "tex-mb" }, - -- { name = "rm-lmbx12.tfm", vector = "tex-bf" } , - { name = "lmroman12-bold.otf", vector = "tex-bf" } , - { name = "lmmib10.tfm", vector = "tex-bi", skewchar=0x7F } , - { name = "lmsans12-regular.otf", vector = "tex-ss", optional=true }, - { name = "lmmono12-regular.otf", vector = "tex-tt", optional=true }, - { name = "eufm10.tfm", vector = "tex-fraktur", optional=true }, - { name = "eufb10.tfm", vector = "tex-fraktur-bold", optional=true }, -} ) - --- rm-lmr17 : LMMathRoman17-Regular - -mathematics.make_font ( "lmroman17-math", { - { name = "lmroman17-regular.otf", features = "virtualmath", main = true }, - -- { name = "rm-lmr12.tfm", vector = "tex-mr" } , - { name = "lmmi12.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "lmsy10.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "lmex10.tfm", vector = "tex-ex", extension = true } , - { name = "msam10.tfm", vector = "tex-ma" }, - { name = "msbm10.tfm", vector = "tex-mb" }, - -- { name = "rm-lmbx12.tfm", vector = "tex-bf" } , - { name = "lmroman12-bold.otf", vector = "tex-bf" } , - { name = "lmmib10.tfm", vector = "tex-bi", skewchar=0x7F } , - { name = "lmsans17-regular.otf", vector = "tex-ss", optional=true }, - { name = "lmmono17-regular.otf", vector = "tex-tt", optional=true }, - { name = "eufm10.tfm", vector = "tex-fraktur", optional=true }, - { name = "eufb10.tfm", vector = "tex-fraktur-bold", optional=true }, -} ) - --- pxr/txr messes up the accents - -mathematics.make_font ( "px-math", { - { name = "texgyrepagella-regular.otf", features = "virtualmath", main = true }, - { name = "rpxr.tfm", vector = "tex-mr" } , - { name = "rpxmi.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "pxsy.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "pxex.tfm", vector = "tex-ex", extension = true } , - { name = "pxsya.tfm", vector = "tex-ma" }, - { name = "pxsyb.tfm", vector = "tex-mb" }, -} ) - -mathematics.make_font ( "tx-math", { - { name = "texgyretermes-regular.otf", features = "virtualmath", main = true }, - { name = "rtxr.tfm", vector = "tex-mr" } , - { name = "rtxmi.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "txsy.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "txex.tfm", vector = "tex-ex", extension = true } , - { name = "txsya.tfm", vector = "tex-ma" }, - { name = "txsyb.tfm", vector = "tex-mb" }, -} ) - -mathematics.make_font ( "iwona-math", { - { name = "file:Iwona-Regular", features = "virtualmath", main = true }, - { name = "mi-iwonari.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "sy-iwonarz.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "ex-iwonar.tfm", vector = "tex-ex", extension = true } , - { name = "msam10.tfm", vector = "tex-ma" }, - { name = "msbm10.tfm", vector = "tex-mb" }, -} ) - -mathematics.make_font ( "iwona-light-math", { - { name = "file:IwonaLight-Regular", features = "virtualmath", main = true }, - { name = "mi-iwonali.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "sy-iwonalz.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "ex-iwonal.tfm", vector = "tex-ex", extension = true } , - { name = "msam10.tfm", vector = "tex-ma" }, - { name = "msbm10.tfm", vector = "tex-mb" }, -} ) - -mathematics.make_font ( "iwona-medium-math", { - { name = "file:IwonaMedium-Regular", features = "virtualmath", main = true }, - { name = "mi-iwonami.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "sy-iwonamz.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "ex-iwonam.tfm", vector = "tex-ex", extension = true } , - { name = "msam10.tfm", vector = "tex-ma" }, - { name = "msbm10.tfm", vector = "tex-mb" }, -} ) - -mathematics.make_font ( "iwona-heavy-math", { - { name = "file:IwonaHeavy-Regular", features = "virtualmath", main = true }, - { name = "mi-iwonahi.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "sy-iwonahz.tfm", vector = "tex-sy", skewchar=0x30, parameters = true } , - { name = "ex-iwonah.tfm", vector = "tex-ex", extension = true } , - { name = "msam10.tfm", vector = "tex-ma" }, - { name = "msbm10.tfm", vector = "tex-mb" }, -} ) - --- not ok, we need adapted vectors ! - -mathematics.make_font ( "mathtimes-math", { - { name = "file:texgyretermes-regular.otf", features = "virtualmath", main = true }, - { name = "mtmiz.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "mtsyn.tfm", vector = "tex-sy", skewchar=0x30, parameters = true }, - { name = "mtex.tfm", vector = "tex-ex", extension = true }, - { name = "msam10.tfm", vector = "tex-ma" }, - { name = "msbm10.tfm", vector = "tex-mb" }, -} ) - -mathematics.make_font ( "lucida-math", { - { name = "lbr.afm", features = "virtualmath", main = true }, - { name = "hlcrim.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "hlcry.tfm", vector = "tex-sy", skewchar=0x30, parameters = true }, - { name = "hlcrv.tfm", vector = "tex-ex", extension = true }, - { name = "hlcra.tfm", vector = "tex-ma" }, - { name = "hlcrm.tfm", vector = "tex-mb" }, -} ) - -mathematics.make_font ( "charter-math", { - { name = "file:bchr8a", features = "virtualmath", main = true }, --- { name = "md-chr7m.tfm", vector = "tex-mr" }, - { name = "md-chri7m.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "md-chr7y.tfm", vector = "tex-sy", skewchar=0x30, parameters = true }, - { name = "md-chr7v.tfm", vector = "tex-ex", extension = true }, - { name = "msam10.tfm", vector = "tex-ma" }, - { name = "msbm10.tfm", vector = "tex-mb" }, -} ) - -mathematics.make_font ( "garamond-math", { - { name = "file:ugmr8y", features = "virtualmath", main = true }, --- { name = "md-gmr7m.tfm", vector = "tex-mr" }, - { name = "md-gmri7m.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "md-gmr7y.tfm", vector = "tex-sy", skewchar=0x30, parameters = true }, - { name = "md-gmr7v.tfm", vector = "tex-ex", extension = true }, - { name = "msam10.tfm", vector = "tex-ma" }, - { name = "msbm10.tfm", vector = "tex-mb" }, -} ) - -mathematics.make_font ( "utopia-math", { - { name = "file:putr8y", features = "virtualmath", main = true }, --- { name = "md-utr7m.tfm", vector = "tex-mr" }, - { name = "md-utri7m.tfm", vector = "tex-mi", skewchar=0x7F }, - { name = "md-utr7y.tfm", vector = "tex-sy", skewchar=0x30, parameters = true }, - { name = "md-utr7v.tfm", vector = "tex-ex", extension = true }, - { name = "msam10.tfm", vector = "tex-ma" }, - { name = "msbm10.tfm", vector = "tex-mb" }, -} ) +-- todo: we can make ss tt etc an option |