81 lines
3.0 KiB
Python
81 lines
3.0 KiB
Python
|
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>",
|
||
|
]
|