Still no clue why the latest build won't run. The offending assertion in dwrite_font_proxy_init_win.cc is:
- Code: Select all
/ When IDWriteFontFallback is not available (prior to Win8.1) Skia will
// still attempt to use DirectWrite to determine fallback fonts (in
// SkFontMgr_DirectWrite::onMatchFamilyStyleCharacter), which will likely
// result in trying to load the system font collection. To avoid that and
// instead fall back on WebKit's fallback logic, we don't use Skia's font
// fallback if IDWriteFontFallback is not available.
// This flag can be removed when Win8.0 and earlier are no longer supported.
bool fallback_available = font_fallback.Get() != nullptr;
DCHECK_EQ(fallback_available,
base::win::GetVersion() > base::win::VERSION_WIN8);
blink::WebFontRendering::setUseSkiaFontFallback(fallback_available);
(Sources from
https://chromium.googlesource.com/chromium/src/+/master/content/child/dwrite_font_proxy/dwrite_font_proxy_init_win.cc)
So, assuming base::win::GetVersion determines the version correctly (Window 10), the version will be > VERSION_WIN8, and fallback_available is expected to be true. The check fails, because it isn't. IDWriteFontFallback is a Windows API function
https://msdn.microsoft.com/en-us/library/windows/desktop/dn280474(v=vs.85).aspx and should be available since 8.1. The reason why fallback_available might still be false is if font_fallback.Get() is a nullptr. It's initialized in dwrite_font_proxy_init_win.cc like this:
- Code: Select all
if (SUCCEEDED(factory.As(&factory2)) && factory2.Get()) {
mswr::MakeAndInitialize<FontFallback>(
&font_fallback, g_font_collection.Get(), sender);
}
So why might this fail in my case?