code: def getNumPoints_(glyph):
      NUM_PHANTOM_POINTS = 4
  
      if glyph.isComposite():
          return len(glyph.components) + NUM_PHANTOM_POINTS
      elif glyph.isVarComposite():
          count = 0
          for component in glyph.components:
              count += component.getPointCount()
          return count + NUM_PHANTOM_POINTS
      else:
          # Empty glyphs (eg. space, nonmarkingreturn) have no "coordinates" attribute.
          return (
              len(getattr(glyph, "coordinates", []))
              + NUM_PHANTOM_POINTS
          )
  
imports: from collections import UserDict, deque
  from functools import partial
  from fontTools.misc import sstruct
  from fontTools.misc.textTools import safeEval
  from .None import DefaultTable
  import array
  import itertools
  import logging
  import struct
  import sys
  import fontTools.ttLib.tables.TupleVariation
label_desc: Use image node_id 10 for calling the table__g_v_a_r obj's underlying member method code with example usage: obj.getNumPoints_(glyph) and returns: unknown, unknown, unknown