提交 5c8a2332 编写于 作者: Z Zachary Yedidia

Use unicode.Mark for combining unicode range

上级 ff0683d6
......@@ -16,17 +16,6 @@ import (
// For rendering, micro will display the combining characters. It's not perfect
// but it's pretty good.
// combining character range table
var combining = &unicode.RangeTable{
R16: []unicode.Range16{
{0x0300, 0x036f, 1}, // combining diacritical marks
{0x1ab0, 0x1aff, 1}, // combining diacritical marks extended
{0x1dc0, 0x1dff, 1}, // combining diacritical marks supplement
{0x20d0, 0x20ff, 1}, // combining diacritical marks for symbols
{0xfe20, 0xfe2f, 1}, // combining half marks
},
}
// DecodeCharacter returns the next character from an array of bytes
// A character is a rune along with any accompanying combining runes
func DecodeCharacter(b []byte) (rune, []rune, int) {
......@@ -35,7 +24,7 @@ func DecodeCharacter(b []byte) (rune, []rune, int) {
c, s := utf8.DecodeRune(b)
var combc []rune
for unicode.In(c, combining) {
for unicode.In(c, unicode.Mark) {
combc = append(combc, c)
size += s
......@@ -54,7 +43,7 @@ func DecodeCharacterInString(str string) (rune, []rune, int) {
c, s := utf8.DecodeRuneInString(str)
var combc []rune
for unicode.In(c, combining) {
for unicode.In(c, unicode.Mark) {
combc = append(combc, c)
size += s
......@@ -72,7 +61,7 @@ func CharacterCount(b []byte) int {
for len(b) > 0 {
r, size := utf8.DecodeRune(b)
if !unicode.In(r, combining) {
if !unicode.In(r, unicode.Mark) {
s++
}
......@@ -88,7 +77,7 @@ func CharacterCountInString(str string) int {
s := 0
for _, r := range str {
if !unicode.In(r, combining) {
if !unicode.In(r, unicode.Mark) {
s++
}
}
......
......@@ -5,17 +5,6 @@ import (
"unicode/utf8"
)
// combining character range table
var combining = &unicode.RangeTable{
R16: []unicode.Range16{
{0x0300, 0x036f, 1}, // combining diacritical marks
{0x1ab0, 0x1aff, 1}, // combining diacritical marks extended
{0x1dc0, 0x1dff, 1}, // combining diacritical marks supplement
{0x20d0, 0x20ff, 1}, // combining diacritical marks for symbols
{0xfe20, 0xfe2f, 1}, // combining half marks
},
}
// DecodeCharacter returns the next character from an array of bytes
// A character is a rune along with any accompanying combining runes
func DecodeCharacter(b []byte) (rune, []rune, int) {
......@@ -24,7 +13,7 @@ func DecodeCharacter(b []byte) (rune, []rune, int) {
c, s := utf8.DecodeRune(b)
var combc []rune
for unicode.In(c, combining) {
for unicode.In(c, unicode.Mark) {
combc = append(combc, c)
size += s
......@@ -43,7 +32,7 @@ func DecodeCharacterInString(str string) (rune, []rune, int) {
c, s := utf8.DecodeRuneInString(str)
var combc []rune
for unicode.In(c, combining) {
for unicode.In(c, unicode.Mark) {
combc = append(combc, c)
size += s
......@@ -61,7 +50,7 @@ func CharacterCount(b []byte) int {
for len(b) > 0 {
r, size := utf8.DecodeRune(b)
if !unicode.In(r, combining) {
if !unicode.In(r, unicode.Mark) {
s++
}
......@@ -77,7 +66,7 @@ func CharacterCountInString(str string) int {
s := 0
for _, r := range str {
if !unicode.In(r, combining) {
if !unicode.In(r, unicode.Mark) {
s++
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册