blob: fed25f99a87dcf31a1b1c4156a90cecbf639b124 [file] [log] [blame]
import base64
import io
import os
from fontTools.misc.testTools import getXML
from fontTools.ttLib import TTFont
DATA_DIR = os.path.join(os.path.abspath(os.path.dirname(__file__)), "data")
# This is a subset from NotoColorEmoji.ttf which contains an IndexTable format=3
INDEX_FORMAT_3_TTX = os.path.join(DATA_DIR, "NotoColorEmoji.subset.index_format_3.ttx")
# The CLBC table was compiled with Harfbuzz' hb-subset and contains the correct padding
CBLC_INDEX_FORMAT_3 = base64.b64decode(
"AAMAAAAAAAEAAAA4AAAALAAAAAIAAAAAZeWIAAAAAAAAAAAAZeWIAAAAAAAAAAAAAAEAA"
"21tIAEAAQACAAAAEAADAAMAAAAgAAMAEQAAAAQAAAOmEQ0AAAADABEAABERAAAIUg=="
)
def test_compile_decompile_index_table_format_3():
font = TTFont()
font.importXML(INDEX_FORMAT_3_TTX)
buf = io.BytesIO()
font.save(buf)
buf.seek(0)
font = TTFont(buf)
assert font.reader["CBLC"] == CBLC_INDEX_FORMAT_3
assert getXML(font["CBLC"].toXML, font) == [
'<header version="3.0"/>',
'<strike index="0">',
" <bitmapSizeTable>",
' <sbitLineMetrics direction="hori">',
' <ascender value="101"/>',
' <descender value="-27"/>',
' <widthMax value="136"/>',
' <caretSlopeNumerator value="0"/>',
' <caretSlopeDenominator value="0"/>',
' <caretOffset value="0"/>',
' <minOriginSB value="0"/>',
' <minAdvanceSB value="0"/>',
' <maxBeforeBL value="0"/>',
' <minAfterBL value="0"/>',
' <pad1 value="0"/>',
' <pad2 value="0"/>',
" </sbitLineMetrics>",
' <sbitLineMetrics direction="vert">',
' <ascender value="101"/>',
' <descender value="-27"/>',
' <widthMax value="136"/>',
' <caretSlopeNumerator value="0"/>',
' <caretSlopeDenominator value="0"/>',
' <caretOffset value="0"/>',
' <minOriginSB value="0"/>',
' <minAdvanceSB value="0"/>',
' <maxBeforeBL value="0"/>',
' <minAfterBL value="0"/>',
' <pad1 value="0"/>',
' <pad2 value="0"/>',
" </sbitLineMetrics>",
' <colorRef value="0"/>',
' <startGlyphIndex value="1"/>',
' <endGlyphIndex value="3"/>',
' <ppemX value="109"/>',
' <ppemY value="109"/>',
' <bitDepth value="32"/>',
' <flags value="1"/>',
" </bitmapSizeTable>",
" <!-- GlyphIds are written but not read. The firstGlyphIndex and",
" lastGlyphIndex values will be recalculated by the compiler. -->",
' <eblc_index_sub_table_3 imageFormat="17" firstGlyphIndex="1" lastGlyphIndex="2">',
' <glyphLoc id="1" name="eight"/>',
' <glyphLoc id="2" name="registered"/>',
" </eblc_index_sub_table_3>",
' <eblc_index_sub_table_3 imageFormat="17" firstGlyphIndex="3" lastGlyphIndex="3">',
' <glyphLoc id="3" name="uni2049"/>',
" </eblc_index_sub_table_3>",
"</strike>",
]