Project: chromium Issues People Development process History Sign in
New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Issue 248894 Implement CSS3 text-justify property
Starred by 15 users Project Member Reported by dwim....@gmail.com, Jun 12 2013 Back to list
Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Feature

Blocked on: View detail
issue 250762
issue 467406



Sign in to add a comment
I want to implement a new CSS3 property which name is "text-justify".
The specification link is here : http://www.w3.org/TR/css3-text/#text-justify

This property selects the justification method used when a line's alignment is set to ‘justify’ (see ‘text-align’), primarily by controlling which scripts' characters are adjusted together or separately. 
This feature is already properly supported on IE, currently.


 
Comment 1 by dwim....@gmail.com, Jun 17 2013
Blockedon: chromium:250762
Comment 2 by dw...@samsung.com, Oct 28 2013
Status: Started
Parsing part is done.
I will start to implement rendering part.
Comment 3 by dw...@samsung.com, Oct 28 2013
Owner: dw...@samsung.com
Comment 4 by dw...@samsung.com, Oct 28 2013
Cc: jchaffraix@chromium.org
text-justify can have 4 kinds of value.

For 3 of them, I think I don't need to implement something.
Just checking & setting would be enough.

Only for 'distribute', I need to implement some algorithm to treat the value.

So, I'm planning to implement 2 seperate patches, one for the 3 values, and one for 'distribute'.
Project Member Comment 5 by bugdroid1@chromium.org, Oct 31 2013
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=161006

------------------------------------------------------------------------
r161006 | dw.im@samsung.com | 2013-10-31T02:18:28.595253Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/css3-text/css3-text-justify/resources?r1=161006&r2=161005&pathrev=161006
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/css3-text/css3-text-justify/text-justify-none-expected.html?r1=161006&r2=161005&pathrev=161006
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/css3-text/css3-text-justify/text-justify-none.html?r1=161006&r2=161005&pathrev=161006
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/css3-text/css3-text-justify/resources/text-justify.css?r1=161006&r2=161005&pathrev=161006
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/rendering/RenderBlockLineLayout.cpp?r1=161006&r2=161005&pathrev=161006

Rendering text-justify:none

When the value of text-justify is 'none',
we don't need to touch anything related to the expansion opportunity.
We just need to leave the expansion opportunity as 0,
so that justification doesn't work for this case.

BUG=248894

Review URL: https://codereview.chromium.org/50413008
------------------------------------------------------------------------
Project Member Comment 6 by bugdroid1@chromium.org, Jan 16 2014
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=165189

------------------------------------------------------------------------
r165189 | chrome-bot@google.com | 2014-01-16T04:05:10.061652Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/mac/ComplexTextController.h?r1=165189&r2=165188&pathrev=165189
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/rendering/RenderBlockLineLayout.cpp?r1=165189&r2=165188&pathrev=165189
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/WidthIterator.cpp?r1=165189&r2=165188&pathrev=165189
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/linux/fast/css3-text/css3-text-justify/text-justify-8bits-expected.txt?r1=165189&r2=165188&pathrev=165189
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/css3-text/css3-text-justify/text-justify-8bits.html?r1=165189&r2=165188&pathrev=165189
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/WidthIterator.h?r1=165189&r2=165188&pathrev=165189
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/linux/fast/css3-text/css3-text-justify/text-justify-8bits-expected.png?r1=165189&r2=165188&pathrev=165189
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/css3-text/css3-text-justify/resources/text-justify.css?r1=165189&r2=165188&pathrev=165189
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/text/TextRun.cpp?r1=165189&r2=165188&pathrev=165189
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/Font.cpp?r1=165189&r2=165188&pathrev=165189
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/linux/fast/css3-text/css3-text-justify?r1=165189&r2=165188&pathrev=165189
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/TestExpectations?r1=165189&r2=165188&pathrev=165189
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/text/TextRun.h?r1=165189&r2=165188&pathrev=165189
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/Font.h?r1=165189&r2=165188&pathrev=165189
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/mac/ComplexTextController.cpp?r1=165189&r2=165188&pathrev=165189
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/rendering/InlineTextBox.cpp?r1=165189&r2=165188&pathrev=165189

Rendering text-justify:distribute for 8 bit characters.

text-justify:distribute provides the ability to justify a line as inter-character level.
This patch takes care of only 8 bit characters.

BUG=248894

Review URL: https://codereview.chromium.org/54743004
------------------------------------------------------------------------
Project Member Comment 7 by bugdroid1@chromium.org, Jan 16 2014
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=165202

------------------------------------------------------------------------
r165202 | ojan@chromium.org | 2014-01-16T06:57:50.177551Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/win/fast/css3-text/css3-text-justify?r1=165202&r2=165201&pathrev=165202
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/TestExpectations?r1=165202&r2=165201&pathrev=165202
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/mac/fast/css3-text/css3-text-justify?r1=165202&r2=165201&pathrev=165202
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/win/fast/css3-text/css3-text-justify/text-justify-8bits-expected.txt?r1=165202&r2=165201&pathrev=165202
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/linux/fast/css3-text/css3-text-justify/text-justify-8bits-expected.txt?r1=165202&r2=165201&pathrev=165202
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/mac/fast/css3-text/css3-text-justify/text-justify-8bits-expected.txt?r1=165202&r2=165201&pathrev=165202
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/win/fast/css3-text/css3-text-justify/text-justify-8bits-expected.png?r1=165202&r2=165201&pathrev=165202
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/mac/fast/css3-text/css3-text-justify/text-justify-8bits-expected.png?r1=165202&r2=165201&pathrev=165202

Auto-rebaseline for r165189

http://src.chromium.org/viewvc/blink?view=revision&revision=165189

BUG=248894
TBR=dw.im@samsung.com

Review URL: https://codereview.chromium.org/140633002
------------------------------------------------------------------------
Project Member Comment 8 by bugdroid1@chromium.org, Jan 24 2014
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=165707

------------------------------------------------------------------------
r165707 | inferno@chromium.org | 2014-01-24T06:46:39.577036Z

Changed paths:
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/css3-text/css3-text-justify/text-justify-8bits.html?r1=165707&r2=165706&pathrev=165707
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/WidthIterator.h?r1=165707&r2=165706&pathrev=165707
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/mac/ComplexTextController.cpp?r1=165707&r2=165706&pathrev=165707
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/css3-text/css3-text-justify/resources/text-justify.css?r1=165707&r2=165706&pathrev=165707
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/rendering/InlineTextBox.cpp?r1=165707&r2=165706&pathrev=165707
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/text/TextRun.cpp?r1=165707&r2=165706&pathrev=165707
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/mac/ComplexTextController.h?r1=165707&r2=165706&pathrev=165707
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/Font.cpp?r1=165707&r2=165706&pathrev=165707
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/linux/fast/css3-text/css3-text-justify?r1=165707&r2=165706&pathrev=165707
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/rendering/RenderBlockLineLayout.cpp?r1=165707&r2=165706&pathrev=165707
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/WidthIterator.cpp?r1=165707&r2=165706&pathrev=165707
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/text/TextRun.h?r1=165707&r2=165706&pathrev=165707
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/Font.h?r1=165707&r2=165706&pathrev=165707

Revert 165189 "Rendering text-justify:distribute for 8 bit chara..."

Cause memory corruption bugs on ClusterFuzz.

> Rendering text-justify:distribute for 8 bit characters.
> 
> text-justify:distribute provides the ability to justify a line as inter-character level.
> This patch takes care of only 8 bit characters.
> 
> BUG=248894
> 
> Review URL: https://codereview.chromium.org/54743004

TBR=dw.im@samsung.com

Review URL: https://codereview.chromium.org/146503002
------------------------------------------------------------------------
Comment 9 by kojii@chromium.org, Nov 27 2014
Talked with dwim, I'll be looking into this while he's busy.
Project Member Comment 10 by bugdroid1@chromium.org, Nov 27 2014
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=186099

------------------------------------------------------------------
r186099 | dw.im@samsung.com | 2014-11-27T09:38:23.813317Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/linux/fast/css3-text/css3-text-justify?r1=186099&r2=186098&pathrev=186099
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/TestExpectations?r1=186099&r2=186098&pathrev=186099
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/rendering/RenderBlockLineLayout.cpp?r1=186099&r2=186098&pathrev=186099
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/text/TextRun.h?r1=186099&r2=186098&pathrev=186099
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/linux/fast/css3-text/css3-text-justify/text-justify-8bits-expected.txt?r1=186099&r2=186098&pathrev=186099
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/rendering/style/RenderStyleConstants.h?r1=186099&r2=186098&pathrev=186099
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/Character.cpp?r1=186099&r2=186098&pathrev=186099
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/css3-text/css3-text-justify/text-justify-8bits.html?r1=186099&r2=186098&pathrev=186099
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/linux/fast/css3-text/css3-text-justify/text-justify-8bits-expected.png?r1=186099&r2=186098&pathrev=186099
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/Character.h?r1=186099&r2=186098&pathrev=186099
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/css3-text/css3-text-justify/resources/text-justify.css?r1=186099&r2=186098&pathrev=186099
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/rendering/InlineTextBox.cpp?r1=186099&r2=186098&pathrev=186099
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/css/CSSPrimitiveValueMappings.h?r1=186099&r2=186098&pathrev=186099
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/shaping/SimpleShaper.cpp?r1=186099&r2=186098&pathrev=186099

Rendering text-justify:distribute for 8 bit characters.

text-justify:distribute provides the ability to justify a line as inter-character level.
This patch takes care of only 8 bit characters.

BUG=248894

Review URL: https://codereview.chromium.org/255323004
-----------------------------------------------------------------
Project Member Comment 11 by bugdroid1@chromium.org, Nov 27 2014
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=186111

------------------------------------------------------------------
r186111 | wangxianzhu@chromium.org | 2014-11-27T11:50:28.231057Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/win/fast/css3-text/css3-text-justify/text-justify-8bits-expected.png?r1=186111&r2=186110&pathrev=186111
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/win-xp/fast/css3-text/css3-text-justify/text-justify-8bits-expected.txt?r1=186111&r2=186110&pathrev=186111
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/mac/fast/css3-text/css3-text-justify/text-justify-8bits-expected.png?r1=186111&r2=186110&pathrev=186111
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/win-xp/fast/css3-text/css3-text-justify/text-justify-8bits-expected.png?r1=186111&r2=186110&pathrev=186111
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/TestExpectations?r1=186111&r2=186110&pathrev=186111
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/win/fast/css3-text/css3-text-justify/text-justify-8bits-expected.txt?r1=186111&r2=186110&pathrev=186111
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/win-xp/fast/css3-text/css3-text-justify?r1=186111&r2=186110&pathrev=186111
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/mac/fast/css3-text/css3-text-justify/text-justify-8bits-expected.txt?r1=186111&r2=186110&pathrev=186111

Auto-rebaseline for r186099

http://src.chromium.org/viewvc/blink?view=revision&revision=186099

BUG=248894
TBR=dw.im@samsung.com

Review URL: https://codereview.chromium.org/742363003
-----------------------------------------------------------------
Chinese/Japanese support WIP: https://codereview.chromium.org/766053004/
Project Member Comment 13 by bugdroid1@chromium.org, Dec 15 2014
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=187112

------------------------------------------------------------------
r187112 | kojii@chromium.org | 2014-12-15T04:00:01.930822Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/text/justify-ideograph-expected.html?r1=187112&r2=187111&pathrev=187112
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/text/justify-ideograph.html?r1=187112&r2=187111&pathrev=187112
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/shaping/SimpleShaper.cpp?r1=187112&r2=187111&pathrev=187112
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/text/justify-ideograph-leading-expansion.html?r1=187112&r2=187111&pathrev=187112
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/TestExpectations?r1=187112&r2=187111&pathrev=187112
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/fonts/Character.cpp?r1=187112&r2=187111&pathrev=187112

text-justify has been broken for Chinese and Japanese. This patch fixes this
to the same behavior of WebKit.

There are 3 code path to justify; LChar+SimpleShaper, UChar+SimplerShaper,
and UChar+HarfbuzzShaper. This patch fixes UChar and SimpleShaper code
path. Chinese and Japanese justification always occur at UChar (not LChar),
and SimpleShaper is used most of the time for these scripts. I'll work on
complex path later in another patch.

Tests imported from WebKit were rebaselined to incorrect results at some
point. I rebaselined all such tests by looking at them and by comparing the
results with WebKit. Also one ref test was added.

Note that Chinese/Japanese justification had been disabled under the switch
|canExpandAroundIdeographsInComplexText| for Blink except on Mac, and
then it was removed because it's off in
https://codereview.chromium.org/618383003.

What this patch means in that context is to fix SimpleShaper to support the
switch and turn it back always, as long as text-justify: auto, which is the same
as WebKit behavior.

BUG=248894,  368108 
TEST=fast/text/justify-ideograph.html

Review URL: https://codereview.chromium.org/766053004
-----------------------------------------------------------------
Blockedon: chromium:467406
Labels: -Type-Bug Type-Feature
Labels: Hotlist-Recharge
This issue likely requires triage.  The current issue owner maybe inactive (i.e. hasn't fixed an issue in the last 30 days).  Thanks for helping out!

-Anthony
Comment 17 by ebra...@gnu.org, Sep 24 2015
Cc: dw...@samsung.com
Issue 162557 has been merged into this issue.
Labels: -Cr-Blink
Comment 19 Deleted
Comment 20 Deleted
Comment 21 by yio...@gmail.com, Jun 8 2016
Now text-justify only 4 values:

auto | none | inter-word | inter-character

https://drafts.csswg.org/css-text-3/#propdef-text-justify
Comment 22 by e...@chromium.org, Aug 26 2016
Are you still working on this?
Labels: -Pri-2 Hotlist-Backlog Pri-3
Owner: ----
Status: Available
This doesn't seem to be moving forward. Adding to CSS backlog and making available.
Labels: Update-Quarterly
Mozilla Intent to implement: CSS text-justify property: https://groups.google.com/forum/#!topic/mozilla.dev.platform/I00tLlnmTYk
Cc: kojii@chromium.org
Sign in to add a comment