Mục đích của văn bản ASCIIIIII, với định dạng tập tin quá mức


46

Sau khi tải xuống mã nguồn cho Bash, tôi đã duyệt qua docthư mục và tìm thấy các tệp sau:

Các ký tự điều khiển này không được hiển thị trong biểu diễn được cung cấp bởi giao diện web Git nhưng tệp thực tế có thể được tải xuống và kiểm tra trong trình soạn thảo văn bản như Vim.

Chạy filelệnh trên bash.0in đầu ra sau:

bash.0: ASCII text, with overstriking

Tôi chưa bao giờ gặp định dạng tệp này trước đây và tôi đã tự hỏi mục đích của nó là gì và nó được sử dụng như thế nào. Tìm kiếm trên web cụm từ văn bản ASCII, với sự cường điệu quá mức đã không được khai sáng.

Câu trả lời:


14

Một tìm kiếm trên web cho "backspace" và "overstrike" sẽ có kết quả tốt hơn.

Các tập tin là một trang thủ công - được định dạng bằng cách sử dụng nroff. Thông thường các tập tin như bash.0được tạo ra và loại bỏ đơn giản. Một thời gian trước, họ đã được cứu, để giảm bớt công việc cho manchương trình. Thay vì /usr/share/man/man1, các trang hướng dẫn của bạn sẽ được đọc từ /usr/share/man/cat1. Đọc mô tả của catmanví dụ.

nrofflà lệnh Unix để định dạng các trang thủ công và các tệp khác. Quay lại khi nó được viết lần đầu tiên, có một số tiện ích khác, mỗi tiện ích có ngôn ngữ đánh dấu riêng. Tôi đã sử dụng ít nhất một tá những cái khác nhau. Nhưng tất cả họ đều giải quyết vấn đề in ấn văn bản nhấn mạnh theo cùng một cách: sử dụng điều khiển vận chuyển. Backspaces chỉ đáng chú ý vì chúng không được sử dụng trong các tệp văn bản thuần túy khác. Tất cả các tab , trả về vận chuyển , nguồn cấp dữ liệunguồn cấp dữ liệu biểu mẫu đều có vai trò trong các tệp văn bản thuần túy (mặc dù nguồn cấp dữ liệu biểu mẫu ít quan trọng hơn nhiều so với ban đầu).

nroffsử dụng gạch chân để biểu thị chữ nghiêng và quá mức để thể hiện chữ đậm . Kỹ thuật này có niên đại: rất hữu ích cho các thiết bị sao chép cứng, nơi có thể in nhiều hơn một ký tự ở cùng một vị trí. Rất ít thiết bị đầu cuối video làm điều đó. Trong terminfo(5)đó sẽ là

   over_strike               os     os   terminal can over-
                                         strike

hoặc hoàn toàn hơn :

Nếu nhà ga overstrikes (chứ không phải thanh toán bù trừ một vị trí khi một nhân vật được đánh lên) sau đó nó phải có os khả năng.

Trong trường hợp thông thường, ký tự cuối cùng được viết trên một hàng / cột nhất định của thiết bị đầu cuối video sẽ là tất cả những gì được hiển thị. nroffđã tổ chức đầu ra sao cho một ký tự được gạch chân được viết dưới dạng gạch chân, một khoảng lùi và ký tự thực tế. Làm điều đó đảm bảo rằng các thiết bị đầu cuối không có tính năng overstrike sẽ in một cái gì đó hữu ích.

Trong số rất ít thiết bị đầu cuối video được liệt kê có khả năng vượt mức, tôi thấy DEC gt40 , mà tôi đã sử dụng trong khoảng ba năm (1976-1979). Không có Unix trên hệ thống đó (nó chạy RT-11), nhưng tôi đã viết một trình định dạng văn bản , sử dụng cùng loại văn bản quá mức. Cuối cùng, tôi cần bản cứng, và đã viết một tiện ích để biến điều đó thành hiện thực - một cái gì đó giống như col, có lẽ - nhưng giải quyết một vấn đề liên quan. Thiết bị đầu cuối in rất chậm khi có nhiều văn bản được gạch chân, cho đến khi chương trình của tôi sắp xếp lại văn bản để giảm lượng chuyển đổi giữa chuyển động tiến / lùi.

Với thiết bị đầu cuối video, không cần điều đó. Nhưng họ không làm quá. Thay vào đó, chúng tôi có các chương trình nhận dạng gạch chân và hiển thị gạch chân hoặc có groff, có thể hiển thị văn bản màu thay vì gạch chân (và in đậm).

Đọc thêm:


Cảm ơn câu trả lời toàn diện với nền lịch sử thú vị. Trời đã khuya rồi nên tôi sẽ đọc đúng vào ngày mai. FWIW, tôi thực sự đã nâng cao câu trả lời của bạn về việc tạo các trang man vào đầu ngày hôm nay khi tôi đang nghiên cứu họ * roff của trình định dạng văn bản.
Anthony G - công lý cho Monica

43

Overstriking là một phương pháp được sử dụng trong nroff(xem bài báo Troff ) để cung cấp nhiều khả năng đánh máy hơn so với ASCII đơn giản sẽ cho phép:

  • văn bản in đậm (bằng cách vượt quá cùng một ký tự)
  • văn bản được gạch chân (bằng cách nói quá _)
  • dấu và dấu phụ ( ví dụ: é được tạo ra bởi quá mức evới )

và nhiều biểu tượng khác, được cho phép bởi thiết bị đầu ra đích.

Trong bash, các .0tệp này được sản xuất trực tiếp bởi nroff, với Makefilecác quy tắc như

.1.0:
        $(RM) $@
        -${NROFF} -man $< > $@

Bạn có thể xem các tập tin như vậy bằng cách sử dụng less; nó sẽ xử lý các chuỗi quá mức và thay thế chúng khi thích hợp:

less bash.0

Nguyên nroff's đầu ra nhắm mục tiêu các thiết bị đầu ra máy đánh chữ kiểu, trong đó sẽ sao lưu mỗi khi họ nhận được một nhân vật xóa lùi; overstriking sẽ tạo ra đầu ra hình ảnh mong muốn. Như chirlu đã chỉ ra , tấn công cùng một nhân vật hai lần thường sẽ dẫn đến một diện mạo táo bạo hơn nhờ sự sai lệch không thể tránh khỏi của các cuộc đình công liên tiếp; sự gia tăng lượng mực gửi cũng sẽ giúp ích.

( troffmáy sắp chữ mục tiêu.)


Cảm ơn liên kết đến Hướng dẫn sử dụng Troff và thông tin về cách các tệp được tạo ra. Trong câu hỏi của tôi, tôi cũng đã hỏi làm thế nào các tệp này được sử dụng. Tôi đã thử chạy nroff bash.0trên hệ thống Ubuntu của mình nhưng nó đã tạo ra một số cảnh báo, đầu ra được bọc cứng ở 65 ký tự và không có định dạng đặc biệt.
Anthony G - công lý cho Monica

1
À đúng rồi, tôi quên mất phần đó; Tôi đã chỉnh sửa câu trả lời của mình. nroffđược sử dụng để sản xuất các tệp này, không phải để xem chúng.
Stephen Kitt

2
Vâng, và đó là cách man bashhoạt động khá nhiều ; nó sử dụng nroff -manđể xử lý .1tệp (hoặc bất kỳ phần nào có liên quan), đó là một nrofftệp, trước khi đưa nó vào máy nhắn tin thích hợp.
Stephen Kitt

5
@Anthony Geoghegan: Ý tưởng là bạn sẽ gửi tệp này đến một máy in tác động, chẳng hạn như máy in bánh xe daisy . Nó thực sự sẽ in một ký tự, sau đó di chuyển trở lại, sau đó in ký tự kia, với kết quả như mô tả ở trên. Văn bản in đậm tương tự như hiệu ứng điệp khúc của người Viking trong xử lý âm thanh: Ký tự thứ hai hơi lệch so với ký tự đầu tiên, dẫn đến các dòng dày hơn.
chirlu

1
@chirlu Đó là một lời giải thích tuyệt vời về cách các ký tự điều khiển được sử dụng để đạt được các hiệu ứng chính tả với phần cứng cũ. Việc sử dụng các ký tự cụ thể đó có rất nhiều ý nghĩa bây giờ. Nếu bạn đăng bài này như một câu trả lời, tôi có thể nâng cấp nó đúng cách. Chỉnh sửa: Stephen đã kết hợp và mở rộng về điều này.
Anthony G - công lý cho Monica

7

Và thậm chí trước đó, nó là một phương pháp in trên máy in bóng golf hoạt động như máy chữ cũ và có một bộ ký tự rất hạn chế mà chúng có thể in. Vì vậy, nroff sử dụng luồng byte của một máy in teletype cũ để thể hiện cách nhìn 'trên màn hình'.


nroffthực sự được thiết kế ban đầu để in trên máy chữ, trái ngược với troffcác kiểu chữ được nhắm mục tiêu. Sử dụng màn hình cho đầu ra đến sau ...
Stephen Kitt

9
Tôi đủ tuổi để sử dụng một máy đánh chữ cơ học mà bạn đã gõ !bằng cách gõ' BACKSPACE .
Barmar
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.