Editing Changing the font for a script
From LuaTeXWiki
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 4: | Line 4: | ||
It is intended just for small chunks of text (a proper noun, a few words, etc.). For proper bidi writing, see typo-dha.lua, typo-dua.lua, typo-dub.lua and typo-duc.lua in context. | It is intended just for small chunks of text (a proper noun, a few words, etc.). For proper bidi writing, see typo-dha.lua, typo-dua.lua, typo-dub.lua and typo-duc.lua in context. | ||
− | |||
− | |||
− | |||
− | |||
<pre> | <pre> | ||
Line 14: | Line 10: | ||
\directlua{ | \directlua{ | ||
local DIR = node.id("dir") | local DIR = node.id("dir") | ||
− | function | + | function show_nodes (head) |
− | |||
local isArab = false | local isArab = false | ||
for item in node.traverse_id(node.id"glyph", head) do | for item in node.traverse_id(node.id"glyph", head) do | ||
Line 22: | Line 17: | ||
if isArab == false then | if isArab == false then | ||
isArab = true | isArab = true | ||
− | + | d = node.new(DIR) | |
d.dir = '+TRT' | d.dir = '+TRT' | ||
− | node.insert_before(head, item, d) | + | node.insert_before(head, item, d) |
− | |||
− | |||
− | |||
end | end | ||
else | else | ||
if isArab == true then | if isArab == true then | ||
isArab = false | isArab = false | ||
− | + | d = node.new(DIR) | |
d.dir = '-TRT' | d.dir = '-TRT' | ||
− | node. | + | node.insert_after(head, prevglyf, d) |
− | |||
− | |||
− | |||
end | end | ||
end | end | ||
Line 44: | Line 33: | ||
return head | return head | ||
end | end | ||
− | luatexbase.add_to_callback("pre_linebreak_filter", | + | luatexbase.add_to_callback("pre_linebreak_filter", show_nodes, 'desc') |
− | luatexbase.add_to_callback("hpack_filter", | + | luatexbase.add_to_callback("hpack_filter", show_nodes, 'desc') |
} | } | ||
% The contextual analysis for arabic must be after the font | % The contextual analysis for arabic must be after the font | ||
− | % | + | % changes. It fontspec is loaded before, then the callbacks must be |
% reorderer, which is feasible. | % reorderer, which is feasible. | ||
Line 64: | Line 53: | ||
\begin{tabular}{rr} | \begin{tabular}{rr} | ||
One & Two \\ | One & Two \\ | ||
− | Three & أربعة % :-/ | + | Three & أربعة % :-/ Estra space |
\end{tabular} | \end{tabular} | ||