import os

fontdir = os.path.join(os.path.dirname(__file__), 'LaTeX', 'fonts/')
fontargsnoitalic = 'ExternalLocation=%s,BoldFont=*-Bold' % fontdir
fontargs = fontargsnoitalic + ',ItalicFont=*-Oblique,BoldItalicFont=*-BoldOblique'
fontargsitalic = fontargs.replace('Oblique', 'Italic')

fontargschar = 'ExternalLocation=%s,BoldFont=*B,ItalicFont=*I' % fontdir
fontargscharbi = fontargschar + ',BoldItalicFont=*BI'
# We only need this due to a bug in scripts's old fontspec package.
fontargscharfakebi = fontargschar + ',BoldItalicFont=*I'

fontargsscale = 'ExternalLocation=%s,Scale=MatchLowercase' % fontdir

FONTS_BY_CATEGORY = [
    ('main', [
        ('DejaVuSerif', 'Deja Vu Serif', fontargsitalic),
        ('LiberationSerif', 'Liberation Serif', fontargsitalic),
        ('LinLibertine_R', 'Linux Libertine', fontargscharbi),
        ('DroidSerif', 'Droid Serif', fontargsitalic),
    ]),
    ('sans', [
        ('DejaVuSans', 'Deja Vu Sans',  fontargs),
        ('LiberationSans', 'Liberation Sans', fontargsitalic),
        ('LinBiolinum_R', 'Linux Biolinum', fontargscharfakebi),
        ('DroidSans', 'Droid Sans', fontargsnoitalic),
    ]),
    ('mono', [
        ('DejaVuSansMono', 'Deja Vu Sans Mono', fontargs),
        ('LiberationMono', 'Liberation Mono', fontargsitalic),
        ('LinLibertine_M', 'Linux Livertine Mono', fontargsscale),
        ('DroidSansMono', 'Droid Sans Mono', fontargsscale),
    ]),
]

FONTS = {}
NAME_TO_FONT = {}
for cat, fonts in FONTS_BY_CATEGORY:
    for f, name, args in fonts:
        FONTS[f] = args
        NAME_TO_FONT[name] = f

DEFAULTS = {
# These were causing xelatex to segv on scripts, for some braindead reason.
#    'main': 'LinLibertine_R',
#    'sans': 'LinBiolinum_R',
#    'mono': 'LinLibertine_M',
    'main': 'DroidSerif',
    'sans': 'DroidSans',
    'mono': 'DroidSansMono',
}
