HI
thanks for your reply.
first mapping character is good point but the problem is I want to have my own standard on my script or software which can run on any pc with any character setting so I can't mapping characters on any installation pc , I didn't post my code cause I thought it might be confusing for here cause I don't think anyone know persian and rules in writing, its almost same with arabic, anyway here is my code, what I want to know and I want to do is that how to make my Character code back ? i mean how to set 192 for Yaa , and etc , like the standard font
Public Function ConvertFunc(ByVal AllianceString As String, ByVal BeginMiddleEndAlone, ByVal ChrGroup As String, ByVal ChBefore) As Integer
Dim ChBeforeGr, ChAfterGr As String
Dim NewChr, AscwAll As Integer
AscwAll = AscW(AllianceString)
' Finding group for Character before
If BeginMiddleEndAlone <> "First" Then ChBeforeGr = GroupCharacter(ChBefore)
If ChrGroup = "A" Then
Select Case BeginMiddleEndAlone
Case "First"
Alignment = 0
Case "Middle"
If ChBeforeGr = "A" Then Alignment = 0 Else Alignment = 1
Case "End"
If ChBeforeGr = "A" Then Alignment = 0 Else Alignment = 1
Case "Alone"
Alignment = 0
End Select
End If
If ChrGroup = "B" Then
Select Case BeginMiddleEndAlone
Case "Begin"
Alignment = 3
Case "Middle"
If ChBeforeGr = "A" Then alginment = 0 Else Alignment = 2
Case "End"
If ChBeforeGr = "A" Then alginment = 0 Else Alignment = 1
Case "Alone"
Alignment = 0
End Select
End If
Select Case AscwAll
Case 1570
NewChr = 65 ' Aa bakola
NewChr = NewChr + Alignment
Case 1571
NewChr = 67 ' Alef
NewChr = NewChr + Alignment
Case 1575
NewChr = 72 ' Be
NewChr = NewChr + Alignment
Case 1576
NewChr = 74 ' Pe
NewChr = NewChr + Alignment
Case 1662
NewChr = 78 ' Te
NewChr = NewChr + Alignment
Case 1578
NewChr = 82 ' Se
NewChr = NewChr + Alignment
Case 1579
NewChr = 86 ' Jim
NewChr = NewChr + Alignment
Case 1580
NewChr = 90 ' Che
NewChr = NewChr + Alignment
Case 1670
NewChr = 94 ' Khe
NewChr = NewChr + Alignment
Case 1581
NewChr = 98 ' Daal
NewChr = NewChr + Alignment
Case 1582
NewChr = 102 ' Zaal
NewChr = NewChr + Alignment
Case 1583
NewChr = 106 ' Re
NewChr = NewChr + Alignment
Case 1584
NewChr = 108 ' Ze
NewChr = NewChr + Alignment
Case 1585
NewChr = 110 ' Zhe
NewChr = NewChr + Alignment
Case 1586
NewChr = 112 ' Sin
NewChr = NewChr + Alignment
Case 1688
NewChr = 114 ' Shin
Case 1587
NewChr = 116 ' Sad
NewChr = NewChr + Alignment
Case 1588
NewChr = 120 ' Zad
NewChr = NewChr + Alignment
Case 1589
NewChr = 124 ' Taa
NewChr = NewChr + Alignment
Case 1590
NewChr = 131 ' Zaa
NewChr = NewChr + Alignment
Case 1591
NewChr = 135 ' Ein
NewChr = NewChr + Alignment
Case 1592
NewChr = 139 ' Ghein
NewChr = NewChr + Alignment
Case 1593
NewChr = 147 ' Faa
NewChr = NewChr + Alignment
Case 1594
NewChr = 151 ' Ghaaf
NewChr = NewChr + Alignment
Case 1601
NewChr = 155 ' Kaf
NewChr = NewChr + Alignment
Case 1602
NewChr = 161 ' Gaf
NewChr = NewChr + Alignment
Case 1603
NewChr = 165 ' Laam
NewChr = NewChr + Alignment
Case 1711
NewChr = 169 ' Mim
NewChr = NewChr + Alignment
Case 1604
NewChr = 173 ' Vaav
NewChr = NewChr + Alignment
Case 1605
NewChr = 179 ' Mim
NewChr = NewChr + Alignment
Case 1606
NewChr = 183 ' Noon
NewChr = NewChr + Alignment
Case 1607
NewChr = 187
NewChr = NewChr + Alignment
Case 1608
NewChr = 189
NewChr = NewChr + Alignment
Case 1609 'Yaa
NewChr = 193
NewChr = NewChr + Alignment
Case 1740 'Yaa
NewChr = 193
Case Else
NewChr = 0
End Select
If NewChr <> 0 Then ConvertFunc = NewChr Else ConvertFunc = 1
End Function
Public Function CharacterPos(ByVal ChBefore, ByVal ChAfter) As String
If ChBefore = " " And ChAfter <> "" Then CharacterPos = "First"
If ChBefore <> "" And ChAfter <> "" Then CharacterPos = "Middle"
If ChBefore <> "" And ChAfter = " " Then CharacterPos = "End"
End Function
Public Function GroupCharacter(ByVal AorB As String) As String
AscWW = AscW(AorB)
Select Case AscWW
Case 1570, 1571, 1572, 1573, 1575, 1583, 1584, 1585, 1586, 1591, 1592, 1608
GroupCharacter = "A"
Case Else
GroupCharacter = "B"
End Select
End Function
Sub ConvertUnicode()
Dim sValue, FinalResult, CharachterPosition, CharacterValue, CharacterGroup, ChBefore, ChAfter As String
Dim ChPosition As String
Dim I, E As Integer
Dim NewCharacter(1 To 99999) As Integer
sValue = Selection.Value
'find selection value height
E = Len(sValue)
For I = 1 To E
CharacterValue = Mid(sValue, I, 1)
CharacterGroup = GroupCharacter(CharacterValue)
'Find position in word
If I = 1 Then ChPosition = "First"
If I = E Then ChPosition = "End"
If I <> 1 And I <> E Then ChPosition = CharacterPos(Mid(sValue, I - 1, 1), Mid(sValue, I + 1, 1))
If ChPosition <> "First" Then ChBefore = Mid(sValue, I - 1, 1) Else ChBefore = " "
NewCharacter(I) = ConvertFunc(CharacterValue, ChPosition, CharacterGroup, ChBefore)
Select Case NewCharacter(I)
Case Is < 127
FinalResult = ChrW(NewCharacter(I)) & FinalResult
Case Is > 159
FinalResult = ChrW(NewCharacter(I)) & FinalResult
Case Is > 126 And NewCharacter(I) < 160
FinalResult = Chr(NewCharacter(I)) & FinalResult
Case Else
FinalResult = "+" & FinalResult
End Select
Next
'Photoshop.Application.Open ("E:\Dove, The\Frames\001~100\001.psd"

'Photoshop.Application.ActiveDocument.Layers("Text"

.ArtLayer.TextItem.Contents = FinalResult
Range("b1"

.Value = FinalResult
End Sub
Sub chsymbol()
For I = 1 To 1000
Range("M" & I).Value = I
Range("N" & I).Value = ChrW(I)
Next
End Sub
Sub chrchr()
Selection.Value = Selection.Value & Asc()
End Sub
Sub chrchrr()
Selection.Value = Chr(154)
'Selection.Value = Application.LanguageSettings
End Sub