Source code for fontbakery.profiles.gpos

from fontbakery.callable import check, condition
from fontbakery.status import PASS, WARN
from fontbakery.message import Message

# used to inform get_module_profile whether and how to create a profile
from fontbakery.fonts_profile import profile_factory  # noqa:F401 pylint:disable=W0611

[docs]@condition def has_kerning_info(ttFont): """A font has kerning info if it has a GPOS table containing at least one Pair Adjustment lookup (either directly or through an extension subtable).""" if "GPOS" not in ttFont: return False if not ttFont["GPOS"].table.LookupList: return False for lookup in ttFont["GPOS"].table.LookupList.Lookup: if lookup.LookupType == 2: # type 2 = Pair Adjustment return True elif lookup.LookupType == 9: # type 9 = Extension subtable for ext in lookup.SubTable: if ext.ExtensionLookupType == 2: # type 2 = Pair Adjustment return True
[docs]@check(id="", proposal="legacy:check/063") def com_google_fonts_check_gpos_kerning_info(ttFont): """Does GPOS table have kerning information? This check skips monospaced fonts as defined by post.isFixedPitch value """ if ttFont["post"].isFixedPitch == 0 and not has_kerning_info(ttFont): yield WARN, Message("lacks-kern-info", "GPOS table lacks kerning information.") else: yield PASS, "GPOS table check for kerning information passed."