Я пытаюсь использовать Batik для преобразования SVG, и все идет хорошо, за исключением того, что я не могу выяснить, где значение атрибута fill
для исходного документа SVG хранится в элементе Batik TextNode
. Итак, в моем SVG у меня есть следующее:
<text x="276.1875" y="120.390625" text-anchor="middle" font="10px "Arial""
stroke="none" fill="#ffffff" style="-webkit-tap-highlight-color: rgb(0, 0, 0); text-anchor: middle; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; font-size: 10px; line-height: normal; font-family: Arial;"
font-size="10px" font-family="Arial">
<tspan dy="3.5" >Proportion </tspan>
</text>
Это отлично работает, но когда я использую свой собственный TextPainter
(через общий мост), чтобы попытаться обработать TextNode, я обнаруживаю следующее:
public void paint(TextNode node, Graphics2D g2d )
{
AttributedCharacterIterator aci = node.getAttributedCharacterIterator();
Paint colourInfo = (Paint)aci.getAttribute(TextAttribute.FOREGROUND); //null
Paint bgInfo = (Paint)aci.getAttribute(TextAttribute.BACKGROUND); //null
// do actual painting
}
Фактически, большинство атрибутов, относящихся к цвету, которые я могу найти, просматривая пользовательские текстовые атрибуты TextAttribute и GVT, возвращаются нулевыми. У объекта aci
действительно есть список ненулевых атрибутов, но я не могу понять, что это за ключи от отладчика, поскольку все они отключены от списков атрибутов.
Существующее свойство paint
объекта Graphics2D
обычно устанавливается в цвет блока, который он только что нарисовал, что означает, что если я ничего не изменю, я просто получу весь свой текст того же цвета, что и фон, что затрудняет читать.
Как мне найти цвет этих текстовых узлов, которым они снабжены в исходном SVG?