Microsoft 更新后 MS Word 2010 中的 devEMF 输出显示问题

devEMF output display problems in MS Word 2010 after Microsoft update

在 6 月 12 日进行了 2-4 次 Microsoft 更新后,devEMF(EMF/EMF+ 文件的 R 打印设备)输出在 MS Word 2010 中的显示已损坏。

问题出现在安装了最新 Microsoft 更新的计算机上,而未安装 KB890830, KB4503292,KB4503286 and KB4461619 的计算机上则不会。我尝试了 Windows 10 和 Windows 7。所有有问题的更新我都认为是安全更新,所以我猜 devEMF 文件在更新后而不是之前对 MS Word 来说有点可疑。使用其他程序创建的 EMF 可以正确显示。我试过 EMF 和 EMF+,它们都显示损坏。

以下 R 代码生成一个文件,该文件在 libreOffice 中正确显示,但在带有最新 MS 更新的 MS Word 2010 中损坏

require(devEMF)
emf("test.emf")
  plot(x=c(0,2),y=c(0,2))
  text(x=1,y=1,"This is a test figure")
dev.off()

有些(比如这个测试图像)根本就没有显示(我只得到一个非常浅的图像尺寸框架),在其他一些元素(/层?)中只显示了几个,通常带有红叉以及有关该文件的一些元信息(如以下屏幕截图所示)。

我的问题是......(除此之外,我真的希望那些 emfs 能够在我的数百页和长长的图表文档中正确显示):Word 现在是否过于担心或者是否需要(希望是小的)更正来使 devEMF 包进行更安全?

与此同时,我联系了 devEMF 的开发人员,解决方案(目前)是使用

生成一个 "full" emfPlus 文件
emf( ... , emfPlus=TRUE, emfPlusFont=TRUE, emfPlusRaster =TRUE)

使用这些标签生成的文件可以正确显示。

编辑: 微软宣布发布有罪安全补丁的补丁: https://social.msdn.microsoft.com/Forums/en-US/a0af7c55-7f13-4a6a-ac41-3c7a2a09d8f5/emf-graphics-specification-amp-security-patch

正如我在德语 answers.microsoft.com 中提到的那样:似乎 KB4503292 禁用了 EMR_EXTCREATEFONTINDIRECTW 类型的 EMF 记录,它只包含一个 LogFont 结构而不是一个 LogFontExDv,尽管这仍然被记录为支持:

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-emf/7e266b6d-32e5-4201-b687-8ec40c24cd73

elw (variable): A LogFontExDv object (section 2.2.15), which specifies the logical font. A LogFont object (section 2.2.13) MAY<74> be present instead. The process for determining the type of object in this field is described below.

到目前为止,我唯一找到这个解释的地方是

https://social.msdn.microsoft.com/Forums/en-US/a0af7c55-7f13-4a6a-ac41-3c7a2a09d8f5/emf-graphics-specification-amp-security-patch?forum=os_specifications