[Git][reproducible-builds/diffoscope][master] Add support for ttx(1) from fonttools. (Re: reproducible-builds/diffoscope#315)
Chris Lamb (@lamby)
gitlab at salsa.debian.org
Wed Oct 26 17:54:03 UTC 2022
Chris Lamb pushed to branch master at Reproducible Builds / diffoscope
Commits:
fe8326a8 by Chris Lamb at 2022-10-26T10:53:26-07:00
Add support for ttx(1) from fonttools. (Re: reproducible-builds/diffoscope#315)
- - - - -
6 changed files:
- debian/control
- debian/tests/control
- diffoscope/comparators/fonts.py
- diffoscope/external_tools.py
- tests/comparators/test_fonts.py
- + tests/data/ttf_ttx_expected_diff
Changes:
=====================================
debian/control
=====================================
@@ -29,6 +29,7 @@ Build-Depends:
ffmpeg <!nocheck>,
flake8 <!nocheck>,
fontforge-extras <!nocheck>,
+ fonttools <!nocheck>,
fp-utils [!ppc64el !s390x] <!nocheck>,
ghc <!nocheck>,
ghostscript <!nocheck>,
=====================================
debian/tests/control
=====================================
@@ -7,7 +7,7 @@
# $ mv debian/tests/control.tmp debian/tests/control
Tests: pytest-with-recommends
-Depends: python3-all, diffoscope, black, python3-pytest, python3-h5py, file, linux-image-amd64 [amd64] | linux-image-generic [amd64], abootimg, acl, apksigner, apktool [!ppc64el !s390x], binutils-multiarch, bzip2, caca-utils, colord, coreboot-utils, db-util, default-jdk-headless | default-jdk | java-sdk, device-tree-compiler, docx2txt, e2fsprogs, enjarify, ffmpeg, fontforge-extras, fp-utils [!ppc64el !s390x], genisoimage, gettext, ghc, ghostscript, giflib-tools, gnumeric, gnupg, gnupg-utils, hdf5-tools, imagemagick, jsbeautifier, libarchive-tools, libxmlb-dev, llvm, lz4 | liblz4-tool, mono-utils, ocaml-nox, odt2txt, oggvideotools [!s390x], openssh-client, openssl, pgpdump, poppler-utils, procyon-decompiler, python3-pdfminer, r-base-core, rpm2cpio, sng, sqlite3, squashfs-tools, tcpdump, u-boot-tools, unzip, wabt, xmlbeans, xxd, xz-utils, zip, zstd, androguard, python3-argcomplete, python3-binwalk, python3-defusedxml, python3-distro, python3-guestfs, python3-jsondiff, python3-progressbar, python3-pypdf2, python3-debian, python3-pyxattr, python3-rpm, python3-tlsh
+Depends: python3-all, diffoscope, black, python3-pytest, python3-h5py, file, linux-image-amd64 [amd64] | linux-image-generic [amd64], abootimg, acl, apksigner, apktool [!ppc64el !s390x], binutils-multiarch, bzip2, caca-utils, colord, coreboot-utils, db-util, default-jdk-headless | default-jdk | java-sdk, device-tree-compiler, docx2txt, e2fsprogs, enjarify, ffmpeg, fontforge-extras, fonttools, fp-utils [!ppc64el !s390x], genisoimage, gettext, ghc, ghostscript, giflib-tools, gnumeric, gnupg, gnupg-utils, hdf5-tools, imagemagick, jsbeautifier, libarchive-tools, libxmlb-dev, llvm, lz4 | liblz4-tool, mono-utils, ocaml-nox, odt2txt, oggvideotools [!s390x], openssh-client, openssl, pgpdump, poppler-utils, procyon-decompiler, python3-pdfminer, r-base-core, rpm2cpio, sng, sqlite3, squashfs-tools, tcpdump, u-boot-tools, unzip, wabt, xmlbeans, xxd, xz-utils, zip, zstd,
Tests: pytest
Depends: python3-all, diffoscope, python3-pytest, python3-h5py, file, python3-tlsh
=====================================
diffoscope/comparators/fonts.py
=====================================
@@ -2,7 +2,7 @@
# diffoscope: in-depth comparison of files, archives, and directories
#
# Copyright © 2014-2015 Jérémy Bobbio <lunar at debian.org>
-# Copyright © 2015-2018, 2020 Chris Lamb <lamby at debian.org>
+# Copyright © 2015-2018, 2020, 2022 Chris Lamb <lamby at debian.org>
#
# diffoscope is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -19,6 +19,7 @@
import re
+from diffoscope.exc import RequiredToolNotFound
from diffoscope.tools import tool_required
from diffoscope.difference import Difference
@@ -35,9 +36,23 @@ class Showttf(Command):
return line.decode("latin-1").encode("utf-8")
+class Ttx(Command):
+ @tool_required("ttx")
+ def cmdline(self):
+ return ["ttx", "-o-", self.path]
+
+
class TtfFile(File):
DESCRIPTION = "TrueType font files"
FILE_TYPE_RE = re.compile(r"^(TrueType|OpenType) font data", re.IGNORECASE)
def compare_details(self, other, source=None):
- return [Difference.from_operation(Showttf, self.path, other.path)]
+ xs = []
+
+ for x in (Showttf, Ttx):
+ try:
+ xs.append(Difference.from_operation(x, self.path, other.path))
+ except RequiredToolNotFound as exc:
+ self.add_comment(exc.get_comment())
+
+ return xs
=====================================
diffoscope/external_tools.py
=====================================
@@ -216,6 +216,7 @@ EXTERNAL_TOOLS = {
"wasm2wat": {"debian": "wabt", "arch": "wabt", "guix": "wabt"},
"tar": {"debian": "tar", "arch": "tar", "guix": "tar"},
"tcpdump": {"debian": "tcpdump", "arch": "tcpdump", "guix": "tcpdump"},
+ "ttx": {"debian": "fonttools"},
"unsquashfs": {
"debian": "squashfs-tools",
"arch": "squashfs-tools",
=====================================
tests/comparators/test_fonts.py
=====================================
@@ -46,11 +46,14 @@ def differences(ttf1, ttf2):
@skip_unless_tools_exist("showttf")
+ at skip_unless_tools_exist("ttx")
def test_diff(differences):
assert_diff(differences[0], "ttf_expected_diff")
+ assert_diff(differences[1], "ttf_ttx_expected_diff")
@skip_unless_tools_exist("showttf")
+ at skip_unless_tools_exist("ttx")
def test_compare_non_existing(monkeypatch, ttf1):
monkeypatch.setattr(Config(), "new_file", True)
difference = ttf1.compare(MissingFile("/nonexisting", ttf1))
=====================================
tests/data/ttf_ttx_expected_diff
=====================================
@@ -0,0 +1,51 @@
+@@ -216,15 +216,15 @@
+ <GlyphID id="210" name="uni0D41_uni0D4D"/>
+ </GlyphOrder>
+
+ <head>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="1.0"/>
+ <fontRevision value="1.2"/>
+- <checkSumAdjustment value="0x2d668113"/>
++ <checkSumAdjustment value="0x2966810f"/>
+ <magicNumber value="0x5f0f3cf5"/>
+ <flags value="00000000 00011111"/>
+ <unitsPerEm value="1024"/>
+ <created value="Fri Jan 6 19:21:03 2006"/>
+ <modified value="Tue May 11 11:54:49 2010"/>
+ <xMin value="-335"/>
+ <yMin value="-472"/>
+@@ -12752,15 +12752,15 @@
+ <namerecord nameID="1" platformID="1" platEncID="0" langID="0x0" unicode="True">
+ Samyak Malayalam
+ </namerecord>
+ <namerecord nameID="2" platformID="1" platEncID="0" langID="0x0" unicode="True">
+ Medium
+ </namerecord>
+ <namerecord nameID="3" platformID="1" platEncID="0" langID="0x0" unicode="True">
+- FontForge 2.0 : Samyak Malayalam : 23-6-2015
++ FontForge 2.0 : Samyak Malayalam : 25-6-2015
+ </namerecord>
+ <namerecord nameID="4" platformID="1" platEncID="0" langID="0x0" unicode="True">
+ Samyak Malayalam
+ </namerecord>
+ <namerecord nameID="5" platformID="1" platEncID="0" langID="0x0" unicode="True">
+ Original Version 1.00 (2005)
+ </namerecord>
+@@ -12810,15 +12810,15 @@
+ <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
+ Samyak Malayalam
+ </namerecord>
+ <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
+ Medium
+ </namerecord>
+ <namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
+- FontForge 2.0 : Samyak Malayalam : 23-6-2015
++ FontForge 2.0 : Samyak Malayalam : 25-6-2015
+ </namerecord>
+ <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
+ Samyak Malayalam
+ </namerecord>
+ <namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
+ Original Version 1.00 (2005)
+ </namerecord>
View it on GitLab: https://salsa.debian.org/reproducible-builds/diffoscope/-/commit/fe8326a8e8bc33ef446be9066aa4587f6b2e9500
--
View it on GitLab: https://salsa.debian.org/reproducible-builds/diffoscope/-/commit/fe8326a8e8bc33ef446be9066aa4587f6b2e9500
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.reproducible-builds.org/pipermail/rb-commits/attachments/20221026/e2293264/attachment.htm>
More information about the rb-commits
mailing list