I've been breaking my head over this for a few days now and can't seem to be able to figure it out. Perhaps it's glaringly obvious, but I don't seem to be able to spot it. I've read up on all the basics of unicode, UTF-8, UTF-16, normalisation, etc, but to no avail. Hopefully somebody's able to help me out here...

Valuetesting/quickGeneratorMetadata
func (m *Metadata) Generate(r *rand.Rand, size int) (value reflect.Value) {
    value = reflect.ValueOf(m).Elem()
    for i := 0; i < value.NumField(); i++ {
        if t, ok := quick.Value(value.Field(i).Type(), r); ok {
            value.Field(i).Set(t)
        }
    }
    return
}

Now, in doing so, I'll end up with both the receiver and the return value being set with random generated values of the appropriate type (strings, ints, etc. in the receiver and reflect.Value in the returned reflect.Value).

Value[]runestringrunesunicodenormrangetableunicode
func runefilter(in reflect.Value) (out reflect.Value) {
    out = in // Make sure you return something
    if in.Kind() == reflect.String {
        instr := in.String()
        t := transform.Chain(norm.NFD, runes.Remove(runes.NotIn(rangetable.Merge(unicode.Letter, unicode.Latin, unicode.Number))), norm.NFC)
        outstr, _, _ := transform.String(t, instr)
        out = reflect.ValueOf(outstr)
    }
    return
}

Now, I think I've tried just about anything, but I keep ending up with a series of strings which are far from the Latin range, e.g.: