class_docstr: The ``Feat`` table is used exclusively by the Graphite shaping engine
  to store features and possible settings specified in GDL. Graphite features
  determine what rules are applied to transform a glyph stream.
  
  Not to be confused with ``feat``, or the OpenType Layout tables
  ``GSUB``/``GPOS``.
class_docstr_tok: ["The","``","Feat","``","table","is","used","exclusively","by","the","Graphite","shaping","engine","to","store","features","and","possible","settings","specified","in","GDL",".","Graphite","features","determine","what","rules","are","applied","to","transform","a","glyph","stream",".","Not","to","be","confused","with","``","feat","``",",","or","the","OpenType","Layout","tables","``","GSUB","``","\/","``","GPOS","``","."]
code: def compile(self, ttFont):
      fdat = b""
      vdat = b""
      offset = 0
      for f, v in sorted(
          self.features.items(), key=lambda x: x[1].index
      ):
          fnum = grUtils.tag2num(f)
          if self.version >= 2.0:
              fdat += struct.pack(
                  ">LHHLHH",
                  grUtils.tag2num(f),
                  len(v.settings),
                  0,
                  offset * 4 + 12 + 16 * len(self.features),
                  v.flags,
                  v.label,
              )
          elif fnum > 65535:  # self healing for alphabetic ids
              self.version = 2.0
              return self.compile(ttFont)
          else:
              fdat += struct.pack(
                  ">HHLHH",
                  grUtils.tag2num(f),
                  len(v.settings),
                  offset * 4 + 12 + 12 * len(self.features),
                  v.flags,
                  v.label,
              )
          for s, l in sorted(
              v.settings.items(),
              key=lambda x: (-1, x[1]) if x[0] == v.default else x,
          ):
              vdat += struct.pack(">HH", s, l)
          offset += len(v.settings)
      hdr = sstruct.pack(Feat_hdr_format, self)
      return (
          hdr
          + struct.pack(">HHL", len(self.features), 0, 0)
          + fdat
          + vdat
      )
  
file_path: catboost/contrib/python/fonttools/fontTools/ttLib/tables/F__e_a_t.py
imports: from fontTools.misc import sstruct
  from fontTools.misc.fixedTools import floatToFixedToStr
  from fontTools.misc.textTools import safeEval
  from .None import DefaultTable
  from .None import grUtils
  import struct
label_desc: Use image node_id 3 for calling the table_F__e_a_t obj's underlying member method code with example usage: obj.compile(ttFont) and returns: unknown, self