NativeTextPainter (Apache FOP Core 2.11 API)
Date: 2025-04-24

org.apache.fop.svg

## Class NativeTextPainter

- java.lang.Object
- - org.apache.batik.bridge.BasicTextPainter
  - - org.apache.batik.bridge.StrokingTextPainter
    - - org.apache.fop.svg.NativeTextPainter

- All Implemented Interfaces:
    org.apache.batik.bridge.TextPainter
  Direct Known Subclasses:
    PDFFlowExtTextPainter, PDFFlowTextPainter, PSTextPainter

      public abstract class NativeTextPainter
      extends org.apache.batik.bridge.StrokingTextPainter

  Abstract base class for text painters that use specialized text commands native to an output format to render text.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.apache.batik.bridge.StrokingTextPainter

      `org.apache.batik.bridge.StrokingTextPainter.TextChunk, org.apache.batik.bridge.StrokingTextPainter.TextRun`

    - ### Nested classes/interfaces inherited from class org.apache.batik.bridge.BasicTextPainter

      `org.apache.batik.bridge.BasicTextPainter.BasicMark`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Font` | `font`
    `protected org.apache.batik.bridge.FontFamilyResolver` | `fontFamilyResolver`
    `protected FontInfo` | `fontInfo` the font collection
    `protected static org.apache.commons.logging.Log` | `log` the logger for this class
    `protected org.apache.batik.gvt.text.TextPaintInfo` | `tpi`

    - ### Fields inherited from class org.apache.batik.bridge.StrokingTextPainter

      `ADJUST_ALL, ADJUST_SPACING, ALT_GLYPH_HANDLER, ANCHOR_TYPE, BIDI_LEVEL, FLOW_PARAGRAPH, FLOW_REGIONS, GVT_FONT, GVT_FONTS, PAINT_INFO, singleton, TEXT_COMPOUND_ID, TEXTPATH, WRITING_MODE, WRITING_MODE_RTL, WRITING_MODE_TTB, XPOS, YPOS`

    - ### Fields inherited from class org.apache.batik.bridge.BasicTextPainter

      `aaOffFontRenderContext, fontRenderContext`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `NativeTextPainter(FontInfo fontInfo)` Creates a new instance.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract void` | `beginTextObject()`
    `protected abstract void` | `clip(Shape clip)`
    `protected CharSequence` | `collectCharacters(AttributedCharacterIterator runaci)` Collects all characters from an `AttributedCharacterIterator`.
    `List` | `computeTextRuns(org.apache.batik.bridge.TextNode node, AttributedCharacterIterator nodeACI, AttributedCharacterIterator[] chunkACIs)`
    `protected abstract void` | `endTextObject()`
    `protected org.apache.batik.bridge.FontFamilyResolver` | `getFontFamilyResolver()`
    `protected AffineTransform` | `getLocalTransform(Point2D glyphPos, AffineTransform glyphTransform)`
    `protected org.apache.batik.bridge.TextLayoutFactory` | `getTextLayoutFactory()`
    `protected Set` | `getTextRunBoundaryAttributes()`
    `protected abstract boolean` | `isSupported(Graphics2D g2d)` Indicates whether the given `Graphics2D` instance if compatible with this text painter implementation.
    `protected void` | `logCharacter(char ch, org.apache.batik.bridge.TextSpanLayout layout, int index, boolean visibleChar)`
    `protected void` | `logTextRun(org.apache.batik.bridge.StrokingTextPainter.TextRun textRun)`
    `protected void` | `paintTextRun(org.apache.batik.bridge.StrokingTextPainter.TextRun textRun, Graphics2D g2d)` Paints a single text run.
    `protected void` | `paintTextRuns(List textRuns, Graphics2D g2d)`
    `protected abstract void` | `positionGlyph(Point2D prevPos, Point2D glyphPos, boolean reposition)`
    `protected abstract void` | `preparePainting(Graphics2D g2d)`
    `protected List` | `reorderTextRuns(org.apache.batik.bridge.StrokingTextPainter.TextChunk chunk, List runs)`
    `protected abstract void` | `restoreGraphicsState()`
    `protected abstract void` | `saveGraphicsState()`
    `protected abstract void` | `setInitialTransform(AffineTransform transform)`
    `protected abstract void` | `writeGlyph(char glyph, AffineTransform transform)`
    `protected void` | `writeGlyphs(FOPGVTGlyphVector gv, GeneralPath debugShapes)`

    - ### Methods inherited from class org.apache.batik.bridge.StrokingTextPainter

      `adjustChunkOffsets, computeTextRuns, createModifiedACIForFontMatching, getBounds2D, getDecorationOutline, getDecorationStrokeOutline, getHighlightShape, getInstance, getMark, getOutline, getSelected, getTextChunk, getTextChunkACIs, getTextRuns, hitTest, paint, paintDecorations, printAttrs, selectFirst, selectLast`

    - ### Methods inherited from class org.apache.batik.bridge.BasicTextPainter

      `getGeometryBounds, selectAt, selectTo`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### log

          protected static final org.apache.commons.logging.Log log

      the logger for this class

    - #### fontInfo

          protected final FontInfo fontInfo

      the font collection

    - #### fontFamilyResolver

          protected final org.apache.batik.bridge.FontFamilyResolver fontFamilyResolver

    - #### font

          protected Font font

    - #### tpi

          protected org.apache.batik.gvt.text.TextPaintInfo tpi

  - ### Constructor Detail

    - #### NativeTextPainter

          public NativeTextPainter(FontInfo fontInfo)

      Creates a new instance.
      Parameters:
        `fontInfo` - the font collection

  - ### Method Detail

    - #### isSupported

          protected abstract boolean isSupported(Graphics2D g2d)

      Indicates whether the given `Graphics2D` instance if compatible with this text painter implementation.
      Parameters:
        `g2d` - the instance to check
      Returns:
        true if the instance is compatible.

    - #### paintTextRun

          protected final void paintTextRun(org.apache.batik.bridge.StrokingTextPainter.TextRun textRun,
                                            Graphics2D g2d)
                                     throws IOException

      Paints a single text run.
      Parameters:
        `textRun` - the text run
        `g2d` - the target Graphics2D instance
      Throws:
        `IOException` - if an I/O error occurs while rendering the text

    - #### writeGlyphs

          protected void writeGlyphs(FOPGVTGlyphVector gv,
                                     GeneralPath debugShapes)
                              throws IOException

      Throws:
        `IOException`

    - #### getLocalTransform

          protected AffineTransform getLocalTransform(Point2D glyphPos,
                                                      AffineTransform glyphTransform)

    - #### paintTextRuns

          protected void paintTextRuns(List textRuns,
                                       Graphics2D g2d)

      Overrides:
        `paintTextRuns` in class `org.apache.batik.bridge.StrokingTextPainter`

    - #### collectCharacters

          protected CharSequence collectCharacters(AttributedCharacterIterator runaci)

      Collects all characters from an `AttributedCharacterIterator`.
      Parameters:
        `runaci` - the character iterator
      Returns:
        the characters

    - #### computeTextRuns

          public List computeTextRuns(org.apache.batik.bridge.TextNode node,
                                      AttributedCharacterIterator nodeACI,
                                      AttributedCharacterIterator[] chunkACIs)

      Overrides:
        `computeTextRuns` in class `org.apache.batik.bridge.StrokingTextPainter`

    - #### getTextRunBoundaryAttributes

          protected Set getTextRunBoundaryAttributes()

      Overrides:
        `getTextRunBoundaryAttributes` in class `org.apache.batik.bridge.StrokingTextPainter`

    - #### reorderTextRuns

          protected List reorderTextRuns(org.apache.batik.bridge.StrokingTextPainter.TextChunk chunk,
                                         List runs)

      Overrides:
        `reorderTextRuns` in class `org.apache.batik.bridge.StrokingTextPainter`

    - #### preparePainting

          protected abstract void preparePainting(Graphics2D g2d)

    - #### saveGraphicsState

          protected abstract void saveGraphicsState()
                                             throws IOException

      Throws:
        `IOException`

    - #### restoreGraphicsState

          protected abstract void restoreGraphicsState()
                                                throws IOException

      Throws:
        `IOException`

    - #### setInitialTransform

          protected abstract void setInitialTransform(AffineTransform transform)
                                               throws IOException

      Throws:
        `IOException`

    - #### clip

          protected abstract void clip(Shape clip)
                                throws IOException

      Throws:
        `IOException`

    - #### beginTextObject

          protected abstract void beginTextObject()
                                           throws IOException

      Throws:
        `IOException`

    - #### endTextObject

          protected abstract void endTextObject()
                                         throws IOException

      Throws:
        `IOException`

    - #### positionGlyph

          protected abstract void positionGlyph(Point2D prevPos,
                                                Point2D glyphPos,
                                                boolean reposition)

    - #### writeGlyph

          protected abstract void writeGlyph(char glyph,
                                             AffineTransform transform)
                                      throws IOException

      Throws:
        `IOException`

    - #### logTextRun

          protected final void logTextRun(org.apache.batik.bridge.StrokingTextPainter.TextRun textRun)

    - #### logCharacter

          protected final void logCharacter(char ch,
                                            org.apache.batik.bridge.TextSpanLayout layout,
                                            int index,
                                            boolean visibleChar)

      Parameters:
        `ch` - a character
        `layout` - a text span layout
        `index` - an index
        `visibleChar` - visible character flag

    - #### getFontFamilyResolver

          protected org.apache.batik.bridge.FontFamilyResolver getFontFamilyResolver()

      Overrides:
        `getFontFamilyResolver` in class `org.apache.batik.bridge.StrokingTextPainter`

    - #### getTextLayoutFactory

          protected org.apache.batik.bridge.TextLayoutFactory getTextLayoutFactory()

      Overrides:
        `getTextLayoutFactory` in class `org.apache.batik.bridge.BasicTextPainter`

Copyright © 2025 Apache Software Foundation. All rights reserved.