diff options
author | Marius <mariausol@gmail.com> | 2010-07-04 15:32:09 +0300 |
---|---|---|
committer | Marius <mariausol@gmail.com> | 2010-07-04 15:32:09 +0300 |
commit | 85b7bc695629926641c7cb752fd478adfdf374f3 (patch) | |
tree | 80293f5aaa7b95a500a78392c39688d8ee7a32fc /tex/context/base/font-col.mkiv | |
download | context-85b7bc695629926641c7cb752fd478adfdf374f3.tar.gz |
stable 2010-05-24 13:10
Diffstat (limited to 'tex/context/base/font-col.mkiv')
-rw-r--r-- | tex/context/base/font-col.mkiv | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/tex/context/base/font-col.mkiv b/tex/context/base/font-col.mkiv new file mode 100644 index 000000000..181b985f6 --- /dev/null +++ b/tex/context/base/font-col.mkiv @@ -0,0 +1,148 @@ +%D \module +%D [ file=font-col, +%D version=2008.06.11, +%D title=\CONTEXT\ Font Macros, +%D subtitle=Fallbacks (collections), +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright=PRAGMA] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +% ! EXPERIMENTAL ! code will be made more nice +% +% actually we can now do more at the lua end + +% todo: missing only, force always, multiple fallbacks with test, scale +% +% \resetfontfallback [whatever] +% +% \definefontfallback [whatever] [Slanted] [0x0060-0x007F] [force=yes] +% \definefontfallback [whatever] [Bold] [0x0080-0x00FF,0x00A0-0x00AF] [rscale=1.2] +% \definefontfallback [whatever] [BoldSlanted] [0x00C0-0x00C7] [check=yes,force=yes] + +\writestatus{loading}{ConTeXt Font Macros / Collections} + +\registerctxluafile{font-col}{1.001} + +\unprotect + +\unexpanded\def\definefontfallback + {\doquadrupleempty\dodefinefontfallback} + +\def\dodefinefontfallback[#1][#2][#3][#4]% + {\ctxlua{fonts.collections.define("#1","#2",\!!bs#3\!!es,\!!bs#4\!!es)}} + +\def\resetfontfallback + {\dodoubleempty\doresetfontfallback} + +\def\doresetfontfallback[#1][#2]% + {\ctxlua{fonts.collections.reset("#1","#2")}} + +% add fallbacks to last font + +\def\dodefinefontfallbacks#1% + {\ctxlua{fonts.collections.prepare("#1")}} + +% we might as well move the handling to lua but then we need to pass the +% fallbacks, skewchar etc. + +\setfalse\doingfontfallbacks + +\def\dodefinefontfallbacksindeed#1% + {\begingroup + \settrue\doingfontfallbacks + \lastrawfontcall % sets current font id + \dodefinefontfallbacks#1% + \endgroup} + +\appendtoks + \ifconditional\doingfontfallbacks\else + \ifx\@@fontfallbacks\empty + \ifx\@@fontclassfallbacks\empty + \else + \dodefinefontfallbacksindeed\@@fontclassfallbacks + \fi + \else + \dodefinefontfallbacksindeed\@@fontfallbacks + \fi + \fi +\to\everydefinefont + +\def\dostartcloningfonts + {\bgroup + \let\savedfontspec\somefontspec} + +\def\dostopcloningfonts + {\egroup} + +\def\doclonefonta#1#2% kind of dododefinefont + {\ctxlua{fonts.collections.message("defining #1 (relative scale: #2)")}% + \autofontsizefalse + \let\lastfontidentifier\s!dummy + \def\localrelativefontsize{#2}% + \let\localabsolutefontsize\fontbody + \lowleveldefinefont{#1}\rawfontidentifier + \csname\rawfontidentifier\endcsname + \autofontsizefalse + %\setfontcharacteristics + }%\the\everyfontswitch} + +\def\doclonefontb#1% #2 + {\doclonefonta{#1 \savedfontspec}} + +% check : only replace when present in replacement font (default: no) +% force : force replacent even when basefont has glyph (default: yes) + +% \definefontfallback [whatever] [Slanted] [0x0060-0x007F] [force=yes] +% \definefontfallback [whatever] [Bold] [0x0080:0x00FF,0x00A0:0x00AF] [rscale=2.0] +% \definefontfallback [whatever] [BoldSlanted] ["00C0-"00C7] [check=yes,force=yes] +% \definefontfallback [whatever] [Mono] [latinextendeda] [force=yes] % 0x0100:0x017F +% \definefontfallback [whatever] [Mono] [latin extended a] [force=yes] % 0x0100:0x017F +% +% \definefontsynonym[SerifPlus][Serif][fallbacks=whatever] +% +% \definefont[MySerif][SerifPlus at 10pt] +% +% \startcolumns[n=6] +% \MySerif +% \dostepwiserecurse {0} {65000} {1} { +% \iffontchar\font\recurselevel +% {\tttf\uchexnumbers\recurselevel:} \char\recurselevel\par +% \fi +% } +% \stopcolumns + +% \definefontfeature[zh][mode=node,script=hang,lang=zhs] +% \definefontfallback[serifwhatever] [lmroman10-regular] [0x0000-0x0400][force=yes] +% \definefontfallback[serifboldwhatever] [lmroman10-bold] [0x0000-0x0400][force=yes] +% \definefontfallback[serifitalicwhatever] [lmroman10-italic] [0x0000-0x0400][force=yes] +% \definefontfallback[serifbolditalicwhatever][lmroman10-bolditalic][0x0000-0x0400][force=yes] +% +% \starttypescript [serif] [zhfont] +% \definefontsynonym [zhserif] [AdobeSongStd-Light] [features=zh,fallbacks=serifwhatever] +% \definefontsynonym [zhserifbold] [AdobeHeitiStd-Regular][features=zh,fallbacks=serifboldwhatever] +% \definefontsynonym [zhserifitalic] [AdobeKaitiStd-Regular][features=zh,fallbacks=serifitalicwhatever] +% \definefontsynonym [zhserifbolditalic][AdobeHeitiStd-Regular][features=zh,fallbacks=serifbolditalicwhatever] +% \stoptypescript +% +% \starttypescript [serif][zhfont][name] +% \definefontsynonym[Serif] [zhserif] % [fallbacks=serifwhatever] +% \definefontsynonym[SerifBold] [zhserifbold] % [fallbacks=serifboldwhatever] +% \definefontsynonym[SerifItalic] [zhserifitalic] % [fallbacks=serifitalicwhatever] +% \definefontsynonym[SerifBoldItalic] [zhserifbolditalic] % [fallbacks=serifbolditalicwhatever] +% \stoptypescript +% +% \starttypescript[myfont] +% \definetypeface[myfont][rm][serif][zhfont] +% \stoptypescript +% +% \usetypescript[myfont] \setupbodyfont[myfont,rm,12pt] +% +% \starttext +% fonts {\bf fonts} {\bi fonts} {\it fonts} +% \stoptext + +\protect \endinput |