Commit 9f3772ba authored by yiyix's avatar yiyix Committed by Commit Bot

[Canvas new API] Add wpt tests for fontVariantCaps

Add new attribute fontVariantCaps to canvas context 2d. Developers can
choose between normal, small-caps, all-small-caps, petite-caps,
all-petite-caps, inicase and tiling-caps.

Bug: 1141671

Change-Id: I5d047f00773f4f2a38eb25c21e13168a316c29d3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2490789Reviewed-by: default avatarFernando Serboncini <fserb@chromium.org>
Reviewed-by: default avatarBo <boliu@chromium.org>
Reviewed-by: default avatarAaron Krajeski <aaronhk@chromium.org>
Commit-Queue: Yi Xu <yiyix@chromium.org>
Cr-Commit-Position: refs/heads/master@{#821377}
parent a62ed78c
...@@ -683,6 +683,8 @@ interface CanvasRenderingContext2D ...@@ -683,6 +683,8 @@ interface CanvasRenderingContext2D
getter fillStyle getter fillStyle
getter filter getter filter
getter font getter font
getter fontKerning
getter fontVariantCaps
getter globalAlpha getter globalAlpha
getter globalCompositeOperation getter globalCompositeOperation
getter imageSmoothingEnabled getter imageSmoothingEnabled
...@@ -701,7 +703,6 @@ interface CanvasRenderingContext2D ...@@ -701,7 +703,6 @@ interface CanvasRenderingContext2D
getter textBaseline getter textBaseline
getter textLetterSpacing getter textLetterSpacing
getter textWordSpacing getter textWordSpacing
getter fontKerning
method arc method arc
method arcTo method arcTo
method beginPath method beginPath
...@@ -749,6 +750,8 @@ interface CanvasRenderingContext2D ...@@ -749,6 +750,8 @@ interface CanvasRenderingContext2D
setter fillStyle setter fillStyle
setter filter setter filter
setter font setter font
setter fontKerning
setter fontVariantCaps
setter globalAlpha setter globalAlpha
setter globalCompositeOperation setter globalCompositeOperation
setter imageSmoothingEnabled setter imageSmoothingEnabled
...@@ -767,7 +770,6 @@ interface CanvasRenderingContext2D ...@@ -767,7 +770,6 @@ interface CanvasRenderingContext2D
setter textBaseline setter textBaseline
setter textLetterSpacing setter textLetterSpacing
setter textWordSpacing setter textWordSpacing
setter fontKerning
interface ChannelMergerNode : AudioNode interface ChannelMergerNode : AudioNode
attribute @@toStringTag attribute @@toStringTag
method constructor method constructor
...@@ -4236,6 +4238,8 @@ interface OffscreenCanvasRenderingContext2D ...@@ -4236,6 +4238,8 @@ interface OffscreenCanvasRenderingContext2D
getter fillStyle getter fillStyle
getter filter getter filter
getter font getter font
getter fontKerning
getter fontVariantCaps
getter globalAlpha getter globalAlpha
getter globalCompositeOperation getter globalCompositeOperation
getter imageSmoothingEnabled getter imageSmoothingEnabled
...@@ -4254,7 +4258,6 @@ interface OffscreenCanvasRenderingContext2D ...@@ -4254,7 +4258,6 @@ interface OffscreenCanvasRenderingContext2D
getter textLetterSpacing getter textLetterSpacing
getter textWordSpacing getter textWordSpacing
getter textBaseline getter textBaseline
getter fontKerning
method arc method arc
method arcTo method arcTo
method beginPath method beginPath
...@@ -4300,6 +4303,8 @@ interface OffscreenCanvasRenderingContext2D ...@@ -4300,6 +4303,8 @@ interface OffscreenCanvasRenderingContext2D
setter fillStyle setter fillStyle
setter filter setter filter
setter font setter font
setter fontKerning
setter fontVariantCaps
setter globalAlpha setter globalAlpha
setter globalCompositeOperation setter globalCompositeOperation
setter imageSmoothingEnabled setter imageSmoothingEnabled
...@@ -4318,7 +4323,6 @@ interface OffscreenCanvasRenderingContext2D ...@@ -4318,7 +4323,6 @@ interface OffscreenCanvasRenderingContext2D
setter textBaseline setter textBaseline
setter textLetterSpacing setter textLetterSpacing
setter textWordSpacing setter textWordSpacing
setter fontKerning
interface Option interface Option
attribute @@toStringTag attribute @@toStringTag
getter defaultSelected getter defaultSelected
......
...@@ -36,6 +36,15 @@ const char BaseRenderingContext2D::kLtrDirectionString[] = "ltr"; ...@@ -36,6 +36,15 @@ const char BaseRenderingContext2D::kLtrDirectionString[] = "ltr";
const char BaseRenderingContext2D::kAutoKerningString[] = "auto"; const char BaseRenderingContext2D::kAutoKerningString[] = "auto";
const char BaseRenderingContext2D::kNormalKerningString[] = "normal"; const char BaseRenderingContext2D::kNormalKerningString[] = "normal";
const char BaseRenderingContext2D::kNoneKerningString[] = "none"; const char BaseRenderingContext2D::kNoneKerningString[] = "none";
const char BaseRenderingContext2D::kNormalVariantString[] = "normal";
const char BaseRenderingContext2D::kSmallCapsVariantString[] = "small-caps";
const char BaseRenderingContext2D::kAllSmallCapsVariantString[] =
"all-small-caps";
const char BaseRenderingContext2D::kPetiteVariantString[] = "petite-caps";
const char BaseRenderingContext2D::kAllPetiteVariantString[] =
"all-petite-caps";
const char BaseRenderingContext2D::kUnicaseVariantString[] = "unicase";
const char BaseRenderingContext2D::kTitlingCapsVariantString[] = "titling-caps";
const double BaseRenderingContext2D::kCDeviceScaleFactor = 1.0; const double BaseRenderingContext2D::kCDeviceScaleFactor = 1.0;
BaseRenderingContext2D::BaseRenderingContext2D() BaseRenderingContext2D::BaseRenderingContext2D()
...@@ -2074,6 +2083,10 @@ String BaseRenderingContext2D::fontKerning() const { ...@@ -2074,6 +2083,10 @@ String BaseRenderingContext2D::fontKerning() const {
return FontDescription::ToString(GetState().GetFontKerning()); return FontDescription::ToString(GetState().GetFontKerning());
} }
String BaseRenderingContext2D::fontVariantCaps() const {
return FontDescription::ToString(GetState().GetFontVariantCaps());
}
void BaseRenderingContext2D::Trace(Visitor* visitor) const { void BaseRenderingContext2D::Trace(Visitor* visitor) const {
visitor->Trace(state_stack_); visitor->Trace(state_stack_);
} }
......
...@@ -264,9 +264,10 @@ class MODULES_EXPORT BaseRenderingContext2D : public GarbageCollectedMixin, ...@@ -264,9 +264,10 @@ class MODULES_EXPORT BaseRenderingContext2D : public GarbageCollectedMixin,
void setTextBaseline(const String&); void setTextBaseline(const String&);
double textLetterSpacing() const; double textLetterSpacing() const;
double textWordSpacing() const; double textWordSpacing() const;
String fontKerning() const; String fontKerning() const;
String fontVariantCaps() const;
void Trace(Visitor*) const override; void Trace(Visitor*) const override;
...@@ -386,9 +387,15 @@ class MODULES_EXPORT BaseRenderingContext2D : public GarbageCollectedMixin, ...@@ -386,9 +387,15 @@ class MODULES_EXPORT BaseRenderingContext2D : public GarbageCollectedMixin,
static const char kAutoKerningString[]; static const char kAutoKerningString[];
static const char kNormalKerningString[]; static const char kNormalKerningString[];
static const char kNoneKerningString[]; static const char kNoneKerningString[];
static const char kNormalVariantString[];
static const char kSmallCapsVariantString[];
static const char kAllSmallCapsVariantString[];
static const char kPetiteVariantString[];
static const char kAllPetiteVariantString[];
static const char kUnicaseVariantString[];
static const char kTitlingCapsVariantString[];
// Canvas is device independent // Canvas is device independent
static const double kCDeviceScaleFactor; static const double kCDeviceScaleFactor;
virtual void DisableAcceleration() {} virtual void DisableAcceleration() {}
virtual bool IsPaint2D() const { return false; } virtual bool IsPaint2D() const { return false; }
......
...@@ -846,6 +846,35 @@ void CanvasRenderingContext2D::setFontKerning( ...@@ -846,6 +846,35 @@ void CanvasRenderingContext2D::setFontKerning(
ModifiableState().SetFontKerning(kerning, Host()->GetFontSelector()); ModifiableState().SetFontKerning(kerning, Host()->GetFontSelector());
} }
void CanvasRenderingContext2D::setFontVariantCaps(
const String& font_variant_caps_string) {
if (!GetState().HasRealizedFont())
setFont(font());
FontDescription::FontVariantCaps variant_caps;
String variant_caps_lower = font_variant_caps_string.LowerASCII();
if (variant_caps_lower == kNormalVariantString)
variant_caps = FontDescription::kCapsNormal;
else if (variant_caps_lower == kSmallCapsVariantString)
variant_caps = FontDescription::kSmallCaps;
else if (variant_caps_lower == kAllSmallCapsVariantString)
variant_caps = FontDescription::kAllSmallCaps;
else if (variant_caps_lower == kPetiteVariantString)
variant_caps = FontDescription::kPetiteCaps;
else if (variant_caps_lower == kAllPetiteVariantString)
variant_caps = FontDescription::kAllPetiteCaps;
else if (variant_caps_lower == kUnicaseVariantString)
variant_caps = FontDescription::kUnicase;
else if (variant_caps_lower == kTitlingCapsVariantString)
variant_caps = FontDescription::kTitlingCaps;
else
return;
if (GetState().GetFontVariantCaps() == variant_caps)
return;
ModifiableState().SetFontVariantCaps(variant_caps, Host()->GetFontSelector());
}
void CanvasRenderingContext2D::fillText(const String& text, void CanvasRenderingContext2D::fillText(const String& text,
double x, double x,
double y) { double y) {
......
...@@ -130,6 +130,7 @@ class MODULES_EXPORT CanvasRenderingContext2D final ...@@ -130,6 +130,7 @@ class MODULES_EXPORT CanvasRenderingContext2D final
void setTextWordSpacing(const double word_spacing); void setTextWordSpacing(const double word_spacing);
void setFontKerning(const String&); void setFontKerning(const String&);
void setFontVariantCaps(const String&);
void fillText(const String& text, double x, double y); void fillText(const String& text, double x, double y);
void fillText(const String& text, double x, double y, double max_width); void fillText(const String& text, double x, double y, double max_width);
......
...@@ -162,6 +162,7 @@ interface CanvasRenderingContext2D { ...@@ -162,6 +162,7 @@ interface CanvasRenderingContext2D {
[RuntimeEnabled=NewCanvas2DAPI] attribute unrestricted double textLetterSpacing; // length in pixel (default: 0) [RuntimeEnabled=NewCanvas2DAPI] attribute unrestricted double textLetterSpacing; // length in pixel (default: 0)
[RuntimeEnabled=NewCanvas2DAPI] attribute unrestricted double textWordSpacing; // length in pixel (default: 0) [RuntimeEnabled=NewCanvas2DAPI] attribute unrestricted double textWordSpacing; // length in pixel (default: 0)
[RuntimeEnabled=NewCanvas2DAPI] attribute DOMString fontKerning; // "auto", "normal", "none" (default: "auto") [RuntimeEnabled=NewCanvas2DAPI] attribute DOMString fontKerning; // "auto", "normal", "none" (default: "auto")
[RuntimeEnabled=NewCanvas2DAPI] attribute DOMString fontVariantCaps; // "normal", "small-caps", "all-small-caps", "petite-caps", "all-petite-caps", "unicase", "titling-caps" (default: "normal")
}; };
CanvasRenderingContext2D includes CanvasPath; CanvasRenderingContext2D includes CanvasPath;
...@@ -104,6 +104,7 @@ CanvasRenderingContext2DState::CanvasRenderingContext2DState( ...@@ -104,6 +104,7 @@ CanvasRenderingContext2DState::CanvasRenderingContext2DState(
letter_spacing_(other.letter_spacing_), letter_spacing_(other.letter_spacing_),
word_spacing_(other.word_spacing_), word_spacing_(other.word_spacing_),
font_kerning_(other.font_kerning_), font_kerning_(other.font_kerning_),
font_variant_caps_(other.font_variant_caps_),
realized_font_(other.realized_font_), realized_font_(other.realized_font_),
is_transform_invertible_(other.is_transform_invertible_), is_transform_invertible_(other.is_transform_invertible_),
has_clip_(other.has_clip_), has_clip_(other.has_clip_),
...@@ -289,6 +290,16 @@ void CanvasRenderingContext2DState::SetFontKerning( ...@@ -289,6 +290,16 @@ void CanvasRenderingContext2DState::SetFontKerning(
SetFont(font_description, selector); SetFont(font_description, selector);
} }
void CanvasRenderingContext2DState::SetFontVariantCaps(
FontDescription::FontVariantCaps font_variant_caps,
FontSelector* selector) {
DCHECK(realized_font_);
FontDescription font_description(GetFontDescription());
font_description.SetVariantCaps(font_variant_caps);
font_variant_caps_ = font_variant_caps;
SetFont(font_description, selector);
}
void CanvasRenderingContext2DState::SetTransform( void CanvasRenderingContext2DState::SetTransform(
const AffineTransform& transform) { const AffineTransform& transform) {
is_transform_invertible_ = transform.IsInvertible(); is_transform_invertible_ = transform.IsInvertible();
......
...@@ -140,6 +140,12 @@ class CanvasRenderingContext2DState final ...@@ -140,6 +140,12 @@ class CanvasRenderingContext2DState final
FontSelector* selector); FontSelector* selector);
FontDescription::Kerning GetFontKerning() const { return font_kerning_; } FontDescription::Kerning GetFontKerning() const { return font_kerning_; }
void SetFontVariantCaps(FontDescription::FontVariantCaps font_kerning,
FontSelector* selector);
FontDescription::FontVariantCaps GetFontVariantCaps() const {
return font_variant_caps_;
}
void SetLineWidth(double line_width) { void SetLineWidth(double line_width) {
stroke_flags_.setStrokeWidth(clampTo<float>(line_width)); stroke_flags_.setStrokeWidth(clampTo<float>(line_width));
} }
...@@ -256,6 +262,8 @@ class CanvasRenderingContext2DState final ...@@ -256,6 +262,8 @@ class CanvasRenderingContext2DState final
float letter_spacing_{0}; float letter_spacing_{0};
float word_spacing_{0}; float word_spacing_{0};
FontDescription::Kerning font_kerning_{FontDescription::kAutoKerning}; FontDescription::Kerning font_kerning_{FontDescription::kAutoKerning};
FontDescription::FontVariantCaps font_variant_caps_{
FontDescription::kCapsNormal};
bool realized_font_ : 1; bool realized_font_ : 1;
bool is_transform_invertible_ : 1; bool is_transform_invertible_ : 1;
......
...@@ -510,6 +510,35 @@ void OffscreenCanvasRenderingContext2D::setFontKerning( ...@@ -510,6 +510,35 @@ void OffscreenCanvasRenderingContext2D::setFontKerning(
ModifiableState().SetFontKerning(kerning, Host()->GetFontSelector()); ModifiableState().SetFontKerning(kerning, Host()->GetFontSelector());
} }
void OffscreenCanvasRenderingContext2D::setFontVariantCaps(
const String& font_variant_caps_string) {
if (!GetState().HasRealizedFont())
setFont(font());
FontDescription::FontVariantCaps variant_caps;
String variant_caps_lower = font_variant_caps_string.LowerASCII();
if (variant_caps_lower == kNormalVariantString)
variant_caps = FontDescription::kCapsNormal;
else if (variant_caps_lower == kSmallCapsVariantString)
variant_caps = FontDescription::kSmallCaps;
else if (variant_caps_lower == kAllSmallCapsVariantString)
variant_caps = FontDescription::kAllSmallCaps;
else if (variant_caps_lower == kPetiteVariantString)
variant_caps = FontDescription::kPetiteCaps;
else if (variant_caps_lower == kAllPetiteVariantString)
variant_caps = FontDescription::kAllPetiteCaps;
else if (variant_caps_lower == kUnicaseVariantString)
variant_caps = FontDescription::kUnicase;
else if (variant_caps_lower == kTitlingCapsVariantString)
variant_caps = FontDescription::kTitlingCaps;
else
return;
if (GetState().GetFontVariantCaps() == variant_caps)
return;
ModifiableState().SetFontVariantCaps(variant_caps, Host()->GetFontSelector());
}
void OffscreenCanvasRenderingContext2D::fillText(const String& text, void OffscreenCanvasRenderingContext2D::fillText(const String& text,
double x, double x,
double y) { double y) {
......
...@@ -81,6 +81,7 @@ class MODULES_EXPORT OffscreenCanvasRenderingContext2D final ...@@ -81,6 +81,7 @@ class MODULES_EXPORT OffscreenCanvasRenderingContext2D final
void setTextLetterSpacing(const double letter_spacing); void setTextLetterSpacing(const double letter_spacing);
void setTextWordSpacing(const double word_spacing); void setTextWordSpacing(const double word_spacing);
void setFontKerning(const String&); void setFontKerning(const String&);
void setFontVariantCaps(const String&);
void fillText(const String& text, double x, double y); void fillText(const String& text, double x, double y);
void fillText(const String& text, double x, double y, double max_width); void fillText(const String& text, double x, double y, double max_width);
......
...@@ -110,6 +110,7 @@ ...@@ -110,6 +110,7 @@
[RuntimeEnabled=NewCanvas2DAPI] attribute unrestricted double textLetterSpacing; // length in pixel (default: 0) [RuntimeEnabled=NewCanvas2DAPI] attribute unrestricted double textLetterSpacing; // length in pixel (default: 0)
[RuntimeEnabled=NewCanvas2DAPI] attribute unrestricted double textWordSpacing; // length in pixel (default: 0) [RuntimeEnabled=NewCanvas2DAPI] attribute unrestricted double textWordSpacing; // length in pixel (default: 0)
[RuntimeEnabled=NewCanvas2DAPI] attribute DOMString fontKerning; // "auto", "normal", "none" (default: "auto") [RuntimeEnabled=NewCanvas2DAPI] attribute DOMString fontKerning; // "auto", "normal", "none" (default: "auto")
[RuntimeEnabled=NewCanvas2DAPI] attribute DOMString fontVariantCaps; // "normal", "small-caps", "all-small-caps", "petite-caps", "all-petite-caps", "unicase", "titling-caps" (default: "normal")
}; };
OffscreenCanvasRenderingContext2D includes CanvasPath; OffscreenCanvasRenderingContext2D includes CanvasPath;
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<title>Canvas test: 2d.text.drawing.style.fontVariant.settings</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/html/canvas/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
<body class="show_output">
<h1>2d.text.drawing.style.fontVariant.settings</h1>
<p class="desc">Testing basic functionalities of fontKerning for canvas</p>
<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
<ul id="d"></ul>
<script>
var t = async_test("Testing basic functionalities of fontKerning for canvas");
_addTest(function(canvas, ctx) {
// Setting fontVariantCaps with lower cases
_assertSame(ctx.fontVariantCaps, "Normal", "ctx.fontVariantCaps", "\"Normal\"");
ctx.fontVariantCaps = "normal";
_assertSame(ctx.fontVariantCaps, "Normal", "ctx.fontVariantCaps", "\"Normal\"");
ctx.fontVariantCaps = "small-caps";
_assertSame(ctx.fontVariantCaps, "SmallCaps", "ctx.fontVariantCaps", "\"SmallCaps\"");
ctx.fontVariantCaps = "all-small-caps";
_assertSame(ctx.fontVariantCaps, "AllSmallCaps", "ctx.fontVariantCaps", "\"AllSmallCaps\"");
ctx.fontVariantCaps = "petite-caps";
_assertSame(ctx.fontVariantCaps, "PetiteCaps", "ctx.fontVariantCaps", "\"PetiteCaps\"");
ctx.fontVariantCaps = "all-petite-caps";
_assertSame(ctx.fontVariantCaps, "AllPetiteCaps", "ctx.fontVariantCaps", "\"AllPetiteCaps\"");
ctx.fontVariantCaps = "unicase";
_assertSame(ctx.fontVariantCaps, "Unicase", "ctx.fontVariantCaps", "\"Unicase\"");
ctx.fontVariantCaps = "titling-caps";
_assertSame(ctx.fontVariantCaps, "TitlingCaps", "ctx.fontVariantCaps", "\"TitlingCaps\"");
// Setting fontVariantCaps with lower cases and upper cases word.
ctx.fontVariantCaps = "nORmal";
_assertSame(ctx.fontVariantCaps, "Normal", "ctx.fontVariantCaps", "\"Normal\"");
ctx.fontVariantCaps = "smaLL-caps";
_assertSame(ctx.fontVariantCaps, "SmallCaps", "ctx.fontVariantCaps", "\"SmallCaps\"");
ctx.fontVariantCaps = "all-small-CAPS";
_assertSame(ctx.fontVariantCaps, "AllSmallCaps", "ctx.fontVariantCaps", "\"AllSmallCaps\"");
ctx.fontVariantCaps = "pEtitE-caps";
_assertSame(ctx.fontVariantCaps, "PetiteCaps", "ctx.fontVariantCaps", "\"PetiteCaps\"");
ctx.fontVariantCaps = "All-Petite-Caps";
_assertSame(ctx.fontVariantCaps, "AllPetiteCaps", "ctx.fontVariantCaps", "\"AllPetiteCaps\"");
ctx.fontVariantCaps = "uNIcase";
_assertSame(ctx.fontVariantCaps, "Unicase", "ctx.fontVariantCaps", "\"Unicase\"");
ctx.fontVariantCaps = "titling-CAPS";
_assertSame(ctx.fontVariantCaps, "TitlingCaps", "ctx.fontVariantCaps", "\"TitlingCaps\"");
// Setting fontVariantCaps with non-existing font variant.
ctx.fontVariantCaps = "abcd";
_assertSame(ctx.fontVariantCaps, "TitlingCaps", "ctx.fontVariantCaps", "\"TitlingCaps\"");
});
</script>
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<title>OffscreenCanvas test: 2d.text.drawing.style.fontVariant.settings</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/html/canvas/resources/canvas-tests.js"></script>
<h1>2d.text.drawing.style.fontVariant.settings</h1>
<p class="desc">Testing basic functionalities of fontKerning for canvas</p>
<script>
var t = async_test("Testing basic functionalities of fontKerning for canvas");
var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
// Setting fontVariantCaps with lower cases
_assertSame(ctx.fontVariantCaps, "Normal", "ctx.fontVariantCaps", "\"Normal\"");
ctx.fontVariantCaps = "normal";
_assertSame(ctx.fontVariantCaps, "Normal", "ctx.fontVariantCaps", "\"Normal\"");
ctx.fontVariantCaps = "small-caps";
_assertSame(ctx.fontVariantCaps, "SmallCaps", "ctx.fontVariantCaps", "\"SmallCaps\"");
ctx.fontVariantCaps = "all-small-caps";
_assertSame(ctx.fontVariantCaps, "AllSmallCaps", "ctx.fontVariantCaps", "\"AllSmallCaps\"");
ctx.fontVariantCaps = "petite-caps";
_assertSame(ctx.fontVariantCaps, "PetiteCaps", "ctx.fontVariantCaps", "\"PetiteCaps\"");
ctx.fontVariantCaps = "all-petite-caps";
_assertSame(ctx.fontVariantCaps, "AllPetiteCaps", "ctx.fontVariantCaps", "\"AllPetiteCaps\"");
ctx.fontVariantCaps = "unicase";
_assertSame(ctx.fontVariantCaps, "Unicase", "ctx.fontVariantCaps", "\"Unicase\"");
ctx.fontVariantCaps = "titling-caps";
_assertSame(ctx.fontVariantCaps, "TitlingCaps", "ctx.fontVariantCaps", "\"TitlingCaps\"");
// Setting fontVariantCaps with lower cases and upper cases word.
ctx.fontVariantCaps = "nORmal";
_assertSame(ctx.fontVariantCaps, "Normal", "ctx.fontVariantCaps", "\"Normal\"");
ctx.fontVariantCaps = "smaLL-caps";
_assertSame(ctx.fontVariantCaps, "SmallCaps", "ctx.fontVariantCaps", "\"SmallCaps\"");
ctx.fontVariantCaps = "all-small-CAPS";
_assertSame(ctx.fontVariantCaps, "AllSmallCaps", "ctx.fontVariantCaps", "\"AllSmallCaps\"");
ctx.fontVariantCaps = "pEtitE-caps";
_assertSame(ctx.fontVariantCaps, "PetiteCaps", "ctx.fontVariantCaps", "\"PetiteCaps\"");
ctx.fontVariantCaps = "All-Petite-Caps";
_assertSame(ctx.fontVariantCaps, "AllPetiteCaps", "ctx.fontVariantCaps", "\"AllPetiteCaps\"");
ctx.fontVariantCaps = "uNIcase";
_assertSame(ctx.fontVariantCaps, "Unicase", "ctx.fontVariantCaps", "\"Unicase\"");
ctx.fontVariantCaps = "titling-CAPS";
_assertSame(ctx.fontVariantCaps, "TitlingCaps", "ctx.fontVariantCaps", "\"TitlingCaps\"");
// Setting fontVariantCaps with non-existing font variant.
ctx.fontVariantCaps = "abcd";
_assertSame(ctx.fontVariantCaps, "TitlingCaps", "ctx.fontVariantCaps", "\"TitlingCaps\"");
t.done();
});
</script>
// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
// OffscreenCanvas test in a worker:2d.text.drawing.style.fontVariant.settings
// Description:Testing basic functionalities of fontKerning for canvas
// Note:
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
var t = async_test("Testing basic functionalities of fontKerning for canvas");
var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
// Setting fontVariantCaps with lower cases
_assertSame(ctx.fontVariantCaps, "Normal", "ctx.fontVariantCaps", "\"Normal\"");
ctx.fontVariantCaps = "normal";
_assertSame(ctx.fontVariantCaps, "Normal", "ctx.fontVariantCaps", "\"Normal\"");
ctx.fontVariantCaps = "small-caps";
_assertSame(ctx.fontVariantCaps, "SmallCaps", "ctx.fontVariantCaps", "\"SmallCaps\"");
ctx.fontVariantCaps = "all-small-caps";
_assertSame(ctx.fontVariantCaps, "AllSmallCaps", "ctx.fontVariantCaps", "\"AllSmallCaps\"");
ctx.fontVariantCaps = "petite-caps";
_assertSame(ctx.fontVariantCaps, "PetiteCaps", "ctx.fontVariantCaps", "\"PetiteCaps\"");
ctx.fontVariantCaps = "all-petite-caps";
_assertSame(ctx.fontVariantCaps, "AllPetiteCaps", "ctx.fontVariantCaps", "\"AllPetiteCaps\"");
ctx.fontVariantCaps = "unicase";
_assertSame(ctx.fontVariantCaps, "Unicase", "ctx.fontVariantCaps", "\"Unicase\"");
ctx.fontVariantCaps = "titling-caps";
_assertSame(ctx.fontVariantCaps, "TitlingCaps", "ctx.fontVariantCaps", "\"TitlingCaps\"");
// Setting fontVariantCaps with lower cases and upper cases word.
ctx.fontVariantCaps = "nORmal";
_assertSame(ctx.fontVariantCaps, "Normal", "ctx.fontVariantCaps", "\"Normal\"");
ctx.fontVariantCaps = "smaLL-caps";
_assertSame(ctx.fontVariantCaps, "SmallCaps", "ctx.fontVariantCaps", "\"SmallCaps\"");
ctx.fontVariantCaps = "all-small-CAPS";
_assertSame(ctx.fontVariantCaps, "AllSmallCaps", "ctx.fontVariantCaps", "\"AllSmallCaps\"");
ctx.fontVariantCaps = "pEtitE-caps";
_assertSame(ctx.fontVariantCaps, "PetiteCaps", "ctx.fontVariantCaps", "\"PetiteCaps\"");
ctx.fontVariantCaps = "All-Petite-Caps";
_assertSame(ctx.fontVariantCaps, "AllPetiteCaps", "ctx.fontVariantCaps", "\"AllPetiteCaps\"");
ctx.fontVariantCaps = "uNIcase";
_assertSame(ctx.fontVariantCaps, "Unicase", "ctx.fontVariantCaps", "\"Unicase\"");
ctx.fontVariantCaps = "titling-CAPS";
_assertSame(ctx.fontVariantCaps, "TitlingCaps", "ctx.fontVariantCaps", "\"TitlingCaps\"");
// Setting fontVariantCaps with non-existing font variant.
ctx.fontVariantCaps = "abcd";
_assertSame(ctx.fontVariantCaps, "TitlingCaps", "ctx.fontVariantCaps", "\"TitlingCaps\"");
t.done();
});
done();
...@@ -842,4 +842,59 @@ ...@@ -842,4 +842,59 @@
ctx.fontKerning = "NONE"; ctx.fontKerning = "NONE";
@assert ctx.fontKerning === "None"; @assert ctx.fontKerning === "None";
- name: 2d.text.drawing.style.fontVariant.settings
desc: Testing basic functionalities of fontKerning for canvas
testing:
- 2d.text.drawing.style.fontVariantCaps
code: |
// Setting fontVariantCaps with lower cases
@assert ctx.fontVariantCaps === "Normal";
ctx.fontVariantCaps = "normal";
@assert ctx.fontVariantCaps === "Normal";
ctx.fontVariantCaps = "small-caps";
@assert ctx.fontVariantCaps === "SmallCaps";
ctx.fontVariantCaps = "all-small-caps";
@assert ctx.fontVariantCaps === "AllSmallCaps";
ctx.fontVariantCaps = "petite-caps";
@assert ctx.fontVariantCaps === "PetiteCaps";
ctx.fontVariantCaps = "all-petite-caps";
@assert ctx.fontVariantCaps === "AllPetiteCaps";
ctx.fontVariantCaps = "unicase";
@assert ctx.fontVariantCaps === "Unicase";
ctx.fontVariantCaps = "titling-caps";
@assert ctx.fontVariantCaps === "TitlingCaps";
// Setting fontVariantCaps with lower cases and upper cases word.
ctx.fontVariantCaps = "nORmal";
@assert ctx.fontVariantCaps === "Normal";
ctx.fontVariantCaps = "smaLL-caps";
@assert ctx.fontVariantCaps === "SmallCaps";
ctx.fontVariantCaps = "all-small-CAPS";
@assert ctx.fontVariantCaps === "AllSmallCaps";
ctx.fontVariantCaps = "pEtitE-caps";
@assert ctx.fontVariantCaps === "PetiteCaps";
ctx.fontVariantCaps = "All-Petite-Caps";
@assert ctx.fontVariantCaps === "AllPetiteCaps";
ctx.fontVariantCaps = "uNIcase";
@assert ctx.fontVariantCaps === "Unicase";
ctx.fontVariantCaps = "titling-CAPS";
@assert ctx.fontVariantCaps === "TitlingCaps";
// Setting fontVariantCaps with non-existing font variant.
ctx.fontVariantCaps = "abcd";
@assert ctx.fontVariantCaps === "TitlingCaps";
# TODO: shadows, alpha, composite, clip # TODO: shadows, alpha, composite, clip
\ No newline at end of file
...@@ -1343,4 +1343,60 @@ ...@@ -1343,4 +1343,60 @@
@assert ctx.fontKerning === "None"; @assert ctx.fontKerning === "None";
t.done(); t.done();
- name: 2d.text.drawing.style.fontVariant.settings
desc: Testing basic functionalities of fontKerning for canvas
testing:
- 2d.text.drawing.style.fontVariantCaps
code: |
// Setting fontVariantCaps with lower cases
@assert ctx.fontVariantCaps === "Normal";
ctx.fontVariantCaps = "normal";
@assert ctx.fontVariantCaps === "Normal";
ctx.fontVariantCaps = "small-caps";
@assert ctx.fontVariantCaps === "SmallCaps";
ctx.fontVariantCaps = "all-small-caps";
@assert ctx.fontVariantCaps === "AllSmallCaps";
ctx.fontVariantCaps = "petite-caps";
@assert ctx.fontVariantCaps === "PetiteCaps";
ctx.fontVariantCaps = "all-petite-caps";
@assert ctx.fontVariantCaps === "AllPetiteCaps";
ctx.fontVariantCaps = "unicase";
@assert ctx.fontVariantCaps === "Unicase";
ctx.fontVariantCaps = "titling-caps";
@assert ctx.fontVariantCaps === "TitlingCaps";
// Setting fontVariantCaps with lower cases and upper cases word.
ctx.fontVariantCaps = "nORmal";
@assert ctx.fontVariantCaps === "Normal";
ctx.fontVariantCaps = "smaLL-caps";
@assert ctx.fontVariantCaps === "SmallCaps";
ctx.fontVariantCaps = "all-small-CAPS";
@assert ctx.fontVariantCaps === "AllSmallCaps";
ctx.fontVariantCaps = "pEtitE-caps";
@assert ctx.fontVariantCaps === "PetiteCaps";
ctx.fontVariantCaps = "All-Petite-Caps";
@assert ctx.fontVariantCaps === "AllPetiteCaps";
ctx.fontVariantCaps = "uNIcase";
@assert ctx.fontVariantCaps === "Unicase";
ctx.fontVariantCaps = "titling-CAPS";
@assert ctx.fontVariantCaps === "TitlingCaps";
// Setting fontVariantCaps with non-existing font variant.
ctx.fontVariantCaps = "abcd";
@assert ctx.fontVariantCaps === "TitlingCaps";
t.done();
# TODO: shadows, alpha, composite, clip # TODO: shadows, alpha, composite, clip
\ No newline at end of file
...@@ -1020,6 +1020,7 @@ interface OffscreenCanvasRenderingContext2D ...@@ -1020,6 +1020,7 @@ interface OffscreenCanvasRenderingContext2D
getter filter getter filter
getter font getter font
getter fontKerning getter fontKerning
getter fontVariantCaps
getter globalAlpha getter globalAlpha
getter globalCompositeOperation getter globalCompositeOperation
getter imageSmoothingEnabled getter imageSmoothingEnabled
...@@ -1087,6 +1088,7 @@ interface OffscreenCanvasRenderingContext2D ...@@ -1087,6 +1088,7 @@ interface OffscreenCanvasRenderingContext2D
setter filter setter filter
setter font setter font
setter fontKerning setter fontKerning
setter fontVariantCaps
setter globalAlpha setter globalAlpha
setter globalCompositeOperation setter globalCompositeOperation
setter imageSmoothingEnabled setter imageSmoothingEnabled
......
...@@ -987,6 +987,7 @@ Starting worker: resources/global-interface-listing-worker.js ...@@ -987,6 +987,7 @@ Starting worker: resources/global-interface-listing-worker.js
[Worker] getter filter [Worker] getter filter
[Worker] getter font [Worker] getter font
[Worker] getter fontKerning [Worker] getter fontKerning
[Worker] getter fontVariantCaps
[Worker] getter globalAlpha [Worker] getter globalAlpha
[Worker] getter globalCompositeOperation [Worker] getter globalCompositeOperation
[Worker] getter imageSmoothingEnabled [Worker] getter imageSmoothingEnabled
...@@ -1054,6 +1055,7 @@ Starting worker: resources/global-interface-listing-worker.js ...@@ -1054,6 +1055,7 @@ Starting worker: resources/global-interface-listing-worker.js
[Worker] setter filter [Worker] setter filter
[Worker] setter font [Worker] setter font
[Worker] setter fontKerning [Worker] setter fontKerning
[Worker] setter fontVariantCaps
[Worker] setter globalAlpha [Worker] setter globalAlpha
[Worker] setter globalCompositeOperation [Worker] setter globalCompositeOperation
[Worker] setter imageSmoothingEnabled [Worker] setter imageSmoothingEnabled
......
...@@ -972,6 +972,7 @@ interface CanvasRenderingContext2D ...@@ -972,6 +972,7 @@ interface CanvasRenderingContext2D
getter filter getter filter
getter font getter font
getter fontKerning getter fontKerning
getter fontVariantCaps
getter globalAlpha getter globalAlpha
getter globalCompositeOperation getter globalCompositeOperation
getter imageSmoothingEnabled getter imageSmoothingEnabled
...@@ -1045,6 +1046,7 @@ interface CanvasRenderingContext2D ...@@ -1045,6 +1046,7 @@ interface CanvasRenderingContext2D
setter filter setter filter
setter font setter font
setter fontKerning setter fontKerning
setter fontVariantCaps
setter globalAlpha setter globalAlpha
setter globalCompositeOperation setter globalCompositeOperation
setter imageSmoothingEnabled setter imageSmoothingEnabled
...@@ -5668,6 +5670,7 @@ interface OffscreenCanvasRenderingContext2D ...@@ -5668,6 +5670,7 @@ interface OffscreenCanvasRenderingContext2D
getter filter getter filter
getter font getter font
getter fontKerning getter fontKerning
getter fontVariantCaps
getter globalAlpha getter globalAlpha
getter globalCompositeOperation getter globalCompositeOperation
getter imageSmoothingEnabled getter imageSmoothingEnabled
...@@ -5735,6 +5738,7 @@ interface OffscreenCanvasRenderingContext2D ...@@ -5735,6 +5738,7 @@ interface OffscreenCanvasRenderingContext2D
setter filter setter filter
setter font setter font
setter fontKerning setter fontKerning
setter fontVariantCaps
setter globalAlpha setter globalAlpha
setter globalCompositeOperation setter globalCompositeOperation
setter imageSmoothingEnabled setter imageSmoothingEnabled
......
...@@ -940,6 +940,7 @@ Starting worker: resources/global-interface-listing-worker.js ...@@ -940,6 +940,7 @@ Starting worker: resources/global-interface-listing-worker.js
[Worker] getter filter [Worker] getter filter
[Worker] getter font [Worker] getter font
[Worker] getter fontKerning [Worker] getter fontKerning
[Worker] getter fontVariantCaps
[Worker] getter globalAlpha [Worker] getter globalAlpha
[Worker] getter globalCompositeOperation [Worker] getter globalCompositeOperation
[Worker] getter imageSmoothingEnabled [Worker] getter imageSmoothingEnabled
...@@ -1007,6 +1008,7 @@ Starting worker: resources/global-interface-listing-worker.js ...@@ -1007,6 +1008,7 @@ Starting worker: resources/global-interface-listing-worker.js
[Worker] setter filter [Worker] setter filter
[Worker] setter font [Worker] setter font
[Worker] setter fontKerning [Worker] setter fontKerning
[Worker] setter fontVariantCaps
[Worker] setter globalAlpha [Worker] setter globalAlpha
[Worker] setter globalCompositeOperation [Worker] setter globalCompositeOperation
[Worker] setter imageSmoothingEnabled [Worker] setter imageSmoothingEnabled
......
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