请考虑下面这段代码
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)。
这段代码在Office2003中运行得很好,但我在尝试在Office2007/2010中运行时遇到了这个问题。我仔细检查过了,我尝试指定的字体已经安装在计算机上了。
虽然我只测试过阿拉伯语语言(阿拉伯语/乌尔都语/波斯语等),但我猜在处理任何非拉丁脚本语言时都会出现这个问题。
有什么建议吗?看起来像是微软office更高版本中的一个bug。
PS。按照@Steve (.LanguageID = msoLanguageIDArabic)的建议设置文本框语言没有任何效果:(
发布于 2013-07-04 00:37:36
我自己找到了答案。对于不同的脚本,Font类中有不同的Name属性。Here is a list of all Font members。在我的例子中,我必须使用NameComplexScript属性。结合了这一变化,代码就像一个护身符
.Font.NameComplexScript = "someFontName" 发布于 2013-01-22 22:01:25
如果您知道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)https://stackoverflow.com/questions/13465774
复制相似问题