WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
VERIFIED FIXED
3922
Variable word/letter spacing and full justification not supported for ATSUI-rendered text
https://bugs.webkit.org/show_bug.cgi?id=3922
Summary
Variable word/letter spacing and full justification not supported for ATSUI-r...
mitz
Reported
2005-07-09 07:21:33 PDT
Summary: The ATSUI code path does not support the CSS word-spacing and letter-spacing properties, nor text justification. To reproduce: open the testcase in Safari. Select Use ATSUI For All Text in the Debug menu and reload. Expected: see testcase. Actual: normal word- and letter-spacing the the three Hebrew examples; Hebrew text in the last example not justified. When ATSUI is used for all text, the same holds for the Roman text.
Attachments
Testcase
(2.64 KB, text/html)
2005-07-09 07:22 PDT
,
mitz
no flags
Details
work in progress
(7.88 KB, patch)
2005-08-23 10:58 PDT
,
mitz
no flags
Details
Formatted Diff
Diff
Full justification of Arabic script text vs Roman and Hebrew text
(137.73 KB, image/png)
2005-11-13 08:31 PST
,
Ahmad
no flags
Details
Support extra spacing features in the ATSUI code path
(19.48 KB, patch)
2005-12-22 14:05 PST
,
mitz
darin
: review+
Details
Formatted Diff
Diff
Full justification using Kashidas implemented in I.E 6 (Windows) compared to Webkit2006-01-06
(160.12 KB, image/jpeg)
2006-01-07 09:56 PST
,
Ahmad
no flags
Details
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
mitz
Comment 1
2005-07-09 07:22:39 PDT
Created
attachment 2880
[details]
Testcase
mitz
Comment 2
2005-08-23 10:58:33 PDT
Created
attachment 3539
[details]
work in progress This patch relies on
bug 3963
being fixed, and even then it is not complete. Still needs some work on justification, highlighting in general, and to optimize-out the layout override in the trivial case.
mitz
Comment 3
2005-11-04 08:16:45 PST
***
Bug 5624
has been marked as a duplicate of this bug. ***
mitz
Comment 4
2005-11-04 08:20:43 PST
The layout override suggested by the patch is already in place, so it should be quite easy to implement word-spacing and justification. Letter-spacing is slightly trickier because you don't want to add it e.g. before a combining mark.
Ahmad
Comment 5
2005-11-13 08:31:09 PST
Created
attachment 4680
[details]
Full justification of Arabic script text vs Roman and Hebrew text
Ahmad
Comment 6
2005-11-13 08:37:18 PST
Dear Mitz; I noticed that to illustrate the text block full justification problematic Hebrew was used. Although there are a lot of similarity between Hebrew and Arabic (writing direction, text alignment, mirroring) Hebrew differs from Arabic as Arabic script system uses cursive connections to form words. Hence when it comes to full justification of a block of text this must be taken into account. Roman text (and Hebrew ?) is justified by adjusting the white space between words (and characters) while in Arabic script (Arabic, Persian, Urdu, Kurdish, etc) the full justification must be attained by applying the "Kashidas" to the block of the text. ATSUI distributes the available white space on the line by automatically lengthening or shortening the kashidas, which are the extender bars stretching between some of the glyphs of a word. Technical information on this topic is available in a document publish by Apple "Rendering Unicode Text With ATSUI", C HAP T E R 2 ATSUI Style and Text Layout Objects p. 64-67 I think that WebKit should use the same mechanism to full justify the Arabic script text block and NOT the technic which increases the white space between the word/characters as this affect the context of the words negatively. Wither you are going to use ATSUI to do this or some other technic you should consider the special requirement of Arabic script for the best result. Good luck (In reply to
comment #4
)
> The layout override suggested by the patch is already in place, so it should be quite easy to
implement
> word-spacing and justification. Letter-spacing is slightly trickier because you don't want to add it
e.g.
> before a combining mark.
mitz
Comment 7
2005-11-13 09:49:18 PST
(In reply to
comment #6
) Hi Ahmad, I think you're right -- Kashidas should be used when fully-justifying Arabic. While the CSS3 Text Effects Module working draft <
http://www.w3.org/TR/css3-text/
> specifies Kashida behavior, CSS2.1 doesn't mention them explicitly, but I think that doesn't mean they should not be used. From the little I know about how text justification works in WebCore/WebKit, I suspect that implementing Kashidas is highly non-trivial. Because of this, and because of possible CSS3 connections, I would suggest having a separate bugzilla bug about Kashidas, (I guess I shouldn't have closed
bug 5624
:-( ), and limiting
bug 3922
to matching the CG code path's behavior in the ATSU code path. As long as you're here, I would be very grateful if you could take a look at other RTL-, bidi- and ATSU- related bugs in bugzilla and see if there are any Arabic-specific issues which they overlook (especially the rendering bugs). In particular, any feedback regarding the proposed heuristic in
bug 5166
would be most welcome!
mitz
Comment 8
2005-12-22 14:05:13 PST
Created
attachment 5227
[details]
Support extra spacing features in the ATSUI code path
Darin Adler
Comment 9
2005-12-25 08:03:50 PST
Comment on
attachment 5227
[details]
Support extra spacing features in the ATSUI code path In this: ceilf((float)style->padding / numSpaces) there's no need to cast style->padding to a float. If you divide it by a float, then the result will be floating point without any type cast. Patch looks good, r=me.
Geoffrey Garen
Comment 10
2005-12-29 03:27:35 PST
Landed.
mitz
Comment 11
2005-12-29 06:32:07 PST
I think the testcase (included in the patch, except for pixel result) wasn't committed.
Darin Adler
Comment 12
2005-12-29 17:29:28 PST
Geoff, please look at Mitz's comment about the test case.
Geoffrey Garen
Comment 13
2005-12-29 17:37:47 PST
Landed test case today with pixel result. Sorry for confusion.
Ahmad
Comment 14
2005-12-30 13:21:49 PST
(In reply to
comment #13
)
> Landed test case today with pixel result. Sorry for confusion.
Dear all; I downloaded the latest version (v. 2005-12-30) and I have to say that I am overwhelmed with the result of great results you have achieved. The problem of full justified Arabic paragraph is solved, mirroring problem is solved and even problem of not being able to highlight and select Arabic word within a text is solved too. I would like to thank you all, Mitz, Darin and Geoffrey on behalf of myself and on behalf of Iranian Macintosh User Group, IRMUG,
http://irmug.org
. If I knew your private address I would send you a bouquet of follower to show my appreciation. I hope that this version of Webkit will be included in the next system update. Happy new year to you all Ahmad
Ahmad
Comment 15
2006-01-07 09:50:34 PST
As additional comments to full justification of Arabic script, I have to mention that this problem is solved not in a proper way as both me and later on Mitz has pointed out. The problem of full justification of Arabic was solved by insertion white space thereby "Kashidas" technology was not used to handle this annoying bug. Attached is a screen capture which compares the an Arabic text block handled by MS I.E 6 (on Windows) and WebKit v.2005-01-06. The space between word in Webkit is marked with yellow circles. I have to emphasize here that "Kashidas" technique is not something new for Apple engineer. In WorldScriptI (up to OS9), 4 different level of "Kashidas" were implemented. Those of you who works for Apple has access to to the C++ source code of how to implement "Kashidas" so that you know that you do not need to re invent the Wheel once again, Apple has the code. Ahmad
Ahmad
Comment 16
2006-01-07 09:56:56 PST
Created
attachment 5527
[details]
Full justification using Kashidas implemented in I.E 6 (Windows) compared to Webkit2006-01-06
mitz
Comment 17
2006-01-07 09:58:23 PST
Use of Kashidas is tracked by
bug 6203
.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug