diff --git a/ft.c b/ft.c index e356c1a4e..38b16542e 100644 --- a/ft.c +++ b/ft.c @@ -141,6 +141,8 @@ static int renderGlyph(lua_State *L) { lua_setfield(L, -2, "t"); lua_pushinteger(L, (*face)->glyph->advance.x >> 6); lua_setfield(L, -2, "ax"); + lua_pushinteger(L, (*face)->glyph->advance.y >> 6); + lua_setfield(L, -2, "ay"); return 1; } @@ -168,6 +170,25 @@ static int getKerning(lua_State *L) { return 1; } +static int getHeightAndAscender(lua_State *L) { + FT_Face *face = (FT_Face*) luaL_checkudata(L, 1, "ft_face"); + + double pixels_height,pixels_ascender; + double em_size, y_scale; + + /* compute floating point scale factors */ + em_size = 1.0 * (*face)->units_per_EM; + y_scale = (*face)->size->metrics.y_ppem / em_size; + + /* convert design distances to floating point pixels */ + pixels_height = (*face)->height * y_scale; + pixels_ascender = (*face)->ascender * y_scale; + + lua_pushnumber(L, pixels_height); + lua_pushnumber(L, pixels_ascender); + return 2; +} + static int doneFace(lua_State *L) { FT_Face *face = (FT_Face*) luaL_checkudata(L, 1, "ft_face"); if(*face != NULL) { @@ -184,6 +205,7 @@ static const struct luaL_Reg ft_face_meth[] = { {"renderGlyph", renderGlyph}, {"hasKerning", hasKerning}, {"getKerning", getKerning}, + {"getHeightAndAscender", getHeightAndAscender}, {"done", doneFace}, {"__gc", doneFace}, {NULL, NULL} diff --git a/helppage.lua b/helppage.lua index 33ba5e9a9..8e28034f4 100644 --- a/helppage.lua +++ b/helppage.lua @@ -7,11 +7,6 @@ require "selectmenu" require "commands" HelpPage = { - -- Other Class vars: - - -- spacing between lines - spacing = 25, - -- state buffer commands = nil, items = 0, @@ -21,16 +16,13 @@ HelpPage = { -- Other Class vars: -- font for displaying keys -HelpPage.fsize = 20 -HelpPage.face, HelpPage.fhash = Font:getFaceAndHash(HelpPage.fsize, "mono") +HelpPage.mFace, HelpPage.mHash = Font:getFaceAndHash(20, "mono") -- font for displaying help messages -HelpPage.hfsize = 20 -HelpPage.hface, HelpPage.hfhash = Font:getFaceAndHash(HelpPage.hfsize, "sans") +HelpPage.sFace, HelpPage.sHash = Font:getFaceAndHash(20, "sans") -- font for paging display -HelpPage.ffsize = 15 -HelpPage.fface, HelpPage.ffhash = Font:getFaceAndHash(HelpPage.ffsize, "sans") +HelpPage.fFace, HelpPage.fHash = Font:getFaceAndHash(15, "sans") -function HelpPage:show(ypos, height,commands) +function HelpPage:show(ypos,height,commands) self.commands = {} self.items = 0 local keys = {} @@ -44,28 +36,39 @@ function HelpPage:show(ypos, height,commands) end end table.sort(self.commands,function(w1,w2) return w1.order