LibreOffice Writer:如何替换搜索文本的字体

时间:2016-08-27 17:31:49

标签: unicode fonts libreoffice

我有几个.DOC格式的文件,其中包括英文和梵文(梵文)中的单词。我正在使用LibreOffice Writer:

Version: 5.1.4.2
Build ID: 1:5.1.4-0ubuntu1
Locale: en-US (en_GB.UTF-8)

默认字体为Liberation Serif,我喜欢并希望继续使用,但有些梵语/梵文字样无法正确显示。有些字体可以正确显示梵文/梵文字,例如Akshar Unicode。因此,无法正确显示的字词,我将字体更改为Akshar Unicode,方法是突出显示每个字词,不正确的字词,然后将字体从Liberation Serif更改为Akshar Unicode,这是一项繁琐的工作。效率低下的方法。

是否有更有效的方法来更改某些字词的字体?

到目前为止,我尝试了两种方法,这两种方法似乎都无法更改搜索结果的字体或替换文字:

  • 突出显示错误的字词,然后按[CTRL] + [H]以使用Find & Replace工具。
  • 安装扩展程序Alternate searching 1.4.1,这是一个类似于Find & Replace的工具,但更复杂。

理想情况下,Find & Replace工具可以更改搜索结果或替换文字的字体。

1 个答案:

答案 0 :(得分:0)

以下宏选择文档中任何位置的当前所选单词。然后它设置字体。

Sub ChangeFontOfWords
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    oSels = ThisComponent.getCurrentSelection()
    oSel = oSels.getByIndex(0)

    dim args1(1) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "SearchItem.SearchString"
    args1(0).Value = oSel.getText()
    dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())

    dim args2(0) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "CharFontName.FamilyName"
    args2(0).Value = "Akshar Unicode"
    dispatcher.executeDispatch(document, ".uno:CharFontName", "", 0, args2())
End Sub

要使用它,请双击一个单词以将其选中,然后运行该宏。为方便起见,请转到Tools -> Customize并设置热键或工具栏按钮以运行宏。