This is a bug. grapheme_strlen
should work on the Grapheme Cluster Boundaries defined in Unicode Standard Annex #29 (Unicode Text Segmentation). The standard clearly says not to break between CR and LF.
If you have a look at the PHP source, grapheme_strlen
simply returns the number of characters for ASCII strings.