all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: wl@gnu.org, clement.pitclaudel@live.com, ohwoeowho@gmail.com
Cc: 20628@debbugs.gnu.org
Subject: bug#20628: 25.0.50; Incorrect line height for some fonts
Date: Sun, 24 May 2015 13:06:57 +0300	[thread overview]
Message-ID: <834mn21e7y.fsf@gnu.org> (raw)
In-Reply-To: <83617i1f29.fsf@gnu.org>

> Date: Sun, 24 May 2015 12:48:46 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: clement.pitclaudel@live.com, ohwoeowho@gmail.com, 20628@debbugs.gnu.org
> 
> > Have you seen my message w.r.t. the `ascent' and `descent' fields in
> > the `font_metrics' structure of Emacs?  Does this help?
> 
> Yes, I've seen it; and yes, it helps.  I need to try the solution
> based on that.

Actually, I need help with this, as I don't know enough about fonts,
and don't have access to systems where per-character ascent/descent
values are currently available in Emacs.

So I'm going to describe here the information that should allow those
who have access to affected systems to propose a patch.

The relevant place in the display engine where these factors are taken
into consideration is around line 26388 in xdisp.c, which is part of
the function x_produce_glyphs.  There you will find a call to the
function get_per_char_metric, which in turn calls the font driver's
text_extents method.  The metrics returned by get_per_char_metric
include ascent and descent, but I think they are not in pixel units.
We currently assign these values to the phys_ascent and phys_descent
of 'struct it', the iterator object used to walk the visible portion
of the buffer and produce glyphs for display.  I'm not sure what we do
with phys_ascent and phys_descent values once we compute them, but you
can search for them in xdisp.c to get the idea.  By contrast, the
height of the screen line is computed by summing it->ascent and
it->descent, which currently are set using the font's ascent and
descent values.

The change we look for should:

  . set the initial values for it->ascent and it->descent using some
    heuristics based on pixel_size of the default face's font;

  . update it->ascent and it->descent based on ascent/descent values
    returned by get_per_char_metric in the per-character metrics data

If people who want to work on this have questions about the display
engine, please don't hesitate to ask.

Thanks in advance!





  reply	other threads:[~2015-05-24 10:06 UTC|newest]

Thread overview: 114+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-22  3:02 bug#20628: 25.0.50; Incorrect line height for some fonts Clément Pit--Claudel
2015-05-22  7:32 ` Eli Zaretskii
2015-05-22 10:11   ` Oleh Krehel
2015-05-22 12:26     ` Eli Zaretskii
2015-05-22 12:49       ` Oleh Krehel
2015-05-22 13:13         ` Eli Zaretskii
2015-05-22 13:18         ` Eli Zaretskii
2015-05-22 13:03       ` Eli Zaretskii
2015-05-22 13:15         ` Oleh Krehel
2015-05-22 13:55           ` Eli Zaretskii
2015-05-22 13:54             ` Oleh Krehel
2015-05-22 14:07               ` Eli Zaretskii
2015-05-22 14:20                 ` Oleh Krehel
2015-05-22 14:49                   ` Eli Zaretskii
2015-05-22 15:03                     ` Oleh Krehel
2015-05-22 15:39                       ` Eli Zaretskii
2015-05-22 16:05                         ` Oleh Krehel
2015-05-22 16:14                           ` Eli Zaretskii
2015-05-22 16:15                             ` Oleh Krehel
2015-05-22 16:32                               ` Eli Zaretskii
2015-05-22 16:33                                 ` Oleh Krehel
2015-05-22 16:54                                   ` Oleh Krehel
2015-05-22 17:15                                     ` Andreas Schwab
2015-05-22 17:40                                       ` Oleh Krehel
2015-05-22 18:18                                     ` Eli Zaretskii
2015-05-22 18:18                                       ` Oleh Krehel
2015-05-22 18:43                                         ` Eli Zaretskii
2015-05-22 18:53                                           ` Oleh Krehel
2015-05-22 19:05                                             ` Clément Pit--Claudel
2015-05-22 19:27                                             ` Eli Zaretskii
2015-05-22 19:09                                           ` Clément Pit--Claudel
2015-05-22 19:37                                             ` Eli Zaretskii
2015-05-22 20:08                                       ` Oleh Krehel
2015-05-22 22:43                                         ` Stefan Monnier
2015-05-22 23:55                                           ` Clément Pit--Claudel
2015-05-23  7:24                                             ` Eli Zaretskii
2015-05-24  8:20                                               ` Clément Pit--Claudel
2015-05-24  9:36                                                 ` Eli Zaretskii
2015-05-23  7:20                                           ` Eli Zaretskii
2015-05-23 13:27                                             ` Stefan Monnier
2015-05-23 13:54                                               ` Eli Zaretskii
2015-05-23  7:10                                         ` Eli Zaretskii
2015-05-23  7:47                                           ` YAMAMOTO Mitsuharu
2015-05-23  8:26                                             ` Eli Zaretskii
2015-05-23  9:56                                               ` Oleh Krehel
2015-05-23 10:21                                                 ` Eli Zaretskii
2015-05-23 10:56                                                   ` Oleh Krehel
2015-05-25 10:32                                             ` Rasmus
2015-05-25 13:24                                               ` Drew Adams
2015-05-25 14:39                                                 ` Eli Zaretskii
2015-05-22 18:15                                   ` Eli Zaretskii
2015-05-22 18:57                                     ` Clément Pit--Claudel
2015-05-22 19:15                                       ` Eli Zaretskii
2015-05-22 21:49                                         ` Werner LEMBERG
2015-05-23  6:52                                           ` Eli Zaretskii
2015-05-23  9:50                                             ` Werner LEMBERG
2015-05-23  9:57                                               ` Werner LEMBERG
2015-05-23 10:31                                               ` Eli Zaretskii
2015-05-23 11:45                                                 ` Werner LEMBERG
2015-05-24  8:20                                           ` Clément Pit--Claudel
2015-05-24  9:29                                             ` Eli Zaretskii
2015-05-24  9:32                                               ` Werner LEMBERG
2015-05-24  9:48                                                 ` Eli Zaretskii
2015-05-24 10:06                                                   ` Eli Zaretskii [this message]
2015-05-24 10:29                                                     ` Eli Zaretskii
2015-05-27 15:20                                                     ` Eli Zaretskii
2015-05-29  8:20                                                       ` Eli Zaretskii
2015-05-29  8:35                                                         ` Clément Pit--Claudel
2015-05-29  9:30                                                           ` Oleh Krehel
2015-05-29 10:23                                                             ` Eli Zaretskii
2015-05-29 10:38                                                               ` Oleh Krehel
2015-05-29 14:49                                                                 ` Stefan Monnier
2015-05-29 14:49                                                                   ` Oleh Krehel
2015-05-29 18:17                                                                     ` Eli Zaretskii
2015-05-29 13:15                                                             ` Eli Zaretskii
2015-05-29 13:16                                                               ` Oleh Krehel
2015-05-29 18:18                                                                 ` Eli Zaretskii
2015-05-30  9:40                                                                 ` Eli Zaretskii
2015-05-30  5:21                                                               ` Clément Pit--Claudel
2015-05-30  9:42                                                                 ` Eli Zaretskii
2015-05-30 13:00                                                                   ` Oleh Krehel
2015-05-30 14:20                                                                     ` Eli Zaretskii
2015-05-30 14:32                                                                       ` Oleh Krehel
2015-05-30 16:28                                                                         ` Eli Zaretskii
2015-05-30 16:59                                                                           ` Oleh Krehel
2015-05-30 18:35                                                                             ` Eli Zaretskii
2015-05-30 18:57                                                                               ` Oleh Krehel
2015-05-30 19:23                                                                                 ` Eli Zaretskii
2015-05-30 19:26                                                                                   ` Oleh Krehel
2015-05-30 19:52                                                                                     ` Eli Zaretskii
2015-05-31 14:48                                                                                       ` Eli Zaretskii
2015-06-01 10:54                                                                                         ` Oleh Krehel
2015-06-01 14:49                                                                                           ` Eli Zaretskii
2015-06-06 13:14                                                                                             ` Eli Zaretskii
2015-05-30 18:58                                                                   ` Clément Pit--Claudel
2015-05-30 19:25                                                                     ` Eli Zaretskii
2015-06-03  9:44                                                     ` Werner LEMBERG
2015-06-03 14:53                                                       ` Eli Zaretskii
2015-05-22 19:03                                     ` Clément Pit--Claudel
2015-05-22 19:35                                       ` Eli Zaretskii
2015-05-22 20:25                                         ` Clément Pit--Claudel
2015-05-23  7:12                                           ` Eli Zaretskii
2015-05-24  8:20                                             ` Clément Pit--Claudel
2015-05-24  9:31                                               ` Eli Zaretskii
2015-05-23  8:19                                           ` Eli Zaretskii
2015-05-22 15:41                       ` Andreas Schwab
2015-05-22 15:05                     ` Eli Zaretskii
2015-05-22 15:27                     ` Stefan Monnier
2015-05-22 15:42                       ` Eli Zaretskii
2015-05-22 13:21         ` Andreas Schwab
2015-05-24  8:20   ` Clément Pit--Claudel
2015-05-24  9:32     ` Eli Zaretskii
2015-05-22 15:16 ` Rasmus
     [not found] <<555E9C2E.8040008@live.com>
     [not found] ` <<83wq004x2w.fsf@gnu.org>
     [not found]   ` <<83twv44vd3.fsf@gnu.org>
     [not found]     ` <<87egm87ny6.fsf@gmail.com>
     [not found]       ` <<83oalc4syu.fsf@gnu.org>
     [not found]         ` <<87617k7m5u.fsf@gmail.com>
     [not found]           ` <<83mw0w4seb.fsf@gnu.org>
     [not found]             ` <<87zj4w66ds.fsf@gmail.com>
     [not found]               ` <<83lhgg4qhf.fsf@gnu.org>
     [not found]                 ` <<87iobk64e6.fsf@gmail.com>
     [not found]                   ` <<83h9r44o63.fsf@gnu.org>
     [not found]                     ` <<87pp5sy4vu.fsf@gmail.com>
     [not found]                       ` <<83egm84mj3.fsf@gnu.org>
     [not found]                         ` <<87617k6127.fsf@gmail.com>
     [not found]                           ` <<83d21s4lpx.fsf@gnu.org>
     [not found]                             ` <<87twv44lnc.fsf@gmail.com>
     [not found]                               ` <<87egm84kp2.fsf@gmail.com>
     [not found]                                 ` <<83a8ww4grx.fsf@gnu.org>
     [not found]                                   ` <<87382oml31.fsf@gmail.com>
     [not found]                                     ` <<83k2vz3h2p.fsf@gnu.org>
     [not found]                                       ` <<wlpp5rivkj.wl%mituharu@math.s.chiba-u.ac.jp>
     [not found]                                         ` <<87oal954mc.fsf@gmx.us>
     [not found]                                           ` <<b054a996-dd2e-4436-80f2-93cc5b2d1cb9@default>
     [not found]                                             ` <<83oal8zpp8.fsf@gnu.org>
2015-05-25 15:39                                               ` Drew Adams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=834mn21e7y.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=20628@debbugs.gnu.org \
    --cc=clement.pitclaudel@live.com \
    --cc=ohwoeowho@gmail.com \
    --cc=wl@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.