code: def read_cz_sem(fh, byteorder, dtype, count, offsetsize):
      
      result = {'': ()}
      key = None
      data = bytes2str(stripnull(fh.read(count)))
      for line in data.splitlines():
          if line.isupper():
              key = line.lower()
          elif key:
              try:
                  name, value = line.split('=')
              except ValueError:
                  try:
                      name, value = line.split(':', 1)
                  except Exception:
                      continue
              value = value.strip()
              unit = ''
              try:
                  v, u = value.split()
                  number = astype(v, (int, float))
                  if number != v:
                      value = number
                      unit = u
              except Exception:
                  number = astype(value, (int, float))
                  if number != value:
                      value = number
                  if value in ('No', 'Off'):
                      value = False
                  elif value in ('Yes', 'On'):
                      value = True
              result[key] = (name.strip(), value)
              if unit:
                  result[key] += (unit,)
              key = None
          else:
              result[''] += (astype(line, (int, float)),)
      return result
docs: Read Zeiss SEM tag and return as dict.
  
      See https://sourceforge.net/p/gwyddion/mailman/message/29275000/ for
      unnamed values.