167
167
\installcorenamespace {svgfamily}
169
\setvalue{\??svgfamily }{serif}
170
\setvalue{\??svgfamily serif}{serif}
171
\setvalue{\??svgfamily sans}{sans}
172
\setvalue{\??svgfamily mono}{mono}
174
%D This can't change because otherwise \type {\scale[width=4cm]{graphic}} fails.
176
\permanent\protected\def\svgscaled#1%
177
{\fastsxsy{#1}{#1}\svgnormal}
179
\permanent\protected\def\svgnormal#1#2#3#4% family weight style text
182
\ifempty\p_family\else
183
\edef\p_font{\ifcsname\??svgfamily#1\endcsname\lastnamedcs\else#1\fi-#2-#3}%
184
\predefinedfont[\s!spec:\p_font*\s!default\space @ 10bp]%
189
\permanent\protected\def\svgcolored#1#2#3#4% r g b text
190
{\colored[r=#1,g=#2,b=#3]{#4}}
192
% \permanent\protected\def\svgplaced#1#2#3#4% dx dy width text
193
% {\doifelsenothing{#3}%
196
% {\raise#2\onebasepoint\hbox{\kern#1\onebasepoint\relax#4}}}
198
\permanent\protected\def\svgplaced#1#2#3#4% dx dy width text
199
{\doifelsenothing{#3}%
202
{\offsetbox[\c!y=#2]\hbox{\kern#1\relax#4}}}
204
\newdimen\grph_svg_scratchwidth % maybe \startsvgpos etc
206
\permanent\protected\def\svgposchar#1#2#3% dx dy char
207
{\setbox\scratchbox\hpack\bgroup
208
\raise#2\onebasepoint\hbox\bgroup
209
\kern\dimexpr#1\onebasepoint-\grph_svg_scratchwidth\relax
213
\advance\grph_svg_scratchwidth\wd\scratchbox
216
\permanent\protected\def\svgchar#1% char
169
\defcsname\??svgfamily \endcsname{serif}
170
\defcsname\??svgfamily serif\endcsname{serif}
171
\defcsname\??svgfamily sans\endcsname{sans}
172
\defcsname\??svgfamily mono\endcsname{mono}
174
\definelayer[svgmps][\c!method=\v!fit]
176
\permanent\protected\def\svghashed#1%
177
{\clf_svghashed#1\relax}
179
\permanent\protected\def\svg_normal_poscode#1#2#3%
180
{\glyph xoffset #1\onebasepoint yoffset #2\onebasepoint #3\relax}
182
\permanent\protected\def\svg_normal_poschar#1#2#3%
183
{\glyph xoffset #1\onebasepoint yoffset #2\onebasepoint `#3\relax}
185
\permanent\protected\def\svg_normal_posspace#1#2%
188
\permanent\protected\def\svg_normal_space#1%
191
\permanent\protected\def\svg_normal_code#1%
219
\definelayer[svgmps][\c!method=\v!fit]
194
\permanent\protected\def\svg_normal_char#1%
221
\permanent\protected\def\svgstartlayer
197
\permanent\protected\def\svg_normal_startlayer
222
198
{\resetlayer[svgmps]%
223
199
\setlayer[svgmps]\bgroup}
225
\permanent\protected\def\svgstoplayer
201
\permanent\protected\def\svg_normal_stoplayer
227
203
\flushlayer[svgmps]}
229
\permanent\protected\def\svgsetlayer#1#2%
230
{\setlayer[svgmps][\c!x=#1\onebasepoint,\c!y=#2\onebasepoint]} % {#3}
232
\permanent\protected\def\svghashed#1%
233
{\clf_svghashed#1\relax}
205
\permanent\protected\def\svg_normal_colored#1#2#3#4%
206
{\colored[r=#1,g=#2,b=#3]{#4}}
208
\permanent\protected\def\svg_normal_setlayer#1#2#3%
209
{\setlayer[svgmps]{\hbox xoffset #1\onebasepoint yoffset #2\onebasepoint to 10sp{#3}}}
211
\permanent\protected\def\svg_normal_scaled#1#2#3#4#5%
214
\ifempty\p_family\else
215
\edef\p_font{\ifcsname\??svgfamily#2\endcsname\lastnamedcs\else#2\fi-#3-#4}%
216
\predefinedfont[\s!spec:\p_font*\s!default\space @ 10bp]%
218
\glyphscale\numericscale#1\relax % we need a period !
222
\permanent\protected\def\svg_traced_poscode#1#2#3%
223
{\writestatus{SVG TEXT}{....[poscode #1 #2 \Uchar #3]}%
224
\svg_normal_poscode{#1}{#2}{#3}}
226
\permanent\protected\def\svg_traced_poschar#1#2#3%
227
{\writestatus{SVG TEXT}{....[poschar #1 #2 #3]}%
228
\svg_normal_poschar{#1}{#2}{#3}}
230
\permanent\protected\def\svg_traced_posspace#1#2%
231
{\writestatus{SVG TEXT}{....[posspace #1 #2]}%
232
\svg_normal_posspace{#1}{#2}}
234
\permanent\protected\def\svg_traced_code#1%
235
{\writestatus{SVG TEXT}{....[char \Uchar #1]}%
236
\svg_normal_code{#1}}
238
\permanent\protected\def\svg_traced_char#1%
239
{\writestatus{SVG TEXT}{....[char #1]}%
240
\svg_normal_char{#1}}
242
\permanent\protected\def\svg_traced_space
243
{\writestatus{SVG TEXT}{....[space]}%
246
\permanent\protected\def\svg_traced_startlayer
247
{\writestatus{SVG TEXT}{[start layer]}%
248
\svg_normal_startlayer}
250
\permanent\protected\def\svg_traced_stoplayer
251
{\svg_normal_stoplayer
252
\writestatus{SVG TEXT}{[stop layer]}}
254
\permanent\protected\def\svg_traced_colored#1#2#3#4%
255
{\writestatus{SVG TEXT}{.[start color #1 #2 #3]}%
256
\svg_normal_colored{#1}{#2}{#3}{#4}%
257
\writestatus{SVG TEXT}{.[stop color]}}
259
\permanent\protected\def\svg_traced_setlayer#1#2#3%
260
{\writestatus{SVG TEXT}{...[start set layer #1 #2]}%
261
\svg_normal_setlayer{#1}{#2}{#3}%
262
\writestatus{SVG TEXT}{...[stop set setlayer]}}
264
\permanent\protected\def\svg_traced_scaled#1#2#3#4#5%
265
{\writestatus{SVG TEXT}{..[start scaled font #1 #2 #3 #4]}%
266
\svg_normal_scaled{#1}{#2}{#3}{#4}{#5}%
267
\writestatus{SVG TEXT}{..[stop scaled font]}}
269
\permanent\protected\def\svg_normal_text
270
{\let\svgposcode \svg_normal_poscode
271
\let\svgposchar \svg_normal_poschar
272
\let\svgposspace \svg_normal_posspace
273
\let\svgcode \svg_normal_code
274
\let\svgchar \svg_normal_char
275
\let\svgspace \svg_normal_space
276
\let\svgstartlayer\svg_normal_startlayer
277
\let\svgstoplayer \svg_normal_stoplayer
278
\let\svgcolored \svg_normal_colored
279
\let\svgsetlayer \svg_normal_setlayer
280
\let\svgscaled \svg_normal_scaled}
282
\permanent\protected\def\svg_traced_text
283
{\let\svgposcode \svg_traced_poscode
284
\let\svgposchar \svg_traced_poschar
285
\let\svgposspace \svg_traced_posspace
286
\let\svgcode \svg_traced_code
287
\let\svgchar \svg_traced_char
288
\let\svgspace \svg_traced_space
289
\let\svgstartlayer\svg_traced_startlayer
290
\let\svgstoplayer \svg_traced_stoplayer
291
\let\svgcolored \svg_traced_colored
292
\let\svgsetlayer \svg_traced_setlayer
293
\let\svgscaled \svg_traced_scaled}
235
302
\protect \endinput