From a22a40fe2e8049792b9288938d6e527f3309ccbd Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Fri, 23 Aug 2024 22:36:54 +0200 Subject: [PATCH 1/7] fix(linux): add `keymanFacename` to .ldml file This change adds the `keymanFacename` attribute based on UnicodeFont or AnsiFont to the root element of the generated .ldml file so that onboard-keyman can display the proper font for the osk. Fixes: #12019 --- linux/keyman-config/keyman_config/kvk2ldml.py | 6 +++++- linux/keyman-config/tests/test_kvk2ldml.py | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 linux/keyman-config/tests/test_kvk2ldml.py diff --git a/linux/keyman-config/keyman_config/kvk2ldml.py b/linux/keyman-config/keyman_config/kvk2ldml.py index 3b3aee281b..f57cfe2dd4 100755 --- a/linux/keyman-config/keyman_config/kvk2ldml.py +++ b/linux/keyman-config/keyman_config/kvk2ldml.py @@ -349,7 +349,11 @@ def convert_ldml(kvkData): else: keymaps["shift"] = (uskey,) - ldml = etree.Element("keyboard", locale="zzz-keyman") + if kvkData.UnicodeFont: + font = kvkData.UnicodeFont.name + else: + font = kvkData.AnsiFont.name + ldml = etree.Element("keyboard", locale="zzz-keyman", keymanFacename=font) etree.SubElement(ldml, "version", platform="11") names = etree.SubElement(ldml, "names") names.append(etree.Element("name", value="ZZZ")) diff --git a/linux/keyman-config/tests/test_kvk2ldml.py b/linux/keyman-config/tests/test_kvk2ldml.py new file mode 100644 index 0000000000..b3107642a0 --- /dev/null +++ b/linux/keyman-config/tests/test_kvk2ldml.py @@ -0,0 +1,14 @@ +import unittest + +from keyman_config.kvk2ldml import KVKData, NFont, convert_ldml + +class Kvk2LdmlTests(unittest.TestCase): + def test_convert_ldml__adds_keymanFacename(self): + kvkData = KVKData() + kvkData.AssociatedKeyboard = 'khmer_angkor' + kvkData.UnicodeFont = NFont() + kvkData.UnicodeFont.name='KbdKhmr' + + ldml = convert_ldml(kvkData) + self.assertEqual(ldml.get('locale'), "zzz-keyman") + self.assertEqual(ldml.get('keymanFacename'), 'KbdKhmr') From 16ce5b0408b598293f8388b96c4fd49031e4864f Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Sat, 24 Aug 2024 10:07:36 +0800 Subject: [PATCH 2/7] fix(linux): get oskFont from `kmp.json` instead of UnicodeFont --- .../keyman_config/install_kmp.py | 2 +- linux/keyman-config/keyman_config/kvk2ldml.py | 25 ++++++--- linux/keyman-config/km-kvk2ldml | 3 +- linux/keyman-config/tests/test_kvk2ldml.py | 53 ++++++++++++++++--- 4 files changed, 66 insertions(+), 17 deletions(-) diff --git a/linux/keyman-config/keyman_config/install_kmp.py b/linux/keyman-config/keyman_config/install_kmp.py index d82c8e06e5..fed67952ca 100755 --- a/linux/keyman-config/keyman_config/install_kmp.py +++ b/linux/keyman-config/keyman_config/install_kmp.py @@ -177,8 +177,8 @@ class InstallKmp(): # Special handling to convert kvk into LDML logging.info("Converting %s to LDML and installing both as as keyman file", f['name']) - ldml = convert_kvk_to_ldml(fpath) name, ext = os.path.splitext(f['name']) + ldml = convert_kvk_to_ldml(name, fpath) ldmlfile = os.path.join(self.packageDir, f"{name}.ldml") output_ldml(ldmlfile, ldml) elif ftype == KMFileTypes.KM_ICON: diff --git a/linux/keyman-config/keyman_config/kvk2ldml.py b/linux/keyman-config/keyman_config/kvk2ldml.py index f57cfe2dd4..d80fc2c107 100755 --- a/linux/keyman-config/keyman_config/kvk2ldml.py +++ b/linux/keyman-config/keyman_config/kvk2ldml.py @@ -1,11 +1,14 @@ #!/usr/bin/python3 import logging +import os import struct import sys from lxml import etree +from keyman_config.kmpmetadata import parsemetadata + # .kvk file format # KVK files are variable length files with variable sized structures. @@ -311,7 +314,7 @@ def _get_modifer(key): return modifier -def convert_ldml(kvkData): +def convert_ldml(keyboardName, kvkData, kmpJsonFilename): keymaps = {} for key in kvkData.Keys: @@ -349,11 +352,16 @@ def convert_ldml(kvkData): else: keymaps["shift"] = (uskey,) - if kvkData.UnicodeFont: - font = kvkData.UnicodeFont.name - else: - font = kvkData.AnsiFont.name - ldml = etree.Element("keyboard", locale="zzz-keyman", keymanFacename=font) + info, system, options, keyboards, files = parsemetadata(kmpJsonFilename) + + ldml = etree.Element("keyboard", locale="zzz-keyman") + for keyboard in keyboards: + if keyboard['id'] != keyboardName: + continue + if 'oskFont' in keyboard: + ldml.set('keymanFacename', keyboard['oskFont']) + break + etree.SubElement(ldml, "version", platform="11") names = etree.SubElement(ldml, "names") names.append(etree.Element("name", value="ZZZ")) @@ -406,6 +414,7 @@ def parse_kvk_file(kvkfile): return kvkData -def convert_kvk_to_ldml(kvkfile): +def convert_kvk_to_ldml(name, kvkfile): kvkData = parse_kvk_file(kvkfile) - return convert_ldml(kvkData) + kmpJsonFilename = os.path.join(os.path.dirname(kvkfile), 'kmp.json') + return convert_ldml(name, kvkData, kmpJsonFilename) diff --git a/linux/keyman-config/km-kvk2ldml b/linux/keyman-config/km-kvk2ldml index d669dfa72c..34c4e76fdf 100755 --- a/linux/keyman-config/km-kvk2ldml +++ b/linux/keyman-config/km-kvk2ldml @@ -56,7 +56,8 @@ def main(): try: with open(outputfile, 'wb') as ldmlfile: - ldml = convert_ldml(kvkData) + kmpJsonFilename = os.path.join(os.path.dirname(args.kvkfile), 'kmp.json') + ldml = convert_ldml(name, kvkData, kmpJsonFilename) output_ldml(ldmlfile, ldml) except PermissionError: logging.error(f'km-kvk2ldml: error, permission denied writing file `{outputfile}`') diff --git a/linux/keyman-config/tests/test_kvk2ldml.py b/linux/keyman-config/tests/test_kvk2ldml.py index b3107642a0..51b30ab644 100644 --- a/linux/keyman-config/tests/test_kvk2ldml.py +++ b/linux/keyman-config/tests/test_kvk2ldml.py @@ -1,14 +1,53 @@ +import os +import tempfile import unittest from keyman_config.kvk2ldml import KVKData, NFont, convert_ldml class Kvk2LdmlTests(unittest.TestCase): - def test_convert_ldml__adds_keymanFacename(self): - kvkData = KVKData() - kvkData.AssociatedKeyboard = 'khmer_angkor' - kvkData.UnicodeFont = NFont() - kvkData.UnicodeFont.name='KbdKhmr' + def _createKmpJson(self, packagedir): + kmpJsonFilename = os.path.join(packagedir, 'kmp.json') + with open(kmpJsonFilename, 'w') as file: + file.write('''{ + "system": { + "keymanDeveloperVersion": "18.0", + "fileVersion": "7.0" + }, + "files": [ { + "name": "khmer_angkor.kmx", + "description": "Keyboard Khmer Angkor" + }, { + "name": "kmp.json", + "description": "Package information (JSON)" + } ], + "keyboards": [ { + "name": "Khmer Angkor", + "id": "khmer_angkor", + "version": "1.5", + "oskFont": "KbdKhmr.ttf", + "languages": [ { + "name": "Central Khmer (Khmer, Cambodia)", + "id": "km" + } ]} + ]}''') + return kmpJsonFilename - ldml = convert_ldml(kvkData) + def test_convert_ldml__adds_keymanFacename(self): + # Setup + keyboardName = 'khmer_angkor' + kvkData = KVKData() + kvkData.AssociatedKeyboard = keyboardName + kvkData.UnicodeFont = NFont() + kvkData.UnicodeFont.name='DontUseThis!' + + workdir = tempfile.TemporaryDirectory() + kmpJsonFilename = self._createKmpJson(workdir.name) + + # Execute + ldml = convert_ldml(keyboardName, kvkData, kmpJsonFilename) + + # Verify self.assertEqual(ldml.get('locale'), "zzz-keyman") - self.assertEqual(ldml.get('keymanFacename'), 'KbdKhmr') + self.assertEqual(ldml.get('keymanFacename'), 'KbdKhmr.ttf') + + workdir.cleanup() From c99e833c8e78e3ec76ca1da84aef06ae3631ef33 Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Sat, 24 Aug 2024 10:25:57 +0800 Subject: [PATCH 3/7] fix(linux): Add font name without file extension --- linux/keyman-config/keyman_config/kvk2ldml.py | 3 ++- linux/keyman-config/tests/test_kvk2ldml.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/linux/keyman-config/keyman_config/kvk2ldml.py b/linux/keyman-config/keyman_config/kvk2ldml.py index d80fc2c107..4109e37def 100755 --- a/linux/keyman-config/keyman_config/kvk2ldml.py +++ b/linux/keyman-config/keyman_config/kvk2ldml.py @@ -359,7 +359,8 @@ def convert_ldml(keyboardName, kvkData, kmpJsonFilename): if keyboard['id'] != keyboardName: continue if 'oskFont' in keyboard: - ldml.set('keymanFacename', keyboard['oskFont']) + font, ext = os.path.splitext(keyboard['oskFont']) + ldml.set('keymanFacename', font) break etree.SubElement(ldml, "version", platform="11") diff --git a/linux/keyman-config/tests/test_kvk2ldml.py b/linux/keyman-config/tests/test_kvk2ldml.py index 51b30ab644..cd46d10e1f 100644 --- a/linux/keyman-config/tests/test_kvk2ldml.py +++ b/linux/keyman-config/tests/test_kvk2ldml.py @@ -48,6 +48,6 @@ class Kvk2LdmlTests(unittest.TestCase): # Verify self.assertEqual(ldml.get('locale'), "zzz-keyman") - self.assertEqual(ldml.get('keymanFacename'), 'KbdKhmr.ttf') + self.assertEqual(ldml.get('keymanFacename'), 'KbdKhmr') workdir.cleanup() From c8cbc2fefe44c89e76bca8b086f592754b1882a3 Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Sat, 24 Aug 2024 11:31:23 +0800 Subject: [PATCH 4/7] fix(linux): get font facename from .ttf file --- common/resources/fonts/KbdKhmr.ttf | Bin 0 -> 129124 bytes linux/debian/control | 1 + linux/keyman-config/keyman_config/kvk2ldml.py | 15 ++++++++++++++- linux/keyman-config/tests/test_kvk2ldml.py | 6 +++++- 4 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 common/resources/fonts/KbdKhmr.ttf diff --git a/common/resources/fonts/KbdKhmr.ttf b/common/resources/fonts/KbdKhmr.ttf new file mode 100644 index 0000000000000000000000000000000000000000..cceeaba52fe59c7a2e41b3226bc2897fe7aa6608 GIT binary patch literal 129124 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 3.5), python3-dbus, + python3-fonttools, python3-gi, python3-lxml, python3-magic, diff --git a/linux/keyman-config/keyman_config/kvk2ldml.py b/linux/keyman-config/keyman_config/kvk2ldml.py index 4109e37def..dbacfef47c 100755 --- a/linux/keyman-config/keyman_config/kvk2ldml.py +++ b/linux/keyman-config/keyman_config/kvk2ldml.py @@ -5,6 +5,7 @@ import os import struct import sys +from fontTools import ttLib from lxml import etree from keyman_config.kmpmetadata import parsemetadata @@ -314,6 +315,17 @@ def _get_modifer(key): return modifier +def _fontFacename(fontFilename): + """Get the facename from fontFilename's TTF tables""" + # From https://github.com/mcfletch/ttfquery/blob/master/ttfquery/describe.py + FONT_SPECIFIER_NAME_ID = 4 + font = ttLib.TTFont(fontFilename) + for record in font['name'].names: + if record.nameID == FONT_SPECIFIER_NAME_ID: + return record.string + return '' + + def convert_ldml(keyboardName, kvkData, kmpJsonFilename): keymaps = {} @@ -359,7 +371,8 @@ def convert_ldml(keyboardName, kvkData, kmpJsonFilename): if keyboard['id'] != keyboardName: continue if 'oskFont' in keyboard: - font, ext = os.path.splitext(keyboard['oskFont']) + fontFile = os.path.join(os.path.dirname(kmpJsonFilename), keyboard['oskFont']) + font = _fontFacename(fontFile) ldml.set('keymanFacename', font) break diff --git a/linux/keyman-config/tests/test_kvk2ldml.py b/linux/keyman-config/tests/test_kvk2ldml.py index cd46d10e1f..0be6c49701 100644 --- a/linux/keyman-config/tests/test_kvk2ldml.py +++ b/linux/keyman-config/tests/test_kvk2ldml.py @@ -1,4 +1,6 @@ import os +import shutil +import sys import tempfile import unittest @@ -24,7 +26,7 @@ class Kvk2LdmlTests(unittest.TestCase): "name": "Khmer Angkor", "id": "khmer_angkor", "version": "1.5", - "oskFont": "KbdKhmr.ttf", + "oskFont": "KbdKhmrTest.ttf", "languages": [ { "name": "Central Khmer (Khmer, Cambodia)", "id": "km" @@ -42,6 +44,8 @@ class Kvk2LdmlTests(unittest.TestCase): workdir = tempfile.TemporaryDirectory() kmpJsonFilename = self._createKmpJson(workdir.name) + shutil.copyfile(os.path.join(sys.path[0], '../../../common/resources/fonts/KbdKhmr.ttf'), + os.path.join(workdir.name, 'KbdKhmrTest.ttf')) # Execute ldml = convert_ldml(keyboardName, kvkData, kmpJsonFilename) From 50228a8266599fbb34580b6c7321a1a727635949 Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Sat, 24 Aug 2024 12:14:47 +0800 Subject: [PATCH 5/7] fix(linux): properly deal with types of names Names can be Unicode strings or byte arrays. This change allows for both kinds. Also properly deal with the case when we can't get the name from the .ttf file. And finally change the test so that we don't need the `KbdKhmr.ttf` font. --- common/resources/fonts/KbdKhmr.ttf | Bin 129124 -> 0 bytes linux/keyman-config/keyman_config/kvk2ldml.py | 7 ++++--- linux/keyman-config/tests/test_kvk2ldml.py | 8 ++++---- 3 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 common/resources/fonts/KbdKhmr.ttf diff --git a/common/resources/fonts/KbdKhmr.ttf b/common/resources/fonts/KbdKhmr.ttf deleted file mode 100644 index cceeaba52fe59c7a2e41b3226bc2897fe7aa6608..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129124 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 Date: Wed, 28 Aug 2024 16:14:17 +0700 Subject: [PATCH 6/7] fix(linux): display error and abort if fonttools are missing --- linux/keyman-config/keyman_config/__init__.py | 9 +++++++++ linux/keyman-config/km-config | 17 ++++++++++++++++- linux/keyman-config/km-kvk2ldml | 8 +++++++- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/linux/keyman-config/keyman_config/__init__.py b/linux/keyman-config/keyman_config/__init__.py index 2bb3cdbaa2..26fbeddf7d 100644 --- a/linux/keyman-config/keyman_config/__init__.py +++ b/linux/keyman-config/keyman_config/__init__.py @@ -1,5 +1,6 @@ import atexit import gettext +import importlib import logging import os import pathlib @@ -53,6 +54,14 @@ def initialize_sentry(): SentryErrorHandling().initialize_sentry() +def are_requirements_missing(): + try: + ttLib = importlib.import_module('fontTools.ttLib') + except ImportError: + return True + return False + + class FileCleanup(): """ Allow to register files that will be deleted when the process exits diff --git a/linux/keyman-config/km-config b/linux/keyman-config/km-config index f40ebeebb4..641fb96470 100755 --- a/linux/keyman-config/km-config +++ b/linux/keyman-config/km-config @@ -9,7 +9,10 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk -from keyman_config import __versionwithtag__, __pkgversion__, add_standard_arguments, initialize_logging, initialize_sentry, verify_dbus_running +from keyman_config import ( + _, __versionwithtag__, __pkgversion__, add_standard_arguments, + are_requirements_missing, initialize_logging, initialize_sentry, + verify_dbus_running) from keyman_config.handle_install import download_and_install_package from keyman_config.ibus_util import verify_ibus_daemon from keyman_config.view_installed import ViewInstalledWindow @@ -42,6 +45,18 @@ if __name__ == '__main__': initialize_sentry() verify_dbus_running() + if are_requirements_missing(): + if args.install or args.url: + logging.error('Missing requirements. Please install python3-fonttools.') + else: + dialog = Gtk.MessageDialog( + None, 0, Gtk.MessageType.ERROR, + Gtk.ButtonsType.OK, _("Missing requirements. Please install python3-fonttools.")) + dialog.run() + dialog.destroy() + sys.exit(1) + + logging.info('Keyman version %s %s', __versionwithtag__, __pkgversion__) verify_ibus_daemon(False) diff --git a/linux/keyman-config/km-kvk2ldml b/linux/keyman-config/km-kvk2ldml index 34c4e76fdf..2ddddc5bec 100755 --- a/linux/keyman-config/km-kvk2ldml +++ b/linux/keyman-config/km-kvk2ldml @@ -5,7 +5,9 @@ import logging import os import sys -from keyman_config import add_standard_arguments, initialize_logging, initialize_sentry, verify_dbus_running +from keyman_config import ( + are_requirements_missing, add_standard_arguments, initialize_logging, + initialize_sentry, verify_dbus_running) from keyman_config.kvk2ldml import parse_kvk_file, print_kvk, convert_ldml, output_ldml @@ -25,6 +27,10 @@ def main(): initialize_sentry() verify_dbus_running() + if are_requirements_missing(): + logging.error('km-kvk2ldml: Missing requirements. Please install python3-fonttools.') + sys.exit(1) + name, ext = os.path.splitext(args.kvkfile) # Check if input file extension is kvk if ext != ".kvk": From 0918b3985f68ff895fb25d53486e0cbad2307c0f Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Thu, 29 Aug 2024 08:48:06 +0700 Subject: [PATCH 7/7] fix(linux): add dependency --- linux/debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/linux/debian/control b/linux/debian/control index 53d3710098..fbe7066f5c 100644 --- a/linux/debian/control +++ b/linux/debian/control @@ -91,6 +91,7 @@ Depends: gir1.2-webkit2-4.1 | gir1.2-webkit2-4.0, keyman-engine, python3-bs4, + python3-fonttools, python3-gi, python3-packaging, python3-sentry-sdk (>= 1.1),