fonttools/Tests/ttLib/tables/C_B_L_C_test.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

81 lines
3.0 KiB
Python
Raw Permalink Normal View History

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>",
]