From cfefabaa36d19b904583b6e59ca6d769df7591f2 Mon Sep 17 00:00:00 2001 From: Kazuki Maeda Date: Thu, 5 May 2011 18:25:44 +0900 Subject: [PATCH] Further optimization of mk_rml() for speed. Trivial fix to test01-noembed.tex: Ryumin-Lightfile -> Ryumin-Light --- src/luatexja-rmlgbm.lua | 25 +++++++++++++------------ test/test01-noembed.pdf | Bin 43849 -> 43212 bytes test/test01-noembed.tex | 4 ++-- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/luatexja-rmlgbm.lua b/src/luatexja-rmlgbm.lua index 1a7dbfc..8cace65 100644 --- a/src/luatexja-rmlgbm.lua +++ b/src/luatexja-rmlgbm.lua @@ -1,7 +1,7 @@ local rmlgbm_data = require('luatexja-rmlgbm-data') +local cache_chars = { [655360] = rmlgbm_data.characters } local function mk_rml(name, size, id) - local specification = fonts.define.analyze(name,size) specification = fonts.define.specify[':'](specification) local features = specification.features.normal @@ -12,7 +12,8 @@ local function mk_rml(name, size, id) fontdata[k] = v cachedata[k] = v end - + fontdata.characters = nil + cachedata.characters = nil fontdata.unicodes = nil fontdata.shared = nil cachedata.shared = {} @@ -25,19 +26,19 @@ local function mk_rml(name, size, id) shared.processes, shared.features = fonts.otf.set_features(cachedata,fonts.define.check(features,fonts.otf.features.default)) -- characters & scaling - local characters = {} - local orig_chars = rmlgbm_data.characters if size < 0 then size = -size * 655.36 end local scale = size / 655360 - -- local size_cache = {} - for k, v in pairs(orig_chars) do - characters[k] = {} - characters[k].index = v.index - characters[k].width = v.width * scale - characters[k].tounicode = v.tounicode + if not cache_chars[size] then + cache_chars[size] = {} + for k, v in pairs(cache_chars[655360]) do + cache_chars[size][k] = {} + cache_chars[size][k].index = v.index + cache_chars[size][k].width = v.width * scale + cache_chars[size][k].tounicode = v.tounicode + end end - fontdata.characters = characters - cachedata.characters = characters + fontdata.characters = cache_chars[size] + cachedata.characters = cache_chars[size] local parameters = {} for k, v in pairs(rmlgbm_data.parameters) do diff --git a/test/test01-noembed.pdf b/test/test01-noembed.pdf index aa9c0fc8b2e9a663d64b4c45abce202acfd35049..ab3a9e327dca3b8828ac40a53c280023ab03b426 100644 GIT binary patch delta 4181 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 Czc5t* delta 4847 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 diff --git a/test/test01-noembed.tex b/test/test01-noembed.tex index d670d8d..81e0393 100644 --- a/test/test01-noembed.tex +++ b/test/test01-noembed.tex @@ -57,8 +57,8 @@ \bigskip {\noindent\bf\tengt ■{\tt differentjfm}による挙動の違い} -\jfont\tenMa={psft:Ryumin-Lightfile:jfm=ujis} -\jfont\tenMb={psft:Ryumin-Lightfile:jfm=ujis;jfmvar=a} +\jfont\tenMa={psft:Ryumin-Light:jfm=ujis} +\jfont\tenMb={psft:Ryumin-Light:jfm=ujis;jfmvar=a} \jfont\tenGa={psft:GothicBBB-Medium:jfm=ujis} at 15pt \jfont\tenGb={psft:GothicBBB-Medium:jfm=ujis;jfmvar=a} at 15pt\relax -- 2.11.0