diff options
author | Glenn Morris <rgm@gnu.org> | 2020-06-07 09:03:59 -0700 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2020-06-07 09:03:59 -0700 |
commit | fa6d56529f9ebaedaf62ecbf8887ffecca7dce12 (patch) | |
tree | 922e12ffbf813534647a96788b9a5fb77b4f2288 /src | |
parent | 6cb557e7a58d7f1c2e9afceeba45d0ced2aff214 (diff) | |
parent | 35661ef943d261f6c43e93e475ddd8516f4a4b62 (diff) | |
download | emacs-fa6d56529f9ebaedaf62ecbf8887ffecca7dce12.tar.gz |
Merge from origin/emacs-27
35661ef943 (origin/emacs-27) Fix typo in "(elisp) Type Keywords"
1af0e95fec Gnus nnir-summary-line-format has no effect
dd366b5d3b Improve documentation of 'window-text-pixel-size'
fbd49f969e * src/xdisp.c (Fwindow_text_pixel_size): Doc fix. (Bug#41...
d8593fd19f Minor improvements to EDE and EIEIO manuals
3916e63f9e Have Fido mode also imitate Ido mode in ignore-case options
cc35b197c7 Update package-menu-quick-help
bf09106256 Improve documentation of 'sort-subr'
73749efa13 Update Ukrainian transliteration
30a7ee505a Fix Arabic shaping when eww/shr fill the text to be rendered
7d323f07c0 Silence some byte-compiler warnings in tests
cf473e742f * test/lisp/battery-tests.el: New file.
b07e3b1d97 Improve format-spec documentation (bug#41571)
# Conflicts:
# test/lisp/emacs-lisp/package-tests.el
Diffstat (limited to 'src')
-rw-r--r-- | src/hbfont.c | 7 | ||||
-rw-r--r-- | src/xdisp.c | 60 |
2 files changed, 41 insertions, 26 deletions
diff --git a/src/hbfont.c b/src/hbfont.c index 576c5fe7f60..4b3f64ef504 100644 --- a/src/hbfont.c +++ b/src/hbfont.c @@ -26,6 +26,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ #include "composite.h" #include "font.h" #include "dispextern.h" +#include "buffer.h" #ifdef HAVE_NTGUI @@ -438,7 +439,11 @@ hbfont_shape (Lisp_Object lgstring, Lisp_Object direction) /* If the caller didn't provide a meaningful DIRECTION, let HarfBuzz guess it. */ - if (!NILP (direction)) + if (!NILP (direction) + /* If they bind bidi-display-reordering to nil, the DIRECTION + they provide is meaningless, and we should let HarfBuzz guess + the real direction. */ + && !NILP (BVAR (current_buffer, bidi_display_reordering))) { hb_direction_t dir = HB_DIRECTION_LTR; if (EQ (direction, QL2R)) diff --git a/src/xdisp.c b/src/xdisp.c index 52f6ab8e709..bd0711471a2 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -10449,33 +10449,43 @@ in_display_vector_p (struct it *it) DEFUN ("window-text-pixel-size", Fwindow_text_pixel_size, Swindow_text_pixel_size, 0, 6, 0, doc: /* Return the size of the text of WINDOW's buffer in pixels. WINDOW must be a live window and defaults to the selected one. The -return value is a cons of the maximum pixel-width of any text line and -the maximum pixel-height of all text lines. +return value is a cons of the maximum pixel-width of any text line +and the pixel-height of all the text lines in the accessible portion +of buffer text. + +This function exists to allow Lisp programs to adjust the dimensions +of WINDOW to the buffer text it needs to display. The optional argument FROM, if non-nil, specifies the first text -position and defaults to the minimum accessible position of the buffer. -If FROM is t, use the minimum accessible position that starts a -non-empty line. TO, if non-nil, specifies the last text position and -defaults to the maximum accessible position of the buffer. If TO is t, -use the maximum accessible position that ends a non-empty line. - -The optional argument X-LIMIT, if non-nil, specifies the maximum text -width that can be returned. X-LIMIT nil or omitted, means to use the -pixel-width of WINDOW's body; use this if you want to know how high -WINDOW should be become in order to fit all of its buffer's text with -the width of WINDOW unaltered. Use the maximum width WINDOW may assume -if you intend to change WINDOW's width. In any case, text whose -x-coordinate is beyond X-LIMIT is ignored. Since calculating the width -of long lines can take some time, it's always a good idea to make this -argument as small as possible; in particular, if the buffer contains -long lines that shall be truncated anyway. - -The optional argument Y-LIMIT, if non-nil, specifies the maximum text -height (excluding the height of the mode- or header-line, if any) that -can be returned. Text lines whose y-coordinate is beyond Y-LIMIT are -ignored. Since calculating the text height of a large buffer can take -some time, it makes sense to specify this argument if the size of the -buffer is large or unknown. +position to consider, and defaults to the minimum accessible position +of the buffer. If FROM is t, it stands for the minimum accessible +position that starts a non-empty line. TO, if non-nil, specifies the +last text position and defaults to the maximum accessible position of +the buffer. If TO is t, it stands for the maximum accessible position +that ends a non-empty line. + +The optional argument X-LIMIT, if non-nil, specifies the maximum X +coordinate beyond which the text should be ignored. It is therefore +also the maximum width that the function can return. X-LIMIT nil or +omitted means to use the pixel-width of WINDOW's body. This default +means text of truncated lines wider than the window will be ignored; +specify a large value for X-LIMIT if lines are truncated and you need +to account for the truncated text. Use nil for X-LIMIT if you want to +know how high WINDOW should become in order to fit all of its buffer's +text with the width of WINDOW unaltered. Use the maximum width WINDOW +may assume if you intend to change WINDOW's width. Since calculating +the width of long lines can take some time, it's always a good idea to +make this argument as small as possible; in particular, if the buffer +contains long lines that shall be truncated anyway. + +The optional argument Y-LIMIT, if non-nil, specifies the maximum Y +coordinate beyond which the text is to be ignored; it is therefore +also the maxcomp height that the function can return (excluding the +height of the mode- or header-line, if any). Y-LIMIT nil or omitted +means consider all of the accessible portion of buffer text up to the +position specified by TO. Since calculating the text height of a +large buffer can take some time, it makes sense to specify this +argument if the size of the buffer is large or unknown. Optional argument MODE-AND-HEADER-LINE nil or omitted means do not include the height of the mode- or header-line of WINDOW in the return |