のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

fontreport type 6 not yet sypported.

type6 not yet supported

$ fontreport ./Roboto-Regular.ttf
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 4: type 6 not yet supported.
Warning: Lookup table 8: type 6 not yet supported.
Warning: Lookup table 8: type 6 not yet supported.
Warning: Lookup table 8: type 6 not yet supported.
Warning: Lookup table 8: type 6 not yet supported.
Warning: Lookup table 8: type 6 not yet supported.
Warning: Lookup table 8: type 6 not yet supported.
Warning: Lookup table 8: type 6 not yet supported.
Warning: Lookup table 8: type 6 not yet supported.
Warning: Lookup table 8: type 6 not yet supported.
Warning: Lookup table 8: type 6 not yet supported.
Warning: Lookup table 8: type 6 not yet supported.
Warning: Lookup table 8: type 6 not yet supported.
Warning: Lookup table 32: type 6 not yet supported.
 def _ParseGSUB(self):
    if 'GSUB' not in self.ttf:
      return

    if self.ttf['GSUB'].table.FeatureList:
      scripts = [set() for unused_x
                 in range(self.ttf['GSUB'].table.FeatureList.FeatureCount)]
    else:
      scripts = []
    # Find scripts defined in a font
    for script in self.ttf['GSUB'].table.ScriptList.ScriptRecord:
      if script.Script.DefaultLangSys:
        for idx in script.Script.DefaultLangSys.FeatureIndex:
          scripts[idx].add(script.ScriptTag)
      for lang in script.Script.LangSysRecord:
        for idx in lang.LangSys.FeatureIndex:
          scripts[idx].add(script.ScriptTag + '-' + lang.LangSysTag)

    # Find all featrures defined in a font
    if hasattr(self.ttf['GSUB'].table, 'FeatureRecord'):
      for idx, feature in enumerate(
          self.ttf['GSUB'].table.FeatureList.FeatureRecord):
        key = (feature.FeatureTag, tuple(feature.Feature.LookupListIndex))
        if key not in self.features:
          self.features[key] = set()
        self.features[key].update(scripts[idx])

    if not self.ttf['GSUB'].table.LookupList:
      return
    for idx, lookup in enumerate(self.ttf['GSUB'].table.LookupList.Lookup):
      for sub in lookup.SubTable:
        if sub.LookupType == 7:
          sub = sub.ExtSubTable
        if sub.LookupType == 1:
          for k, v in sub.mapping.items():
            self.substitutes.add(((k,), ((v,),), idx, 1))
        elif sub.LookupType == 2:
          for k, v in sub.mapping.items():
            self.substitutes.add(((k,), (tuple(v),), idx, 1))
        elif sub.LookupType == 3:
          for k, v in sub.alternates.items():
            self.substitutes.add(((k,), tuple((x,) for x in v), idx, 3))
        elif sub.LookupType == 4:
          for key, value in sub.ligatures.items():
            for component in value:
              sequence = tuple([key] + component.Component)
              glyph = component.LigGlyph
              self.substitutes.add((sequence, ((glyph,),), idx, 4))
        else:
          print('Warning: Lookup table %d: type %s not yet supported.' % ( <===ここ
              idx, sub.LookupType))