Title: [131432] trunk/Source/WebCore
Revision
131432
Author
ba...@chromium.org
Date
2012-10-16 02:28:06 -0700 (Tue, 16 Oct 2012)

Log Message

hb_face_t instances should not depend on FontPlatformData
https://bugs.webkit.org/show_bug.cgi?id=99430

Reviewed by Kent Tamura.

Use platform specific font data (e.g. SkTypeface) to get
font tables for harfbuzz-ng.

No new tests. No changes in behavior.

* platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCairo.cpp:
(WebCore::harfbuzzCairoGetTable): Takes cairo_scaled_font_t* as userData.
(WebCore::HarfBuzzNGFace::createFace):
* platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCoreText.cpp:
(WebCore::harfbuzzCoreTextGetTable): Takes CGFontRef as userData.
(WebCore::HarfBuzzNGFace::createFace):
* platform/graphics/harfbuzz/ng/HarfBuzzNGFaceSkia.cpp:
(WebCore::harfbuzzSkiaGetTable): Takes SkFontID as userData.
(WebCore::HarfBuzzNGFace::createFace):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (131431 => 131432)


--- trunk/Source/WebCore/ChangeLog	2012-10-16 09:12:29 UTC (rev 131431)
+++ trunk/Source/WebCore/ChangeLog	2012-10-16 09:28:06 UTC (rev 131432)
@@ -1,3 +1,25 @@
+2012-10-16  Kenichi Ishibashi  <ba...@chromium.org>
+
+        hb_face_t instances should not depend on FontPlatformData
+        https://bugs.webkit.org/show_bug.cgi?id=99430
+
+        Reviewed by Kent Tamura.
+
+        Use platform specific font data (e.g. SkTypeface) to get
+        font tables for harfbuzz-ng.
+
+        No new tests. No changes in behavior.
+
+        * platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCairo.cpp:
+        (WebCore::harfbuzzCairoGetTable): Takes cairo_scaled_font_t* as userData.
+        (WebCore::HarfBuzzNGFace::createFace):
+        * platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCoreText.cpp:
+        (WebCore::harfbuzzCoreTextGetTable): Takes CGFontRef as userData.
+        (WebCore::HarfBuzzNGFace::createFace):
+        * platform/graphics/harfbuzz/ng/HarfBuzzNGFaceSkia.cpp:
+        (WebCore::harfbuzzSkiaGetTable): Takes SkFontID as userData.
+        (WebCore::HarfBuzzNGFace::createFace):
+
 2012-10-16  Sheriff Bot  <webkit.review....@gmail.com>
 
         Unreviewed, rolling out r131418.

Modified: trunk/Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCairo.cpp (131431 => 131432)


--- trunk/Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCairo.cpp	2012-10-16 09:12:29 UTC (rev 131431)
+++ trunk/Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCairo.cpp	2012-10-16 09:28:06 UTC (rev 131432)
@@ -155,9 +155,7 @@
 
 static hb_blob_t* harfbuzzCairoGetTable(hb_face_t*, hb_tag_t tag, void* userData)
 {
-    FontPlatformData* font = reinterpret_cast<FontPlatformData*>(userData);
-
-    cairo_scaled_font_t* scaledFont = font->scaledFont();
+    cairo_scaled_font_t* scaledFont = reinterpret_cast<cairo_scaled_font_t*>(userData);
     if (!scaledFont)
         return 0;
 
@@ -186,7 +184,7 @@
 
 hb_face_t* HarfBuzzNGFace::createFace()
 {
-    hb_face_t* face = hb_face_create_for_tables(harfbuzzCairoGetTable, m_platformData, 0);
+    hb_face_t* face = hb_face_create_for_tables(harfbuzzCairoGetTable, m_platformData->scaledFont(), 0);
     ASSERT(face);
     return face;
 }

Modified: trunk/Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCoreText.cpp (131431 => 131432)


--- trunk/Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCoreText.cpp	2012-10-16 09:12:29 UTC (rev 131431)
+++ trunk/Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCoreText.cpp	2012-10-16 09:28:06 UTC (rev 131432)
@@ -108,10 +108,7 @@
 
 static hb_blob_t* harfbuzzCoreTextGetTable(hb_face_t* face, hb_tag_t tag, void* userData)
 {
-    FontPlatformData* platformData = reinterpret_cast<FontPlatformData*>(userData);
-    // It seems that CTFontCopyTable of MacOSX10.5 sdk doesn't work for
-    // OpenType layout tables(GDEF, GSUB, GPOS). Use CGFontCopyTableForTag instead.
-    CGFontRef cgFont = platformData->cgFont();
+    CGFontRef cgFont = reinterpret_cast<CGFontRef>(userData);
     CFDataRef cfData = CGFontCopyTableForTag(cgFont, tag);
     if (!cfData)
         return 0;
@@ -125,7 +122,9 @@
 
 hb_face_t* HarfBuzzNGFace::createFace()
 {
-    hb_face_t* face = hb_face_create_for_tables(harfbuzzCoreTextGetTable, m_platformData, 0);
+    // It seems that CTFontCopyTable of MacOSX10.5 sdk doesn't work for
+    // OpenType layout tables(GDEF, GSUB, GPOS). Use CGFontCopyTableForTag instead.
+    hb_face_t* face = hb_face_create_for_tables(harfbuzzCoreTextGetTable, m_platformData->cgFont(), 0);
     ASSERT(face);
     return face;
 }

Modified: trunk/Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceSkia.cpp (131431 => 131432)


--- trunk/Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceSkia.cpp	2012-10-16 09:12:29 UTC (rev 131431)
+++ trunk/Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceSkia.cpp	2012-10-16 09:28:06 UTC (rev 131432)
@@ -144,16 +144,16 @@
 
 static hb_blob_t* harfbuzzSkiaGetTable(hb_face_t* face, hb_tag_t tag, void* userData)
 {
-    FontPlatformData* font = reinterpret_cast<FontPlatformData*>(userData);
+    SkFontID uniqueID = static_cast<SkFontID>(reinterpret_cast<uint64_t>(userData));
 
-    const size_t tableSize = SkFontHost::GetTableSize(font->uniqueID(), tag);
+    const size_t tableSize = SkFontHost::GetTableSize(uniqueID, tag);
     if (!tableSize)
         return 0;
 
     char* buffer = reinterpret_cast<char*>(fastMalloc(tableSize));
     if (!buffer)
         return 0;
-    size_t actualSize = SkFontHost::GetTableData(font->uniqueID(), tag, 0, tableSize, buffer);
+    size_t actualSize = SkFontHost::GetTableData(uniqueID, tag, 0, tableSize, buffer);
     if (tableSize != actualSize) {
         fastFree(buffer);
         return 0;
@@ -171,7 +171,7 @@
 
 hb_face_t* HarfBuzzNGFace::createFace()
 {
-    hb_face_t* face = hb_face_create_for_tables(harfbuzzSkiaGetTable, m_platformData, 0);
+    hb_face_t* face = hb_face_create_for_tables(harfbuzzSkiaGetTable, reinterpret_cast<void*>(m_platformData->uniqueID()), 0);
     ASSERT(face);
     return face;
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to