Commit 31daa5e1 authored by Kenichi Handa's avatar Kenichi Handa

Fix incorrect font metrics when the same font is opened with different pixelsizes.

parent e6673d01
2010-10-15 Kenichi Handa <handa@m17n.org>
Fix incorrect font metrics when the same font is opened with
different pixelsizes.
* xftfont.c: Include composite.h.
(xftfont_shape): New function.
(syms_of_xftfont): Set xftfont_driver.shape.
2010-10-13 Damyan Pepper <damyanp@gmail.com> 2010-10-13 Damyan Pepper <damyanp@gmail.com>
Fix handling of font properties on Windows (bug#6303). Fix handling of font properties on Windows (bug#6303).
......
...@@ -32,6 +32,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ ...@@ -32,6 +32,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "blockinput.h" #include "blockinput.h"
#include "character.h" #include "character.h"
#include "charset.h" #include "charset.h"
#include "composite.h"
#include "fontset.h" #include "fontset.h"
#include "font.h" #include "font.h"
#include "ftfont.h" #include "ftfont.h"
...@@ -702,6 +703,23 @@ xftfont_draw (s, from, to, x, y, with_background) ...@@ -702,6 +703,23 @@ xftfont_draw (s, from, to, x, y, with_background)
return len; return len;
} }
Lisp_Object
xftfont_shape (Lisp_Object lgstring)
{
struct font *font;
struct xftfont_info *xftfont_info;
FT_Face ft_face;
Lisp_Object val;
CHECK_FONT_GET_OBJECT (LGSTRING_FONT (lgstring), font);
xftfont_info = (struct xftfont_info *) font;
ft_face = XftLockFace (xftfont_info->xftfont);
xftfont_info->ft_size = ft_face->size;
val = ftfont_driver.shape (lgstring);
XftUnlockFace (xftfont_info->xftfont);
return val;
}
static int static int
xftfont_end_for_frame (f) xftfont_end_for_frame (f)
FRAME_PTR f; FRAME_PTR f;
...@@ -796,6 +814,9 @@ syms_of_xftfont () ...@@ -796,6 +814,9 @@ syms_of_xftfont ()
xftfont_driver.draw = xftfont_draw; xftfont_driver.draw = xftfont_draw;
xftfont_driver.end_for_frame = xftfont_end_for_frame; xftfont_driver.end_for_frame = xftfont_end_for_frame;
xftfont_driver.cached_font_ok = xftfont_cached_font_ok; xftfont_driver.cached_font_ok = xftfont_cached_font_ok;
#if defined (HAVE_M17N_FLT) && defined (HAVE_LIBOTF)
xftfont_driver.shape = xftfont_shape;
#endif
register_font_driver (&xftfont_driver, NULL); register_font_driver (&xftfont_driver, NULL);
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment