Adobe Premiere Pro自推出以来受到了业界的广泛好评,但Adobe公司每次开发软件的时候都对中国这么大一个市场考虑不够周全。从早些年的Photoshop5.0留下的中文字体显示Bug到Premiere6.5,到目前的Premiere Pro每次都会出现相同的Bug,即所有的中文字体在字体列表中显示的都是拼音。如:楷体显示的名称为:KaiTi_GB2312。而且连Adobe After Effect等软件也有相同的问题,真让人郁闷。 虽然网上有用手动去修改的方法,可是如果系统重装了,又要重新做一次,重复劳动,十分麻烦。 早些年我就分析过Photoshop补丁的解决方法,如今的Premiere Pro是同家公司做的,又是同样的问题,会不会解决方法也相同呢?经过一番研究,找到了解决方法。下面是用VB6写的程序。 1. 打开VB6创建一个新工程,点击工程右上角的Form1窗体将它移除。本程序无需界面,只要两个对话框就行了。 2. 点击“工程”菜单下的“添加模块”,加入一个新的模块,给它起个名字为:PrPatch。 3. 在模块中输入以下程序: Option Explicit Dim DiskW As String Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Private Sub Main() Dim WinLong As Long, WinLocate As String * 40 If MsgBox("本程序用于更正Premiere Pro输入汉字时字体名称显示不正确的问题。tw.wINgwiT.COM运行吗?", vbOKCancel + vbInformation, "补丁:") = vbCancel Then End WinLong = GetWindowsDirectory(WinLocate, 40) DiskW = Left(WinLocate, 2) ProcessFile MsgBox "汉字输入补丁完成!", vbOKOnly + vbInformation, "祝贺你:" End Sub Private Sub ProcessFile() Dim TextOne As String, TextLine(8000) As String, i As Long, NowString As String * 1, j As Integer, BL As Integer DiskW = DiskW & "\Program Files\Common Files\Adobe\TypeSpt\ AdobeFnt07.lst" '将一个文件以行为单位放入数组 Open DiskW For Input As #1 Input #1, TextOne j = 1 For i = 1 To Len(TextOne) NowString = Mid$(TextOne, i, 1) If NowString = Chr(10) Then j = j + 1 Else TextLine(j) = TextLine(j) + NowString End If Next i Close #1 '查找 For i = 1 To j - 1 If Left(TextLine(i), 11) = "Fami lyName:" Then BL = i Else If Left(TextLine(i), 8) = "WinName:" Then TextLine(BL) = Left(TextLine(BL), 11) & Mid$(TextLine(i), 9) End If End If Next Open DiskW For Output As #1 For i = 1 To j - 1 Print #1, TextLine(i) Next Close #1 End Sub 4. 点击“文件”菜单下的“生成PrPatch.exe”,完成。 5.然后你就可以运行它了,运行之后再打开Premiere Pro再看看图(如图2),这就是运行之后的情况。本程序可以用于解决Adobe一系列软件的共同Bug。注意程序中加底的一行,这行是本程序的重要部分。 |