From 298b5105d4a63a60509fa95f7826173b5e91813a Mon Sep 17 00:00:00 2001
From: Khaled Hosny <khaledhosny@eglug.org>
Date: Fri, 8 Jan 2010 20:57:05 +0200
Subject: Move 'font-msc' module to its own file

For easier maintenance.
---
 luaotfload.dtx    | 179 ------------------------------------------------------
 otfl-font-msc.lua | 159 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 159 insertions(+), 179 deletions(-)
 create mode 100644 otfl-font-msc.lua

diff --git a/luaotfload.dtx b/luaotfload.dtx
index 86c5b8d..afcc7bb 100644
--- a/luaotfload.dtx
+++ b/luaotfload.dtx
@@ -78,7 +78,6 @@ and the derived files
 \generate{%
   \usedir{tex/luatex/luaotfload}%
   \file{luaotfload.lua}{\from{luaotfload.dtx}{lua}}%%
-  \file{otfl-font-msc.lua}{\from{luaotfload.dtx}{font-msc}}%%
 }
 
 \obeyspaces
@@ -583,184 +582,6 @@ end
 %</lua>
 % \fi
 %
-% \section{\texttt{otfl-font-msc.lua}}
-%
-% \iffalse
-%<*font-msc>
-% \fi
-%
-%    First, some initializations.
-%
-%    \begin{macrocode}
-
-if not modules then modules = { } end modules ['font-msc'] = {
-    version   = 1.001,
-    comment   = "companion to font-otf.lua (miscellaneous)",
-    author    = "Khaled Hosny",
-    copyright = "Khaled Hosny",
-    license   = "GPL"
-}
-
-%    \end{macrocode}
-%
-%    Support for font slanting and extending.
-%
-%    \begin{macrocode}
-
-fonts.triggers            = fonts.triggers            or { }
-fonts.initializers        = fonts.initializers        or { }
-fonts.initializers.common = fonts.initializers.common or { }
-
-local initializers, format = fonts.initializers, string.format
-
-table.insert(fonts.triggers,"slant")
-
-function fonts.initializers.common.slant(tfmdata,value)
-    value = tonumber(value)
-    if not value then
-        value =  0
-    elseif value >  1 then
-        value =  1
-    elseif value < -1 then
-        value = -1
-    end
-    tfmdata.slant_factor = value
-end
-
-initializers.base.otf.slant = initializers.common.slant
-initializers.node.otf.slant = initializers.common.slant
-
-table.insert(fonts.triggers,"extend")
-
-function initializers.common.extend(tfmdata,value)
-    value = tonumber(value)
-    if not value then
-        value =  0
-    elseif value >  10 then
-        value =  10
-    elseif value < -10 then
-        value = -10
-    end
-    tfmdata.extend_factor = value
-end
-
-initializers.base.otf.extend = initializers.common.extend
-initializers.node.otf.extend = initializers.common.extend
-
-%    \end{macrocode}
-%
-%    Support for font color.
-%
-%    \begin{macrocode}
-
-table.insert(fonts.triggers,"color")
-
-function initializers.common.color(tfmdata,value)
-    if value then
-        tfmdata.color = value
-    end
-end
-
-initializers.base.otf.color = initializers.common.color
-initializers.node.otf.color = initializers.common.color
-
-local function hex2dec(hex,one)
-    if one then
-        return format("%.1g", tonumber(hex, 16)/255)
-    else
-        return format("%.3g", tonumber(hex, 16)/255)
-    end
-end
-
-local res
-
-local function pageresources(a)
-    local res2
-    if not res then
-       res = "/TransGs1<</ca 1/CA 1>>"
-    end
-    res2 = format("/TransGs%s<</ca %s/CA %s>>", a, a, a)
-    res  = format("%s%s", res, res:find(res2) and "" or res2)
-end
-
-local function hex_to_rgba(hex)
-    local r, g, b, a, push, pop, res3
-    if hex then
-        if #hex == 6 then
-            _, _, r, g, b    = hex:find('(..)(..)(..)')
-        elseif #hex == 8 then
-            _, _, r, g, b, a = hex:find('(..)(..)(..)(..)')
-            a                = hex2dec(a,true)
-            pageresources(a)
-        end
-    else
-        return nil
-    end
-    r = hex2dec(r)
-    g = hex2dec(g)
-    b = hex2dec(b)
-    if a then
-        push = format('/TransGs%g gs %s %s %s rg', a, r, g, b)
-        pop  = '0 g /TransGs1 gs'
-    else
-        push = format('%s %s %s rg', r, g, b)
-        pop  = '0 g'
-    end
-    return push, pop
-end
-
-local glyph   = node.id('glyph')
-local hlist   = node.id('hlist')
-local vlist   = node.id('vlist')
-local whatsit = node.id('whatsit')
-
-local function colorize(head)
-   for n in node.traverse(head) do
-       if n.id == hlist or n.id == vlist then
-           colorize(n.list)
-       end
-       if n.id == glyph then
-           local tfmdata = fonts.ids[n.font]
-           if tfmdata and tfmdata.color then
-               local prev = n.prev
-               local next = n.next
-               local pushcolor, popcolor = hex_to_rgba(tfmdata.color)
-               if prev.id == glyph and fonts.ids[prev.font].color == tfmdata.color then
-               else
-                   local push = node.new(whatsit, 8)
-                   push.mode  = 1
-                   push.data  = pushcolor
-                   head       = node.insert_before(head, n, push)
-               end
-               if next.id == glyph and fonts.ids[next.font].color == tfmdata.color then
-               else
-                   local pop  = node.new(whatsit, 8)
-                   pop.mode   = 1
-                   pop.data   = popcolor
-                   head       = node.insert_after(head, n, pop)
-               end
-           end
-       end
-   end
-   return head
-end
-
-local function finalize(head)
-    if res then
-        tex.pdfpageresources = format("%s\n/ExtGState<<%s>>", tex.pdfpageresources, res)
-    end
-    return head
-end
-
-callback.add("hpack_filter",         colorize, "Font color")
-callback.add("pre_linebreak_filter", colorize, "Font color")
-callback.add("pre_output_filter",    finalize, "Finalize hack")
-
-%    \end{macrocode}
-% \iffalse
-%</font-msc>
-% \fi
-%
 % \section{\texttt{luaotfload.sty}}
 %
 % \iffalse
diff --git a/otfl-font-msc.lua b/otfl-font-msc.lua
new file mode 100644
index 0000000..00697f2
--- /dev/null
+++ b/otfl-font-msc.lua
@@ -0,0 +1,159 @@
+if not modules then modules = { } end modules ['font-msc'] = {
+    version   = 1.001,
+    comment   = "companion to font-otf.lua (miscellaneous)",
+    author    = "Khaled Hosny",
+    copyright = "Khaled Hosny",
+    license   = "GPL"
+}
+
+--[[
+ Support for font slanting and extending.
+--]]
+
+fonts.triggers            = fonts.triggers            or { }
+fonts.initializers        = fonts.initializers        or { }
+fonts.initializers.common = fonts.initializers.common or { }
+
+local initializers, format = fonts.initializers, string.format
+
+table.insert(fonts.triggers,"slant")
+
+function fonts.initializers.common.slant(tfmdata,value)
+    value = tonumber(value)
+    if not value then
+        value =  0
+    elseif value >  1 then
+        value =  1
+    elseif value < -1 then
+        value = -1
+    end
+    tfmdata.slant_factor = value
+end
+
+initializers.base.otf.slant = initializers.common.slant
+initializers.node.otf.slant = initializers.common.slant
+
+table.insert(fonts.triggers,"extend")
+
+function initializers.common.extend(tfmdata,value)
+    value = tonumber(value)
+    if not value then
+        value =  0
+    elseif value >  10 then
+        value =  10
+    elseif value < -10 then
+        value = -10
+    end
+    tfmdata.extend_factor = value
+end
+
+initializers.base.otf.extend = initializers.common.extend
+initializers.node.otf.extend = initializers.common.extend
+
+--[[
+  Support for font color.
+--]]
+
+table.insert(fonts.triggers,"color")
+
+function initializers.common.color(tfmdata,value)
+    if value then
+        tfmdata.color = value
+    end
+end
+
+initializers.base.otf.color = initializers.common.color
+initializers.node.otf.color = initializers.common.color
+
+local function hex2dec(hex,one)
+    if one then
+        return format("%.1g", tonumber(hex, 16)/255)
+    else
+        return format("%.3g", tonumber(hex, 16)/255)
+    end
+end
+
+local res
+
+local function pageresources(a)
+    local res2
+    if not res then
+       res = "/TransGs1<</ca 1/CA 1>>"
+    end
+    res2 = format("/TransGs%s<</ca %s/CA %s>>", a, a, a)
+    res  = format("%s%s", res, res:find(res2) and "" or res2)
+end
+
+local function hex_to_rgba(hex)
+    local r, g, b, a, push, pop, res3
+    if hex then
+        if #hex == 6 then
+            _, _, r, g, b    = hex:find('(..)(..)(..)')
+        elseif #hex == 8 then
+            _, _, r, g, b, a = hex:find('(..)(..)(..)(..)')
+            a                = hex2dec(a,true)
+            pageresources(a)
+        end
+    else
+        return nil
+    end
+    r = hex2dec(r)
+    g = hex2dec(g)
+    b = hex2dec(b)
+    if a then
+        push = format('/TransGs%g gs %s %s %s rg', a, r, g, b)
+        pop  = '0 g /TransGs1 gs'
+    else
+        push = format('%s %s %s rg', r, g, b)
+        pop  = '0 g'
+    end
+    return push, pop
+end
+
+local glyph   = node.id('glyph')
+local hlist   = node.id('hlist')
+local vlist   = node.id('vlist')
+local whatsit = node.id('whatsit')
+
+local function colorize(head)
+   for n in node.traverse(head) do
+       if n.id == hlist or n.id == vlist then
+           colorize(n.list)
+       end
+       if n.id == glyph then
+           local tfmdata = fonts.ids[n.font]
+           if tfmdata and tfmdata.color then
+               local prev = n.prev
+               local next = n.next
+               local pushcolor, popcolor = hex_to_rgba(tfmdata.color)
+               if prev.id == glyph and fonts.ids[prev.font].color == tfmdata.color then
+               else
+                   local push = node.new(whatsit, 8)
+                   push.mode  = 1
+                   push.data  = pushcolor
+                   head       = node.insert_before(head, n, push)
+               end
+               if next.id == glyph and fonts.ids[next.font].color == tfmdata.color then
+               else
+                   local pop  = node.new(whatsit, 8)
+                   pop.mode   = 1
+                   pop.data   = popcolor
+                   head       = node.insert_after(head, n, pop)
+               end
+           end
+       end
+   end
+   return head
+end
+
+local function finalize(head)
+    if res then
+        tex.pdfpageresources = format("%s\n/ExtGState<<%s>>", tex.pdfpageresources, res)
+    end
+    return head
+end
+
+callback.add("hpack_filter",         colorize, "Font color")
+callback.add("pre_linebreak_filter", colorize, "Font color")
+callback.add("pre_output_filter",    finalize, "Finalize hack")
+
-- 
cgit v1.2.3