QA/Firefox3.1/FontFace TestStatus: Difference between revisions

 
(19 intermediate revisions by the same user not shown)
Line 11: Line 11:


These tests were executed after applying '''patchv.0.9h''' from [https://bugzilla.mozilla.org/show_bug.cgi?id=441473 bug441473]
These tests were executed after applying '''patchv.0.9h''' from [https://bugzilla.mozilla.org/show_bug.cgi?id=441473 bug441473]
Tests marked with star (*) shows that some unexpected features were found. See [[QA/Firefox3.1/FontFace_TestStatus#Possible_Risks| Possible Risks]] section for details.


== Tests on Mac OS X ==
== Tests on Mac OS X ==
Line 79: Line 77:
|style="background:#ffaaaa;" |Fails
|style="background:#ffaaaa;" |Fails
|For example, when you apply <em> to a text rendered with downloaded fonts, the italic FACE IS CALCULATED. However, when you apply <em> to a text rendered with font in user's environment, the ITALIC FACE of that font-family is used. The former calculated face and latter italic face is different, so they are rendered slightly differently.
|For example, when you apply <em> to a text rendered with downloaded fonts, the italic FACE IS CALCULATED. However, when you apply <em> to a text rendered with font in user's environment, the ITALIC FACE of that font-family is used. The former calculated face and latter italic face is different, so they are rendered slightly differently.
|-
|downloadable-font-opentype.html
|Check if the opentype fonts are rendered correctly
|Passes
|
|-
|-
|downloadable-font-printtest.html
|downloadable-font-printtest.html
Line 91: Line 94:
|}
|}


LoadTest (done on patch v.0.9d ... not on patch v.0.9h yet)
LoadTest (stress test)
* even 100 @font-face rules per page seems to be pretty scalable. When 210 (230 for the first page you load) or more @font-face rules are used in a document, firefox will crash.
* even 100 @font-face rules per page seems to be pretty scalable. A web page with 200 @font-face rules will be loaded in around 5 seconds. When 250 or more @font-face rules are used in a document, firefox will crash.


== Tests on Windows XP SP3 ==
== Tests on Windows XP SP3 ==
Line 150: Line 153:
|downloadable-font-leavepagetest.html
|downloadable-font-leavepagetest.html
|Check if the firefox crashes when leaving the page during the font download
|Check if the firefox crashes when leaving the page during the font download
|style="background:#ff0000;" |Crashes
|style="background:#ffaaaa;" |Sometimes Crashes
|This page will redirect to www.google.com while the font download is processed. Maybe slightly different from [[https://bugzilla.mozilla.org/show_bug.cgi?id=451462 bug451462 ]]
|Crash happens occasionally. It is not restricted to when firefox is invoked with -reftest option. When you load leavepagetest.html and loadtest.html back and force, it will crash after several tries.
 
When this page is loaded, the following assertion is displayed:
 
ASSERTION: Null pres shell: 'mShell', file ../../dist/include/layout/nsPresContext.h, line 185
 
|-
|-
|downloadable-font-ligature.html
|downloadable-font-ligature.html
Line 161: Line 169:
|Check how much downloadable fonts can be handled in a page without any crash
|Check how much downloadable fonts can be handled in a page without any crash
|style="background:#ffdead;" |Sometimes fails
|style="background:#ffdead;" |Sometimes fails
|Layout bug ([[https://bugzilla.mozilla.org/show_bug.cgi?id=441743#33 bug441473 #33]])
|Layout bug [[https://bugzilla.mozilla.org/show_bug.cgi?id=441743#33 bug441473 #33]]
It seem to happen when it fails to download the font before the first rendering. But I'm not sure when it happens. The place it happens changes every time.
It seem to happen when it fails to download the font before the first rendering. But I'm not sure when it happens. The place it happens changes every time.
|-
|-
Line 168: Line 176:
|style="background:#ffaaaa;" |Fails
|style="background:#ffaaaa;" |Fails
|For example, when you apply <em> to a text rendered with downloaded fonts, the italic FACE IS CALCULATED. However, when you apply <em> to a text rendered with font in user's environment, the ITALIC FACE of that font-family is used. The former calculated face and latter italic face is different, so they are rendered slightly differently.
|For example, when you apply <em> to a text rendered with downloaded fonts, the italic FACE IS CALCULATED. However, when you apply <em> to a text rendered with font in user's environment, the ITALIC FACE of that font-family is used. The former calculated face and latter italic face is different, so they are rendered slightly differently.
|-
|downloadable-font-opentype.html
|Check if the OpenType fonts are rendered correctly
|style="background:#ffaaaa;" |Fails
|OpenType font is ignored. Default font is used.
|-
|-
|downloadable-font-printtest.html
|downloadable-font-printtest.html
Line 180: Line 193:
|}
|}


LoadTest
LoadTest (stress test)
* 20 @font-face rules per page is pretty scalable. When you scroll the page or do some action during the downloading and rendering of a font, rendering will take a lot more time. So if more than 50 @font-face rules are used, it would take too much time for a user to wait (nearly 10 seconds, but not measured)
* On Windows, it seems even more scalable. A web page with 100 @font-face rules will be loaded in around 1 second. But when more than 150 @font-face rules are used in a single page, it takes much more time to load. A web page with 200 @font-face rules will be loaded in around 20 seconds, which is a lot more than that on Mac.
* It does not crash even if a page had more than 1000 @font-face rules, but it would take more than 5 minutes until the text is rendered, which is not endurable for general use.
* It does not crash even if a page had more than 1000 @font-face rules, but it would take more than 5 minutes until the text is rendered, which is not endurable for general use.
** The more @font-face rules you have in a page, the more time is needed to its rendering. It seems that the time it takes is O(n^2) or something


= Planned (but not executed) Tests =
= Planned (but not executed) Tests =
Line 189: Line 201:
(Tests Not Executed Yet)
(Tests Not Executed Yet)


* OpenType Font test on Windows
== Unicode-Range Tests ==
** Some OpenType fonts cannot be rendered only when using @font-face rules. See xyz for details.
 
** Test case is not ready yet since we still cannot find a proper OpenType font for this test. This is due to the font license issues.
* Basic Tests
** single code point
*** ex. U+A5, U+301C
** interval value
*** ex. U+3040-30FF, U+999-998 (does this fail?)
* What happens if I put many 0s before the number?
** ex. U+F, U+0F, U+00F, U+000F, U+00000000F, ... do they mean the same thing?
* What happens if I use ? in the front/middle?
** ex. U+?4, U+3?5, ...
* What happens if I use multiple unicode-range rules to consist a single font-family?
** ex. @font-face{ font-family:testA; src:url(fontA.ttf); unicode-range:U+0-U+2FF; } @font-face{ font-family:testA; src:url(fontB.otf); unicode-range:U+300-U+FFF }
* What happens if I specified only a single character in the rule and tried to display other character? Would there be a fallback function?
** ex. @font-face { font-family:smallA; src:url(smallA.ttf); unicode-range:U+1; }
** <span class="font-family:smallA">ABC</span>?
* What happens if the specified font did not have a character of the specified unicode range? Does it display nothing? Would there be a fallback function?
 
== CSS Mutation from JavaScript tests ==
 
* What happens if you download the same font again? Would it use cache?
* Is it possible to change the DOM tree of other documents?
** Is downloading another font for other documents prohibited? or is it allowed?
* Consider what will happen when 2 pages try to change the DOM of each other
** stateful


= Possible Risks =
= Possible Risks =
Line 264: Line 298:
== Bugs found after applying patch v.0.9f ==
== Bugs found after applying patch v.0.9f ==


* Graphic bug when using the same downloadable font previously used in a different page
* <strike>Graphic bug when using the same downloadable font previously used in a different page</strike>
** For details, see [https://bugzilla.mozilla.org/show_bug.cgi?id=441473#c66 bug441473 #66]
** <strike>For details, see [https://bugzilla.mozilla.org/show_bug.cgi?id=441473#c66 bug441473 #66]</strike>
* Firefox will crash when different types of src:url()s are used in more than two @font-face rules in a single page
* <strike>Firefox will crash when different types of src:url()s are used in more than two @font-face rules in a single page</strike>
** When you use more than two @font-face rule with the following url()s, it will crash firefox
** <strike>When you use more than two @font-face rule with the following url()s, it will crash firefox</strike>
*** @font-face RULE1 with src:url(A) /// A: absolute URL, violates same-origin restriction
*** <strike>@font-face RULE1 with src:url(A) /// A: absolute URL, violates same-origin restriction</strike>
*** @font-face RULE2 with src:url(B) /// B: relative URL, does not violate same-origin restriction
*** @<strike>font-face RULE2 with src:url(B) /// B: relative URL, does not violate same-origin restriction</strike>
* It takes much more time to load a font than it used to
* <strike>It takes much more time to load a font than it used to</strike>
** As a consequence, the possibility of download failure increased
** <strike>As a consequence, the possibility of download failure increased</strike>
** Unfortunately, I didn't take any statistics, so I can't compare them by exact numbers
** <strike>Unfortunately, I didn't take any statistics, so I can't compare them by exact numbers</strike>
 
They were fixed in patch v.0.9h :-)


== Suspected Features ==
== Suspected Features ==
193

edits