View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0016099 | Scribus | Typography | public | 2020-04-27 09:53 | 2020-08-11 20:56 |
Reporter | ftake | Assigned To | jghali | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 1.5.6.svn | ||||
Fixed in Version | 1.5.6.svn | ||||
Summary | 0016099: Add implicit space between a Latin character and a CJK character | ||||
Description | Scribus adds a 1/4 em space between a Latin character and a CJK character according to [1]. However, when their paragraph is justified, the width of that space should be extended like other space characters. Otherwise, the texts become unbalanced. [1] https://www.w3.org/TR/jlreq/#handling_of_western_text_in_japanese_text_using_proportional_western_fonts | ||||
Steps To Reproduce | See files attached. | ||||
Tags | No tags attached. | ||||
Patch | No | ||||
|
extensible-implicit-space.sla (17,827 bytes)
<?xml version="1.0" encoding="UTF-8"?> <SCRIBUSUTF8NEW Version="1.5.6.svn"> <DOCUMENT ANZPAGES="1" PAGEWIDTH="595.275590551181" PAGEHEIGHT="841.889763779528" BORDERLEFT="40" BORDERRIGHT="40" BORDERTOP="40" BORDERBOTTOM="40" PRESET="0" BleedTop="0" BleedLeft="0" BleedRight="0" BleedBottom="0" ORIENTATION="0" PAGESIZE="A4" FIRSTNUM="1" BOOK="0" AUTOSPALTEN="1" ABSTSPALTEN="11" UNITS="1" DFONT="Open Sans Regular" DSIZE="12" DCOL="1" DGAP="0" TabFill="" TabWidth="36" TextDistLeft="0" TextDistRight="0" TextDistBottom="0" TextDistTop="0" AUTHOR="" COMMENTS="" KEYWORDS="" PUBLISHER="" DOCDATE="" DOCTYPE="" DOCFORMAT="" DOCIDENT="" DOCSOURCE="" DOCLANGINFO="" DOCRELATION="" DOCCOVER="" DOCRIGHTS="" DOCCONTRIB="" TITLE="" SUBJECT="" VHOCH="33" VHOCHSC="66" VTIEF="33" VTIEFSC="66" VKAPIT="75" BASEGRID="14.4" BASEO="0" AUTOL="100" UnderlinePos="-1" UnderlineWidth="-1" StrikeThruPos="-1" StrikeThruWidth="-1" GROUPC="1" HCMS="1" DPSo="0" DPSFo="0" DPuse="1" DPgam="0" DPbla="1" DPPr="Fogra27L CMYK Coated Press" DPIn="sRGB IEC61966-2.1" DPInCMYK="Fogra27L CMYK Coated Press" DPIn2="sRGB IEC61966-2.1" DPIn3="Fogra27L CMYK Coated Press" DISc="1" DIIm="0" ALAYER="0" LANGUAGE="ja" AUTOMATIC="1" AUTOCHECK="0" GUIDELOCK="0" SnapToGuides="0" SnapToGrid="0" SnapToElement="0" MINGRID="20.0012598425197" MAJGRID="100.00062992126" SHOWGRID="0" SHOWGUIDES="1" showcolborders="1" SHOWFRAME="1" SHOWControl="1" SHOWLAYERM="0" SHOWMARGIN="1" SHOWBASE="0" SHOWPICT="1" SHOWLINK="0" rulerMode="1" showrulers="1" showBleed="1" rulerXoffset="0" rulerYoffset="0" GuideRad="10" GRAB="4" POLYC="4" POLYF="0.502045814642449" POLYR="0" POLYIR="0" POLYCUR="0" POLYOCUR="0" POLYS="0" arcStartAngle="30" arcSweepAngle="300" spiralStartAngle="0" spiralEndAngle="1080" spiralFactor="1.2" AutoSave="1" AutoSaveTime="600000" AutoSaveCount="1" AutoSaveKeep="0" AUtoSaveInDocDir="1" AutoSaveDir="" ScratchBottom="20.0012598425197" ScratchLeft="100.00062992126" ScratchRight="100.00062992126" ScratchTop="20.0012598425197" GapHorizontal="0" GapVertical="39.9996850393701" StartArrow="0" EndArrow="0" PEN="Black" BRUSH="None" PENLINE="Black" PENTEXT="Black" StrokeText="Black" TextBackGround="None" TextLineColor="None" TextBackGroundShade="100" TextLineShade="100" TextPenShade="100" TextStrokeShade="100" STIL="1" STILLINE="1" WIDTH="1" WIDTHLINE="1" PENSHADE="100" LINESHADE="100" BRUSHSHADE="100" CPICT="None" PICTSHADE="100" CSPICT="None" PICTSSHADE="100" PICTSCX="1" PICTSCY="1" PSCALE="1" PASPECT="1" EmbeddedPath="0" HalfRes="1" dispX="10.0006299212598" dispY="10.0006299212598" constrain="15" MINORC="#00ff00" MAJORC="#00ff00" GuideC="#000080" BaseC="#c0c0c0" renderStack="2 0 4 1 3" GridType="0" PAGEC="#ffffff" MARGC="#0000ff" RANDF="0" currentProfile="PDF 1.4" calligraphicPenFillColor="Black" calligraphicPenLineColor="Black" calligraphicPenFillColorShade="100" calligraphicPenLineColorShade="100" calligraphicPenLineWidth="1" calligraphicPenAngle="0" calligraphicPenWidth="10" calligraphicPenStyle="1"> <CheckProfile Name="PDF 1.3" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="1" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="0" checkDeviceColorsAndOutputIntent="0" checkFontNotEmbedded="1" checkFontIsOpenType="1" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <CheckProfile Name="PDF 1.4" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="0" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="0" checkDeviceColorsAndOutputIntent="0" checkFontNotEmbedded="1" checkFontIsOpenType="1" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <CheckProfile Name="PDF 1.5" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="0" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="0" checkDeviceColorsAndOutputIntent="0" checkFontNotEmbedded="1" checkFontIsOpenType="1" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <CheckProfile Name="PDF 1.6" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="0" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="0" checkDeviceColorsAndOutputIntent="0" checkFontNotEmbedded="1" checkFontIsOpenType="0" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <CheckProfile Name="PDF/X-1a" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="1" minResolution="144" maxResolution="2400" checkAnnotations="1" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="1" checkDeviceColorsAndOutputIntent="0" checkFontNotEmbedded="1" checkFontIsOpenType="1" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <CheckProfile Name="PDF/X-3" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="1" minResolution="144" maxResolution="2400" checkAnnotations="1" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="0" checkDeviceColorsAndOutputIntent="1" checkFontNotEmbedded="1" checkFontIsOpenType="1" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <CheckProfile Name="PDF/X-4" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="0" minResolution="144" maxResolution="2400" checkAnnotations="1" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="0" checkDeviceColorsAndOutputIntent="1" checkFontNotEmbedded="1" checkFontIsOpenType="0" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <CheckProfile Name="PostScript" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="1" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="0" checkDeviceColorsAndOutputIntent="0" checkFontNotEmbedded="0" checkFontIsOpenType="0" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <COLOR NAME="Black" SPACE="CMYK" C="0" M="0" Y="0" K="100"/> <COLOR NAME="Registration" SPACE="CMYK" C="100" M="100" Y="100" K="100" Register="1"/> <COLOR NAME="White" SPACE="CMYK" C="0" M="0" Y="0" K="0"/> <HYPHEN/> <STYLE NAME="Default Paragraph Style" DefaultStyle="1" ALIGN="0" DIRECTION="0" LINESPMode="0" LINESP="15" INDENT="0" RMARGIN="0" FIRST="0" VOR="0" NACH="0" ParagraphEffectOffset="0" DROP="0" DROPLIN="2" Bullet="0" Numeration="0" HyphenConsecutiveLines="2" BCOLOR="None" BSHADE="100"/> <CHARSTYLE CNAME="Default Character Style" DefaultStyle="1" FONT="Open Sans Regular" FONTSIZE="12" FONTFEATURES="" FEATURES="inherit" FCOLOR="Black" FSHADE="100" HyphenWordMin="3" SCOLOR="Black" BGCOLOR="None" BGSHADE="100" SSHADE="100" TXTSHX="5" TXTSHY="-5" TXTOUT="1" TXTULP="-0.1" TXTULW="-0.1" TXTSTP="-0.1" TXTSTW="-0.1" SCALEH="100" SCALEV="100" BASEO="0" KERN="0" LANGUAGE="ja"/> <TableStyle NAME="Default Table Style" DefaultStyle="1" FillColor="None" FillShade="100"> <TableBorderLeft> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderLeft> <TableBorderRight> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderRight> <TableBorderTop> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderTop> <TableBorderBottom> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderBottom> </TableStyle> <CellStyle NAME="Default Cell Style" DefaultStyle="1" FillColor="None" FillShade="100" LeftPadding="1" RightPadding="1" TopPadding="1" BottomPadding="1"> <TableBorderLeft> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderLeft> <TableBorderRight> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderRight> <TableBorderTop> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderTop> <TableBorderBottom> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderBottom> </CellStyle> <LAYERS NUMMER="0" LEVEL="0" NAME="Background" SICHTBAR="1" DRUCKEN="1" EDIT="1" SELECT="0" FLOW="1" TRANS="1" BLEND="0" OUTL="0" LAYERC="#000000"/> <Printer firstUse="1" toFile="0" useAltPrintCommand="0" outputSeparations="0" useSpotColors="0" useColor="0" mirrorH="0" mirrorV="0" useICC="1" doGCR="0" doClip="0" setDevParam="0" useDocBleeds="0" cropMarks="0" bleedMarks="0" registrationMarks="0" colorMarks="0" includePDFMarks="0" PSLevel="0" PDLanguage="0" markLength="0" markOffset="0" BleedTop="0" BleedLeft="0" BleedRight="0" BleedBottom="0" printer="" filename="" separationName="" printerCommand=""/> <PDF firstUse="1" Thumbnails="0" Articles="0" Bookmarks="0" Compress="1" CMethod="0" Quality="0" EmbedPDF="0" MirrorH="0" MirrorV="0" Clip="0" rangeSel="0" rangeTxt="" RotateDeg="0" PresentMode="0" RecalcPic="0" FontEmbedding="0" Grayscale="0" RGBMode="1" UseProfiles="0" UseProfiles2="0" Binding="0" PicRes="300" Resolution="300" Version="14" Intent="1" Intent2="0" SolidP="sRGB IEC61966-2.1" ImageP="sRGB IEC61966-2.1" PrintP="Fogra27L CMYK Coated Press" InfoString="" BTop="0" BLeft="0" BRight="0" BBottom="0" useDocBleeds="1" cropMarks="0" bleedMarks="0" registrationMarks="0" colorMarks="0" docInfoMarks="0" markLength="20.0012598425197" markOffset="0" ImagePr="0" PassOwner="" PassUser="" Permissions="-4" Encrypt="0" UseLayers="0" UseLpi="0" UseSpotColors="1" doMultiFile="0" displayBookmarks="0" displayFullscreen="0" displayLayers="0" displayThumbs="0" hideMenuBar="0" hideToolBar="0" fitWindow="0" openAfterExport="0" PageLayout="0" openAction=""> <LPI Color="Black" Frequency="133" Angle="45" SpotFunction="3"/> <LPI Color="Cyan" Frequency="133" Angle="105" SpotFunction="3"/> <LPI Color="Magenta" Frequency="133" Angle="75" SpotFunction="3"/> <LPI Color="Yellow" Frequency="133" Angle="90" SpotFunction="3"/> </PDF> <DocItemAttributes/> <TablesOfContents/> <NotesStyles> <notesStyle Name="Default" Start="1" Endnotes="0" Type="Type_1_2_3" Range="0" Prefix="" Suffix=")" AutoHeight="1" AutoWidth="1" AutoRemove="1" AutoWeld="1" SuperNote="1" SuperMaster="1" MarksStyle="" NotesStyle=""/> </NotesStyles> <NotesFrames/> <PageSets> <Set Name="Single Page" FirstPage="0" Rows="1" Columns="1"/> <Set Name="Facing Pages" FirstPage="1" Rows="1" Columns="2"> <PageNames Name="Left Page"/> <PageNames Name="Right Page"/> </Set> <Set Name="3-Fold" FirstPage="0" Rows="1" Columns="3"> <PageNames Name="Left Page"/> <PageNames Name="Middle"/> <PageNames Name="Right Page"/> </Set> <Set Name="4-Fold" FirstPage="0" Rows="1" Columns="4"> <PageNames Name="Left Page"/> <PageNames Name="Middle Left"/> <PageNames Name="Middle Right"/> <PageNames Name="Right Page"/> </Set> </PageSets> <Sections> <Section Number="0" Name="0" From="0" To="0" Type="Type_1_2_3" Start="1" Reversed="0" Active="1" FillChar="0" FieldWidth="0"/> </Sections> <MASTERPAGE PAGEXPOS="100.00062992126" PAGEYPOS="20.0012598425197" PAGEWIDTH="595.275590551181" PAGEHEIGHT="841.889763779528" BORDERLEFT="40" BORDERRIGHT="40" BORDERTOP="40" BORDERBOTTOM="40" NUM="0" NAM="Normal" MNAM="" Size="A4" Orientation="0" LEFT="0" PRESET="0" VerticalGuides="" HorizontalGuides="" AGhorizontalAutoGap="0" AGverticalAutoGap="0" AGhorizontalAutoCount="0" AGverticalAutoCount="0" AGhorizontalAutoRefer="0" AGverticalAutoRefer="0" AGSelection="0 0 0 0" pageEffectDuration="1" pageViewDuration="1" effectType="0" Dm="0" M="0" Di="0"/> <PAGE PAGEXPOS="100.00062992126" PAGEYPOS="20.0012598425197" PAGEWIDTH="595.275590551181" PAGEHEIGHT="841.889763779528" BORDERLEFT="40" BORDERRIGHT="40" BORDERTOP="40" BORDERBOTTOM="40" NUM="0" NAM="" MNAM="Normal" Size="A4" Orientation="0" LEFT="0" PRESET="0" VerticalGuides="" HorizontalGuides="" AGhorizontalAutoGap="0" AGverticalAutoGap="0" AGhorizontalAutoCount="0" AGverticalAutoCount="0" AGhorizontalAutoRefer="0" AGverticalAutoRefer="0" AGSelection="0 0 0 0" pageEffectDuration="1" pageViewDuration="1" effectType="0" Dm="0" M="0" Di="0"/> <PAGEOBJECT XPOS="148.122834645669" YPOS="93" OwnPage="0" ItemID="112883536" PTYPE="4" WIDTH="397.2" HEIGHT="54.8" FRTYPE="0" CLIPEDIT="0" PWIDTH="1" PLINEART="1" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" LOCALROT="0" PICART="1" SCALETYPE="1" RATIO="1" COLUMNS="1" COLGAP="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" VAlign="0" FLOP="0" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" path="M0 0 L397.2 0 L397.2 54.8 L0 54.8 L0 0 Z" copath="M0 0 L397.2 0 L397.2 54.8 L0 54.8 L0 0 Z" gXpos="148.122834645669" gYpos="93" gWidth="0" gHeight="0" ALIGN="3" LAYER="0" NEXTITEM="-1" BACKITEM="-1"> <StoryText> <DefaultStyle ALIGN="3" FONT="Noto Sans CJK JP Regular"/> <ITEXT FONT="Noto Sans CJK JP Regular" FONTSIZE="15" CH="オープンソースのDTPソフトウェアScribus_____________"/> <trail ALIGN="3" LINESPMode="1"/> </StoryText> </PAGEOBJECT> <PAGEOBJECT XPOS="364.454545454545" YPOS="65.3636363636364" OwnPage="0" ItemID="122387232" PTYPE="6" WIDTH="16.3636363636364" HEIGHT="19.2727272727273" FRTYPE="9" CLIPEDIT="1" PWIDTH="1" PCOLOR2="Black" PLINEART="1" path="M0 9.63636 L4.09091 9.63636 L4.09091 0 L12.2727 0 L12.2727 9.63636 L16.3636 9.63636 L8.18182 19.2727 L0 9.63636 Z" copath="M0 9.63636 L4.09091 9.63636 L4.09091 0 L12.2727 0 L12.2727 9.63636 L16.3636 9.63636 L8.18182 19.2727 L0 9.63636 Z" gXpos="364.454545454545" gYpos="65.3636363636364" gWidth="0" gHeight="0" LAYER="0"/> <PAGEOBJECT XPOS="396.454545454546" YPOS="65.3636363636364" OwnPage="0" ItemID="112759984" PTYPE="6" WIDTH="16.3636363636364" HEIGHT="19.2727272727273" FRTYPE="9" CLIPEDIT="1" PWIDTH="1" PCOLOR2="Black" PLINEART="1" path="M0 9.63636 L4.09091 9.63636 L4.09091 0 L12.2727 0 L12.2727 9.63636 L16.3636 9.63636 L8.18182 19.2727 L0 9.63636 Z" copath="M0 9.63636 L4.09091 9.63636 L4.09091 0 L12.2727 0 L12.2727 9.63636 L16.3636 9.63636 L8.18182 19.2727 L0 9.63636 Z" gXpos="396.454545454545" gYpos="65.3636363636364" gWidth="0" gHeight="0" LAYER="0"/> <PAGEOBJECT XPOS="424.727272727273" YPOS="63.2727272727273" OwnPage="0" ItemID="116704944" PTYPE="4" WIDTH="122.828282828283" HEIGHT="29.4545454545455" FRTYPE="0" CLIPEDIT="0" PWIDTH="1" PLINEART="1" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" LOCALROT="0" PICART="1" SCALETYPE="1" RATIO="1" COLUMNS="1" COLGAP="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" VAlign="0" FLOP="0" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" path="M0 0 L122.828 0 L122.828 29.4545 L0 29.4545 L0 0 Z" copath="M0 0 L122.828 0 L122.828 29.4545 L0 29.4545 L0 0 Z" gXpos="424.727272727273" gYpos="63.2727272727273" gWidth="0" gHeight="0" LAYER="0" NEXTITEM="-1" BACKITEM="-1"> <StoryText> <DefaultStyle LINESPMode="1" FONTSIZE="7"/> <ITEXT FONTSIZE="7" CH="Implicit spaces (kerning) between Latin and CJK should be extensible."/> <para LINESPMode="1" LINESP="14"/> </StoryText> </PAGEOBJECT> <PAGEOBJECT XPOS="148.122834645669" YPOS="166" OwnPage="0" ItemID="123386208" PTYPE="4" WIDTH="397.2" HEIGHT="54.8" FRTYPE="0" CLIPEDIT="0" PWIDTH="1" PLINEART="1" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" LOCALROT="0" PICART="1" SCALETYPE="1" RATIO="1" COLUMNS="1" COLGAP="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" VAlign="0" FLOP="0" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" path="M0 0 L397.2 0 L397.2 54.8 L0 54.8 L0 0 Z" copath="M0 0 L397.2 0 L397.2 54.8 L0 54.8 L0 0 Z" gXpos="148.122834645669" gYpos="166" gWidth="0" gHeight="0" ALIGN="3" LAYER="0" NEXTITEM="-1" BACKITEM="-1"> <StoryText> <DefaultStyle ALIGN="3" FONT="Noto Sans CJK JP Regular"/> <ITEXT FONT="Noto Sans CJK JP Regular" FONTSIZE="15" CH="オープンソースの DTP ソフトウェアScribus_____________"/> <trail ALIGN="3" LINESPMode="1"/> </StoryText> </PAGEOBJECT> </DOCUMENT> </SCRIBUSUTF8NEW> |
|
It looks like the condition at line 452 of textshaper.cpp needs to be more complex. Some like this maybe: if (firstChar != 0 && ((SpecialChars::isCJK(m_story.text(firstChar).unicode()) && SpecialChars::isCJK(m_story.text(firstChar - 1).unicode())) || (SpecialChars::isCJK(m_story.text(firstChar).unicode()) && SpecialChars::isLetterRequiringSpaceAroundCJK(m_story.text(firstChar - 1).unicode())) || (SpecialChars::isLetterRequiringSpaceAroundCJK(m_story.text(firstChar).unicode()) && SpecialChars::isCJK(m_story.text(firstChar - 1).unicode()))) ) run.setFlag(ScLayout_ImplicitSpace); |
|
I think the function to be fixed is scribus/pageitem_textframe.cpp justifyLine(). It seems that we need refactoring around imSpace before fixing this problem. imSpace indicates the width of 1/4 em space but I cannot understand from the code at a glance. |
|
At this point, justifyLine() does not have the information that there is an implicit space between CJK and latin chars. Hence my proposal to change the condition at line 452 of textshaper.cpp. The imSpace variable in justifyLine() is something different that the 1/4 em space. The 1/4 em spaces are currently inserted in TextShaper::shape() at line 583 and 598 of textshaper.cpp. |
|
I reminded the implementation. I'm sorry, the title was wrong. The space between Latin and CJK is not what we call implicit space. > It looks like the condition at line 452 of textshaper.cpp needs to be more complex. Some like this maybe: You are right. But I am wondering if we can move the code adding 1/4 space to somewhere handling spaces. Even though we add the conditions to the if statement setting ScLayout_ImplicitSpace, we still need another code at justifyLine() to reduce the space width by the amount of quaterEM, which has been already added to the extra width. |
|
>> I'm sorry, the title was wrong. The space between Latin and CJK is not what we call implicit space. Is there a specific technical name for such space? |
|
> Is there a specific technical name for such space? No, as far as I know. We are using "implicit space" as a space implicitly added for justification (ScLayout_ImplicitSpace). On the other hand 1/4 space between CJK and Latin is added (also implicitly) regardless of justification/alignment. So the title should be "Add implicit space between a Latin character and a CJK character", I think. I'm wondering adding U+2005 (four-per-em space) to glyph cluster instead of extraWidth makes it simple although I'm not sure such use of glyph cluster is allowed. |
Date Modified | Username | Field | Change |
---|---|---|---|
2020-04-27 09:53 | ftake | New Issue | |
2020-04-27 09:53 | ftake | File Added: extensible-implicit-space.png | |
2020-04-27 09:53 | ftake | File Added: extensible-implicit-space.sla | |
2020-04-27 12:27 | jghali | Note Added: 0047571 | |
2020-04-27 13:08 | ftake | Note Added: 0047572 | |
2020-04-27 13:22 | jghali | Note Added: 0047573 | |
2020-04-27 13:53 | ftake | Note Added: 0047574 | |
2020-04-27 14:15 | jghali | Note Added: 0047575 | |
2020-04-27 15:55 | ftake | Note Added: 0047576 | |
2020-05-06 11:46 | jghali | Summary | Implicit space between a Latin character and a CJK character should be extensible in a justified paragraph => Add implicit space between a Latin character and a CJK character |
2020-05-06 11:46 | jghali | Description Updated | |
2020-05-06 11:47 | jghali | Assigned To | => jghali |
2020-05-06 11:47 | jghali | Status | new => resolved |
2020-05-06 11:47 | jghali | Resolution | open => fixed |
2020-05-06 11:47 | jghali | Fixed in Version | => 1.5.6.svn |
2020-08-11 20:56 | cbradney | Status | resolved => closed |