From 7c936e23511751517237de0bfa7bc5263190bdab Mon Sep 17 00:00:00 2001 From: Kateliev Date: Wed, 2 Oct 2024 08:45:34 +0300 Subject: [PATCH] [Proxy] [Core] [FL] Font, Glyph [Update]: - Set Stems --- Lib/typerig/proxy/fl/objects/font.py | 7 ++++-- Scripts/TypeRig GUI/Panel/Glyph.py | 33 ++++++++++++++++++---------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/Lib/typerig/proxy/fl/objects/font.py b/Lib/typerig/proxy/fl/objects/font.py index 695e312..1f3ef00 100644 --- a/Lib/typerig/proxy/fl/objects/font.py +++ b/Lib/typerig/proxy/fl/objects/font.py @@ -24,7 +24,7 @@ from typerig.proxy.fl.objects.glyph import pGlyph, eGlyph # - Init --------------------------------- -__version__ = '0.28.9' +__version__ = '0.29.0' # - Keep compatibility for basestring checks try: @@ -438,8 +438,11 @@ def update(self): self.updateObject(self.fl, verbose=False) # - Hinting -------------------------------------------------------- - def setStem(self, stem_value, stem_name='', stem_is_horizontal=False, stem_type_TT=False): + def setStem(self, stem_value, stem_name='', stem_is_horizontal=False, stem_type_TT=False, layer=None): new_stem = fl6.flStem(stem_value, stem_name) + + if layer is not None: + self.fl.setMaster(layer) if stem_type_TT: if stem_is_horizontal: diff --git a/Scripts/TypeRig GUI/Panel/Glyph.py b/Scripts/TypeRig GUI/Panel/Glyph.py index df2ffe7..7774824 100644 --- a/Scripts/TypeRig GUI/Panel/Glyph.py +++ b/Scripts/TypeRig GUI/Panel/Glyph.py @@ -16,7 +16,7 @@ import fontgate as fgt from typerig.proxy.fl.objects.font import pFont -from typerig.proxy.fl.objects.glyph import pGlyph +from typerig.proxy.fl.objects.glyph import eGlyph from PythonQt import QtCore @@ -31,7 +31,7 @@ pLayers = None pMode = 0 pUndo = True -app_name, app_version = 'TypeRig | Glyph', '1.10' +app_name, app_version = 'TypeRig | Glyph', '1.11' number_token = '#' @@ -149,19 +149,30 @@ def glyph_setBasics(self, mode): def setStem(self, horizontal=False): + # - Init font = pFont() - active_glyph = pGlyph() - selection = active_glyph.selectedNodes(None, True) - - if horizontal: - stem_width = int(abs(selection[0].y - selection[-1].y)) - else: - stem_width = int(abs(selection[0].x - selection[-1].x)) + active_glyph = eGlyph() + + # - Prepare selection + selection = {layer_name:active_glyph.selectedNodes(layer_name, True) for layer_name in active_glyph._prepareLayers(pLayers)} + set_standard_stems = [] - stem_name = '{}.{}:{}'.format(['V','H'][horizontal], active_glyph.name, stem_width) + # - Set name and metadata + stem_name = '{}.{}'.format(['V','H'][horizontal], active_glyph.name) stem_type = self.cmb_select_stem.currentIndex - font.setStem(stem_width, stem_name, horizontal, stem_type) + # - Prepare stems + for layer_name, layer_selection in selection.items(): + if horizontal: + stem_width = int(abs(layer_selection[0].y - layer_selection[-1].y)) + else: + stem_width = int(abs(layer_selection[0].x - layer_selection[-1].x)) + + set_standard_stems.append((stem_width, stem_name, horizontal, stem_type, layer_name)) + + # - Set stems + for stem_data in set_standard_stems: + font.setStem(*stem_data) # - Finish operation global pUndo