无法通过域代码更改拼音文本的字体



我运行下面的宏代码,它能够一次为所有选定的中文文本添加语音拼音。但是,该代码只能使用默认的字体设置添加ruby文本,我需要修改拼音的字体、定位和字体大小。

https://github.com/wuzhuoqing/alltextphonetic/blob/master/alltext.bas

起初,我试着切换字段代码来改变设置,它起作用了。然而,当我保存、退出并重新打开它时,只有位置和字体大小保持不变,在我通过字段代码进行更改之前,字体是相同的。

例如,ruby文本的原始字体为Times New Roman。我将把它改成"邓贤"。通过切换字段代码。然后,将更改ruby文本的字体。但是,一旦我保存并重新打开文档,ruby文本的字体就会恢复为"Times New roman";而不是"邓贤"。

有解决方案吗?或者,是否可以对宏代码进行调整,以便它可以放弃ruby文本的默认设置并采用我自己的设置?顺便说一下,我已经厌倦了只使用语音指南,因为它会花费我很多时间(文档包含超过10000个单词!)

谢谢!

尝试使用文档。方法使更改永久保存。如果活动文档自上次保存以来发生了更改,则保存该文档:

If ActiveDocument.Saved = False Then ActiveDocument.Save

简短的回答是,如果你在EQ字段中的所有Ruby文本中应用邓仙字体,Word应该正确。

。如果您将* "Font:Times New Roman"修改为* "Font:DengXian"后,您的字段看起来像这样

{ EQ * jc2 * "Font:DengXian" * hps11 oad(sup 10(běn),本}

如果您在字段代码本身(而不是字段结果)中检查běn的字体,它可能是Times New Roman。如果您手动应用DengXian到běn然后将您的文档保存为。docx并重新打开它,我认为您将得到您想要的结果。

应该能够使用高级查找/替换或VBA应用正确的字体到所有ruby文本,但从长远来看,我认为您需要尝试确保Word首先使用正确的字体,这可能需要您修改文档中的一个或多个样式。现在,我不能告诉你如何做到这一点,除非进一步调查Word使用了哪些设置(默认情况下,在我的安装中,它使用了DengXIan作为ruby文本)。

背景…

当您在EQ字段中修改* "Font:fontname"开关中的fontname时,Word将字体应用于result字段中的ruby文本,但它不会将字体应用于代码字段中的ruby文本。所以在你的例子中,它仍然是Times New Roman。

如果您以旧的.doc格式保存文档,则字段代码将被保存为"is"。当您关闭并重新打开时,Word仍然有字段,仍然可以看到您在* "Font:fontname"中指定的字体,并将其重新应用于字段结果。

但是当您以。docx格式保存时,Word实际上根本不保存字段代码。它将其翻译成WordProcessingML。在最好的情况下,它记录了在字段代码中实际应用于ruby文本的字体。如果你实际上没有对ruby文本应用任何直接格式化,Word可能会认为它已经应用了它的主题样式之一,并记录字体如下(我简化了):

<w:rFonts w:asciiTheme="majorBidi">
此时,它已经忘记了您指定的* "Font:DengXian"

。当你重新打开文档时,Word会重新创建字段,从asciiTheme获取字体并生成"* " font:Times New Roman"相反。如果你确实对ruby文本应用了直接格式化,那么Word似乎会记录字体名称,更像这样:

<w:rFonts w:ascii="DengXian">

Word仍然忘记了您指定的* "Font:DengXian",但从w:rFonts元素获取字体名称并重新创建* "Font:DengXian"

最新更新