FontRenderContext fontRenderContext = new FontRenderContext(font.getTransform(), true, true);
public AffineTransform getTransform() { return awtFont.getTransform(); }
public FontFile deriveFont(AffineTransform at) { OFont font = new OFont(this); // clear font metric cache if we change the font's transform if (!font.getTransform().equals(this.awtFont.getTransform())) { this.echarAdvanceCache.clear(); } font.awtFont = this.awtFont.deriveFont(at); font.maxCharBounds = this.maxCharBounds; return font; }
result.put( TextAttribute.TRANSFORM, font.getTransform()); result.put( TextAttribute.FAMILY,
result.put( TextAttribute.TRANSFORM, font.getTransform()); result.put( TextAttribute.FAMILY,
String string = "Hello World"; // Passing or initializing an instance of Font. Font font = ...; int width = (int) font.getStringBounds(string, new FontRenderContext(font.getTransform(), false, false)).getBounds().getWidth();
private AffineTransform transformText(float x, float y) { AffineTransform txtTxf = null; Font font = getFont(); if (font != null){ txtTxf = font.getTransform(); if (txtTxf != null && !txtTxf.isIdentity()){ // // The additional transform applies about the text's origin // AffineTransform t = new AffineTransform(); t.translate(x, y); t.concatenate(txtTxf); t.translate(-x, -y); this.transform(t); } else { txtTxf = null; } } return txtTxf; }
private AffineTransform transformText(float x, float y) { AffineTransform txtTxf = null; Font font = getFont(); if (font != null){ txtTxf = font.getTransform(); if (txtTxf != null && !txtTxf.isIdentity()){ // // The additional transform applies about the text's origin // AffineTransform t = new AffineTransform(); t.translate(x, y); t.concatenate(txtTxf); t.translate(-x, -y); this.transform(t); } else { txtTxf = null; } } return txtTxf; }
/** * Sets the main font of the console, which is used to determine the size of * characters * * @param font */ public void setMainFont(Font font) { mainFont = font; FontRenderContext fontRenderContext = new FontRenderContext( mainFont.getTransform(), false, false); Rectangle2D charBounds = mainFont.getStringBounds("X", fontRenderContext); fontWidth = (int) charBounds.getWidth(); fontHeight = (int) charBounds.getHeight(); fontYOffset = -(int) charBounds.getMinY(); setPreferredSize(new Dimension(data.columns * fontWidth, data.rows * fontHeight)); repaint(); }
short getRowHeight(Row row, String cellValue, Font font, float cellWidth) { if(cellValue.isEmpty()) return row.getHeight(); // Create Font object with Font attribute (e.g. Font family, Font size, etc) for calculation int style = java.awt.Font.PLAIN; if(font.getBoldweight() == Font.BOLDWEIGHT_BOLD) style = java.awt.Font.BOLD; java.awt.Font currFont = new java.awt.Font(font.getFontName(), style, font.getFontHeight()); double requiredWidth = currFont.getStringBounds(cellValue, new FontRenderContext(currFont.getTransform(), false, false)).getBounds().getWidth(); return (short) Math.ceil(font.getFontHeight() * requiredWidth / cellWidth); // The above solution doesn't handle the newline character, i.e. "\n", and only for row having merged cells. }
/** {@inheritDoc} */ @SuppressWarnings({"UnusedCatchParameter"}) @Override public Font deriveFont(AffineTransform trans) { try { AffineTransform inv = getTransform().createInverse(); inv.concatenate(backingFont.getTransform()); AffineTransform backingTrans = (AffineTransform) trans.clone(); backingTrans.concatenate(inv); return new MergedFont(super.deriveFont(trans), backingFont.deriveFont(backingTrans)); } catch (NoninvertibleTransformException ex) { return new MergedFont(super.deriveFont(trans), backingFont.deriveFont(trans)); } }
TrainSet.CodeSet codeSet=new TrainSet.CodeSet(0,0x10FFFF,0,regex.getText()); trainSet.getData().add(new TrainSet.CombinedSet(new Font[]{font},new float[]{font.getSize()}, new int[]{font.getStyle()},new AffineTransform[]{font.getTransform()},new TrainSet.CodeSet[]{codeSet})); info.append("\n"+font.toString()+"\t"+regex.getText()); });
public Rectangle2D boundingBox(AnchoredText text, AttributeSet style, Graphics2D canvas) { if (Strings.isNullOrEmpty(text.getText())) { return null; } Font font = Styles.fontOf(style); if (canvas != null) { canvas.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); } FontRenderContext frc = canvas == null ? new FontRenderContext(font.getTransform(), true, false) : canvas.getFontRenderContext(); double width = 0; String[] lines = lines(text); for (String line : lines) { width = Math.max(width, font.getStringBounds(line, frc).getWidth()); } double lineHeight = font.getLineMetrics("", frc).getHeight(); double height = lineHeight*lines.length; height -= (lineHeight - font.getSize()*72/Toolkit.getDefaultToolkit().getScreenResolution()); Anchor textAnchor = Styles.anchorOf(style, Anchor.SOUTHWEST); Point2D offset = style.getPoint(Styles.OFFSET, new Point()); assert offset != null; Point2D shift = textAnchor.getRectOffset(width, height); return new Rectangle2D.Double( text.getX() + offset.getX() + shift.getX(), text.getY() + offset.getY() + shift.getY()-height, width, height); }
/** * Get the bounding box for the given text/style to be rendered on the given canvas. * @param primitive text/location * @param style desired style * @param canvas where to render * @return bounding box for the result */ public static Rectangle2D boundingBox(AnchoredText primitive, AttributeSet style, Graphics2D canvas) { if (Strings.isNullOrEmpty(primitive.getText())) { return null; } Font font = Styles.fontOf(style); FontRenderContext frc = canvas == null ? new FontRenderContext(font.getTransform(), true, false) : canvas.getFontRenderContext(); double width = font.getStringBounds(primitive.getText(), frc).getWidth(); double height = font.getSize()*DOTS_PER_INCH/Toolkit.getDefaultToolkit().getScreenResolution(); Anchor textAnchor = Styles.anchorOf(style, Anchor.SOUTHWEST); Point2D offset = style.getPoint(Styles.OFFSET, new Point()); assert offset != null; return textAnchor.anchoredRectangle( primitive.getX() + offset.getX(), primitive.getY() + offset.getY()-height, width, height); }
protected void writeString(String str, double x, double y) throws IOException { // save the graphics context, especially the transformation matrix writeGraphicsSave(); // translate the offset to x and y AffineTransform at = new AffineTransform(1, 0, 0, 1, x, y); // transform for font at.concatenate(getFont().getTransform()); // mirror the matrix at.scale(1, -1); // write transform writeTransform(at); pageStream.beginText(); pageStream.text(0, 0); showCharacterCodes(str); pageStream.endText(); // restore the transformation matrix writeGraphicsRestore(); }
at.concatenate(getFont().getTransform());
at.concatenate(getFont().getTransform());
getTransformedString( getFont().getTransform(), "<text "
AffineTransform t = font.getTransform(); if (!t.isIdentity()) { writeGraphicsSave();
final AffineTransform at2 = getTransform(); at2.translate( x, y ); at2.concatenate( font.getTransform() ); setTransform( at2 ); final AffineTransform inverse = this.normalizeMatrix();