VietTUG.org - old forum - threads' archive

thread_id = 2292, contains 2292, 3774, 3807, 3808, 3809, 3879
id = 2292, parent = 0, thread = 2292, catid = 10, locked = 0, moved = 0,
userid = vanchutr, ip = 125.234.243.16, time = 2006/06/04 (1149435463) ,
subject = Dùng font ttf, hits = 2089, karma = 1+0-,
Dùng font *.TTF trong LaTeX

Tôi xin đề nghị các bước làm thế nào để dùng font *.TTF trong LaTeX. Đây chỉ là những đề xuất. Các bạn có thể tìm phương hướng khác. Các bạn nên kiên nhẫn thử vài font để biết các bước này có chính xác hay không. (Trình ttf2tfm tốt nhất là của TexLive CD bản cũ. Với ttf2tfm của MikTeX thì?). Cuối cùng các bạn nên cho biết ý kiến.

Những thắc mắc có tính kỹ thuật thì các bạn nên hỏi hhp

1. Phần này tôi xin đưa ra các bước dùng font ABC chuẩn Unicode với LaTeX, bộ mã (chuẩn mã) được dùng là t5-tcvn.enc

1. Hãy tìm font Unicode. Ví dụ font refsan.tff (Font hỗ trợ tiếng Việt có mã Unicode, font này các bạn có thể download miễn phí trên mạng bằng cách dùng trình duyệt tìm `font tcvn unicode')

2. Tạo thư mục làm việc c:/thufont

3. Chép vào thư muc thu font các file sau: t5-tcvn.enc và file font refsan.ttf; đổi tên file refsan.ttf thành vnrefsan.ttf (đổi tên để khỏi nhầm với các font khác)

4. Chuyển hẳn vào thư mục thufont.

5. Trong thư mục làm việc thufont. Ra dòng lệnh và cho thi hành lệnh sau:
ttf2tfm vnrefsan.ttf -q -T t5-tcvn.enc -v vnrefsan.vpl vnrefsan.tfm >> vnrefsan.map


Sau khi dùng lệnh trên thì trong thư mục thu sinh ra ba file có tên là vnrefsan.vpl, vnrefsan.tfmvnrefsan.map.

6. Cũng ở trong thư mục làm việc thufont. Ra dòng lệnh và cho thi hành lệnh sau:
vptovf vnrefsan.vpl vnrefsan.vf vnrefsan.tfm

Lần này dòng lệnh trên chỉ sinh ra một file duy nhất có tên vnrefsan.vf

7. Chép file vnrefsan.ttf từ thư mục thufont vào đâu đó trong thư mục /fonts/truetype của hệ thống LaTeX hiện dùng.

8. Chép file vnrefsan.tfm từ thư mục thufont vào đâu đó trong thư mục /fonts/tfm của hệ thống LaTeX hiện dùng.

9. Chép file vnrefsan.vf từ thư mục thufont vào đâu đó trong thư mục /fonts/vf của hệ thống LaTeX hiện dùng.

10. Dùng notepad (hay editor tương ứng không có định dạng đặc biệt) và soạn file định nghĩa font như sau:
\ProvidesFile{t5vnrefsan.fd}[2005/9/29 v1.0 Standard LaTeX font definitions]
\DeclareFontFamily{T5}{vnrefsan}{}
\DeclareFontShape{T5}{vnrefsan}{m}{n}{<-> vnrefsan}{}
\DeclareFontShape{T5}{vnrefsan}{m}{it}{<-> vnrefsan}{}
\DeclareFontShape{T5}{vnrefsan}{b}{n}{<-> vnrefsan}{}
\DeclareFontShape{T5}{vnrefsan}{b}{it}{<-> vnrefsan}{}
\endinput

Ghi lại với tên là t5vnrefsan.fd và chép file này vào thư mục /texmf/tex/latex

11. Dùng notepad (hay editor tương ứng không có định dạng đặc biệt) và soạn file tntcvn.map có nội dung như sau:
vnrefsan VnRefsanMedium " T5-TCVN ReEncodeFont " <t5-tcvn.enc <vnrefsan.ttf

Ghi lại với tên tntcvn.map và chép vào thư mục /fonts/map/pdftex

12. Bây giờ (với MikTeX) chạy lệnh MO để cập nhập dữ liệu.

13. Tạo một thư mục mới (có tên ttf) khác với thu mục thufont đã có. Vào thư mục mới ttf để thử dùng font đã tạo ra: Dùng file đầu vào tên test.tex, mã nhập unicode, file có nột dung như sau:

\documentclass[12pt]{article}
\usepackage[utf8]{vietnam}
\parindent=0pt
\usepackage{ifpdf}
\begin{document}

\ifpdf
\pdfmapfile{=tntcvn.map}
\else
\fi

\usefont{T5}{abcbahab}{m}{n}

Nhập vào vài câu ...

\end{document}


14. Dịch file đầu vào test.tex bằng pdflatex như sau:
pdflatex test.tex


15. Xem file kết quả test.pdf thấy hiển thị đúng chữ Việt là tốt.

16. Tôi không dám múa rìu qua mắt thợ. Có gì sai mong các bạn góp ý cho

Cám ơn rất nhiều
 
id = 3774, parent = 2292, thread = 2292, catid = 10, locked = 0, moved = 0,
userid = gamma_detector, ip = 134.158.138.229, time = 2007/07/25 (1185377476) ,
subject = Re:Dùng font ttf, hits = 0, karma = 0+0-,
Cảm ơn Thầy Chú thật nhiều, đây đúng là cái em đang cần. Em sẽ thủ với một số font khác xem sao, nhưng không hiểu với những font không hỗ trợ Unicode thì thế nào nhỉ?
 
id = 3807, parent = 3774, thread = 2292, catid = 10, locked = 0, moved = 0,
userid = vanchutr, ip = 125.235.230.125, time = 2007/07/30 (1185814043) ,
subject = Re:Dùng font ttf, hits = 0, karma = 0+0-,
Với font ttf unicode thì bạn tham khảo thêm tài liệu tạo/ dùng font của Omega (teX). Tôi chỉ xin gợi ý như vậy. Nếu có dịp tôi sẽ trở lại. Chuẩn bị về hưu. Khi về hưu thì có thể tham gia diễn đàn thường xuyên hơn.
 
id = 3808, parent = 3807, thread = 2292, catid = 10, locked = 0, moved = 0,
userid = dtq, ip = 146.140.220.142, time = 2007/07/31 (1185832575) ,
subject = Re:Dùng font ttf, hits = 0, karma = 2+0-,
Thân chào các bạn,
tôi thấy dùng xetex tiện lợi hơn nhiều, xin giới thiệu qua để các bạn tham khảo.

Nếu bạn dùng ubuntu (gutsy) thì hãy
sudo aptitude install texlive-xetex texlive-latex-recommended lmodern

file thử
\documentclass{article}
\usepackage{fontspec}
%\setmainfont{Linux Libertine}
\begin{document}

 (LĐ) - Chủ tịch AFC, Bin Hamman (ảnh) đã nói vậy, khi biểu dương sự thành công của ASIAN Cup lần này do 4 nước Đông Nam Á đồng đăng cai trong buổi họp tổng kết với 4 BTC Indonesia, Malaysia, Thái Lan và VN trước trận chung kết hôm qua.
\end{document}

Như ta thấy, việc đổi phông rất là tiện lợi. Muốn biết tên phông, ta có thể dùng lệnh
fc-list

Ngoài ra, file pdf có thể search theo tiếng việt được (nếu dùng unicode font). Điều này rất hữu ích đối với người dùng desktop search như google hay tracker.

Bye
 
id = 3809, parent = 3808, thread = 2292, catid = 10, locked = 0, moved = 0,
userid = viettug, ip = 222.254.117.252, time = 2007/07/31 (1185865522) ,
subject = Re:Dùng font ttf, hits = 0, karma = 0+0-,
Cám ơn những thông tin rất bổ ích của dtq!
 
id = 3879, parent = 3809, thread = 2292, catid = 10, locked = 0, moved = 0,
userid = texer, ip = 222.252.247.61, time = 2007/08/21 (1187646196) ,
subject = Re:Dùng font ttf, hits = 0, karma = 3+0-,
Chào cả nhà VIETTUG!

Làm việc cả năm trời mới có được một chút thời gian nghỉ hè vài tuần! Thế mà không có nhiều cơ hội để ngâm cứu với bà con cô bác về TeX?

Vào trung tuần tháng 8 vừa rồi tôi đã lục tung hết mấy dữ liệu về xử lý font Truetype cho TeX và bắc đầu lại những cái mình chưa hiểu. Vấn đề tôi chưa hiểu lâu nay là ENCODING T5 được viết dựa trên nguyên lý nào? Từ đó dùng để ánh xạ các ký tự khác theo bảng mã T5 (VD t5d.enc, t5-tcvn.enc,...).

Cuối cùng thì tôi cũng đã tìm ra được những gì lâu nay mình không hiểu. Nói chung, chúng ta không nhất thiết phải tuân theo Encoding t5 mà cũng có thể viết lại được các Encoding khác. Tuy nhiên tôi thấy Encoding tuân thủ rất nghiêm ngặt các tên PS của font hỗ trợ Unicode nên tôi cho t5 là khá chuẩn để chúng ta ánh xạ các font truetype khác theo encoding này. Chẳng hạn, Anh Thành đã làm cho các font MSCORE.

Hiện nay, tôi có thể dùng bất kỳ font nào có đầy đủ các ký tự tiếng việt (như các font hỗ trợ Unicode) vào trong TeX, tuy nhiên chỉ dùng được các font TTF, do đó chúng ta không thể biên dịch file tex với latex có sử dụng gói font này.

Vì thế tôi đã nghĩ ra cách chuyển toàn bộ TTF sang T1, nhưng không may thay, khi đó font T1 nhận được có cấu trúc khác hoàn toàn font TTF ban đầu nên việc ánh xạ trở nên khó khăn hơn (Chỗ này tôi sẽ tìm hiểu nhiều hơn để hoàn thiện; hiện nay vẫn còn bó tay).

Tôi sẽ nói đôi điều về việc encoding: Cái này là rất quan trọng, nó quyết định cho chương trình ttf2tfm có nhận ra các ký tự chúng ta cần lấy ra cho file TFM. Khi biên dịch, chương trình sẽ tìm lại các ký tự tương ứng trong font ban đầu để xuất ra file .DVI hoặc .PDF. Do đó, chúng ta phải chọn các ký tự Tiếng Việt thì mới nhận được lại các ký tự Tiếng Việt khi biên dịch.

Thông thường, khi dùng ttf2tfm, chương trình này chỉ lấy ra 256 ký tự đầu tiên do đó chúng ta sẽ thu được các ký tự này khi biên dịch file tex. Đó là lý do vì sao chúng ta dùng gói time.sty (không có gói vntex.sty đứng trước) thì chúng ta không có được các ký tự Tiếng Việt. Ước gì, chúng ta có thể dùng một encoding dạng như Unicode thay vì 256 để dùng cho tất cả các thứ tiếng thì quá khoẻ. Đây có lẽ là cái mà pdfetex cần phải hướng tới (không biết là cái này bên pdfetex đã làm được tới đâu, nếu có gì sai thì xin bỏ qua cho!!!).

Để viết được một file t5-xyz.enc, bạn phải biết các tên PS của một font TTF nào đó, từ đó ánh xạ vào t5. Vấn đề này tôi cần trao đổi thêm với một số người nữa rồi sẽ nói chính xác hơn.

Hiện nay tôi đã thữ và chạy tốt được 30 font khác nhau (TTF). Lúc này đang vào năm học mới nên phải chuẩn bị soạn bài giảng trước đã. Khi nào rãnh rỗi sẽ đem ra NẤU lại các encoding này cho TeX.

Hy vọng qua bài viết này sẽ được cùng trao đổi với các "chuyên za" về việc chuyễn font TTF sang T1 và giữ nguyên cấu trúc của các font ban đầu? Xin liên hệ qua email hanhnguyenvan at gmeo dot com. Trong bài viết này tôi đặc biệt trao đổi với các "chuyên za" trong việc thiết kế font để biết nhiều hơn. Nếu ai đó đọc bài này mà thấy không rõ lắm thì xin đừng gửi e-mail để trao đổi về những thứ đó. Hãy tập trung vào việc TTF2PFB để tiện trong việc phát triển. Xin chân thành cảm ơn!

Ôi! Máy sắp hết PIN rồi! Phải post thôi!