emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Interesting combining character issue


From: Kenichi Handa
Subject: Re: Interesting combining character issue
Date: Fri, 05 Dec 2008 13:55:34 +0900

In article <address@hidden>, James Cloos <address@hidden> writes:

Kenichi> What is shown when you move point on the first cahracter of
Kenichi> that sequence (U+ 04E8) and type C-u C-x =?
[...]
> Composed with the following character(s) "̄" using this font:
>   xft:-unknown-DejaVu Sans Mono-normal-normal-normal-*-14-*-*-*-m-0-iso10646-1
> by these glyphs:
>   [0 1 1256 978 8 0 8 11 1 nil]
>   [0 1 772 647 -9 2 6 10 -9 [0 0 -9]]

That is different from my case.  I got this with the same font:

Composed with the following character(s) "̄" using this font:
  xft:-unknown-DejaVu Sans Mono-normal-normal-normal-*-14-*-*-*-m-0-iso10646-1
by these glyphs:
  [0 1 1256 978 8 0 8 11 1 nil]
  [0 1 772 647 8 2 6 10 -9 [-8 -3 0]]

The last vector is the information about the glyph of U+304
(COMBINING MACRON).  Yours says that the glyph width is -9
(5th element), which is a little bit strange.

Please show me these info:
% freetype-config --version
% libotf-config --version
% m17n-config --version

Mine are 9.18.3, 0.9.8, 1.5.3 respectively.

And, please run the attached program as this:
% fttest .../DejaVuSansMono.ttf 647

I got this:

width=8, lbearing=2, rbearing=6, acsent=10, descent=-9

---
Kenichi Handa
address@hidden

----fttest.c--------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>

#include <ft2build.h>
#include FT_FREETYPE_H
#include FT_TRUETYPE_TABLES_H

int
main (int argc, char **argv)
{
  FT_Library library;
  FT_Face ft_face;
  FT_Glyph_Metrics *m;

  if (argc < 3)
    {
      printf ("Usage: fttest FONTFILE CHAR\n");
      exit (1);
    }

  FT_Init_FreeType (&library);
  FT_New_Face (library, argv[1], 0, &ft_face);
  FT_Set_Pixel_Sizes (ft_face, 14, 14);
  FT_Load_Glyph (ft_face, atoi (argv[2]), FT_LOAD_DEFAULT);
  m = &ft_face->glyph->metrics;
  printf ("width=%d, lbearing=%d, rbearing=%d, acsent=%d, descent=%d\n",
          (int) (m->horiAdvance >> 6), (int) (m->horiBearingX >> 6),
          (int) ((m->horiBearingX + m->width) >> 6),
          (int) (m->horiBearingY >> 6),
          (int) ((m->height - m->horiBearingY) >> 6));
  exit (0);
}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]