Làm thế nào tôi có thể tạo ra một phông chữ đơn cách?


14

Giả sử rằng tôi có một phông chữ trong một định dạng một cách khiêm tốn phổ biến ( .ttf, .otf, vv), và tôi có quyền hợp pháp để sửa đổi nó. Như nó đứng, nó là một phông chữ bình thường với các ký tự khác nhau (glyphs?) Khác nhau về chiều rộng và khoảng cách. Làm thế nào tôi có thể chuyển phông chữ nói thành phông chữ đơn cách (ví dụ: tất cả các ký tự có cùng kích thước, v.v.)?

Nếu có thể, có công cụ tự động nào có thể thực hiện một số phỏng đoán cho bạn không? (Kết quả không nhất thiết phải hoàn hảo .) Phông chữ có thể lớn (nhiều ký tự) và việc chỉnh sửa nó có thể rất tẻ nhạt.

Bất kỳ đề xuất về vấn đề được nhiều đánh giá cao! :)


Tuyên bố miễn trừ trách nhiệm: Xin lỗi nếu đây được coi là một cách đơn giản , nhưng Google có rất ít thông tin về chủ đề này và đối với một lập trình viên không xử lý nhiều về đồ họa hoặc phông chữ, điều đó chắc chắn không đơn giản . Ngoài ra, xin lỗi nếu thuật ngữ của tôi bị tắt ...: P


Bạn đang sử dụng phần mềm phông chữ nào nếu có? Phông chữ? Phông chữ?
thomasrutter

Câu trả lời:


12

Nếu bạn chưa có bất kỳ phần mềm chỉnh sửa phông chữ nào, thì tin tốt là Fontforge là nguồn mở và miễn phí. Tin xấu là nó có đường cong học tập tương đối cao và giao diện người dùng hơi bất thường.

Về cơ bản, để một phông chữ được coi là không gian đơn, mọi glyph phải có cùng chiều rộng, xuống cùng một số đơn vị chính xác. Điều này bao gồm cả các glyph thường có chiều rộng bằng 0 hoặc chiều rộng nhất định (chẳng hạn như dấu cách em, dấu gạch ngang, v.v.).

Xem mục Câu hỏi thường gặp "Làm cách nào để tôi đánh dấu một phông chữ là đơn cách?"

Để thực sự chỉnh sửa độ rộng của tất cả các glyph cùng một lúc, bạn chỉ cần vào "Số liệu" -> "Đặt độ rộng" trên menu, nhưng tôi không mong đợi nó hoạt động cho tất cả các ký tự. Có lẽ bạn sẽ phải chỉnh sửa thủ công tất cả các ký tự rộng như 'W', 'M', '@', v.v. để chúng không bị chồng chéo. Và việc kết hợp các dấu phụ (dấu trọng âm được "kết hợp" với các chữ cái trong thời gian kết xuất) có thể khiến tất cả các vị trí của chúng bị rối tung (rất khó kiểm tra nếu bạn là người Mỹ / tiếng Anh và bạn gần như không bao giờ sử dụng chúng).

Một người biết cách tạo và chỉnh sửa phông chữ sẽ có thể thực hiện nhiệm vụ này nhưng nó vẫn không đơn giản.


Tôi có cùng một câu hỏi về việc chuyển đổi một phông chữ sang không gian. Tôi hiểu rằng sự đe dọa sẽ là xấu ,. Những gì tôi thực sự tìm kiếm là một công cụ sẽ 1) tìm glyph rộng nhất, 2) sau đó thay vì kéo dài glyphs, tôi muốn chúng tập trung vào một trường có chiều rộng. Không có công cụ để làm điều đó?
NJRandy

@thomasrutter trong trường hợp của gnu unifont? (phông chữ bitmap trong đó glyph là 8 16 hoặc 16 16)
user2284570

Câu trả lời chính xác. Chỉnh sửa trực tiếp từ UI của FontForge không hoạt động với tôi (nó vẫn bị đóng băng trong nhiều giờ trước khi tôi giết nó). Thay vào đó tôi đã sử dụng các ràng buộc Python. Mục tiêu của tôi là sử dụng phông chữ đơn cách như một dự phòng, vì vậy, k sâu xấu và chảy máu không phải là vấn đề lớn. Tôi đã chi tiết tất cả điều này trong một câu trả lời riêng biệt.
Clément

1
Khi tôi mới học, tôi đã tạo ra rất nhiều phông chữ đơn sắc bằng cách chỉnh sửa phông chữ miễn phí. Giống như bất kỳ công cụ tự động hóa nào, nó chỉ nên là điểm khởi đầu: người ta nên điều chỉnh kết quả khi cần thiết. Tôi tìm thấy Fontogographics có đường cong học tập nhanh nhất. Chọn glyphs, đi đến Set Widthdưới Metricstrình đơn thả xuống: đặt tất cả các glyphs với một chiều rộng trung bình (thay đổi sau này nếu cần thiết) và cuối cùng, chọn Equalise Sidebearingscũng dưới Metricsmenu để tập trung glyphs trong em vuông. Tất nhiên: nghiên cứu cách những người khác vượt qua những khó khăn đặc biệt để thiết kế phông chữ có chiều rộng cố định thành công.
Moscarda

7

thomasrutter cung cấp nhiều hơn một câu trả lời kỹ thuật; Tôi sẽ chỉ cho bạn một số nguyên tắc đánh máy để không khuyến khích bạn làm những gì bạn muốn làm trừ khi bạn thực sự cần.

Phóng to một chữ 'i' và 'm' trong Consolas hoặc Courier và sau đó là Corbel hoặc Verdana. Lưu ý rằng các chữ cái phải khác nhau như thế nào để làm cho không gian vũ trụ hoạt động. Để chuyển đổi một phông chữ thành monospace đúng cách cần rất nhiều kiến ​​thức và công việc. Ý tưởng chung về việc kéo dài phông chữ hoàn toàn bị bất kỳ nhà thiết kế nào coi trọng muối của họ, đó là lý do tại sao ngay cả từ biến thể bình thường sang biến thể cô đọng cũng phải vẽ lại tất cả các glyphs.

Vì vậy, hãy nhìn vào Consolas so với Corbel ở đây và xem làm thế nào, khi nó được phóng to, bạn có thể nhìn vào 1) khoảng cách giữa các chữ cái, 2) độ dày của nét chữ và 3) cách mỗi chữ cái khớp với hộp của nó. Nhìn vào mặt đơn cách (thứ nhất) so với mặt cách nhau biến (thứ hai), sau đó xem mặt thứ ba và thứ tư để xem điều gì xảy ra khi bạn cố gắng kéo dài và khoảng trắng để làm cho nó bằng nhau. Lần thứ tư, tôi đã khiến Ms squish tới 75% để vào hộp, nhưng bây giờ chúng gầy hơn nhiều so với Is. Điều đó sẽ được chú ý khi nó được sử dụng.

So sánh các kiểu chữ không gian và không gian biến

Vì vậy, trong ngắn hạn: đừng lộn xộn với kiểu chữ; họ đáng gờm hơn bạn mong đợi!


2
Đúng, kéo dài glyphs rộng như M không phải là một giải pháp đủ tốt cho chính xác lý do Brendan chỉ ra: các nét dọc của nó trở nên hẹp hơn các chữ cái khác và trông có vẻ tệ. Bạn phải thực sự chỉnh sửa glyphs bằng tay, bằng cách chọn các điểm kiểm soát và di chuyển chúng. Hy vọng rằng điều này mang lại cho OP một số ý tưởng về cách làm điều này đúng (hoặc độc đáo) là nhiệm vụ không nhỏ. Đặc biệt là nếu bạn muốn có một phạm vi bảo hiểm glyph khá.
thomasrutter

@Brendan Tôi nghĩ rằng nó phải khác với phông chữ bitmap khi chỉ có hai chiều rộng của glyphs (Trong trường hợp của tôi, glyphs có
user2284570

+1; Thật không thực tế khi hy vọng cho một bản dịch hoàn toàn tự động. Tuy nhiên, trong các bối cảnh bị hạn chế, những gì bạn thể hiện trong bức tranh thứ ba thực sự hoạt động tốt: nếu bạn muốn nhập các toán tử bị thiếu vào một phông chữ đơn cách, giải pháp đó sẽ trông khá ổn (tôi đã đăng phần mềm để làm điều này như một câu trả lời riêng).
Clément

@Brendan tôi không đồng ý. vấn đề với tất cả các ví dụ của bạn, là bạn đã không áp dụng cùng một biến đổi cho tất cả các glyphs
cộng sinh

6

Tôi đã gặp phải vấn đề này khi cố gắng chỉnh sửa mã nguồn bằng cách sử dụng các ký hiệu Unicode. Trong bối cảnh đó, hầu hết các mã nguồn được hiển thị trong một phông chữ đơn cách và một vài ký hiệu không được che bởi phông chữ đó sẽ làm hỏng sự liên kết.

Mặc dù sự thật là "đơn cách hóa" một phông chữ đầy đủ sẽ mang lại kết quả khủng khiếp (k sâu, độ rộng nét và cân bằng chung sẽ hoàn toàn bị rối tung), chỉ nhập một vài ký hiệu từ phông chữ có chiều rộng thay đổi vào một chữ đơn cách sẽ mang lại kết quả tốt. Hoạt hình dưới đây cho thấy sử dụng Consolas + Symbola làm dự phòng, so với sử dụng Consolas + phiên bản đơn ngữ của Symbola:

trước và sau khi đơn hóa

Điều này là vô ích đối với kiểu chữ nâng cao, nhưng nó là một sự thỏa hiệp tốt đẹp nếu bạn muốn sử dụng các ký hiệu trong mã nguồn của mình mà không làm hỏng vết lõm. Có một số cảnh báo mặc dù:

  • Các ký tự rộng sẽ chảy một chút vào các không gian lân cận (mặc dù chúng có thể được thu nhỏ một chút để giảm thiểu vấn đề)
  • Kerning sẽ rất tệ (không quá nhiều vấn đề, vì đó chỉ là một dự phòng)

Tôi đã khởi động một dự án GitHub để tự động xử lý các loại biến đổi phông chữ này. Nó bao gồm các phông chữ được tạo trước và mã bằng các ràng buộc Python của fontforge.

Xem thêm câu hỏi emacs.se này .


-1

Trong trình xử lý văn bản, I: (1) đã tạo một bảng; (2) chia thành các cột - một cột cho mỗi chữ cái; (3) tập trung vào các chữ cái; và (4) hiển thị tất cả các đường viền, vô hình bên trong và bên ngoài.


1
Điều này không trả lời câu hỏi. Nó không giúp tạo ra một phông chữ, và nó có vẻ như lãng phí thời gian.
Moscarda
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.