From f4a1b50c01c511bb4deb382f81d3b8f633bce4d0 Mon Sep 17 00:00:00 2001
From: Khaled Hosny <khaledhosny@eglug.org>
Date: Sat, 5 Jun 2010 23:09:05 +0300
Subject: Suffle the code around to actually work

---
 luaotfload.dtx | 70 +++++++++++++++++++++++++++-------------------------------
 1 file changed, 33 insertions(+), 37 deletions(-)

(limited to 'luaotfload.dtx')

diff --git a/luaotfload.dtx b/luaotfload.dtx
index 1e4e338..2be5db8 100644
--- a/luaotfload.dtx
+++ b/luaotfload.dtx
@@ -554,6 +554,38 @@ luaotfload.loadmodule('font-dum.lua')
 luaotfload.loadmodule('font-nms.lua')
 luaotfload.loadmodule('font-clr.lua')
 
+%    \end{macrocode}
+%
+% \subsection{Emulating font dimensions}
+%
+% And here add some code to emulate \XeTeX's \cs{fontdimen8},
+% which stores the caps-height of the font. (Cf.\ \cs{fontdimen5} which
+% stores the x-height.)
+%
+% Falls back to measuring the glyph if the font doesn't contain the
+% necessary information.
+% This needs to be extended for fonts that don't contain an `X'.
+%
+%    \begin{macrocode}
+local function def_font(...)
+    local fontdata = fonts.define.read(...)
+    if fontdata then
+        local units     = fontdata.units
+        local size      = fontdata.size
+        local otfdata   = fontdata.shared.otfdata
+
+        local capheight = otfdata.pfminfo.os2_capheight
+
+        local dimen8 = capheight/units*size
+
+        if capheight <= 0 then
+            dimen8 = fontdata.characters[string.byte("X")].height
+        end
+
+        fontdata.parameters[8] = dimen8
+    end
+    return fontdata
+end
 %    \end{macrocode}
 %
 % \subsection{\ConTeXt\ override}
@@ -579,7 +611,7 @@ function luaotfload.register_callbacks()
                                'luaotfload.hpack_filter')
     luatexbase.reset_callback('define_font')
     luatexbase.add_to_callback('define_font',
-                                fonts.define.read,
+                                def_font,
                                'luaotfload.define_font', 1)
     luatexbase.add_to_callback('find_vf_file',
                                 fonts.vf.find,
@@ -598,42 +630,6 @@ function luaotfload.unregister_callbacks()
 end
 %    \end{macrocode}
 %
-% \subsection{Emulating font dimensions}
-%
-% And here add some code to emulate \XeTeX's \cs{fontdimen8},
-% which stores the caps-height of the font. (Cf.\ \cs{fontdimen5} which
-% stores the x-height.)
-%
-% Falls back to measuring the glyph if the font doesn't contain the
-% necessary information.
-% This needs to be extended for fonts that don't contain an `X'.
-%
-%    \begin{macrocode}
-local function def_font(...)
-    local fontdata = fonts.define.read(...)
-    if fontdata then
-        local units     = fontdata.units
-        local size      = fontdata.size
-        local otfdata   = fontdata.shared.otfdata
-
-        local capheight = otfdata.pfminfo.os2_capheight
-
-        local dimen8 = capheight/units*size
-
-        if capheight <= 0 then
-            dimen8 = fontdata.characters[string.byte("X")].height
-        end
-
-        fontdata.parameters[8] = dimen8
-    end
-    return fontdata
-end
-luatexbase.reset_callback('define_font')
-luatexbase.add_to_callback('define_font',
-                            def_font,
-                           'luaotfload.define_font', 1)
-%    \end{macrocode}
-%
 % \iffalse
 %</lua>
 % \fi
-- 
cgit v1.2.3

