图1 虽然网上有用手动去修改的方法,可是如果系统重装了,又要重新做一次,重复劳动,十分麻烦。
早些年我就分析过Photoshop补丁的解决方法,如今的Premiere Pro是同家公司做的,又是同样的问题,会不会解决方法也相同呢?经过一番研究,找到了解决方法。下面是用VB6写的程序。
1. 打开VB6创建一个新工程,点击工程右上角的Form1窗体将它移除。本程序无需界面,只要两个对话框就行了。2. 点击“工程”菜单下的“添加模块”,加入一个新的模块,给它起个名字为:PrPatch。
3. 在模块中输入以下程序:Option Explicit
Dim DiskW As StringDeclare 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输入汉字时字体名称显示不正确的问题。运行吗?", vbOKCancel + vbInformation, "补丁:") = vbCancel Then EndWinLong = 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, TextOnej = 1
For i = 1 To Len(TextOne)NowString = Mid$(TextOne, i, 1)
If NowString = Chr(10) Thenj = j + 1
ElseTextLine(j) = TextLine(j) + NowString
End IfNext i
Close #1'查找
For i = 1 To j - 1If Left(TextLine(i), 11) = "Fami
lyName:" ThenBL = i
ElseIf Left(TextLine(i), 8) = "WinName:" Then
TextLine(BL) = Left(TextLine(BL), 11) & Mid$(TextLine(i), 9)End If
End IfNext
Open DiskW For Output As #1For i = 1 To j - 1
Print #1, TextLine(i)Next
Close #1End Sub
4. 点击“文件”菜单下的“生成PrPatch.exe”,完成。5.然后你就可以运行它了,运行之后再打开Premiere Pro再看看图(如图2),这就是运行之后的情况。本程序可以用于解决Adobe一系列软件的共同Bug。注意程序中加底的一行,这行是本程序的重要部分。
图2
,去除Premiere中文字体显示的Bug