I don't know much about fontsampler but the commands you list here are
mostly irrelevant. My guess is you will need to set the features in the
font to get proper shaping. A good set of features that should do the
trick is called "arabic".
When loading the font, you should do something like the following, but I
have not tried it myself.
\font\myfont=file:font.otf:language=dflt;script=arab;ccmp=yes;init=yes;medi=yes;fina=yes;rlig=yes
—MHB
On Fri, Oct 7, 2016 at 7:01 AM, Mingranina Gingranina
Dear All, Hello,
I am trying to use "fontsampler example" with Persian fonts (please see below or "http://wiki.luatex.org/index.php/Fontsampler" for fontsampler codes). The problem is that Persian words apears as a string of separate glyphs, for example I get "حسن" instead of "حسن". Do I have to use commands like the followings inside \directlua or tex.tprint to fix the problem? If yes, how can I do that?
\installlanguage [fa][default=pe,date=\longjalalidatefmt] \mainlanguage[fa]
\definefontfeature[tlig][tlig=yes] \definefontfeature[slanted][slant=.2] \definefontfeature[dlang][language=dflt] \definefontfeature[flang][language=far]
Thanks Mingranina
fontsampler.tex ============================================================ ============================================= \input luaotfload.sty \overfullrule 0pt \font\mono = {file:lmmono8-regular.otf} at 6pt \parindent 0pt
\def \samplestring {Sphinx of black quartz, judge my vow. 1234567890 äÄöÖüÜ ß !"§\$\%\&()=?}
\directlua{ dofile("fontsampler.lua") fontsampler(arg[2]) }
\bye ============================================================ ============================================= End Of fontsampler.tex
fontsampler.lua ============================================================ ============================================= function dirtree(dir) assert(dir and dir ~= "", "directory parameter is missing or empty") if string.sub(dir, -1) == "/" then dir=string.sub(dir, 1, -2) end
local function yieldtree(dir) for entry in lfs.dir(dir) do if not entry:match("^%.") then entry=dir.."/"..entry if not lfs.isdir(entry) then coroutine.yield(entry,lfs.attributes(entry)) end if lfs.isdir(entry) then yieldtree(entry) end end end end
return coroutine.wrap(function() yieldtree(dir) end) end
function fontsampler( dir ) for entry in dirtree(dir) do if entry:match(".otf","-4") then tex.tprint({[[\mono ]]},{-2,entry},{[[ (]]},{-2,fontloader.info(entry).fontname},{[[)\par\penalty 10000\font\sample={file:]]},{-2,entry},{[[} at 12pt\sample\samplestring\par\penalty 10000\vrule width \hsize height 0.25pt depth 0pt\par]]}) end end end ============================================================ ============================================= End Of fontsampler.lua ____________________________________________________________ _______________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/ listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ____________________________________________________________ _______________________