docs: @Override
      public void render(Symbol symbol) throws IOException {
  
          String content = symbol.getContent();
          int width = (int) (symbol.getWidth() * magnification);
          int height = (int) (symbol.getHeight() * magnification);
          int marginX = (int) (symbol.getQuietZoneHorizontal() * magnification);
          int marginY = (int) (symbol.getQuietZoneVertical() * magnification);
  
          String title;
          if (content == null || content.isEmpty()) {
              title = "OkapiBarcode Generated Symbol";
          } else {
              title = content;
          }
  
          String fgColour = String.format("%02X", ink.getRed())
                          + String.format("%02X", ink.getGreen())
                          + String.format("%02X", ink.getBlue());
  
          String bgColour = String.format("%02X", paper.getRed())
                          + String.format("%02X", paper.getGreen())
                          + String.format("%02X", paper.getBlue());
  
          try (ExtendedOutputStreamWriter writer = new ExtendedOutputStreamWriter(out, "%.2f")) {
  
              // Header
              writer.append("<?xml version=\"1.0\" standalone=\"no\"?>\n");
              writer.append("<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n");
              writer.append("   \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n");
              writer.append("<svg width=\"").appendInt(width)
                    .append("\" height=\"").appendInt(height)
                    .append("\" version=\"1.1")
                    .append("\" xmlns=\"http://www.w3.org/2000/svg\">\n");
              writer.append("   <desc>").append(clean(title)).append("</desc>\n");
              writer.append("   <g id=\"barcode\" fill=\"#").append(fgColour).append("\">\n");
              writer.append("      <rect x=\"0\" y=\"0\" width=\"").appendInt(width)
                    .append("\" height=\"").appendInt(height)
                    .append("\" fill=\"#").append(bgColour).append("\" />\n");
  
              // Rectangles
              for (int i = 0; i < symbol.getRectangles().size(); i++) {
                  Rectangle2D.Double rect = symbol.getRectangles().get(i);
                  writer.append("      <rect x=\"").append((rect.x * magnification) + marginX)
                        .append("\" y=\"").append((rect.y * magnification) + marginY)
                        .append("\" width=\"").append(rect.width * magnification)
                        .append("\" height=\"").append(rect.height * magnification)
                        .append("\" />\n");
              }
  
              // Text
              for (int i = 0; i < symbol.getTexts().size(); i++) {
                  TextBox text = symbol.getTexts().get(i);
                  HumanReadableAlignment alignment = (text.alignment == JUSTIFY && text.text.length() == 1 ? CENTER : text.alignment);
                  double x;
                  String anchor;
                  switch (alignment) {
                      case LEFT:
                      case JUSTIFY:
                          x = (magnification * text.x) + marginX;
                          anchor = "start";
                          break;
                      case RIGHT:
                          x = (magnification * text.x) + (magnification * text.width) + marginX;
                          anchor = "end";
                          break;
                      case CENTER:
                          x = (magnification * text.x) + (magnification * text.width / 2) + marginX;
                          anchor = "middle";
                          break;
                      default:
                          throw new IllegalStateException("Unknown alignment: " + alignment);
                  }
                  writer.append("      <text x=\"").append(x)
                        .append("\" y=\"").append((text.y * magnification) + marginY)
                        .append("\" text-anchor=\"").append(anchor).append("\"\n");
                  if (alignment == JUSTIFY) {
                      writer.append("         textLength=\"")
                            .append(text.width * magnification)
                            .append("\" lengthAdjust=\"spacing\"\n");
                  }
                  writer.append("         font-family=\"").append(clean(symbol.getFontName()))
                        .append("\" font-size=\"").append(symbol.getFontSize() * magnification)
                        .append("\" fill=\"#").append(fgColour).append("\">\n");
                  writer.append("         ").append(clean(text.text)).append("\n");
                  writer.append("      </text>\n");
              }
  
              // Circles
              for (int i = 0; i < symbol.getTarget().size(); i++) {
                  Ellipse2D.Double ellipse = symbol.getTarget().get(i);
                  String color;
                  if ((i & 1) == 0) {
                      color = fgColour;
                  } else {
                      color = bgColour;
                  }
                  writer.append("      <circle cx=\"").append(((ellipse.x + (ellipse.width / 2)) * magnification) + marginX)
                        .append("\" cy=\"").append(((ellipse.y + (ellipse.width / 2)) * magnification) + marginY)
                        .append("\" r=\"").append((ellipse.width / 2) * magnification)
                        .append("\" fill=\"#").append(color).append("\" />\n");
              }
  
              // Hexagons
              for (int i = 0; i < symbol.getHexagons().size(); i++) {
                  Hexagon hexagon = symbol.getHexagons().get(i);
                  writer.append("      <path d=\"");
                  for (int j = 0; j < 6; j++) {
                      if (j == 0) {
                          writer.append("M ");
                      } else {
                          writer.append("L ");
                      }
                      writer.append((hexagon.pointX[j] * magnification) + marginX).append(" ")
                            .append((hexagon.pointY[j] * magnification) + marginY).append(" ");
                  }
                  writer.append("Z\" />\n");
              }
  
              // Footer
              writer.append("   </g>\n");
              writer.append("</svg>\n");
          }
      }