dwrite: Update line breaking logic with Unicode 8.0.0 modifications.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Nikolay Sivov 2016-01-24 18:10:59 +03:00 committed by Alexandre Julliard
parent 68c45de6ae
commit 10b843bb22

View File

@ -522,8 +522,9 @@ static HRESULT analyze_linebreaks(const WCHAR *text, UINT32 count, DWRITE_LINE_B
case b_BB: case b_BB:
set_break_condition(i, BreakConditionAfter, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, &state); set_break_condition(i, BreakConditionAfter, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, &state);
break; break;
/* LB21a */ /* LB21a, LB21b */
case b_HL: case b_HL:
/* LB21a */
if (i < count-1) if (i < count-1)
switch (break_class[i+1]) switch (break_class[i+1])
{ {
@ -531,6 +532,9 @@ static HRESULT analyze_linebreaks(const WCHAR *text, UINT32 count, DWRITE_LINE_B
case b_BA: case b_BA:
set_break_condition(i+1, BreakConditionAfter, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, &state); set_break_condition(i+1, BreakConditionAfter, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, &state);
} }
/* LB21b */
if (i > 0 && break_class[i-1] == b_SY)
set_break_condition(i, BreakConditionBefore, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, &state);
break; break;
/* LB22 */ /* LB22 */
case b_IN: case b_IN:
@ -540,6 +544,7 @@ static HRESULT analyze_linebreaks(const WCHAR *text, UINT32 count, DWRITE_LINE_B
{ {
case b_AL: case b_AL:
case b_HL: case b_HL:
case b_EX:
case b_ID: case b_ID:
case b_IN: case b_IN:
case b_NU: case b_NU: