| Index: tools/lua/glyph-counts.lua | 
| diff --git a/tools/lua/scrape.lua b/tools/lua/glyph-counts.lua | 
| similarity index 55% | 
| copy from tools/lua/scrape.lua | 
| copy to tools/lua/glyph-counts.lua | 
| index 627018800acb2839f2b6be47dc63c4a1e2391bc7..553e9e38e415ed7a8771983e2e4dfe416011bb22 100644 | 
| --- a/tools/lua/scrape.lua | 
| +++ b/tools/lua/glyph-counts.lua | 
| @@ -18,7 +18,6 @@ function tostr(t) | 
| return str | 
| end | 
|  | 
| -local total = {}    -- accumulate() stores its data in here | 
| local canvas        -- holds the current canvas (from startcanvas()) | 
|  | 
| --[[ | 
| @@ -47,25 +46,43 @@ end | 
| Called with the parameters to each canvas.draw call, where canvas is the | 
| current canvas as set by startcanvas() | 
| ]] | 
| -function sk_scrape_accumulate(t) | 
| -    local n = total[t.verb] or 0 | 
| -    total[t.verb] = n + 1 | 
|  | 
| -    if false and t.verb == "drawRect" and t.paint:isAntiAlias() then | 
| -        local r = t.rect; | 
| -        local p = t.paint; | 
| -        local c = p:getColor(); | 
| -        print("drawRect ", tostr(r), tostr(c), "\n") | 
| +local gCounts = {}  -- [fontID_pointsize] = [] unique glyphs | 
| +local gFirstGlyphs = {} | 
| +local gTotalCount = 0 | 
| + | 
| +function array_count(array) | 
| +    local n = 0 | 
| +    for k in next, array do | 
| +        n = n + 1 | 
| end | 
| +    return n | 
| +end | 
|  | 
| -    if false and t.verb == "drawPath" then | 
| -        local pred, r1, r2, d1, d2 = t.path:isNestedRects() | 
| - | 
| -        if pred then | 
| -            print("drawRect_Nested", tostr(r1), tostr(r2), d1, d2) | 
| -        else | 
| -            print("drawPath", "isEmpty", tostring(t.path:isEmpty()), | 
| -                    "isRect", tostring(t.path:isRect()), tostr(t.path:getBounds())) | 
| +function sk_scrape_accumulate(t) | 
| +    verb = t.verb; | 
| +    if verb == "drawPosText" or verb == "drawPosTextH" then | 
| +        if t.glyphs then | 
| +            local key = array_count(t.glyphs) | 
| +            local n = gCounts[key] | 
| +            if n then | 
| +                gCounts[key] = n + 1 | 
| +            else | 
| +                gCounts[key] = 1 | 
| +            end | 
| + | 
| +            if key == 1 then | 
| +                local first = t.glyphs[1]; | 
| +                local n = gFirstGlyphs[first] | 
| +                if n then | 
| +                    n = n + 1 | 
| +                else | 
| +                    n = 0 | 
| +                end | 
| +                gFirstGlyphs[first] = n | 
| +            end | 
| + | 
| +            gTotalCount = gTotalCount + 1 | 
| end | 
| end | 
| end | 
| @@ -75,6 +92,19 @@ end | 
| "accumulated". | 
| ]] | 
| function sk_scrape_summarize() | 
| -    io.write("\n{ ", tostr(total), " }\n") | 
| +    for k, v in next, gCounts do | 
| +        io.write("glyph_count ", k, ",frequency ", v * 100 / gTotalCount, "\n") | 
| +    end | 
| + | 
| +--[[ | 
| +    io.write("\n\nFirst glyph spread\n\n") | 
| +    for k, v in next, gFirstGlyphs do | 
| +        io.write("glyph, ", k, ",count, ", v, "\n") | 
| +    end | 
| +]] | 
| +end | 
| + | 
| +function test_summary() | 
| +    io.write("just testing test_summary\n") | 
| end | 
|  | 
|  |