rule func (beforeBits catBitmap ) (doLookahead bool , err error )
}{
joiningL : {set : bJoinStart },
joiningD : {set : bJoinStart | bJoinEnd },
joiningT : {keep : bJoinStart , set : bJoinMid },
joiningR : {set : bJoinEnd },
viramaModifier : {set : bVirama },
viramaJoinT : {set : bVirama | bJoinMid },
latinSmallL : {set : bLatinSmallL },
greek : {set : bGreek },
greekJoinT : {set : bGreek | bJoinMid },
hebrew : {set : bHebrew },
hebrewJoinT : {set : bHebrew | bJoinMid },
japanese : {set : bJapanese },
katakanaMiddleDot : {set : bMustHaveJapn },
zeroWidthNonJoiner : {
term : bJoinEnd ,
accept : bJoinMid ,
rule : func (before catBitmap ) (doLookAhead bool , err error ) {
if before &bVirama != 0 {
return false , nil
}
if before &bJoinStart == 0 {
return false , errContext
}
return true , nil
},
},
zeroWidthJoiner : {
rule : func (before catBitmap ) (doLookAhead bool , err error ) {
if before &bVirama == 0 {
err = errContext
}
return false , err
},
},
middleDot : {
term : bLatinSmallL ,
rule : func (before catBitmap ) (doLookAhead bool , err error ) {
if before &bLatinSmallL == 0 {
return false , errContext
}
return true , nil
},
},
greekLowerNumeralSign : {
set : bGreek ,
term : bGreek ,
rule : func (before catBitmap ) (doLookAhead bool , err error ) {
return true , nil
},
},
hebrewPreceding : {
set : bHebrew ,
rule : func (before catBitmap ) (doLookAhead bool , err error ) {
if before &bHebrew == 0 {
err = errContext
}
return false , err
},
},
arabicIndicDigit : {
set : bArabicIndicDigit ,
rule : func (before catBitmap ) (doLookAhead bool , err error ) {
if before &bExtendedArabicIndicDigit != 0 {
err = errContext
}
return false , err
},
},
extendedArabicIndicDigit : {
set : bExtendedArabicIndicDigit ,
rule : func (before catBitmap ) (doLookAhead bool , err error ) {
if before &bArabicIndicDigit != 0 {
err = errContext
}
return false , err
},
},