This example shows how to draw informative text into the Glyph Editor canvas using merz. Two labels with date and time since the last edit in the glyph are updated using subscriber.

from datetime import datetime
from mojo.subscriber import Subscriber, registerGlyphEditorSubscriber

class DrawTextAtPointExample(Subscriber):

    debug = True

    def build(self):
        glyphEditor = self.getGlyphEditor()
        self.container = glyphEditor.extensionContainer(
            identifier="com.roboFont.DrawTextAtPointExample.foreground",
            location="foreground",
            clear=True
        )
        self.lastEditDateLayer = self.container.appendTextLineSublayer(
            position=(100, -50),
            pointSize=12,
            backgroundColor=(0, 0, 0, 0.25),
            fillColor=(0, 0, 0, 1),
            horizontalAlignment="center",
            cornerRadius=5,
            padding=(2, 1)
        )
        self.lastEditTimeLayer = self.container.appendTextLineSublayer(
            position=(100, -100),
            pointSize=12,
            backgroundColor=(0, 0, 0, 0.25),
            fillColor=(0, 0, 0, 1),
            horizontalAlignment="center",
            cornerRadius=5,
            padding=(2, 1)
        )
        self.updateTexts()

    def destroy(self):
        self.container.clearSublayers()

    def glyphDidChange(self, info):
        self.updateTexts()

    def glyphEditorDidSetGlyph(self, info):
        self.updateTexts()

    def updateTexts(self):
        now = datetime.now()
        self.lastEditDateLayer.setText(f"{now:%d/%m/%y}")
        self.lastEditTimeLayer.setText(f"{now:%H:%M:%S}")


if __name__ == '__main__':
    registerGlyphEditorSubscriber(DrawTextAtPointExample)

Last edited on 15/07/2021