リビジョン | 59d551a81505cd788453ff9d2c82048af7d1f970 (tree) |
---|---|
日時 | 2018-12-10 20:14:23 |
作者 | Hironori Kitagawa <h_kitagawa2001@yaho...> |
コミッター | Hironori Kitagawa |
reduce overhead
未対応:\DeclareFixedFont
@@ -460,7 +460,12 @@ do | ||
460 | 460 | size = sp(size); extract_metric(spec) |
461 | 461 | jfm_dir = 'tate' |
462 | 462 | local i = load_jfont_metric(); update_jfm_cache(i, size) |
463 | - luatexja.jfont.tfont_jfmonly_result = metrics[i].size_cache[size] | |
463 | + tex.sprint(cat_lp, | |
464 | + '\\noexpand\\directlua{luatexja.jfont.set_tfont_jfmonly_result(' | |
465 | + .. tostring(i) .. ',' .. tostring(size) .. ')}') | |
466 | + end | |
467 | + function luatexja.jfont.set_tfont_jfmonly_result(i,s) | |
468 | + luatexja.jfont.tfont_jfmonly_result=metrics[i].size_cache[s] | |
464 | 469 | end |
465 | 470 | luatexja.jfont.load_tfont_jfmonly = load_tfont_jfmonly |
466 | 471 | end |
@@ -314,8 +314,8 @@ | ||
314 | 314 | \expandafter\expandafter\expandafter\let |
315 | 315 | \expandafter\expandafter\csname ltj@@orig@selectfont\endcsname\csname selectfont\space\endcsname |
316 | 316 | \@EverySelectfont@Init |
317 | -\let\ltj@@font@info\@font@info | |
318 | -\let\ltj@@font@warning\@font@warning | |
317 | +%\let\ltj@@font@info\@font@info | |
318 | +%\let\ltj@@font@warning\@font@warning | |
319 | 319 | \def\@EverySelectfont@Init{% |
320 | 320 | \expandafter\let\csname selectfont\space \endcsname \ltj@@orig@selectfont |
321 | 321 | \ltj@@EverySelectfont@Init |
@@ -323,9 +323,6 @@ | ||
323 | 323 | \def\ltj@selectfont@tate{% |
324 | 324 | \let\k@encoding\ct@encoding |
325 | 325 | \xdef\font@name{\csname\curr@kfontshape/\f@size\endcsname}% |
326 | - \unless\ifnum\ltjgetparameter{direction}=3\relax | |
327 | - \let\@font@info\@gobble\let\@font@warning\@gobble | |
328 | - \fi | |
329 | 326 | \pickup@tfont |
330 | 327 | \ifnum\ltjgetparameter{direction}=3 \font@name |
331 | 328 | \ltj@@does@alt@set{\curr@kfontshape}{% |
@@ -334,15 +331,10 @@ | ||
334 | 331 | % 定義した alt fonts のデータを \ltjdeclarealtfont に渡すのと同等の処理をする |
335 | 332 | \directlua{luatexja.jfont.pickup_alt_font_a('\f@size')}% |
336 | 333 | }% |
337 | - \else | |
338 | - \let\@font@info\ltj@@font@info\let\@font@warning\ltj@@font@warning | |
339 | 334 | \fi} |
340 | 335 | \def\ltj@selectfont@yoko{% |
341 | 336 | \let\k@encoding\cy@encoding |
342 | 337 | \xdef\font@name{\csname\curr@kfontshape/\f@size\endcsname}% |
343 | - \ifnum\ltjgetparameter{direction}=3\relax | |
344 | - \let\@font@info\@gobble\let\@font@warning\@gobble | |
345 | - \fi | |
346 | 338 | \pickup@jfont |
347 | 339 | \unless\ifnum\ltjgetparameter{direction}=3 \font@name |
348 | 340 | \ltj@@does@alt@set{\curr@kfontshape}{% |
@@ -351,8 +343,6 @@ | ||
351 | 343 | % 定義した alt fonts のデータを \ltjdeclarealtfont に渡すのと同等の処理をする |
352 | 344 | \directlua{luatexja.jfont.pickup_alt_font_a('\f@size')}% |
353 | 345 | }% |
354 | - \else | |
355 | - \let\@font@info\ltj@@font@info\let\@font@warning\ltj@@font@warning | |
356 | 346 | \fi} |
357 | 347 | \def\ltj@selectfont@patch{% |
358 | 348 | \directlua{luatexja.base.start_time_measure('selectfont')}% |
@@ -445,6 +435,7 @@ | ||
445 | 435 | local t = lua.get_functions_table() |
446 | 436 | local getfont, dir_tate = font.getfont, luatexja.dir_table.dir_tate |
447 | 437 | local fmt, get_attr = luatexja.jfont.font_metric_table, tex.getattribute |
438 | + local getcount=tex.getcount | |
448 | 439 | local setdimen, set_attr = tex.setdimen, tex.setattribute |
449 | 440 | local dir = luatexja.unary_pars.direction |
450 | 441 | t[\the\ltj@@adjust@baseline@inner] = function() |
@@ -635,19 +626,31 @@ | ||
635 | 626 | |
636 | 627 | \let\extract@afont\extract@font |
637 | 628 | \def\pickup@jfont{% |
638 | - \expandafter \ifx \font@name \relax | |
629 | + \unless\ifnum\ltjgetparameter{direction}=3\relax | |
630 | + \expandafter \ifx \font@name \relax | |
639 | 631 | \let\extract@font\extract@jfont |
640 | 632 | \define@newfont |
641 | 633 | \let\extract@font\extract@afont |
642 | - \fi | |
643 | - \let\getjfont\font@name} | |
634 | + \fi | |
635 | + \fi | |
636 | + \let\getjfont\font@name} | |
644 | 637 | \def\pickup@tfont{% |
638 | + \ifnum\ltjgetparameter{direction}=3\relax | |
645 | 639 | \expandafter \ifx \font@name \relax |
646 | 640 | \let\extract@font\extract@tfont |
647 | 641 | \define@newfont |
648 | 642 | \let\extract@font\extract@afont |
649 | 643 | \fi |
650 | - \let\gettfont\font@name} | |
644 | + \else | |
645 | + \begingroup\escapechar\m@ne | |
646 | + \ifcsname ltj@@tfontjfm/\expandafter\string\font@name\endcsname\else | |
647 | + \let\extract@font\extract@tfont@onlyjfm | |
648 | + \define@newfont | |
649 | + \let\extract@font\extract@afont | |
650 | + \fi\endgroup | |
651 | + \csname ltj@@tfontjfm/\string\font@name\endcsname | |
652 | + \fi | |
653 | + \let\gettfont\font@name} | |
651 | 654 | |
652 | 655 | % 異なる和文 enc/fam/ser/shape からは異なるフォント番号が振られるように |
653 | 656 | % わざと「ゴミをつける」 |
@@ -655,29 +658,29 @@ | ||
655 | 658 | #1\directlua{luatexja.jfont.print_aftl_address()}\space at% |
656 | 659 | } |
657 | 660 | \def\extract@jfont{% |
658 | - \get@external@font | |
659 | - \unless\ifnum\ltjgetparameter{direction}=3\relax | |
660 | - \ltj@@does@alt@set{\f@encoding/\f@family/\f@series/\f@shape}{% | |
661 | - \edef\external@font{\expandafter\ltj@@patch@external@font\external@font}% | |
662 | - }% | |
663 | - \expandafter\globaljfont\font@name\external@font\relax\font@name% ここで時間がかかる | |
664 | - \fi | |
661 | + \get@external@font | |
662 | + \ltj@@does@alt@set{\f@encoding/\f@family/\f@series/\f@shape}{% | |
663 | + \edef\external@font{\expandafter\ltj@@patch@external@font\external@font}% | |
664 | + }% | |
665 | + \expandafter\globaljfont\font@name\external@font\relax\font@name% ここで時間がかかる | |
665 | 666 | \csname \f@encoding+\f@family\endcsname |
666 | 667 | \csname\curr@fontshape\endcsname} |
667 | 668 | \def\extract@tfont{% |
668 | - \get@external@font | |
669 | - \ifnum\ltjgetparameter{direction}=3\relax | |
670 | - \ltj@@does@alt@set{\f@encoding/\f@family/\f@series/\f@shape}{% | |
671 | - \edef\external@font{\expandafter\ltj@@patch@external@font\external@font}% | |
672 | - }% | |
673 | - \expandafter\globaltfont\font@name\external@font\relax\font@name | |
674 | - \else | |
669 | + \get@external@font | |
670 | + \ltj@@does@alt@set{\f@encoding/\f@family/\f@series/\f@shape}{% | |
671 | + \edef\external@font{\expandafter\ltj@@patch@external@font\external@font}% | |
672 | + }% | |
673 | + \expandafter\globaltfont\font@name\external@font\relax\font@name | |
674 | + \csname \f@encoding+\f@family\endcsname | |
675 | + \csname\curr@fontshape\endcsname} | |
676 | +\def\extract@tfont@onlyjfm{% | |
677 | + \get@external@font | |
678 | + \csxdef{ltj@@tfontjfm/\expandafter\string\font@name}{% | |
675 | 679 | \directlua{% |
676 | 680 | luatexja.jfont.load_tfont_jfmonly('\luatexluaescapestring{\external@font}') |
677 | 681 | }% |
678 | - \fi | |
679 | - \csname \f@encoding+\f@family\endcsname | |
680 | - \csname\curr@fontshape\endcsname} | |
682 | + }% | |
683 | +} | |
681 | 684 | |
682 | 685 | \let\ltj@@al@do@subst@correction=\do@subst@correction |
683 | 686 | \def\ltj@@ja@do@subst@correction{% |