blob: 9e5e3f35b5818a11bebf83671ea744f037fb21de [file] [log] [blame]
from pkg_resources import resource_filename
from google.protobuf import text_format
from axisregistry.axes_pb2 import AxisProto
try:
from ._version import version as __version__ # type: ignore
except ImportError:
__version__ = "0.0.0+unknown"
def AxisRegistry():
registry = {}
def get_Protobuf_Message(klass, path):
message = klass()
with open(path, "rb") as text_data:
text_format.Merge(text_data.read(), message)
return message
def normalize_name(name):
return ''.join(name.split(' '))
def append_AxisMessage(path):
axis_dict = {"message": get_Protobuf_Message(AxisProto, path),
"fallbacks": {}}
for fb in axis_dict["message"].fallback: # pylint: disable=E1101
axis_dict["fallbacks"][normalize_name(fb.name)] = fb.value
registry[axis_dict["message"].tag] = axis_dict # pylint: disable=E1101
for axis in ["casual.textproto",
"cursive.textproto",
"fill.textproto",
"flair.textproto",
"grade.textproto",
"italic.textproto",
"monospace.textproto",
"optical_size.textproto",
"slant.textproto",
"softness.textproto",
"volume.textproto",
"weight.textproto",
"width.textproto",
"wonky.textproto",
"x_opaque.textproto",
"x_transparent_figures.textproto",
"x_transparent.textproto",
"y_opaque.textproto",
"y_transparent_ascender.textproto",
"y_transparent_descender.textproto",
"y_transparent_figures.textproto",
"y_transparent_lowercase.textproto",
"y_transparent_uppercase.textproto"]:
append_AxisMessage(resource_filename('axisregistry', 'data/' + axis))
return registry