Znajdź wszystkie czcionki użyte w pliku programu Photoshop


54

Mam to .psd(plik Photoshop) i próbuję przekonwertować go na HTML i CSS.

Jedyne, czego nie mogę określić, to, jakiej czcionki użyli w .psd

Jak mogę dowiedzieć się, jakie czcionki zostały użyte w pliku Photoshop?


Począwszy od CC2018, 2 z poniższych skryptów i wtyczka jsx są uszkodzone. Komentowałem specjalnie dla każdego.
Drew

Odpowiedzi:


63

Zależy od tego, jak chcesz wyodrębnić informacje.

Na sekcję lub obszar tekstowy

Wybierz narzędzie Tekst ( ikona T z serifami) i kliknij obszar tekstowy, aby go edytować. Pokaże, jaka czcionka jest używana w oknie postaci.

Przegląd wszystkich używanych czcionek

  1. Zapisz lub wyeksportuj dokument obrazowy jako plik PDF
  2. Otwórz wersję PDF w Adobe Reader
  3. Wybierz Plik → Właściwości → Czcionki

Spowoduje to wyświetlenie wszystkich czcionek możliwych do osadzenia używanych w pliku PSD, pod warunkiem, że można je osadzić.

Brakujące czcionki

W narzędziu Znak przejdź do listy rozwijanej wyboru czcionek. Na końcu listy znajdują się czcionki używane w obrazie, których brakuje w systemie. Zazwyczaj będą wyszarzone.

Obrazy rastrowe

Jeśli zobaczysz jakieś zrasteryzowane obrazy, których potrzebujesz od strony czcionki, najlepiej wyeksportuj tylko tę sekcję jako wyraźny, samodzielny obraz i użyj usługi, takiej jak Czcionka, aby określić czcionkę.


23

Zapisz ten skrypt jako nowy plik w folderze Photoshop> Ustawienia wstępne> Skrypty. Nadaj mu dowolną nazwę, na przykład „Wykryj fonty.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.',);
}

wprowadź opis zdjęcia tutaj


1
+500000 punktów. Niesamowite.
Half Crazed


Aby pisać tekst w schowku, użyj tej odpowiedzi: stackoverflow.com/a/13983268/1578857
Dima Kurilo

(Photoshop CC2018) Błąd 8500: Żądana właściwość nie istnieje. Wiersz 53: var n = layerStyles.getObjectValue (countStyles) .getObjectValue (stringIDToTypeID ('textStyle')). GetString (stringIDToTypeID ('fontPostScriptName'));
Drew,

@Drew Mam zamiar opublikować zaktualizowaną odpowiedź ze stałą wersją skryptu
agrath,

8

Format pliku PSD jest dokumentowany przez Adobe - możesz przeczytać, jak przechowuje informacje o czcionce.

Następnie możesz sprawdzić zrzut heksadecymalny pliku i użyć specyfikacji formatu pliku, aby znaleźć czcionki.

Alternatywnie nazwy czcionek powinny być widoczne w wynikach stringsnarzędzia znalezionego w systemach Linux / Unix.


2
+1: Wymyśliłem to samo rozwiązanie. Z jakiegoś powodu GIMP nie zaimportował PSD poprawnie i nie wiedziałem, która czcionka została użyta. Analizowałem plik PSD w edytorze HEX, aby go znaleźć (Wyszukaj: „Czcionka” jako TEKST). Zalecany redaktor: „błogosław”.
Lepe

5

W rzeczywistości jest to bardzo łatwe przy użyciu skryptów PS, które mogą iterować warstwy PSD i pobierać dane warstwy tekstowej.

Ostatnio eksperymentowałem ze skryptem opartym na JavaScript, aby nakładać informacje o czcionkach bezpośrednio na kompozycje dostarczane do programistów. Nie jest skończony, ale jeśli nadal jest zainteresowanie (widzę, że jest dość stary), mogę zainstalować szybką i brudną wersję, która po prostu wyskakuje z czcionek używanych w oknie.

AKTUALIZACJA: Stworzyłem szorstką, ale działającą, „lite” wersję skryptu, który tworzę. Zapraszamy do współpracy - https://github.com/davidklaw/completer . Dla tych, którzy nie znają skryptów, po prostu weź plik skryptu i umieść go w folderze PS Presets / Scripts, a będzie on dostępny w menu Plik -> Skrypty.


Pytanie może być stare, ale ma prawie 6000 wyświetleń. Byłoby bardzo mile widziane, gdybyś mógł podać skrypt. Przy okazji, witamy w Super User!
slhck

Dobra decyzja. Projekt GitHub typu open source już działa. Jeśli ktoś zna podstawowy JavaScript, powinien poczuć się jak w domu.
David

wow, to faktycznie działa całkiem dobrze: D (y)!
Ejaz


3

Jeśli tekst został już zrasteryzowany, najłatwiejszym sposobem byłoby wykadrowanie obszaru czcionką, którą chcesz zidentyfikować, zapisanie jako plik .png i przesłanie go do WhatTheFont , gdzie powinien być w stanie powiedzieć ci, co to jest, chyba że jest niejasny lub wykonany na zamówienie.

Identifont to kolejna strona, z której możesz skorzystać, gdzie opisujesz cechy kroju pisma.


tekst nie jest rasteryzowany, co oznacza, że ​​znajduje się w osobnej warstwie.
dave

2
@Dave: Jeśli tekst jest nadal edytowalny, wystarczy go zaznaczyć i zobaczyć, co pojawi się w menu rozwijanym czcionek lub na palecie informacji. To jest naprawdę oczywiste!
paradroid

1

Zrobiłbym krótki tekst, którego potrzebujesz (najlepiej powiększony) i użyłem WhatTheFont, aby uzyskać domysły. (Czy czcionka nie powinna być wyświetlana po otwarciu PSD i zaznaczeniu odpowiedniego tekstu?)

I oczywiście, jeśli nie jest to czcionka bezpieczna dla sieci, musisz znaleźć odpowiedni sposób na jej zastąpienie lub zapewnienie zapasowego stosu.


1

Użyj Creative Cloud Extract

Wyświetla listę wszystkich używanych czcionek (między innymi przydatnych rzeczy).


Wygląda na to, że ma jakiś potencjał, ale wymaga instalacji DreamWeaver ..
Drew,

1

Na podstawie oryginalnej odpowiedzi Davida (DetectFonts.jsx) zmodyfikowałem skrypt, aby naprawić problem zgłoszony przez Drew w komentarzach: Znajdź wszystkie czcionki użyte w pliku Photoshopa .

Postępuj zgodnie z oryginalnymi instrukcjami, ale zamiast tego użyj tego skryptu - jedyną różnicą jest kilka zerowych kontroli (przypuszczalnie albo różnica w wersji Photoshopa, albo coś wspólnego z brakującymi danymi na temat określonych typów obiektów, prawdopodobnie projektanta lub systemu operacyjnego)

Prześlę również żądanie ściągnięcia na 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

Otwórz Photoshop. Przejdź do Windows »Postać . Pojawi się małe pudełko. Wystarczy wybrać warstwę tekstową, a pole pokaże rodzinę czcionek, rozmiar i tak dalej.



0

Deweloper zapytał mnie prawie tak samo, jak potrzebujesz. Wymyśliłem edytowanie prostego skryptu, aby wyeksportować właściwości warstwy (tekst, nazwę czcionki, rozmiar czcionki, kolor czcionki), których potrzebujesz podczas programowania, do pojedynczego pliku txt (powinien działać na komputerze z systemem Windows).

Po prostu zapisz to jak „ExportTexts.js” i wstaw do Adobe Photoshop> Ustawienia wstępne> Skrypty.

Następnie uruchom (lub uruchom ponownie) Photoshop i uruchom skrypt (Plik -> Skrypty -> ExportTexts). Upewnij się również, że nie rozgrupowałeś wszystkich warstw, zanim to zrobisz. Wyeksportowany plik powinien znajdować się w tym samym katalogu, co plik 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

Twój skrypt jest zepsuty w linii 8
davidcondrey

I w wierszu 12. Błąd 8500, właściwość nie istnieje: outputFile.write (.
Drew

0

Istnieje bezpłatny program Photoshop Extension / Panel, który może wykonać tę pracę za Ciebie, darmowy wykrywacz czcionek Photoshop ( http://www.layerhero.com/photoshop-font-detector/ ), a jeśli chcesz zbierać / kopiować pliki czcionek z systemu folder, wypróbuj program Photoshop Art Packer ( http://www.layerhero.com/photoshop-art-packer/ )


„Free Photoshop Font Detector” nie jest już dostępny do pobrania za darmo i jest teraz częścią drogiego rozszerzenia FontHero za 39 USD .
paulmz

Żaden z nich nie jest dostępny. LayerHero nie żyje. Zadziwiające jest to, że można pobrać Detektor czcionek z maszyny WayBack : web.archive.org/web/20171211184218/http://www.layerhero.com/… Jednak nie udało mi się go zainstalować, ani z Anastasiy's Extension Manager lub Adobe ExMan.
Drew

0

Na karcie Warstwy dostępna jest opcja, która pozwala filtrować wszystkie warstwy, aby wyświetlać tylko czcionki. Musisz wybrać każdą warstwę, aby je zobaczyć i jest to przydatne tylko wtedy, gdy potrzebujesz na nich szybkiego spojrzenia

Mam nadzieję, że to pomoże komuś trzy lata później.


0

Chciałem poznać czcionki dokumentów wraz z ich stylami, rozmiarami, kolorami, formatowaniem itp. Na potrzeby tworzenia stron internetowych i celów CSS, więc oto, co wymyśliłem:

  1. Kliknij ikonę „T” w panelu Warstwy, aby filtrować / wyświetlać tylko warstwy tekstowe
  2. Shift + lewy przycisk myszy najwyższą warstwę tekstową w palecie Warstwy
  3. Przewiń do końca palety Warstwy i Shift + kliknij lewym przyciskiem myszy dolną warstwę tekstową
  4. Kliknij prawym przyciskiem myszy wybrane warstwy na palecie Warstwy i wybierz „Duplikuj warstwy”
  5. W obszarze Dokument docelowy wybierz Nowy
  6. Przejdź do nowego dokumentu, który powinien zawierać wszystkie warstwy tekstu
  7. Zaznacz ponownie wszystkie warstwy tekstu (patrz krok 2 i 3)
  8. Kliknij ikonę folderu u dołu palety Warstwy, aby połączyć wszystkie warstwy tekstowe w jedną grupę
  9. Zmień tryb mieszania grupy (menu rozwijane na palecie warstw) na „Normalny”
  10. Kliknij nową grupę prawym przyciskiem myszy
  11. Wybierz „Kopiuj CSS”
  12. Wklej do dokumentu i sformatuj listę stylów według potrzeb!

-1

Aby uzyskać informacje o czcionkach z pliku PSD, możesz użyć narzędzi online, jeśli nie możesz lub nie chcesz używać Photoshopa (lub jeśli wolisz używać Gimp, który rasteryzuje czcionki PSD).

Na przykład możesz wypróbować ten internetowy ekstraktor czcionek HTML5 PSD „Pobierz czcionki PSD”.

Jest to ekstraktor informacji o czcionkach PSD oparty na psd.js projektu Melitingice Github , który nie wymaga przesyłania plików, działa lokalnie na stronie przeglądarki


Otwiera plik w javascript, bez wysyłania go do serwera, na własnej stronie przeglądarki! Musisz usunąć plik, aby określić ścieżkę do pliku ...
Giovazz89

Możesz ujawnić wszelkie powiązania z wymienionymi projektami, nawet jeśli są one bezpłatne.
Journeyman Geek
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.