diff options
| author | Kaalleen <36401965+kaalleen@users.noreply.github.com> | 2025-10-10 10:25:49 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-10 10:25:49 +0200 |
| commit | 2c295ace644a27b7d1523c047e168aac2ead03dc (patch) | |
| tree | 436f73eb6b788c3ac68fdda3b1e15fac27a8eef0 /lib/gui/edit_json/main_panel.py | |
| parent | 31cebe4228be707a1fe0a8727044fbc7271dd4b3 (diff) | |
Edit json: allow 0 values for horiz_adv_x_default (#3965)
* edit json: allow 0 values for horiz_adv_x_default and enable None for using the glyph width
* enable None value in generate json too
Diffstat (limited to 'lib/gui/edit_json/main_panel.py')
| -rw-r--r-- | lib/gui/edit_json/main_panel.py | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/lib/gui/edit_json/main_panel.py b/lib/gui/edit_json/main_panel.py index bd43f523..7cf82ab7 100644 --- a/lib/gui/edit_json/main_panel.py +++ b/lib/gui/edit_json/main_panel.py @@ -125,12 +125,25 @@ class LetteringEditJsonPanel(wx.Panel): event.Skip() def on_horiz_adv_x_default_changed(self, event=None): - self.font_meta['horiz_adv_x_default'] = event.GetValue() + value = event.GetValue() + if not self.settings_panel.font_kerning.horiz_adv_x_default_null_checkbox.IsChecked(): + self.update_horiz_adv_x_default(value) + + def on_horiz_adv_x_default_checkbox_changed(self, event=None): + value = event.IsChecked() + if value is False: + value = self.settings_panel.font_kerning.horiz_adv_x_default.GetValue() + else: + value = None + self.update_horiz_adv_x_default(value) + + def update_horiz_adv_x_default(self, value): + self.font_meta['horiz_adv_x_default'] = value glyph_list = self.settings_panel.glyph_list for i in range(glyph_list.ItemCount): - selected = glyph_list.IsItemChecked(i) + checked = glyph_list.IsItemChecked(i) glyph = glyph_list.GetItem(i, 1).Text - if selected: + if checked: self.horiz_adv_x[glyph] = self.font_meta['horiz_adv_x_default'] self.update_preview() @@ -341,8 +354,10 @@ class LetteringEditJsonPanel(wx.Panel): self.settings_panel.font_kerning.min_scale.SetValue(self.font.min_scale) if self.font.horiz_adv_x_default is None: self.settings_panel.font_kerning.horiz_adv_x_default.SetValue(0.0) + self.settings_panel.font_kerning.horiz_adv_x_default_null_checkbox.SetValue(True) else: self.settings_panel.font_kerning.horiz_adv_x_default.SetValue(self.font.horiz_adv_x_default) + self.settings_panel.font_kerning.horiz_adv_x_default_null_checkbox.SetValue(False) self.settings_panel.font_kerning.horiz_adv_x_space.SetValue(self.font.word_spacing) def update_filter_list(self): @@ -423,13 +438,9 @@ class LetteringEditJsonPanel(wx.Panel): with open(json_file, 'r') as font_data: data = json.load(font_data) - horiz_adv_x_default = self.font_meta['horiz_adv_x_default'] - if horiz_adv_x_default == 0: - horiz_adv_x_default = None - for key, val in self.font_meta.items(): data[key] = val - horiz_adv_x = {key: val for key, val in self.horiz_adv_x.items() if val != self.font_meta['horiz_adv_x_default']} + horiz_adv_x = {key: val for key, val in self.horiz_adv_x.items() if key and val != self.font_meta['horiz_adv_x_default']} kerning_pairs = {key: val for key, val in self.kerning_pairs.items() if val != 0} data['horiz_adv_x'] = horiz_adv_x data['kerning_pairs'] = kerning_pairs @@ -514,12 +525,14 @@ class LetteringEditJsonPanel(wx.Panel): node.set('transform', transform) horiz_adv_x_default = self.font_meta['horiz_adv_x_default'] - if horiz_adv_x_default in [0, None]: + if horiz_adv_x_default is None: horiz_adv_x_default = glyph.width + glyph.min_x + horiz_adv_x = self.font.horiz_adv_x.get(character, horiz_adv_x_default) # in some rare cases, horiz_adv_x for a character returns None # so we need to really ensure that the default is used in this case - horiz_adv_x = self.font.horiz_adv_x.get(character, horiz_adv_x_default) or horiz_adv_x_default + if horiz_adv_x is None: + horiz_adv_x = horiz_adv_x_default position_x += horiz_adv_x - glyph.min_x self.font._update_commands(node, glyph) |
