[css-font-loading] load, check and testing for character coverage

I have a few questions/comments about load and check and the tests that
are done for character coverage using the sample text string.

1

The “find the matching font faces” algorithm will not include a matching
font face in its return value if its unicode-range does not include at
least one of the characters in the sample text string.  The algorithm
reads like it is written assuming that all font faces have a
unicode-range attribute, but that isn’t true for system fonts.  Should
we be checking the actual cmap of the font to see whether we have a
glyph for a given character?

For example, assuming Helvetica is a system font:

  document.fonts.check("16px Helvetica", "上")

Should this return false, because the font does not have a glyph for the
specified character, or should it return true as if we treated system
fonts as having an unspecified unicode-range (and therefore covering all
characters)?

2

For that matter, should a font’s cmap ever affect how load or check
operate?  If I did:

  var f = new FontFace("Test", "url(Ahem.ttf)");
  document.fonts.clear();
  document.fonts.add(f);
  f.load().then(function() {
    alert(document.fonts.check("16px Test", "上"));
  });

per spec I think this should alert true.  It’s a little confusing, since
the author might think check is actually checking whether we will be
able to render the given string without using a fallback font, but
really what it’s doing is determining whether attempting to render that
string will need to kick off any loads.

I don’t know if the name “check” describes the behaviour of the method
clearly enough.

3

In line with the check method meaning “will loads be kicked off”, I
think it should return true if the list of matching font faces is empty.

-- 
Cameron McCormack ≝ http://mcc.id.au/

Received on Friday, 1 May 2015 01:41:26 UTC