Tìm tất cả các phông chữ được sử dụng trong một tệp Photoshop


54

Tôi có cái này .psd(tệp Photoshop) và tôi đang cố gắng chuyển đổi nó thành HTML & CSS.

Điều duy nhất tôi không thể xác định là họ đã sử dụng phông chữ nào trong .psd

Làm cách nào tôi có thể tìm ra phông chữ nào được sử dụng trong tệp Photoshop?


Kể từ CC2018, 2 trong số các tập lệnh bên dưới và plugin jsx đã bị hỏng. Tôi nhận xét cụ thể cho từng.
vẽ

Câu trả lời:


63

Phụ thuộc vào cách bạn muốn trích xuất thông tin.

Mỗi phần hoặc khu vực văn bản

Chọn công cụ Văn bản ( biểu tượng T có serif) và nhấp vào vùng văn bản để chỉnh sửa nó. Nó sẽ hiển thị phông chữ nào đang được sử dụng trong cửa sổ Ký tự.

Tất cả các phông chữ được sử dụng trong nháy mắt

  1. Lưu hoặc xuất tài liệu hình ảnh dưới dạng PDF
  2. Mở phiên bản PDF trong Adobe Reader
  3. Chọn tệp → Thuộc tính → Phông chữ

Điều này sẽ liệt kê tất cả các phông chữ có thể nhúng được sử dụng trong tệp PSD, miễn là bạn có thể nhúng chúng.

Thiếu phông chữ

Trong công cụ Ký tự, đi đến phần chọn phông chữ thả xuống. Cuối danh sách sẽ là các phông chữ được sử dụng trong hình ảnh nhưng bị thiếu trong hệ thống của bạn. Chúng thường sẽ bị mờ đi.

Hình ảnh rasterized

Nếu bạn thấy bất kỳ hình ảnh rasterized nào bạn cần mặt phông chữ, tốt nhất bạn chỉ xuất phần đó dưới dạng hình ảnh độc lập, rõ ràng và sử dụng một dịch vụ như What the Font để xác định phông chữ.


23

Lưu tập lệnh này dưới dạng tệp mới trong thư mục Photoshop> Cài đặt sẵn> Tập lệnh. Đặt tên cho nó bất cứ điều gì bạn muốn, chẳng hạn như "Phát hiện 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.',);
}

nhập mô tả hình ảnh ở đây


1
+500000 điểm. Đáng kinh ngạc.
Một nửa Crazing 3/03/2016


Để viết văn bản trong clipboard, hãy sử dụng câu trả lời này: stackoverflow.com/a/13983268/1578857
Dima Kurilo

(Photoshop CC2018) Lỗi 8500: Thuộc tính được yêu cầu không tồn tại. Dòng 53: var n = layerStyles.getObjectValue (CountStyles) .getObjectValue (stringIDToTypeID ('textStyle')). GetString (stringIDToTypeID ('fontPostScriptName'));
vẽ

@Drew Tôi sắp đăng một câu trả lời cập nhật với một phiên bản cố định của tập lệnh
agrath

8

Các định dạng tập tin PSD được ghi nhận bởi Adobe - bạn có thể đọc nó như thế nào lưu trữ thông tin phông chữ.

Sau đó, bạn có thể kiểm tra kết xuất hex của tệp và sử dụng đặc tả định dạng tệp để tìm phông chữ.

Ngoài ra, tên phông chữ phải hiển thị trong đầu ra của stringstiện ích được tìm thấy trên các hệ thống Linux / Unix.


2
+1: Tôi đã đưa ra giải pháp tương tự. Vì một số lý do, GIMP đã không nhập PSD chính xác và tôi không biết nó được sử dụng phông chữ nào. Tôi đã phân tích tệp PSD trong trình soạn thảo HEX để tìm tệp đó (Tìm kiếm: "Phông chữ" dưới dạng văn bản). Biên tập viên khuyến cáo: "ban phước".
lepe

5

Điều này thực sự rất dễ thực hiện bằng cách sử dụng các tập lệnh PS, có thể lặp qua các lớp của PSD và kéo dữ liệu của lớp văn bản.

Gần đây tôi đã thử nghiệm một tập lệnh dựa trên JavaScript để phủ trực tiếp thông tin phông chữ trên các comps được phân phối cho các nhà phát triển. Nó chưa kết thúc nhưng nếu vẫn còn hứng thú (tôi thấy điều này khá cũ) tôi có thể đưa ra một phiên bản nhanh và bẩn chỉ đơn giản là bật lên các phông chữ được sử dụng trong một cửa sổ.

CẬP NHẬT: Tôi kết hợp một phiên bản "lite" thô nhưng hoạt động của kịch bản tôi đang phát triển. Hãy đóng góp - https://github.com/davidklaw/completer . Đối với những người không quen thuộc với tập lệnh, chỉ cần lấy tệp tập lệnh và đặt nó trong thư mục PS Presets / Sc scripts của bạn và nó sẽ có sẵn trong Tệp -> Tập lệnh.


Câu hỏi có thể cũ, nhưng nó có gần 6.000 lượt xem. Nếu bạn có thể cung cấp một kịch bản, điều đó sẽ được đánh giá rất cao! Chào mừng bạn đến với Siêu người dùng!
slhck

Cuộc gọi tốt Dự án GitHub mã nguồn mở đang hoạt động. Nếu bất cứ ai quen thuộc với JavaScript cơ bản, họ sẽ cảm thấy như ở nhà.
David

wow điều này thực sự hoạt động khá tốt: D (y)!
Ejaz

4

Cách nhanh chóng và dễ dàng để tìm các phông chữ bị thiếu

  1. Windows -> Ký tự Một hộp ký tự nhỏ sẽ hiển thị với thông tin phông chữ.

  2. Chọn thả xuống tên phông chữ và cuộn xuống cho đến khi kết thúc.

  3. Bạn sẽ nhận thấy danh sách các phông chữ bị thiếu trong màu xám nhạt ở cuối danh sách phông chữ.

nhập mô tả hình ảnh ở đây

Từ: http://www.bala-krishna.com/how-to-find-fonts- used-in-sheet-file/


Có nhiều cách cho phép bảng đó: Một cách khác là Loại -> Bảng -> Ký tự.
martixy

3

Nếu văn bản đã được rasterized, cách dễ dàng là cắt vùng với kiểu chữ bạn muốn xác định, lưu dưới dạng .png và tải nó lên WhatTheFont , nơi nó có thể cho bạn biết đó là gì, trừ khi nó là là một cái tối nghĩa hoặc bespoke.

Identifont là một trang web khác mà bạn có thể sử dụng, nơi bạn mô tả các đặc điểm của kiểu chữ.


văn bản không được rasterized, có nghĩa là nó trong một lớp riêng biệt.
dave

2
@Dave: Nếu văn bản vẫn có thể chỉnh sửa, tất cả những gì bạn phải làm là chọn nó và xem những gì xuất hiện trong menu thả xuống phông chữ hoặc trên bảng thông tin. Điều này thực sự rõ ràng!
paradroid

1

Tôi sẽ chụp nhanh văn bản bạn cần (tốt nhất là phóng to) và sử dụng WhatTheFont để có được một số dự đoán. (Tuy nhiên, không nên hiển thị kiểu chữ khi bạn mở PSD và chọn văn bản tương ứng?)

Và tất nhiên, nếu đó không phải là một phông chữ an toàn trên web, bạn sẽ cần tìm một cách thích hợp để thay thế nó hoặc cung cấp một ngăn xếp dự phòng.


1

Sử dụng trích xuất đám mây sáng tạo

Nó sẽ liệt kê tất cả các phông chữ được sử dụng (trong số những thứ tiện dụng khác).


Hình như nó có một số tiềm năng, nhưng nó đòi hỏi cài đặt Dreamweaver ..
Drew

1

Dựa trên câu trả lời ban đầu của David (DetectFonts.jsx), tôi đã sửa đổi tập lệnh để khắc phục sự cố được Drew báo cáo trong các nhận xét: Tìm tất cả các phông chữ được sử dụng trong tệp Photoshop .

Thực hiện theo các hướng dẫn ban đầu nhưng thay vào đó hãy sử dụng phần thân tập lệnh này - chỉ khác biệt là một vài kiểm tra null (có thể là sự khác biệt về phiên bản photoshop hoặc điều gì đó thiếu dữ liệu về các loại đối tượng cụ thể, có khả năng là nhà thiết kế hoặc hệ điều hành cụ thể)

Tôi cũng sẽ gửi yêu cầu kéo tới 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

Mở Photoshop. Chuyển đến Windows »Ký tự . Một hộp nhỏ sẽ bật lên. Chỉ cần chọn lớp văn bản và hộp sẽ cho bạn biết họ phông chữ, kích thước, et cetera.



0

Nhà phát triển đã hỏi tôi gần như cùng một suy nghĩ như bạn cần. Tôi đã đưa ra cách chỉnh sửa tập lệnh đơn giản, để xuất các thuộc tính lớp (văn bản, tên phông chữ, cỡ chữ, màu phông chữ) mà bạn cần khi phát triển, thành một tệp txt duy nhất (nên hoạt động trên máy Windows).

Chỉ cần lưu cái này như "ExportTexts.js" và đặt Adobe Photoshop> Presets> Sc scripts.

Sau đó, chạy (hoặc khởi động lại) Photoshop và chạy tập lệnh (Tệp -> Tập lệnh -> ExportTexts). Cũng đảm bảo rằng bạn đã tách nhóm tất cả các lớp trước khi làm điều này. Tệp đã xuất phải ở cùng một thư mục với tệp 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

Kịch bản của bạn bị hỏng trên dòng 8
davidcondrey

Và trên dòng 12. Lỗi 8500, thuộc tính không tồn tại: outputFile.write (.
vẽ

0

Có tiện ích mở rộng / Bảng điều khiển Photoshop miễn phí có thể thực hiện công việc này cho bạn, Trình phát hiện phông chữ Photoshop miễn phí ( http://www.layerhero.com/photoshop-font-detector/ ) và nếu bạn muốn thu thập / sao chép tệp phông từ hệ thống thư mục, hãy thử Photoshop Art Packer ( http://www.layerhero.com/photoshop-art-packer/ )


"Trình phát hiện phông chữ Photoshop miễn phí" không còn có sẵn dưới dạng bản tải xuống miễn phí và hiện là một phần của tiện ích mở rộng đắt tiền FontHero với giá 39 đô la .
paulmz

Không ai trong số đó là có sẵn. LayerHero là chết .. Thật ngạc nhiên, bạn có thể tải Font Detector từ máy Wayback: web.archive.org/web/20171211184218/http://www.layerhero.com/... Tuy nhiên tôi đã không thể cài đặt nó, không phải với Trình quản lý mở rộng của Anastasiy cũng như Adobe ExMan.
vẽ

0

Có một tùy chọn trên tab Lớp cho phép bạn lọc tất cả các lớp để chỉ hiển thị các phông chữ. Bạn phải chọn từng lớp để thực sự nhìn thấy chúng và nó chỉ hữu ích nếu bạn cần lướt qua chúng

Hy vọng nó sẽ giúp ai đó ba năm sau khi điều này được hỏi.


0

Tôi muốn biết phông chữ tài liệu cùng với kiểu dáng, kích thước, màu sắc, định dạng, v.v. để phát triển web và mục đích CSS, vì vậy đây là những gì tôi nghĩ ra:

  1. Nhấp vào biểu tượng "T" trong bảng điều khiển Lớp để chỉ lọc / xem các lớp văn bản
  2. Shift + nhấp chuột trái vào lớp văn bản trên cùng trong bảng Layer
  3. Cuộn toàn bộ xuống cuối bảng Layer và Shift + nhấp chuột trái vào lớp văn bản dưới cùng
  4. Nhấp chuột phải vào các lớp đã chọn trong bảng Lớp và chọn "Lớp trùng lặp"
  5. Trong Tài liệu đích, chọn Mới
  6. Chuyển đến tài liệu mới của bạn sẽ chứa tất cả các lớp văn bản của bạn
  7. Chọn lại tất cả các lớp văn bản (xem bước # 2 và # 3)
  8. Nhấp vào biểu tượng thư mục ở cuối bảng Lớp để tạo tất cả các lớp văn bản thành một nhóm
  9. Thay đổi chế độ hòa trộn của nhóm (thả xuống trong bảng lớp) thành "Bình thường"
  10. Nhấp chuột phải vào nhóm mới của bạn
  11. Chọn "Sao chép CSS"
  12. Dán vào một tài liệu và định dạng danh sách các phong cách của bạn khi cần thiết!

-1

Để lấy thông tin phông chữ dưới dạng tệp PSD, bạn có thể sử dụng các công cụ trực tuyến nếu bạn không thể hoặc không sử dụng Photoshop (hoặc nếu bạn thích sử dụng Gimp, điều đó sẽ làm mờ phông chữ PSD).

Ví dụ: bạn có thể dùng thử trình trích xuất trực tuyến phông chữ PS5 htmlD này "Nhận Phông chữ PSD".

Đó là trình trích xuất thông tin phông chữ PSD dựa trên psd.js của dự án Melitingice Github không yêu cầu tải lên tệp, hoạt động cục bộ trong trang trình duyệt của bạn


Nó mở tệp trong javascript, mà không gửi nó đến máy chủ, trong trang trình duyệt của riêng bạn! Bạn phải thả tệp để chỉ định đường dẫn tệp ...
Giovazz89

Bạn có thể muốn tiết lộ bất kỳ mối quan hệ nào bạn có với các dự án được đề cập, ngay cả khi nó miễn phí.
Journeyman Geek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.