Tôi không thể tải một phông chữ từ một S3 InputStream trong JRE 8. Tôi không có vấn đề nếu một hệ thống được cài đặt với JRE 7, JDK 7, hoặc thậm chí JDK 8.Không thể tải phông chữ trong JRE 8
val fontInputStream = s3Client.getObject(bucketName, objectKey).getObjectContent
val customFont = Font.createFont(Font.TRUETYPE_FONT, fontInputStream).deriveFont(Font.TRUETYPE_FONT, 20F)
các lỗi mà tôi nhận được là
Exception in thread "main" java.io.IOException: Problem reading font data.
at java.awt.Font.createFont0(Font.java:1000)
at java.awt.Font.createFont(Font.java:877)
at Main$.delayedEndpoint$Main$1(Main.scala:31)
at Main$delayedInit$body.apply(Main.scala:11)
at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App$$anonfun$main$1.apply(App.scala:76)
at scala.App$$anonfun$main$1.apply(App.scala:76)
at scala.collection.immutable.List.foreach(List.scala:381)
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
at scala.App$class.main(App.scala:76)
at Main$.main(Main.scala:11)
at Main.main(Main.scala)
tôi đã cố gắng để tải inputstream vào một tập tin tạm thời, nhưng nó không giúp đỡ. Tôi cũng đã cố gắng để tải một phông chữ trực tiếp từ một tập tin địa phương, nhưng tôi đã nhận một lỗi khác nhau với nhận siêu dữ liệu phông chữ. Đây là nhật ký lỗi.
Exception in thread "main" java.lang.NullPointerException
at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:776)
at sun.font.SunFontManager$2.run(SunFontManager.java:431)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.SunFontManager.<init>(SunFontManager.java:376)
at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at java.lang.Class.newInstance(Class.java:442)
at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
at java.awt.Font.<init>(Font.java:614)
at java.awt.Font.createFont(Font.java:1056)
at Main$.delayedEndpoint$Main$1(Main.scala:32)
at Main$delayedInit$body.apply(Main.scala:11)
at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App$$anonfun$main$1.apply(App.scala:76)
at scala.App$$anonfun$main$1.apply(App.scala:76)
at scala.collection.immutable.List.foreach(List.scala:381)
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
at scala.App$class.main(App.scala:76)
at Main$.main(Main.scala:11)
at Main.main(Main.scala)
Vì vậy, đây không phải là một vấn đề với inputstream, mà là với việc nạp font riêng của mình trong JRE 8.
Điều này có vẻ giống như một lỗi trong JRE 8 Font.
Tôi đang tải phông chữ để sử dụng để vẽ một chuỗi trong ảnh. Mã của tôi được chạy trong vùng chứa Docker bằng cách sử dụng hình ảnh java: 7-jre (ok), java: 7-jdk (ok), java: 8-jre (không thành công), java: 8-jdk (ok).
và URL của phông chữ là gì? Bạn có thể chạy nó thông qua TTX, và xem liệu có ném bất kỳ lỗi nào hay không, cũng như thử tải nó trong Font Forge, điều này thậm chí còn khó xử hơn khi nói với bạn rằng phông chữ bạn đang nạp có giá trị xấu ở đâu đó. –