diff --git a/lib/data/models/company_model.dart b/lib/data/models/company_model.dart index b001a6a8c..2485c7018 100644 --- a/lib/data/models/company_model.dart +++ b/lib/data/models/company_model.dart @@ -956,6 +956,14 @@ abstract class SettingsEntity @BuiltValueField(wireName: 'secondary_color') String get secondaryColor; + @nullable + @BuiltValueField(wireName: 'primary_font') + String get primaryFont; + + @nullable + @BuiltValueField(wireName: 'secondary_font') + String get secondaryFont; + // TODO remove this field diff --git a/lib/data/models/company_model.g.dart b/lib/data/models/company_model.g.dart index 26ece8a0a..b89d19a2a 100644 --- a/lib/data/models/company_model.g.dart +++ b/lib/data/models/company_model.g.dart @@ -1429,6 +1429,18 @@ class _$SettingsEntitySerializer ..add(serializers.serialize(object.secondaryColor, specifiedType: const FullType(String))); } + if (object.primaryFont != null) { + result + ..add('primary_font') + ..add(serializers.serialize(object.primaryFont, + specifiedType: const FullType(String))); + } + if (object.secondaryFont != null) { + result + ..add('secondary_font') + ..add(serializers.serialize(object.secondaryFont, + specifiedType: const FullType(String))); + } if (object.customPaymentTerms != null) { result ..add('custom_payment_terms') @@ -1924,6 +1936,14 @@ class _$SettingsEntitySerializer result.secondaryColor = serializers.deserialize(value, specifiedType: const FullType(String)) as String; break; + case 'primary_font': + result.primaryFont = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case 'secondary_font': + result.secondaryFont = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; case 'custom_payment_terms': result.customPaymentTerms.replace(serializers.deserialize(value, specifiedType: const FullType( @@ -3448,6 +3468,10 @@ class _$SettingsEntity extends SettingsEntity { @override final String secondaryColor; @override + final String primaryFont; + @override + final String secondaryFont; + @override final BuiltList customPaymentTerms; @override final bool hasCustomDesign1; @@ -3573,6 +3597,8 @@ class _$SettingsEntity extends SettingsEntity { this.fontSize, this.primaryColor, this.secondaryColor, + this.primaryFont, + this.secondaryFont, this.customPaymentTerms, this.hasCustomDesign1, this.hasCustomDesign2, @@ -3704,6 +3730,8 @@ class _$SettingsEntity extends SettingsEntity { fontSize == other.fontSize && primaryColor == other.primaryColor && secondaryColor == other.secondaryColor && + primaryFont == other.primaryFont && + secondaryFont == other.secondaryFont && customPaymentTerms == other.customPaymentTerms && hasCustomDesign1 == other.hasCustomDesign1 && hasCustomDesign2 == other.hasCustomDesign2 && @@ -3730,22 +3758,22 @@ class _$SettingsEntity extends SettingsEntity { $jc( $jc( $jc( - $jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc(0, timezoneId.hashCode), dateFormatId.hashCode), enableMilitaryTime.hashCode), languageId.hashCode), showCurrencyCode.hashCode), currencyId.hashCode), customValue1.hashCode), customValue2.hashCode), customValue3.hashCode), customValue4.hashCode), defaultPaymentTerms.hashCode), companyGatewayIds.hashCode), defaultTaskRate.hashCode), sendReminders.hashCode), showTasksInPortal.hashCode), emailStyle.hashCode), replyToEmail.hashCode), bccEmail.hashCode), pdfEmailAttachment.hashCode), ublEmailAttachment.hashCode), documentEmailAttachment.hashCode), emailStyleCustom.hashCode), customMessageDashboard.hashCode), customMessageUnpaidInvoice.hashCode), customMessagePaidInvoice.hashCode), customMessageUnapprovedQuote.hashCode), lockSentInvoices.hashCode), autoArchiveInvoice.hashCode), autoArchiveQuote.hashCode), autoEmailInvoice.hashCode), autoConvertQuote.hashCode), enableInclusiveTaxes.hashCode), translations.hashCode), taskNumberPattern.hashCode), taskNumberCounter.hashCode), expenseNumberPattern.hashCode), expenseNumberCounter.hashCode), vendorNumberPattern.hashCode), vendorNumberCounter.hashCode), ticketNumberPattern.hashCode), ticketNumberCounter.hashCode), paymentNumberPattern.hashCode), paymentNumberCounter.hashCode), invoiceNumberPattern.hashCode), invoiceNumberCounter.hashCode), quoteNumberPattern.hashCode), quoteNumberCounter.hashCode), clientNumberPattern.hashCode), clientNumberCounter.hashCode), creditNumberPattern.hashCode), creditNumberCounter.hashCode), recurringInvoiceNumberPrefix.hashCode), resetCounterFrequencyId.hashCode), resetCounterDate.hashCode), counterPadding.hashCode), sharedInvoiceQuoteCounter.hashCode), defaultInvoiceTerms.hashCode), defaultQuoteTerms.hashCode), defaultQuoteFooter.hashCode), enableInvoiceTaxes.hashCode), enableInvoiceItemTaxes.hashCode), defaultInvoiceDesignId.hashCode), defaultQuoteDesignId.hashCode), defaultInvoiceFooter.hashCode), invoiceLabels.hashCode), showInvoiceItemTaxes.hashCode), defaultTaxName1.hashCode), defaultTaxRate1.hashCode), defaultTaxName2.hashCode), defaultTaxRate2.hashCode), defaultTaxName3.hashCode), defaultTaxRate3.hashCode), defaultPaymentTypeId.hashCode), enableSecondTaxRate.hashCode), invoiceFields.hashCode), emailFooter.hashCode), emailSubjectInvoice.hashCode), emailSubjectQuote.hashCode), emailSubjectPayment.hashCode), emailBodyInvoice.hashCode), emailBodyQuote.hashCode), emailBodyPayment.hashCode), emailSubjectReminder1.hashCode), emailSubjectReminder2.hashCode), emailSubjectReminder3.hashCode), emailBodyReminder1.hashCode), emailBodyReminder2.hashCode), emailBodyReminder3.hashCode), enablePortalPassword.hashCode), sendPortalPassword.hashCode), signatureOnPdf.hashCode), enableEmailMarkup.hashCode), showAcceptInvoiceTerms.hashCode), showAcceptQuoteTerms.hashCode), requireInvoiceSignature.hashCode), requireQuoteSignature.hashCode), name.hashCode), companyLogo.hashCode), - website.hashCode), - address1.hashCode), - address2.hashCode), - city.hashCode), - state.hashCode), - postalCode.hashCode), - phone.hashCode), - email.hashCode), - countryId.hashCode), - vatNumber.hashCode), - idNumber.hashCode), - pageSize.hashCode), - fontSize.hashCode), - primaryColor.hashCode), - secondaryColor.hashCode), + $jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc(0, timezoneId.hashCode), dateFormatId.hashCode), enableMilitaryTime.hashCode), languageId.hashCode), showCurrencyCode.hashCode), currencyId.hashCode), customValue1.hashCode), customValue2.hashCode), customValue3.hashCode), customValue4.hashCode), defaultPaymentTerms.hashCode), companyGatewayIds.hashCode), defaultTaskRate.hashCode), sendReminders.hashCode), showTasksInPortal.hashCode), emailStyle.hashCode), replyToEmail.hashCode), bccEmail.hashCode), pdfEmailAttachment.hashCode), ublEmailAttachment.hashCode), documentEmailAttachment.hashCode), emailStyleCustom.hashCode), customMessageDashboard.hashCode), customMessageUnpaidInvoice.hashCode), customMessagePaidInvoice.hashCode), customMessageUnapprovedQuote.hashCode), lockSentInvoices.hashCode), autoArchiveInvoice.hashCode), autoArchiveQuote.hashCode), autoEmailInvoice.hashCode), autoConvertQuote.hashCode), enableInclusiveTaxes.hashCode), translations.hashCode), taskNumberPattern.hashCode), taskNumberCounter.hashCode), expenseNumberPattern.hashCode), expenseNumberCounter.hashCode), vendorNumberPattern.hashCode), vendorNumberCounter.hashCode), ticketNumberPattern.hashCode), ticketNumberCounter.hashCode), paymentNumberPattern.hashCode), paymentNumberCounter.hashCode), invoiceNumberPattern.hashCode), invoiceNumberCounter.hashCode), quoteNumberPattern.hashCode), quoteNumberCounter.hashCode), clientNumberPattern.hashCode), clientNumberCounter.hashCode), creditNumberPattern.hashCode), creditNumberCounter.hashCode), recurringInvoiceNumberPrefix.hashCode), resetCounterFrequencyId.hashCode), resetCounterDate.hashCode), counterPadding.hashCode), sharedInvoiceQuoteCounter.hashCode), defaultInvoiceTerms.hashCode), defaultQuoteTerms.hashCode), defaultQuoteFooter.hashCode), enableInvoiceTaxes.hashCode), enableInvoiceItemTaxes.hashCode), defaultInvoiceDesignId.hashCode), defaultQuoteDesignId.hashCode), defaultInvoiceFooter.hashCode), invoiceLabels.hashCode), showInvoiceItemTaxes.hashCode), defaultTaxName1.hashCode), defaultTaxRate1.hashCode), defaultTaxName2.hashCode), defaultTaxRate2.hashCode), defaultTaxName3.hashCode), defaultTaxRate3.hashCode), defaultPaymentTypeId.hashCode), enableSecondTaxRate.hashCode), invoiceFields.hashCode), emailFooter.hashCode), emailSubjectInvoice.hashCode), emailSubjectQuote.hashCode), emailSubjectPayment.hashCode), emailBodyInvoice.hashCode), emailBodyQuote.hashCode), emailBodyPayment.hashCode), emailSubjectReminder1.hashCode), emailSubjectReminder2.hashCode), emailSubjectReminder3.hashCode), emailBodyReminder1.hashCode), emailBodyReminder2.hashCode), emailBodyReminder3.hashCode), enablePortalPassword.hashCode), sendPortalPassword.hashCode), signatureOnPdf.hashCode), enableEmailMarkup.hashCode), showAcceptInvoiceTerms.hashCode), showAcceptQuoteTerms.hashCode), requireInvoiceSignature.hashCode), requireQuoteSignature.hashCode), name.hashCode), companyLogo.hashCode), website.hashCode), address1.hashCode), + address2.hashCode), + city.hashCode), + state.hashCode), + postalCode.hashCode), + phone.hashCode), + email.hashCode), + countryId.hashCode), + vatNumber.hashCode), + idNumber.hashCode), + pageSize.hashCode), + fontSize.hashCode), + primaryColor.hashCode), + secondaryColor.hashCode), + primaryFont.hashCode), + secondaryFont.hashCode), customPaymentTerms.hashCode), hasCustomDesign1.hashCode), hasCustomDesign2.hashCode), @@ -3868,6 +3896,8 @@ class _$SettingsEntity extends SettingsEntity { ..add('fontSize', fontSize) ..add('primaryColor', primaryColor) ..add('secondaryColor', secondaryColor) + ..add('primaryFont', primaryFont) + ..add('secondaryFont', secondaryFont) ..add('customPaymentTerms', customPaymentTerms) ..add('hasCustomDesign1', hasCustomDesign1) ..add('hasCustomDesign2', hasCustomDesign2) @@ -4420,6 +4450,15 @@ class SettingsEntityBuilder set secondaryColor(String secondaryColor) => _$this._secondaryColor = secondaryColor; + String _primaryFont; + String get primaryFont => _$this._primaryFont; + set primaryFont(String primaryFont) => _$this._primaryFont = primaryFont; + + String _secondaryFont; + String get secondaryFont => _$this._secondaryFont; + set secondaryFont(String secondaryFont) => + _$this._secondaryFont = secondaryFont; + ListBuilder _customPaymentTerms; ListBuilder get customPaymentTerms => _$this._customPaymentTerms ??= new ListBuilder(); @@ -4558,6 +4597,8 @@ class SettingsEntityBuilder _fontSize = _$v.fontSize; _primaryColor = _$v.primaryColor; _secondaryColor = _$v.secondaryColor; + _primaryFont = _$v.primaryFont; + _secondaryFont = _$v.secondaryFont; _customPaymentTerms = _$v.customPaymentTerms?.toBuilder(); _hasCustomDesign1 = _$v.hasCustomDesign1; _hasCustomDesign2 = _$v.hasCustomDesign2; @@ -4699,6 +4740,8 @@ class SettingsEntityBuilder fontSize: fontSize, primaryColor: primaryColor, secondaryColor: secondaryColor, + primaryFont: primaryFont, + secondaryFont: secondaryFont, customPaymentTerms: _customPaymentTerms?.build(), hasCustomDesign1: hasCustomDesign1, hasCustomDesign2: hasCustomDesign2, diff --git a/lib/data/models/entities.dart b/lib/data/models/entities.dart index 51d909554..d40fc1c0c 100644 --- a/lib/data/models/entities.dart +++ b/lib/data/models/entities.dart @@ -43,6 +43,7 @@ class EntityType extends EnumClass { static const EntityType group = _$group; static const EntityType timezone = _$timezone; static const EntityType dateFormat = _$dateFormat; + static const EntityType font = _$font; String get plural { return toString() + 's'; diff --git a/lib/data/models/entities.g.dart b/lib/data/models/entities.g.dart index e893d0a64..a4aa0732f 100644 --- a/lib/data/models/entities.g.dart +++ b/lib/data/models/entities.g.dart @@ -37,6 +37,7 @@ const EntityType _$document = const EntityType._('document'); const EntityType _$group = const EntityType._('group'); const EntityType _$timezone = const EntityType._('timezone'); const EntityType _$dateFormat = const EntityType._('dateFormat'); +const EntityType _$font = const EntityType._('font'); EntityType _$typeValueOf(String name) { switch (name) { @@ -102,6 +103,8 @@ EntityType _$typeValueOf(String name) { return _$timezone; case 'dateFormat': return _$dateFormat; + case 'font': + return _$font; default: throw new ArgumentError(name); } @@ -140,6 +143,7 @@ final BuiltSet _$typeValues = _$group, _$timezone, _$dateFormat, + _$font, ]); const EntityState _$active = const EntityState._('active'); diff --git a/lib/data/models/static/font_model.dart b/lib/data/models/static/font_model.dart new file mode 100644 index 000000000..b088d368c --- /dev/null +++ b/lib/data/models/static/font_model.dart @@ -0,0 +1,59 @@ +import 'package:built_value/built_value.dart'; +import 'package:built_value/serializer.dart'; +import 'package:invoiceninja_flutter/data/models/entities.dart'; + +part 'font_model.g.dart'; + +class FontFields { + static const String name = 'name'; +} + +abstract class FontEntity extends Object + with SelectableEntity + implements Built { + factory FontEntity({String id, String name}) { + return _$FontEntity._( + id: id ?? '', + name: name ?? '', + ); + } + FontEntity._(); + + String get name; + + @override + bool matchesFilter(String filter) { + if (filter == null || filter.isEmpty) { + return true; + } + + filter = filter.toLowerCase(); + + if (name.toLowerCase().contains(filter)) { + return true; + } + + return false; + } + + @override + String matchesFilterValue(String filter) { + if (filter == null || filter.isEmpty) { + return null; + } + + filter = filter.toLowerCase(); + + return null; + } + + @override + String get listDisplayName { + return name; + } + + @override + double get listDisplayAmount => null; + + static Serializer get serializer => _$fontEntitySerializer; +} diff --git a/lib/data/models/static/font_model.g.dart b/lib/data/models/static/font_model.g.dart new file mode 100644 index 000000000..dbca64264 --- /dev/null +++ b/lib/data/models/static/font_model.g.dart @@ -0,0 +1,144 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'font_model.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +Serializer _$fontEntitySerializer = new _$FontEntitySerializer(); + +class _$FontEntitySerializer implements StructuredSerializer { + @override + final Iterable types = const [FontEntity, _$FontEntity]; + @override + final String wireName = 'FontEntity'; + + @override + Iterable serialize(Serializers serializers, FontEntity object, + {FullType specifiedType = FullType.unspecified}) { + final result = [ + 'name', + serializers.serialize(object.name, specifiedType: const FullType(String)), + ]; + if (object.id != null) { + result + ..add('id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(String))); + } + return result; + } + + @override + FontEntity deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = new FontEntityBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case 'name': + result.name = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case 'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + + return result.build(); + } +} + +class _$FontEntity extends FontEntity { + @override + final String name; + @override + final String id; + + factory _$FontEntity([void Function(FontEntityBuilder) updates]) => + (new FontEntityBuilder()..update(updates)).build(); + + _$FontEntity._({this.name, this.id}) : super._() { + if (name == null) { + throw new BuiltValueNullFieldError('FontEntity', 'name'); + } + } + + @override + FontEntity rebuild(void Function(FontEntityBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + FontEntityBuilder toBuilder() => new FontEntityBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is FontEntity && name == other.name && id == other.id; + } + + @override + int get hashCode { + return $jf($jc($jc(0, name.hashCode), id.hashCode)); + } + + @override + String toString() { + return (newBuiltValueToStringHelper('FontEntity') + ..add('name', name) + ..add('id', id)) + .toString(); + } +} + +class FontEntityBuilder implements Builder { + _$FontEntity _$v; + + String _name; + String get name => _$this._name; + set name(String name) => _$this._name = name; + + String _id; + String get id => _$this._id; + set id(String id) => _$this._id = id; + + FontEntityBuilder(); + + FontEntityBuilder get _$this { + if (_$v != null) { + _name = _$v.name; + _id = _$v.id; + _$v = null; + } + return this; + } + + @override + void replace(FontEntity other) { + if (other == null) { + throw new ArgumentError.notNull('other'); + } + _$v = other as _$FontEntity; + } + + @override + void update(void Function(FontEntityBuilder) updates) { + if (updates != null) updates(this); + } + + @override + _$FontEntity build() { + final _$result = _$v ?? new _$FontEntity._(name: name, id: id); + replace(_$result); + return _$result; + } +} + +// ignore_for_file: always_put_control_body_on_new_line,always_specify_types,annotate_overrides,avoid_annotating_with_dynamic,avoid_as,avoid_catches_without_on_clauses,avoid_returning_this,lines_longer_than_80_chars,omit_local_variable_types,prefer_expression_function_bodies,sort_constructors_first,test_types_in_equals,unnecessary_const,unnecessary_new diff --git a/lib/redux/static/static_selectors.dart b/lib/redux/static/static_selectors.dart index 220941d90..e4dbf8fb4 100644 --- a/lib/redux/static/static_selectors.dart +++ b/lib/redux/static/static_selectors.dart @@ -1,6 +1,7 @@ import 'package:built_collection/built_collection.dart'; import 'package:invoiceninja_flutter/data/models/group_model.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/data/models/static/font_model.dart'; import 'package:memoize/memoize.dart'; var memoizedCountryList = memo1( @@ -134,3 +135,16 @@ List paymentTypeList( return list; } + +var memoizedFontMap = memo1((List fontList) => fontMap(fontList)); + +BuiltMap fontMap(List fonts) { + print(Map.fromIterable(fonts, + key: (dynamic v) => v['value'], + value: (dynamic v) => FontEntity(id: v['value'], name: v['label']))); + + return BuiltMap.from( + Map.fromIterable(fonts, + key: (dynamic v) => v['value'], + value: (dynamic v) => FontEntity(id: v['value'], name: v['label']))); +} diff --git a/lib/ui/settings/invoice_design.dart b/lib/ui/settings/invoice_design.dart index 851034363..adbd2d29d 100644 --- a/lib/ui/settings/invoice_design.dart +++ b/lib/ui/settings/invoice_design.dart @@ -1,12 +1,16 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:invoiceninja_flutter/constants.dart'; +import 'package:invoiceninja_flutter/data/models/entities.dart'; +import 'package:invoiceninja_flutter/redux/static/static_selectors.dart'; +import 'package:invoiceninja_flutter/ui/app/entity_dropdown.dart'; import 'package:invoiceninja_flutter/ui/app/form_card.dart'; import 'package:invoiceninja_flutter/ui/app/forms/app_dropdown_button.dart'; import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart'; import 'package:invoiceninja_flutter/ui/app/forms/color_picker.dart'; import 'package:invoiceninja_flutter/ui/settings/invoice_design_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; +import 'package:invoiceninja_flutter/utils/fonts.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceDesign extends StatefulWidget { @@ -137,6 +141,14 @@ class _InvoiceDesignState extends State )) .toList(), ), + EntityDropdown( + entityType: EntityType.font, + labelText: localization.primaryFont, + initialValue: settings.primaryFont, + entityMap: memoizedFontMap(kGoogleFonts), + onSelected: (font) => viewModel.onSettingsChanged( + settings.rebuild((b) => b..primaryFont = font.id)), + ), AppDropdownButton( labelText: localization.pageSize, value: settings.pageSize, diff --git a/lib/utils/fonts.dart b/lib/utils/fonts.dart new file mode 100644 index 000000000..56a2feccc --- /dev/null +++ b/lib/utils/fonts.dart @@ -0,0 +1,734 @@ +final kGoogleFonts = [ + {'value': 'ABeeZee', 'label': 'ABeeZee'}, + {'value': 'Abel', 'label': 'Abel'}, + {'value': 'Abril_Fatface', 'label': 'Abril Fatface'}, + {'value': 'Aclonica', 'label': 'Aclonica'}, + {'value': 'Acme', 'label': 'Acme'}, + {'value': 'Actor', 'label': 'Actor'}, + {'value': 'Adamina', 'label': 'Adamina'}, + {'value': 'Advent_Pro', 'label': 'Advent Pro'}, + {'value': 'Aguafina_Script', 'label': 'Aguafina Script'}, + {'value': 'Akronim', 'label': 'Akronim'}, + {'value': 'Aladin', 'label': 'Aladin'}, + {'value': 'Aldrich', 'label': 'Aldrich'}, + {'value': 'Alef', 'label': 'Alef'}, + {'value': 'Alegreya', 'label': 'Alegreya'}, + {'value': 'Alegreya_SC', 'label': 'Alegreya SC'}, + {'value': 'Alegreya_Sans', 'label': 'Alegreya Sans'}, + {'value': 'Alegreya_Sans_SC', 'label': 'Alegreya Sans SC'}, + {'value': 'Alex_Brush', 'label': 'Alex Brush'}, + {'value': 'Alfa_Slab_One', 'label': 'Alfa Slab One'}, + {'value': 'Alice', 'label': 'Alice'}, + {'value': 'Alike', 'label': 'Alike'}, + {'value': 'Alike_Angular', 'label': 'Alike Angular'}, + {'value': 'Allan', 'label': 'Allan'}, + {'value': 'Allerta', 'label': 'Allerta'}, + {'value': 'Allerta_Stencil', 'label': 'Allerta Stencil'}, + {'value': 'Allura', 'label': 'Allura'}, + {'value': 'Almendra', 'label': 'Almendra'}, + {'value': 'Almendra_Display', 'label': 'Almendra Display'}, + {'value': 'Almendra_SC', 'label': 'Almendra SC'}, + {'value': 'Amarante', 'label': 'Amarante'}, + {'value': 'Amaranth', 'label': 'Amaranth'}, + {'value': 'Amatic_SC', 'label': 'Amatic SC'}, + {'value': 'Amethysta', 'label': 'Amethysta'}, + {'value': 'Amiri', 'label': 'Amiri'}, + {'value': 'Amita', 'label': 'Amita'}, + {'value': 'Anaheim', 'label': 'Anaheim'}, + {'value': 'Andada', 'label': 'Andada'}, + {'value': 'Andika', 'label': 'Andika'}, + {'value': 'Angkor', 'label': 'Angkor'}, + {'value': 'Annie_Use_Your_Telescope', 'label': 'Annie Use Your Telescope'}, + {'value': 'Anonymous_Pro', 'label': 'Anonymous Pro'}, + {'value': 'Antic', 'label': 'Antic'}, + {'value': 'Antic_Didone', 'label': 'Antic Didone'}, + {'value': 'Antic_Slab', 'label': 'Antic Slab'}, + {'value': 'Anton', 'label': 'Anton'}, + {'value': 'Arapey', 'label': 'Arapey'}, + {'value': 'Arbutus', 'label': 'Arbutus'}, + {'value': 'Arbutus_Slab', 'label': 'Arbutus Slab'}, + {'value': 'Architects_Daughter', 'label': 'Architects Daughter'}, + {'value': 'Archivo_Black', 'label': 'Archivo Black'}, + {'value': 'Archivo_Narrow', 'label': 'Archivo Narrow'}, + {'value': 'Arimo', 'label': 'Arimo'}, + {'value': 'Arizonia', 'label': 'Arizonia'}, + {'value': 'Armata', 'label': 'Armata'}, + {'value': 'Artifika', 'label': 'Artifika'}, + {'value': 'Arvo', 'label': 'Arvo'}, + {'value': 'Arya', 'label': 'Arya'}, + {'value': 'Asap', 'label': 'Asap'}, + {'value': 'Asar', 'label': 'Asar'}, + {'value': 'Asset', 'label': 'Asset'}, + {'value': 'Astloch', 'label': 'Astloch'}, + {'value': 'Asul', 'label': 'Asul'}, + {'value': 'Atomic_Age', 'label': 'Atomic Age'}, + {'value': 'Aubrey', 'label': 'Aubrey'}, + {'value': 'Audiowide', 'label': 'Audiowide'}, + {'value': 'Autour_One', 'label': 'Autour One'}, + {'value': 'Average', 'label': 'Average'}, + {'value': 'Average_Sans', 'label': 'Average Sans'}, + {'value': 'Averia_Gruesa_Libre', 'label': 'Averia Gruesa Libre'}, + {'value': 'Averia_Libre', 'label': 'Averia Libre'}, + {'value': 'Averia_Sans_Libre', 'label': 'Averia Sans Libre'}, + {'value': 'Averia_Serif_Libre', 'label': 'Averia Serif Libre'}, + {'value': 'Bad_Script', 'label': 'Bad Script'}, + {'value': 'Balthazar', 'label': 'Balthazar'}, + {'value': 'Bangers', 'label': 'Bangers'}, + {'value': 'Basic', 'label': 'Basic'}, + {'value': 'Battambang', 'label': 'Battambang'}, + {'value': 'Baumans', 'label': 'Baumans'}, + {'value': 'Bayon', 'label': 'Bayon'}, + {'value': 'Belgrano', 'label': 'Belgrano'}, + {'value': 'Belleza', 'label': 'Belleza'}, + {'value': 'BenchNine', 'label': 'BenchNine'}, + {'value': 'Bentham', 'label': 'Bentham'}, + {'value': 'Berkshire_Swash', 'label': 'Berkshire Swash'}, + {'value': 'Bevan', 'label': 'Bevan'}, + {'value': 'Bigelow_Rules', 'label': 'Bigelow Rules'}, + {'value': 'Bigshot_One', 'label': 'Bigshot One'}, + {'value': 'Bilbo', 'label': 'Bilbo'}, + {'value': 'Bilbo_Swash_Caps', 'label': 'Bilbo Swash Caps'}, + {'value': 'Biryani', 'label': 'Biryani'}, + {'value': 'Bitter', 'label': 'Bitter'}, + {'value': 'Black_Ops_One', 'label': 'Black Ops One'}, + {'value': 'Bokor', 'label': 'Bokor'}, + {'value': 'Bonbon', 'label': 'Bonbon'}, + {'value': 'Boogaloo', 'label': 'Boogaloo'}, + {'value': 'Bowlby_One', 'label': 'Bowlby One'}, + {'value': 'Bowlby_One_SC', 'label': 'Bowlby One SC'}, + {'value': 'Brawler', 'label': 'Brawler'}, + {'value': 'Bree_Serif', 'label': 'Bree Serif'}, + {'value': 'Bubblegum_Sans', 'label': 'Bubblegum Sans'}, + {'value': 'Bubbler_One', 'label': 'Bubbler One'}, + {'value': 'Buda', 'label': 'Buda'}, + {'value': 'Buenard', 'label': 'Buenard'}, + {'value': 'Butcherman', 'label': 'Butcherman'}, + {'value': 'Butterfly_Kids', 'label': 'Butterfly Kids'}, + {'value': 'Cabin', 'label': 'Cabin'}, + {'value': 'Cabin_Condensed', 'label': 'Cabin Condensed'}, + {'value': 'Cabin_Sketch', 'label': 'Cabin Sketch'}, + {'value': 'Caesar_Dressing', 'label': 'Caesar Dressing'}, + {'value': 'Cagliostro', 'label': 'Cagliostro'}, + {'value': 'Calligraffitti', 'label': 'Calligraffitti'}, + {'value': 'Cambay', 'label': 'Cambay'}, + {'value': 'Cambo', 'label': 'Cambo'}, + {'value': 'Candal', 'label': 'Candal'}, + {'value': 'Cantarell', 'label': 'Cantarell'}, + {'value': 'Cantata_One', 'label': 'Cantata One'}, + {'value': 'Cantora_One', 'label': 'Cantora One'}, + {'value': 'Capriola', 'label': 'Capriola'}, + {'value': 'Cardo', 'label': 'Cardo'}, + {'value': 'Carme', 'label': 'Carme'}, + {'value': 'Carrois_Gothic', 'label': 'Carrois Gothic'}, + {'value': 'Carrois_Gothic_SC', 'label': 'Carrois Gothic SC'}, + {'value': 'Carter_One', 'label': 'Carter One'}, + {'value': 'Catamaran', 'label': 'Catamaran'}, + {'value': 'Caudex', 'label': 'Caudex'}, + {'value': 'Caveat', 'label': 'Caveat'}, + {'value': 'Caveat_Brush', 'label': 'Caveat Brush'}, + {'value': 'Cedarville_Cursive', 'label': 'Cedarville Cursive'}, + {'value': 'Ceviche_One', 'label': 'Ceviche One'}, + {'value': 'Changa_One', 'label': 'Changa One'}, + {'value': 'Chango', 'label': 'Chango'}, + {'value': 'Chau_Philomene_One', 'label': 'Chau Philomene One'}, + {'value': 'Chela_One', 'label': 'Chela One'}, + {'value': 'Chelsea_Market', 'label': 'Chelsea Market'}, + {'value': 'Chenla', 'label': 'Chenla'}, + {'value': 'Cherry_Cream_Soda', 'label': 'Cherry Cream Soda'}, + {'value': 'Cherry_Swash', 'label': 'Cherry Swash'}, + {'value': 'Chewy', 'label': 'Chewy'}, + {'value': 'Chicle', 'label': 'Chicle'}, + {'value': 'Chivo', 'label': 'Chivo'}, + {'value': 'Chonburi', 'label': 'Chonburi'}, + {'value': 'Cinzel', 'label': 'Cinzel'}, + {'value': 'Cinzel_Decorative', 'label': 'Cinzel Decorative'}, + {'value': 'Clicker_Script', 'label': 'Clicker Script'}, + {'value': 'Coda', 'label': 'Coda'}, + {'value': 'Coda_Caption', 'label': 'Coda Caption'}, + {'value': 'Codystar', 'label': 'Codystar'}, + {'value': 'Combo', 'label': 'Combo'}, + {'value': 'Comfortaa', 'label': 'Comfortaa'}, + {'value': 'Coming_Soon', 'label': 'Coming Soon'}, + {'value': 'Concert_One', 'label': 'Concert One'}, + {'value': 'Condiment', 'label': 'Condiment'}, + {'value': 'Content', 'label': 'Content'}, + {'value': 'Contrail_One', 'label': 'Contrail One'}, + {'value': 'Convergence', 'label': 'Convergence'}, + {'value': 'Cookie', 'label': 'Cookie'}, + {'value': 'Copse', 'label': 'Copse'}, + {'value': 'Corben', 'label': 'Corben'}, + {'value': 'Courgette', 'label': 'Courgette'}, + {'value': 'Cousine', 'label': 'Cousine'}, + {'value': 'Coustard', 'label': 'Coustard'}, + {'value': 'Covered_By_Your_Grace', 'label': 'Covered By Your Grace'}, + {'value': 'Crafty_Girls', 'label': 'Crafty Girls'}, + {'value': 'Creepster', 'label': 'Creepster'}, + {'value': 'Crete_Round', 'label': 'Crete Round'}, + {'value': 'Crimson_Text', 'label': 'Crimson Text'}, + {'value': 'Croissant_One', 'label': 'Croissant One'}, + {'value': 'Crushed', 'label': 'Crushed'}, + {'value': 'Cuprum', 'label': 'Cuprum'}, + {'value': 'Cutive', 'label': 'Cutive'}, + {'value': 'Cutive_Mono', 'label': 'Cutive Mono'}, + {'value': 'Damion', 'label': 'Damion'}, + {'value': 'Dancing_Script', 'label': 'Dancing Script'}, + {'value': 'Dangrek', 'label': 'Dangrek'}, + {'value': 'Dawning_of_a_New_Day', 'label': 'Dawning of a New Day'}, + {'value': 'Days_One', 'label': 'Days One'}, + {'value': 'Dekko', 'label': 'Dekko'}, + {'value': 'Delius', 'label': 'Delius'}, + {'value': 'Delius_Swash_Caps', 'label': 'Delius Swash Caps'}, + {'value': 'Delius_Unicase', 'label': 'Delius Unicase'}, + {'value': 'Della_Respira', 'label': 'Della Respira'}, + {'value': 'Denk_One', 'label': 'Denk One'}, + {'value': 'Devonshire', 'label': 'Devonshire'}, + {'value': 'Dhurjati', 'label': 'Dhurjati'}, + {'value': 'Didact_Gothic', 'label': 'Didact Gothic'}, + {'value': 'Diplomata', 'label': 'Diplomata'}, + {'value': 'Diplomata_SC', 'label': 'Diplomata SC'}, + {'value': 'Domine', 'label': 'Domine'}, + {'value': 'Donegal_One', 'label': 'Donegal One'}, + {'value': 'Doppio_One', 'label': 'Doppio One'}, + {'value': 'Dorsa', 'label': 'Dorsa'}, + {'value': 'Dosis', 'label': 'Dosis'}, + {'value': 'Dr_Sugiyama', 'label': 'Dr Sugiyama'}, + {'value': 'Droid_Sans', 'label': 'Droid Sans'}, + {'value': 'Droid_Sans_Mono', 'label': 'Droid Sans Mono'}, + {'value': 'Droid_Serif', 'label': 'Droid Serif'}, + {'value': 'Duru_Sans', 'label': 'Duru Sans'}, + {'value': 'Dynalight', 'label': 'Dynalight'}, + {'value': 'EB_Garamond', 'label': 'EB Garamond'}, + {'value': 'Eagle_Lake', 'label': 'Eagle Lake'}, + {'value': 'Eater', 'label': 'Eater'}, + {'value': 'Economica', 'label': 'Economica'}, + {'value': 'Eczar', 'label': 'Eczar'}, + {'value': 'Ek_Mukta', 'label': 'Ek Mukta'}, + {'value': 'Electrolize', 'label': 'Electrolize'}, + {'value': 'Elsie', 'label': 'Elsie'}, + {'value': 'Elsie_Swash_Caps', 'label': 'Elsie Swash Caps'}, + {'value': 'Emblema_One', 'label': 'Emblema One'}, + {'value': 'Emilys_Candy', 'label': 'Emilys Candy'}, + {'value': 'Engagement', 'label': 'Engagement'}, + {'value': 'Englebert', 'label': 'Englebert'}, + {'value': 'Enriqueta', 'label': 'Enriqueta'}, + {'value': 'Erica_One', 'label': 'Erica One'}, + {'value': 'Esteban', 'label': 'Esteban'}, + {'value': 'Euphoria_Script', 'label': 'Euphoria Script'}, + {'value': 'Ewert', 'label': 'Ewert'}, + {'value': 'Exo', 'label': 'Exo'}, + {'value': 'Exo_2', 'label': 'Exo 2'}, + {'value': 'Expletus_Sans', 'label': 'Expletus Sans'}, + {'value': 'Fanwood_Text', 'label': 'Fanwood Text'}, + {'value': 'Fascinate', 'label': 'Fascinate'}, + {'value': 'Fascinate_Inline', 'label': 'Fascinate Inline'}, + {'value': 'Faster_One', 'label': 'Faster One'}, + {'value': 'Fasthand', 'label': 'Fasthand'}, + {'value': 'Fauna_One', 'label': 'Fauna One'}, + {'value': 'Federant', 'label': 'Federant'}, + {'value': 'Federo', 'label': 'Federo'}, + {'value': 'Felipa', 'label': 'Felipa'}, + {'value': 'Fenix', 'label': 'Fenix'}, + {'value': 'Finger_Paint', 'label': 'Finger Paint'}, + {'value': 'Fira_Mono', 'label': 'Fira Mono'}, + {'value': 'Fira_Sans', 'label': 'Fira Sans'}, + {'value': 'Fjalla_One', 'label': 'Fjalla One'}, + {'value': 'Fjord_One', 'label': 'Fjord One'}, + {'value': 'Flamenco', 'label': 'Flamenco'}, + {'value': 'Flavors', 'label': 'Flavors'}, + {'value': 'Fondamento', 'label': 'Fondamento'}, + {'value': 'Fontdiner_Swanky', 'label': 'Fontdiner Swanky'}, + {'value': 'Forum', 'label': 'Forum'}, + {'value': 'Francois_One', 'label': 'Francois One'}, + {'value': 'Freckle_Face', 'label': 'Freckle Face'}, + {'value': 'Fredericka_the_Great', 'label': 'Fredericka the Great'}, + {'value': 'Fredoka_One', 'label': 'Fredoka One'}, + {'value': 'Freehand', 'label': 'Freehand'}, + {'value': 'Fresca', 'label': 'Fresca'}, + {'value': 'Frijole', 'label': 'Frijole'}, + {'value': 'Fruktur', 'label': 'Fruktur'}, + {'value': 'Fugaz_One', 'label': 'Fugaz One'}, + {'value': 'GFS_Didot', 'label': 'GFS Didot'}, + {'value': 'GFS_Neohellenic', 'label': 'GFS Neohellenic'}, + {'value': 'Gabriela', 'label': 'Gabriela'}, + {'value': 'Gafata', 'label': 'Gafata'}, + {'value': 'Galdeano', 'label': 'Galdeano'}, + {'value': 'Galindo', 'label': 'Galindo'}, + {'value': 'Gentium_Basic', 'label': 'Gentium Basic'}, + {'value': 'Gentium_Book_Basic', 'label': 'Gentium Book Basic'}, + {'value': 'Geo', 'label': 'Geo'}, + {'value': 'Geostar', 'label': 'Geostar'}, + {'value': 'Geostar_Fill', 'label': 'Geostar Fill'}, + {'value': 'Germania_One', 'label': 'Germania One'}, + {'value': 'Gidugu', 'label': 'Gidugu'}, + {'value': 'Gilda_Display', 'label': 'Gilda Display'}, + {'value': 'Give_You_Glory', 'label': 'Give You Glory'}, + {'value': 'Glass_Antiqua', 'label': 'Glass Antiqua'}, + {'value': 'Glegoo', 'label': 'Glegoo'}, + {'value': 'Gloria_Hallelujah', 'label': 'Gloria Hallelujah'}, + {'value': 'Goblin_One', 'label': 'Goblin One'}, + {'value': 'Gochi_Hand', 'label': 'Gochi Hand'}, + {'value': 'Gorditas', 'label': 'Gorditas'}, + {'value': 'Goudy_Bookletter_1911', 'label': 'Goudy Bookletter 1911'}, + {'value': 'Graduate', 'label': 'Graduate'}, + {'value': 'Grand_Hotel', 'label': 'Grand Hotel'}, + {'value': 'Gravitas_One', 'label': 'Gravitas One'}, + {'value': 'Great_Vibes', 'label': 'Great Vibes'}, + {'value': 'Griffy', 'label': 'Griffy'}, + {'value': 'Gruppo', 'label': 'Gruppo'}, + {'value': 'Gudea', 'label': 'Gudea'}, + {'value': 'Gurajada', 'label': 'Gurajada'}, + {'value': 'Habibi', 'label': 'Habibi'}, + {'value': 'Halant', 'label': 'Halant'}, + {'value': 'Hammersmith_One', 'label': 'Hammersmith One'}, + {'value': 'Hanalei', 'label': 'Hanalei'}, + {'value': 'Hanalei_Fill', 'label': 'Hanalei Fill'}, + {'value': 'Handlee', 'label': 'Handlee'}, + {'value': 'Hanuman', 'label': 'Hanuman'}, + {'value': 'Happy_Monkey', 'label': 'Happy Monkey'}, + {'value': 'Headland_One', 'label': 'Headland One'}, + {'value': 'Henny_Penny', 'label': 'Henny Penny'}, + {'value': 'Herr_Von_Muellerhoff', 'label': 'Herr Von Muellerhoff'}, + {'value': 'Hind', 'label': 'Hind'}, + {'value': 'Hind_Siliguri', 'label': 'Hind Siliguri'}, + {'value': 'Hind_Vadodara', 'label': 'Hind Vadodara'}, + {'value': 'Holtwood_One_SC', 'label': 'Holtwood One SC'}, + {'value': 'Homemade_Apple', 'label': 'Homemade Apple'}, + {'value': 'Homenaje', 'label': 'Homenaje'}, + {'value': 'IM_Fell_DW_Pica', 'label': 'IM Fell DW Pica'}, + {'value': 'IM_Fell_DW_Pica_SC', 'label': 'IM Fell DW Pica SC'}, + {'value': 'IM_Fell_Double_Pica', 'label': 'IM Fell Double Pica'}, + {'value': 'IM_Fell_Double_Pica_SC', 'label': 'IM Fell Double Pica SC'}, + {'value': 'IM_Fell_English', 'label': 'IM Fell English'}, + {'value': 'IM_Fell_English_SC', 'label': 'IM Fell English SC'}, + {'value': 'IM_Fell_French_Canon', 'label': 'IM Fell French Canon'}, + {'value': 'IM_Fell_French_Canon_SC', 'label': 'IM Fell French Canon SC'}, + {'value': 'IM_Fell_Great_Primer', 'label': 'IM Fell Great Primer'}, + {'value': 'IM_Fell_Great_Primer_SC', 'label': 'IM Fell Great Primer SC'}, + {'value': 'Iceberg', 'label': 'Iceberg'}, + {'value': 'Iceland', 'label': 'Iceland'}, + {'value': 'Imprima', 'label': 'Imprima'}, + {'value': 'Inconsolata', 'label': 'Inconsolata'}, + {'value': 'Inder', 'label': 'Inder'}, + {'value': 'Indie_Flower', 'label': 'Indie Flower'}, + {'value': 'Inika', 'label': 'Inika'}, + {'value': 'Inknut_Antiqua', 'label': 'Inknut Antiqua'}, + {'value': 'Irish_Grover', 'label': 'Irish Grover'}, + {'value': 'Istok_Web', 'label': 'Istok Web'}, + {'value': 'Italiana', 'label': 'Italiana'}, + {'value': 'Italianno', 'label': 'Italianno'}, + {'value': 'Itim', 'label': 'Itim'}, + {'value': 'Jacques_Francois', 'label': 'Jacques Francois'}, + {'value': 'Jacques_Francois_Shadow', 'label': 'Jacques Francois Shadow'}, + {'value': 'Jaldi', 'label': 'Jaldi'}, + {'value': 'Jim_Nightshade', 'label': 'Jim Nightshade'}, + {'value': 'Jockey_One', 'label': 'Jockey One'}, + {'value': 'Jolly_Lodger', 'label': 'Jolly Lodger'}, + {'value': 'Josefin_Sans', 'label': 'Josefin Sans'}, + {'value': 'Josefin_Slab', 'label': 'Josefin Slab'}, + {'value': 'Joti_One', 'label': 'Joti One'}, + {'value': 'Judson', 'label': 'Judson'}, + {'value': 'Julee', 'label': 'Julee'}, + {'value': 'Julius_Sans_One', 'label': 'Julius Sans One'}, + {'value': 'Junge', 'label': 'Junge'}, + {'value': 'Jura', 'label': 'Jura'}, + {'value': 'Just_Another_Hand', 'label': 'Just Another Hand'}, + {'value': 'Just_Me_Again_Down_Here', 'label': 'Just Me Again Down Here'}, + {'value': 'Kadwa', 'label': 'Kadwa'}, + {'value': 'Kalam', 'label': 'Kalam'}, + {'value': 'Kameron', 'label': 'Kameron'}, + {'value': 'Kantumruy', 'label': 'Kantumruy'}, + {'value': 'Karla', 'label': 'Karla'}, + {'value': 'Karma', 'label': 'Karma'}, + {'value': 'Kaushan_Script', 'label': 'Kaushan Script'}, + {'value': 'Kavoon', 'label': 'Kavoon'}, + {'value': 'Kdam_Thmor', 'label': 'Kdam Thmor'}, + {'value': 'Keania_One', 'label': 'Keania One'}, + {'value': 'Kelly_Slab', 'label': 'Kelly Slab'}, + {'value': 'Kenia', 'label': 'Kenia'}, + {'value': 'Khand', 'label': 'Khand'}, + {'value': 'Khmer', 'label': 'Khmer'}, + {'value': 'Khula', 'label': 'Khula'}, + {'value': 'Kite_One', 'label': 'Kite One'}, + {'value': 'Knewave', 'label': 'Knewave'}, + {'value': 'Kotta_One', 'label': 'Kotta One'}, + {'value': 'Koulen', 'label': 'Koulen'}, + {'value': 'Kranky', 'label': 'Kranky'}, + {'value': 'Kreon', 'label': 'Kreon'}, + {'value': 'Kristi', 'label': 'Kristi'}, + {'value': 'Krona_One', 'label': 'Krona One'}, + {'value': 'Kurale', 'label': 'Kurale'}, + {'value': 'La_Belle_Aurore', 'label': 'La Belle Aurore'}, + {'value': 'Laila', 'label': 'Laila'}, + {'value': 'Lakki_Reddy', 'label': 'Lakki Reddy'}, + {'value': 'Lancelot', 'label': 'Lancelot'}, + {'value': 'Lateef', 'label': 'Lateef'}, + {'value': 'Lato', 'label': 'Lato'}, + {'value': 'League_Script', 'label': 'League Script'}, + {'value': 'Leckerli_One', 'label': 'Leckerli One'}, + {'value': 'Ledger', 'label': 'Ledger'}, + {'value': 'Lekton', 'label': 'Lekton'}, + {'value': 'Lemon', 'label': 'Lemon'}, + {'value': 'Libre_Baskerville', 'label': 'Libre Baskerville'}, + {'value': 'Life_Savers', 'label': 'Life Savers'}, + {'value': 'Lilita_One', 'label': 'Lilita One'}, + {'value': 'Lily_Script_One', 'label': 'Lily Script One'}, + {'value': 'Limelight', 'label': 'Limelight'}, + {'value': 'Linden_Hill', 'label': 'Linden Hill'}, + {'value': 'Lobster', 'label': 'Lobster'}, + {'value': 'Lobster_Two', 'label': 'Lobster Two'}, + {'value': 'Londrina_Outline', 'label': 'Londrina Outline'}, + {'value': 'Londrina_Shadow', 'label': 'Londrina Shadow'}, + {'value': 'Londrina_Sketch', 'label': 'Londrina Sketch'}, + {'value': 'Londrina_Solid', 'label': 'Londrina Solid'}, + {'value': 'Lora', 'label': 'Lora'}, + {'value': 'Love_Ya_Like_A_Sister', 'label': 'Love Ya Like A Sister'}, + {'value': 'Loved_by_the_King', 'label': 'Loved by the King'}, + {'value': 'Lovers_Quarrel', 'label': 'Lovers Quarrel'}, + {'value': 'Luckiest_Guy', 'label': 'Luckiest Guy'}, + {'value': 'Lusitana', 'label': 'Lusitana'}, + {'value': 'Lustria', 'label': 'Lustria'}, + {'value': 'Macondo', 'label': 'Macondo'}, + {'value': 'Macondo_Swash_Caps', 'label': 'Macondo Swash Caps'}, + {'value': 'Magra', 'label': 'Magra'}, + {'value': 'Maiden_Orange', 'label': 'Maiden Orange'}, + {'value': 'Mako', 'label': 'Mako'}, + {'value': 'Mallanna', 'label': 'Mallanna'}, + {'value': 'Mandali', 'label': 'Mandali'}, + {'value': 'Marcellus', 'label': 'Marcellus'}, + {'value': 'Marcellus_SC', 'label': 'Marcellus SC'}, + {'value': 'Marck_Script', 'label': 'Marck Script'}, + {'value': 'Margarine', 'label': 'Margarine'}, + {'value': 'Marko_One', 'label': 'Marko One'}, + {'value': 'Marmelad', 'label': 'Marmelad'}, + {'value': 'Martel', 'label': 'Martel'}, + {'value': 'Martel_Sans', 'label': 'Martel Sans'}, + {'value': 'Marvel', 'label': 'Marvel'}, + {'value': 'Mate', 'label': 'Mate'}, + {'value': 'Mate_SC', 'label': 'Mate SC'}, + {'value': 'Maven_Pro', 'label': 'Maven Pro'}, + {'value': 'McLaren', 'label': 'McLaren'}, + {'value': 'Meddon', 'label': 'Meddon'}, + {'value': 'MedievalSharp', 'label': 'MedievalSharp'}, + {'value': 'Medula_One', 'label': 'Medula One'}, + {'value': 'Megrim', 'label': 'Megrim'}, + {'value': 'Meie_Script', 'label': 'Meie Script'}, + {'value': 'Merienda', 'label': 'Merienda'}, + {'value': 'Merienda_One', 'label': 'Merienda One'}, + {'value': 'Merriweather', 'label': 'Merriweather'}, + {'value': 'Merriweather_Sans', 'label': 'Merriweather Sans'}, + {'value': 'Metal', 'label': 'Metal'}, + {'value': 'Metal_Mania', 'label': 'Metal Mania'}, + {'value': 'Metamorphous', 'label': 'Metamorphous'}, + {'value': 'Metrophobic', 'label': 'Metrophobic'}, + {'value': 'Michroma', 'label': 'Michroma'}, + {'value': 'Milonga', 'label': 'Milonga'}, + {'value': 'Miltonian', 'label': 'Miltonian'}, + {'value': 'Miltonian_Tattoo', 'label': 'Miltonian Tattoo'}, + {'value': 'Miniver', 'label': 'Miniver'}, + {'value': 'Miss_Fajardose', 'label': 'Miss Fajardose'}, + {'value': 'Modak', 'label': 'Modak'}, + {'value': 'Modern_Antiqua', 'label': 'Modern Antiqua'}, + {'value': 'Molengo', 'label': 'Molengo'}, + {'value': 'Molle', 'label': 'Molle'}, + {'value': 'Monda', 'label': 'Monda'}, + {'value': 'Monofett', 'label': 'Monofett'}, + {'value': 'Monoton', 'label': 'Monoton'}, + {'value': 'Monsieur_La_Doulaise', 'label': 'Monsieur La Doulaise'}, + {'value': 'Montaga', 'label': 'Montaga'}, + {'value': 'Montez', 'label': 'Montez'}, + {'value': 'Montserrat', 'label': 'Montserrat'}, + {'value': 'Montserrat_Alternates', 'label': 'Montserrat Alternates'}, + {'value': 'Montserrat_Subrayada', 'label': 'Montserrat Subrayada'}, + {'value': 'Moul', 'label': 'Moul'}, + {'value': 'Moulpali', 'label': 'Moulpali'}, + {'value': 'Mountains_of_Christmas', 'label': 'Mountains of Christmas'}, + {'value': 'Mouse_Memoirs', 'label': 'Mouse Memoirs'}, + {'value': 'Mr_Bedfort', 'label': 'Mr Bedfort'}, + {'value': 'Mr_Dafoe', 'label': 'Mr Dafoe'}, + {'value': 'Mr_De_Haviland', 'label': 'Mr De Haviland'}, + {'value': 'Mrs_Saint_Delafield', 'label': 'Mrs Saint Delafield'}, + {'value': 'Mrs_Sheppards', 'label': 'Mrs Sheppards'}, + {'value': 'Muli', 'label': 'Muli'}, + {'value': 'Mystery_Quest', 'label': 'Mystery Quest'}, + {'value': 'NTR', 'label': 'NTR'}, + {'value': 'Neucha', 'label': 'Neucha'}, + {'value': 'Neuton', 'label': 'Neuton'}, + {'value': 'New_Rocker', 'label': 'New Rocker'}, + {'value': 'News_Cycle', 'label': 'News Cycle'}, + {'value': 'Niconne', 'label': 'Niconne'}, + {'value': 'Nixie_One', 'label': 'Nixie One'}, + {'value': 'Nobile', 'label': 'Nobile'}, + {'value': 'Nokora', 'label': 'Nokora'}, + {'value': 'Norican', 'label': 'Norican'}, + {'value': 'Nosifer', 'label': 'Nosifer'}, + {'value': 'Nothing_You_Could_Do', 'label': 'Nothing You Could Do'}, + {'value': 'Noticia_Text', 'label': 'Noticia Text'}, + {'value': 'Noto_Sans', 'label': 'Noto Sans'}, + {'value': 'Noto_Serif', 'label': 'Noto Serif'}, + {'value': 'Nova_Cut', 'label': 'Nova Cut'}, + {'value': 'Nova_Flat', 'label': 'Nova Flat'}, + {'value': 'Nova_Mono', 'label': 'Nova Mono'}, + {'value': 'Nova_Oval', 'label': 'Nova Oval'}, + {'value': 'Nova_Round', 'label': 'Nova Round'}, + {'value': 'Nova_Script', 'label': 'Nova Script'}, + {'value': 'Nova_Slim', 'label': 'Nova Slim'}, + {'value': 'Nova_Square', 'label': 'Nova Square'}, + {'value': 'Numans', 'label': 'Numans'}, + {'value': 'Nunito', 'label': 'Nunito'}, + {'value': 'Odor_Mean_Chey', 'label': 'Odor Mean Chey'}, + {'value': 'Offside', 'label': 'Offside'}, + {'value': 'Old_Standard_TT', 'label': 'Old Standard TT'}, + {'value': 'Oldenburg', 'label': 'Oldenburg'}, + {'value': 'Oleo_Script', 'label': 'Oleo Script'}, + {'value': 'Oleo_Script_Swash_Caps', 'label': 'Oleo Script Swash Caps'}, + {'value': 'Open_Sans', 'label': 'Open Sans'}, + {'value': 'Open_Sans_Condensed', 'label': 'Open Sans Condensed'}, + {'value': 'Oranienbaum', 'label': 'Oranienbaum'}, + {'value': 'Orbitron', 'label': 'Orbitron'}, + {'value': 'Oregano', 'label': 'Oregano'}, + {'value': 'Orienta', 'label': 'Orienta'}, + {'value': 'Original_Surfer', 'label': 'Original Surfer'}, + {'value': 'Oswald', 'label': 'Oswald'}, + {'value': 'Over_the_Rainbow', 'label': 'Over the Rainbow'}, + {'value': 'Overlock', 'label': 'Overlock'}, + {'value': 'Overlock_SC', 'label': 'Overlock SC'}, + {'value': 'Ovo', 'label': 'Ovo'}, + {'value': 'Oxygen', 'label': 'Oxygen'}, + {'value': 'Oxygen_Mono', 'label': 'Oxygen Mono'}, + {'value': 'PT_Mono', 'label': 'PT Mono'}, + {'value': 'PT_Sans', 'label': 'PT Sans'}, + {'value': 'PT_Sans_Caption', 'label': 'PT Sans Caption'}, + {'value': 'PT_Sans_Narrow', 'label': 'PT Sans Narrow'}, + {'value': 'PT_Serif', 'label': 'PT Serif'}, + {'value': 'PT_Serif_Caption', 'label': 'PT Serif Caption'}, + {'value': 'Pacifico', 'label': 'Pacifico'}, + {'value': 'Palanquin', 'label': 'Palanquin'}, + {'value': 'Palanquin_Dark', 'label': 'Palanquin Dark'}, + {'value': 'Paprika', 'label': 'Paprika'}, + {'value': 'Parisienne', 'label': 'Parisienne'}, + {'value': 'Passero_One', 'label': 'Passero One'}, + {'value': 'Passion_One', 'label': 'Passion One'}, + {'value': 'Pathway_Gothic_One', 'label': 'Pathway Gothic One'}, + {'value': 'Patrick_Hand', 'label': 'Patrick Hand'}, + {'value': 'Patrick_Hand_SC', 'label': 'Patrick Hand SC'}, + {'value': 'Patua_One', 'label': 'Patua One'}, + {'value': 'Paytone_One', 'label': 'Paytone One'}, + {'value': 'Peddana', 'label': 'Peddana'}, + {'value': 'Peralta', 'label': 'Peralta'}, + {'value': 'Permanent_Marker', 'label': 'Permanent Marker'}, + {'value': 'Petit_Formal_Script', 'label': 'Petit Formal Script'}, + {'value': 'Petrona', 'label': 'Petrona'}, + {'value': 'Philosopher', 'label': 'Philosopher'}, + {'value': 'Piedra', 'label': 'Piedra'}, + {'value': 'Pinyon_Script', 'label': 'Pinyon Script'}, + {'value': 'Pirata_One', 'label': 'Pirata One'}, + {'value': 'Plaster', 'label': 'Plaster'}, + {'value': 'Play', 'label': 'Play'}, + {'value': 'Playball', 'label': 'Playball'}, + {'value': 'Playfair_Display', 'label': 'Playfair Display'}, + {'value': 'Playfair_Display_SC', 'label': 'Playfair Display SC'}, + {'value': 'Podkova', 'label': 'Podkova'}, + {'value': 'Poiret_One', 'label': 'Poiret One'}, + {'value': 'Poller_One', 'label': 'Poller One'}, + {'value': 'Poly', 'label': 'Poly'}, + {'value': 'Pompiere', 'label': 'Pompiere'}, + {'value': 'Pontano_Sans', 'label': 'Pontano Sans'}, + {'value': 'Poppins', 'label': 'Poppins'}, + {'value': 'Port_Lligat_Sans', 'label': 'Port Lligat Sans'}, + {'value': 'Port_Lligat_Slab', 'label': 'Port Lligat Slab'}, + {'value': 'Pragati_Narrow', 'label': 'Pragati Narrow'}, + {'value': 'Prata', 'label': 'Prata'}, + {'value': 'Preahvihear', 'label': 'Preahvihear'}, + {'value': 'Press_Start_2P', 'label': 'Press Start 2P'}, + {'value': 'Princess_Sofia', 'label': 'Princess Sofia'}, + {'value': 'Prociono', 'label': 'Prociono'}, + {'value': 'Prosto_One', 'label': 'Prosto One'}, + {'value': 'Puritan', 'label': 'Puritan'}, + {'value': 'Purple_Purse', 'label': 'Purple Purse'}, + {'value': 'Quando', 'label': 'Quando'}, + {'value': 'Quantico', 'label': 'Quantico'}, + {'value': 'Quattrocento', 'label': 'Quattrocento'}, + {'value': 'Quattrocento_Sans', 'label': 'Quattrocento Sans'}, + {'value': 'Questrial', 'label': 'Questrial'}, + {'value': 'Quicksand', 'label': 'Quicksand'}, + {'value': 'Quintessential', 'label': 'Quintessential'}, + {'value': 'Qwigley', 'label': 'Qwigley'}, + {'value': 'Racing_Sans_One', 'label': 'Racing Sans One'}, + {'value': 'Radley', 'label': 'Radley'}, + {'value': 'Rajdhani', 'label': 'Rajdhani'}, + {'value': 'Raleway', 'label': 'Raleway'}, + {'value': 'Raleway_Dots', 'label': 'Raleway Dots'}, + {'value': 'Ramabhadra', 'label': 'Ramabhadra'}, + {'value': 'Ramaraja', 'label': 'Ramaraja'}, + {'value': 'Rambla', 'label': 'Rambla'}, + {'value': 'Rammetto_One', 'label': 'Rammetto One'}, + {'value': 'Ranchers', 'label': 'Ranchers'}, + {'value': 'Rancho', 'label': 'Rancho'}, + {'value': 'Ranga', 'label': 'Ranga'}, + {'value': 'Rationale', 'label': 'Rationale'}, + {'value': 'Ravi_Prakash', 'label': 'Ravi Prakash'}, + {'value': 'Redressed', 'label': 'Redressed'}, + {'value': 'Reenie_Beanie', 'label': 'Reenie Beanie'}, + {'value': 'Revalia', 'label': 'Revalia'}, + {'value': 'Rhodium_Libre', 'label': 'Rhodium Libre'}, + {'value': 'Ribeye', 'label': 'Ribeye'}, + {'value': 'Ribeye_Marrow', 'label': 'Ribeye Marrow'}, + {'value': 'Righteous', 'label': 'Righteous'}, + {'value': 'Risque', 'label': 'Risque'}, + {'value': 'Roboto', 'label': 'Roboto'}, + {'value': 'Roboto_Condensed', 'label': 'Roboto Condensed'}, + {'value': 'Roboto_Mono', 'label': 'Roboto Mono'}, + {'value': 'Roboto_Slab', 'label': 'Roboto Slab'}, + {'value': 'Rochester', 'label': 'Rochester'}, + {'value': 'Rock_Salt', 'label': 'Rock Salt'}, + {'value': 'Rokkitt', 'label': 'Rokkitt'}, + {'value': 'Romanesco', 'label': 'Romanesco'}, + {'value': 'Ropa_Sans', 'label': 'Ropa Sans'}, + {'value': 'Rosario', 'label': 'Rosario'}, + {'value': 'Rosarivo', 'label': 'Rosarivo'}, + {'value': 'Rouge_Script', 'label': 'Rouge Script'}, + {'value': 'Rozha_One', 'label': 'Rozha One'}, + {'value': 'Rubik', 'label': 'Rubik'}, + {'value': 'Rubik_Mono_One', 'label': 'Rubik Mono One'}, + {'value': 'Rubik_One', 'label': 'Rubik One'}, + {'value': 'Ruda', 'label': 'Ruda'}, + {'value': 'Rufina', 'label': 'Rufina'}, + {'value': 'Ruge_Boogie', 'label': 'Ruge Boogie'}, + {'value': 'Ruluko', 'label': 'Ruluko'}, + {'value': 'Rum_Raisin', 'label': 'Rum Raisin'}, + {'value': 'Ruslan_Display', 'label': 'Ruslan Display'}, + {'value': 'Russo_One', 'label': 'Russo One'}, + {'value': 'Ruthie', 'label': 'Ruthie'}, + {'value': 'Rye', 'label': 'Rye'}, + {'value': 'Sacramento', 'label': 'Sacramento'}, + {'value': 'Sahitya', 'label': 'Sahitya'}, + {'value': 'Sail', 'label': 'Sail'}, + {'value': 'Salsa', 'label': 'Salsa'}, + {'value': 'Sanchez', 'label': 'Sanchez'}, + {'value': 'Sancreek', 'label': 'Sancreek'}, + {'value': 'Sansita_One', 'label': 'Sansita One'}, + {'value': 'Sarala', 'label': 'Sarala'}, + {'value': 'Sarina', 'label': 'Sarina'}, + {'value': 'Sarpanch', 'label': 'Sarpanch'}, + {'value': 'Satisfy', 'label': 'Satisfy'}, + {'value': 'Scada', 'label': 'Scada'}, + {'value': 'Scheherazade', 'label': 'Scheherazade'}, + {'value': 'Schoolbell', 'label': 'Schoolbell'}, + {'value': 'Seaweed_Script', 'label': 'Seaweed Script'}, + {'value': 'Sevillana', 'label': 'Sevillana'}, + {'value': 'Seymour_One', 'label': 'Seymour One'}, + {'value': 'Shadows_Into_Light', 'label': 'Shadows Into Light'}, + {'value': 'Shadows_Into_Light_Two', 'label': 'Shadows Into Light Two'}, + {'value': 'Shanti', 'label': 'Shanti'}, + {'value': 'Share', 'label': 'Share'}, + {'value': 'Share_Tech', 'label': 'Share Tech'}, + {'value': 'Share_Tech_Mono', 'label': 'Share Tech Mono'}, + {'value': 'Shojumaru', 'label': 'Shojumaru'}, + {'value': 'Short_Stack', 'label': 'Short Stack'}, + {'value': 'Siemreap', 'label': 'Siemreap'}, + {'value': 'Sigmar_One', 'label': 'Sigmar One'}, + {'value': 'Signika', 'label': 'Signika'}, + {'value': 'Signika_Negative', 'label': 'Signika Negative'}, + {'value': 'Simonetta', 'label': 'Simonetta'}, + {'value': 'Sintony', 'label': 'Sintony'}, + {'value': 'Sirin_Stencil', 'label': 'Sirin Stencil'}, + {'value': 'Six_Caps', 'label': 'Six Caps'}, + {'value': 'Skranji', 'label': 'Skranji'}, + {'value': 'Slabo_13px', 'label': 'Slabo 13px'}, + {'value': 'Slabo_27px', 'label': 'Slabo 27px'}, + {'value': 'Slackey', 'label': 'Slackey'}, + {'value': 'Smokum', 'label': 'Smokum'}, + {'value': 'Smythe', 'label': 'Smythe'}, + {'value': 'Sniglet', 'label': 'Sniglet'}, + {'value': 'Snippet', 'label': 'Snippet'}, + {'value': 'Snowburst_One', 'label': 'Snowburst One'}, + {'value': 'Sofadi_One', 'label': 'Sofadi One'}, + {'value': 'Sofia', 'label': 'Sofia'}, + {'value': 'Sonsie_One', 'label': 'Sonsie One'}, + {'value': 'Sorts_Mill_Goudy', 'label': 'Sorts Mill Goudy'}, + {'value': 'Source_Code_Pro', 'label': 'Source Code Pro'}, + {'value': 'Source_Sans_Pro', 'label': 'Source Sans Pro'}, + {'value': 'Source_Serif_Pro', 'label': 'Source Serif Pro'}, + {'value': 'Special_Elite', 'label': 'Special Elite'}, + {'value': 'Spicy_Rice', 'label': 'Spicy Rice'}, + {'value': 'Spinnaker', 'label': 'Spinnaker'}, + {'value': 'Spirax', 'label': 'Spirax'}, + {'value': 'Squada_One', 'label': 'Squada One'}, + {'value': 'Sree_Krushnadevaraya', 'label': 'Sree Krushnadevaraya'}, + {'value': 'Stalemate', 'label': 'Stalemate'}, + {'value': 'Stalinist_One', 'label': 'Stalinist One'}, + {'value': 'Stardos_Stencil', 'label': 'Stardos Stencil'}, + {'value': 'Stint_Ultra_Condensed', 'label': 'Stint Ultra Condensed'}, + {'value': 'Stint_Ultra_Expanded', 'label': 'Stint Ultra Expanded'}, + {'value': 'Stoke', 'label': 'Stoke'}, + {'value': 'Strait', 'label': 'Strait'}, + {'value': 'Sue_Ellen_Francisco', 'label': 'Sue Ellen Francisco'}, + {'value': 'Sumana', 'label': 'Sumana'}, + {'value': 'Sunshiney', 'label': 'Sunshiney'}, + {'value': 'Supermercado_One', 'label': 'Supermercado One'}, + {'value': 'Sura', 'label': 'Sura'}, + {'value': 'Suranna', 'label': 'Suranna'}, + {'value': 'Suravaram', 'label': 'Suravaram'}, + {'value': 'Suwannaphum', 'label': 'Suwannaphum'}, + {'value': 'Swanky_and_Moo_Moo', 'label': 'Swanky and Moo Moo'}, + {'value': 'Syncopate', 'label': 'Syncopate'}, + {'value': 'Tangerine', 'label': 'Tangerine'}, + {'value': 'Taprom', 'label': 'Taprom'}, + {'value': 'Tauri', 'label': 'Tauri'}, + {'value': 'Teko', 'label': 'Teko'}, + {'value': 'Telex', 'label': 'Telex'}, + {'value': 'Tenali_Ramakrishna', 'label': 'Tenali Ramakrishna'}, + {'value': 'Tenor_Sans', 'label': 'Tenor Sans'}, + {'value': 'Text_Me_One', 'label': 'Text Me One'}, + {'value': 'The_Girl_Next_Door', 'label': 'The Girl Next Door'}, + {'value': 'Tienne', 'label': 'Tienne'}, + {'value': 'Tillana', 'label': 'Tillana'}, + {'value': 'Timmana', 'label': 'Timmana'}, + {'value': 'Tinos', 'label': 'Tinos'}, + {'value': 'Titan_One', 'label': 'Titan One'}, + {'value': 'Titillium_Web', 'label': 'Titillium Web'}, + {'value': 'Trade_Winds', 'label': 'Trade Winds'}, + {'value': 'Trocchi', 'label': 'Trocchi'}, + {'value': 'Trochut', 'label': 'Trochut'}, + {'value': 'Trykker', 'label': 'Trykker'}, + {'value': 'Tulpen_One', 'label': 'Tulpen One'}, + {'value': 'Ubuntu', 'label': 'Ubuntu'}, + {'value': 'Ubuntu_Condensed', 'label': 'Ubuntu Condensed'}, + {'value': 'Ubuntu_Mono', 'label': 'Ubuntu Mono'}, + {'value': 'Ultra', 'label': 'Ultra'}, + {'value': 'Uncial_Antiqua', 'label': 'Uncial Antiqua'}, + {'value': 'Underdog', 'label': 'Underdog'}, + {'value': 'Unica_One', 'label': 'Unica One'}, + {'value': 'UnifrakturCook', 'label': 'UnifrakturCook'}, + {'value': 'UnifrakturMaguntia', 'label': 'UnifrakturMaguntia'}, + {'value': 'Unkempt', 'label': 'Unkempt'}, + {'value': 'Unlock', 'label': 'Unlock'}, + {'value': 'Unna', 'label': 'Unna'}, + {'value': 'VT323', 'label': 'VT323'}, + {'value': 'Vampiro_One', 'label': 'Vampiro One'}, + {'value': 'Varela', 'label': 'Varela'}, + {'value': 'Varela_Round', 'label': 'Varela Round'}, + {'value': 'Vast_Shadow', 'label': 'Vast Shadow'}, + {'value': 'Vesper_Libre', 'label': 'Vesper Libre'}, + {'value': 'Vibur', 'label': 'Vibur'}, + {'value': 'Vidaloka', 'label': 'Vidaloka'}, + {'value': 'Viga', 'label': 'Viga'}, + {'value': 'Voces', 'label': 'Voces'}, + {'value': 'Volkhov', 'label': 'Volkhov'}, + {'value': 'Vollkorn', 'label': 'Vollkorn'}, + {'value': 'Voltaire', 'label': 'Voltaire'}, + {'value': 'Waiting_for_the_Sunrise', 'label': 'Waiting for the Sunrise'}, + {'value': 'Wallpoet', 'label': 'Wallpoet'}, + {'value': 'Walter_Turncoat', 'label': 'Walter Turncoat'}, + {'value': 'Warnes', 'label': 'Warnes'}, + {'value': 'Wellfleet', 'label': 'Wellfleet'}, + {'value': 'Wendy_One', 'label': 'Wendy One'}, + {'value': 'Wire_One', 'label': 'Wire One'}, + {'value': 'Work_Sans', 'label': 'Work Sans'}, + {'value': 'Yanone_Kaffeesatz', 'label': 'Yanone Kaffeesatz'}, + {'value': 'Yantramanav', 'label': 'Yantramanav'}, + {'value': 'Yellowtail', 'label': 'Yellowtail'}, + {'value': 'Yeseva_One', 'label': 'Yeseva One'}, + {'value': 'Yesteryear', 'label': 'Yesteryear'}, + {'value': 'Zeyada', 'label': 'Zeyada'} +]; diff --git a/lib/utils/i18n.dart b/lib/utils/i18n.dart index 094a9a075..c7cf3c716 100644 --- a/lib/utils/i18n.dart +++ b/lib/utils/i18n.dart @@ -14,6 +14,8 @@ abstract class LocaleCodeAware { mixin LocalizationsProvider on LocaleCodeAware { static final Map> _localizedValues = { 'en': { + 'primary_font': 'Primary Font', + 'secondary_font': 'Secondary Font', 'primary_color': 'Primary Color', 'secondary_color': 'Secondary Color', 'page_size': 'Page Size', @@ -15323,6 +15325,10 @@ mixin LocalizationsProvider on LocaleCodeAware { String get secondaryColor => _localizedValues[localeCode]['secondary_color']; + String get primaryFont => _localizedValues[localeCode]['primary_font']; + + String get secondaryFont => _localizedValues[localeCode]['secondary_font']; + String lookup(String key) { final lookupKey = toSnakeCase(key); return _localizedValues[localeCode][lookupKey] ??