8

请考虑以下代码

With ActivePresentation
    Set sldNewSlide = .Slides.Add(.Slides.Count + 1, ppLayoutBlank)
    With sldNewSlide
    Set shpCurrShape = .Shapes.AddTextbox(msoTextOrientationHorizontal, 25, 50, 50, 200)

        With shpCurrShape
           With .TextFrame.TextRange

              '------------ Below is an ARABIC string
              .Text = ChrW$(&H6A9) & ChrW$(&H64A) & ChrW$(&H641) & " " & ChrW$(&H62D) & ChrW$(&H627) & ChrW$(&H644) & ChrW$(&H643)

              With .Font
                 .Name = "someFontName" '-------------- THIS LINE IS NOT WORKING
                 .Size = 65
              End With

           End With
        End With

    End With
End With

如上所述,阿拉伯语文本的字体没有改变。当文本框包含英文文本时,字体更改效果很好。如果混合了阿拉伯文和英文文本,则会更改英文字体,但阿拉伯文文本保持默认字体(即 Arial)。

此代码在 Office 2003 中运行良好,但我在尝试在 Office 2007/2010 中运行时遇到了这个问题。我已经仔细检查过,我尝试指定的字体已安装在计算机上。

虽然我只测试了阿拉伯语脚本语言(阿拉伯语/乌尔都语/波斯语等),但我想在处理任何非拉丁脚本语言时都会出现这个问题。

有什么建议么?似乎是更高版本的 ms office 中的错误。

PS。按照@Steve ( .LanguageID = msoLanguageIDArabic) 的建议设置文本框语言无效:(

4

2 回答 2

2

我自己找到了答案。对于不同的脚本,类中有不同Name的属性。这是所有成员的列表。就我而言,我不得不使用财产。结合这种变化,代码就像一个魅力FontFontNameComplexScript

.Font.NameComplexScript = "someFontName" 
于 2013-07-03T16:37:35.910 回答
0

这是一个类似的案例,这个解决方案是为Chinese字体提供的 :)并且可以用于任何你知道CharSet代码以及支持Font Name的情况,因为并非每种字体都支持所有语言字符集。

在您的情况下,您需要找到您想要使用的字符集Arabic和支持Font Name(根据以下示例进行设置)。您将在运行时看到结果

UserForm1.TextBox2.Font.Charset = 134    '--CHINESESIMPLIFIED_CHARSET
UserForm1.TextBox2.Font.Name = ChrW(&H5B8B) + ChrW(&H4F53) '-- 宋体 SimSun font

UserForm1.TextBox2.Text = ChrW(37446)
strTxt2 = UserForm1.TextBox2.Text
'notice that ChrW(9246) produces a different character in Chinese
UserForm1.TextBox2.Text = strTxt2 & " " & ChrW(9246)
于 2013-01-22T14:01:25.483 回答