RESOLVED FIXED Bug 28131
[Haiku] Adding font-specific files to WebCore.
https://bugs.webkit.org/show_bug.cgi?id=28131
Summary [Haiku] Adding font-specific files to WebCore.
Maxime Simon
Reported 2009-08-09 07:39:57 PDT
I will post two patches in this bug for these font-specific files: WebCore/platform/graphics/haiku/FontCustomPlatformData.cpp WebCore/platform/graphics/haiku/FontCustomPlatformData.h WebCore/platform/graphics/haiku/FontPlatformData.h WebCore/platform/graphics/haiku/FontPlatformDataHaiku.cpp WebCore/platform/graphics/haiku/FontCacheHaiku.cpp WebCore/platform/graphics/haiku/FontDataHaiku.cpp WebCore/platform/graphics/haiku/FontHaiku.cpp WebCore/platform/graphics/haiku/SimpleFontHaiku.cpp Regards, Maxime
Attachments
Patch to add four font-specific files to WebCore/platform/graphics/haiku/. (14.20 KB, patch)
2009-08-09 07:48 PDT, Maxime Simon
eric: review-
Patch to add four other font-specific files to WebCore/platform/graphics/haiku/. (16.33 KB, patch)
2009-08-09 07:57 PDT, Maxime Simon
eric: review-
Patch to add four font-specific files to WebCore/platform/graphics/haiku/. (13.58 KB, patch)
2009-08-11 07:44 PDT, Maxime Simon
no flags
Patch to add four other font-specific files to WebCore/platform/graphics/haiku/. (16.23 KB, patch)
2009-08-11 08:44 PDT, Maxime Simon
no flags
Adding four font-specific files to WebCore. (12.99 KB, patch)
2009-08-15 08:04 PDT, Maxime Simon
no flags
Adding three font-specific files to WebCore. (12.91 KB, patch)
2009-08-15 08:17 PDT, Maxime Simon
no flags
Adding four font-specific files to WebCore. (12.79 KB, patch)
2009-08-25 02:56 PDT, Maxime Simon
no flags
Adding four font-specific files to WebCore. (12.93 KB, patch)
2009-08-25 08:19 PDT, Maxime Simon
no flags
Adding four font-specific files to WebCore. (12.92 KB, patch)
2009-08-26 13:59 PDT, Maxime Simon
no flags
Adding three font-specific files to WebCore. (7.23 KB, patch)
2009-08-30 08:46 PDT, Maxime Simon
no flags
Maxime Simon
Comment 1 2009-08-09 07:48:19 PDT
Created attachment 34421 [details] Patch to add four font-specific files to WebCore/platform/graphics/haiku/.
Maxime Simon
Comment 2 2009-08-09 07:57:28 PDT
Created attachment 34422 [details] Patch to add four other font-specific files to WebCore/platform/graphics/haiku/.
Eric Seidel (no email)
Comment 3 2009-08-09 08:41:34 PDT
Comment on attachment 34421 [details] Patch to add four font-specific files to WebCore/platform/graphics/haiku/. 39 static void releaseData(void* data) looks to never be used, please remove it. strange indenting here: struct FontCustomPlatformData : Noncopyable { 33 public: 34 FontCustomPlatformData() { } 35 No need for the "buffer" argument name here: 40 FontCustomPlatformData* createFontCustomPlatformData(SharedBuffer* buffer); Wrong: * This file is part of the internal font implementation. It should not be included by anyone other than 3 * FontMac.cpp, FontWin.cpp and Font.cpp. So strange: 120 if (m_font && m_font != hashTableDeletedFontValue()) 121 delete m_font; That's gonna die a horrible death with this as a copy-constructor: FontPlatformData::FontPlatformData(const FontPlatformData& other) 114 { 115 *this = other; 116 } your' going to be double-deleting pointers left and right. Why does FontPlatformData use FontDescription at all? the Mac version doesn't at least. Shouldn't this just wrap a BFont?
Eric Seidel (no email)
Comment 4 2009-08-09 08:53:28 PDT
Comment on attachment 34422 [details] Patch to add four other font-specific files to WebCore/platform/graphics/haiku/. naming style: 71 static AtomicString s_DefaultStr(family); This should indicate that it's a hack somehow: 1 // Fix temp routine to check the conversion works, please move it ASAP 42 int charUnicodeToUtf8(unsigned short glyph, char* out) it's not clear to me from reading that method name that this method isn't a good thing. :) Although since I started at it enought o see what it does, you're basically just flattening all passed in chars to utf8 so that you can pass them off to B drawing routines. This is a hack, and needs to be designated as such. Shouldn't char* out be char[4]& out? Don't we already have typedefs making these casts uneeded? 2 BView* view = static_cast<BView*>(graphicsContext->platformContext()); 73 BFont* m_font = static_cast<BFont*>(font->platformData().font()); Why is the const_cast needed? 79 GlyphBufferGlyph* glyphs = const_cast<GlyphBufferGlyph*>(glyphBuffer.glyphs(from)); Early return is preferred: 45 BFont* font = m_platformData.font(); 46 if (font) { if (!font) return; It seems the handling of m_smallCapsFontData is wrong on other ports. But I'm not convinced your handling is correct either. It certainly is strange that SimpleFontData.cpp would try to delete it too. if (m_platformData.font()) 90 m_treatAsFixedPitch = m_platformData.font()->IsFixed(); 91 else 92 m_treatAsFixedPitch = false; m_treadAsFixedPitch = m_platformData.font() && m_platformData.font()->IsFixed(); What is an "escapement"? Wow a B-only term it seems: http://www.acm.uiuc.edu/bug/Be%20Book/The%20Interface%20Kit/Font.html
Maxime Simon
Comment 5 2009-08-11 07:34:54 PDT
(In reply to comment #3) > Why does FontPlatformData use FontDescription at all? the Mac version doesn't > at least. Shouldn't this just wrap a BFont? At least the gtk port does it. But with some simple tests it seems that the type of FontDescription is always NoFamily.
Maxime Simon
Comment 6 2009-08-11 07:44:53 PDT
Created attachment 34556 [details] Patch to add four font-specific files to WebCore/platform/graphics/haiku/.
Maxime Simon
Comment 7 2009-08-11 08:27:48 PDT
(In reply to comment #4) > It seems the handling of m_smallCapsFontData is wrong on other ports. But I'm > not convinced your handling is correct either. It certainly is strange that > SimpleFontData.cpp would try to delete it too. I took a look on other ports. It seems that gtk, win, wince, wx and mac are handling m_smallCapsFontData the same way I do (if I'm right). But in fact it could be wrong. > What is an "escapement"? Wow a B-only term it seems: > http://www.acm.uiuc.edu/bug/Be%20Book/The%20Interface%20Kit/Font.html Eh Eh, an escapement is the B-term to design the width of a glyph. ;)
Maxime Simon
Comment 8 2009-08-11 08:34:38 PDT
(In reply to comment #4) > Shouldn't char* out be char[4]& out? I tried with char[4]& but it didn't compile. I got this output "error: 'out' was not declared in this scope." > Why is the const_cast needed? > 79 GlyphBufferGlyph* glyphs = > const_cast<GlyphBufferGlyph*>(glyphBuffer.glyphs(from)); This const_cast is needed because the glyphBuffer argument of the function is const, and the glyphs we are creating will be modified.
Maxime Simon
Comment 9 2009-08-11 08:44:30 PDT
Created attachment 34561 [details] Patch to add four other font-specific files to WebCore/platform/graphics/haiku/.
Eric Seidel (no email)
Comment 10 2009-08-14 17:37:07 PDT
Comment on attachment 34556 [details] Patch to add four font-specific files to WebCore/platform/graphics/haiku/. I would have put this in a static inline: + int32 numStyles = count_font_styles(family); + font_style fontStyle; + uint32 flags; + + for (int i = 0; i < numStyles; i++) { + if (get_font_style(family, i, &fontStyle, &flags) == B_OK) { + String style(fontStyle); + if ((m_oblique && m_bold) && (style == "BoldItalic" || style == "Bold Oblique")) + break; + if ((m_oblique && !m_bold) && (style == "Italic" || style == "Oblique")) + break; + if ((!m_oblique && m_bold) && style == "Bold") + break; + if ((!m_oblique && !m_bold) && (style == "Roma" || style == "Book" + || style == "Condensed" || style == "Regular" || style == "Medium")) + break; + } + } Something like findMatchingFontStyle(family, m_bold, m_oblique); found is not used here: + if (BFont().SetFamilyAndStyle(BString(familyName.string()).String(), 0) == B_OK) { + strcpy(family, BString(familyName.string()).String()); + found = true; + } + + // If no font family is found for the given name, we use a generic font. + if (!found) { + int type = fontDescription.genericFamily(); + + if (BString(familyName.string()).FindFirst("Sans") != B_ERROR) + strcpy(family, "DejaVu Sans"); + else if (BString(familyName.string()).FindFirst("Serif") != B_ERROR) + strcpy(family, "DejaVu Serif"); + else if (BString(familyName.string()).FindFirst("Mono") != B_ERROR) + strcpy(family, "DejaVu Mono"); + else // This is the fallback font. + strcpy(family, "DejaVu Sans"); + } Seems that should just be an else. Again, I would have put the family lookup in a separate static inline. font_family family = findMatchingFontFamily(familyName); I think this could use on more round of cleanup. In general, smaller functions are better. :)
Eric Seidel (no email)
Comment 11 2009-08-14 17:42:06 PDT
Comment on attachment 34561 [details] Patch to add four other font-specific files to WebCore/platform/graphics/haiku/. Why execute the family code ever time when you're only creating the AtomicString once? 69 font_family family; 70 defaultFont->GetFamilyAndStyle(&family, 0); 71 static AtomicString defaultString(family); Seems like a bad idea... bool FontData::containsCharacters(const UChar* characters, int length) const 43 { 44 notImplemented(); 45 return true; 46 } Certainly will make international sites look awful. :) This is not an english sentence: 41 // FIXME: Temp routine to check the conversion works. I'm not quite sure what you mean by that. Is it possible to pass these through to the simple versions? 97 float Font::floatWidthForComplexText(const TextRun& run, HashSet<const SimpleFontData*>* fallbackFonts) const I'm not sure that it would help you any, but it might. I take it Haiku does not have easy options for drawing complex text? Not a good variable name: 76 const FontPlatformData* pdata = new FontPlatformData(desc, desc.family().family()); 74 FontDescription desc = FontDescription(fontDescription); Otherwise looks fine.
Maxime Simon
Comment 12 2009-08-15 08:04:41 PDT
Created attachment 34894 [details] Adding four font-specific files to WebCore.
Maxime Simon
Comment 13 2009-08-15 08:17:02 PDT
Created attachment 34895 [details] Adding three font-specific files to WebCore.
Oliver Hunt
Comment 14 2009-08-20 22:38:14 PDT
Comment on attachment 34895 [details] Adding three font-specific files to WebCore. r=me (again)
Eric Seidel (no email)
Comment 15 2009-08-20 22:39:18 PDT
Comment on attachment 34895 [details] Adding three font-specific files to WebCore. I can't remember if this was landed or not. But the commit-queue is smart enough to reject it if it's already been landed.
Oliver Hunt
Comment 16 2009-08-20 22:40:25 PDT
Comment on attachment 34894 [details] Adding four font-specific files to WebCore. > +static font_family* findMatchingFontFamily(const AtomicString& familyName) > +{ > + font_family family; > + > + if (BFont().SetFamilyAndStyle(BString(familyName.string()).String(), 0) == B_OK) > + strcpy(family, BString(familyName.string()).String()); Not sure where familyName comes from, but i suspect it's from CSS, and that means you have a buffer overflow vulnerability here. Never use strcpy -- always strncpy. That said, wth is a font_family? From reading this it looks like it's just a string? > + else { > + // If no font family is found for the given name, we use a generic font. > + if (BString(familyName.string()).FindFirst("Sans") != B_ERROR) > + strcpy(family, "DejaVu Sans"); > + else if (BString(familyName.string()).FindFirst("Serif") != B_ERROR) > + strcpy(family, "DejaVu Serif"); > + else if (BString(familyName.string()).FindFirst("Mono") != B_ERROR) > + strcpy(family, "DejaVu Mono"); > + else // This is the fallback font. > + strcpy(family, "DejaVu Serif"); This code seems to repeatedly create the same bstring, which seems unnecessarily expensive. More over i'm fairly sure AtomicString has all the logic you need to do this without ever creating a bstring anyway. > + } > + > + font_family* fontFamily = &family; > + return fontFamily; You can't return a pointer to a stack allocated variable, it's just not okay -- the code structure implies that the compiler even warned you. > +} > + > +static font_style* findMatchingFontStyle(font_family family, bool bold, bool oblique) > +{ > + font_style style; ... > + font_style* fontStyle = &style; > + return fontStyle; Once again, don't return pointers to locals -- you're far better off just using out parameters
Eric Seidel (no email)
Comment 17 2009-08-20 22:43:10 PDT
Comment on attachment 34895 [details] Adding three font-specific files to WebCore. Rejecting patch 34895 from commit-queue. This patch will require manual commit. Failed to run "['git', 'svn', 'rebase']" exit_code: 1 cwd: None
Eric Seidel (no email)
Comment 18 2009-08-20 22:55:44 PDT
Comment on attachment 34895 [details] Adding three font-specific files to WebCore. commit-queue error.
Eric Seidel (no email)
Comment 19 2009-08-20 23:08:09 PDT
Comment on attachment 34895 [details] Adding three font-specific files to WebCore. Rejecting patch 34895 from commit-queue. This patch will require manual commit. ['WebKitTools/Scripts/run-webkit-tests', '--no-launch-safari', '--quiet', '--exit-after-n-failures=1'] failed with exit code 1
Maxime Simon
Comment 20 2009-08-21 01:22:06 PDT
(In reply to comment #16) > (From update of attachment 34894 [details]) > Not sure where familyName comes from, but i suspect it's from CSS, and that > means you have a buffer overflow vulnerability here. Never use strcpy -- > always strncpy. That said, wth is a font_family? From reading this it looks > like it's just a string? font_family is in fact a simple array of chars. definition from the BeBook: typedef char font_family[B_FONT_FAMILY_LENGTH + 1] But you're right using strncpy would be more secure than a simple strcpy. > > + else { > > + // If no font family is found for the given name, we use a generic > font. > > + if (BString(familyName.string()).FindFirst("Sans") != B_ERROR) > > + strcpy(family, "DejaVu Sans"); > > + else if (BString(familyName.string()).FindFirst("Serif") != B_ERROR) > > > + strcpy(family, "DejaVu Serif"); > > + else if (BString(familyName.string()).FindFirst("Mono") != B_ERROR) > > + strcpy(family, "DejaVu Mono"); > > + else // This is the fallback font. > > + strcpy(family, "DejaVu Serif"); > This code seems to repeatedly create the same bstring, which seems > unnecessarily expensive. More over i'm fairly sure AtomicString has all the > logic you need to do this without ever creating a bstring anyway. Indeed, I should have investigate to see if AtomicString has some functions to find a motif in a string. > > + } > > + > > + font_family* fontFamily = &family; > > + return fontFamily; > You can't return a pointer to a stack allocated variable, it's just not okay -- > the code structure implies that the compiler even warned you. If I wrote "return &family" then the compiler warned me. But if I made it like this, it didn't complain (maybe an issue in our gcc version). Anyway, I made some tests and it works as it. It may be a stroke of luck and it will not work another time. > Once again, don't return pointers to locals -- you're far better off just using > out parameters In fact, it should be better. :) Thanks for the advices.
Oliver Hunt
Comment 21 2009-08-21 01:42:38 PDT
> If I wrote "return &family" then the compiler warned me. But if I made it like > this, it didn't complain (maybe an issue in our gcc version). Anyway, I made > some tests and it works as it. It may be a stroke of luck and it will not work > another time. GCC was warning you precisely because return the address of a local is unsafe -- it may "work" but it is fundamentally unsound. What your patch does is deliberately circumvent gcc attempting to tell you that your code is broken. take (for example): int* foo() { int bar = 3; return &bar; } int main() { int* f = foo(); printf("%d\n", *f); printf("%d\n", *f); return 0; } You will (probably) get two different numbers output, because you have returned the address of a local, eg. a pointer to some arbitrary location on the stack. The next function you call uses the same section of the stack for whatever it needs to do and the value you thought you were pointing to is now gone. In general when gcc warns you against do something it's better to not do it than to just try and make the warning go away :D
Eric Seidel (no email)
Comment 22 2009-08-21 09:16:29 PDT
Comment on attachment 34895 [details] Adding three font-specific files to WebCore. storage/database-lock-after-reload.html -> failed I think that test may be flakey. adding back to cq.
Eric Seidel (no email)
Comment 23 2009-08-21 12:16:29 PDT
Comment on attachment 34895 [details] Adding three font-specific files to WebCore. Clearing flags on attachment: 34895 Committed r47637: <http://trac.webkit.org/changeset/47637>
Eric Seidel (no email)
Comment 24 2009-08-21 12:16:33 PDT
All reviewed patches have been landed. Closing bug.
Oliver Hunt
Comment 25 2009-08-21 13:04:43 PDT
Except the patches have not all been landed -- one was r-'d, and it was not obsoleted because 'lo the patch you landed, and the r-'d patch were different parts of this bug. Please do not just automatically close bugs if there are unlanded non-obsolete attachments.
Eric Seidel (no email)
Comment 26 2009-08-21 17:12:09 PDT
(In reply to comment #25) > Except the patches have not all been landed -- one was r-'d, and it was not > obsoleted because 'lo the patch you landed, and the r-'d patch were different > parts of this bug. > > Please do not just automatically close bugs if there are unlanded non-obsolete > attachments. bug 28230 covers some of this. Historically I made bugzilla-tool more aggressive because people don't always obsolete patches when they post a new one, so it was never closing bugs, even though the bug was "done". I'm happy to make it less-aggressive about closing.
Maxime Simon
Comment 27 2009-08-25 02:56:38 PDT
Created attachment 38538 [details] Adding four font-specific files to WebCore.
Oliver Hunt
Comment 28 2009-08-25 03:03:17 PDT
Comment on attachment 38538 [details] Adding four font-specific files to WebCore. For the sake of those of us who aren't familiar with haiku, make the font_family argument to findMatchingFontFamily a pointer, and dereference appropriately. Also replace all uses of strcpy with strncpy (never use strcpy -- most modern analysis tools will flag any use of strcpy as being bad). I don't know haiku idioms but m_font->SetFamilyAndStyle(fontFamily, 0); seems superfluous as it's immediately followed by m_font->SetFamilyAndStyle(fontFamily, *fontStyle); Fix those up and it will be good.
Maxime Simon
Comment 29 2009-08-25 03:17:15 PDT
(In reply to comment #28) > (From update of attachment 38538 [details]) > For the sake of those of us who aren't familiar with haiku, make the > font_family argument to findMatchingFontFamily a pointer, and dereference > appropriately. I tried, but it "segfault" when making str(n)py(*family…); > Also replace all uses of strcpy with strncpy (never use strcpy > -- most modern analysis tools will flag any use of strcpy as being bad). I used strncpy for the copy which may be "dangerous". Should I do the same even if the source string is known (and will not exceed 64)? > I don't know haiku idioms but > m_font->SetFamilyAndStyle(fontFamily, 0); > seems superfluous as it's immediately followed by > m_font->SetFamilyAndStyle(fontFamily, *fontStyle); Strange, I thought I passed m_font to findMatchingFontStyle(), but in fact not. So indeed this should be removed. :)
Maxime Simon
Comment 30 2009-08-25 05:53:12 PDT
(In reply to comment #29) > (In reply to comment #28) > > (From update of attachment 38538 [details] [details]) > > For the sake of those of us who aren't familiar with haiku, make the > > font_family argument to findMatchingFontFamily a pointer, and dereference > > appropriately. > > I tried, but it "segfault" when making str(n)py(*family…); It seems normal… I must initialize the family before using it (Silly me). So I put a "static_cast<font_family*>(malloc(sizeof(font_family)));" when creating the font_family pointer.
Maxime Simon
Comment 31 2009-08-25 08:19:58 PDT
Created attachment 38545 [details] Adding four font-specific files to WebCore.
Oliver Hunt
Comment 32 2009-08-25 14:50:57 PDT
Comment on attachment 38545 [details] Adding four font-specific files to WebCore. > + font_family* fontFamily = static_cast<font_family*>(malloc(sizeof(font_family))); > + findMatchingFontFamily(familyName, fontFamily); You are leaking the fontFamily allocation, this should be done as > + font_family fontFamily; > + findMatchingFontFamily(familyName, &fontFamily);
Maxime Simon
Comment 33 2009-08-26 13:59:53 PDT
Created attachment 38638 [details] Adding four font-specific files to WebCore.
Eric Seidel (no email)
Comment 34 2009-08-26 14:09:35 PDT
Comment on attachment 38638 [details] Adding four font-specific files to WebCore. Not needed: +#include "NotImplemented.h" I probably wouldn't have bothered to maintain these copyrights after such extensive modification: 2 * Copyright (C) 2006 Apple Computer, Inc. 3 * Copyright (C) 2006 Zack Rusin <zack@kde.org> 4 * Copyright (C) 2006 Dirk Mueller <mueller@kde.org> 5 * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org> 6 * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com> 7 * Copyright (C) 2009 Maxime Simon <simon.maxime@gmail.com> This: 115 if (m_font) 116 return m_font->Spacing() == B_FIXED_SPACING; 117 118 return false; Should just be: return m_font && m_font->Spacing() == B_FIXED_SPACING; Why is this needed? 09 if (m_font && m_font != hashTableDeletedFontValue()) 110 m_font = 0; Seems useless in the destructor. setting the raw pointer to 0 does nothing. :) So you're leaking m_font. I think you meant to make it an OwnPtr<BFont> This is going to need at least one more round of review since there were still obvious leaks in this one. :( Do you all have any way to check for leaks on Haiku?
Ryan Leavengood
Comment 35 2009-08-26 14:16:59 PDT
(In reply to comment #34) > > I probably wouldn't have bothered to maintain these copyrights after such > extensive modification: > 2 * Copyright (C) 2006 Apple Computer, Inc. > 3 * Copyright (C) 2006 Zack Rusin <zack@kde.org> > 4 * Copyright (C) 2006 Dirk Mueller <mueller@kde.org> > 5 * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org> > 6 * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com> > 7 * Copyright (C) 2009 Maxime Simon <simon.maxime@gmail.com> I was always pretty worried about this in my original port as copyright stuff can be pretty tricky, especially in the US. But if you think it is OK, I say Maxime can probably remove most of those (maybe even me.) > This is going to need at least one more round of review since there were still > obvious leaks in this one. :( Do you all have any way to check for leaks on > Haiku? I at least tried rigging up a LeakChecker.h that overrode new and delete for our work on the new browser, but it didn't work that well in my testing. We could definitely work to improve this area though, as memory leaking in browsers has always really, really annoyed me. It wouldn't do to have my browser so leaky!
Eric Seidel (no email)
Comment 36 2009-08-26 14:24:05 PDT
(In reply to comment #35) > I was always pretty worried about this in my original port as copyright stuff > can be pretty tricky, especially in the US. But if you think it is OK, I say > Maxime can probably remove most of those (maybe even me.) I am not a lawyer, so certainly my comments should not be construed as legal advice. But looking at this case, there is nothing interesting in the header that you actually copied. It would be impossible for a reviewer to tell if you copied that or wrote it yourself. My general rule of thumb is that if I am copying any code of substance I bring along copyrights. Otherwise new files like this are mostly all typed by hand anyway.
Maxime Simon
Comment 37 2009-08-27 02:16:44 PDT
> I at least tried rigging up a LeakChecker.h that overrode new and delete for > our work on the new browser, but it didn't work that well in my testing. We > could definitely work to improve this area though, as memory leaking in > browsers has always really, really annoyed me. It wouldn't do to have my > browser so leaky! I tried using LeakTracker.h with HaikuLauncher, and it doesn't work at all. It didn't even compile. And in fact, memory leaking is really annoying. :-/ ( In OSX it's easier as they have a tool named leaks which detect them. ) Actually, I can't delete the m_font as it. (because of the copy-constructor). Eric, you suggested using OwPtr, why not RefPtr?
Maxime Simon
Comment 38 2009-08-27 02:35:38 PDT
> I tried using LeakTracker.h with HaikuLauncher, and it doesn't work at all. It > didn't even compile. Sorry, the fault was mine. I used the wrong #ifdef … #endif. And even if I didn't delete the font, it didn't detect any leak… I supposed this tool isn't perfect. :) We would really need a tool like valgrind or leaks in Haiku. Especially for our WebKit port and the browser.
Maxime Simon
Comment 39 2009-08-30 08:46:55 PDT
Created attachment 38793 [details] Adding three font-specific files to WebCore.
Maxime Simon
Comment 40 2009-08-30 08:49:34 PDT
(In reply to comment #39) > Created an attachment (id=38793) [details] > Adding three font-specific files to WebCore. As the three other files than FontPlatformDataHaiku.cpp are mostly correct I fill a patch for them.
Eric Seidel (no email)
Comment 41 2009-09-03 01:34:04 PDT
Comment on attachment 38793 [details] Adding three font-specific files to WebCore. Yay for small patches!
Eric Seidel (no email)
Comment 42 2009-09-03 01:50:40 PDT
Comment on attachment 38793 [details] Adding three font-specific files to WebCore. Clearing flags on attachment: 38793 Committed r48006: <http://trac.webkit.org/changeset/48006>
Eric Seidel (no email)
Comment 43 2009-09-03 01:50:46 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.