Aspose после removeChild, изменен исходный шрифт - PullRequest
3 голосов
/ 05 марта 2020

У меня есть параграф para1 и прогон, перед удалением прогона я сначала сохраняю шрифт прогона с помощью

Font originFont = run1.getFont();

и проверяю режим отладки, originFont.getName () возвращает Times New Roman. но затем я удаляю прогон

para1.removeChild(run1);

, затем я проверяю originFont.getName (), он меняется на Calibri, почему?

enter image description here

enter image description here

1 Ответ

0 голосов
/ 05 марта 2020

Шрифт прогона не указывается напрямую только в прогоне. Это сложное значение, которое наследуется от родительского элемента прогона, стилей документа, тем и значений документа по умолчанию. Когда вы удаляете прогон из документа, для его родителя устанавливается значение NULL, а код, который получает имя шрифта, не может получить унаследованные значения и возвращает значение, которое непосредственно указано в прогоне, или, если оно не указано напрямую, возвращает значение по умолчанию.

Давайте рассмотрим следующие три абзаца. Первый - это простой жирный текст в стиле Normal, в котором используется шрифт Calibri. Второй - это абзац с тем же обычным стилем, но с напрямую указанным шрифтом для запуска и абзаца. Третий - это абзац с пользовательским стилем ArialStyle, для которого задан стиль Arial.

    <w:p w14:paraId="2787B8CC" w14:textId="607BD13B" w:rsidR="00C96F00" w:rsidRPr="00CA1A63" w:rsidRDefault="00CA1A63">
  <w:pPr>
    <w:rPr>
      <w:b />
      <w:bCs />
    </w:rPr>
  </w:pPr>
  <w:r w:rsidRPr="00CA1A63">
    <w:rPr>
      <w:b />
      <w:bCs />
    </w:rPr>
    <w:t>Bold Calibri</w:t>
  </w:r>
</w:p>
<w:p w14:paraId="7F64B104" w14:textId="7CCF8DB9" w:rsidR="00CA1A63" w:rsidRPr="00C75FFA" w:rsidRDefault="00CA1A63">
  <w:pPr>
    <w:rPr>
      <w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
      <w:i />
      <w:iCs />
    </w:rPr>
  </w:pPr>
  <w:r w:rsidRPr="00C75FFA">
    <w:rPr>
      <w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
      <w:i />
      <w:iCs />
    </w:rPr>
    <w:t>Italic Times New Roman</w:t>
  </w:r>
</w:p>
<w:p w14:paraId="0D91CAFA" w14:textId="21A94755" w:rsidR="00CA1A63" w:rsidRDefault="00CA1A63" w:rsidP="007A778A">
  <w:pPr>
    <w:pStyle w:val="ArialStyle" />
  </w:pPr>
  <w:r>
    <w:t xml:space="preserve">Normal arial style</w:t>
  </w:r>
</w:p>

Если вы удалите прогон из первого абзаца, его шрифт не изменится, поскольку документ по умолчанию - Calibri.

Если вы удалите прогон из второго абзаца, шрифт не будет изменен, поскольку имя шрифта указывается напрямую.

Если вы удалите прогон из третьего абзаца, шрифт изменится на Calibri - документ по умолчанию. Потому что, когда вы удаляете прогон, его родительский элемент равен нулю, а код не имеет доступа к стилю родительского абзаца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...