- 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;
}