private void FillGraphemeClusterBoundaries(TinyFont font) { GlyphMetadataAppendix metadata = font.GetOrAddNewAppendix <GlyphMetadataAppendix>(); byte[] clusterBoundaries = Resources.GraphemeBreakProperty; BitArray data = new BitArray(0); foreach (CharacterInfo info in font.EnumerateAllCharacterInfos()) { byte property = FindClusterProperty(clusterBoundaries, info.Codepoint); data.AppendLsb(property, 4); } byte[] setData = new byte[(data.Length + 7) / 8]; data.CopyTo(setData, 0); metadata.Sets.Add(setData); GlyphMetadataAppendix.MetadataSetOffset offset = new GlyphMetadataAppendix.MetadataSetOffset(); offset.Id = GlyphMetadataAppendix.GraphemeSet; offset.Bits = GlyphMetadataAppendix.MetadataSetBitLength.Four; metadata.SetsOffsets.Add(offset); }