summaryrefslogtreecommitdiff
path: root/windows/neo-vars/src/source/makecompose.ahk
diff options
context:
space:
mode:
authormösi <mösi@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2009-04-15 14:23:32 +0000
committermösi <mösi@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2009-04-15 14:23:32 +0000
commit8e51b75b976feab3ef4579d5f6075083e1bd5dcc (patch)
tree179d90e3da9e862c9654a2a9daebc02f2c78faa7 /windows/neo-vars/src/source/makecompose.ahk
parentcc4903debd3116b1561ae7623909cadbe46e1ca1 (diff)
downloadneo-layout-8e51b75b976feab3ef4579d5f6075083e1bd5dcc.tar.gz
neo-layout-8e51b75b976feab3ef4579d5f6075083e1bd5dcc.tar.bz2
neo-layout-8e51b75b976feab3ef4579d5f6075083e1bd5dcc.zip
Compose-Konvertierung im SMP-Bereich (Unicode-Codepoints > UFFFF) korrigiert.
git-svn-id: https://svn.neo-layout.org@1791 b9310e46-f624-0410-8ea1-cfbb3a30dc96
Diffstat (limited to 'windows/neo-vars/src/source/makecompose.ahk')
-rw-r--r--windows/neo-vars/src/source/makecompose.ahk32
1 files changed, 17 insertions, 15 deletions
diff --git a/windows/neo-vars/src/source/makecompose.ahk b/windows/neo-vars/src/source/makecompose.ahk
index e8e09b2..a67b3f8 100644
--- a/windows/neo-vars/src/source/makecompose.ahk
+++ b/windows/neo-vars/src/source/makecompose.ahk
@@ -1817,25 +1817,26 @@ SetFormat, Integer, hex
result := ""
loop {
achar := asc(SubStr(str,1,1))
- str := SubStr(str,2)
- if (achar < 0x80)
+ if (achar < 0x80) {
+ str := SubStr(str,2)
result .= "U" . SubStr("000000" . SubStr(achar,3),-5)
- else if (achar < 0xC0) {
+ } else if (achar < 0xC0) {
+ str := SubStr(str,2)
; error
} else if (achar < 0xE0) {
- achar2 := asc(Substr(str,1,1))
- str := SubStr(str,2)
+ achar2 := asc(Substr(str,2,1))
+ str := SubStr(str,3)
if ((achar2 < 0x80) or (achar2 > 0xBF)) {
; error
} else {
result .= "U" . SubStr("000000" . SubStr((((achar & 0x1F) << 6) + (achar2 & 0x3F)),3),-5)
}
- } else if (achar < 0xF8) {
- achar2 := asc(SubStr(str,1,1))
- achar3 := asc(SubStr(str,2,1))
- str := SubStr(str,3)
+ } else if (achar < 0xF0) {
+ achar2 := asc(SubStr(str,2,1))
+ achar3 := asc(SubStr(str,3,1))
+ str := SubStr(str,4)
; MsgBox % "chars: " . achar . ", " . achar2 . ", " . achar3 . ", str: " . str
- if ((achar2 < 0x80) or (achar2 > 0xBF)
+ if ( (achar2 < 0x80) or (achar2 > 0xBF)
or (achar3 < 0x80) or (achar3 > 0xBF)) {
; error
} else {
@@ -1843,11 +1844,11 @@ SetFormat, Integer, hex
; MsgBox % (((achar & 0x0F) << 12) + ((achar2 & 0x3F) << 6) + (achar3 & 0x3F))
result .= "U" . SubStr("000000" . SubStr((((achar & 0x0F) << 12) + ((achar2 & 0x3F) << 6) + (achar3 & 0x3F)),3),-5)
}
- } else if (char < 0xFC) {
- achar2 := asc(SubStr(str,1,1))
- achar3 := asc(SubStr(str,2,1))
+ } else if (achar < 0xF8) {
+ achar2 := asc(SubStr(str,2,1))
achar3 := asc(SubStr(str,3,1))
- str := SubStr(str,4)
+ achar4 := asc(SubStr(str,4,1))
+ str := SubStr(str,5)
if ( (achar2 < 0x80) or (achar2 > 0xBF)
or (achar3 < 0x80) or (achar3 > 0xBF)
or (achar4 < 0x80) or (achar4 > 0xBF)) {
@@ -1855,7 +1856,8 @@ SetFormat, Integer, hex
} else {
result .= "U" . SubStr("000000" . SubStr((((achar & 0x07) << 18) + ((achar2 & 0x3F) << 12) + ((achar3 & 0x3F) << 6) + (achar4 & 0x3F)),3),-5)
}
- }
+ } else
+ str := SubStr(str,2)
if (str == "")
break
}