本帖最后由 wingtrace 于 2009-11-18 10:44:16 编辑

解决方案 »

  1.   

    确实,从ms和msdn的网站上也找不出什么有用的信息。
    而且通过调查发现,Shape.Export其实是一个没有任何文档记载的函数,
    MSDN的forum上有人讨论,宣称它实际上是一个不被支持的函数解决这种问题,看来真的得靠经验和运气了。。
      

  2.   

    经过调查意外地解决了。。无奈之余尝试着DEBUG跟踪TextRange的各种属性,看有没有异样的地方,
    发现在调用Shape.TextFrame.TextRange.Text设定文本之后,
    TextRange.LanguageID变成了msoLanguageIDTraditionalChinese,
    而设定文本前它是正常的msoLanguageIDJapanese。至于为什么TextRange.Text接收文本之后会改变TextRange.LanguageID,
    应该是对设定进来的文本的代码页发生了误判,在全日文系统以及全日文输入
    的情况下不应该发生这样的问题才对,或许是PowerPoint2007的BUG,
    或许是Vista的BUG,那就不得而知了。。btw,本次BUG调查中Feng Yuan的《Windows图形编程》一书起了很大作用,
    没有它我也不会深入地去了解EMF的构造以及GDI关于字体和文本处理的一些
    工作原理,在此聊表谢意吧。
      

  3.   


    很遗憾地说,其实那个办法不能解决问题。。
    后来客户去咨询了MS,MS说设定日文字体的时候用Font.Name属性是不对的,
    应该用Font.NameFarEase属性,否则就算强行将LanguageID改成日语,
    所用的也依然是日语的缺省字体(MS PGothic),而不是代码里面设置的
    MS Gothic。MS没说这是个BUG,只是在KB里面也有记录,KB号记不得了。。※因为MS Gothic和MS PGothic只是等宽与非等宽的区别,在文字比较少,
    而且不包含空格的时候,是很难看出来差别的,但是一旦包含大量的空格,
    用MS PGothic的总宽度明显要比MS Gothic短得多
      

  4.   

    该问题不仅影响PowerPoint,也影响Excel,
    不止在Vista下有问题,在WindowsXP下页有问题。