golang/go

x/text: iterator does not handle zero width joiner

Open

#60,522 opened on May 30, 2023

View on GitHub
 (2 comments) (0 reactions) (0 assignees)Go (19,008 forks)batch import
ExpertNeededNeedsInvestigationhelp wanted

Repository metrics

Stars
 (133,883 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

What version of Go are you using (go version)?

Does this issue reproduce with the latest release?

Yes

What operating system and processor architecture are you using (go env)?

I'm using the go playground

What did you do?

package main

import (
	"fmt"

	"golang.org/x/text/unicode/norm"
)

func main() {
	var ia norm.Iter
	s := "👩🏾‍🦰👱🏾🧑🏾‍⚖️"

	ia.InitString(norm.NFD, s)
	rev := ""

	for !ia.Done() {
		n := ia.Next()
		rev = string(n) + rev
	}

	fmt.Println(rev)
}

Playground: https://go.dev/play/p/Jq9CnUd2zA8

What did you expect to see?

It should print 🧑🏾‍⚖️👱🏾👩🏾‍🦰

I think it has to do with the library not handling zero width joiners. If I use this string: "😀😂" it works as expected.

What did you see instead?

️⚖‍🏾🧑🏾👱🦰‍🏾👩

Contributor guide