+2006-05-25 Dave Hyatt <hyatt@apple.com>
+
+ Implement the fallback method containsCharacters for
+ checking if a font has the necessary glyphs to be
+ selected as a fallback choide.
+
+ * platform/win/FontDataWin.cpp:
+ (WebCore::FontData::containsCharacters):
+
2006-05-25 Dave Hyatt <hyatt@apple.com>
For now eliminate the logical scale factor from Cairo.
bool FontData::containsCharacters(const UChar* characters, int length) const
{
- // FIXME: Need to check character ranges.
- // IMLangFontLink2::GetFontUnicodeRanges does what we want.
- return false;
+ HDC dc = GetDC(0);
+ SaveDC(dc);
+ SelectObject(dc, m_font.hfont());
+
+ WORD* glyphBuffer = new WORD[length];
+ GetGlyphIndices(dc, characters, length, glyphBuffer, GGI_MARK_NONEXISTING_GLYPHS);
+
+ RestoreDC(dc, -1);
+ ReleaseDC(0, dc);
+
+ for (unsigned i = 0; i < length; i++) {
+ if (glyphBuffer[i] == 0xFFFFFFFF) {
+ delete []glyphBuffer;
+ return false;
+ }
+ }
+
+ delete []glyphBuffer;
+ return true;
}
void FontData::determinePitch()