diff options
| -rw-r--r-- | luaotfload-extralibs.lua | 16 | ||||
| -rw-r--r-- | luaotfload-letterspace.lua | 8 | ||||
| -rwxr-xr-x | mktests | 48 | 
3 files changed, 51 insertions, 21 deletions
| diff --git a/luaotfload-extralibs.lua b/luaotfload-extralibs.lua index 3769e06..d04ba5b 100644 --- a/luaotfload-extralibs.lua +++ b/luaotfload-extralibs.lua @@ -211,7 +211,12 @@ if not markdata then      if k == true then        return marks[currentfont()]      else -      local resources = identifiers[k].resources or { } +      local resources = { } + +      if identifiers[k] then +        resources = identifiers[k].resources or { } +      end +        local marks = resources.marks or { }        t[k] = marks        return marks @@ -369,11 +374,10 @@ kerns.disablecharacterkerning    = disablecharacterkerning  --- now for the simplistic variant  --- unit -> bool  local enablefontkerning = function ( ) -  return add_processor( -    kernfont.handler, -    "typesetters.kernfont", -    "pre_linebreak_filter", "hpack_filter" -  ) +  return add_processor( kernfont.handler +                      , "typesetters.kernfont" +                      , "pre_linebreak_filter" +                      , "hpack_filter")  end  --- unit -> bool diff --git a/luaotfload-letterspace.lua b/luaotfload-letterspace.lua index 3134f22..b8bd36d 100644 --- a/luaotfload-letterspace.lua +++ b/luaotfload-letterspace.lua @@ -118,7 +118,10 @@ kerncharacters = function (head)            goto nextnode          elseif firstkern then            firstkern = false -          goto nextnode +          if (id ~= disc_code) and (not start.components) then +            --- not a ligature, skip node +            goto nextnode +          end          end        end @@ -133,11 +136,12 @@ kerncharacters = function (head)        --- 2) resolve ligatures        local c = start.components +        if c then          if keepligature and keepligature(start) then            -- keep 'm          else -          c = kerncharacters (c) +          --- c = kerncharacters (c) --> taken care of after replacing            local s = start            local p, n = s.prev, s.next            local tail = find_node_tail(c) @@ -78,30 +78,51 @@ local infer_regular_style = {    { "DejaVu Sans",          "DejaVuSans.ttf"            },    { "Adobe Garamond Pro",   "agaramondpro_regular.otf"  },    { "Garamond Premier Pro", "GaramondPremrPro-Capt.otf" }, +  { "CMU Serif",            "cmunrm.otf"                }, +  { "CMU Sans Serif",       "cmunss.otf"                },  }  local choose_optical_size = { -  { { name = "Latin Modern Roman", optsize =  0 }, "lmroman5-regular.otf" }, -  { { name = "Latin Modern Roman", optsize = 10 }, "lmroman10-regular.otf" }, -  { { name = "Latin Modern Roman", optsize = 12 }, "lmroman12-regular.otf" }, -  { { name = "Latin Modern Roman", optsize = 42 }, "lmroman17-regular.otf" }, -  { { name = "EB Garamond", optsize =  0 }, "EBGaramond08-Regular.otf" }, -  { { name = "EB Garamond", optsize =  8 }, "EBGaramond08-Regular.otf" }, -  { { name = "EB Garamond", optsize = 12 }, "EBGaramond12-Regular.otf" }, -  { { name = "EB Garamond", optsize = 42 }, "EBGaramond12-Regular.otf" }, +  { { name = "Latin Modern Roman", optsize =  0 }, "lmroman5-regular.otf"        }, +  { { name = "Latin Modern Roman", optsize = 10 }, "lmroman10-regular.otf"       }, +  { { name = "Latin Modern Roman", optsize = 12 }, "lmroman12-regular.otf"       }, +  { { name = "Latin Modern Roman", optsize = 42 }, "lmroman17-regular.otf"       }, +  { { name = "EB Garamond", optsize =  0 }, "EBGaramond08-Regular.otf"           }, +  { { name = "EB Garamond", optsize =  8 }, "EBGaramond08-Regular.otf"           }, +  { { name = "EB Garamond", optsize = 12 }, "EBGaramond12-Regular.otf"           }, +  { { name = "EB Garamond", optsize = 42 }, "EBGaramond12-Regular.otf"           },    { { name = "Garamond Premier Pro", optsize =  0 }, "GaramondPremrPro-Capt.otf" }, -  { { name = "Garamond Premier Pro", optsize = 10 }, "GaramondPremrPro.otf" }, +  { { name = "Garamond Premier Pro", optsize = 10 }, "GaramondPremrPro.otf"      },    { { name = "Garamond Premier Pro", optsize = 15 }, "GaramondPremrPro-Subh.otf" },    { { name = "Garamond Premier Pro", optsize = 42 }, "GaramondPremrPro-Disp.otf" },  } +local choose_style = { +  { { name = "DejaVu Sans", style = "regular"    }, "DejaVuSans.ttf"                       }, +  { { name = "DejaVu Sans", style = "italic"     }, "DejaVuSans-Oblique.ttf"               }, +  { { name = "DejaVu Sans", style = "bold"       }, "DejaVuSans-Bold.ttf"                  }, +  { { name = "DejaVu Sans", style = "bolditalic" }, "DejaVuSans-BoldOblique.ttf"           }, +  { { name = "Linux Libertine O", style = "regular"    }, "LinLibertine_R.otf"             }, +  { { name = "Linux Libertine O", style = "italic"     }, "LinLibertine_RI.otf"            }, +  { { name = "Linux Libertine O", style = "bold"       }, "LinLibertine_RB.otf"            }, +  { { name = "Linux Libertine O", style = "bolditalic" }, "LinLibertine_RBI.otf"           }, +  { { name = "Liberation Serif", style = "regular"    }, "LiberationSerif-Regular.ttf"     }, +  { { name = "Liberation Serif", style = "italic"     }, "LiberationSerif-Italic.ttf"      }, +  { { name = "Liberation Serif", style = "bold"       }, "LiberationSerif-Bold.ttf"        }, +  { { name = "Liberation Serif", style = "bolditalic" }, "LiberationSerif-BoldItalic.ttf"  }, +  { { name = "CMU Sans Serif", style = "regular"    }, "cmunss.otf"   }, -- no “regular” but “medium” +  { { name = "CMU Sans Serif", style = "italic"     }, "cmunsi.otf"   }, -- no “italic” but “oblique” +  { { name = "CMU Sans Serif", style = "bold"       }, "cmunsx.otf"   }, +  { { name = "CMU Sans Serif", style = "bolditalic" }, "cmunso.otf"   }, +} +  --- this needs a database built with --formats=+pfa,pfb,afm  local resolve_t1_font = { -  { { name = "URW Gothic L",          style = "regular"    }, "uagk8a.pfb" }, -  { { name = "URW Gothic L",          style = "italic"     }, "uagko8a.pfb" }, -  { { name = "URW Gothic L",          style = "bold"       }, "uagd8a.pfb" }, -  { { name = "URW Gothic L",          style = "bolditalic" }, "uagdo8a.pfb" }, +  { { name = "URW Gothic L",          style = "regular"    }, "uagk8a.pfb"   }, +  { { name = "URW Gothic L",          style = "italic"     }, "uagko8a.pfb"  }, +  { { name = "URW Gothic L",          style = "bold"       }, "uagd8a.pfb"   }, +  { { name = "URW Gothic L",          style = "bolditalic" }, "uagdo8a.pfb"  },    { { name = "Century Schoolbook L",  style = "regular"    }, "uncr8a.pfb"   },    { { name = "Century Schoolbook L",  style = "italic"     }, "uncri8a.pfb"  },    { { name = "Century Schoolbook L",  style = "bold"       }, "uncb8a.pfb"   }, @@ -115,6 +136,7 @@ local resolve_t1_font = {  local font_name_tests = {    infer_regular_style,    choose_optical_size, +  choose_style,    resolve_t1_font,  } | 
