Знайдіть усі шрифти, використані у файлі Photoshop


54

У мене це є .psd(файл Photoshop), і я намагаюся перетворити його в HTML та CSS.

Я не можу визначити, який шрифт вони використовували в .psd

Як я можу дізнатися, які шрифти використовувались у файлі Photoshop?


Станом на CC2018, 2 зі скриптів нижче та плагін jsx розбиті. Я коментував спеціально для кожного.
Дрю

Відповіді:


63

Залежить від того, як ви хочете отримати інформацію.

На розділ або область тексту

Виберіть інструмент "Текст" ( піктограма T із серіфами) та натисніть на текстову область, щоб відредагувати її. Він покаже, який шрифт використовується у вікні символів.

Усі шрифти, що використовуються з першого погляду

  1. Збережіть або експортуйте графічний документ у форматі PDF
  2. Відкрийте версію PDF в Adobe Reader
  3. Виберіть Файл → Властивості → Шрифти

Тут буде перераховано всі вбудовані шрифти, що використовуються у файлі PSD, за умови, що ви можете їх вставити.

Відсутні шрифти

У інструменті «Символ» перейдіть до вибору шрифту, що випадає. В кінці списку будуть шрифти, які використовуються у зображенні, але відсутні у вашій системі. Вони, як правило, сіріють.

Растровані зображення

Якщо ви бачите будь-які растрові зображення, для яких вам потрібна грань шрифту, найкраще експортувати саме цей розділ у вигляді чіткого окремого зображення та скористатися послугою типу What the Font для визначення шрифту.


23

Збережіть цей скрипт як новий файл у вашому Photoshop> Попередні налаштування> Папка сценаріїв. Назвіть це все, що завгодно, наприклад "Виявити Fonts.jsx"

var p = new ActionReference();

function arrayUnique(a){
    var t = []
        i = a.length;

    while(i--) {
        var f = false,
        n = t.length;

        while (n--) {
            if(a[i] === t[n]) {
                f = true;
            }
        }

        if(!f) {
            t.push(a[i]);
        }
    }
    return t;
}

function findFonts() {
    p.putEnumerated( charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );

    var c = executeActionGet(p).getInteger(charIDToTypeID('NmbL'))+1,
        fonts = [];

    while(c--) {
        var r = new ActionReference(),
            descLayer,
            layerStyles,
            countStyles;

        r.putIndex( charIDToTypeID( 'Lyr ' ), c );

        try {
            descLayer = executeActionGet(r);
        } catch (e) {
            continue;
        }

        if(!descLayer.hasKey(stringIDToTypeID( 'textKey' ))) continue;

        layerStyles = descLayer.getObjectValue(stringIDToTypeID('textKey')).getList(stringIDToTypeID('textStyleRange'));
        countStyles = layerStyles.count;

        while(countStyles--) {
            var n = layerStyles.getObjectValue(countStyles).getObjectValue(stringIDToTypeID('textStyle')).getString(stringIDToTypeID('fontPostScriptName'));
            fonts.push(n);
        }
    }

    return arrayUnique(fonts).sort();
}

if (documents.length) {
    var d = findFonts();
    alert(d.length +' fonts found\n'+d.join('\n'));
} else {
    alert('No fonts used in the active document.',);
}

введіть тут опис зображення


1
+500000 балів. Неймовірно.
Половина божевільної


Щоб написати текст у буфер обміну, використовуйте цю відповідь: stackoverflow.com/a/13983268/1578857
Діма Куріло,

(Photoshop CC2018) Помилка 8500: Запитана властивість не існує. Рядок 53: var n = layerStyles.getObjectValue (countStyles) .getObjectValue (stringIDToTypeID ('textStyle')). GetString (stringIDToTypeID ('fontPostScriptName'));
Дрю

@Drew Я збираюся опублікувати оновлену відповідь із фіксованою версією сценарію
agrath

8

Формат файлу PSD документується Adobe - ви можете прочитати, як він зберігає інформацію про шрифт.

Потім ви можете вивчити шістнадцятковий дамп файлу і використовувати специфікацію формату файлу для пошуку шрифтів.

Крім того, імена шрифтів повинні бути видимими у висновку stringsутиліти, знайденої в системах Linux / Unix.


2
+1: Я придумав таке ж рішення. Чомусь GIMP не імпортував PSD правильно, і я не знав, який шрифт використовується. Я проаналізував файл PSD в редакторі HEX, щоб знайти його (Шукати: "Шрифт" як TEXT). Рекомендований редактор: "благословити".
lepe

5

Це насправді дуже просто зробити за допомогою скриптів PS, які можуть перебирати шари вашого PSD та витягувати дані текстового шару.

Нещодавно я експериментував із сценарієм на основі JavaScript, щоб накласти інформацію про шрифт безпосередньо на компі, що доставляються розробникам. Це ще не закінчено, але якщо все ще є інтерес (я бачу, це досить старе), я можу створити швидку та брудну версію, яка просто спливає шрифти, використані у вікні.

ОНОВЛЕННЯ: Я зібрав грубу, але працюючу "Lite" версію розробленого сценарію. Не соромтеся робити внесок - https://github.com/davidklaw/completer . Для незнайомих зі сценаріями просто візьміть файл сценарію і покладіть його у папку пресетів PS / скриптів, і він буде доступний у меню Файл -> Сценарії.


Питання може бути старим, але воно має майже 6000 переглядів. Якби ви могли надати сценарій, це було б дуже вдячно! Ласкаво просимо до Супер Користувача!
slhck

Гарний дзвінок. Проект GitHub з відкритим кодом працює. Якщо хтось знайомий з базовим JavaScript, він повинен почувати себе як вдома.
Девід

Нічого це насправді працює дуже добре: D (y)!
Ejaz

4

Швидкий і простий спосіб знайти відсутні шрифти

  1. Windows -> Персонаж У маленькому полі символів відобразиться інформація про шрифти.

  2. Виберіть спадне ім’я шрифту та прокрутіть до кінця вниз.

  3. Ви побачите список відсутніх шрифтів світло-сірого кольору в кінці списку шрифтів.

введіть тут опис зображення

Від: http://www.bala-krishna.com/how-to-find-fonts-used-in-psd-file/


Існує чимало способів увімкнути цю панель: Додатковим є Тип -> Панелі -> Символ.
martixy

3

Якщо текст уже був растрований, найпростішим способом було б обрізати область за допомогою шрифту, який ви хочете визначити, зберегти як .png і завантажити його в WhatTheFont , де він повинен мати можливість розповісти вам, що це таке, якщо тільки він є незрозумілим або замовним.

Identifont - це ще один веб-сайт, який ви можете використовувати, де ви описуєте характеристики шрифту.


текст не растрований, означає його в окремому шарі.
Дейв

2
@Dave: Якщо текст все-таки редагується, все, що вам потрібно зробити, - це вибрати його і подивитися, що відображається у спадному меню шрифту або на палітрі інформації. Це справді очевидно!
парадороїд

1

Я б зробив короткий текст потрібного вам тексту (бажано, щоб збільшити його масштаб) і використати WhatTheFont, щоб отримати певні здогадки. (Чи не повинен відображатися шрифт під час відкриття PSD та вибору відповідного тексту?)

І звичайно, якщо це не безпечний веб-шрифт, вам потрібно буде знайти відповідний спосіб його заміни або надання резервного стека.


1

Використовуйте Creative Cloud Extract

У ньому буде перераховано всі використовувані шрифти (серед інших зручних речей).


Схоже, він має певний потенціал, але для цього потрібна установка DreamWeaver ..
Дрю

1

На основі оригінальної відповіді Девіда (DetectFonts.jsx) я змінив сценарій, щоб виправити проблему, про яку повідомив Дрю в коментарях: Знайдіть усі шрифти, використані у файлі Photoshop .

Дотримуйтесь оригінальних інструкцій, але використовуйте це тіло скрипта - лише відмінність - це кілька нульових перевірок (мабуть, різниця у версії Photoshop або щось пов'язане з відсутніми даними про конкретні типи об'єктів, ймовірно, дизайнера чи операційної системи)

Я також надішлю запит на тягнення до https://github.com/dcondrey/DetectFontsinPSD

var p = new ActionReference();

function arrayUnique(a) {
    var t = []
    i = a.length;

    while (i--) {
        var f = false,
            n = t.length;

        while (n--) {
            if (a[i] === t[n]) {
                f = true;
            }
        }

        if (!f) {
            t.push(a[i]);
        }
    }
    return t;
}

function findFonts() {
    p.putEnumerated(charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));

    var c = executeActionGet(p).getInteger(charIDToTypeID('NmbL')) + 1,
        fonts = [];

    while (c--) {
        var r = new ActionReference(),
            descLayer,
            layerStyles,
            countStyles;

        r.putIndex(charIDToTypeID('Lyr '), c);

        try {
            descLayer = executeActionGet(r);
        } catch (e) {
            continue;
        }

        if (!descLayer.hasKey(stringIDToTypeID('textKey'))) continue;

        layerStyles = descLayer.getObjectValue(stringIDToTypeID('textKey')).getList(stringIDToTypeID('textStyleRange'));
        if(!layerStyles) continue;

        countStyles = layerStyles.count;

        while (countStyles--) {
            var textStyle = layerStyles.getObjectValue(countStyles).getObjectValue(stringIDToTypeID('textStyle'));
            if(!textStyle || !textStyle.hasKey(stringIDToTypeID('fontPostScriptName'))) continue;

            var n = textStyle.getString(stringIDToTypeID('fontPostScriptName'));
            fonts.push(n);
        }
    }

    return arrayUnique(fonts).sort();
}

if (documents.length) {
    var d = findFonts();
    alert(d.length + ' fonts found\n' + d.join('\n'));
} else {
    alert('No fonts used in the active document.');
}

0

Відкрийте Photoshop. Перейдіть до Windows »Персонаж . Вискочить невеликий ящик. Просто виберіть текстовий шар, і у вікні буде вказано сімейство шрифтів, розмір та ін.



0

Розробник попросив мене майже так само, як вам потрібно. Я придумав редагування простого сценарію, щоб експортувати властивості шару (текст, ім'я шрифту, розмір шрифту, колір шрифту), які вам потрібні при розробці, до одного файлу txt (повинен працювати на машині Windows).

Просто збережіть таке, як "ExportTexts.js" і покладіть в Adobe Photoshop> Попередні налаштування> Сценарії.

Після цього запустіть (або перезавантажте) Photoshop і запустіть скрипт (Файл -> Сценарії -> ЕкспортТексти). Також переконайтесь, що ви розгрупували всі шари, перш ніж це робити. Експортований файл повинен знаходитись у тому ж режимі, що й файл psd.

if (documents.length > 0)
{
    var docRef = activeDocument;
    CurrentFolder = activeDocument.path;
    var outputFile = new File(CurrentFolder + "/" + activeDocument.name + "fonts.txt" );
    outputFile.open("w");
    for (var i = docRef.layers.length-1 ; i >=0 ; i--)
    {
        docRef.activeLa`enter preformatted text here`yer = docRef.layers[i]
        if (docRef.activeLayer.kind == LayerKind.TEXT)
        {
            outputFile.write( 
            docRef.activeLayer.textItem.contents + "\n" + 
            docRef.activeLayer.textItem.font +"," +
            docRef.activeLayer.textItem.size +"," +
            docRef.activeLayer.textItem.color.rgb.hexValue  + "\n\n\n");
        }
    }
    outputFile.close();
    alert("Finished");
}
else
{
    alert("You must have at least one open document to run this script!");
}
docRef = null

Ваш сценарій розбитий у рядку 8
Давидконрей

І на рядку 12. Помилки 8500, властивості не існує: outputFile.write (.
Дрю

0

Є безкоштовне розширення / панель Photoshop, яке може зробити цю роботу за вас, безкоштовний детектор шрифтів Photoshop ( http://www.layerhero.com/photoshop-font-detector/ ), і якщо ви хочете збирати / копіювати файли шрифтів із системи папку, спробуйте Photoshop Art Packer ( http://www.layerhero.com/photoshop-art-packer/ )


"Безкоштовний детектор шрифтів Photoshop" більше не доступний як безкоштовне завантаження і тепер є частиною дорогого розширення FontHero за 39 доларів .
paulmz

Жоден із них не доступний. LayerHero мертвий. Дивно, але ви можете завантажити детектор шрифтів з машини WayBack : web.archive.org/web/20171211184218/http://www.layerhero.com/… Однак я не зміг його встановити, з менеджером розширень Анастасії або Adobe ExMan.
Дрю

0

На вкладці "Шари" є опція, яка дозволяє фільтрувати всі шари, щоб показувати лише шрифти. Ви повинні вибрати кожен шар, щоб насправді їх побачити, і це корисно лише в тому випадку, якщо вам потрібно швидко поглянути на них

Сподіваюся, це допоможе комусь через три роки після того, як про це попросили.


0

Мені хотілося знати шрифти документів, а також їхні стилі, розміри, кольори, форматування тощо для веб-розробки та цілей CSS, тому ось що я придумав:

  1. Клацніть піктограму "T" на панелі "Шари", щоб відфільтрувати / переглянути лише текстові шари
  2. Shift + клацніть лівою кнопкою миші верхній шар тексту в палітрі шарів
  3. Прокрутіть до кінця палітри шарів і натисніть Shift + лівою кнопкою миші нижній шар тексту
  4. Клацніть правою кнопкою миші на вибраних шарах у палітрі шарів та виберіть "Скопіювати шари"
  5. Під Документом призначення виберіть Нове
  6. Перейдіть до нового документа, який повинен містити всі ваші шари тексту
  7. Виберіть усі шари тексту ще раз (див. Крок №2 та №3)
  8. Клацніть піктограму папки в нижній частині палітри Шари, щоб об'єднати всі текстові шари в одну групу
  9. Змініть режим накладання групи (спадне меню у палітрі шарів) на "Нормальний"
  10. Клацніть правою кнопкою миші нову групу
  11. Виберіть "Скопіювати CSS"
  12. Вставте в документ і відформатуйте список стилів за потребою!

-1

Щоб отримати інформацію про шрифти з файлу PSD, ви можете використовувати онлайн-інструменти, якщо ви не можете або не будете використовувати Photoshop (або якщо ви віддаєте перевагу використовувати Gimp, що розширює шрифти PSD).

Наприклад, ви можете спробувати цей веб-екстрактор шрифту html5 PSD "Отримати шрифти PSD".

Це екстрактор інформації про шрифти PSD, заснований на проекті Melitingice Github psd.js , який не потребує завантаження файлів, які працюють локально на сторінці веб-переглядача.


Він відкриває файл у javascript, не надсилаючи його на сервер, на вашу власну сторінку браузера! Ви повинні скинути файл, щоб вказати шлях до файлу ...
Giovazz89

Ви можете розкрити будь-яке співвідношення із згаданими проектами, навіть якщо вони безкоштовні.
Подорожник Geek
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.