private static @Nullable FontInfo doGetFontAbleToDisplay(int codePoint, float size, @JdkConstants.FontStyle int style,
                                                           @NotNull String defaultFontFamily, String regularSubFamily, String boldSubFamily,
                                                           boolean useLigatures, FontRenderContext context, boolean disableFontFallback,
                                                           boolean useTypographicNames) {
    if (style < 0 || style > 3) style = Font.PLAIN;
    synchronized (lock) {
      FallBackInfo fallBackInfo = null;
      if (useTypographicNames == ourLastTypographicNames &&
          defaultFontFamily.equals(ourLastFontFamily) &&
          (!useTypographicNames ||
           Objects.equals(regularSubFamily, ourLastRegularSubFamily) && Objects.equals(boldSubFamily, ourLastBoldSubFamily))) {
        fallBackInfo = ourLastFallBackInfo[style];
      }
      else {
        ourLastTypographicNames = useTypographicNames;
        ourLastFontFamily = defaultFontFamily;
        ourLastRegularSubFamily = regularSubFamily;
        ourLastBoldSubFamily = boldSubFamily;
        Arrays.fill(ourLastFallBackInfo, null);
      }
      if (fallBackInfo == null) {
        if (useTypographicNames) {
          Font font = FontFamilyService.getFont(defaultFontFamily, regularSubFamily, boldSubFamily, style);
          fallBackInfo = ourMainUsedFonts.computeIfAbsent(font, FallBackInfo::new);
        }
        else {
          LinkedHashMap<String, FallBackInfo> usedFonts = ourUsedFonts[style];
          fallBackInfo = usedFonts.get(defaultFontFamily);
          if (fallBackInfo == null) {
            fallBackInfo = new FallBackInfo(defaultFontFamily, style);
            usedFonts.put(defaultFontFamily, fallBackInfo);
          }
        }
        ourLastFallBackInfo[style] = fallBackInfo;
      }
      return fallBackInfo.canDisplay(codePoint, disableFontFallback) ? fallBackInfo.getFontInfo(size, useLigatures, context) : null;
    }
  }
private static @Nullable FontInfo doGetFontAbleToDisplay(int codePoint, float size, @JdkConstants.FontStyle int style,
                                                           @NotNull String defaultFontFamily, String regularSubFamily, String boldSubFamily,
                                                           boolean useLigatures, FontRenderContext context, boolean disableFontFallback,
                                                           boolean useTypographicNames)