diff options
| author | Kenichi Handa | 2009-12-12 02:11:29 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2009-12-12 02:11:29 +0000 |
| commit | 91ce241591151ef366a505bb38182789bb6c293b (patch) | |
| tree | 43f3b2242f7783ceef714ccb111aee0e83554975 | |
| parent | d356f4fcff6652a6f81b8c91a60cbda41a70f44b (diff) | |
| download | emacs-91ce241591151ef366a505bb38182789bb6c293b.tar.gz emacs-91ce241591151ef366a505bb38182789bb6c293b.zip | |
(struct xftfont_info): New member matrix.
(xftfont_open): Setup xftfont_info->matrix.
| -rw-r--r-- | src/xftfont.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/xftfont.c b/src/xftfont.c index e2819863f07..4675875496a 100644 --- a/src/xftfont.c +++ b/src/xftfont.c | |||
| @@ -47,7 +47,7 @@ static Lisp_Object QChinting , QCautohint, QChintstyle, QCrgba, QCembolden; | |||
| 47 | struct xftfont_info | 47 | struct xftfont_info |
| 48 | { | 48 | { |
| 49 | struct font font; | 49 | struct font font; |
| 50 | /* The following four members must be here in this order to be | 50 | /* The following five members must be here in this order to be |
| 51 | compatible with struct ftfont_info (in ftfont.c). */ | 51 | compatible with struct ftfont_info (in ftfont.c). */ |
| 52 | #ifdef HAVE_LIBOTF | 52 | #ifdef HAVE_LIBOTF |
| 53 | int maybe_otf; /* Flag to tell if this may be OTF or not. */ | 53 | int maybe_otf; /* Flag to tell if this may be OTF or not. */ |
| @@ -55,6 +55,7 @@ struct xftfont_info | |||
| 55 | #endif /* HAVE_LIBOTF */ | 55 | #endif /* HAVE_LIBOTF */ |
| 56 | FT_Size ft_size; | 56 | FT_Size ft_size; |
| 57 | int index; | 57 | int index; |
| 58 | FT_Matrix matrix; | ||
| 58 | Display *display; | 59 | Display *display; |
| 59 | int screen; | 60 | int screen; |
| 60 | XftFont *xftfont; | 61 | XftFont *xftfont; |
| @@ -254,6 +255,7 @@ xftfont_open (f, entity, pixel_size) | |||
| 254 | int len, i; | 255 | int len, i; |
| 255 | XGlyphInfo extents; | 256 | XGlyphInfo extents; |
| 256 | FT_Face ft_face; | 257 | FT_Face ft_face; |
| 258 | FcMatrix *matrix; | ||
| 257 | 259 | ||
| 258 | val = assq_no_quit (QCfont_entity, AREF (entity, FONT_EXTRA_INDEX)); | 260 | val = assq_no_quit (QCfont_entity, AREF (entity, FONT_EXTRA_INDEX)); |
| 259 | if (! CONSP (val)) | 261 | if (! CONSP (val)) |
| @@ -378,6 +380,16 @@ xftfont_open (f, entity, pixel_size) | |||
| 378 | xftfont_info->display = display; | 380 | xftfont_info->display = display; |
| 379 | xftfont_info->screen = FRAME_X_SCREEN_NUMBER (f); | 381 | xftfont_info->screen = FRAME_X_SCREEN_NUMBER (f); |
| 380 | xftfont_info->xftfont = xftfont; | 382 | xftfont_info->xftfont = xftfont; |
| 383 | /* This means that there's no need of transformation. */ | ||
| 384 | xftfont_info->matrix.xx = 0; | ||
| 385 | if (FcPatternGetMatrix (xftfont->pattern, FC_MATRIX, 0, &matrix) | ||
| 386 | == FcResultMatch) | ||
| 387 | { | ||
| 388 | xftfont_info->matrix.xx = 0x10000L * matrix->xx; | ||
| 389 | xftfont_info->matrix.yy = 0x10000L * matrix->yy; | ||
| 390 | xftfont_info->matrix.xy = 0x10000L * matrix->xy; | ||
| 391 | xftfont_info->matrix.yx = 0x10000L * matrix->yx; | ||
| 392 | } | ||
| 381 | font->pixel_size = size; | 393 | font->pixel_size = size; |
| 382 | font->driver = &xftfont_driver; | 394 | font->driver = &xftfont_driver; |
| 383 | if (INTEGERP (AREF (entity, FONT_SPACING_INDEX))) | 395 | if (INTEGERP (AREF (entity, FONT_SPACING_INDEX))) |