table_builder: check for OverflowErrors upfront so we can print offending glyph name
diff --git a/Lib/fontTools/colorLib/table_builder.py b/Lib/fontTools/colorLib/table_builder.py
index 763115b..506e7db 100644
--- a/Lib/fontTools/colorLib/table_builder.py
+++ b/Lib/fontTools/colorLib/table_builder.py
@@ -5,10 +5,12 @@
import collections
import enum
+import struct
from fontTools.ttLib.tables.otBase import (
BaseTable,
FormatSwitchingBaseTable,
UInt8FormatSwitchingBaseTable,
+ OTTableWriter,
)
from fontTools.ttLib.tables.otConverters import (
ComputedInt,
@@ -86,6 +88,7 @@
if callbackTable is None:
callbackTable = {}
self._callbackTable = callbackTable
+ self._dummy_writer = OTTableWriter()
def _convert(self, dest, field, converter, value):
enumClass = getattr(converter, "enumClass", None)
@@ -118,6 +121,14 @@
elif callable(converter):
value = converter(value)
+ if isinstance(converter, (IntValue, FloatValue)):
+ try:
+ converter.write(
+ self._dummy_writer, font=None, tableDict=None, value=value
+ )
+ except (AssertionError, struct.error) as e:
+ raise OverflowError(value) from e
+
setattr(dest, field, value)
def build(self, cls, source):