1 điểm bởi GN⁺ 10 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Hershey Fonts là một trong những biểu diễn phông chữ số sơ khai được tạo ra vào năm 1967, và tệp .jhf là tệp văn bản trong đó mỗi dòng biểu diễn một glyph
  • Dòng glyph gồm id[5], length[3], left[1], right[1], points[?], trong đó ID và số lượng điểm được mã hóa ở dạng thập phân
  • Tọa độ điểm biểu diễn các giá trị x, y có dấu bằng hai ký tự; R tương ứng với 0, Q là -1, S là +1
  • Giá trị ký tự tiếp nối từ J=-8 đến Z=+8, ví dụ NW có nghĩa là tọa độ -4,5
  • Nhấc bút được biểu thị bằng " R", tức chữ R in hoa đứng sau một khoảng trắng, là thao tác đặc biệt không vẽ đường cho đến vị trí tiếp theo

Tổng quan định dạng

  • Hershey Fonts là một trong những biểu diễn phông chữ số sơ khai được tạo ra vào năm 1967, và tệp phông chữ vector Hershey .jhf là tệp văn bản trong đó mỗi dòng biểu diễn một glyph
  • Mỗi dòng glyph được mã hóa thành năm phần
    • id[5]: ID thập phân của glyph
    • length[3]: Giá trị thập phân biểu thị số lượng điểm
    • left[1]: vị trí bên trái của hộp giới hạn
    • right[1]: vị trí bên phải của hộp giới hạn
    • points[?]: danh sách điểm kết thúc bằng xuống dòng
  • Một điểm gồm hai ký tự, mỗi ký tự biểu diễn giá trị x, y có dấu tương ứng
  • Vị trí có chữ R in hoa sau khoảng trắng như " R" mang ý nghĩa nhấc bút, nên sẽ không vẽ đường cho đến vị trí tiếp theo

Ánh xạ giá trị và tài liệu tham khảo

  • Giá trị ký tự chạy từ J đến Z, tương ứng từ -8 đến +8, với R làm mốc 0
    • J=-8, K=-7, L=-6, M=-5, N=-4, O=-3, P=-2, Q=-1
    • R=0
    • S=+1, T=+2, U=+3, V=+4, W=+5, X=+6, Y=+7, Z=+8
  • Ví dụ, NW tương ứng với N=-4, W=+5, nên là tọa độ -4,5
  • Tài liệu liên quan

1 bình luận

 
Ý kiến trên Lobste.rs
  • Nếu ai quan tâm, tôi đang làm một bộ sưu tập font Hershey nhỏ
    Nó có cảm giác hiện đại hơn đôi chút so với các kiểu chữ khác thường thấy trên mạng

    • Tuyệt thật. Hồi tôi còn làm việc với plotter nhiều hơn, tôi luôn tiếc vì có quá ít font dùng được, còn những font này thì mới mẻ và đẹp mắt
      Sẽ hay hơn nữa nếu có cả ảnh chụp chúng trông ra sao khi được vẽ bằng plotter và bút dạ loại thường
    • Trông có vẻ hữu ích
      Đặc biệt tôi thích việc các tệp .jhf được cung cấp có cấu trúc rất tốt. Nhiều font Hershey trên mạng có trường id của mọi glyph đều là 12345, hoặc có xuống dòng cưỡng bức trong một số glyph, khiến việc phân tích tệp và vẽ văn bản trở nên khó một cách vô ích
    • Đây thực sự là những font rất đẹp
      Gần đây tôi có nghịch màn hình e-ink Pimoroni Inky và bộ điều khiển Raspberry Pi, rồi gặp font Hershey và định dạng tệp .jhf. Theo tôi nhớ thì thư viện đi kèm có font “Futural”, và nhìn chung nó hoạt động tốt, nhưng có một vấn đề là thiếu các ký tự tiếng Thụy Điển å, ä, ö
      Giờ có vẻ bạn đã quen với font Hershey hơn tôi gấp 100 lần nên tôi muốn hỏi liệu bạn đã từng thấy tệp font .jhf chứa khoảng 255 ký tự đầu của bảng ASCII chưa. Tôi không rõ là do tôi không tìm được font, hay thực sự là nó không tồn tại, nên muốn hỏi xem bạn đã từng thấy chưa
  • Đây là bản tái xử lý năm 1986 của Usenet Font Consortium từ dữ liệu gốc của Hershey, và là một phiên bản đã vận dụng khá nhiều sự phóng túng kiểu lập trình viên C năm 1986 đối với định dạng dữ liệu gốc trong Calligraphy for Computers (1967, PDF) / A contribution to computer typesetting techniques : tables of coordinates for Hershey's repertory of occidental type fonts and graphic symbols
    Định dạng trường cố định của Fortran nguyên bản thậm chí có vẻ còn dễ xử lý hơn, nhưng cuộn băng dữ liệu mà NTIS từng cung cấp được cho là đã thất lạc. Bài viết trên Usenet còn có một câu châm biếm kiểu “dù ai mà thực sự muốn dùng định dạng đó chứ …”
    Và cảm ơn vì đã nhắc tôi nhớ rằng mình phải hoàn thiện, công bố, hoặc từ bỏ hẳn bộ chuyển đổi Hershey sang OTF mà tôi xem lần cuối vào khoảng năm 2016: scruss/python-hershey. Xin gửi lời chào tới tất cả những ai từng thử lao đầu vào định dạng font điên rồ này
    Đây là một hang thỏ khác về font vector mới: GIMMS, từng được dùng tại University of Edinburgh
    Frank Grießhammer cũng có một bài viết và hình minh họa rất hay về Hershey và công việc của ông ấy: Frank Grießhammer

  • Tôi nghĩ định dạng này có thể khá hữu ích cho trình kết xuất phần mềm mà tôi đang viết
    Đây là một dự án chơi chơi nên tôi không muốn cũng không cần hỗ trợ font OTF/TTF, vì vậy font Hershey có vẻ là một cải tiến hợp lý với chi phí thấp hơn so với font bitmap đơn cách hiện tại lấy cảm hứng từ olive.c

  • Ừm, không có đường cơ sở à?

    • Các ví dụ tôi từng thấy cho đến giờ dường như căn glyph theo một đường giữa đồng đều theo chiều dọc
      Nếu có ánh xạ giữa ID glyph và ký tự ASCII/Unicode, thì có lẽ có thể tính đường cơ sở từ kích thước của một ký tự chuẩn như 0
  • Ngày xưa tôi đã chuyển font Hershey sang JSON
    Nó khá dài dòng, nhưng dễ xử lý và dễ đọc hơn. Nếu ai cần thì có thể tải tệp 2.6MB ở đây

  • Trông như một định dạng mệnh lệnh tương ứng với https://en.wikipedia.org/wiki/Metafont mang tính khai báo

  • Font BGI cũng từng có cấu trúc tương tự

  • Một trong những lý do font Hershey hữu ích là vì đây là định dạng vector đơn giản, nên không chỉ phù hợp cho bút plotter mà còn dễ xây dựng các hiệu ứng khác để hiển thị trên màn hình
    Ví dụ, trong phần trực quan hóa AoC 2024 ngày 5, tôi đã lấy mẫu các điểm từ vector và dùng chúng làm điểm tạo mầm bong bóng: https://hachyderm.io/deck/@bazzargh/113599143062296178
    Ở ngày 12, tôi cho các nét được vẽ chậm dần để tạo hiệu ứng như đang viết chữ lên ô cửa sổ phủ sương: https://hachyderm.io/deck/@bazzargh/113639456289455465