Bug 87122

Summary: Treat color bitmap font as scalable
Product: fontconfig Reporter: Jungshik Shin <jungshik.shin>
Component: fc-scanAssignee: fontconfig-bugs
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: freedesktop, mike.fabian
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Jungshik Shin 2014-12-08 21:47:45 UTC
Blink blocks all the non-scalable fonts), color or not. Currently, fontconfig treats any bitmap font as non-scalable.

As a result, Blink (used by Chrome and Opera) rejects color fonts in Google's proposed color bitmap font format (such as Noto Color Emoji). 

By treating color bitmap fonts as scalable, we can get 'Noto Color Emoji' and other color fonts in the same format to be accepted by Blink. 

An alternative is to change fontconfig to introduce 'FC_COLOR' and let clients such as Blink accept color fonts (bitmap or not). My patch for that is http://goo.gl/rDRffN

In the meantime, fontconfig on ChromeOS uses  the following addition to local.conf to treat Noto Color Emoji as scalable.  See http://crbug.com/386772#c15 

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

  <match target="scan">
    <test name="family">
      <string>Noto Color Emoji</string>
    </test>
    <edit name="scalable" mode="assign">
      <bool>true</bool>
    </edit>
  </match>

  <match target="pattern">
    <test name="prgname">
      <string>chrome</string>
    </test>
    <edit name="family" mode="prepend_first">
      <string>Noto Color Emoji</string>
    </edit>
  </match>

</fontconfig>
Comment 1 Behdad Esfahbod 2014-12-14 21:57:52 UTC
Fixed in:

commit 66db69a6d991945f96feb1da683a2e04ea396842
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Sun Dec 14 13:55:53 2014 -0800

    Treat color fonts as scalable
    
    All color fonts are designed to be scaled, even if they only have
    bitmap strikes.  Client is responsible to scale the bitmaps.  This
    is in constrast to non-color strikes...
    
    Clients can still use FC_OUTLINE to distinguish bitmap vs outline
    fonts.  Previously FC_OUTLINE and FC_SCALABLE always had the same
    value.  Now FC_SCALABLE is set to (FC_OUTLINE || FC_COLOR).
    
    Fixes:
    https://bugs.freedesktop.org/show_bug.cgi?id=87122

commit dbc7c4a2cfe1ba6c537957b3b68b625403ca99fd
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Sun Dec 14 13:39:41 2014 -0800

    Add FC_COLOR
    
    Only adds "color" to pattern if FreeType version supports color.
    
    Based on patch from Jungshik Shin.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.