Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
The final report of my Google Summer of Code experience with FreeType in 2019.

GSoC 2019: Improve ftinspect demo program

Project Details

Project Proposal: https://docs.google.com/document/d/1I1muhojZssajctDgkJoV9W-VgzkSdatWo-5SG8axq6Y/edit?usp=sharing

GSoC Project Link: https://summerofcode.withgoogle.com/projects/#5818204956393472

Contributed Repositories: freetype2-demos

Languages: C++, Qt, Unix build tools.

Project Description

The project I worked on for Google Summer of Code this year was to improve the ftinspect demo program. ‘ftinspect’ is an essential part of FreeType to show how a font gets rendered by FreeType, allowing control over virtually all rendering parameters. ‘ftinspect’ was introduced to provide the comfort of modern GUI, based on the Qt toolkit while using the FreeType demo tools to test the library.

Final Work Product

Initially, 'ftinspect' was only able to test the rendering parameters as in 'ftgrid' demo program. The current 'ftinspect' supports rendering text and paragraphs with various rendering parameters to provide control over the same for testing the FreeType library.

Test branch (Updated): http://git.savannah.gnu.org/cgit/freetype/freetype2-demos.git/log/?h=veeki-gsoc-experimental Working branch: http://git.savannah.gnu.org/cgit/freetype/freetype2-demos.git/log/?h=gsoc-2019-veeki

Major Goals Achieved

  • Inspect demo tools and document a mind roadmap for the final outcome.

  • Implement some missing features in the current GUI.

  • Integrate 'ftdump' tool functionality in 'ftinspect' which includes.

    • Font Information (Type, Name, Family, Postscript).
    • Charmap Information.
    • SFNT Tables and Name list.
  • Integrate 'ftlint' tool functionality.

    • It opens the given font(s), loads and renders all glyphs at the given ppem value, and reports failing glyphs if there are less than ten fails, or the number of fails only if there are more fails.
  • Evaluate and assess finalized design to combine (ftdiff, ftmulti, ftstring, and ftview) under one unified UI.

    • ftstring and ftview - Integrated and combined under 'All Glyphs' mode. This includes:
      • Rendering Modes (Normal, Fancy, Waterfall, etc. and related parameters).
      • Kerning related rendering parameters.
      • 'General' tab being the common rendering parameters container.
    • ftdiff - Integrated into 'ftinspect' under 'Comparator' mode.
      • Rendering and hinting mode parameters.
      • Kerning related rendering parameters.
      • Command-line arguments to process font files in ftinspect.

Further possible improvements

  • Command line option to change text string in 'All Glyphs' mode.
  • Command line option to select cmap.
  • Handling of Multiple Master font.
  • More seamless GUI experience.

Thank You All, For Real

Being my first experience in the field of typography, it wasn't easy to get accustomed to the FreeType source code. But my mentors Werner and Armin made me feel like a part of this community since the beginning of this project.

Thank you, Werner for taking the time to review and test code and for all the valuable help and feedback you provided me with.

Thank you, Armin for being my daily helper from the beginning of this project. You might be familiar with the bugs I faced more than me ;-).

Cheers,
Veeki

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment