Шрифты MacOS PostScript Type 1 после сжатия в Python составляют 0 байтов. Make_archiv - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть куча старых шрифтов Mac PostScript Typ 1, которые я хочу сжать в zip-файл.После сжатия папки со шрифтами в ней я распаковываю zip-файл, и все шрифты внутри показывают 0 байтов и больше не могут использоваться.

Они выглядят так, до сжатия:

Mac PostScript Type 1 Fonts before compression

И так после сжатия: Mac PostScript Type 1 Fonts after compression

Мой код:

shutil.make_archive(ordner, 'zip', ordner)

Сжатие шрифта-директория с программой архивирования nativ MacOS не повреждает шрифты.

Обновление: Я пытался сжать свои файлы оригинальным Unix-Tool через командную строку (Терминал).С этим кодом:

zip -r -X compressed_directory.zip directory_to_be_compressed/

Я получаю тот же сломанный результат.Таким образом, я думаю, что столкнулся с проблемой, которая лежит на более глубоком уровне Mac OS.

Обновление: Как предложено benwiggy, я попробовал следующее без флага -X.Тот же результат:

 zip -r compressed_directory.zip directory_to_be_compressed/

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

После дальнейших исследований старых MacOS Resource Forks и большого количества тестирования я не нашел способа включить ветку ресурсов старых шрифтов MacOS Post Script Type 1 в файл .zip без использования собственной «Утилиты архивирования» или некоторых другихдругие сторонние инструменты, такие как Keka.Команда Python shutil.make_archiv() не включает в себя ветку ресурса для этого типа файла, равно как и инструмент командной строки Unix zip.Я нашел некоторую полезную информацию по этой теме в блоге Xhalees (очень красиво и подробно объяснено): http://xahlee.info/UnixResource_dir/macosx.html

Решение, которое я придумал, заключается в вызове команды MacOS Terminal ditto внутри Python с os module и позвольте сделать это работе.

import os
os.system("ditto -ck --rsrc --keepParent directory_to_zip zipped_file.zip")
0 голосов
/ 18 февраля 2019

Старые шрифты PostScript типа 1 используют ветвь ресурсов MacOS для хранения своих данных.Эта часть файловой системы не всегда хорошо обрабатывается инструментами Unix, если только они явно не написаны для работы с вилками ресурсов Mac.

Связанная утилита zip в CLI MacOs должна включать вилки ресурсов по умолчанию (начиная с 10.3).Возможно, утилита python не имеет доступа к Mac-friendly утилите.

Ваша команда zip использует флаг -X, который намеренно исключает расширенные атрибуты файла и другие вещи, которые, вероятно, включают в себя вилки ресурсов.

...