docstr: Returns encoding characteristics for a row.
code: def _row_characteristics(row):
      """Returns encoding characteristics for a row."""
      longWords = False
  
      chars = 0
      i = 1
      for v in row:
          if v:
              chars += i
          if not (-128 <= v <= 127):
              chars += i * 0b0010
          if not (-32768 <= v <= 32767):
              longWords = True
              break
          i <<= 4
  
      if longWords:
          # Redo; only allow 2byte/4byte encoding
          chars = 0
          i = 1
          for v in row:
              if v:
                  chars += i * 0b0011
              if not (-32768 <= v <= 32767):
                  chars += i * 0b1100
              i <<= 4
  
      return chars
  
imports: from fontTools.misc.roundTools import noRound, otRound
  from fontTools.misc.intTools import bit_count
  from fontTools.ttLib.tables import otTables
  from fontTools.varLib.models import supportScalar
  from fontTools.varLib.builder import buildVarRegionList, buildVarStore, buildVarRegion, buildVarData
  from functools import partial
  from collections import defaultdict
  from heapq import heappush, heappop
label_desc: Use image node_id 3 for calling the _EncodingDict obj's underlying member method code with example usage: obj._row_characteristics(row) and returns: chars