c
play

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)


  1. C 1/14 ConT EXt meeting 2011 - Bassenge

  2. • • • • 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) https://github.com/luigiScarso/mflua 2/14 ConT ConT EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge

  3. 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; 3/14 ConT ConT ConT EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge

  4. During the run, the ‘sensors’ collect the data. Sensors are callback functions and they are organised in files: begin_program.lua mfluaini.lua do_add_to.lua offset_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) 4/14 ConT ConT ConT ConT EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge

  5. When the run finishes, end_program() ‘clean’ the data from this i1=1, i=7 i1=1, i=7 i1=1, i=6 i1=1, i=8 i1=1, i=5 i1=1, i=8 i1=1, i=5 i1=1, i=12 i1=1, i=1 i1=2, i=3 i1=2, i=4 i1=2, i=2 i1=2, i=1 i1=3, i=4 i1=3, i=4 i1=3, i=4 i1=4, i=4 i1=4, i=4 i1=4, i=4 i1=5, i=4 i1=5, i=4 i1=5, i=4 i1=6, i=4 i1=6, i=4 i1=6, i=4 i1=3, i=1 i1=4, i=1 i1=3, i=3 i1=4, i=3 i1=5, i=1 i1=5, i=3 i1=6, i=1 i1=6, i=3 i1=1, i=8 i1=1, i=5 i1=1, i=12 i1=1, i=1 i1=1, i=9 i1=1, i=4 i1=1, i=11 i1=1, i=2 i1=1, i=10 i1=1, i=3 i1=3, i=2 i1=1, i=11 i1=4, i=2 i1=5, i=2 i1=1, i=3 i1=6, i=2 5/14 ConT ConT ConT ConT ConT EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge

  6. to this BEG 9 BEG 10 BEG 8 BEG 11 END 9 END 8 END 10 END 7 BEG 12 BEG 7 END 11 END 6 BEG 1 END 17 BEG 17 BEG 19 END 19 END 1 BEG 18 BEG 2 END 16 END 18 BEG 16 BEG 25 BEG 27 BEG 30 BEG 33 BEG 6 BEG 20 BEG 22 BEG 26 BEG 32 END 26 END 30 END 2 END 32 END 33 END 22 END 12 END 25 END 24 END 31 BEG 24 BEG 23 BEG 28 BEG 31 END 20 END 23 END 27 END 28 6/14 ConT ConT ConT ConT ConT ConT EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge

  7. i1=1, i=7 i1=1, i=7 i1=1, i=6 i1=1, i=8 i1=1, i=5 i1=1, i=8 i1=1, i=5 i1=1, i=12 i1=1, i=1 i1=2, i=3 i1=2, i=4 i1=2, i=2 i1=2, i=1 i1=3, i=4 i1=3, i=4 i1=3, i=4 i1=4, i=4 i1=4, i=4 i1=4, i=4 i1=5, i=4 i1=5, i=4 i1=5, i=4 i1=6, i=4 i1=6, i=4 i1=6, i=4 i1=3, i=1 i1=3, i=3 i1=4, i=1 i1=4, i=3 i1=5, i=1 i1=5, i=3 i1=6, i=1 i1=6, i=3 i1=1, i=8 i1=1, i=5 i1=1, i=12 i1=1, i=1 i1=1, i=9 i1=1, i=4 i1=1, i=11 i1=1, i=2 i1=3, i=2 i1=1, i=10 i1=1, i=11 i1=4, i=2 i1=5, i=2 i1=1, i=3 i1=1, i=3 i1=6, i=2 7/14 ConT ConT ConT ConT ConT ConT ConT EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge

  8. Of course there are problems...and some of them I believe that cannot be solved in an automatic way i1=1, i=2 i1=2, i=2 i1=1, i=3 i1=2, i=3 i1=1, i=1 i1=2, i=1 i1=1, i=4 i1=1, i=4 i1=1, i=4 i1=2, i=4 i1=2, i=4 i1=2, i=4 but I still like to investigate 8/14 ConT ConT ConT ConT ConT ConT ConT ConT EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge

  9. 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 9/14 ConT ConT ConT ConT ConT ConT ConT ConT ConT EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge

  10. 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 ? 10/14 ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge

  11. Concrete10OT is the temporary name of the OpenType version of ccr10 . The first and only glyph is C 11/14 ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge

  12. 12/14 ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge

  13. C 13/14 ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge

  14. That’s all Thank you ! 14/14 ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT ConT EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge EXt meeting 2011 - Bassenge

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend