Расширенные атрибуты старого Mac в Snow Leopard
Вопрос
В прошлом году мне пришлось конвертировать старый шрифт Mac примерно с OS 9, чтобы кто-то мог использовать его на ПК.Я обнаружил, что тогда данные шрифта хранились в расширенном атрибуте com.apple.ResourceFork.Фактический размер файла будет отображаться как 0 в терминале.Я смог обойти это, просто распечатав значение этого расширенного атрибута с помощью xattr -p com.apple.ResourceFork шрифт > font.ttf.
Теперь, со Snow Leopard и сжатием файлов HFS +, все изменилось.Если вы сейчас попытаетесь распечатать расширенный атрибут старого стиля, вы получите только шестнадцатеричное значение, а не значение.Новые расширенные атрибуты отображаются без какого-либо шестнадцатеричного значения, если не указано с параметром -x.Вот пример:
xattr -l com.apple.FinderInfo Rublof
Rublof: com.apple.ResourceFork:
00000000 00 00 01 00 00 00 9E 50 00 00 9D 50 00 00 00 32 |.......P...P...2|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
...
Rublof: com.apple.quarantine: 0000;4b75ae02;Mail;39396996-3C5C-48F5-8BDD-775EB40CAD9C|com.apple.mail
Запуск xattr -p на ResourceFork выведет шестнадцатеричный код, запустив его на карантине, вы получите ASCII.Очевидно, Apple изменила способ обработки расширенных атрибутов и, возможно, они забыли о людях, которые все еще используют свои шрифты OS 9.
Есть ли что-то, чего мне здесь не хватает, или мне просто написать скрипт для преобразования шестнадцатеричного значения в ASCII?
Решение
Вы также можете получить доступ к разветвлениям ресурсов, добавив "/rsrc" или "/..namedfork/rsrc" к имени файла.Попробуй cp Rublof/rsrc Rublof.ttf
.Тем не менее, разветвления ресурсов устарели, в то время как расширенные атрибуты - нет.Механизм "/..namedfork" может исчезнуть из будущих выпусков.Если это произойдет, вы можете попробовать xxd преобразовать обратно в двоичный файл:
xattr -p com.apple.ResourceFork Rublof | xxd -r > Rublof.ttf
Другие советы
Преобразование разветвления ресурсов в разветвление данных не даст того, что вам нужно - оно все еще находится в формате разветвления ресурсов, так что ничто не сможет его использовать.Чтобы перевести его в кроссплатформенный формат, вам нужен конвертер, подобный fondu.Он порылся в чемоданчике шрифтов Mac старого образца и извлек ресурсы sfnt (шрифты TrueType и OpenType) в файлы .ttf и .otf, ресурсы POST (шрифты PostScript) - в файлы .pbf, а ресурсы NFNT и ШРИФТОВ (растровые шрифты) - в файлы .bdf.
Кстати, пакет Mac OS / X из раздела загрузки SourceForge выдает мне ошибку при его установке, но, похоже, все равно устанавливается успешно.