diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/luaotfload-database.lua | 43 | ||||
| -rw-r--r-- | src/luaotfload-features.lua | 17 | ||||
| -rw-r--r-- | src/luaotfload-parsers.lua | 2 | 
3 files changed, 29 insertions, 33 deletions
diff --git a/src/luaotfload-database.lua b/src/luaotfload-database.lua index 97fdfc1..e8d6e7b 100644 --- a/src/luaotfload-database.lua +++ b/src/luaotfload-database.lua @@ -1042,22 +1042,27 @@ local lookup_fontname = function (specification, name, style)      return nil, nil  end -local design_size_dimension -local set_size_dimension +local design_size_dimension  --- scale asked size if not using bp +local set_size_dimension     --- called from config  do -    --- cf. TeXbook p. 57 +    --- cf. TeXbook p. 57; the index stores sizes pre-scaled from bp to +    --- sp. This allows requesting sizes we got from the TeX end +    --- without further conversion. For the other options *pt* and *dd* +    --- we scale the requested size as though the value in the font was +    --- specified in the requested unit. +      local dimens = { -        pt = function (v) return v                 end, -        bp = function (v) return (v * 7227) / 7200 end, -        dd = function (v) return (v * 1238) / 1157 end, +        bp = false, +        pt = function (v) return v * (7227 / 7200)                 end, +        dd = function (v) return v * (7227 / 7200) * (1238 / 1157) end,      }      design_size_dimension = dimens.bp      set_size_dimension = function (dim)          local f = dimens [dim] -        if f then +        if f ~= nil then              logreport ("both", 4, "db",                         "Interpreting design sizes as %q, factor %.6f.",                         dim, f (1.000000)) @@ -1135,7 +1140,10 @@ lookup_font_name = function (specification)              askedsize = 0          end      end -    askedsize = design_size_dimension (askedsize) + +    if design_size_dimension ~= false then +        askedsize = design_size_dimension (askedsize) +    end      resolved, subfont = lookup_familyname (specification,                                             name, @@ -1350,9 +1358,16 @@ local load_font_file = function (filename, subfont)      return ret  end +--- Design sizes in the fonts are specified in decipoints. For the +--- index these values are prescaled to sp which is what we’re dealing +--- with at the TeX end. +  local get_size_info do --- too many upvalues :/      --- rawdata -> (int * int * int | bool) +    local sp = 2^16        -- pt +    local bp = 7227 / 7200 -- pt +      get_size_info = function (rawinfo)          local design_size         = rawinfo.design_size          local design_range_top    = rawinfo.design_range_top @@ -1363,13 +1378,13 @@ local get_size_info do --- too many upvalues :/                             or design_range_top    ~= 0 and design_range_top          if fallback_size then -            design_size         = ((design_size         or fallback_size) * 2^16) / 10 -            design_range_top    = ((design_range_top    or fallback_size) * 2^16) / 10 -            design_range_bottom = ((design_range_bottom or fallback_size) * 2^16) / 10 +            design_size         = ((design_size         or fallback_size) * sp) / 10 +            design_range_top    = ((design_range_top    or fallback_size) * sp) / 10 +            design_range_bottom = ((design_range_bottom or fallback_size) * sp) / 10 -            design_size         = (design_size         * 7227) / 7200 -            design_range_top    = (design_range_top    * 7227) / 7200 -            design_range_bottom = (design_range_bottom * 7227) / 7200 +            design_size         = design_size         * bp +            design_range_top    = design_range_top    * bp +            design_range_bottom = design_range_bottom * bp              return {                  design_size, design_range_top, design_range_bottom, diff --git a/src/luaotfload-features.lua b/src/luaotfload-features.lua index a57aac3..5c35031 100644 --- a/src/luaotfload-features.lua +++ b/src/luaotfload-features.lua @@ -1288,10 +1288,6 @@ local tlig_specification = {          data     = {              [0x2013] = {0x002D, 0x002D},         -- endash              [0x2014] = {0x002D, 0x002D, 0x002D}, -- emdash -            [0x201C] = {0x2018, 0x2018},         -- quotedblleft -            [0x201D] = {0x2019, 0x2019},         -- quotedblright -            [0x00A1] = {0x0021, 0x2018},         -- exclamdown -            [0x00BF] = {0x003F, 0x2018},         -- questiondown              --- next three originate in T1 encoding; Xetex applies              --- them too              [0x201E] = {0x002C, 0x002C},         -- quotedblbase @@ -1302,19 +1298,6 @@ local tlig_specification = {          order    = { "tlig" },          prepend  = true,      }, -    { -        type     = "ligature", -        features = everywhere, -        data     = { -            [0x201C] = {0x0060, 0x0060},         -- quotedblleft -            [0x201D] = {0x0027, 0x0027},         -- quotedblright -            [0x00A1] = {0x0021, 0x0060},         -- exclamdown -            [0x00BF] = {0x003F, 0x0060},         -- questiondown -        }, -        flags    = noflags, -        order    = { "tlig" }, -        prepend  = true, -    },  }  local rot13_specification = { diff --git a/src/luaotfload-parsers.lua b/src/luaotfload-parsers.lua index ffb6401..c2b4f2e 100644 --- a/src/luaotfload-parsers.lua +++ b/src/luaotfload-parsers.lua @@ -615,9 +615,7 @@ local prefixed          = P"name:" * ws * Cg(fontname, "name")  --- we’ll emit a warning.                          + P"file:" * ws * Cg(unsupported, "path")                          + P"file:" * ws * Cg(fontname, "file") ---- EXPERIMENTAL: kpse lookup                          + P"kpse:" * ws * Cg(fontname, "kpse") ---- EXPERIMENTAL: custom lookup                          + P"my:" * ws * Cg(fontname, "my")  local unprefixed        = Cg(fontname, "anon")  local path_lookup       = lbrk * Cg(C((1-rbrk)^1), "path") * rbrk  | 
