зеркало из https://github.com/mozilla/gecko-dev.git
Bug 548751 - make canvas respect the style's language when resolving fonts. r=dbaron
This commit is contained in:
Родитель
cf84dfafe8
Коммит
aa5a345997
|
@ -1932,8 +1932,6 @@ nsCanvasRenderingContext2D::SetFont(const nsAString& font)
|
|||
return NS_ERROR_FAILURE;
|
||||
nsIDocument* document = presShell->GetDocument();
|
||||
|
||||
nsIAtom *language = presShell->GetPresContext()->GetLanguageFromCharset();
|
||||
|
||||
nsCOMArray<nsIStyleRule> rules;
|
||||
|
||||
nsCOMPtr<nsICSSStyleRule> rule;
|
||||
|
@ -1985,6 +1983,11 @@ nsCanvasRenderingContext2D::SetFont(const nsAString& font)
|
|||
|
||||
NS_ASSERTION(fontStyle, "Could not obtain font style");
|
||||
|
||||
nsIAtom* language = sc->GetStyleVisibility()->mLanguage;
|
||||
if (!language) {
|
||||
language = presShell->GetPresContext()->GetLanguageFromCharset();
|
||||
}
|
||||
|
||||
// use CSS pixels instead of dev pixels to avoid being affected by page zoom
|
||||
const PRUint32 aupcp = nsPresContext::AppUnitsPerCSSPixel();
|
||||
// un-zoom the font size to avoid being affected by text-only zoom
|
||||
|
|
|
@ -37,3 +37,4 @@
|
|||
fails-if(MOZ_WIDGET_TOOLKIT=="cocoa") == text-bidi-ltr-test.html text-bidi-ltr-ref.html
|
||||
fails-if(MOZ_WIDGET_TOOLKIT=="cocoa") == text-bidi-rtl-test.html text-bidi-rtl-ref.html
|
||||
|
||||
!= text-font-lang.html text-font-lang-notref.html
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test for language-sensitive font prefs on canvas</title>
|
||||
<script type="text/javascript">
|
||||
function test(canvasID) {
|
||||
var canvas = document.getElementById(canvasID);
|
||||
var ctx = canvas.getContext('2d');
|
||||
|
||||
var str = 'Hello world! \u4F60\u597D\u5417\uFF1F';
|
||||
ctx.font = '2em sans-serif';
|
||||
ctx.fillStyle = 'black';
|
||||
ctx.textAlign = 'left';
|
||||
ctx.textBaseline = 'top';
|
||||
ctx.fillText(str, 10, 10);
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div lang="en" style="margin:20px; height:100px;">
|
||||
<canvas id="c1" width="400" height="50"></canvas>
|
||||
<script type="text/javascript">
|
||||
test("c1");
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div lang="en" style="margin:20px; height:100px;">
|
||||
<canvas id="c2" width="400" height="50"></canvas>
|
||||
<script type="text/javascript">
|
||||
test("c2");
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div lang="en" style="margin:20px; height:100px;">
|
||||
<canvas id="c3" width="400" height="50"></canvas>
|
||||
<script type="text/javascript">
|
||||
test("c3");
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div lang="en" style="margin:20px; height:100px;">
|
||||
<canvas id="c4" width="400" height="50"></canvas>
|
||||
<script type="text/javascript">
|
||||
test("c4");
|
||||
</script>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,56 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test for language-sensitive font prefs on canvas</title>
|
||||
<script type="text/javascript">
|
||||
function test(canvasID) {
|
||||
var canvas = document.getElementById(canvasID);
|
||||
var ctx = canvas.getContext('2d');
|
||||
|
||||
var str = 'Hello world! \u4F60\u597D\u5417\uFF1F';
|
||||
ctx.font = '2em sans-serif';
|
||||
ctx.fillStyle = 'black';
|
||||
ctx.textAlign = 'left';
|
||||
ctx.textBaseline = 'top';
|
||||
ctx.fillText(str, 10, 10);
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!--
|
||||
In the reference, all divs are tagged with lang="en".
|
||||
The expectation is that at least some of them will resolve
|
||||
"sans-serif" to different fonts according to language.
|
||||
-->
|
||||
|
||||
<div lang="ar" style="margin:20px; height:100px;">
|
||||
<canvas id="c1" width="400" height="50"></canvas>
|
||||
<script type="text/javascript">
|
||||
test("c1");
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div lang="ja" style="margin:20px; height:100px;">
|
||||
<canvas id="c2" width="400" height="50"></canvas>
|
||||
<script type="text/javascript">
|
||||
test("c2");
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div lang="zh-TW" style="margin:20px; height:100px;">
|
||||
<canvas id="c3" width="400" height="50"></canvas>
|
||||
<script type="text/javascript">
|
||||
test("c3");
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div lang="en" style="margin:20px; height:100px;">
|
||||
<canvas id="c4" width="400" height="50"></canvas>
|
||||
<script type="text/javascript">
|
||||
test("c4");
|
||||
</script>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче