Sự khác biệt thực tế giữa 'glyph' và 'character' là gì?


26

Tôi đã thấy câu hỏi này trên đề xuất trang web typography và nó đã nói với tôi rằng tôi không biết câu trả lời. Tôi luôn coi 'glyph' và 'character' là có thể hoán đổi cho nhau.


Sau khi đọc một lời giải thích trên trang Mô hình mã hóa ký tự Unicode , sự hiểu biết của tôi đại khái là thế này:

  • Các ký tự được xác định bởi ý nghĩa của chúng trong ngôn ngữ, glyphs, bởi sự xuất hiện của chúng . Vì vậy, dây chằng để kết hợp thẩm mỹ fi là một glyph, nhưng hai ký tự.

Vì vậy, niềm tin của tôi là (xin hãy sửa cho tôi nếu tôi sai) rằng sự khác biệt thực tế sẽ là:

  • Trình phân tích cú pháp văn bản không quan tâm đến tính thẩm mỹ của văn bản sẽ đọc glyphs dưới dạng ký tự tương ứng của chúng. Vì thế:
    • Nếu bạn đã sao chép và dán văn bản có chứa glyphs vào trình soạn thảo văn bản thuần túy, glyphs sẽ được chuyển đổi thành các ký tự tương ứng của chúng (một glyph ligature sẽ trở thành fi)
    • Bất kỳ hệ thống tự động được làm tốt nào dựa trên phân tích cú pháp văn bản (ví dụ: trình thu thập công cụ tìm kiếm, trình đọc màn hình, trình kiểm tra chính tả) sẽ diễn giải các glyph như các ký tự tương ứng của chúng.
    • Một nhân vật có thể có nhiều bộ glyph hoặc glyph. Tôi muốn nói rằng một glyph chỉ có thể có một ký tự, nhưng điều này rõ ràng không đúng vì có một ví dụ trên bài viết được liên kết của 3 bộ glyph và glyph dường như mỗi ký tự tương ứng với một ký tự và bộ ký tự. Tôi hoàn toàn không thấy làm thế nào điều này có thể hoạt động: chắc chắn điều đó có nghĩa là sẽ có sự không nhất quán hoặc mơ hồ trong cách các glyphs được diễn giải, thay đổi bởi người phiên dịch? (hoặc nó thay đổi theo ngôn ngữ hoặc theo phông chữ?)
    • Trong khi các trình duyệt glyph (ví dụ như trình duyệt trong Illustrator) chứa tập hợp glyph đầy đủ của phông chữ, bản đồ ký tự (ví dụ: bản đồ ký tự Windows) chỉ chứa các ký tự, không phải là glyph có nhiều ký tự như chữ ghép (điều mà trước đây tôi không nhận thấy)

Tôi cảm thấy như mình đang ở gần đó nhưng rõ ràng tôi đã hiểu nhầm một điều gì đó dọc theo dòng: không chỉ là điều "Một glyph nhiều ký tự", mà còn, sao chép và dán hành vi với chữ ghép không hoàn toàn như tôi mong đợi:

  • Sao chép chữ ghép từ Illustrator vào hộp nhập này: dán dưới dạng fi(hai ký tự) như mong đợi.
  • Dán mã HTML cho nó ( fi) - hiển thị dưới dạng chữ ghép khi không nằm trong khối mã (- trong phông chữ này trông không giống chữ ghép, nhưng bạn sẽ thấy là một nếu bạn cố gắng chọn chỉ một nửa của nó) và mã khi ở trong khối mã ( fi), như mong đợi.
  • Sao chép và dán lại dây chằng không mã khối được kết xuất lại vào hộp nhập: dán dưới dạng ký tự chữ ghép và hiển thị dưới dạng chữ ghép bất kể nó có trong khối mã hay không (fi và ). Các từ tương tự có chứa nó: mis t mis fi ts ( fit misfits) dán dưới dạng mis t mis fi ts ( fit misfits). Có lẽ nó phụ thuộc vào việc nơi nó được dán có hiểu mã hóa được sử dụng không?

Sự hiểu biết của tôi về điều này đến mức nào? Ai đó có thể cho tôi đúng: nêu một định nghĩa rõ ràng về sự khác biệt giữa glyphs và các ký tự (nếu tôi sai hoặc có thể được cải thiện), và đưa ra các ví dụ rõ ràng / chính xác hơn so với ý nghĩa của tôi trong thực tế ?


2
Nó trở nên phức tạp hơn khi bạn có các kịch bản như tiếng Ả Rập nơi bạn kết hợp các ký tự.
Tái lập Monica - M. Schröder

1
@ MartinSchröder +1 Nghe giống như câu mở đầu của một câu trả lời xuất sắc ... :)
user56reinstatemonica8

Câu trả lời:


4

Glyph liên quan đến cách hiển thị văn bản, ký tự cho cách nó được giải thích. Khi bạn sao chép và dán, ứng dụng nguồn thường đưa ra lựa chọn một số định dạng. Văn bản thuần túy sẽ phân tách chữ ghép thành f và i, định dạng HTML có thể dịch nó sang thực thể char mà bạn trích dẫn hoặc cũng có thể phân tách nó trong f và i.

Nói chung, mối quan hệ giữa các ký tự và glyphs là n: m. Trong các ngôn ngữ Ấn Độ, một số ký tự chia thành hai glyph được đặt ở các vị trí khác nhau của từ. Trong tiếng Latin, gần nhất với tình huống đó sẽ biểu hiện é thành hai glyphs (e và ọ). Trong tiếng Ả Rập, mỗi ký tự có các glyph khác nhau tùy thuộc vào vị trí của nó trong một từ: ban đầu, giữa, cuối hoặc cô lập.

Bản dịch từ các ký tự sang glyphs là cụ thể cho từng ứng dụng và các tính năng chính tả mà nó hỗ trợ. Đối với văn bản Latinh, bản dịch này được sử dụng đơn giản, nhưng phông chữ OpenType đã giới thiệu các tính năng bổ sung như chữ ghép, dấu gạch chéo, hình thức thay thế, chữ hoa nhỏ, v.v.

Vì lý do thực tế, bạn chỉ quan tâm đến glyphs khi bạn triển khai cách ứng dụng hiển thị văn bản hoặc khi bạn thiết kế phông chữ hoặc khi bạn muốn áp dụng tính năng OpenType thay thế một số glyphs bằng các chữ cái khác (ví dụ: chữ ghép). Nếu không, điểm mã Unicode là bạn của bạn.


Xin chào người dùng322483, chào mừng bạn đến với GDSE và cảm ơn câu trả lời của bạn. Nếu bạn có bất kỳ câu hỏi nào, vui lòng xem trung tâm trợ giúp hoặc ping một trong số chúng tôi trong Trò chuyện Thiết kế Đồ họa khi danh tiếng của bạn là đủ (20). Hãy tiếp tục đóng góp và tận hưởng trang web!
Vincent

1
Bạn viết "Trong tiếng Ả Rập, mỗi ký tự có các glyph khác nhau tùy thuộc vào vị trí của nó trong một từ: ban đầu, giữa, cuối hoặc cô lập." <--- Họ sẽ không phải là những nhân vật khác nhau. Tiếng Anh có A và a, nhưng trong nói chuyện điện toán, A và a là các ký tự khác nhau. mỗi glyph được ánh xạ tới một mã khác nhau. Tiếng Hê-bơ-rơ có chaf và chaf cuối cùng (chữ chaf ở cuối từ, trông khác) và tôi chắc chắn nó được gọi là một nhân vật khác trong điện toán.
barlop

14

Tôi không nghĩ rằng sự hiểu biết của bạn là không chính xác, bạn chỉ nhìn thấy các hệ thống cố gắng giúp đỡ người dùng bằng cách dán những gì họ nghĩ họ muốn. Do một số chữ ghép ('fi', 'fl') khá phổ biến bên ngoài các hệ thống sắp chữ, phần mềm nhận ra rằng người dùng có thể đã không nhập glyph đó, thay vào đó một ứng dụng khác đã chuyển đổi các ký tự được nhập của họ.

Tóm lại: Ký tự chỉ một đơn vị ngôn ngữ. Glyph đề cập đến một thể hiện được thiết kế của đơn vị đó, cho dù đó là chữ hoa, chữ thường, nắp nhỏ, biến thể lịch sử hoặc phong cách.


Trong điện toán, A và a là các ký tự khác nhau. ASCII có 128 ký tự và ký tự thuật ngữ ở đó bao gồm A và một ký tự riêng biệt.
barlop

Các kỹ sư sử dụng rất nhiều từ không phù hợp với tiền lệ trong các ngành công nghiệp khác. Của bạn là một ví dụ tốt.
thường phục

ai đã đưa ra thuật ngữ "nhân vật" và "glyph" đầu tiên? thiết kế đồ họa hay kỹ sư máy tính? Tôi đã nghĩ rằng các máy tính đã xuất hiện trước khi thiết kế đồ họa. Nhưng có thể có một ngành công nghiệp in ấn đi trước thiết kế đồ họa và máy tính đi trước có thể tranh cãi theo một số cách hoặc trước máy tính hiện đại. Tôi đoán mặc dù những người có thể trả lời tốt nhất cho thiết kế đồ họa hiện nay, là ngành in ấn, nhưng không có ngành công nghiệp in stackexchange. Nhưng thật thú vị khi biết ai mượn từ ai và bằng cách nào thuật ngữ Nhân vật.
barlop

1
Kiểu chữ xuất hiện từ lâu trước khi kỹ thuật phần mềm. Xin vui lòng gửi ở đây nếu bạn thực hiện nghiên cứu và tìm nguồn gốc. Tôi đoán là đôi khi vào thế kỷ 17. Có thể sớm nhất là những người đánh máy đầu tiên vào giữa ngày 16.
thường phục

6

Có một vài câu trả lời ở đây cung cấp thông tin tốt về glyphs và các ký tự, nhưng chúng không thực sự giải quyết nguồn gốc của sự nhầm lẫn của bạn liên quan đến sao chép và dán.

Trước hết, sự hiểu biết của bạn về cơ bản là chính xác:

Các ký tự được xác định bởi ý nghĩa của chúng trong ngôn ngữ, glyphs, bởi sự xuất hiện của chúng . Vì vậy, chữ ghép cho kết hợp thẩm mỹ fi là một glyph, nhưng hai ký tự.

Cần nhấn mạnh rằng danh sách các ký tự được xác định theo tiêu chuẩn Unicode, được công bố bởi Hiệp hội Unicode, do thực tế rằng họ là cơ quan mã hóa văn bản ở định dạng có thể đọc được bằng máy. Định nghĩa ở trên về cơ bản là hướng dẫn chính mà các thành viên Unicode Consortium sử dụng để xác định liệu một số bổ sung được đề xuất cho Unicode có phải là một ký tự hay không và do đó xứng đáng để đưa vào, hoặc glyph và nên được xử lý bởi các trình kết xuất phông chữ.

Tôi đề cập đến điều này bởi vì sự nhầm lẫn mà bạn gặp phải ở trên là do thực tế tồn tại một số ký tự chữ ghép (không phải glyphs ) trong Unicode. Chẳng hạn, U+FB01là ký tự cho chữ ghép: http://unicode.org/charts/PDF/UFB00.pdf

Việc có các ký tự chữ cái trong Unicode không thực sự theo tinh thần của định nghĩa trên đối với những thứ nên được đưa vào tiêu chuẩn Unicode như các ký tự, vì chữ ghép không thực sự có ý nghĩa độc lập với bố cục của hai ký tự khác. Người Unicode tự nhiên nhận thức được điều này và Câu hỏi thường gặp về Unicode về chữ ghép thừa nhận càng nhiều:

Các chữ ghép hiện có về cơ bản tồn tại để tương thích và ngắt vòng với các bộ ký tự không phải là Unicode. Sử dụng của họ là không khuyến khích.

Sự tồn tại của nhân vật này cuối cùng là nguồn gốc của sự nhầm lẫn của bạn.

Trong phần mềm được triển khai chính xác, sao chép văn bản phải luôn sao chép các ký tự được chỉ định, không phải là glyphs và đó chính xác là những gì đang diễn ra trong ba ví dụ của bạn.

1) Trong ví dụ đầu tiên, bạn đã nhập fivào Illustrator, kết xuất một glyph dây chằng đơn . Khi bạn đã chọn và sao chép glyph kết xuất đó, Illustrator đã sao chép chính xác các ký tự f( U+0066) và i( U+0069) vào bảng tạm của bạn.

2) Trong ví dụ thứ hai, bạn đã nhập mã HTML cho ký tự chữ ghép ( &#64257) vào hộp nhập và nhận được glyph chữ ghép đại diện cho ký tự chữ ghép (vì ký tự bên dưới thực sự là ký tự chữ ghép tối nghĩa và tương đối vô nghĩa mà tôi đã đề cập ở trên, chọn glyph đó sẽ sao chép một ký tự U+FB01.

3) Trong ví dụ thứ ba, bạn đang sao chép ký tự chữ ghép U+FB01được hiển thị trong phần 2, sẽ luôn dán như ký tự đó. Sự nhầm lẫn chính của bạn dường như liên quan đến sự khác biệt giữa các mã thực thể và ký tự HTML, đặc biệt là liên quan đến cách chúng được hiển thị trong và bên ngoài các khối mã.

Mã thực thể HTML &#64257;là một chuỗi gồm 8 ký tự riêng biệt. Trình kết xuất HTML của trình duyệt web của bạn thay thế 8 ký tự đó U+0026 U+0023 U+0036 U+0032 U+0035 U+0037 U+0023bằng một ký tự Unicode U+FB01, sau đó nó hiển thị một cách thích hợp. Tuy nhiên, <code>thẻ trong HTML sẽ vô hiệu hóa hành vi này, để lại 8 ký tự như vậy.

Khi bạn sao chép HTML được kết xuất, bạn sao chép các ký tự được kết xuất (khác với các glyph được kết xuất ). Do đó, khi bạn sao chép thực thể HTML được hiển thị của mình, U+FB01ký tự đơn sẽ được sao chép vào bảng tạm của bạn.

Khi bạn dán U+FB01ký tự trở lại vào HTML, không cần thay thế, nghĩa là ký tự được hiển thị dưới dạng chữ ghép bất kể nó có nằm trong một <code>khối hay không .


1

Các ký tự là những gì được lưu trữ trong các tệp văn bản, được xử lý bởi các ứng dụng và di chuyển xung quanh, trong khi glyph là biểu diễn trực quan của chúng.

Để có một hình ảnh rõ ràng, hãy xem điều gì xảy ra khi một ứng dụng cố gắng hiển thị một chuỗi văn bản trên màn hình (theo cách đơn giản một chút):

  • Trước tiên, ứng dụng đọc chuỗi văn bản, đó là chuỗi ký tự được lưu trên đĩa hoặc trong bộ nhớ.
  • Sau đó, nó sẽ gửi nó đến một công cụ bố cục văn bản, trong số một số thuộc tính khác như phông chữ mong muốn, ngôn ngữ văn bản, v.v.
    • Công cụ bố cục văn bản về cơ bản mở tệp phông chữ, yêu cầu nó cho glyph (s) tương ứng với từng ký tự và thực hiện một số thay thế glyph (như thay thế glyph cho fibằng glyph ligature của fi) và định vị (như kTHER).
    • Cuối cùng, công cụ bố trí có một chuỗi glyphs, vị trí của chúng tương đối với nhau và ánh xạ giữa các ký tự đầu vào và glyphs đầu ra. Ánh xạ ký tự đến glyph là để nó biết rằng hai ký tự đầu tiên trong từ filetương ứng với hai glyph đầu tiên ( fichữ ghép), ký tự thứ 3 cho glyph thứ 2 và ký tự thứ 4 cho glyph thứ 3.
  • Sau đó, một thư viện kết xuất đồ họa được sử dụng để vẽ ra những hình tượng trên màn hình bằng cách sử dụng các hình dạng từ phông chữ.
  • Khi người dùng chọn glyphss trên màn hình, ứng dụng sẽ tham khảo glyph để ánh xạ văn bản do công cụ bố trí cung cấp để tìm phần nào của văn bản đầu vào tương ứng với nội dung mà người dùng đang chọn và gửi văn bản đó vào bảng tạm khi người dùng sao chép nó.
  • Điều tương tự cũng xảy ra khi người dùng chèn con trỏ vào giữa văn bản và bắt đầu nhập, ánh xạ xác định vị trí trong văn bản đầu vào để chèn các ký tự mới và văn bản cập nhật được gửi đến công cụ bố cục để xử lý và vẽ lại, v.v.
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.