Tag: 字体

在Java中绘制文本,外观和感觉问题

我已经覆盖了扩展JToggleButton的paintComponent方法,以便在切换按钮时可以使用TexturePaint填充文本。 我遇到的问题是我似乎无法使用与我的外观相同的字体来绘制文本作为默认设置。 我试过g2d.setFont(this.getFont()); ,“这个”是我正在使用的按钮。 字体很接近,但在绘制时看起来比默认文本更大胆。 是否有更好的方法来绘制文本,使其看起来与默认相同,除了颜色? 提前致谢!

如何从ttf文件中获取汉字笔画顺序?

我发现getGlyphOutline()可以显示JAVA API的字体输出行。 我还没有发现任何用于显示中国笔画顺序的API。 但这是真的: .ttf包含笔画顺序。 我只是不知道如何通过JAVA获得它。 可能是一些我忘记的重要API? shape = gv.getGlyphOutline(i, 200, 200); ((Graphics2D) g).draw(shape); 现在,我找到了PathIterator Shape shape = gv.getGlyphOutline(0, 200, 200); PathIterator pi = shape.getPathIterator(new AffineTransform()); double[] coords = new double[6]; int count = 0; while (!pi.isDone()) { int kind = pi.currentSegment(coords); int[] path = new int[4]; switch (kind) { case PathIterator.SEG_MOVETO: System.out.println(“SEG_MOVETO”); break; case […]

如何在SWT中从InputStream加载字体?

我需要从SWT中的Java Resource或InputStream加载字体( .otf或.ttf )文件。 org.eclipse.swt.graphics.Device.loadFont(String path)允许我( 示例 )从字体文件路径加载字体(并且它可以工作),但没有相应的方法从任何其他源加载它。 我正在考虑使用java.awt.Font.createFont(int fontFormat, InputStream fontStream) ,然后在AWT java.awt.Font构建org.eclipse.swt.graphics.FontData和org.eclipse.swt.graphics.Font对象宾语。 既然我还没有尝试过这个选项(我甚至不知道它是否有效)我只是想知道是否还有其他选择?

JavaFX中TilePane中的字母可视化

我需要做什么: 我试着编写一些代码来可视化任何角色的每个像素。 我决定最好的方法是在Tile Pane中将像素显示为矩形。 所以这是我需要达到的效果: 我的问题是什么: 我写了一些代码,通过使用text1 snaphost并将其保存为WritableImage 。 然后我使用PixelReader通过argb方法读取该图像的每个像素。 在循环中,当每个整数rgb值大于TRESHOLD(更亮)时,我添加带有白色背景的新图块。 除非我添加黑色背景的瓷砖。 但是我的想法仍然有问题,我得到了这个效果: 有我的代码: public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception{ //Create single letter string String letter = “a”; //Create new text Text text1 = new Text(letter); //Set font for text text1.setFont(Font.font(“Calibri”, FontWeight.NORMAL, 12)); //Save text1 as writable image […]

为什么Graphics2D.setStoke()不适用于Graphics2D.drawString?

我希望字符串具有不同的宽度,以便我设置Graphics2D的笔划,代码在这里: import java.awt.BasicStroke; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JFrame; import javax.swing.JPanel; public class StrokeTest { public static void main(String[] args) { StrokeTest test = new StrokeTest(); test.createUI(); } public void createUI(){ JFrame frame = new JFrame(); frame.add(new MainPanel()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } @SuppressWarnings(“serial”) class MainPanel extends JPanel{ public MainPanel(){ setPreferredSize(new Dimension(400, […]

在Java中从Font对象创建一个Shape对象

我有一个字体对象和一个字符串。 我想返回一个Shape对象,它是String的表示forms。 我有一大堆其他类将显示String并处理它。 当我没有 graphics / graphics2d对象时,我无法弄清楚如何做到这一点。 任何帮助? 我在网上搜索但很难找到有用的链接。 public class SpecializationOfTester extends ParentTester { private String str; private Font font; public SpecializationOfTester(String str, Font font) { this.font = font; this.str = str; } public Shape getShape() { Shape s; // // return s; } } 谢谢

Java Locale字体问题..?

[编辑]这发生在使用Java 1.5的OSX上! (但也可能发生在Windows上!) 我的Java Swing程序的日本用户似乎无法在JTextFields中编写日语符号。 实际上他们可以写出来但却看不到它们。 他们只看到以某种方式表示我认为该字体不支持这些符号的块。 我出于各种原因设置了自己的字体(“Lucida Sans”,Font.PLAIN,12) – 我不想改变。 我的问题是: 如果没有我设置这个字体,JTextFields会显示日语符号吗? 我可以检测到我的Font完全支持哪些Locale,并且只在这些情况下设置它,但是为Locale.Japan等所有其他情况保留标准Java字体? 你有什么其他的建议? 感谢您的帮助!

如果文本不适合JLabel,我想减小字体大小

关于这个问题有很多post,但我无法理解那里的人给出的答案。 就像在这篇文章中:“ 如何更改JLabel字体的大小以获取最大大小 ”答案将字体大小转换为14! 但这是静态的,在其他答案中也是如此; 他们的整个输出屏幕似乎增加了。 我在一个名为“lnum”的JLabel中显示某些数字,它可以显示最多3位数字,但之后它显示为“4 …”我希望如果数字能够适合标签,它不应该改变它字体大小,但如果数字是4位数,它应该以适合的方式减小字体大小。 注意:我不希望jLabel的尺寸发生变化。 我只是想改变它中的文字。 编辑:这是我试过的代码 String text = lnum.getText(); System.out.println(“String Text = “+text);//DEBUG Font originalFont = (Font)lnum.getClientProperty(“originalfont”); // Get the original Font from client properties if (originalFont == null) { // First time we call it: add it originalFont = lnum.getFont(); lnum.putClientProperty(“originalfont”, originalFont); } int stringWidth = lnum.getFontMetrics(originalFont).stringWidth(text); int […]

Java字体大小从宽度

我正在寻找一种从宽度推断Java AWT字体大小的方法。 例如,我知道我想在100像素内写下’hello world’。 我知道我在Font.PLAIN样式中使用字体“Times”,我希望得到最适合我的100像素宽度的字体大小。 我知道我可以在一个循环中计算它(类似于while(font.getSize() < panel.getWidth() ),但说实话我并不觉得它非常优雅。

字体扩展名不适用于JasperReports

我想在我的网络应用程序中添加Tahoma字体到jasper报告。 我使用字体扩展机制 。 抛出此exception:net.sf.jasperreports.engine.util.JRFontNotFoundException:字体’TahomaFont’不可用于JVM。 有关更多详细信息,请参阅Javadoc。 这是我的font.xml文件: export/fonts/BTahoma.ttf Identity-H true 这是我的jasperreports.properties文件: net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory net.sf.jasperreports.extension.simple.font.families.TahomaFont=export/fonts/fonts.xml 我也把Tahoma.ttf字体文件放在我的类路径中。 以下是jasper报告中的样式标记: 请让我知道我哪里出错了。 提前致谢。