簡體   English   中英

Java:如何讀取字體文件的屬性?

[英]Java: How to read the properties of a font file?

我有一個用戶上傳字體(TTF和OTF)的應用程序,我想將它們分為常規,斜體,粗體和粗體斜體。 在Java中有沒有辦法告訴字體是什么樣的風格?

更新: 這個答案似乎是如何在PHP中完成的

下面的代碼說“HelveticaNeueLTW1G_Bd.otf”的樣式是“普通的”,但我希望它以粗體字形式報告。

File f = new File("/Volumes/Files/work/workspace/FontTest/src/com/opensoft/fonttest/", "HelveticaNeueLTW1G_Bd.otf");
System.out.println(f);
InputStream inputStream = new FileInputStream(f);
Font createdFont = Font.createFont(Font.TRUETYPE_FONT, inputStream);
System.out.println(createdFont);
System.out.println(createdFont.getAttributes());

產量

java.awt.Font[family=HelveticaNeueLTW1G-Bd,name=HelveticaNeueLTW1G-Bd,style=plain,size=1]
map of {family="HelveticaNeueLTW1G-Bd", weight=1.0*, width=1.0*, posture=0.0*, size=1.0, transform=null*, superscript=0*, tracking=0.0*[btx=null, ctx=null]}

謝謝!

我很確定這里的問題是字體的名稱和樣式不同於可以在運行時通過的轉換(例如斜體粗體 )。 deriveFont 有效地,一開始設計為粗體的字體在使用粗體變體時會變得更加粗體。

因此,Java將簡單地報告該字體的默認加載變體是'not(using the)bold(variant)'。

使用Font boldFont = createdFont.deriveFont(Font.BOLD); 如果字體中缺少粗體樣式屬性,我不確定它是否有效。

無法用直接的Java來解決它,但您可以使用此答案中記錄的命令行工具。

暫無
暫無

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

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