private static void collectFontNames(@NotNull Set<? super String> result,
                                         @NotNull CharSequence text,
                                         int startOffset,
                                         int endOffset,
                                         @NotNull FontFallbackIterator ffi) {
      if (startOffset >= endOffset) return;
      ffi.start(text, startOffset, endOffset);
      while (!ffi.atEnd()) {
        ProgressManager.checkCanceled();
        Font font = ffi.getFont();
        List<String> components = null;
        try {
          components = AccessingInternalJdkFontApi.getRelevantComponents(font, text, ffi.getStart(), ffi.getEnd());
        }
        catch (Throwable e) {
          LOG.debug(e);
        }
        if (components == null) {
          result.add(font.getFontName() + " (*)");
        }
        else {
          result.addAll(components);
        }
        ffi.advance();
      }
    }
private static void collectFontNames(@NotNull Set<? super String> result,
                                         @NotNull CharSequence text,
                                         int startOffset,
                                         int endOffset,
                                         @NotNull FontFallbackIterator ffi)