簡體   English   中英

jdk7:sun.font.fontManager 替換/如何從 fontname 獲取文件名信息

[英]jdk7: sun.font.fontManager replacement/how to get filename information from fontname

使用 Oracle(Sun) JDK6 並嘗試遷移到 Oracle JDK7

我正在使用sun.awt.GraphicsEnvironment來查找所有系統字體,以便使用它們來更改我的 pdf 文件中使用的 pdf 字體。 這是我正在使用的確切代碼:

GraphicsEnvironment gEnv = GraphicsEnvironment.getLocalGraphicsEnvironment();

// get all system fonts
final Font[] fonts = gEnv.getAllFonts();

之后我需要在系統上獲取確切的字體文件路徑,所以我使用:

FontManager.getFontPath(true) + "/" +
               FontManager.getFileNameForFontName(font_name);

現在的問題是, sun.font.FontManager不再是一個類, sun.font.FontManager被轉換成了一個接口。 我在網上搜索並提出了一些我不滿意的解決方案,我正在尋找其他想法來幫助解決我的問題。

我找到的解決方案:

  1. 在 Java 6 而不是 Java 7 上部署我的項目(不推薦,因為我使用了 Java 7 中的一些新功能)。
  2. 我在網上找到了 FontManager 類的代碼,但使用它需要包含很多其他類/接口,而且這個過程似乎很愚蠢且耗時。 如果我被允許使用該代碼,我也不會,因為它是 Sun 公司的專有代碼。

我需要的是: *一種在系統上找到確切字體文件路徑的方法*. 歡迎所有想法。

您不是說您使用的是哪個 JDK(Oracle、OpenJDK 等)。 可能你有

FontManagerFactory.getInstance()

可用的。 或者接口實現Win32FontManager (如果你在 Windows 上)?

此代碼適用於 Windows 10 和 IBM Java 8

sun.font.SunFontManager.getInstance().getPlatformFontPath(true)

但在 macOS 11 和 AdoptOpenJDK 8/11 上,返回空字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM