/*
 * Copyright 2014 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

// Auto-generated by sk_tool_utils_font.cpp

const char gCourierNew[] =
    " !/<>ACHMTWYabcdefgilmnoprstuy";
const char gCourierNew_Bold[] =
    " AHTWYabefgmnoprsuy";
const char gCourierNew_Italic[] =
    " AHTWYabefgmnoprsuy";
const char gCourierNew_BoldItalic[] =
    " AHTWYabefgmnoprsuy";
const char gLiberationSans[] =
    " !#%&')*+-./1245679:;<=>?@ABCDEFHIJKLMNOPQRSTVWXYZ[\\]^`abcdefgilmnopqrstuvwxyz";
const char gLiberationSans_Bold[] =
    " !\"#$%&'()*+-./012356789:;=>?ABCDEFGHIJLMORSTUVWXYZ[]^_abdefghijklmnopqrsuvwxyz";
const char gLiberationSans_Italic[] =
    " AHTWYabefgmnoprsuy";
const char gLiberationSans_BoldItalic[] =
    " !,-./012345689:ABCDEFGHIKLMNOPQRSTUWXYZ[\\]_abcdefghijklmnopqrstuvwxyz";
const char gHiraginoMaruGothicPro[] =
    " !Tacefnprsuy" "\xE3" "\x83" "\xBC";
const char gPapyrus[] =
    " !HTaceflnoprsuy";
const char gTimesNewRoman[] =
    " !\"#$%&'()*+,-./123456789;<=>?@ABCDEFGHIJKLMNPQRSTVWXYZ[\\]^_`abcdefgijklmnopqrstuvwxyz";
const char gTimesNewRoman_Bold[] =
    " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz";
const char gTimesNewRoman_Italic[] =
    " AHTWYabefgmnoprsuy";
const char gTimesNewRoman_BoldItalic[] =
    " AHTWYabefgmnoprsuy";
