C 1/14 ConT EXt meeting 2011 - Bassenge MFLUA - - PowerPoint PPT Presentation

c
SMART_READER_LITE
LIVE PREVIEW

C 1/14 ConT EXt meeting 2011 - Bassenge MFLUA - - PowerPoint PPT Presentation

C 1/14 ConT EXt meeting 2011 - Bassenge MFLUA instrumenting the METAFONT source code with Lua functions completely compatible with METAFONT 2.718281 original outlines of a glyph (no {po/auto}trace of the bitmap)


slide-1
SLIDE 1

ConT EXt meeting 2011 - Bassenge

1/14

C

slide-2
SLIDE 2

ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge

2/14

MFLUA

  • instrumenting the METAFONT source

code with Lua functions

  • completely compatible with

METAFONT 2.718281

  • riginal outlines of a glyph

(no {po/auto}trace of the bitmap)

  • https://github.com/luigiScarso/mflua
slide-3
SLIDE 3

ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge

3/14

Basically, MFLUA runs a METAFONT source with a particular mode:

mode_def otcff = mode_param (pixels_per_inch, 4000); mode_param (blacker, 0); mode_param (fillin, 0); mode_param (o_correction, 1); mode_common_setup_; enddef;

slide-4
SLIDE 4

ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge

4/14

During the run, the ‘sensors’ collect the data. Sensors are callback functions and they are

  • rganised in files:

begin_program.lua mfluaini.lua do_add_to.lua

  • ffset_prep.lua

end_program.lua parse-log.lua envelope.lua print_edges.lua fill_envelope.lua print_path.lua fill_spec.lua scan_direction.lua final_cleanup.lua skew_line_edges.lua main_control.lua start_of_MF.lua

(the names come from the METAFONT source code)

slide-5
SLIDE 5

ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge

5/14

When the run finishes, end_program() ‘clean’ the data from this

i1=1, i=1 i1=1, i=1 i1=1, i=2 i1=1, i=3 i1=1, i=3 i1=1, i=4 i1=1, i=5 i1=1, i=5 i1=1, i=5 i1=1, i=6 i1=1, i=7 i1=1, i=7 i1=1, i=8 i1=1, i=8 i1=1, i=8 i1=1, i=9 i1=1, i=10 i1=1, i=11 i1=1, i=11 i1=1, i=12 i1=1, i=12 i1=2, i=1 i1=2, i=2 i1=2, i=3 i1=2, i=4 i1=3, i=1 i1=3, i=2 i1=3, i=3 i1=3, i=4 i1=3, i=4 i1=3, i=4 i1=4, i=1 i1=4, i=2 i1=4, i=3 i1=4, i=4 i1=4, i=4 i1=4, i=4 i1=5, i=1 i1=5, i=2 i1=5, i=3 i1=5, i=4 i1=5, i=4 i1=5, i=4 i1=6, i=1 i1=6, i=2 i1=6, i=3 i1=6, i=4 i1=6, i=4 i1=6, i=4
slide-6
SLIDE 6

ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge

6/14

to this

BEG 1 END 1 BEG 2 END 2 BEG 6 END 6 BEG 7 END 7 BEG 8 END 8 BEG 9 END 9 BEG 10 END 10 BEG 11 END 11 BEG 12 END 12 BEG 16 END 16 BEG 17 END 17 BEG 18 END 18 BEG 19 END 19 BEG 20 END 20 BEG 22 END 22 BEG 23 END 23 BEG 24 END 24 BEG 25 END 25 BEG 26 END 26 BEG 27 END 27 BEG 28 END 28 BEG 30 END 30 BEG 31 END 31 BEG 32 END 32 BEG 33 END 33
slide-7
SLIDE 7

ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge

7/14

i1=1, i=1 i1=1, i=1 i1=1, i=2 i1=1, i=3 i1=1, i=3 i1=1, i=4 i1=1, i=5 i1=1, i=5 i1=1, i=5 i1=1, i=6 i1=1, i=7 i1=1, i=7 i1=1, i=8 i1=1, i=8 i1=1, i=8 i1=1, i=9 i1=1, i=10 i1=1, i=11 i1=1, i=11 i1=1, i=12 i1=1, i=12 i1=2, i=1 i1=2, i=2 i1=2, i=3 i1=2, i=4 i1=3, i=1 i1=3, i=2 i1=3, i=3 i1=3, i=4 i1=3, i=4 i1=3, i=4 i1=4, i=1 i1=4, i=2 i1=4, i=3 i1=4, i=4 i1=4, i=4 i1=4, i=4 i1=5, i=1 i1=5, i=2 i1=5, i=3 i1=5, i=4 i1=5, i=4 i1=5, i=4 i1=6, i=1 i1=6, i=2 i1=6, i=3 i1=6, i=4 i1=6, i=4 i1=6, i=4
slide-8
SLIDE 8

ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge

8/14

Of course there are problems...and some of them I believe that cannot be solved in an automatic way

i1=1, i=1 i1=1, i=2 i1=1, i=3 i1=1, i=4 i1=1, i=4 i1=1, i=4 i1=2, i=1 i1=2, i=2 i1=2, i=3 i1=2, i=4 i1=2, i=4 i1=2, i=4

but I still like to investigate

slide-9
SLIDE 9

ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge

9/14

As of today, the ‘data’ is just a set of Bezier curves 𝑞𝑗,𝑑1𝑗,𝑑2𝑗,𝑟𝑗 so it’s natural to translate them into a SVG picture (a closed path need a bit more attention)

uni0041-raw.svg uni004e-raw.svg uni0042-raw.svg uni004f-raw.svg uni0043-raw.svg uni0050-raw.svg uni0044-raw.svg uni0051-raw.svg uni0045-raw.svg uni0052-raw.svg uni0046-raw.svg uni0053-raw.svg uni0047-raw.svg uni0054-raw.svg uni0048-raw.svg uni0055-raw.svg uni0049-raw.svg uni0056-raw.svg uni004a-raw.svg uni0057-raw.svg uni004b-raw.svg uni0058-raw.svg uni004c-raw.svg uni0059-raw.svg uni004d-raw.svg uni005a-raw.svg

slide-10
SLIDE 10

ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge

10/14 The next step is to use Fontforge (the program, or a custom Lua binding) to ‘learn’ how to produce an OpenType CFF font: simplify the paths, integral coor- dinates, dimensions... and much more. The strategy is to use Fontforge to see how to divide the responsibility: for example path simplification, in- tegral coordinates and kerning probably should be done in end_program — to produce the best set of outlines. Fontforge can be scripted, but I believe that at the end a ‘visual’ interaction cannot be avoided. Maybe ConT EXt-MkIV?

slide-11
SLIDE 11

ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge

11/14

Concrete10OT is the temporary name of the OpenType version of ccr10. The first and only glyph is C

slide-12
SLIDE 12

ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge

12/14

slide-13
SLIDE 13

ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge

13/14

C

slide-14
SLIDE 14

ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge ConT EXt meeting 2011 - Bassenge

14/14

That’s all Thank you !