Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get font file as a File object or get its path

I have a Font object in Java for a font file. I need to convert that object to a File object or get the font file path.

Is there a way to do this?


What I'm doing here is calling a method from an external library that loads a font file to use it in writing:

loadTTF(PDDocument pdfFile, File fontfile);

So I wanted to let the user choose a font from the ones defined in his operating system using :

GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
Font[] fonts = e.getAllFonts();

Then when the user chooses a font, I pass it to the loadTTF(...) method to load it.

Is there a bad practice here?

like image 312
Brad Avatar asked Oct 25 '25 20:10

Brad


1 Answers

// use reflection on Font2D (<B>PhysicalFont.platName</B>) e.g.
Font f = new Font("Courier New", 0, 10);

Font2D f2d = FontManager.findFont2D(f.getFontName(), f.getStyle(),      
               FontManager.LOGICAL_FALLBACK).handle.font2D;

Field platName = PhysicalFont.class.getDeclaredField("platName");
platName.setAccessible(true);
String fontPath = (String)platName.get(f2d);
platName.setAccessible(false);

// that's it..
System.out.println(fontPath);
like image 57
Gill Avatar answered Oct 28 '25 09:10

Gill



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!