public float getVisibleAdvance(FontRenderContext fontRenderContext) { TextLayout tl = getTextLayout(fontRenderContext); return tl.getVisibleAdvance(); }
public float getVisibleAdvance(FontRenderContext fontRenderContext) { TextLayout tl = getTextLayout(fontRenderContext); return tl.getVisibleAdvance(); }
public float getVisibleAdvance(FontRenderContext fontRenderContext) { TextLayout tl = getTextLayout(fontRenderContext); return tl.getVisibleAdvance(); }
/** * Retrieves the real width from a given text layout. * * @param layout * the textlayout * @return width */ public static float getWidthForTextLayout(final TextLayout layout) { final Rectangle2D r2d = layout.getBounds(); float realWidth = (float) r2d.getWidth(); final float xo = (float) r2d.getX(); if (xo > 0) { realWidth += xo; } // Unfortunately this is necessary, although it does not look like it // makes a lot of sense. final float invisibleAdvance = layout.getAdvance() - layout.getVisibleAdvance(); return realWidth + invisibleAdvance; }
int advance = (int) ceil( layout0.getVisibleAdvance( ) );
double spaceAdvance = layout.getVisibleAdvance(); xOffset += layout.getVisibleAdvance();
"getAdvance(): {} getVisibleAdvance(): {}", layout.getAdvance(), layout.getVisibleAdvance());
private Dimension paintOrGetSize(Graphics2D g, int width) { Insets insets = getInsets(); width -= insets.left + insets.right + margin.left + margin.right; float w = insets.left + insets.right + margin.left + margin.right; float x = insets.left + margin.left, y=insets.top + margin.top; if (width > 0 && text != null && text.length() > 0) { AttributedString as = new AttributedString(getText()); as.addAttribute(TextAttribute.FONT, getFont()); AttributedCharacterIterator aci = as.getIterator(); LineBreakMeasurer lbm = new LineBreakMeasurer(aci, frc); float max = 0; while (lbm.getPosition() < aci.getEndIndex()) { TextLayout textLayout = lbm.nextLayout(width); if (g != null && isJustified() && textLayout.getVisibleAdvance() > 0.80 * width) textLayout = textLayout.getJustifiedLayout(width); if (g != null) textLayout.draw(g, x, y + textLayout.getAscent()); y += textLayout.getDescent() + textLayout.getLeading() + textLayout.getAscent(); max = Math.max(max, textLayout.getVisibleAdvance()); } w += max; } return new Dimension((int)Math.ceil(w), (int)Math.ceil(y) + insets.bottom + margin.bottom); } }
private Dimension paintOrGetSize(Graphics2D g, int width) { Insets insets = getInsets(); width -= insets.left + insets.right + margin.left + margin.right; float w = insets.left + insets.right + margin.left + margin.right; float x = insets.left + margin.left, y = insets.top + margin.top; if (width > 0 && text != null && text.length() > 0) { AttributedString as = new AttributedString(getText()); as.addAttribute(TextAttribute.FONT, getFont()); AttributedCharacterIterator aci = as.getIterator(); LineBreakMeasurer lbm = new LineBreakMeasurer(aci, frc); float max = 0; while (lbm.getPosition() < aci.getEndIndex()) { TextLayout textLayout = lbm.nextLayout(width); if (g != null && isJustified() && textLayout.getVisibleAdvance() > 0.80 * width) textLayout = textLayout.getJustifiedLayout(width); if (g != null) textLayout.draw(g, x, y + textLayout.getAscent()); y += textLayout.getDescent() + textLayout.getLeading() + textLayout.getAscent(); max = Math.max(max, textLayout.getVisibleAdvance()); } w += max; } return new Dimension((int)Math.ceil(w), (int)Math.ceil(y) + insets.bottom + margin.bottom); } }
physicalLayout.getLeading() == logicalLayout.getLeading() && physicalLayout.getAdvance() == logicalLayout.getAdvance() && physicalLayout.getVisibleAdvance() == logicalLayout.getVisibleAdvance()) {
javaGV = MetaFont.getJavaFont(font).createGlyphVector(frc, inText); advance = inLayer.getAdvance(); visAdvance = inLayer.getVisibleAdvance(); text = inText;
switch (get(TEXT_ALIGNMENT)) { case TRAILING: penPositions.set(first, rightMargin - layouts.get(first).getVisibleAdvance() - 1); break; case CENTER: penPositions.set(first, (rightMargin - 1 - leftMargin - layouts.get(first).getVisibleAdvance()) / 2 + leftMargin); break; case BLOCK:
g.rotate(4.71238898038468985769, tx + tl.getVisibleAdvance() * 0.5, basety + fheight * 0.5); g.drawString(lines[i], (float) tx, (float) ty + lms[i].getAscent()); g.setTransform(oldtf);
public void computeMinimumChunkWidth( final OutputProcessorMetaData data, final ResourceManager resourceManager ) { if ( getMinimumChunkWidth() != 0 ) { return; } if ( data.isFeatureSupported( OutputProcessorFeature.STRICT_COMPATIBILITY ) == false && getStyleSheet().getBooleanStyleProperty( TextStyleKeys.WORDBREAK ) == false ) { return; } long minimumChunkWidth = 0; BreakIterator wordInstance = BreakIterator.getWordInstance(); wordInstance.setText( text ); final boolean antiAliasing = RenderUtility.isFontSmooth( getStyleSheet(), data ); final FontRenderContext fontRenderContext = new FontRenderContext( null, antiAliasing, true ); int start = wordInstance.first(); for ( int end = wordInstance.next(); end != BreakIterator.DONE; start = end, end = wordInstance.next() ) { String word = text.substring( start, end ); AttributedCharacterIterator attributedCharacterIterator = new RichTextSpecProducer( data, resourceManager ).computeText( this, word ) .createAttributedCharacterIterator(); TextLayout t = new TextLayout( attributedCharacterIterator, fontRenderContext ); double width = t.getVisibleAdvance(); final long wordMinChunkWidth = StrictGeomUtility.toInternalValue( width ); minimumChunkWidth = Math.max( minimumChunkWidth, wordMinChunkWidth ); } setMinimumChunkWidth( minimumChunkWidth ); }