mp-cont.mpxl /size: 23 Kb    last modification: 2023-12-21 09:43
1%D \module
2%D   [       file=mp-cont.mpiv,
3%D        version=1999.03.10,
4%D          title=\CONTEXT\ \METAPOST\ graphics,
5%D       subtitle=Interfaces,
6%D         author=Hans Hagen,
7%D           date=\currentdate,
8%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
9%C
10%C This module is part of the \CONTEXT\ macro||package and is
11%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
12%C details.
13
14%D This module is rather preliminary and subjected to changes.
15
16if known metafun_loaded_cont : endinput ; fi ;
17
18newinternal boolean metafun_loaded_cont ; metafun_loaded_cont := true ; immutable metafun_loaded_cont ;
19
20string CurrentLayout ; CurrentLayout := "default" ;
21
22boolean mfun_swapped ;
23
24def SwapPageState =
25    mfun_swapped := true ; % eventually this will go !
26enddef ;
27
28permanent CurrentLayout, SwapPageState ;
29
30extra_beginfig := extra_beginfig & "mfun_swapped := false ;" ;
31
32newscriptindex mfid_PaperHeight           ; mfid_PaperHeight           := scriptindex "PaperHeight"           ; vardef PaperHeight           = runscript mfid_PaperHeight           enddef ;
33newscriptindex mfid_PaperWidth            ; mfid_PaperWidth            := scriptindex "PaperWidth"            ; vardef PaperWidth            = runscript mfid_PaperWidth            enddef ;
34newscriptindex mfid_PrintPaperHeight      ; mfid_PrintPaperHeight      := scriptindex "PrintPaperHeight"      ; vardef PrintPaperHeight      = runscript mfid_PrintPaperHeight      enddef ;
35newscriptindex mfid_PrintPaperWidth       ; mfid_PrintPaperWidth       := scriptindex "PrintPaperWidth"       ; vardef PrintPaperWidth       = runscript mfid_PrintPaperWidth       enddef ;
36newscriptindex mfid_TopSpace              ; mfid_TopSpace              := scriptindex "TopSpace"              ; vardef TopSpace              = runscript mfid_TopSpace              enddef ;
37newscriptindex mfid_BottomSpace           ; mfid_BottomSpace           := scriptindex "BottomSpace"           ; vardef BottomSpace           = runscript mfid_BottomSpace           enddef ;
38newscriptindex mfid_BackSpace             ; mfid_BackSpace             := scriptindex "BackSpace"             ; vardef BackSpace             = runscript mfid_BackSpace             enddef ;
39newscriptindex mfid_CutSpace              ; mfid_CutSpace              := scriptindex "CutSpace"              ; vardef CutSpace              = runscript mfid_CutSpace              enddef ;
40newscriptindex mfid_MakeupHeight          ; mfid_MakeupHeight          := scriptindex "MakeupHeight"          ; vardef MakeupHeight          = runscript mfid_MakeupHeight          enddef ;
41newscriptindex mfid_MakeupWidth           ; mfid_MakeupWidth           := scriptindex "MakeupWidth"           ; vardef MakeupWidth           = runscript mfid_MakeupWidth           enddef ;
42newscriptindex mfid_TopHeight             ; mfid_TopHeight             := scriptindex "TopHeight"             ; vardef TopHeight             = runscript mfid_TopHeight             enddef ;
43newscriptindex mfid_TopDistance           ; mfid_TopDistance           := scriptindex "TopDistance"           ; vardef TopDistance           = runscript mfid_TopDistance           enddef ;
44newscriptindex mfid_HeaderHeight          ; mfid_HeaderHeight          := scriptindex "HeaderHeight"          ; vardef HeaderHeight          = runscript mfid_HeaderHeight          enddef ;
45newscriptindex mfid_HeaderDistance        ; mfid_HeaderDistance        := scriptindex "HeaderDistance"        ; vardef HeaderDistance        = runscript mfid_HeaderDistance        enddef ;
46newscriptindex mfid_TextHeight            ; mfid_TextHeight            := scriptindex "TextHeight"            ; vardef TextHeight            = runscript mfid_TextHeight            enddef ;
47newscriptindex mfid_FooterDistance        ; mfid_FooterDistance        := scriptindex "FooterDistance"        ; vardef FooterDistance        = runscript mfid_FooterDistance        enddef ;
48newscriptindex mfid_FooterHeight          ; mfid_FooterHeight          := scriptindex "FooterHeight"          ; vardef FooterHeight          = runscript mfid_FooterHeight          enddef ;
49newscriptindex mfid_BottomDistance        ; mfid_BottomDistance        := scriptindex "BottomDistance"        ; vardef BottomDistance        = runscript mfid_BottomDistance        enddef ;
50newscriptindex mfid_BottomHeight          ; mfid_BottomHeight          := scriptindex "BottomHeight"          ; vardef BottomHeight          = runscript mfid_BottomHeight          enddef ;
51newscriptindex mfid_LeftEdgeWidth         ; mfid_LeftEdgeWidth         := scriptindex "LeftEdgeWidth"         ; vardef LeftEdgeWidth         = runscript mfid_LeftEdgeWidth         enddef ;
52newscriptindex mfid_LeftEdgeDistance      ; mfid_LeftEdgeDistance      := scriptindex "LeftEdgeDistance"      ; vardef LeftEdgeDistance      = runscript mfid_LeftEdgeDistance      enddef ;
53newscriptindex mfid_LeftMarginWidth       ; mfid_LeftMarginWidth       := scriptindex "LeftMarginWidth"       ; vardef LeftMarginWidth       = runscript mfid_LeftMarginWidth       enddef ;
54newscriptindex mfid_LeftMarginDistance    ; mfid_LeftMarginDistance    := scriptindex "LeftMarginDistance"    ; vardef LeftMarginDistance    = runscript mfid_LeftMarginDistance    enddef ;
55newscriptindex mfid_TextWidth             ; mfid_TextWidth             := scriptindex "TextWidth"             ; vardef TextWidth             = runscript mfid_TextWidth             enddef ;
56newscriptindex mfid_RightMarginDistance   ; mfid_RightMarginDistance   := scriptindex "RightMarginDistance"   ; vardef RightMarginDistance   = runscript mfid_RightMarginDistance   enddef ;
57newscriptindex mfid_RightMarginWidth      ; mfid_RightMarginWidth      := scriptindex "RightMarginWidth"      ; vardef RightMarginWidth      = runscript mfid_RightMarginWidth      enddef ;
58newscriptindex mfid_RightEdgeDistance     ; mfid_RightEdgeDistance     := scriptindex "RightEdgeDistance"     ; vardef RightEdgeDistance     = runscript mfid_RightEdgeDistance     enddef ;
59newscriptindex mfid_RightEdgeWidth        ; mfid_RightEdgeWidth        := scriptindex "RightEdgeWidth"        ; vardef RightEdgeWidth        = runscript mfid_RightEdgeWidth        enddef ;
60newscriptindex mfid_InnerMarginDistance   ; mfid_InnerMarginDistance   := scriptindex "InnerMarginDistance"   ; vardef InnerMarginDistance   = runscript mfid_InnerMarginDistance   enddef ;
61newscriptindex mfid_InnerMarginWidth      ; mfid_InnerMarginWidth      := scriptindex "InnerMarginWidth"      ; vardef InnerMarginWidth      = runscript mfid_InnerMarginWidth      enddef ;
62newscriptindex mfid_OuterMarginDistance   ; mfid_OuterMarginDistance   := scriptindex "OuterMarginDistance"   ; vardef OuterMarginDistance   = runscript mfid_OuterMarginDistance   enddef ;
63newscriptindex mfid_OuterMarginWidth      ; mfid_OuterMarginWidth      := scriptindex "OuterMarginWidth"      ; vardef OuterMarginWidth      = runscript mfid_OuterMarginWidth      enddef ;
64newscriptindex mfid_InnerEdgeDistance     ; mfid_InnerEdgeDistance     := scriptindex "InnerEdgeDistance"     ; vardef InnerEdgeDistance     = runscript mfid_InnerEdgeDistance     enddef ;
65newscriptindex mfid_InnerEdgeWidth        ; mfid_InnerEdgeWidth        := scriptindex "InnerEdgeWidth"        ; vardef InnerEdgeWidth        = runscript mfid_InnerEdgeWidth        enddef ;
66newscriptindex mfid_OuterEdgeDistance     ; mfid_OuterEdgeDistance     := scriptindex "OuterEdgeDistance"     ; vardef OuterEdgeDistance     = runscript mfid_OuterEdgeDistance     enddef ;
67newscriptindex mfid_OuterEdgeWidth        ; mfid_OuterEdgeWidth        := scriptindex "OuterEdgeWidth"        ; vardef OuterEdgeWidth        = runscript mfid_OuterEdgeWidth        enddef ;
68newscriptindex mfid_PageOffset            ; mfid_PageOffset            := scriptindex "PageOffset"            ; vardef PageOffset            = runscript mfid_PageOffset            enddef ;
69newscriptindex mfid_PageDepth             ; mfid_PageDepth             := scriptindex "PageDepth"             ; vardef PageDepth             = runscript mfid_PageDepth             enddef ;
70newscriptindex mfid_LayoutColumns         ; mfid_LayoutColumns         := scriptindex "LayoutColumns"         ; vardef LayoutColumns         = runscript mfid_LayoutColumns         enddef ;
71newscriptindex mfid_LayoutColumnDistance  ; mfid_LayoutColumnDistance  := scriptindex "LayoutColumnDistance"  ; vardef LayoutColumnDistance  = runscript mfid_LayoutColumnDistance  enddef ;
72newscriptindex mfid_LayoutColumnWidth     ; mfid_LayoutColumnWidth     := scriptindex "LayoutColumnWidth"     ; vardef LayoutColumnWidth     = runscript mfid_LayoutColumnWidth     enddef ;
73newscriptindex mfid_LastChangedLayoutPage ; mfid_LastChangedLayoutPage := scriptindex "LastChangedLayoutPage" ; vardef LastChangedLayoutPage = runscript mfid_LastChangedLayoutPage enddef ;
74newscriptindex mfid_SwapMarginDimensions  ; mfid_SwapMarginDimensions  := scriptindex "SwapMarginDimensions"  ; vardef SwapMarginDimensions  = runscript mfid_SwapMarginDimensions  enddef ;
75
76immutable % permanent
77    PaperHeight, PaperWidth, PrintPaperHeight, PrintPaperWidth, TopSpace,
78    BottomSpace, BackSpace, CutSpace, MakeupHeight, MakeupWidth, TopHeight,
79    TopDistance, HeaderHeight, HeaderDistance, TextHeight, FooterDistance,
80    FooterHeight, BottomDistance, BottomHeight, LeftEdgeWidth, LeftEdgeDistance,
81    LeftMarginWidth, LeftMarginDistance, TextWidth, RightMarginDistance,
82    RightMarginWidth, RightEdgeDistance, RightEdgeWidth, InnerMarginDistance,
83    InnerMarginWidth, OuterMarginDistance, OuterMarginWidth, InnerEdgeDistance,
84    InnerEdgeWidth, OuterEdgeDistance, OuterEdgeWidth, PageOffset, PageDepth,
85    LayoutColumns, LayoutColumnDistance, LayoutColumnWidth,
86    LastChangedLayoutPage, SwapMarginDimensions ;
87
88newscriptindex mfid_OnRightPage      ; mfid_OnRightPage      := scriptindex "OnRightPage"      ; vardef OnRightPage      = runscript mfid_OnRightPage      enddef ;
89newscriptindex mfid_OnOddPage        ; mfid_OnOddPage        := scriptindex "OnOddPage"        ; vardef OnOddPage        = runscript mfid_OnOddPage        enddef ;
90newscriptindex mfid_InPageBody       ; mfid_InPageBody       := scriptindex "InPageBody"       ; vardef InPageBody       = runscript mfid_InPageBody       enddef ;
91newscriptindex mfid_LayoutHasChanged ; mfid_LayoutHasChanged := scriptindex "LayoutHasChanged" ; vardef LayoutHasChanged = runscript mfid_LayoutHasChanged enddef ;
92
93immutable % permanent
94    OnRightPage, OnOddPage, InPageBody, LayoutHasChanged ;
95
96newscriptindex mfid_RealPageNumber ; mfid_RealPageNumber := scriptindex "RealPageNumber" ; vardef RealPageNumber= runscript mfid_RealPageNumber enddef ;
97newscriptindex mfid_LastPageNumber ; mfid_LastPageNumber := scriptindex "LastPageNumber" ; vardef LastPageNumber= runscript mfid_LastPageNumber enddef ;
98
99newscriptindex mfid_PageNumber     ; mfid_PageNumber     := scriptindex "PageNumber"     ; vardef PageNumber    = runscript mfid_PageNumber     enddef ;
100newscriptindex mfid_NOfPages       ; mfid_NOfPages       := scriptindex "NOfPages"       ; vardef NOfPages      = runscript mfid_NOfPages       enddef ;
101
102newscriptindex mfid_SubPageNumber  ; mfid_SubPageNumber  := scriptindex "SubPageNumber"  ; vardef SubPageNumber = runscript mfid_SubPageNumber  enddef ;
103newscriptindex mfid_NOfSubPages    ; mfid_NOfSubPages    := scriptindex "NOfSubPages"    ; vardef NOfSubPages   = runscript mfid_NOfSubPages    enddef ;
104
105newscriptindex mfid_CurrentColumn  ; mfid_CurrentColumn  := scriptindex "CurrentColumn"  ; vardef CurrentColumn = runscript mfid_CurrentColumn  enddef ;
106newscriptindex mfid_NOfColumns     ; mfid_NOfColumns     := scriptindex "NOfColumns"     ; vardef NOfColumns    = runscript mfid_NOfColumns     enddef ;
107
108immutable % permanent
109    RealPageNumber, LastPageNumber, PageNumber,
110    NOfPages, SubPageNumber, NOfSubPages, CurrentColumn, NOfColumns ;
111
112newscriptindex mfid_BaseLineSkip  ; mfid_BaseLineSkip  := scriptindex "BaseLineSkip"  ; vardef BaseLineSkip  = runscript mfid_BaseLineSkip         enddef ;
113newscriptindex mfid_LineHeight    ; mfid_LineHeight    := scriptindex "LineHeight"    ; vardef LineHeight    = runscript mfid_LineHeight           enddef ;
114newscriptindex mfid_BodyFontSize  ; mfid_BodyFontSize  := scriptindex "BodyFontSize"  ; vardef BodyFontSize  = runscript mfid_BodyFontSize         enddef ;
115
116newscriptindex mfid_TopSkip       ; mfid_TopSkip       := scriptindex "TopSkip"       ; vardef TopSkip       = runscript mfid_TopSkip              enddef ;
117newscriptindex mfid_StrutHeight   ; mfid_StrutHeight   := scriptindex "StrutHeight"   ; vardef StrutHeight   = runscript mfid_StrutHeight          enddef ;
118newscriptindex mfid_StrutDepth    ; mfid_StrutDepth    := scriptindex "StrutDepth"    ; vardef StrutDepth    = runscript mfid_StrutDepth           enddef ;
119
120newscriptindex mfid_CurrentWidth  ; mfid_CurrentWidth  := scriptindex "CurrentWidth"  ; vardef CurrentWidth  = runscript mfid_CurrentWidth         enddef ;
121newscriptindex mfid_CurrentHeight ; mfid_CurrentHeight := scriptindex "CurrentHeight" ; vardef CurrentHeight = runscript mfid_CurrentHeight        enddef ;
122
123newscriptindex mfid_HSize         ; mfid_HSize         := scriptindex "HSize"         ; vardef HSize         = runscript mfid_HSize                enddef ;
124newscriptindex mfid_VSize         ; mfid_VSize         := scriptindex "VSize"         ; vardef VSize         = runscript mfid_VSize                enddef ;
125
126newscriptindex mfid_EmWidth       ; mfid_EmWidth       := scriptindex "EmWidth"       ; vardef EmWidth       = runscript mfid_EmWidth              enddef ;
127newscriptindex mfid_ExHeight      ; mfid_ExHeight      := scriptindex "ExHeight"      ; vardef ExHeight      = runscript mfid_ExHeight             enddef ;
128
129newscriptindex mfid_uunit         ; mfid_uunit         := scriptindex "uunit"         ; vardef uu            = runscript mfid_uunit                enddef ;
130
131immutable % permanent
132    BaseLineSkip, LineHeight, BodyFontSize, TopSkip, StrutHeight, StrutDepth,
133    CurrentWidth, CurrentHeight, HSize, VSize, EmWidth, ExHeight ;
134
135newscriptindex mfid_PageFraction ; mfid_PageFraction := scriptindex "PageFraction" ; vardef PageFraction = runscript mfid_PageFraction         enddef ;
136newscriptindex mfid_SpineWidth   ; mfid_SpineWidth   := scriptindex "SpineWidth"   ; vardef SpineWidth   = runscript mfid_SpineWidth           enddef ;
137newscriptindex mfid_PaperBleed   ; mfid_PaperBleed   := scriptindex "PaperBleed"   ; vardef PaperBleed   = runscript mfid_PaperBleed           enddef ;
138
139immutable % permanent
140    PageFraction, SpineWidth, PaperBleed ;
141
142newscriptindex mfid_CurrentLayout    ; mfid_CurrentLayout    := scriptindex "CurrentLayout"    ; vardef CurrentLayout    = runscript mfid_CurrentLayout        enddef ;
143newscriptindex mfid_OverlayLineColor ; mfid_OverlayLineColor := scriptindex "OverlayLineColor" ; vardef OverlayLineColor = runscript mfid_OverlayLineColor     enddef ;
144newscriptindex mfid_OverlayColor     ; mfid_OverlayColor     := scriptindex "OverlayColor"     ; vardef OverlayColor     = runscript mfid_OverlayColor         enddef ;
145newscriptindex mfid_OverlayWidth     ; mfid_OverlayWidth     := scriptindex "OverlayWidth"     ; vardef OverlayWidth     = runscript mfid_OverlayWidth         enddef ;
146newscriptindex mfid_OverlayHeight    ; mfid_OverlayHeight    := scriptindex "OverlayHeight"    ; vardef OverlayHeight    = runscript mfid_OverlayHeight        enddef ;
147newscriptindex mfid_OverlayDepth     ; mfid_OverlayDepth     := scriptindex "OverlayDepth"     ; vardef OverlayDepth     = runscript mfid_OverlayDepth         enddef ;
148newscriptindex mfid_OverlayLineWidth ; mfid_OverlayLineWidth := scriptindex "OverlayLineWidth" ; vardef OverlayLineWidth = runscript mfid_OverlayLineWidth     enddef ;
149newscriptindex mfid_OverlayOffset    ; mfid_OverlayOffset    := scriptindex "OverlayOffset"    ; vardef OverlayOffset    = runscript mfid_OverlayOffset        enddef ;
150newscriptindex mfid_OverlayRegion    ; mfid_OverlayRegion    := scriptindex "OverlayRegion"    ; vardef OverlayRegion    = runscript mfid_OverlayRegion        enddef ;
151
152immutable % permanent
153    CurrentLayout, OverlayLineColor, OverlayColor,
154    OverlayWidth, OverlayHeight, OverlayDepth, OverlayLineWidth, OverlayOffset, OverlayRegion ;
155
156newscriptindex mfid_defaultcolormodel    ; mfid_defaultcolormodel    := scriptindex "defaultcolormodel"    ; vardef defaultcolormodel = runscript mfid_defaultcolormodel enddef ;
157
158immutable % permanent
159    defaultcolormodel ;
160
161vardef LeftMarginWidth     = runscript mfid_LeftMarginWidth     enddef ;
162vardef RightMarginWidth    = runscript mfid_RightMarginWidth    enddef ;
163vardef LeftMarginDistance  = runscript mfid_LeftMarginDistance  enddef ;
164vardef RightMarginDistance = runscript mfid_RightMarginDistance enddef ;
165
166vardef LeftEdgeWidth       = runscript mfid_LeftEdgeWidth       enddef ;
167vardef RightEdgeWidth      = runscript mfid_RightEdgeWidth      enddef ;
168vardef LeftEdgeDistance    = runscript mfid_LeftEdgeDistance    enddef ;
169vardef RightEdgeDistance   = runscript mfid_RightEdgeDistance   enddef ;
170
171vardef BackSpace           = runscript mfid_BackSpace           enddef ;
172vardef CutSpace            = runscript mfid_CutSpace            enddef ;
173
174% better use:
175
176vardef OuterMarginWidth    = if not OnRightPage : runscript mfid_LeftMarginWidth     else : runscript mfid_RightMarginWidth    fi enddef ;
177vardef InnerMarginWidth    = if not OnRightPage : runscript mfid_RightMarginWidth    else : runscript mfid_LeftMarginWidth     fi enddef ;
178vardef OuterMarginDistance = if not OnRightPage : runscript mfid_LeftMarginDistance  else : runscript mfid_RightMarginDistance fi enddef ;
179vardef InnerMarginDistance = if not OnRightPage : runscript mfid_RightMarginDistance else : runscript mfid_LeftMarginDistance  fi enddef ;
180
181vardef OuterEdgeWidth      = if not OnRightPage : runscript mfid_LeftEdgeWidth       else : runscript mfid_RightEdgeWidth      fi enddef ;
182vardef InnerEdgeWidth      = if not OnRightPage : runscript mfid_RightEdgeWidth      else : runscript mfid_LeftEdgeWidth       fi enddef ;
183vardef OuterEdgeDistance   = if not OnRightPage : runscript mfid_LeftEdgeDistance    else : runscript mfid_RightEdgeDistance   fi enddef ;
184vardef InnerEdgeDistance   = if not OnRightPage : runscript mfid_RightEdgeDistance   else : runscript mfid_LeftEdgeDistance    fi enddef ;
185
186vardef OuterSpaceWidth     = if not OnRightPage : runscript mfid_BackSpace           else : runscript mfid_CutSpace            fi enddef ;
187vardef InnerSpaceWidth     = if not OnRightPage : runscript mfid_CutSpace            else : runscript mfid_BackSpace           fi enddef ;
188
189% indices
190
191vardef OuterMargin = if not OnRightPage : LeftMargin  else : RightMargin fi enddef ;
192vardef InnerMargin = if not OnRightPage : RightMargin else : LeftMargin  fi enddef ;
193
194vardef OuterEdge   = if not OnRightPage : LeftEdge    else : RightEdge   fi enddef ;
195vardef InnerEdge   = if not OnRightPage : RightEdge   else : LeftEdge    fi enddef ;
196
197immutable % permanent
198    LeftMarginWidth, RightMarginWidth, LeftMarginDistance, RightMarginDistance,
199    LeftEdgeWidth, RightEdgeWidth, LeftEdgeDistance, RightEdgeDistance, BackSpace,
200    CutSpace, OuterMarginWidth, InnerMarginWidth, OuterMarginDistance,
201    InnerMarginDistance, OuterEdgeWidth, InnerEdgeWidth, OuterEdgeDistance,
202    InnerEdgeDistance, OuterSpaceWidth, InnerSpaceWidth, OuterMargin, InnerMargin,
203    OuterEdge, InnerEdge ;
204
205% see node-rul.*
206
207% for the moment we put these here:
208
209% string  RuleDirection ; RuleDirection := "" ;
210% string  RuleOption    ; RuleOption    := "" ;
211% numeric RuleWidth     ; RuleWidth     := 0 ;
212% numeric RuleHeight    ; RuleHeight    := 0 ;
213% numeric RuleDepth     ; RuleDepth     := 0 ;
214% numeric RuleH         ; RuleH         := 0 ;
215% numeric RuleV         ; RuleV         := 0 ;
216% numeric RuleThickness ; RuleThickness := 0 ;
217% numeric RuleFactor    ; RuleFactor    := 0 ;
218% numeric RuleOffset    ; RuleOffset    := 0 ;
219%                     def RuleColor      = (.5white) enddef ; % yet undecided, might become a string
220
221newscriptindex mfid_RuleWidth     ; mfid_RuleWidth     := scriptindex "RuleWidth"     ; vardef RuleWidth     = runscript mfid_RuleWidth     enddef ;
222newscriptindex mfid_RuleHeight    ; mfid_RuleHeight    := scriptindex "RuleHeight"    ; vardef RuleHeight    = runscript mfid_RuleHeight    enddef ;
223newscriptindex mfid_RuleDepth     ; mfid_RuleDepth     := scriptindex "RuleDepth"     ; vardef RuleDepth     = runscript mfid_RuleDepth     enddef ;
224newscriptindex mfid_RuleH         ; mfid_RuleH         := scriptindex "RuleH"         ; vardef RuleH         = runscript mfid_RuleH         enddef ;
225newscriptindex mfid_RuleV         ; mfid_RuleV         := scriptindex "RuleV"         ; vardef RuleV         = runscript mfid_RuleV         enddef ;
226newscriptindex mfid_RuleThickness ; mfid_RuleThickness := scriptindex "RuleThickness" ; vardef RuleThickness = runscript mfid_RuleThickness enddef ;
227newscriptindex mfid_RuleOffset    ; mfid_RuleOffset    := scriptindex "RuleOffset"    ; vardef RuleOffset    = runscript mfid_RuleOffset    enddef ;
228newscriptindex mfid_RuleDirection ; mfid_RuleDirection := scriptindex "RuleDirection" ; vardef RuleDirection = runscript mfid_RuleDirection enddef ;
229newscriptindex mfid_RuleFactor    ; mfid_RuleFactor    := scriptindex "RuleFactor"    ; vardef RuleFactor    = runscript mfid_RuleFactor    enddef ;
230newscriptindex mfid_RuleOption    ; mfid_RuleOption    := scriptindex "RuleOption"    ; vardef RuleOption    = runscript mfid_RuleOption    enddef ;
231newscriptindex mfid_RuleColor     ; mfid_RuleColor     := scriptindex "RuleColor"     ;    def RuleColor     = runscript (mfid_RuleColor)   enddef ;
232
233immutable % permanent
234    RuleWidth, RuleHeight, RuleDepth, RuleH, RuleV, RuleThickness, RuleOffset,
235    RuleDirection, RuleFactor, RuleOption, RuleColor ;
236
237def FakeWord(expr RuleWidth, RuleHeight, RuleDepth, RuleThickness) (text RuleColor) =
238    fill unitsquare
239        xscaled RuleWidth
240        yscaled (RuleDepth-RuleThickness/2)
241        withcolor RuleColor ;
242    fill unitsquare
243        xscaled RuleWidth
244        yscaled (RuleHeight-RuleDepth-RuleThickness/2)
245        shifted (0,RuleDepth+RuleThickness)
246        withcolor RuleColor ;
247enddef ;
248
249def FakeRule(expr RuleWidth, RuleHeight, RuleDepth, RuleThickness) (text RuleColor) =
250    fill unitsquare
251        xscaled RuleWidth
252        yscaled RuleHeight
253        withcolor RuleColor ;
254enddef ;
255
256permanent
257    FakeWord, FakeRule ;
258
259% see typo-ada.*
260
261newscriptindex mfid_AdaptiveWidth     ; mfid_AdaptiveWidth     := scriptindex "AdaptiveWidth"     ; vardef AdaptiveWidth     = runscript mfid_AdaptiveWidth     enddef ;
262newscriptindex mfid_AdaptiveHeight    ; mfid_AdaptiveHeight    := scriptindex "AdaptiveHeight"    ; vardef AdaptiveHeight    = runscript mfid_AdaptiveHeight    enddef ;
263newscriptindex mfid_AdaptiveDepth     ; mfid_AdaptiveDepth     := scriptindex "AdaptiveDepth"     ; vardef AdaptiveDepth     = runscript mfid_AdaptiveDepth     enddef ;
264newscriptindex mfid_AdaptiveTotal     ; mfid_AdaptiveTotal     := scriptindex "AdaptiveDepth"     ; vardef AdaptiveTotal     = runscript mfid_AdaptiveTotal     enddef ;
265newscriptindex mfid_AdaptiveThickness ; mfid_AdaptiveThickness := scriptindex "AdaptiveThickness" ; vardef AdaptiveThickness = runscript mfid_AdaptiveThickness enddef ;
266newscriptindex mfid_AdaptiveColor     ; mfid_AdaptiveColor     := scriptindex "AdaptiveColor"     ; vardef AdaptiveColor     = runscript mfid_AdaptiveColor     enddef ;
267
268immutable % permanent
269    AdaptiveWidth, AdaptiveHeight, AdaptiveDepth, AdaptiveThickness, AdaptiveColor ;
270