2

我正在尝试安装 PhpStorm,经过长篇大论,看起来我有一些不好的字体妨碍了 Java。

我对 Java 完全陌生,但我发现这段代码可以遍历我的字体并找到坏的。我已经修改它以删除坏字体,但它不会删除。

import java.io.File;
import java.awt.Font;
import java.awt.GraphicsEnvironment;

public class myFontCheck {
  public static void main(String[] args) {
    Font[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
    for (int i = 0; i < fonts.length; i++) {
      final Font font = fonts[i];
      final String name = font.getFontName();

      if (font.canDisplay('a') &&
        font.canDisplay('z') &&
        font.canDisplay('A') &&
        font.canDisplay('Z') &&
        font.canDisplay('0') &&
        font.canDisplay('1')) {
        //System.out.println(" OK.");
      } else {
        File file = new File("c:\\Windows\\Fonts\\" + name + ".ttf");
        if(file.exists()) {
          System.out.println("Bad Font: " + name);
          file.delete();
        }
      }
    }
  }
}

我假设这是文件权限冲突,但我不知道如何更改权限。我需要以管理员身份运行它吗?

或者..你能告诉我如何将坏文件打开到资源管理器窗口中,以便我可以“全选”吗?

4

1 回答 1

1
if (font.canDisplay('a') &&
    font.canDisplay('z') &&
    font.canDisplay('A') &&
    font.canDisplay('Z') &&
    font.canDisplay('0') &&
    font.canDisplay('1')) {
    //System.out.println(" OK.");
  } else {
    System.out.println("Bad Font: " + name);
    File file = new File("c:\\Windows\\Fonts\\" + name + ".ttf");
    file.delete();
  }

取消注释“坏字体行”。运行应用程序时是否会打印出任何内容?我怀疑不是,因为尽管您可能不喜欢字体的显示方式,但 canDisplay 可能会返回 true。

或者,“新文件”的字符串构造可能会导致某些错误。我也会尝试将其打印出来,并检查该文件的文件系统。

有点像这样:

  } else {
    System.out.println("Bad Font: " + name);
    String fn = "c:\\Windows\\Fonts\\" + name + ".ttf";
    System.out.println("Trying to delete: " + fn);
    File file = new File(fn);
    file.delete();
  }
于 2013-04-08T00:51:57.893 回答