Commit adfd1ad2 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

dwrite: Underline origin is always at the left run boundary.

parent 121a69e0
...@@ -428,6 +428,11 @@ static HRESULT format_set_optical_alignment(struct dwrite_textformat_data *forma ...@@ -428,6 +428,11 @@ static HRESULT format_set_optical_alignment(struct dwrite_textformat_data *forma
return S_OK; return S_OK;
} }
static BOOL is_run_rtl(const struct layout_effective_run *run)
{
return run->run->u.regular.run.bidiLevel & 1;
}
static struct layout_run *alloc_layout_run(enum layout_run_kind kind) static struct layout_run *alloc_layout_run(enum layout_run_kind kind)
{ {
struct layout_run *ret; struct layout_run *ret;
...@@ -3144,7 +3149,8 @@ static HRESULT WINAPI dwritetextlayout_Draw(IDWriteTextLayout2 *iface, ...@@ -3144,7 +3149,8 @@ static HRESULT WINAPI dwritetextlayout_Draw(IDWriteTextLayout2 *iface,
LIST_FOR_EACH_ENTRY(u, &This->underlines, struct layout_underline, entry) { LIST_FOR_EACH_ENTRY(u, &This->underlines, struct layout_underline, entry) {
IDWriteTextRenderer_DrawUnderline(renderer, IDWriteTextRenderer_DrawUnderline(renderer,
context, context,
u->run->origin_x + run->align_dx + origin_x, /* horizontal underline always grows from left to right, width is always added to origin regardless of run direction */
(is_run_rtl(u->run) ? u->run->origin_x - u->run->width : u->run->origin_x) + run->align_dx + origin_x,
SNAP_COORD(u->run->origin_y + origin_y), SNAP_COORD(u->run->origin_y + origin_y),
&u->u, &u->u,
u->run->effect); u->run->effect);
......
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