Commit 27e8addc authored by eae@chromium.org's avatar eae@chromium.org

[DirectWrite] Set minimum anti-aliased font size on a per script basis

Change FontCacheSkiaWin to set the minimum font size for anti aliasing
on a per script basis and assign min sizes for Han, Hiragana, Katakana,
Hangul, and Bengali. The current values where chosen by picking the
minimum value for which Wikipedia in said script was legible and will
likely require further tweaking based on user input.

R=dglazkov@chromium.org
BUG=357864

Review URL: https://codereview.chromium.org/221153002

git-svn-id: svn://svn.chromium.org/blink/trunk@170608 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 26ab32be
...@@ -42,10 +42,6 @@ ...@@ -42,10 +42,6 @@
namespace WebCore { namespace WebCore {
// Minimum size, in pixels, at which anti alias is enabled for certain
// scripts. Only applies to the Direct Write backend for now.
static const unsigned s_minSizeForComplexScriptsAntiAlias = 32;
FontCache::FontCache() FontCache::FontCache()
: m_purgePreventCount(0) : m_purgePreventCount(0)
{ {
...@@ -191,6 +187,40 @@ static bool typefacesMatchesFamily(const SkTypeface* tf, const AtomicString& fam ...@@ -191,6 +187,40 @@ static bool typefacesMatchesFamily(const SkTypeface* tf, const AtomicString& fam
return matchesRequestedFamily; return matchesRequestedFamily;
} }
// Minimum size, in pixels, at which anti alias is enabled for certain
// scripts. Only applies to the Direct Write backend for now.
static unsigned minSizeForAntiAlias(UScriptCode script)
{
switch (script) {
case USCRIPT_TRADITIONAL_HAN:
return 24;
case USCRIPT_SIMPLIFIED_HAN:
case USCRIPT_HIRAGANA:
case USCRIPT_KATAKANA:
case USCRIPT_KATAKANA_OR_HIRAGANA:
case USCRIPT_HANGUL:
case USCRIPT_BENGALI:
return 16;
case USCRIPT_THAI:
case USCRIPT_HEBREW:
case USCRIPT_ARABIC:
case USCRIPT_DEVANAGARI:
case USCRIPT_GURMUKHI:
case USCRIPT_GUJARATI:
case USCRIPT_TAMIL:
case USCRIPT_TELUGU:
case USCRIPT_KANNADA:
case USCRIPT_GEORGIAN:
case USCRIPT_ARMENIAN:
case USCRIPT_THAANA:
case USCRIPT_CANADIAN_ABORIGINAL:
case USCRIPT_CHEROKEE:
case USCRIPT_MONGOLIAN:
default:
return 0;
}
}
FontPlatformData* FontCache::createFontPlatformData(const FontDescription& fontDescription, const AtomicString& family, float fontSize) FontPlatformData* FontCache::createFontPlatformData(const FontDescription& fontDescription, const AtomicString& family, float fontSize)
{ {
CString name; CString name;
...@@ -215,31 +245,9 @@ FontPlatformData* FontCache::createFontPlatformData(const FontDescription& fontD ...@@ -215,31 +245,9 @@ FontPlatformData* FontCache::createFontPlatformData(const FontDescription& fontD
fontDescription.orientation(), fontDescription.orientation(),
s_useSubpixelPositioning); s_useSubpixelPositioning);
// FIXME: Turn this into a script to min-size table. if (s_useDirectWrite) {
if (s_useDirectWrite result->setMinSizeForAntiAlias(
&& (fontDescription.script() == USCRIPT_SIMPLIFIED_HAN minSizeForAntiAlias(fontDescription.script()));
|| fontDescription.script() == USCRIPT_TRADITIONAL_HAN
|| fontDescription.script() == USCRIPT_HIRAGANA
|| fontDescription.script() == USCRIPT_KATAKANA
|| fontDescription.script() == USCRIPT_KATAKANA_OR_HIRAGANA
|| fontDescription.script() == USCRIPT_HANGUL
|| fontDescription.script() == USCRIPT_THAI
|| fontDescription.script() == USCRIPT_HEBREW
|| fontDescription.script() == USCRIPT_ARABIC
|| fontDescription.script() == USCRIPT_DEVANAGARI
|| fontDescription.script() == USCRIPT_BENGALI
|| fontDescription.script() == USCRIPT_GURMUKHI
|| fontDescription.script() == USCRIPT_GUJARATI
|| fontDescription.script() == USCRIPT_TAMIL
|| fontDescription.script() == USCRIPT_TELUGU
|| fontDescription.script() == USCRIPT_KANNADA
|| fontDescription.script() == USCRIPT_GEORGIAN
|| fontDescription.script() == USCRIPT_ARMENIAN
|| fontDescription.script() == USCRIPT_THAANA
|| fontDescription.script() == USCRIPT_CANADIAN_ABORIGINAL
|| fontDescription.script() == USCRIPT_CHEROKEE
|| fontDescription.script() == USCRIPT_MONGOLIAN)) {
result->setMinSizeForAntiAlias(s_minSizeForComplexScriptsAntiAlias);
} }
return result; return result;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment