On 2010-02-21 at 06:02:01 [+0100], n179911 <[email protected]> wrote: > I have a related question about SimpleFontData and FontPlatformData. > > When does Webkit create a FontPlatformData and SimpleFontData? > I too put debug printfs in these classes constructors. And I see > Webkit creates different FontPlatformData and SimpleFontData for same > font family and same font size.
It's all in FontCache.cpp. There is two levels of caching, that's why you see two FontPlatformData objects being created. One is created via the createFontPlatformData() that you have to implement. This object is placed in the hash map gFontPlatformDataCache in the method FontCache::getCachedFontPlatformData(). SimpleFontData objects are created in FontCache::getCachedFontData, which use the previously created FontPlatformData in the FontPlatformData copy constructor that you have to write, for the SimpleFontData member m_platformData. This SimpleFontData gets put into the gFontDataCache hash map and from it you will later retrieve the native font. FontPlatformData should to be implemented such that it maintains an internal object which wraps your platform native font with reference counting, so that copy consructor, operator=() and operator==() become cheap operations. The Qt implementation makes it clear how this has to work. What is also important is that you generate the same hash value for two different instances of your private native font wrapper which present the same logical font. Best regards, -Stephan _______________________________________________ webkit-dev mailing list [email protected] http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

