mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-28 23:15:19 +00:00
Handle properly unicode paragraph/line break
They are shown on screen by arrow or pilcrow symbol and cause a line break.
They are still not handled in LaTeX output, though.
(cherry picked from commit 6dfbab3124
)
This commit is contained in:
parent
990af0ae08
commit
59577dea7a
@ -3153,6 +3153,11 @@ bool Paragraph::isHfill(pos_type pos) const
|
||||
|
||||
bool Paragraph::isNewline(pos_type pos) const
|
||||
{
|
||||
// U+2028 LINE SEPARATOR
|
||||
// U+2029 PARAGRAPH SEPARATOR
|
||||
char_type const c = d->text_[pos];
|
||||
if (c == 0x2028 || c == 0x2029)
|
||||
return true;
|
||||
Inset const * inset = getInset(pos);
|
||||
return inset && inset->lyxCode() == NEWLINE_CODE;
|
||||
}
|
||||
|
@ -851,7 +851,23 @@ void TextMetrics::breakRow(Row & row, int const right_margin, pit_type const pit
|
||||
} else if (c == '\t')
|
||||
row.addSpace(i, theFontMetrics(*fi).width(from_ascii(" ")),
|
||||
*fi, par.lookupChange(i));
|
||||
else {
|
||||
else if (c == 0x2028 || c == 0x2029) {
|
||||
/**
|
||||
* U+2028 LINE SEPARATOR
|
||||
* U+2029 PARAGRAPH SEPARATOR
|
||||
|
||||
* These are special unicode characters that break
|
||||
* lines/pragraphs. Not handling them lead to trouble wrt
|
||||
* Qt QTextLayout formatting. We add a visible character
|
||||
* on screen so that the user can see that something is
|
||||
* happening.
|
||||
*/
|
||||
row.finalizeLast();
|
||||
// ⤶ U+2936 ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
|
||||
// ¶ U+00B6 PILCROW SIGN
|
||||
char_type const screen_char = (c == 0x2028) ? 0x2936 : 0x00B6;
|
||||
row.add(i, screen_char, *fi, par.lookupChange(i));
|
||||
} else {
|
||||
// FIXME: please someone fix the Hebrew/Arabic parenthesis mess!
|
||||
// see also Paragraph::getUChar.
|
||||
if (fi->language()->lang() == "hebrew") {
|
||||
@ -911,6 +927,7 @@ void TextMetrics::breakRow(Row & row, int const right_margin, pit_type const pit
|
||||
BufferParams const & bparams
|
||||
= text_->inset().buffer().params();
|
||||
f.setLanguage(par.getParLanguage(bparams));
|
||||
// ¶ U+00B6 PILCROW SIGN
|
||||
row.addVirtual(end, docstring(1, char_type(0x00B6)), f, Change());
|
||||
}
|
||||
|
||||
|
@ -161,6 +161,8 @@ What's new
|
||||
- Fix cursor movement when the document contains high-plane Unicode
|
||||
characters (bug 10443).
|
||||
|
||||
- Fix crash when the document contains Unicode line-breaking characters.
|
||||
|
||||
- Allow using colors supported by xcolor inside mathed (bug 10417).
|
||||
|
||||
- Change description of "frame of button" color to "button frame" (bug
|
||||
|
Loading…
Reference in New Issue
Block a user