Tag: 字体

无法在JRE 8中加载字体

我无法从JRE 8中的S3 Inputstream加载字体。如果系统安装了JRE 7,JDK 7甚至JDK 8,我就没有问题。 val fontInputStream = s3Client.getObject(bucketName, objectKey).getObjectContent val customFont = Font.createFont(Font.TRUETYPE_FONT, fontInputStream).deriveFont(Font.TRUETYPE_FONT, 20F) 我得到的错误是 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) 我试图将输入流加载到临时文件,但它没有帮助。 我还试图直接从本地文件加载字体,但我得到了与获取字体元数据不同的错误。 […]

让JTextArea显示固定宽度的字体而不使用抗锯齿

有谁知道如何让JTextArea在所有平台上显示固定大小的字体? 我想制作一个简单的代码编辑器,具有保存/打开function,这很简单,但我想让字体固定大小,最好是快递新。 问题是courier new显然是专有的,并且它不仅默认安装在许多系统上,而且在大多数现代系统中,它被设置为默认的cleartype,这使它看起来像垃圾。 我很想用update-render-paint创建自己的JPanel并重新发明JTextArea,并将字体保存为固定大小的位图,但这种方法看起来很愚蠢,而且非常耗时。 我想在项目中包含一个免费的固定大小的字体,并在所有平台上使用该字体,这似乎是可能的。 然而,现代系统似乎强制平滑所有字体,我想阻止它做。 可悲的是,似乎Swing自动遵守系统首选项,因此在不破坏用户设置的情况下,它似乎是不行的。 简而言之,有没有办法让JTextArea显示固定宽度的字体并禁用字体平滑/抗锯齿(或至少切换),或者这个任务不可能使用swing? 提前谢谢!

在java中绘制文本与大纲

我正在使用Java中的graphcis2d,目前正在使用它将文本绘制到bufferedImage中 Font font1 = new Font(“Arial”, Font.PLAIN, 120); g2d.setFont(font1); FontMetrics fm1 = g2d.getFontMetrics(font1); g2d.drawString(s[1], width/2-fm1.stringWidth(s[1])/2, height/4-70); 我想用不同的颜色轮廓绘制这个文本。 GlyphVector gv = font1.createGlyphVector(g2d.getFontRenderContext(), s[1]); Shape shape = gv.getOutline(); g2d.setStroke(new BasicStroke(4.0f)); g2d.translate(width/2-fm1.stringWidth(s[1])/2, height/4-70); g2d.draw(shape); 使用这种方法的问题是,我正在使用阿拉伯字符并使用GlyphVector反转顺序,并且不会使字母彼此流动。 有人可以向我解释如何用一种颜色呈现阿拉伯文本并用另一种颜色绘制轮廓吗? 下面是我将要使用的文本示例:الرحمن

在Java中嵌入字体

我有一个我想在Java程序中展示的自定义字体,用户可以在其中查看它而无需安装它。 有谁知道这是怎么做到的吗? 工作方案 我已经实现了以下内容: font = java.awt.Font.createFont(java.awt.Font.TRUETYPE_FONT, new java.io.File(Clazz.class.getResource(“/resources/segoescb.ttf”).toURI())); font = font.deriveFont(11.0F);

为什么JComboBox会忽略PrototypeDisplayValue

与这两个post@iMohammad相关联, 使用JButton增加/减少textArea中的字体大小和单击JButton Java时更改字体样式 …,我面临着来自JComboBox的非常有趣的问题,方法是将setPrototypeDisplayValue作为参数传递对于JComboBox’s size在屏幕上JComboBox’s size 请问如何动态调整JComboBox大小取决于Font ,同样适用于我在sscce中尝试过的另一个JComponents import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ComboBoxFontChange extends JFrame { private static final long serialVersionUID = 1L; private JComboBox cbox = new JComboBox(); private JTextField tfield = new JTextField(“Change”); private JLabel label = new JLabel(“Cash”); private JButton button = new JButton(“++ Font”); private JTextField text; […]

错误或function:Win6 +的Swing默认gui字体不正确

只是(令人惊讶地;-)注意到我的win6 +机器上的应用程序看起来如此拥挤的原因(同样适用于Vista和Win7,120dpi设置,jdk6和jdk7):从桌面属性查找的控件字体都有错误的字体家庭和错误的大小: public static void main(String[] args) { Font guiFont = (Font) Toolkit.getDefaultToolkit().getDesktopProperty(“win.defaultGUI.font”); int guiSize = guiFont.getSize(); Font iconFont = (Font) Toolkit.getDefaultToolkit().getDesktopProperty(“win.icon.font”); System.out.println(“gui default: ” + guiFont + “\nicon default: ” + iconFont); } 输出: gui default: java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=13] icon default: java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15] 后者几乎用于所有文本的本机应用程序,而Swing使用前者… 问题: 可能有任何理由,或只是一个错误? 谁负责:Swing查找(从相关系统资源读取desktopProperty时)或操作系统未正确报告? 如何强制使用后者? 解决最后一个的选项: 通过完全控制LAF,人们可能会考虑设置所有相关的文本字体(这就是JGoodies的function,并将其纳入FontPolicy / Set)。 一个脏的hack是将defaultGUI桌面属性的值设置为正确的值 – 它涉及对工具包的reflection访问,这自然会在安全受限的上下文中发挥作用。 […]

如何在Java中使用开放式字体?

有没有办法用Java读取Open Type字体,就像使用TrueType字体一样? 这适用于TTF但我还没弄清楚如何使用Open Type字体做同样的事情。 Font f = Font.createFont( Font.TRUETYPE_FONT, new FileInputStream(“f.ttf”) ); 请注意我无法中继已安装的字体。 我提供了我的程序字体,但不想在系统范围内安装它。

Java字体渲染

我一直在尝试增强我用Java编写的GUI系统以使用子像素抗锯齿并且已经成功,除了两个剩余的exception。 这是几个星期前我的另一个问题的后续问题 。 第一个问题是将设置渲染提示KEY_ANTIALIASING设置为VALUE_ANTIALIAS_ON会导致KEY_TEXT_ANTIALIASING在设置为LCD(子像素)AA值时被忽略。 任何人都可以对此有所了解吗? 目前我在渲染文本之前被迫使用VALUE_ANTIALIAS_OFF,并在渲染文本后将其重新打开(以便其他绘画,如圆圈等,是AA’d)。 下面的独立测试程序certificate了这个问题。 第二个问题是我找不到查询AA的底层操作系统设置,所以我必须做一个相当大的解决方法,即创建一个Swing JLabel,获取它的FontMetrics,得到它的FontRenderContext然后得到AA提示。 除了在一个程序中涉及Swing,否则完全不使用Swing,它将无法在运行任何J2ME JVM的设备上运行。 谁能建议一个更好的方法来做到这一点? 如果它需要J5或J6就没关系,因为当前的kludge已经需要J6(但只需要J4就是最好的)。 我已经尝试了每个默认设置并使用AWT组件而不是JLabel。 测试程序 该程序validation要使子像素AA工作,必须首先禁用一般AA设置。 (PS:我写入后台缓冲区,因为我的底层GUI确实如此,我想在等效的上下文中进行测试)。 import java.awt.*; import java.awt.event.*; public class AwtTestFrame1b extends Panel { private final Font font=new Font(Font.SANS_SERIF, Font.PLAIN, 16); private final int line=25; AwtTestFrame1b() { setBackground(SystemColor.control); } public void paint(Graphics g) { Graphics2D g2d = (Graphics2D)g; int py=0; py=paintText(g2d,py,null ,false); […]

如何根据JButton的大小更改字体大小?

我有一个java应用程序 – 一个计算器。 我想通过调整应用程序窗口的大小来动态调整按钮的字体大小。 怎么实现呢? 我的想法是使用ComponentEvents。 我有应用程序窗口的初始大小和初始字体的大小。 我想根据按钮的大小更改字体大小,受窗口大小更改的影响。 问题是如何在overriden方法中使用比率[初始窗口大小] / [初始字体大小]? 每种字体的比例都不同。 import javax.swing.*; import java.awt.*; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; public class Main extends JFrame { public Main() { super(“Test”); JPanel cPane = (JPanel) getContentPane(); cPane.setLayout(new BorderLayout()); MyButton sampleButton = new MyButton(“Sample text”); sampleButton.setFont(new Font(“Sans Serif”, Font.PLAIN, 20)); MyButton a, b, c, d; a = […]

更改字体System.out.println的大小

你能告诉我如何使用java中的System.out.println来增加字体的大小。