血泪相求万分火急:跪求各位高手,救小弟一命,解答者来拉萨兄弟吃喝玩乐全程全包!
zd304 2007-06-20 12:49:03 先介绍下,本人西藏大学03计本一学生,湖南人,现在情况如下,检察院已经考上了,万事皆备,就差毕设了,如果不过的话一切皆东流水了,如果那位兄弟解决的话你不仅将认识一个非常好的朋友,而且来西藏任何一个地方都将不再陌生,资料如下!
藏文版式规则
藏文和其他文种一样,在排版和编辑的时候有一定的格式要求,或者说是格式规范,我们在排版时千万不能忽视,现就几点重要规范作如下说明,在说明版式规则之前,我们有必要先来认识一下藏文组成:
1.藏文属于拼音文字,她由4个元音字母、30个辅音字母以及因素符组成,因素符相当于汉语中的标点符号,常见的因素符有:︶︹﹀﹀ ︽ ﹀﹀ ﹀ ﹀﹀﹀﹀ ;
2.藏文以音节为单位,藏文的每一个音节几乎都由两个以上的音缀,甚至7个以上的音缀构成,音节之间用一个因素符——“ ︽ ”分开,我们称之为“音节点”,她在藏文中是不可缺少的元素,没有此符号就无法表达所述内容,因此,音节点“ ︽ ”在藏文中是重中之重,被称为“文字生命”。
下面这段是老师给我提供的在WEB里实现藏文断行的的资料,但是代码执行老是有错误,请各位高手给我帮忙下,因为这个星期6就要答辩了,在下没齿难忘!
WEB页面藏文移行规则的解决方案
行首不能出现 FE3D(︽) FE40(﹀) FE41(﹀ ﹀)
行尾只能出现 FE3D(︽) FE40(﹀) FE41(﹀ ﹀)
拟解决办法:
1.寻找Html的接口函数,即:移行规则程序与Html的连接。有两种连接方式:
(1)在藏文输入页面中建一个[藏文规则]按钮调用移行规则程序,点击[藏文规则]项,完成藏文移行规则;
(2)将移行规则程序生成*.js文件、或*.vbs文件[既JavaScript或VbScript脚本]格式,并在页面Html头描述中嵌入<SCRIPT language=JavaScript src="*.js"></SCRIPT>(或<SCRIPT language=VbScript src="*.vbs"></SCRIPT>)语言中一并加载,在藏文调入过程中,随时控制完成排版。
2.移行规则程序以读行和判断行首尾的方式,控制整个文档。
(1)首先Web页面中藏文文档所在的<td></td>的width(宽度),并检测<td></td>中单个藏文字符宽度。
(2)其次用(<td></td>的width÷单个藏文字符宽度)-2,得出<td></td>中每一行所能显示的字符个数。
(3)再次判断行首,如果行首出现FE3D FE40 FE41字符,则无条件删除。
(4)最后判断行尾字符是否为:FE3D FE40 FE41,如果不是其中的字符,判断该行是否包含空格,若找到空格在空格处添加chr(32)[空格],该行字符随着后移,直到行尾出现FE3D FE40 FE41字符,如果找不到空格,则向前寻找第一个FE3D字符,找到后用FE3D字符填满该行。
Sub 藏文排版()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim step As Integer
Dim d As Integer
Dim n As Integer
Dim filehandle As String
Dim WinPath As String
Dim Char As String
Dim found As Boolean
found = False
With Selection
d = .Move(wdStory, -1) '光标到行首
If (.Range. Characters(1) = "︽") Then '如果光标后的字是︽
found = True
End If
d = .MoveRight(wdCharacter, 1) '光标右移的字符数
While d = 1
If (.Range. Characters(1) = "︽") Then
If (found = False) Then
found = True
d = .Move(wdCharacter, 1)
Else
n = .Range.Delete(wdCharacter, 1) '删除光标后的一个字符
End If
ElseIf (.Range.Characters(1) = Chr$(11)) Then '光标后是否为换行符
n = .Range.Delete(wdCharacter, 1) '删除光标后的一个字符
found = False
Else
found = False
d = .Move(wdCharacter, 1)
End If
Wend
End With
WinPath = Space$(200)
d = Len(WinPath)
n = GetWindowsDirectoryA(WinPath, d)
WinPath = Left$(WinPath, n)
If Right$(WinPath, 1) <> "\" Then
WinPath = (WinPath + "\")
End If
filehandle = FreeFile
Open WinPath + "NoEndChars.dat" For Input As #filehandle '
For i = 1 To CodeNum Step 1
Line Input #filehandle, NoEndChars(i)
Next i
step = -1
With Selection
While step = -1
step = .Move(wdParagraph, -1)
Wend
.Expand wdParagraph
.Collapse wdCollapseStart
step = 1
While step = 1
d = .MoveEnd(wdLine, 1) ' 从光标位置到行尾选中
n = .Range.Characters.Count '所选范围内的字符数
Char = ""
found = False
For j = n To 1 Step -1
found = False
If .Range.Characters(j) <> " " And .Range.Characters(j) <> Chr$(13) Then '光标后不是空格和回车
If (.Range.Characters(j) = "罢") Then
If (j < n) Then
If (.Range.Characters(j + 1) = " " Or .Range.Characters(j + 1) = Chr$(13)) Then
Char = .Range.Characters(j)
.Collapse wdCollapseStart
found = True
Exit For
End If
End If
End If
If IsEndChar(.Range.Characters(j)) = True Then
Char = .Range.Characters(j)
.Collapse wdCollapseStart
found = True
Exit For
End If
End If
Next j
If (j < n) Then
d = .Move(wdCharacter, j)
If (.Range.Characters(1) = " ") Then
d = .Range.Delete(wdCharacter, 1)
End If
End If
If j < n And j > 0 Then
If j > 1 Then
If Char = "︽" Then '如果是分词符号
d = 0
While d <> 1 '循环加分词符
.Range.InsertAfter ("︽")
n = .Move(wdCharacter, 1)
n = .HomeKey(wdLine, wdExtend)
d = .Range.Characters.Count
.Collapse wdCollapseEnd
Wend
If (.Range.Characters(1) = Chr$(13)) Then '如果光标后的字符为回车,则删除左边的字符
n = .Move(wdCharacter, -1)
n = .Range.Delete(wdCharacter, 1)
Else
n = .Move(wdCharacter, -1) '如果光标后不是回车,则光标左移一个字符
End If
Else '如果不是分词符号
'.Range.InsertAfter (Chr$(11)) '光标后插入换行符
'.Range.InsertAfter (" ") '加 空格
d = 0
While d <> 1 '循环加分词符
'.Range.InsertAfter ("︽")
.Range.InsertAfter Chr$(6)
n = .Move(wdCharacter, 1)
n = .HomeKey(wdLine, wdExtend)
d = .Range.Characters.Count
n = .Range.Delete(wdCharacter, 1)
'.Collapse wdCollapseEnd
Wend
End If
End If
End If
n = .HomeKey(wdLine, wdExtend)
d = .Range.Characters.Count
If n <= 0 Or found = False Then
step = .Move(wdLine, 1)
End If
If (.Range.Characters(1) <> Chr$(13)) Then
step = 1
Else
d = .MoveEnd(wdStory, 1)
If .Range.Characters.Count < 10 Then
step = 0
End If
End If
.Collapse wdCollapseStart
Wend
End With
End Sub
我的QQ:240665271 电话:13628905641