blob: 67b5c1d3583ed8d83ec34b9a7e403116614b6fcf [file] [log] [blame]
// type42-render.cpp
//
// Implementation of Type42RenderFuzzTarget.
//
// Copyright 2018-2019 by
// Armin Hasitzka, David Turner, Robert Wilhelm, and Werner Lemberg.
//
// This file is part of the FreeType project, and may only be used,
// modified, and distributed under the terms of the FreeType project
// license, LICENSE.TXT. By continuing to use, modify, or distribute
// this file you indicate that you have read the license and
// understand and accept it fully.
#include "targets/font-drivers/type42-render.h"
#include <utility> // std::move
#include "iterators/faceloaditerator.h"
#include "iterators/faceprepiterator-bitmaps.h"
#include "iterators/faceprepiterator-outlines.h"
#include "visitors/facevisitor-autohinter.h"
#include "visitors/facevisitor-loadglyphs-bitmaps.h"
#include "visitors/facevisitor-loadglyphs-outlines.h"
#include "visitors/facevisitor-renderglyphs.h"
#include "visitors/facevisitor-subglyphs.h"
freetype::Type42RenderFuzzTarget::
Type42RenderFuzzTarget()
{
auto fli = freetype::make_unique<FaceLoadIterator>();
auto fpi_bitmaps = freetype::make_unique<FacePrepIteratorBitmaps>();
auto fpi_outlines = freetype::make_unique<FacePrepIteratorOutlines>();
// -----------------------------------------------------------------------
// Face preparation iterators:
(void) fpi_bitmaps
->add_visitor( freetype::make_unique<FaceVisitorLoadGlyphsBitmaps>() );
(void) fpi_outlines
->add_visitor( freetype::make_unique<FaceVisitorAutohinter>() );
(void) fpi_outlines
->add_visitor( freetype::make_unique<FaceVisitorLoadGlyphsOutlines>() );
(void) fpi_outlines
->add_visitor( freetype::make_unique<FaceVisitorRenderGlyphs>() );
(void) fpi_outlines
->add_visitor( freetype::make_unique<FaceVisitorSubGlyphs>() );
// -----------------------------------------------------------------------
// Face load iterators:
(void) fli
->set_supported_font_format( FaceLoader::FontFormat::TYPE_42 );
(void) fli->add_iterator( std::move( fpi_bitmaps ) );
(void) fli->add_iterator( std::move( fpi_outlines ) );
// -----------------------------------------------------------------------
// Fuzz target:
(void) set_iterator( std::move( fli ) );
}