From 075f643fb77e4b287438521a5616b65feb745bc3 Mon Sep 17 00:00:00 2001 From: Imple Lee <80144331+ImpleLee@users.noreply.github.com> Date: Wed, 4 May 2022 18:25:52 +0800 Subject: [PATCH] check font in automatic test (#698) * check font in automatic test * fix `description` in `action.yml` * check font first because it's faster * add link to missing character * fix grammar error * fix grammar error again * fix SHA error * fix one-line error to align with github * fix: make line-number start from 1 --- .github/actions/automatic-test/action.yml | 28 +++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/.github/actions/automatic-test/action.yml b/.github/actions/automatic-test/action.yml index 285d35f5..da352aa0 100644 --- a/.github/actions/automatic-test/action.yml +++ b/.github/actions/automatic-test/action.yml @@ -4,6 +4,34 @@ description: 'Check for obvious errors.' runs: using: "composite" steps: + - name: Prepare FontTools + shell: bash + run: | + pip install fonttools + - name: Check all characters are in the font + shell: python + run: | + from fontTools.ttLib import TTFont + from pathlib import Path + from os import environ as env + + font = TTFont('parts/fonts/proportional.otf') + keys = set(font.getBestCmap().keys()) + + missing = [] + for file in Path('parts/language').glob('*.lua'): + for i, line in enumerate(file.read_text().splitlines()): + for char in line: + if ord(char) not in keys: + missing.append((char, file, i+1)) + + if missing: + print('Missing characters:') + for char, file, i in missing: + print(f"'{char}'({ord(char):x}) in {file} at line {i} (https://github.com/26F-Studio/Techmino/blob/{env['GITHUB_SHA']}/{file}#L{i})") + exit(1) + else: + print('All characters are present in the font.') - uses: ./.github/actions/build-love with: file-path: Techmino.love