Thứ Năm, 14 tháng 8, 2025

Render font NomNaTong

Từ file NomNaTong-Regular.ttf file $\rm Lua\LaTeX$ sau đây sẽ render ra một file PDF toàn bộ ký tự Nôm (Tất nhiên cả chữ Hán nữa) của font đồng thời nó cho ta code hexadeciaml của các ký tự Nôm đó, tiện dụng nếu muốn nhập ký tự Nôm vào $\rm \LaTeX$.


\documentclass[17pt]{extarticle}
\usepackage[paperwidth=16cm,paperheight=22cm,
left=0cm, right=1cm, top=1cm, bottom=2cm]{geometry} 
\usepackage{fontspec}
\setmainfont{NomNaTong-Regular}

\usepackage{luacode}
\usepackage{longtable,array,xcolor,listings}
\begin{luacode*} 
function print_glyphs(maxCols,maxChars) 
  local id = font.current()         -- geht Font ID
  local fnt = font.getfont(id)
  local col = 1
  local maxU4 = 15*(16^3+16^2+16+1)
  a = {}
  for k, v in pairs(fnt.characters) do
    a [#a + 1] = k
  end
  table.sort(a)
  for i, k in ipairs(a) do
    if i >= maxChars then break end
    if col == 1 then
      if k > maxU4 then
        tex.sprint(string.format("U+%06x", k))
      else
        tex.sprint(string.format("U+%04x", k))
      end
      tex.sprint("&") 
    end
    if (i) then
      tex.sprint(string.format([[\char%i]], k))
    else
     tex.sprint("~")
    end
    if col == maxCols then              -- Line finished?
      tex.sprint([[\\\cline{2-]] .. maxCols+1 .. "} ")  -- Yes
      col = 1                           -- newline
    else
      tex.sprint("&")                   -- no, Print &
      col = col + 1                     -- next column
    end
  end
end
\end{luacode*}


\begin{document}

\color{black!20}

\begin{longtable}{>{\color{black!50}\ttfamily\footnotesize}r|
                  *{10}{>{\color{black}}p{1.5em}|}}
\cline{2-11}
\endhead


\directlua{print_glyphs(10,65463)} \\ \cline{2-11}
\end{longtable}

\end{document}


Không có nhận xét nào:

Đăng nhận xét