WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
25657
[Chromium] Non-BMP characters are not rendered correctly
https://bugs.webkit.org/show_bug.cgi?id=25657
Summary
[Chromium] Non-BMP characters are not rendered correctly
Jungshik Shin
Reported
2009-05-08 17:12:00 PDT
In getFontForCharacters in FontCacheLinux.cpp in platform/graphics/chromium does not handle surrogate pairs for non-BMP characters properly. It is trivial to fix, but I need to make a simple TTF supporting a few non-BMP characters to check in for layout test.
Attachments
patch without the layout test result
(2.67 KB, patch)
2009-06-11 16:12 PDT
,
Jungshik Shin
no flags
Details
Formatted Diff
Diff
patch with a test put in manual-tests
(2.42 KB, patch)
2009-06-16 14:38 PDT
,
Jungshik Shin
no flags
Details
Formatted Diff
Diff
patch with a test put in manual-tests
(2.42 KB, patch)
2009-06-16 21:58 PDT
,
Jungshik Shin
levin
: review+
Details
Formatted Diff
Diff
Show Obsolete
(2)
View All
Add attachment
proposed patch, testcase, etc.
Adam Langley
Comment 1
2009-05-08 18:25:24 PDT
There are lots of changes pending in the Linux font code. I'm waiting on the Skia unforking. Please don't try and fix anything, you'll just make merging harder! Thanks
Jungshik Shin
Comment 2
2009-06-09 15:38:39 PDT
Adam, are you done with the Skia unforking? Actually, the change does not touch Skia at all. It's like this in FontCacheLinux.cpp. +#include <unicode/utf16.h> #include <wtf/Assertions.h> namespace WebCore { @@ -59,8 +60,11 @@ int length) { FcCharSet* cset = FcCharSetCreate(); - for (int i = 0; i < length; ++i) - FcCharSetAddChar(cset, characters[i]); + for (int i = 0; i < length; ++i) { + UChar32 ucs4 = 0; + U16_NEXT(characters, i, length, ucs4); + FcCharSetAddChar(cset, ucs4); + }
Adam Langley
Comment 3
2009-06-09 15:45:29 PDT
Yes, Skia is unforked. I just don't have time to work on complex text stuff right now. Feel free to land a patch if you like.
Jungshik Shin
Comment 4
2009-06-11 16:12:19 PDT
Created
attachment 31175
[details]
patch without the layout test result I have yet to make a freely-distributable font with a few non-BMP glyphs to use for layout test. Therefore, the test is attached without a result.
Adam Langley
Comment 5
2009-06-14 10:28:37 PDT
Comment on
attachment 31175
[details]
patch without the layout test result
> + for (int i = 0; i < length; ++i) { > + UChar32 ucs4 = 0;
Setting this to zero every time would appear to be a waste.
> + U16_NEXT(characters, i, length, ucs4);
U16_NEXT is a terrible name for this macro! (Nothing to do with with patch though). From looking at the macro, it appears that it increments |i| for you:
r30377
/WebKit/mac/icu/unicode/utf16.h?rev=3">https://dev.mobileread.com/trac/webkitbrowser/browser/trunk/WebKit-
r30377
/WebKit/mac/icu/unicode/utf16.h?rev=3 However, you are also incrementing i in the for loop. Might not you be skipping charactors? AGL
Jungshik Shin
Comment 6
2009-06-16 14:38:33 PDT
Created
attachment 31376
[details]
patch with a test put in manual-tests I put non-bmp.html in WebCore/manual-tests. Once I make a small font covering non-BMP and contribute to the webkit, I'll move the test to fast/text.
Jungshik Shin
Comment 7
2009-06-16 14:47:30 PDT
(In reply to
comment #5
)
> > From looking at the macro, it appears that it increments |i| for you: > >
r30377
/WebKit/mac/icu/unicode/utf16.h?rev=3">https://dev.mobileread.com/trac/webkitbrowser/browser/trunk/WebKit-
r30377
/WebKit/mac/icu/unicode/utf16.h?rev=3 > However, you are also incrementing i in the for loop. Might not you be skipping > charactors?
You're right. I shouldn't have resurrected the patch from the memory. When I tested it on Linux, I used while loop. Thanks for catching it.
> > AGL >
Jungshik Shin
Comment 8
2009-06-16 21:58:58 PDT
Created
attachment 31398
[details]
patch with a test put in manual-tests fixed a 'double' iteratorion issue pointed out by agl.
David Levin
Comment 9
2009-06-18 12:35:45 PDT
Comment on
attachment 31398
[details]
patch with a test put in manual-tests There are tabs in the changelog which will need to be fixed on landing.
Jungshik Shin
Comment 10
2009-06-19 10:49:53 PDT
Landed in
r44858
(
http://trac.webkit.org/changeset/44858
) Sending WebCore/ChangeLog Adding WebCore/manual-tests/non-bmp.html Sending WebCore/platform/graphics/chromium/FontCacheLinux.cpp
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