View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0009614 | Scribus | General | public | 2010-12-24 17:10 | 2021-03-23 06:25 |
Reporter | charette.s | Assigned To | jghali | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 1.5.0svn | ||||
Fixed in Version | 1.5.7.svn | ||||
Summary | 0009614: Non breaking spaces look the same as normal spaces when "Show Control Characters" is checked | ||||
Description | There's no way to make the difference between spaces and nbsp since they both look the same. I spoke with vox_@irc.freenode.net#scribus and he had a look at the code. He said: "According to the code it should fill nbspaces and use an open circle for normal spaces" which it doesn't. | ||||
Steps To Reproduce | Insert a space and a non-breaking space in a text frame and check view > show control character. | ||||
Additional Information | |||||
Tags | #pending, #rottenpatch, control characters, patch, spacing | ||||
Patch | Yes | ||||
related to | 0013373 | new | No way to distinguish a common space from a non-breaking space for frames with Russian text | |
related to | 0005592 | new | display narrow no-break space (U+202f) in story editor | |
has duplicate | 0016468 | closed | jghali | protected space isn´t distinguishable from normal space when turning on controll signs |
related to | 0010301 | new | All types of non breaking spaces should be displayed as red underscore in story editor | |
related to | 0013892 | closed | fschmid | Opening a file created with Scribus 1.4.x, inserting any type of spaces except nbsp (non-breaking space) is disabled |
related to | 0009615 | new | Find a way to display all kind of spaces (thin, thick, mid, etc) differently when "Show Control Character" is enabled | |
child of | 0004004 | acknowledged | Metabug: Typographic spacing |
|
... i'll have a look at it... |
|
the glyph seems to be drawn in void PageItem::drawGlyphs(). the problem seems to be that glyph is set to 32 for both the nbsp and the normal space... |
|
yes, scribus has to improve space support. Especially we should try to keep all kind of space even if they are not included in the font. I had a python script that nearly did that by attaching a default font with char style to special spaces, but i guess something better has to be done and included as a default or preference. Plus all kind of spaces should have a different indicator to show the user that what he done (like char insertion) has been taken in account correctly even if it doesn't show as width on page. |
|
i've to look further at it, but i'm still wondering why my epub exporter sees a difference between the two spaces and the drawGlyphs() function not... |
|
I included some changes here and there and i know have a real differnce in display with normal space. But i could succeed in display properly Nbspaces. It seems there are several places where nbspaces are replace with Qchar(' '). Could it be the problem ? strangely. Nbspaces are correctly detected and displayed in storyeditor. But should display them the same way there. I polished the space display (too heavy). I think i'll go on with other specialChars. |
|
NBspace.diff (6,530 bytes)
Index: scribus/pageitem.cpp =================================================================== --- scribus/pageitem.cpp (révision 17956) +++ scribus/pageitem.cpp (copie de travail) @@ -2449,10 +2449,10 @@ (glyph == font.char2CMap(QChar(' ')) || glyph >= ScFace::CONTROL_GLYPHS)) { bool stroke = false; - if (glyph >= ScFace::CONTROL_GLYPHS) + if (glyph >= ScFace::CONTROL_GLYPHS) glyph -= ScFace::CONTROL_GLYPHS; else - glyph = 32; + glyph = 32; QTransform chma, chma4, chma5; FPointArray points; if (glyph == SpecialChars::TAB.unicode()) @@ -2480,17 +2480,24 @@ points = m_Doc->symNewLine.copy(); chma4.translate(glyphs.xoffset, glyphs.yoffset-((style.fontSize() / 10.0) * glyphs.scaleV * 0.4)); } - else if (glyph == SpecialChars::NBSPACE.unicode() || - glyph == 32) + else if (glyph == 32) { stroke = (glyph == 32); - points = m_Doc->symNonBreak.copy(); - chma4.translate(glyphs.xoffset, glyphs.yoffset-((style.fontSize() / 10.0) * glyphs.scaleV * 0.4)); + points = m_Doc->symNonBreak.copy(); + chma4.scale(0.4,0.4); + chma4.translate(glyphs.xoffset+4, glyphs.yoffset-((style.fontSize() / 10.0) * glyphs.scaleV * 0.8)); } - else if (glyph == SpecialChars::NBHYPHEN.unicode()) + else if (glyph == SpecialChars::NBSPACE.unicode()) + { + stroke = (glyph == 32); + points = m_Doc->symNonBreak.copy(); + chma4.translate(glyphs.xoffset, glyphs.yoffset-((style.fontSize() / 10.0) * glyphs.scaleV * 0.8)); + } + else if (glyph == SpecialChars::NBHYPHEN.unicode()) { - points = font.glyphOutline(font.char2CMap(QChar('-')), style.fontSize() / 100); + points = font.glyphOutline(font.char2CMap(QChar('-')), style.fontSize() / 100); chma4.translate(glyphs.xoffset, glyphs.yoffset-((style.fontSize() / 10.0) * glyphs.scaleV)); + chma4.scale(0.5,0.5); } else if (glyph == SpecialChars::SHYPHEN.unicode()) { @@ -2522,8 +2529,8 @@ if (stroke) { QColor tmp = p->pen(); - p->setPen(p->brush(), 1, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin); - p->setLineWidth(style.fontSize() * glyphs.scaleV / 200.0); + p->setPen(p->brush(), 1, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin); + p->setLineWidth(style.fontSize() * glyphs.scaleV / 400.0); p->strokePath(); p->setPen(tmp, 1, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin); } @@ -2540,9 +2547,9 @@ } return; } - else if (glyph == (ScFace::CONTROL_GLYPHS + SpecialChars::NBSPACE.unicode()) || + else if (glyph == (ScFace::CONTROL_GLYPHS + SpecialChars::NBSPACE.unicode()) || glyph == (ScFace::CONTROL_GLYPHS + 32)) - glyph = font.char2CMap(QChar(' ')); + glyph = font.char2CMap(QChar(' ')); else if (glyph == (ScFace::CONTROL_GLYPHS + SpecialChars::NBHYPHEN.unicode())) glyph = font.char2CMap(QChar('-')); Index: scribus/scribusdoc.h =================================================================== --- scribus/scribusdoc.h (révision 17956) +++ scribus/scribusdoc.h (copie de travail) @@ -1352,7 +1352,8 @@ FPointArray symNewLine; FPointArray symTab; FPointArray symNonBreak; - FPointArray symNewCol; + FPointArray symSpace; + FPointArray symNewCol; FPointArray symNewFrame; Hyphenator * docHyphenator; Index: scribus/fonts/scface.cpp =================================================================== --- scribus/fonts/scface.cpp (révision 17956) +++ scribus/fonts/scface.cpp (copie de travail) @@ -342,11 +342,11 @@ { if (ch == SpecialChars::LINEBREAK || ch == SpecialChars::PARSEP || ch == SpecialChars::FRAMEBREAK || ch == SpecialChars::COLBREAK - || ch == SpecialChars::TAB || ch == SpecialChars::SHYPHEN - || ch == SpecialChars::ZWSPACE || ch == SpecialChars::ZWNBSPACE || ch==SpecialChars::OBJECT) + || ch == SpecialChars::TAB || ch == SpecialChars::SHYPHEN + || ch == SpecialChars::ZWSPACE || ch == SpecialChars::ZWNBSPACE || ch==SpecialChars::OBJECT) return CONTROL_GLYPHS + ch.unicode(); - else if (ch == SpecialChars::NBSPACE) - return m->char2CMap(QChar(' ')); + else if (ch == SpecialChars::NBSPACE) + return m->char2CMap(QChar(' ')); else if(ch == SpecialChars::NBHYPHEN) return m->char2CMap(QChar('-')); else Index: scribus/scpageoutput.cpp =================================================================== --- scribus/scpageoutput.cpp (révision 17956) +++ scribus/scpageoutput.cpp (copie de travail) @@ -500,7 +500,7 @@ { uint glyph = glyphs.glyph; if (glyph == (ScFace::CONTROL_GLYPHS + SpecialChars::NBSPACE.unicode())) // NBSPACE - glyph = style.font().char2CMap(QChar(' ')); + glyph = style.font().char2CMap(QChar(' ')); else if (glyph == (ScFace::CONTROL_GLYPHS + SpecialChars::NBHYPHEN.unicode())) // NBHYPHEN glyph = style.font().char2CMap(QChar('-')); Index: scribus/scribusdoc.cpp =================================================================== --- scribus/scribusdoc.cpp (révision 17956) +++ scribus/scribusdoc.cpp (copie de travail) @@ -2512,7 +2512,10 @@ symTab.addQuadPoint(5.90625, 0.828125, 5.90625, 0.828125, 6.9375, 1.79688, 6.9375, 1.64062); symTab.addQuadPoint(6.9375, 1.79688, 6.9375, 1.79688, 5.95312, 2.96875, 6.9375, 1.95312); symTab.addQuadPoint(5.95312, 2.96875, 5.95312, 2.96875, 4.82812, 3.96875, 4.98438, 3.96875); - symNonBreak.resize(0); + symSpace.resize(0); + symSpace.addQuadPoint(1.32812, 2.59375, 1.32812, 2.59375, 0.390625, 2.21875, 0.796875, 2.59375); +// symSpace.addQuadPoint(0.390625, 2.21875, 0.390625, 2.21875, 0, 1.3125, 0, 1.84375); + symNonBreak.resize(0); symNonBreak.addQuadPoint(1.32812, 2.59375, 1.32812, 2.59375, 0.390625, 2.21875, 0.796875, 2.59375); symNonBreak.addQuadPoint(0.390625, 2.21875, 0.390625, 2.21875, 0, 1.3125, 0, 1.84375); symNonBreak.addQuadPoint(0, 1.3125, 0, 1.3125, 0.390625, 0.390625, 0, 0.765625); |
|
|
|
@fahad if you have a moment, do you mind checking out the validity of this patch ? |
|
The patch is outdate. Things have changed by merging CTL. @charette.s could you update the patch to 1.5.3svn? |
|
maybe the "patch" tag should be deleted since it doesn´t work anymore? |
Date Modified | Username | Field | Change |
---|---|---|---|
2010-12-24 17:10 | charette.s | New Issue | |
2012-12-07 18:33 | ale | Note Added: 0029340 | |
2012-12-13 08:25 | ale | Note Added: 0029363 | |
2012-12-13 15:45 | pygmee | Note Added: 0029364 | |
2012-12-13 18:37 | ale | Note Added: 0029365 | |
2012-12-13 23:15 | pygmee | Note Added: 0029368 | |
2012-12-13 23:15 | pygmee | File Added: NBspace.diff | |
2016-04-01 13:08 | Kunda | Relationship added | related to 0010301 |
2016-04-01 13:08 | Kunda | Relationship added | related to 0013892 |
2016-04-07 20:47 | Kunda | Patch | => Yes |
2016-04-07 20:48 | Kunda | File Added: nbsp.png | |
2016-04-07 20:48 | Kunda | Additional Information Updated | |
2016-04-07 20:54 | Kunda | Relationship added | related to 0013373 |
2016-04-07 20:54 | Kunda | Relationship added | related to 0005592 |
2016-04-07 20:54 | Kunda | Relationship added | child of 0004004 |
2016-04-07 20:58 | Kunda | Summary | Non breaking spaces look the same as normal space when "Show Control Characters" is checked => [Patch] Non breaking spaces look the same as normal space when "Show Control Characters" is checked |
2016-04-26 22:10 | Kunda | Relationship added | related to 0009615 |
2016-05-24 19:24 | Kunda | Tag Attached: control characters | |
2016-12-09 02:46 | Kunda | Note Added: 0042807 | |
2016-12-09 02:47 | Kunda | Tag Attached: #pending | |
2016-12-09 02:47 | Kunda | Tag Attached: patch | |
2016-12-11 03:10 | Fahad | Note Added: 0042851 | |
2017-10-28 10:12 | JLuc | Tag Attached: spacing | |
2017-10-28 10:18 | JLuc | Tag Attached: #rottenpatch | |
2021-02-11 21:20 | jghali | Relationship added | has duplicate 0016468 |
2021-02-11 21:37 |
|
Note Added: 0048822 | |
2021-02-15 21:43 | jghali | Summary | [Patch] Non breaking spaces look the same as normal space when "Show Control Characters" is checked => Non breaking spaces look the same as normal space when "Show Control Characters" is checked |
2021-02-15 21:45 | jghali | Assigned To | => jghali |
2021-02-15 21:45 | jghali | Status | new => resolved |
2021-02-15 21:45 | jghali | Resolution | open => fixed |
2021-02-15 21:45 | jghali | Fixed in Version | => 1.5.7.svn |
2021-02-15 21:47 | jghali | Summary | Non breaking spaces look the same as normal space when "Show Control Characters" is checked => Non breaking spaces look the same as normal spaces when "Show Control Characters" is checked |
2021-03-23 06:25 | cbradney | Status | resolved => closed |