<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre, #msg p { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[28810] trunk/WebCore</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/28810">28810</a></dd>
<dt>Author</dt> <dd>mitz@apple.com</dd>
<dt>Date</dt> <dd>2007-12-17 09:09:56 -0800 (Mon, 17 Dec 2007)</dd>
</dl>

<h3>Log Message</h3>
<pre>        Reviewed by Maciej Stachowiak.

        - fix &lt;rdar://problem/5333260&gt; Some Chinese characters in Text Encoding menu are bold, others are not
          and &lt;rdar://problem/5280188&gt; Chinese text looks worse on Safari for Windows cf. Safari for Mac

        * platform/graphics/win/FontCacheWin.cpp:
        (WebCore::FontCache::getFontDataForCharacters): To ensure that font
        linking gives consistent results for characters that are exclusive to
        the simplified Chinese code page and characters that belong to that
        code page and other code pages, always ask to map to simplified Chinese
        alone first.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkWebCoreChangeLog">trunk/WebCore/ChangeLog</a></li>
<li><a href="#trunkWebCoreplatformgraphicswinFontCacheWincpp">trunk/WebCore/platform/graphics/win/FontCacheWin.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/ChangeLog (28809 => 28810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/ChangeLog        2007-12-17 16:18:44 UTC (rev 28809)
+++ trunk/WebCore/ChangeLog        2007-12-17 17:09:56 UTC (rev 28810)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2007-12-17  Dan Bernstein  &lt;mitz@apple.com&gt;
+
+        Reviewed by Maciej Stachowiak.
+
+        - fix &lt;rdar://problem/5333260&gt; Some Chinese characters in Text Encoding menu are bold, others are not
+          and &lt;rdar://problem/5280188&gt; Chinese text looks worse on Safari for Windows cf. Safari for Mac
+
+        * platform/graphics/win/FontCacheWin.cpp:
+        (WebCore::FontCache::getFontDataForCharacters): To ensure that font
+        linking gives consistent results for characters that are exclusive to
+        the simplified Chinese code page and characters that belong to that
+        code page and other code pages, always ask to map to simplified Chinese
+        alone first.
+
</ins><span class="cx"> 2007-12-17  Christian Dywan  &lt;christian@twotoasts.de&gt;
</span><span class="cx"> 
</span><span class="cx">         Reviewed by Alp Toker.
</span></span></pre></div>
<a id="trunkWebCoreplatformgraphicswinFontCacheWincpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/platform/graphics/win/FontCacheWin.cpp (28809 => 28810)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/platform/graphics/win/FontCacheWin.cpp        2007-12-17 16:18:44 UTC (rev 28809)
+++ trunk/WebCore/platform/graphics/win/FontCacheWin.cpp        2007-12-17 17:09:56 UTC (rev 28810)
</span><span class="lines">@@ -92,7 +92,21 @@
</span><span class="cx">     long cchActual;
</span><span class="cx">     langFontLink-&gt;GetStrCodePages(characters, length, acpCodePages, &amp;actualCodePages, &amp;cchActual);
</span><span class="cx">     if (cchActual) {
</span><ins>+        // If simplified Chinese is one of the actual code pages, make one call to MapFont() asking for
+        // simplified Chinese only (and ignore the result). This ensures that we get consistent answers
+        // for characters that are in the simplified Chinese code page as well as other code pages and
+        // characters that are exclusively in the simplified Chinese code page.
+        // FIXME: This needs to be done only once per primary font. We could set a bit in the FontPlatformData
+        // indicating that we have done this.
+        const UINT simplifiedChineseCP = 936;
+        UINT codePage;
</ins><span class="cx">         HFONT result;
</span><ins>+        if (SUCCEEDED(langFontLink-&gt;CodePagesToCodePage(actualCodePages, simplifiedChineseCP, &amp;codePage)) &amp;&amp; codePage == simplifiedChineseCP) {
+            DWORD simplifiedChineseCodePages;
+            langFontLink-&gt;CodePageToCodePages(simplifiedChineseCP, &amp;simplifiedChineseCodePages);
+            langFontLink-&gt;MapFont(hdc, simplifiedChineseCodePages, characters[0], &amp;result);
+            langFontLink-&gt;ReleaseFont(result);
+        }
</ins><span class="cx">         if (langFontLink-&gt;MapFont(hdc, actualCodePages, characters[0], &amp;result) == S_OK) {
</span><span class="cx">             // Fill in a log font with the returned font from MLang, and then use that to create a new font.
</span><span class="cx">             LOGFONT lf;
</span></span></pre>
</div>
</div>

</body>
</html>